@grafana/plugin-ui 0.14.1-dsconfig.f952c80 → 0.15.1

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 (619) hide show
  1. package/README.md +42 -3
  2. package/dist/cjs/index.cjs +5618 -4022
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/index.d.cts +61 -653
  5. package/dist/cjs/test-utils.cjs +7881 -62
  6. package/dist/cjs/test-utils.cjs.map +1 -1
  7. package/dist/cjs/test-utils.d.cts +1 -1
  8. package/dist/esm/_virtual/chance.js +6 -0
  9. package/dist/esm/_virtual/chance.js.map +1 -0
  10. package/dist/esm/_virtual/chance2.js +4 -0
  11. package/dist/esm/_virtual/chance2.js.map +1 -0
  12. package/dist/esm/_virtual/index.js +6 -0
  13. package/dist/esm/_virtual/index.js.map +1 -0
  14. package/dist/esm/_virtual/re.js +4 -0
  15. package/dist/esm/_virtual/re.js.map +1 -0
  16. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js +157 -0
  17. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js.map +1 -0
  18. package/dist/esm/async-query-data/RunQueryButtons.js +52 -0
  19. package/dist/esm/async-query-data/RunQueryButtons.js.map +1 -0
  20. package/dist/esm/async-query-data/requestLooper.js +74 -0
  21. package/dist/esm/async-query-data/requestLooper.js.map +1 -0
  22. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
  23. package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
  24. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
  25. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  26. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
  27. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
  28. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +1 -1
  29. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  30. package/dist/esm/components/ConfigEditor/Auth/styles.js.map +1 -1
  31. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
  32. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
  33. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
  34. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +3 -3
  35. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
  36. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
  37. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
  38. package/dist/esm/components/ConfigEditor/Auth/types.js.map +1 -1
  39. package/dist/esm/components/ConfigEditor/Auth/utils.js +3 -3
  40. package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
  41. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +2 -2
  42. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
  43. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
  44. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
  45. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  46. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
  47. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
  48. package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
  49. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
  50. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +11 -11
  51. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  52. package/dist/esm/components/DataLinks/DataLink.js +4 -4
  53. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  54. package/dist/esm/components/DataLinks/DataLinks.js +3 -3
  55. package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
  56. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +8 -8
  57. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  58. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  59. package/dist/esm/components/DatePicker/styles.js +2 -2
  60. package/dist/esm/components/DatePicker/styles.js.map +1 -1
  61. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  62. package/dist/esm/components/DatePickerWithInput/styles.js +2 -2
  63. package/dist/esm/components/DatePickerWithInput/styles.js.map +1 -1
  64. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  65. package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
  66. package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
  67. package/dist/esm/components/QueryEditor/CatalogSelector.js +1 -1
  68. package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
  69. package/dist/esm/components/QueryEditor/ConfirmModal.js +1 -1
  70. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  71. package/dist/esm/components/QueryEditor/DatasetSelector.js +1 -1
  72. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  73. package/dist/esm/components/QueryEditor/EditorField.js +5 -5
  74. package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
  75. package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
  76. package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
  77. package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
  78. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  79. package/dist/esm/components/QueryEditor/EditorRow.js +4 -4
  80. package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
  81. package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
  82. package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
  83. package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
  84. package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
  85. package/dist/esm/components/QueryEditor/EditorSwitch.js +2 -2
  86. package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
  87. package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
  88. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  89. package/dist/esm/components/QueryEditor/InputGroup.js +2 -2
  90. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  91. package/dist/esm/components/QueryEditor/QueryEditor.js +7 -9
  92. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  93. package/dist/esm/components/QueryEditor/QueryHeader.js +18 -18
  94. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  95. package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
  96. package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
  97. package/dist/esm/components/QueryEditor/Space.js +2 -2
  98. package/dist/esm/components/QueryEditor/Space.js.map +1 -1
  99. package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
  100. package/dist/esm/components/QueryEditor/defaults.js +7 -7
  101. package/dist/esm/components/QueryEditor/defaults.js.map +1 -1
  102. package/dist/esm/components/QueryEditor/expressions.js.map +1 -1
  103. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  104. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +2 -2
  105. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  106. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +4 -4
  107. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  108. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +3 -3
  109. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  110. package/dist/esm/components/QueryEditor/types.js.map +1 -1
  111. package/dist/esm/components/QueryEditor/utils/formatSQL.js.map +1 -1
  112. package/dist/esm/components/QueryEditor/utils/sql.utils.js +8 -8
  113. package/dist/esm/components/QueryEditor/utils/sql.utils.js.map +1 -1
  114. package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
  115. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +27 -26
  116. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
  117. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +3 -3
  118. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
  119. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
  120. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
  121. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
  122. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
  123. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  124. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +4 -4
  125. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  126. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +2 -2
  127. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
  128. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
  129. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -2
  130. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
  131. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
  132. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
  133. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +9 -9
  134. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  135. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
  136. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  137. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
  138. package/dist/esm/components/SQLEditor/components/SQLEditor.js +13 -13
  139. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  140. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +1 -1
  141. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
  142. package/dist/esm/components/SQLEditor/mocks/Monaco.js.map +1 -1
  143. package/dist/esm/components/SQLEditor/mocks/TextModel.js.map +1 -1
  144. package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQuery.js.map +1 -1
  145. package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.js.map +1 -1
  146. package/dist/esm/components/SQLEditor/mocks/queries/multiLineMultipleColumns.js.map +1 -1
  147. package/dist/esm/components/SQLEditor/mocks/queries/singleLineEmptyQuery.js.map +1 -1
  148. package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQuery.js.map +1 -1
  149. package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.js.map +1 -1
  150. package/dist/esm/components/SQLEditor/mocks/queries/singleLineMultipleColumns.js.map +1 -1
  151. package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueries.js.map +1 -1
  152. package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.js.map +1 -1
  153. package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
  154. package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js +2 -2
  155. package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js.map +1 -1
  156. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js +3 -3
  157. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js.map +1 -1
  158. package/dist/esm/components/SQLEditor/standardSql/language.js.map +1 -1
  159. package/dist/esm/components/SQLEditor/standardSql/macros.js.map +1 -1
  160. package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js +2 -2
  161. package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js.map +1 -1
  162. package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js +1 -1
  163. package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js.map +1 -1
  164. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js +25 -25
  165. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js.map +1 -1
  166. package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js +1 -1
  167. package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js.map +1 -1
  168. package/dist/esm/components/SQLEditor/test-utils/index.js.map +1 -1
  169. package/dist/esm/components/SQLEditor/test-utils/statementPosition.js.map +1 -1
  170. package/dist/esm/components/SQLEditor/types.js.map +1 -1
  171. package/dist/esm/components/SQLEditor/utils/LinkedToken.js +7 -7
  172. package/dist/esm/components/SQLEditor/utils/LinkedToken.js.map +1 -1
  173. package/dist/esm/components/SQLEditor/utils/commands.js.map +1 -1
  174. package/dist/esm/components/SQLEditor/utils/debugger.js +1 -1
  175. package/dist/esm/components/SQLEditor/utils/debugger.js.map +1 -1
  176. package/dist/esm/components/SQLEditor/utils/getSuggestionKind.js.map +1 -1
  177. package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js +1 -1
  178. package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js.map +1 -1
  179. package/dist/esm/components/SQLEditor/utils/toCompletionItem.js +1 -1
  180. package/dist/esm/components/SQLEditor/utils/toCompletionItem.js.map +1 -1
  181. package/dist/esm/components/SQLEditor/utils/tokenType.js.map +1 -1
  182. package/dist/esm/components/SQLEditor/utils/tokenUtils.js +9 -9
  183. package/dist/esm/components/SQLEditor/utils/tokenUtils.js.map +1 -1
  184. package/dist/esm/components/Segment/Segment.js.map +1 -1
  185. package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js +2 -2
  186. package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js.map +1 -1
  187. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +11 -11
  188. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  189. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +1 -1
  190. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  191. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +4 -4
  192. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
  193. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +2 -4
  194. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  195. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +3 -3
  196. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
  197. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +2 -2
  198. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  199. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +2 -2
  200. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  201. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +3 -5
  202. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  203. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +2 -2
  204. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
  205. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +5 -7
  206. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
  207. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +2 -4
  208. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
  209. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +8 -8
  210. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  211. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
  212. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +2 -4
  213. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  214. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +0 -2
  215. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
  216. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
  217. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
  218. package/dist/esm/components/VisualQueryBuilder/types.js.map +1 -1
  219. package/dist/esm/datasource/SqlDatasource.js +18 -16
  220. package/dist/esm/datasource/SqlDatasource.js.map +1 -1
  221. package/dist/esm/datasource/constants.js.map +1 -1
  222. package/dist/esm/hooks/useDebounce.js.map +1 -1
  223. package/dist/esm/index.d.ts +61 -653
  224. package/dist/esm/index.js +3 -11
  225. package/dist/esm/index.js.map +1 -1
  226. package/dist/esm/node_modules/chance/chance.js +7820 -0
  227. package/dist/esm/node_modules/chance/chance.js.map +1 -0
  228. package/dist/esm/node_modules/rxjs/dist/esm5/internal/Observable.js +104 -0
  229. package/dist/esm/node_modules/rxjs/dist/esm5/internal/Observable.js.map +1 -0
  230. package/dist/esm/node_modules/rxjs/dist/esm5/internal/Subscriber.js +154 -0
  231. package/dist/esm/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +1 -0
  232. package/dist/esm/node_modules/rxjs/dist/esm5/internal/Subscription.js +145 -0
  233. package/dist/esm/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +1 -0
  234. package/dist/esm/node_modules/rxjs/dist/esm5/internal/config.js +10 -0
  235. package/dist/esm/node_modules/rxjs/dist/esm5/internal/config.js.map +1 -0
  236. package/dist/esm/node_modules/rxjs/dist/esm5/internal/lastValueFrom.js +26 -0
  237. package/dist/esm/node_modules/rxjs/dist/esm5/internal/lastValueFrom.js.map +1 -0
  238. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/empty.js +6 -0
  239. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +1 -0
  240. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/from.js +9 -0
  241. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/from.js.map +1 -0
  242. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js +146 -0
  243. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js.map +1 -0
  244. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/merge.js +26 -0
  245. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/merge.js.map +1 -0
  246. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/of.js +14 -0
  247. package/dist/esm/node_modules/rxjs/dist/esm5/internal/observable/of.js.map +1 -0
  248. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js +63 -0
  249. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js.map +1 -0
  250. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/catchError.js +30 -0
  251. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/catchError.js.map +1 -0
  252. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/map.js +14 -0
  253. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/map.js.map +1 -0
  254. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js +10 -0
  255. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js.map +1 -0
  256. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js +56 -0
  257. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js.map +1 -0
  258. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js +19 -0
  259. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js.map +1 -0
  260. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js +13 -0
  261. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js.map +1 -0
  262. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js +11 -0
  263. package/dist/esm/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js.map +1 -0
  264. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js +21 -0
  265. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js.map +1 -0
  266. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js +26 -0
  267. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js.map +1 -0
  268. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js +35 -0
  269. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js.map +1 -0
  270. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js +10 -0
  271. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js.map +1 -0
  272. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js +10 -0
  273. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js.map +1 -0
  274. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js +9 -0
  275. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js.map +1 -0
  276. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js +40 -0
  277. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js.map +1 -0
  278. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js +18 -0
  279. package/dist/esm/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -0
  280. package/dist/esm/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js +10 -0
  281. package/dist/esm/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js.map +1 -0
  282. package/dist/esm/node_modules/rxjs/dist/esm5/internal/symbol/observable.js +4 -0
  283. package/dist/esm/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -0
  284. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js +10 -0
  285. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js.map +1 -0
  286. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js +15 -0
  287. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -0
  288. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/args.js +14 -0
  289. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/args.js.map +1 -0
  290. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +9 -0
  291. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -0
  292. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js +13 -0
  293. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -0
  294. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/errorContext.js +8 -0
  295. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -0
  296. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js +20 -0
  297. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js.map +1 -0
  298. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/identity.js +6 -0
  299. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +1 -0
  300. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js +4 -0
  301. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js.map +1 -0
  302. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js +8 -0
  303. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js.map +1 -0
  304. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +6 -0
  305. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -0
  306. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js +9 -0
  307. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js.map +1 -0
  308. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isIterable.js +9 -0
  309. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isIterable.js.map +1 -0
  310. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isPromise.js +8 -0
  311. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isPromise.js.map +1 -0
  312. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js +41 -0
  313. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js.map +1 -0
  314. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js +8 -0
  315. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js.map +1 -0
  316. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/lift.js +23 -0
  317. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/lift.js.map +1 -0
  318. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/noop.js +4 -0
  319. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +1 -0
  320. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/pipe.js +16 -0
  321. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +1 -0
  322. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js +12 -0
  323. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -0
  324. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js +6 -0
  325. package/dist/esm/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js.map +1 -0
  326. package/dist/esm/node_modules/semver/classes/comparator.js +160 -0
  327. package/dist/esm/node_modules/semver/classes/comparator.js.map +1 -0
  328. package/dist/esm/node_modules/semver/classes/range.js +575 -0
  329. package/dist/esm/node_modules/semver/classes/range.js.map +1 -0
  330. package/dist/esm/node_modules/semver/classes/semver.js +349 -0
  331. package/dist/esm/node_modules/semver/classes/semver.js.map +1 -0
  332. package/dist/esm/node_modules/semver/functions/clean.js +20 -0
  333. package/dist/esm/node_modules/semver/functions/clean.js.map +1 -0
  334. package/dist/esm/node_modules/semver/functions/cmp.js +71 -0
  335. package/dist/esm/node_modules/semver/functions/cmp.js.map +1 -0
  336. package/dist/esm/node_modules/semver/functions/coerce.js +76 -0
  337. package/dist/esm/node_modules/semver/functions/coerce.js.map +1 -0
  338. package/dist/esm/node_modules/semver/functions/compare-build.js +21 -0
  339. package/dist/esm/node_modules/semver/functions/compare-build.js.map +1 -0
  340. package/dist/esm/node_modules/semver/functions/compare-loose.js +17 -0
  341. package/dist/esm/node_modules/semver/functions/compare-loose.js.map +1 -0
  342. package/dist/esm/node_modules/semver/functions/compare.js +19 -0
  343. package/dist/esm/node_modules/semver/functions/compare.js.map +1 -0
  344. package/dist/esm/node_modules/semver/functions/diff.js +72 -0
  345. package/dist/esm/node_modules/semver/functions/diff.js.map +1 -0
  346. package/dist/esm/node_modules/semver/functions/eq.js +17 -0
  347. package/dist/esm/node_modules/semver/functions/eq.js.map +1 -0
  348. package/dist/esm/node_modules/semver/functions/gt.js +17 -0
  349. package/dist/esm/node_modules/semver/functions/gt.js.map +1 -0
  350. package/dist/esm/node_modules/semver/functions/gte.js +17 -0
  351. package/dist/esm/node_modules/semver/functions/gte.js.map +1 -0
  352. package/dist/esm/node_modules/semver/functions/inc.js +33 -0
  353. package/dist/esm/node_modules/semver/functions/inc.js.map +1 -0
  354. package/dist/esm/node_modules/semver/functions/lt.js +17 -0
  355. package/dist/esm/node_modules/semver/functions/lt.js.map +1 -0
  356. package/dist/esm/node_modules/semver/functions/lte.js +17 -0
  357. package/dist/esm/node_modules/semver/functions/lte.js.map +1 -0
  358. package/dist/esm/node_modules/semver/functions/major.js +17 -0
  359. package/dist/esm/node_modules/semver/functions/major.js.map +1 -0
  360. package/dist/esm/node_modules/semver/functions/minor.js +17 -0
  361. package/dist/esm/node_modules/semver/functions/minor.js.map +1 -0
  362. package/dist/esm/node_modules/semver/functions/neq.js +17 -0
  363. package/dist/esm/node_modules/semver/functions/neq.js.map +1 -0
  364. package/dist/esm/node_modules/semver/functions/parse.js +30 -0
  365. package/dist/esm/node_modules/semver/functions/parse.js.map +1 -0
  366. package/dist/esm/node_modules/semver/functions/patch.js +17 -0
  367. package/dist/esm/node_modules/semver/functions/patch.js.map +1 -0
  368. package/dist/esm/node_modules/semver/functions/prerelease.js +20 -0
  369. package/dist/esm/node_modules/semver/functions/prerelease.js.map +1 -0
  370. package/dist/esm/node_modules/semver/functions/rcompare.js +17 -0
  371. package/dist/esm/node_modules/semver/functions/rcompare.js.map +1 -0
  372. package/dist/esm/node_modules/semver/functions/rsort.js +17 -0
  373. package/dist/esm/node_modules/semver/functions/rsort.js.map +1 -0
  374. package/dist/esm/node_modules/semver/functions/satisfies.js +24 -0
  375. package/dist/esm/node_modules/semver/functions/satisfies.js.map +1 -0
  376. package/dist/esm/node_modules/semver/functions/sort.js +17 -0
  377. package/dist/esm/node_modules/semver/functions/sort.js.map +1 -0
  378. package/dist/esm/node_modules/semver/functions/valid.js +20 -0
  379. package/dist/esm/node_modules/semver/functions/valid.js.map +1 -0
  380. package/dist/esm/node_modules/semver/index.js +143 -0
  381. package/dist/esm/node_modules/semver/index.js.map +1 -0
  382. package/dist/esm/node_modules/semver/internal/constants.js +47 -0
  383. package/dist/esm/node_modules/semver/internal/constants.js.map +1 -0
  384. package/dist/esm/node_modules/semver/internal/debug.js +21 -0
  385. package/dist/esm/node_modules/semver/internal/debug.js.map +1 -0
  386. package/dist/esm/node_modules/semver/internal/identifiers.js +39 -0
  387. package/dist/esm/node_modules/semver/internal/identifiers.js.map +1 -0
  388. package/dist/esm/node_modules/semver/internal/lrucache.js +52 -0
  389. package/dist/esm/node_modules/semver/internal/lrucache.js.map +1 -0
  390. package/dist/esm/node_modules/semver/internal/parse-options.js +27 -0
  391. package/dist/esm/node_modules/semver/internal/parse-options.js.map +1 -0
  392. package/dist/esm/node_modules/semver/internal/re.js +238 -0
  393. package/dist/esm/node_modules/semver/internal/re.js.map +1 -0
  394. package/dist/esm/node_modules/semver/ranges/gtr.js +18 -0
  395. package/dist/esm/node_modules/semver/ranges/gtr.js.map +1 -0
  396. package/dist/esm/node_modules/semver/ranges/intersects.js +21 -0
  397. package/dist/esm/node_modules/semver/ranges/intersects.js.map +1 -0
  398. package/dist/esm/node_modules/semver/ranges/ltr.js +18 -0
  399. package/dist/esm/node_modules/semver/ranges/ltr.js.map +1 -0
  400. package/dist/esm/node_modules/semver/ranges/max-satisfying.js +40 -0
  401. package/dist/esm/node_modules/semver/ranges/max-satisfying.js.map +1 -0
  402. package/dist/esm/node_modules/semver/ranges/min-satisfying.js +39 -0
  403. package/dist/esm/node_modules/semver/ranges/min-satisfying.js.map +1 -0
  404. package/dist/esm/node_modules/semver/ranges/min-version.js +77 -0
  405. package/dist/esm/node_modules/semver/ranges/min-version.js.map +1 -0
  406. package/dist/esm/node_modules/semver/ranges/outside.js +101 -0
  407. package/dist/esm/node_modules/semver/ranges/outside.js.map +1 -0
  408. package/dist/esm/node_modules/semver/ranges/simplify.js +62 -0
  409. package/dist/esm/node_modules/semver/ranges/simplify.js.map +1 -0
  410. package/dist/esm/node_modules/semver/ranges/subset.js +264 -0
  411. package/dist/esm/node_modules/semver/ranges/subset.js.map +1 -0
  412. package/dist/esm/node_modules/semver/ranges/to-comparators.js +22 -0
  413. package/dist/esm/node_modules/semver/ranges/to-comparators.js.map +1 -0
  414. package/dist/esm/node_modules/semver/ranges/valid.js +25 -0
  415. package/dist/esm/node_modules/semver/ranges/valid.js.map +1 -0
  416. package/dist/esm/node_modules/tslib/tslib.es6.js +140 -0
  417. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -0
  418. package/dist/esm/test/mocks/DataQuery.js +5 -5
  419. package/dist/esm/test/mocks/DataQuery.js.map +1 -1
  420. package/dist/esm/test/mocks/Datasource.js +22 -22
  421. package/dist/esm/test/mocks/Datasource.js.map +1 -1
  422. package/dist/esm/test/mocks/Plugin.js +30 -30
  423. package/dist/esm/test/mocks/Plugin.js.map +1 -1
  424. package/dist/esm/test/mocks/QueryEditorProps.js +6 -6
  425. package/dist/esm/test/mocks/QueryEditorProps.js.map +1 -1
  426. package/dist/esm/test/mocks/utils.js +5 -5
  427. package/dist/esm/test/mocks/utils.js.map +1 -1
  428. package/dist/esm/test-utils.d.ts +1 -1
  429. package/package.json +74 -102
  430. package/dist/cjs/schemas.cjs +0 -25
  431. package/dist/cjs/schemas.cjs.map +0 -1
  432. package/dist/cjs/schemas.d.cts +0 -448
  433. package/dist/cjs/useDatasourceSchema-BWcU0Gkw.js +0 -16623
  434. package/dist/cjs/useDatasourceSchema-BWcU0Gkw.js.map +0 -1
  435. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js +0 -234
  436. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js.map +0 -1
  437. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.js +0 -27
  438. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.js.map +0 -1
  439. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js +0 -71
  440. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js.map +0 -1
  441. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js +0 -54
  442. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js.map +0 -1
  443. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js +0 -181
  444. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js.map +0 -1
  445. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/cel.js +0 -75
  446. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/cel.js.map +0 -1
  447. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/config.js +0 -258
  448. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/config.js.map +0 -1
  449. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/datasource.js +0 -354
  450. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/datasource.js.map +0 -1
  451. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js +0 -138
  452. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js.map +0 -1
  453. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useDatasourceConfigForm.js +0 -326
  454. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useDatasourceConfigForm.js.map +0 -1
  455. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useHealthChecks.js +0 -106
  456. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useHealthChecks.js.map +0 -1
  457. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/AuthorizationHeaderField.js +0 -51
  458. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/AuthorizationHeaderField.js.map +0 -1
  459. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ComplexFieldNote.js +0 -26
  460. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ComplexFieldNote.js.map +0 -1
  461. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/FileUploadField.js +0 -106
  462. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/FileUploadField.js.map +0 -1
  463. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/IndexedPairEditor.js +0 -124
  464. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/IndexedPairEditor.js.map +0 -1
  465. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ObjectArrayEditor.js +0 -190
  466. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ObjectArrayEditor.js.map +0 -1
  467. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/PdcFieldNote.js +0 -31
  468. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/PdcFieldNote.js.map +0 -1
  469. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/SecureFieldInput.js +0 -59
  470. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/SecureFieldInput.js.map +0 -1
  471. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/StringArrayInput.js +0 -80
  472. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/StringArrayInput.js.map +0 -1
  473. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js +0 -141
  474. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js.map +0 -1
  475. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/resolvePluginName.js +0 -30
  476. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/resolvePluginName.js.map +0 -1
  477. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/styles.js +0 -360
  478. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/styles.js.map +0 -1
  479. package/dist/esm/schema/registry/alertmanager.schema.json.js +0 -77
  480. package/dist/esm/schema/registry/alertmanager.schema.json.js.map +0 -1
  481. package/dist/esm/schema/registry/cloudwatch.schema.json.js +0 -384
  482. package/dist/esm/schema/registry/cloudwatch.schema.json.js.map +0 -1
  483. package/dist/esm/schema/registry/elasticsearch.schema.json.js +0 -597
  484. package/dist/esm/schema/registry/elasticsearch.schema.json.js.map +0 -1
  485. package/dist/esm/schema/registry/grafana-adobeanalytics-datasource.schema.json.js +0 -95
  486. package/dist/esm/schema/registry/grafana-adobeanalytics-datasource.schema.json.js.map +0 -1
  487. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js +0 -166
  488. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js.map +0 -1
  489. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js +0 -145
  490. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js.map +0 -1
  491. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js +0 -123
  492. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js.map +0 -1
  493. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js +0 -158
  494. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js.map +0 -1
  495. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js +0 -204
  496. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js.map +0 -1
  497. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js +0 -300
  498. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js.map +0 -1
  499. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js +0 -101
  500. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js.map +0 -1
  501. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js +0 -125
  502. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js.map +0 -1
  503. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js +0 -508
  504. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js.map +0 -1
  505. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js +0 -1400
  506. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js.map +0 -1
  507. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js +0 -302
  508. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js.map +0 -1
  509. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js +0 -291
  510. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js.map +0 -1
  511. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js +0 -155
  512. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js.map +0 -1
  513. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js +0 -179
  514. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js.map +0 -1
  515. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js +0 -134
  516. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js.map +0 -1
  517. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js +0 -156
  518. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js.map +0 -1
  519. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js +0 -84
  520. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js.map +0 -1
  521. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js +0 -231
  522. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js.map +0 -1
  523. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js +0 -87
  524. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js.map +0 -1
  525. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js +0 -159
  526. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js.map +0 -1
  527. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js +0 -188
  528. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js.map +0 -1
  529. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js +0 -82
  530. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js.map +0 -1
  531. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js +0 -278
  532. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js.map +0 -1
  533. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js +0 -168
  534. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js.map +0 -1
  535. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js +0 -129
  536. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js.map +0 -1
  537. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js +0 -56
  538. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js.map +0 -1
  539. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js +0 -212
  540. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js.map +0 -1
  541. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js +0 -186
  542. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js.map +0 -1
  543. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js +0 -85
  544. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js.map +0 -1
  545. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js +0 -411
  546. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js.map +0 -1
  547. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js +0 -41
  548. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js.map +0 -1
  549. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js +0 -201
  550. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js.map +0 -1
  551. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js +0 -248
  552. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js.map +0 -1
  553. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js +0 -208
  554. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js.map +0 -1
  555. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js +0 -94
  556. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js.map +0 -1
  557. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js +0 -179
  558. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js.map +0 -1
  559. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js +0 -304
  560. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js.map +0 -1
  561. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js +0 -690
  562. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js.map +0 -1
  563. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js +0 -90
  564. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js.map +0 -1
  565. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js +0 -74
  566. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js.map +0 -1
  567. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js +0 -102
  568. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js.map +0 -1
  569. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js +0 -92
  570. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js.map +0 -1
  571. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js +0 -145
  572. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js.map +0 -1
  573. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js +0 -80
  574. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js.map +0 -1
  575. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js +0 -112
  576. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js.map +0 -1
  577. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js +0 -114
  578. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js.map +0 -1
  579. package/dist/esm/schema/registry/graphite.schema.json.js +0 -104
  580. package/dist/esm/schema/registry/graphite.schema.json.js.map +0 -1
  581. package/dist/esm/schema/registry/index.js +0 -139
  582. package/dist/esm/schema/registry/index.js.map +0 -1
  583. package/dist/esm/schema/registry/influxdb.schema.json.js +0 -717
  584. package/dist/esm/schema/registry/influxdb.schema.json.js.map +0 -1
  585. package/dist/esm/schema/registry/jaeger.schema.json.js +0 -59
  586. package/dist/esm/schema/registry/jaeger.schema.json.js.map +0 -1
  587. package/dist/esm/schema/registry/loki.schema.json.js +0 -545
  588. package/dist/esm/schema/registry/loki.schema.json.js.map +0 -1
  589. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js +0 -45
  590. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js.map +0 -1
  591. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js +0 -36
  592. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js.map +0 -1
  593. package/dist/esm/schema/registry/mssql.schema.json.js +0 -292
  594. package/dist/esm/schema/registry/mssql.schema.json.js.map +0 -1
  595. package/dist/esm/schema/registry/mysql.schema.json.js +0 -304
  596. package/dist/esm/schema/registry/mysql.schema.json.js.map +0 -1
  597. package/dist/esm/schema/registry/opentsdb.schema.json.js +0 -113
  598. package/dist/esm/schema/registry/opentsdb.schema.json.js.map +0 -1
  599. package/dist/esm/schema/registry/prometheus.schema.json.js +0 -783
  600. package/dist/esm/schema/registry/prometheus.schema.json.js.map +0 -1
  601. package/dist/esm/schema/registry/stackdriver.schema.json.js +0 -224
  602. package/dist/esm/schema/registry/stackdriver.schema.json.js.map +0 -1
  603. package/dist/esm/schema/registry/tempo.schema.json.js +0 -664
  604. package/dist/esm/schema/registry/tempo.schema.json.js.map +0 -1
  605. package/dist/esm/schema/registry/yesoreyeram-infinity-datasource.schema.json.js +0 -1073
  606. package/dist/esm/schema/registry/yesoreyeram-infinity-datasource.schema.json.js.map +0 -1
  607. package/dist/esm/schema/registry/zipkin.schema.json.js +0 -40
  608. package/dist/esm/schema/registry/zipkin.schema.json.js.map +0 -1
  609. package/dist/esm/schema/utils/dsconfig.js +0 -97
  610. package/dist/esm/schema/utils/dsconfig.js.map +0 -1
  611. package/dist/esm/schema/utils/llm.js +0 -54
  612. package/dist/esm/schema/utils/llm.js.map +0 -1
  613. package/dist/esm/schema/utils/provisioning.js +0 -434
  614. package/dist/esm/schema/utils/provisioning.js.map +0 -1
  615. package/dist/esm/schema/utils/useDatasourceSchema.js +0 -16
  616. package/dist/esm/schema/utils/useDatasourceSchema.js.map +0 -1
  617. package/dist/esm/schemas.d.ts +0 -448
  618. package/dist/esm/schemas.js +0 -6
  619. package/dist/esm/schemas.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDatasourceSchema-BWcU0Gkw.js","sources":["../../src/components/ConfigEditor/DatasourceConfigWizard/cel.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/config.ts","../../src/schema/registry/index.ts","../../src/schema/utils/llm.ts","../../src/schema/utils/dsconfig.ts","../../src/schema/utils/provisioning.ts","../../src/schema/utils/useDatasourceSchema.ts"],"sourcesContent":["/**\n * CEL (Common Expression Language) expression evaluator for schema conditions.\n *\n * Used by `dependsOn`, `requiredWhen`, `disabledWhen`, and `overrides[].when`.\n * Wraps @marcbachmann/cel-js with field-ID-aware context building.\n *\n * Go equivalent: github.com/google/cel-go\n */\n\nimport { evaluate as celEvaluate, parse as celParse } from '@marcbachmann/cel-js';\n\n// ============================================================\n// Expression cache — parse once, evaluate many times\n// ============================================================\n\ntype CompiledExpr = (ctx: Record<string, unknown>) => unknown;\nconst exprCache = new Map<string, CompiledExpr | null>();\n\nfunction getCompiled(expr: string): CompiledExpr | null {\n if (exprCache.has(expr)) {\n return exprCache.get(expr)!;\n }\n try {\n const compiled = celParse(expr);\n exprCache.set(expr, compiled);\n return compiled;\n } catch {\n exprCache.set(expr, null);\n return null;\n }\n}\n\n// ============================================================\n// Context builder — flat field values → nested object for CEL\n// ============================================================\n\n/**\n * Build a nested context object from flat form values keyed by field IDs.\n *\n * CEL interprets dots as property access, so `jsonData.auth_method == 'oauth2'`\n * requires `{ jsonData: { auth_method: 'oauth2' } }`.\n *\n * This function takes flat key-value pairs (from react-hook-form `watch()`)\n * and builds the nested structure CEL expects.\n *\n * @param values - Flat map of form keys to values (e.g. `{ \"auth_method\": \"oauth2\", \"oauth2.oauth2_type\": \"jwt\" }`)\n * @param fieldIdToFormKey - Optional map from field ID to form key for translation\n */\nexport function buildCelContext(values: Record<string, unknown>): Record<string, unknown> {\n const ctx: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(values)) {\n setNestedValue(ctx, key, value);\n }\n\n return ctx;\n}\n\nfunction setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {\n const parts = path.split('.');\n let current = obj;\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n current = current[part] as Record<string, unknown>;\n }\n current[parts[parts.length - 1]] = value;\n}\n\n// ============================================================\n// Public API\n// ============================================================\n\n/**\n * Evaluate a CEL expression against a context of field values.\n * Returns the boolean result, or `defaultValue` if the expression is invalid.\n *\n * @example\n * ```ts\n * evaluateCelExpression(\"jsonData.auth_method == 'oauth2'\", { jsonData: { auth_method: 'oauth2' } })\n * // => true\n *\n * evaluateCelExpression(\"auth_method == 'oauth2' && oauth2_type == 'jwt'\", { auth_method: 'oauth2', oauth2_type: 'jwt' })\n * // => true\n * ```\n */\nexport function evaluateCelExpression(expr: string, context: Record<string, unknown>, defaultValue = false): boolean {\n if (!expr || !expr.trim()) {\n return defaultValue;\n }\n\n const compiled = getCompiled(expr);\n if (!compiled) {\n return defaultValue;\n }\n\n try {\n const result = compiled(context);\n return !!result;\n } catch {\n return defaultValue;\n }\n}\n\n/**\n * Evaluate a CEL expression directly using `evaluate` (no caching).\n * Useful for one-off evaluations or testing.\n */\nexport function evaluateCelDirect(expr: string, context: Record<string, unknown>): unknown {\n return celEvaluate(expr, context);\n}\n\n/**\n * Validate that a CEL expression can be parsed without errors.\n * Returns true if valid, false otherwise.\n */\nexport function isValidCelExpression(expr: string): boolean {\n try {\n celParse(expr);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Extract all field ID references from a simple expression.\n * Used by `resolveRequiredFieldsGroup` to find dependency relationships.\n *\n * For simple expressions like `fieldA == 'x'`, returns `['fieldA']`.\n * For compound expressions like `fieldA == 'x' && fieldB == 'y'`, returns `['fieldA', 'fieldB']`.\n *\n * This uses regex extraction (not AST walking) for simplicity and speed.\n */\nexport function extractFieldRefs(expr: string): string[] {\n // Match identifiers (possibly dotted) that precede == or !=\n const matches = expr.matchAll(/([\\w.]+)\\s*(?:==|!=)/g);\n const refs = new Set<string>();\n for (const m of matches) {\n refs.add(m[1]);\n }\n return [...refs];\n}\n\n/**\n * Clear the expression cache. Useful for testing.\n */\nexport function clearExpressionCache(): void {\n exprCache.clear();\n}\n","/**\n * Pure helper functions for working with DatasourceConfigSchema.\n *\n * Types are defined in schema.ts — import them from there directly.\n */\n\nimport { extractFieldRefs } from './cel';\nimport type { DatasourceConfigSchema, ConfigField, ConfigGroup, FieldOverride } from '../../../schema';\n\n/**\n * Resolve a schema's groups into arrays of ConfigField objects.\n * If the schema has no groups, returns a single group containing all non-virtual fields.\n */\nexport function resolveGroups(schema: DatasourceConfigSchema): Array<{ group: ConfigGroup; fields: ConfigField[] }> {\n const fieldMap = new Map<string, ConfigField>();\n for (const f of schema.fields) {\n fieldMap.set(f.id, f);\n }\n\n if (schema.groups && schema.groups.length > 0) {\n return schema.groups\n .slice()\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\n .map((g) => ({\n group: g,\n fields: g.fieldRefs.map((ref) => fieldMap.get(ref)).filter((f): f is ConfigField => f != null),\n }));\n }\n\n // No groups: single step with all storage fields\n const allFields = schema.fields.filter((f) => f.kind !== 'virtual' && !f.isItemField);\n return [\n {\n group: { id: 'default', title: 'Configuration', fieldRefs: allFields.map((f) => f.id) },\n fields: allFields,\n },\n ];\n}\n\n/**\n * Build a virtual \"Required\" group containing all required fields, any parent\n * fields they depend on (via `dependsOn`), and any child fields that depend on\n * required fields. When the schema contains an \"auth\" group, its fields are\n * also pulled in (auth is effectively required for Prometheus/Loki/Tempo style\n * datasources). Fields are returned in schema order and de-duplicated.\n * Returns `null` when the virtual group would be empty.\n */\nexport function resolveRequiredFieldsGroup(\n schema: DatasourceConfigSchema\n): { group: ConfigGroup; fields: ConfigField[] } | null {\n const fieldMap = new Map<string, ConfigField>();\n for (const f of schema.fields) {\n fieldMap.set(f.id, f);\n }\n\n const requiredIds = new Set<string>();\n for (const f of schema.fields) {\n if (f.required || f.tags?.includes('pinned')) {\n requiredIds.add(f.id);\n }\n }\n\n // Include all fields from the \"auth\" group as effectively required\n const authGroup = schema.groups?.find((g) => g.id === 'auth');\n if (authGroup) {\n for (const ref of authGroup.fieldRefs) {\n if (fieldMap.has(ref)) {\n requiredIds.add(ref);\n }\n }\n }\n\n if (requiredIds.size === 0) {\n return null;\n }\n\n const includeIds = new Set<string>();\n\n // Required fields + parent fields they depend on\n for (const id of requiredIds) {\n includeIds.add(id);\n const f = fieldMap.get(id);\n if (f?.dependsOn) {\n for (const ref of extractFieldRefs(f.dependsOn)) {\n if (fieldMap.has(ref)) {\n includeIds.add(ref);\n }\n }\n }\n }\n\n // Child fields that depend on any required field\n for (const f of schema.fields) {\n if (f.dependsOn && !includeIds.has(f.id)) {\n const refs = extractFieldRefs(f.dependsOn);\n if (refs.some((ref) => requiredIds.has(ref))) {\n includeIds.add(f.id);\n }\n }\n }\n\n const virtualFields = schema.fields.filter((f) => includeIds.has(f.id));\n if (virtualFields.length === 0) {\n return null;\n }\n\n return {\n group: {\n id: '_required',\n title: 'General',\n fieldRefs: virtualFields.map((f) => f.id),\n },\n fields: virtualFields,\n };\n}\n\n/**\n * Unique form key for a field. Section-scoped fields (e.g. section:\"logs\", key:\"defaultTable\")\n * get a prefixed key (\"logs.defaultTable\") so they don't collide with top-level fields that\n * share the same key name.\n */\nexport function formKey(field: ConfigField): string {\n return field.section ? `${field.section}.${field.key}` : field.key;\n}\n\n/**\n * Resolve a possibly-dotted key against watchedValues from react-hook-form.\n * RHF's `watch()` returns nested objects for dotted Controller names\n * (e.g. \"logs.otelEnabled\" → { logs: { otelEnabled: true } }),\n * so a flat `obj[\"logs.otelEnabled\"]` lookup misses.\n *\n * For dotted keys we must try the nested path **first**: react-hook-form's\n * Controller `onChange` writes nested objects via its internal `set()`, but\n * `reset()` may have created a flat dotted key with the same name. After user\n * interaction the nested value is authoritative; the stale flat key must not\n * shadow it. This mirrors RHF's own `get()` semantics (nested-first, flat\n * fallback).\n */\nexport function getWatchedValue(watchedValues: Record<string, unknown>, key: string): unknown {\n // For dotted keys, prefer the nested path walk.\n if (key.includes('.')) {\n const parts = key.split('.');\n let current: unknown = watchedValues;\n for (const part of parts) {\n if (current == null || typeof current !== 'object') {\n // Nested path doesn't exist — fall back to flat key\n return watchedValues[key];\n }\n current = (current as Record<string, unknown>)[part];\n }\n if (current !== undefined) {\n return current;\n }\n // Nested walk yielded undefined — try flat key as fallback\n return watchedValues[key];\n }\n // Non-dotted key: direct property access\n return watchedValues[key];\n}\n\n/**\n * Parse a simple CEL-like dependsOn expression: \"fieldId == 'value'\" or \"fieldId != 'value'\".\n * Only single comparisons are supported — no &&, ||, or parentheses.\n * Field IDs may contain dots and underscores (e.g. \"jsonData.oauth2.oauth2_type\").\n * Values may be single-quoted, double-quoted, or unquoted literals (true/false/numbers).\n * Returns { field, value, negate } or null if unparseable.\n */\nexport function parseDependsOn(expr: string): { field: string; value: string; negate: boolean } | null {\n // Match: fieldRef == 'value' | fieldRef == \"value\" | fieldRef == literal\n // Field ref: word chars and dots, no parens/operators.\n // Unquoted values: non-whitespace, no quotes, no logical operators.\n const m = expr.match(/^([\\w.]+)\\s*(==|!=)\\s*(?:'([^']*)'|\"([^\"]*)\"|(\\S+))$/);\n if (!m) {\n return null;\n }\n return { field: m[1], value: (m[3] ?? m[4] ?? m[5]).trim(), negate: m[2] === '!=' };\n}\n\n/**\n * Evaluate a parsed dependsOn condition against a value.\n * Handles both == and != operators.\n */\nexport function evaluateDependsOn(parsed: { value: string; negate: boolean }, currentValue: unknown): boolean {\n const matches = String(currentValue ?? '') === parsed.value;\n return parsed.negate ? !matches : matches;\n}\n\n/**\n * Resolve the first matching override for a field given current form values.\n * Override `when` uses the same \"fieldId == 'value'\" syntax as dependsOn.\n * Returns the matching override or undefined if none match.\n */\nexport function resolveActiveOverride(\n field: ConfigField,\n watchedValues: Record<string, unknown>,\n fieldById: Map<string, ConfigField>\n): FieldOverride | undefined {\n if (!field.overrides || field.overrides.length === 0) {\n return undefined;\n }\n for (const ov of field.overrides) {\n const parsed = parseDependsOn(ov.when);\n if (!parsed) {\n continue;\n }\n const depField = fieldById.get(parsed.field);\n const depKey = depField ? formKey(depField) : parsed.field;\n if (evaluateDependsOn(parsed, getWatchedValue(watchedValues, depKey))) {\n return ov;\n }\n }\n return undefined;\n}\n\n/**\n * Resolve a field reference like \"root.basicAuth\" or \"jsonData.oauthPassThru\"\n * to its current value from a flat form values map, using the schema's field definitions.\n */\nfunction resolveFieldValue(ref: string, values: Record<string, unknown>, fields: ConfigField[]): unknown {\n // Try direct match on formKey first\n if (ref in values) {\n return values[ref];\n }\n // Try matching by field ID → formKey\n const field = fields.find((f) => f.id === ref);\n if (field) {\n const fk = formKey(field);\n if (fk in values) {\n return values[fk];\n }\n }\n return undefined;\n}\n\n/**\n * Evaluate a simple computed.read expression against form values.\n * Supports patterns used in dsconfig schemas:\n * - \"fieldRef == true ? 'a' : (fieldRef == true ? 'b' : 'c')\"\n * - Simple ternary chains with equality checks\n * Falls back to the field's defaultValue if the expression can't be evaluated.\n */\nexport function evaluateComputedRead(expr: string, values: Record<string, unknown>, fields: ConfigField[]): unknown {\n // Recursively evaluate ternary: condition ? trueVal : falseVal\n function evalExpr(s: string): unknown {\n s = s.trim();\n\n // Strip outer parens\n if (s.startsWith('(') && findMatchingParen(s, 0) === s.length - 1) {\n s = s.slice(1, -1).trim();\n }\n\n // Ternary: find top-level \"?\"\n const qIdx = findTopLevel(s, '?');\n if (qIdx !== -1) {\n const condition = s.slice(0, qIdx).trim();\n const rest = s.slice(qIdx + 1);\n const cIdx = findTopLevel(rest, ':');\n if (cIdx !== -1) {\n const trueExpr = rest.slice(0, cIdx).trim();\n const falseExpr = rest.slice(cIdx + 1).trim();\n return evalCondition(condition) ? evalExpr(trueExpr) : evalExpr(falseExpr);\n }\n }\n\n // String literal\n const strMatch = s.match(/^'([^']*)'$/) ?? s.match(/^\"([^\"]*)\"$/);\n if (strMatch) {\n return strMatch[1];\n }\n // Boolean/number literals\n if (s === 'true') {\n return true;\n }\n if (s === 'false') {\n return false;\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(s)) {\n return Number(s);\n }\n\n // Field reference\n return resolveFieldValue(s, values, fields);\n }\n\n function evalCondition(cond: string): boolean {\n // \"ref == value\" or \"ref != value\"\n const eqMatch = cond.match(/^(.+?)\\s*(==|!=)\\s*(.+)$/);\n if (eqMatch) {\n const left = evalExpr(eqMatch[1]);\n const right = evalExpr(eqMatch[3]);\n const eq = String(left) === String(right);\n return eqMatch[2] === '==' ? eq : !eq;\n }\n // Truthy check\n return !!evalExpr(cond);\n }\n\n function findMatchingParen(s: string, start: number): number {\n let depth = 0;\n for (let i = start; i < s.length; i++) {\n if (s[i] === '(') {\n depth++;\n } else if (s[i] === ')') {\n depth--;\n if (depth === 0) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function findTopLevel(s: string, char: string): number {\n let depth = 0;\n let inStr: string | null = null;\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n if (inStr) {\n if (c === inStr) {\n inStr = null;\n }\n continue;\n }\n if (c === \"'\" || c === '\"') {\n inStr = c;\n continue;\n }\n if (c === '(') {\n depth++;\n continue;\n }\n if (c === ')') {\n depth--;\n continue;\n }\n if (depth === 0 && c === char) {\n return i;\n }\n }\n return -1;\n }\n\n try {\n return evalExpr(expr);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Compute initial values for all virtual fields that have storage.computed.read expressions.\n * Call after loading existing storage field values.\n */\nexport function computeVirtualFieldValues(\n schema: DatasourceConfigSchema,\n existingValues: Record<string, unknown>\n): Record<string, unknown> {\n const virtualValues: Record<string, unknown> = {};\n for (const field of schema.fields) {\n if (field.kind !== 'virtual') {\n continue;\n }\n const fk = formKey(field);\n if (field.storage?.type === 'computed' && field.storage.read) {\n const val = evaluateComputedRead(field.storage.read, existingValues, schema.fields);\n if (val !== undefined) {\n virtualValues[fk] = val;\n } else if (field.defaultValue !== undefined) {\n virtualValues[fk] = field.defaultValue;\n }\n } else if (field.defaultValue !== undefined) {\n virtualValues[fk] = field.defaultValue;\n }\n }\n return virtualValues;\n}\n","import type { DatasourceConfigSchema } from '../schema';\n\nimport alertmanagerSchema from './alertmanager.schema.json';\nimport cloudwatchSchema from './cloudwatch.schema.json';\nimport elasticsearchSchema from './elasticsearch.schema.json';\nimport grafanaAmazonprometheusDatasourceSchema from './grafana-amazonprometheus-datasource.schema.json';\nimport grafanaAdobeanalyticsDatasourceSchema from './grafana-adobeanalytics-datasource.schema.json';\nimport grafanaAppdynamicsDatasourceSchema from './grafana-appdynamics-datasource.schema.json';\nimport grafanaAstradbDatasourceSchema from './grafana-astradb-datasource.schema.json';\nimport grafanaAthenaDatasourceSchema from './grafana-athena-datasource.schema.json';\nimport grafanaAzureDataExplorerDatasourceSchema from './grafana-azure-data-explorer-datasource.schema.json';\nimport grafanaAzureMonitorDatasourceSchema from './grafana-azure-monitor-datasource.schema.json';\nimport grafanaAzuredevopsDatasourceSchema from './grafana-azuredevops-datasource.schema.json';\nimport grafanaAzureprometheusDatasourceSchema from './grafana-azureprometheus-datasource.schema.json';\nimport grafanaBigqueryDatasourceSchema from './grafana-bigquery-datasource.schema.json';\nimport grafanaClickhouseDatasourceSchema from './grafana-clickhouse-datasource.schema.json';\nimport grafanaCockroachdbDatasourceSchema from './grafana-cockroachdb-datasource.schema.json';\nimport grafanaDatabricksDatasourceSchema from './grafana-databricks-datasource.schema.json';\nimport grafanaDatadogDatasourceSchema from './grafana-datadog-datasource.schema.json';\nimport grafanaDynatraceDatasourceSchema from './grafana-dynatrace-datasource.schema.json';\nimport grafanaFalconlogscaleDatasourceSchema from './grafana-falconlogscale-datasource.schema.json';\nimport grafanaGithubDatasourceSchema from './grafana-github-datasource.schema.json';\nimport grafanaGitlabDatasourceSchema from './grafana-gitlab-datasource.schema.json';\nimport grafanaGooglesheetsDatasourceSchema from './grafana-googlesheets-datasource.schema.json';\nimport grafanaHoneycombDatasourceSchema from './grafana-honeycomb-datasource.schema.json';\nimport grafanaIotSitewiseDatasourceSchema from './grafana-iot-sitewise-datasource.schema.json';\nimport grafanaJiraDatasourceSchema from './grafana-jira-datasource.schema.json';\nimport grafanaLookerDatasourceSchema from './grafana-looker-datasource.schema.json';\nimport grafanaMongodbDatasourceSchema from './grafana-mongodb-datasource.schema.json';\nimport grafanaMqttDatasourceSchema from './grafana-mqtt-datasource.schema.json';\nimport grafanaNewrelicDatasourceSchema from './grafana-newrelic-datasource.schema.json';\nimport grafanaOdbcDatasourceSchema from './grafana-odbc-datasource.schema.json';\nimport grafanaOpensearchDatasourceSchema from './grafana-opensearch-datasource.schema.json';\nimport grafanaOracleDatasourceSchema from './grafana-oracle-datasource.schema.json';\nimport grafanaPagerdutyDatasourceSchema from './grafana-pagerduty-datasource.schema.json';\nimport grafanaPostgresqlDatasourceSchema from './grafana-postgresql-datasource.schema.json';\nimport grafanaPyroscopeDatasourceSchema from './grafana-pyroscope-datasource.schema.json';\nimport grafanaRedshiftDatasourceSchema from './grafana-redshift-datasource.schema.json';\nimport grafanaSalesforceDatasourceSchema from './grafana-salesforce-datasource.schema.json';\nimport grafanaSaphanaDatasourceSchema from './grafana-saphana-datasource.schema.json';\nimport grafanaSentryDatasourceSchema from './grafana-sentry-datasource.schema.json';\nimport grafanaServicenowDatasourceSchema from './grafana-servicenow-datasource.schema.json';\nimport grafanaSnowflakeDatasourceSchema from './grafana-snowflake-datasource.schema.json';\nimport grafanaSplunkDatasourceSchema from './grafana-splunk-datasource.schema.json';\nimport grafanaSplunkobservabilityDatasourceSchema from './grafana-splunkobservability-datasource.schema.json';\nimport grafanaStravaDatasourceSchema from './grafana-strava-datasource.schema.json';\nimport grafanaSumologicDatasourceSchema from './grafana-sumologic-datasource.schema.json';\nimport grafanaSurrealdbDatasourceSchema from './grafana-surrealdb-datasource.schema.json';\nimport grafanaTimestreamDatasourceSchema from './grafana-timestream-datasource.schema.json';\nimport grafanaWavefrontDatasourceSchema from './grafana-wavefront-datasource.schema.json';\nimport grafanaXRayDatasourceSchema from './grafana-x-ray-datasource.schema.json';\nimport grafanaYugabyteDatasourceSchema from './grafana-yugabyte-datasource.schema.json';\nimport graphiteSchema from './graphite.schema.json';\nimport influxdbSchema from './influxdb.schema.json';\nimport jaegerSchema from './jaeger.schema.json';\nimport lokiSchema from './loki.schema.json';\nimport marcusolssonCsvDatasourceSchema from './marcusolsson-csv-datasource.schema.json';\nimport marcusolssonJsonDatasourceSchema from './marcusolsson-json-datasource.schema.json';\nimport mssqlSchema from './mssql.schema.json';\nimport mysqlSchema from './mysql.schema.json';\nimport opentsdbSchema from './opentsdb.schema.json';\nimport prometheusSchema from './prometheus.schema.json';\nimport stackdriverSchema from './stackdriver.schema.json';\nimport tempoSchema from './tempo.schema.json';\nimport yesoreyeramInfinityDatasourceSchema from './yesoreyeram-infinity-datasource.schema.json';\nimport zipkinSchema from './zipkin.schema.json';\n\nconst asSchema = (s: unknown) => s as DatasourceConfigSchema;\n\nconst schemaRegistry = new Map<string, DatasourceConfigSchema>([\n ['alertmanager', asSchema(alertmanagerSchema)],\n ['cloudwatch', asSchema(cloudwatchSchema)],\n ['elasticsearch', asSchema(elasticsearchSchema)],\n ['grafana-amazonprometheus-datasource', asSchema(grafanaAmazonprometheusDatasourceSchema)],\n ['grafana-adobeanalytics-datasource', asSchema(grafanaAdobeanalyticsDatasourceSchema)],\n ['grafana-appdynamics-datasource', asSchema(grafanaAppdynamicsDatasourceSchema)],\n ['grafana-astradb-datasource', asSchema(grafanaAstradbDatasourceSchema)],\n ['grafana-athena-datasource', asSchema(grafanaAthenaDatasourceSchema)],\n ['grafana-azure-data-explorer-datasource', asSchema(grafanaAzureDataExplorerDatasourceSchema)],\n ['grafana-azure-monitor-datasource', asSchema(grafanaAzureMonitorDatasourceSchema)],\n ['grafana-azuredevops-datasource', asSchema(grafanaAzuredevopsDatasourceSchema)],\n ['grafana-azureprometheus-datasource', asSchema(grafanaAzureprometheusDatasourceSchema)],\n ['grafana-bigquery-datasource', asSchema(grafanaBigqueryDatasourceSchema)],\n ['grafana-clickhouse-datasource', asSchema(grafanaClickhouseDatasourceSchema)],\n ['grafana-cockroachdb-datasource', asSchema(grafanaCockroachdbDatasourceSchema)],\n ['grafana-databricks-datasource', asSchema(grafanaDatabricksDatasourceSchema)],\n ['grafana-datadog-datasource', asSchema(grafanaDatadogDatasourceSchema)],\n ['grafana-dynatrace-datasource', asSchema(grafanaDynatraceDatasourceSchema)],\n ['grafana-falconlogscale-datasource', asSchema(grafanaFalconlogscaleDatasourceSchema)],\n ['grafana-github-datasource', asSchema(grafanaGithubDatasourceSchema)],\n ['grafana-gitlab-datasource', asSchema(grafanaGitlabDatasourceSchema)],\n ['grafana-googlesheets-datasource', asSchema(grafanaGooglesheetsDatasourceSchema)],\n ['grafana-honeycomb-datasource', asSchema(grafanaHoneycombDatasourceSchema)],\n ['grafana-iot-sitewise-datasource', asSchema(grafanaIotSitewiseDatasourceSchema)],\n ['grafana-jira-datasource', asSchema(grafanaJiraDatasourceSchema)],\n ['grafana-looker-datasource', asSchema(grafanaLookerDatasourceSchema)],\n ['grafana-mongodb-datasource', asSchema(grafanaMongodbDatasourceSchema)],\n ['grafana-mqtt-datasource', asSchema(grafanaMqttDatasourceSchema)],\n ['grafana-newrelic-datasource', asSchema(grafanaNewrelicDatasourceSchema)],\n ['grafana-odbc-datasource', asSchema(grafanaOdbcDatasourceSchema)],\n ['grafana-opensearch-datasource', asSchema(grafanaOpensearchDatasourceSchema)],\n ['grafana-oracle-datasource', asSchema(grafanaOracleDatasourceSchema)],\n ['grafana-pagerduty-datasource', asSchema(grafanaPagerdutyDatasourceSchema)],\n ['grafana-postgresql-datasource', asSchema(grafanaPostgresqlDatasourceSchema)],\n ['grafana-pyroscope-datasource', asSchema(grafanaPyroscopeDatasourceSchema)],\n ['grafana-redshift-datasource', asSchema(grafanaRedshiftDatasourceSchema)],\n ['grafana-salesforce-datasource', asSchema(grafanaSalesforceDatasourceSchema)],\n ['grafana-saphana-datasource', asSchema(grafanaSaphanaDatasourceSchema)],\n ['grafana-sentry-datasource', asSchema(grafanaSentryDatasourceSchema)],\n ['grafana-servicenow-datasource', asSchema(grafanaServicenowDatasourceSchema)],\n ['grafana-snowflake-datasource', asSchema(grafanaSnowflakeDatasourceSchema)],\n ['grafana-splunk-datasource', asSchema(grafanaSplunkDatasourceSchema)],\n ['grafana-splunkobservability-datasource', asSchema(grafanaSplunkobservabilityDatasourceSchema)],\n ['grafana-strava-datasource', asSchema(grafanaStravaDatasourceSchema)],\n ['grafana-sumologic-datasource', asSchema(grafanaSumologicDatasourceSchema)],\n ['grafana-surrealdb-datasource', asSchema(grafanaSurrealdbDatasourceSchema)],\n ['grafana-timestream-datasource', asSchema(grafanaTimestreamDatasourceSchema)],\n ['grafana-wavefront-datasource', asSchema(grafanaWavefrontDatasourceSchema)],\n ['grafana-x-ray-datasource', asSchema(grafanaXRayDatasourceSchema)],\n ['grafana-yugabyte-datasource', asSchema(grafanaYugabyteDatasourceSchema)],\n ['graphite', asSchema(graphiteSchema)],\n ['influxdb', asSchema(influxdbSchema)],\n ['jaeger', asSchema(jaegerSchema)],\n ['loki', asSchema(lokiSchema)],\n ['marcusolsson-csv-datasource', asSchema(marcusolssonCsvDatasourceSchema)],\n ['marcusolsson-json-datasource', asSchema(marcusolssonJsonDatasourceSchema)],\n ['mssql', asSchema(mssqlSchema)],\n ['mysql', asSchema(mysqlSchema)],\n ['opentsdb', asSchema(opentsdbSchema)],\n ['prometheus', asSchema(prometheusSchema)],\n ['stackdriver', asSchema(stackdriverSchema)],\n ['tempo', asSchema(tempoSchema)],\n ['yesoreyeram-infinity-datasource', asSchema(yesoreyeramInfinityDatasourceSchema)],\n ['zipkin', asSchema(zipkinSchema)],\n]);\n\nexport function getConfigSchema(pluginType: string): DatasourceConfigSchema | null {\n return schemaRegistry.get(pluginType) ?? null;\n}\n","import type { DatasourceConfigSchema } from '../schema';\n\n/**\n * Generate LLM hints for select fields (used when creating datasources).\n */\nexport function generateLLMHint(schema: DatasourceConfigSchema): string {\n const hints: string[] = [];\n for (const field of schema.fields) {\n if (field.ui?.component !== 'select' || field.target !== 'jsonData' || field.kind === 'virtual') {\n continue;\n }\n const options = field.ui?.options ?? [];\n const values = options\n .map((opt) => {\n const isDefault = field.defaultValue != null && String(opt.value) === String(field.defaultValue);\n return isDefault ? `\"${opt.value}\" (default)` : `\"${opt.value}\"`;\n })\n .join(', ');\n if (values) {\n hints.push(`- ${field.label ?? field.key}: jsonData.${field.key} — values: ${values}`);\n }\n }\n return hints.join('\\n');\n}\n\n/**\n * Generate comprehensive structured field data for troubleshooting context.\n * Returns an array of field descriptors the LLM can use to render rich tables.\n */\nexport function generateTroubleshootingFields(schema: DatasourceConfigSchema): Array<{\n label: string;\n key: string;\n target: string;\n type: string;\n required: boolean;\n description?: string;\n defaultValue?: unknown;\n options?: string[];\n section?: string;\n dependsOn?: string;\n}> {\n const result: Array<{\n label: string;\n key: string;\n target: string;\n type: string;\n required: boolean;\n description?: string;\n defaultValue?: unknown;\n options?: string[];\n section?: string;\n dependsOn?: string;\n }> = [];\n for (const field of schema.fields) {\n if (field.kind === 'virtual' || field.isItemField) {\n continue;\n }\n const entry: (typeof result)[0] = {\n label: field.label ?? field.key,\n key: field.target === 'root' ? field.key : `${field.target}.${field.key}`,\n target: field.target ?? 'jsonData',\n type: field.valueType,\n required: !!field.required,\n };\n if (field.description) {\n entry.description = field.description;\n }\n if (field.defaultValue != null) {\n entry.defaultValue = field.defaultValue;\n }\n if (field.ui?.options && field.ui.options.length > 0) {\n entry.options = field.ui.options.map((o) => String(o.value));\n }\n if (field.section) {\n entry.section = field.section;\n }\n if (field.dependsOn) {\n entry.dependsOn = field.dependsOn;\n }\n result.push(entry);\n }\n return result;\n}\n","export const ROOT_CONFIG_FIELDS = [\n 'name',\n 'type',\n 'id',\n 'uid',\n 'access',\n 'url',\n 'basicAuth',\n 'basicAuthUser',\n 'user',\n 'isDefault',\n 'database',\n 'withCredentials',\n] as const;\n\ntype DatasourceConfig = Record<any, any>;\n\nexport const buildCreateDatasourcePayload = (input: DatasourceConfig): DatasourceConfig => {\n const body: DatasourceConfig = { name: input.name, type: input.type, access: 'proxy' };\n if (input.jsonData !== undefined) {\n body.jsonData = { ...(input.jsonData as DatasourceConfig) };\n }\n normalizeDatasourceConfig(body, input, { inferAuthMethod: true });\n return body;\n};\n\nexport const buildCloneDatasourcePayload = (source: DatasourceConfig, name: string): DatasourceConfig => {\n return { ...source, name, access: source.access ?? 'proxy', isDefault: false };\n};\n\nexport const buildUpdateDatasourcePayload = (\n existing: DatasourceConfig,\n input: DatasourceConfig\n): { body: DatasourceConfig; hasChanges: boolean } => {\n const body: DatasourceConfig = {\n name: existing.name,\n type: existing.type,\n access: existing.access,\n url: existing.url,\n database: existing.database,\n basicAuth: existing.basicAuth,\n basicAuthUser: existing.basicAuthUser,\n isDefault: existing.isDefault,\n user: existing.user,\n withCredentials: existing.withCredentials,\n jsonData: existing.jsonData,\n };\n let hasChanges = false;\n const UPDATE_COMPARABLE_FIELDS = ['name', 'url', 'database', 'isDefault', 'basicAuth'] as const;\n for (const key of UPDATE_COMPARABLE_FIELDS) {\n if (input[key] !== undefined && input[key] !== existing[key]) {\n body[key] = input[key];\n hasChanges = true;\n }\n }\n\n if (input.jsonData !== undefined) {\n body.jsonData = { ...((existing.jsonData ?? {}) as DatasourceConfig), ...(input.jsonData as DatasourceConfig) };\n hasChanges = true;\n hasChanges = normalizeDatasourceConfig(body, input) || hasChanges;\n }\n\n return { body, hasChanges };\n};\n\nconst normalizeDatasourceConfig = (\n body: DatasourceConfig,\n input: DatasourceConfig,\n options: { inferAuthMethod?: boolean } = {}\n): boolean => {\n const changed = hoistRootConfigFields(body, input);\n if (options.inferAuthMethod) {\n applyInferredAuthMethod(body, input);\n }\n return changed;\n};\n\nconst hoistRootConfigFields = (body: DatasourceConfig, input: DatasourceConfig): boolean => {\n const jsonData = (body.jsonData as DatasourceConfig | undefined) ?? {};\n let changed = false;\n\n for (const key of ROOT_CONFIG_FIELDS) {\n if (jsonData[key] === undefined) {\n continue;\n }\n\n if (input[key] === undefined) {\n body[key] = jsonData[key];\n changed = true;\n }\n\n delete jsonData[key];\n }\n\n body.jsonData = jsonData;\n return changed;\n};\n\nconst applyInferredAuthMethod = (body: DatasourceConfig, input: DatasourceConfig): void => {\n const jsonData = (body.jsonData as DatasourceConfig | undefined) ?? {};\n\n if (jsonData.authMethod !== undefined) {\n body.jsonData = jsonData;\n return;\n }\n\n if (jsonData.oauthPassThru === true) {\n jsonData.authMethod = 'forward_oauth';\n } else if (body.basicAuth === true || input.basicAuth === true) {\n jsonData.authMethod = 'basic';\n }\n\n body.jsonData = jsonData;\n};\n","// @ts-expect-error — js-yaml has no bundled type declarations; used only for scalar serialization\nimport yaml from 'js-yaml';\nimport { resolveGroups } from '../../components/ConfigEditor/DatasourceConfigWizard/config';\nimport { ROOT_CONFIG_FIELDS } from './dsconfig';\nimport type { AllowedValuesValidationRule, ConfigField, ConfigGroup, DatasourceConfigSchema } from '../schema';\n\ntype YamlRenderOptions = { jsonDataKeys?: string[]; secureKeys?: string[] };\n\n// ============================================================\n// Provisioning YAML generation\n// ============================================================\n\n/** Indent each line by `depth * 2` spaces. */\nfunction yamlIndent(depth: number): string {\n return ' '.repeat(depth);\n}\n\n/** Serialize a scalar value as a safe YAML string using js-yaml. */\nfunction yamlString(value: unknown): string {\n if (value === null || value === undefined) {\n return '\"\"';\n }\n const s = String(value);\n if (s === '') {\n return '\"\"';\n }\n return yaml.dump(s, { lineWidth: -1 }).trimEnd();\n}\n\n/** Format a value as YAML inline. */\nfunction yamlValue(value: unknown, depth: number): string {\n if (value === null || value === undefined) {\n return '\"\"';\n }\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false';\n }\n if (typeof value === 'number') {\n return String(value);\n }\n if (typeof value === 'string') {\n return yamlString(value);\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]';\n }\n const lines = value.map((item) => {\n if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n const entries = Object.entries(item as Record<string, unknown>);\n if (entries.length === 0) {\n return `${yamlIndent(depth)}- {}`;\n }\n const [firstKey, firstVal] = entries[0];\n const firstLine = `${yamlIndent(depth)}- ${yamlString(firstKey)}: ${yamlValue(firstVal, depth + 2)}`;\n const rest = entries\n .slice(1)\n .map(([k, v]) => `${yamlIndent(depth + 1)}${yamlString(k)}: ${yamlValue(v, depth + 2)}`);\n return [firstLine, ...rest].join('\\n');\n }\n return `${yamlIndent(depth)}- ${yamlValue(item, depth + 1)}`;\n });\n return '\\n' + lines.join('\\n');\n }\n if (typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>);\n if (entries.length === 0) {\n return '{}';\n }\n const lines = entries.map(([k, v]) => `${yamlIndent(depth)}${yamlString(k)}: ${yamlValue(v, depth + 1)}`);\n return '\\n' + lines.join('\\n');\n }\n return yamlString(value);\n}\n\n/** True if the field is a certificate or key (multiline secret). */\nfunction isCertField(field: ConfigField): boolean {\n const k = field.key.toLowerCase();\n return (\n field.target === 'secureJsonData' && (k.includes('cert') || k.includes('key') || field.ui?.component === 'textarea')\n );\n}\n\n/** True if the field should be excluded from provisioning YAML output. */\nfunction isExcludedFromProvisioning(field: ConfigField): boolean {\n if (field.kind === 'virtual') {\n return true;\n }\n if (field.isItemField) {\n return true;\n }\n // Fields tagged \"managed-by:*\" are auto-set by the wizard UI via effects.\n // Root fields like basicAuth still need to appear in provisioning YAML\n // because they are real storage fields. Only exclude managed jsonData fields.\n if (field.tags?.some((t) => t.startsWith('managed-by:')) && field.target !== 'root') {\n return true;\n }\n // Skip indexedPair storage — these are handled separately (e.g. httpHeaders)\n if (field.storage?.type === 'indexedPair') {\n return true;\n }\n return false;\n}\n\n/** Format a secureJsonData placeholder value. */\nfunction secretPlaceholder(field: ConfigField): string {\n if (isCertField(field)) {\n return '|\\n xxxxxx';\n }\n return 'xxxxxx';\n}\n\n/** Default YAML value for a field in template mode. */\nfunction templateValue(field: ConfigField): unknown {\n if (field.defaultValue !== undefined) {\n return field.defaultValue;\n }\n // Use first option value as a sensible default\n if (field.ui?.options && field.ui.options.length > 0) {\n return field.ui.options[0].value;\n }\n switch (field.valueType) {\n case 'string':\n return '';\n case 'number':\n return 0;\n case 'boolean':\n return false;\n case 'array':\n return [];\n case 'object':\n case 'map':\n return {};\n default:\n return '';\n }\n}\n\n/**\n * Format a YAML comment for a field in template mode.\n * Includes label, description, allowed values, and default.\n */\nfunction fieldComment(field: ConfigField, indent: string): string {\n const parts: string[] = [];\n const label = field.label ?? field.key;\n let line = label;\n if (field.required) {\n line += ' (REQUIRED)';\n }\n if (field.description) {\n line += ` — ${field.description}`;\n }\n parts.push(`${indent}# ${line}`);\n\n const options = field.ui?.options;\n if (options && options.length > 0) {\n const vals = options.map((o) => String(o.value)).join(', ');\n parts.push(`${indent}# Allowed values: ${vals}`);\n }\n\n const allowedValuesRule = field.validations?.find(\n (v): v is AllowedValuesValidationRule => v.type === 'allowedValues'\n );\n if (allowedValuesRule && !options) {\n const vals = allowedValuesRule.values.map((v) => String(v)).join(', ');\n parts.push(`${indent}# Allowed values: ${vals}`);\n }\n\n if (field.dependsOn) {\n parts.push(`${indent}# Only when: ${field.dependsOn}`);\n }\n\n return parts.join('\\n');\n}\n\nexport type ProvisioningYamlOptions = {\n /** Include comments with field descriptions. Default: true for template, false for export. */\n comments?: boolean;\n /** Name override (used in template mode). */\n name?: string;\n};\n\n/**\n * Generate a Grafana provisioning YAML from a dsconfig schema.\n * In template mode (no values), emits all fields with defaults and comments.\n * When values are provided, emits actual values — used for existing datasource export.\n */\nexport function toProvisioningYaml(\n schema: DatasourceConfigSchema,\n values?: Record<string, unknown>,\n options?: ProvisioningYamlOptions\n): string {\n const isTemplate = !values;\n const showComments = options?.comments ?? isTemplate;\n const indent2 = ' ';\n const indent3 = ' ';\n\n // Use schema groups to order fields logically (connection → auth → network → etc.)\n const groups = resolveGroups(schema);\n const rootFields: ConfigField[] = [];\n const jsonDataFieldsByGroup: Array<{ group: ConfigGroup; fields: ConfigField[] }> = [];\n const secureJsonDataFieldsByGroup: Array<{ group: ConfigGroup; fields: ConfigField[] }> = [];\n const virtualFieldsWithOptions: ConfigField[] = [];\n\n for (const { group, fields } of groups) {\n const jd: ConfigField[] = [];\n const sd: ConfigField[] = [];\n for (const field of fields) {\n // Collect virtual fields with UI options (e.g. auth.method) for comment-only output\n if (field.kind === 'virtual' && field.ui?.options && field.ui.options.length > 0) {\n virtualFieldsWithOptions.push(field);\n continue;\n }\n if (isExcludedFromProvisioning(field)) {\n continue;\n }\n switch (field.target) {\n case 'root':\n rootFields.push(field);\n break;\n case 'jsonData':\n jd.push(field);\n break;\n case 'secureJsonData':\n sd.push(field);\n break;\n }\n }\n if (jd.length > 0) {\n jsonDataFieldsByGroup.push({ group, fields: jd });\n }\n if (sd.length > 0) {\n secureJsonDataFieldsByGroup.push({ group, fields: sd });\n }\n }\n\n const allSecureJsonDataFields = secureJsonDataFieldsByGroup.flatMap((g) => g.fields);\n\n // Pick up root fields not referenced in any group (e.g. root.basicAuth is managed\n // by auth.method effects and not listed in the auth group's fieldRefs).\n const groupedFieldIds = new Set(groups.flatMap(({ group }) => group.fieldRefs));\n for (const field of schema.fields) {\n if (field.target === 'root' && !groupedFieldIds.has(field.id) && !isExcludedFromProvisioning(field)) {\n rootFields.push(field);\n }\n }\n\n const lines: string[] = [];\n lines.push('apiVersion: 1');\n lines.push('');\n lines.push('datasources:');\n lines.push(`${indent2.slice(2)}- name: ${yamlString(options?.name ?? values?.name ?? `my-${schema.pluginType}`)}`);\n lines.push(`${indent2}type: ${schema.pluginType}`);\n\n // In export mode, emit uid so the provisioning YAML can be used for idempotent upserts.\n if (!isTemplate && values?.uid) {\n lines.push(`${indent2}uid: ${yamlString(values.uid)}`);\n }\n\n // Root fields (url, basicAuth, basicAuthUser, database, etc.)\n const ALREADY_EMITTED_ROOT = new Set(['name', 'type', 'uid']);\n for (const field of rootFields) {\n if (ALREADY_EMITTED_ROOT.has(field.key)) {\n continue;\n }\n const val = values ? values[field.key] : templateValue(field);\n if (val === undefined || val === null) {\n continue;\n }\n // Skip false booleans in export mode to keep YAML clean\n if (!isTemplate && val === false) {\n continue;\n }\n if (showComments) {\n lines.push(fieldComment(field, indent2));\n }\n lines.push(`${indent2}${field.key}: ${yamlValue(val, 3)}`);\n }\n\n // Emit virtual fields with UI options as comments (e.g. auth.method selector)\n // These explain configuration choices even though they aren't stored directly.\n if (showComments) {\n for (const vf of virtualFieldsWithOptions) {\n const label = vf.label ?? vf.key;\n const opts = vf.ui!.options!.map((o) => `${String(o.value)} (${o.label})`).join(', ');\n lines.push(`${indent2}# ${label}: ${opts}`);\n if (vf.description) {\n lines.push(`${indent2}# ${vf.description}`);\n }\n }\n }\n\n // Collect jsonData keys emitted by schema fields so we can detect extra keys in export mode.\n const emittedJsonDataKeys = new Set<string>();\n const emittedSecureJsonDataKeys = new Set<string>();\n\n // jsonData section — ordered by schema groups\n const jsonDataValues = values?.jsonData as Record<string, unknown> | undefined;\n const hasJsonDataFromSchema = jsonDataFieldsByGroup.length > 0;\n const hasJsonDataFromValues = !isTemplate && jsonDataValues && Object.keys(jsonDataValues).length > 0;\n\n if (hasJsonDataFromSchema || hasJsonDataFromValues) {\n lines.push(`${indent2}jsonData:`);\n\n // Schema-declared fields, grouped by section\n for (const { group, fields: groupFields } of jsonDataFieldsByGroup) {\n if (showComments && jsonDataFieldsByGroup.length > 1) {\n lines.push(`${indent3}# --- ${group.title} ---`);\n }\n for (const field of groupFields) {\n const val = values ? getNestedValue(values, 'jsonData', field) : templateValue(field);\n if (val === undefined || val === null) {\n continue;\n }\n // In export mode, skip default-value fields to keep YAML minimal\n if (!isTemplate && field.defaultValue !== undefined && val === field.defaultValue) {\n continue;\n }\n emittedJsonDataKeys.add(field.key);\n if (showComments) {\n lines.push(fieldComment(field, indent3));\n }\n const rendered = yamlValue(val, 4);\n if (rendered.startsWith('\\n')) {\n lines.push(`${indent3}${field.key}:${rendered}`);\n } else {\n lines.push(`${indent3}${field.key}: ${rendered}`);\n }\n }\n }\n\n // In export mode, emit extra jsonData keys not declared in the schema\n // (e.g. httpHeaderName1 from indexedPair storage, or plugin-specific keys)\n if (!isTemplate && jsonDataValues) {\n for (const [key, val] of Object.entries(jsonDataValues)) {\n if (emittedJsonDataKeys.has(key)) {\n continue;\n }\n if (val === undefined || val === null) {\n continue;\n }\n const rendered = yamlValue(val, 4);\n if (rendered.startsWith('\\n')) {\n lines.push(`${indent3}${key}:${rendered}`);\n } else {\n lines.push(`${indent3}${key}: ${rendered}`);\n }\n }\n }\n }\n\n // secureJsonData section\n // In export mode, the Grafana API returns `secureJsonFields: { key: true }` indicating which\n // secure fields are actually configured. Only emit those — not all schema-declared secure fields.\n // In template mode, emit all schema-declared secure fields with placeholders.\n const secureJsonFields = (values?.secureJsonFields ?? {}) as Record<string, boolean>;\n const inferredSecureKeys = !isTemplate ? inferSecureJsonDataKeys(jsonDataValues) : [];\n\n // Filter secure fields: in export mode, only emit fields that are actually set on the datasource\n const activeSecureFields = isTemplate\n ? allSecureJsonDataFields\n : allSecureJsonDataFields.filter((f) => secureJsonFields[f.key] === true);\n\n if (activeSecureFields.length > 0 || inferredSecureKeys.length > 0) {\n lines.push(`${indent2}secureJsonData:`);\n for (const field of activeSecureFields) {\n emittedSecureJsonDataKeys.add(field.key);\n if (showComments) {\n lines.push(fieldComment(field, indent3));\n }\n lines.push(`${indent3}${field.key}: ${secretPlaceholder(field)}`);\n }\n // Inferred secure keys (e.g. httpHeaderValue1 matching httpHeaderName1)\n for (const key of inferredSecureKeys) {\n if (emittedSecureJsonDataKeys.has(key)) {\n continue;\n }\n lines.push(`${indent3}${key}: xxxxxx`);\n }\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Infer secureJsonData keys from jsonData keys.\n * For example, httpHeaderName1 → httpHeaderValue1 (Grafana's indexedPair convention).\n */\nfunction inferSecureJsonDataKeys(jsonData: Record<string, unknown> | undefined): string[] {\n if (!jsonData) {\n return [];\n }\n const keys: string[] = [];\n for (const key of Object.keys(jsonData)) {\n const match = key.match(/^httpHeaderName(\\d+)$/);\n if (match) {\n keys.push(`httpHeaderValue${match[1]}`);\n }\n }\n return keys;\n}\n\n/** Retrieve a nested value for a jsonData/secureJsonData field from a flat or nested values object. */\nfunction getNestedValue(values: Record<string, unknown>, target: string, field: ConfigField): unknown {\n const nested = values[target];\n if (nested && typeof nested === 'object') {\n return (nested as Record<string, unknown>)[field.key];\n }\n return undefined;\n}\n\n/**\n * Generate provisioning YAML from an existing Grafana datasource API response.\n * If a dsconfig schema is available, uses it for field ordering and comments.\n * If not, generates basic YAML from the raw API response.\n */\nexport function datasourceToProvisioningYaml(\n ds: Record<string, unknown>,\n schema: DatasourceConfigSchema | null\n): string {\n if (schema) {\n return toProvisioningYaml(schema, ds, { comments: false });\n }\n\n // No schema — generate basic YAML from the raw API response\n const lines: string[] = [];\n lines.push('apiVersion: 1');\n lines.push('');\n lines.push('datasources:');\n lines.push(` - name: ${yamlString(ds.name)}`);\n if (ds.uid) {\n lines.push(` uid: ${yamlString(ds.uid)}`);\n }\n lines.push(` type: ${yamlString(ds.type)}`);\n if (ds.url) {\n lines.push(` url: ${yamlString(ds.url)}`);\n }\n if (ds.database) {\n lines.push(` database: ${yamlString(ds.database)}`);\n }\n if (ds.isDefault) {\n lines.push(' isDefault: true');\n }\n if (ds.basicAuth) {\n lines.push(' basicAuth: true');\n if (ds.basicAuthUser) {\n lines.push(` basicAuthUser: ${yamlString(ds.basicAuthUser)}`);\n }\n }\n\n const jsonData = ds.jsonData as Record<string, unknown> | undefined;\n if (jsonData && Object.keys(jsonData).length > 0) {\n lines.push(' jsonData:');\n for (const [key, val] of Object.entries(jsonData)) {\n const rendered = yamlValue(val, 4);\n if (rendered.startsWith('\\n')) {\n lines.push(` ${key}:${rendered}`);\n } else {\n lines.push(` ${key}: ${rendered}`);\n }\n }\n }\n\n // secureJsonData is never returned by the API — emit placeholder comment\n lines.push(' # secureJsonData: (secrets are not exported — add manually)');\n lines.push(' # mySecret: xxxxxx');\n\n return lines.join('\\n');\n}\n\nfunction getYamlRenderOptions(ds: Record<string, unknown>): Required<YamlRenderOptions> {\n return {\n jsonDataKeys: Object.keys((ds.jsonData ?? {}) as Record<string, unknown>).sort(),\n secureKeys: [\n ...new Set([\n ...Object.keys((ds.secureJsonData ?? {}) as Record<string, unknown>),\n ...Object.keys((ds.secureJsonFields ?? {}) as Record<string, boolean>),\n ]),\n ].sort(),\n };\n}\n\nexport const configToYaml = (ds: Record<string, unknown>, options: YamlRenderOptions = {}): string => {\n const { jsonDataKeys, secureKeys } = {\n ...getYamlRenderOptions(ds),\n ...options,\n };\n const root: Record<string, unknown> = {};\n\n for (const key of ROOT_CONFIG_FIELDS) {\n root[key] = ds[key] ?? '';\n }\n\n const jsonData = (ds.jsonData ?? {}) as Record<string, unknown>;\n if (jsonDataKeys.length > 0) {\n const jsonDataYaml: Record<string, unknown> = {};\n for (const key of jsonDataKeys) {\n jsonDataYaml[key] = jsonData[key] ?? '';\n }\n root.jsonData = jsonDataYaml;\n }\n\n if (secureKeys.length > 0) {\n const secureJsonData: Record<string, string> = {};\n for (const key of secureKeys) {\n secureJsonData[key] = '********';\n }\n root.secureJsonData = secureJsonData;\n }\n\n return yaml.dump(root, { lineWidth: -1, sortKeys: false, noRefs: true }).trimEnd();\n};\n\nexport const formatYamlDiff = (existing: Record<string, unknown>, body: Record<string, unknown>): string => {\n const updated = { ...existing, ...body };\n\n const existingJD = (existing.jsonData ?? {}) as Record<string, unknown>;\n const updatedJD = (updated.jsonData ?? {}) as Record<string, unknown>;\n const jsonDataKeys = [...new Set([...Object.keys(existingJD), ...Object.keys(updatedJD)])].sort();\n\n const secureKeys = [\n ...new Set([\n ...Object.keys((existing.secureJsonData ?? {}) as Record<string, unknown>),\n ...Object.keys((existing.secureJsonFields ?? {}) as Record<string, boolean>),\n ...Object.keys((updated.secureJsonData ?? {}) as Record<string, unknown>),\n ...Object.keys((updated.secureJsonFields ?? {}) as Record<string, boolean>),\n ]),\n ].sort();\n\n const currentYaml = configToYaml(existing, { jsonDataKeys, secureKeys });\n const updatedYaml = configToYaml(updated, { jsonDataKeys, secureKeys });\n\n const oldLines = currentYaml.split('\\n');\n const newLines = updatedYaml.split('\\n');\n const maxLen = Math.max(oldLines.length, newLines.length);\n const diffLines: string[] = [];\n\n for (let i = 0; i < maxLen; i++) {\n const oldLine = oldLines[i];\n const newLine = newLines[i];\n if (oldLine === newLine) {\n diffLines.push(` ${oldLine}`);\n continue;\n }\n if (oldLine !== undefined) {\n diffLines.push(`-${oldLine}`);\n }\n if (newLine !== undefined) {\n diffLines.push(`+${newLine}`);\n }\n }\n\n return '```diff\\n' + diffLines.join('\\n') + '\\n```';\n};\n","import { useMemo } from 'react';\nimport { getConfigSchema } from '../registry';\nimport type { DatasourceConfigSchema } from '../schema';\n\ntype UseDatasourceSchemaResult = { schema: DatasourceConfigSchema | null; loading: boolean; error: string | null };\n\nexport function useDatasourceSchema(pluginType: string): UseDatasourceSchemaResult {\n const schema = useMemo(() => fetchConfigSchema(pluginType), [pluginType]);\n return { schema, loading: false, error: null };\n}\n\nexport function fetchConfigSchema(pluginType: string): DatasourceConfigSchema | null {\n if (!pluginType) {\n return null;\n }\n return getConfigSchema(pluginType);\n}\n"],"names":["celParse","celEvaluate","yaml","useMemo"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpTA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAe,CAAA;AAEjC,MAAM,cAAA,uBAAqB,GAAA,CAAoC;AAAA,EAC7D,CAAC,cAAA,EAAgB,QAAA,CAAS,kBAAkB,CAAC,CAAA;AAAA,EAC7C,CAAC,YAAA,EAAc,QAAA,CAAS,gBAAgB,CAAC,CAAA;AAAA,EACzC,CAAC,eAAA,EAAiB,QAAA,CAAS,mBAAmB,CAAC,CAAA;AAAA,EAC/C,CAAC,qCAAA,EAAuC,QAAA,CAAS,uCAAuC,CAAC,CAAA;AAAA,EACzF,CAAC,mCAAA,EAAqC,QAAA,CAAS,qCAAqC,CAAC,CAAA;AAAA,EACrF,CAAC,gCAAA,EAAkC,QAAA,CAAS,kCAAkC,CAAC,CAAA;AAAA,EAC/E,CAAC,4BAAA,EAA8B,QAAA,CAAS,8BAA8B,CAAC,CAAA;AAAA,EACvE,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,wCAAA,EAA0C,QAAA,CAAS,wCAAwC,CAAC,CAAA;AAAA,EAC7F,CAAC,kCAAA,EAAoC,QAAA,CAAS,mCAAmC,CAAC,CAAA;AAAA,EAClF,CAAC,gCAAA,EAAkC,QAAA,CAAS,kCAAkC,CAAC,CAAA;AAAA,EAC/E,CAAC,oCAAA,EAAsC,QAAA,CAAS,sCAAsC,CAAC,CAAA;AAAA,EACvF,CAAC,6BAAA,EAA+B,QAAA,CAAS,+BAA+B,CAAC,CAAA;AAAA,EACzE,CAAC,+BAAA,EAAiC,QAAA,CAAS,iCAAiC,CAAC,CAAA;AAAA,EAC7E,CAAC,gCAAA,EAAkC,QAAA,CAAS,kCAAkC,CAAC,CAAA;AAAA,EAC/E,CAAC,+BAAA,EAAiC,QAAA,CAAS,iCAAiC,CAAC,CAAA;AAAA,EAC7E,CAAC,4BAAA,EAA8B,QAAA,CAAS,8BAA8B,CAAC,CAAA;AAAA,EACvE,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,mCAAA,EAAqC,QAAA,CAAS,qCAAqC,CAAC,CAAA;AAAA,EACrF,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,iCAAA,EAAmC,QAAA,CAAS,mCAAmC,CAAC,CAAA;AAAA,EACjF,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,iCAAA,EAAmC,QAAA,CAAS,kCAAkC,CAAC,CAAA;AAAA,EAChF,CAAC,yBAAA,EAA2B,QAAA,CAAS,2BAA2B,CAAC,CAAA;AAAA,EACjE,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,4BAAA,EAA8B,QAAA,CAAS,8BAA8B,CAAC,CAAA;AAAA,EACvE,CAAC,yBAAA,EAA2B,QAAA,CAAS,2BAA2B,CAAC,CAAA;AAAA,EACjE,CAAC,6BAAA,EAA+B,QAAA,CAAS,+BAA+B,CAAC,CAAA;AAAA,EACzE,CAAC,yBAAA,EAA2B,QAAA,CAAS,2BAA2B,CAAC,CAAA;AAAA,EACjE,CAAC,+BAAA,EAAiC,QAAA,CAAS,iCAAiC,CAAC,CAAA;AAAA,EAC7E,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,+BAAA,EAAiC,QAAA,CAAS,iCAAiC,CAAC,CAAA;AAAA,EAC7E,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,6BAAA,EAA+B,QAAA,CAAS,+BAA+B,CAAC,CAAA;AAAA,EACzE,CAAC,+BAAA,EAAiC,QAAA,CAAS,iCAAiC,CAAC,CAAA;AAAA,EAC7E,CAAC,4BAAA,EAA8B,QAAA,CAAS,8BAA8B,CAAC,CAAA;AAAA,EACvE,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,+BAAA,EAAiC,QAAA,CAAS,iCAAiC,CAAC,CAAA;AAAA,EAC7E,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,wCAAA,EAA0C,QAAA,CAAS,0CAA0C,CAAC,CAAA;AAAA,EAC/F,CAAC,2BAAA,EAA6B,QAAA,CAAS,6BAA6B,CAAC,CAAA;AAAA,EACrE,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,+BAAA,EAAiC,QAAA,CAAS,iCAAiC,CAAC,CAAA;AAAA,EAC7E,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,0BAAA,EAA4B,QAAA,CAAS,2BAA2B,CAAC,CAAA;AAAA,EAClE,CAAC,6BAAA,EAA+B,QAAA,CAAS,+BAA+B,CAAC,CAAA;AAAA,EACzE,CAAC,UAAA,EAAY,QAAA,CAAS,cAAc,CAAC,CAAA;AAAA,EACrC,CAAC,UAAA,EAAY,QAAA,CAAS,cAAc,CAAC,CAAA;AAAA,EACrC,CAAC,QAAA,EAAU,QAAA,CAAS,YAAY,CAAC,CAAA;AAAA,EACjC,CAAC,MAAA,EAAQ,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,EAC7B,CAAC,6BAAA,EAA+B,QAAA,CAAS,+BAA+B,CAAC,CAAA;AAAA,EACzE,CAAC,8BAAA,EAAgC,QAAA,CAAS,gCAAgC,CAAC,CAAA;AAAA,EAC3E,CAAC,OAAA,EAAS,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,EAC/B,CAAC,OAAA,EAAS,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,EAC/B,CAAC,UAAA,EAAY,QAAA,CAAS,cAAc,CAAC,CAAA;AAAA,EACrC,CAAC,YAAA,EAAc,QAAA,CAAS,gBAAgB,CAAC,CAAA;AAAA,EACzC,CAAC,aAAA,EAAe,QAAA,CAAS,iBAAiB,CAAC,CAAA;AAAA,EAC3C,CAAC,OAAA,EAAS,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,EAC/B,CAAC,iCAAA,EAAmC,QAAA,CAAS,mCAAmC,CAAC,CAAA;AAAA,EACjF,CAAC,QAAA,EAAU,QAAA,CAAS,YAAY,CAAC;AACnC,CAAC,CAAA;AAEM,SAAS,gBAAgB,UAAA,EAAmD;AAxInF,EAAA,IAAA,EAAA;AAyIE,EAAA,OAAA,CAAO,EAAA,GAAA,cAAA,CAAe,GAAA,CAAI,UAAU,CAAA,KAA7B,IAAA,GAAA,EAAA,GAAkC,IAAA;AAC3C;;ACrIO,SAAS,gBAAgB,MAAA,EAAwC;AALxE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAME,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,IAAA,CAAA,CAAI,EAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,SAAA,MAAc,QAAA,IAAY,MAAM,MAAA,KAAW,UAAA,IAAc,KAAA,CAAM,IAAA,KAAS,SAAA,EAAW;AAC/F,MAAA;AAAA,IACF;AACA,IAAA,MAAM,WAAU,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,OAAA,KAAV,YAAqB,EAAC;AACtC,IAAA,MAAM,MAAA,GAAS,OAAA,CACZ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACZ,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,YAAA,IAAgB,IAAA,IAAQ,MAAA,CAAO,IAAI,KAAK,CAAA,KAAM,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAC/F,MAAA,OAAO,YAAY,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,CAAA,WAAA,CAAA,GAAgB,CAAA,CAAA,EAAI,IAAI,KAAK,CAAA,CAAA,CAAA;AAAA,IAC/D,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAA;AACZ,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAA,CAAK,EAAA,GAAA,KAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA,CAAM,GAAG,CAAA,WAAA,EAAc,KAAA,CAAM,GAAG,CAAA,gBAAA,EAAc,MAAM,CAAA,CAAE,CAAA;AAAA,IACvF;AAAA,EACF;AACA,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAMO,SAAS,8BAA8B,MAAA,EAW3C;AAxCH,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyCE,EAAA,MAAM,SAWD,EAAC;AACN,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,SAAA,IAAa,KAAA,CAAM,WAAA,EAAa;AACjD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAA4B;AAAA,MAChC,KAAA,EAAA,CAAO,EAAA,GAAA,KAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA,CAAM,GAAA;AAAA,MAC5B,GAAA,EAAK,KAAA,CAAM,MAAA,KAAW,MAAA,GAAS,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,CAAA,EAAI,KAAA,CAAM,GAAG,CAAA,CAAA;AAAA,MACvE,MAAA,EAAA,CAAQ,EAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,EAAA,GAAgB,UAAA;AAAA,MACxB,MAAM,KAAA,CAAM,SAAA;AAAA,MACZ,QAAA,EAAU,CAAC,CAAC,KAAA,CAAM;AAAA,KACpB;AACA,IAAA,IAAI,MAAM,WAAA,EAAa;AACrB,MAAA,KAAA,CAAM,cAAc,KAAA,CAAM,WAAA;AAAA,IAC5B;AACA,IAAA,IAAI,KAAA,CAAM,gBAAgB,IAAA,EAAM;AAC9B,MAAA,KAAA,CAAM,eAAe,KAAA,CAAM,YAAA;AAAA,IAC7B;AACA,IAAA,IAAA,CAAA,CAAI,EAAA,GAAA,KAAA,CAAM,OAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,OAAA,KAAW,MAAM,EAAA,CAAG,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpD,MAAA,KAAA,CAAM,OAAA,GAAU,KAAA,CAAM,EAAA,CAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7D;AACA,IAAA,IAAI,MAAM,OAAA,EAAS;AACjB,MAAA,KAAA,CAAM,UAAU,KAAA,CAAM,OAAA;AAAA,IACxB;AACA,IAAA,IAAI,MAAM,SAAA,EAAW;AACnB,MAAA,KAAA,CAAM,YAAY,KAAA,CAAM,SAAA;AAAA,IAC1B;AACA,IAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,EACnB;AACA,EAAA,OAAO,MAAA;AACT;;AClFO,MAAM,kBAAA,GAAqB;AAAA,EAChC,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF;AAIO,MAAM,4BAAA,GAA+B,CAAC,KAAA,KAA8C;AACzF,EAAA,MAAM,IAAA,GAAyB,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAQ;AACrF,EAAA,IAAI,KAAA,CAAM,aAAa,MAAA,EAAW;AAChC,IAAA,IAAA,CAAK,QAAA,GAAW,EAAE,GAAI,KAAA,CAAM,QAAA,EAA8B;AAAA,EAC5D;AACA,EAAA,yBAAA,CAA0B,IAAA,EAAM,KAAA,EAAO,EAAE,eAAA,EAAiB,MAAM,CAAA;AAChE,EAAA,OAAO,IAAA;AACT;AAEO,MAAM,2BAAA,GAA8B,CAAC,MAAA,EAA0B,IAAA,KAAmC;AA1BzG,EAAA,IAAA,EAAA;AA2BE,EAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAA,CAAQ,YAAO,MAAA,KAAP,IAAA,GAAA,EAAA,GAAiB,OAAA,EAAS,SAAA,EAAW,KAAA,EAAM;AAC/E;AAEO,MAAM,4BAAA,GAA+B,CAC1C,QAAA,EACA,KAAA,KACoD;AAjCtD,EAAA,IAAA,EAAA;AAkCE,EAAA,MAAM,IAAA,GAAyB;AAAA,IAC7B,MAAM,QAAA,CAAS,IAAA;AAAA,IACf,MAAM,QAAA,CAAS,IAAA;AAAA,IACf,QAAQ,QAAA,CAAS,MAAA;AAAA,IACjB,KAAK,QAAA,CAAS,GAAA;AAAA,IACd,UAAU,QAAA,CAAS,QAAA;AAAA,IACnB,WAAW,QAAA,CAAS,SAAA;AAAA,IACpB,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,WAAW,QAAA,CAAS,SAAA;AAAA,IACpB,MAAM,QAAA,CAAS,IAAA;AAAA,IACf,iBAAiB,QAAA,CAAS,eAAA;AAAA,IAC1B,UAAU,QAAA,CAAS;AAAA,GACrB;AACA,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,MAAM,2BAA2B,CAAC,MAAA,EAAQ,KAAA,EAAO,UAAA,EAAY,aAAa,WAAW,CAAA;AACrF,EAAA,KAAA,MAAW,OAAO,wBAAA,EAA0B;AAC1C,IAAA,IAAI,KAAA,CAAM,GAAG,CAAA,KAAM,MAAA,IAAa,MAAM,GAAG,CAAA,KAAM,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5D,MAAA,IAAA,CAAK,GAAG,CAAA,GAAI,KAAA,CAAM,GAAG,CAAA;AACrB,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,aAAa,MAAA,EAAW;AAChC,IAAA,IAAA,CAAK,QAAA,GAAW,EAAE,GAAA,CAAK,EAAA,GAAA,QAAA,CAAS,QAAA,KAAT,YAAqB,EAAC,EAAyB,GAAI,KAAA,CAAM,QAAA,EAA8B;AAC9G,IAAA,UAAA,GAAa,IAAA;AACb,IAAA,UAAA,GAAa,yBAAA,CAA0B,IAAA,EAAM,KAAK,CAAA,IAAK,UAAA;AAAA,EACzD;AAEA,EAAA,OAAO,EAAE,MAAM,UAAA,EAAW;AAC5B;AAEA,MAAM,4BAA4B,CAChC,IAAA,EACA,KAAA,EACA,OAAA,GAAyC,EAAC,KAC9B;AACZ,EAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,IAAA,EAAM,KAAK,CAAA;AACjD,EAAA,IAAI,QAAQ,eAAA,EAAiB;AAC3B,IAAA,uBAAA,CAAwB,MAAM,KAAK,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,OAAA;AACT,CAAA;AAEA,MAAM,qBAAA,GAAwB,CAAC,IAAA,EAAwB,KAAA,KAAqC;AA7E5F,EAAA,IAAA,EAAA;AA8EE,EAAA,MAAM,QAAA,GAAA,CAAY,EAAA,GAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAA,EAAA,GAAkD,EAAC;AACrE,EAAA,IAAI,OAAA,GAAU,KAAA;AAEd,EAAA,KAAA,MAAW,OAAO,kBAAA,EAAoB;AACpC,IAAA,IAAI,QAAA,CAAS,GAAG,CAAA,KAAM,MAAA,EAAW;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,GAAG,CAAA,KAAM,MAAA,EAAW;AAC5B,MAAA,IAAA,CAAK,GAAG,CAAA,GAAI,QAAA,CAAS,GAAG,CAAA;AACxB,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ;AAEA,IAAA,OAAO,SAAS,GAAG,CAAA;AAAA,EACrB;AAEA,EAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,EAAA,OAAO,OAAA;AACT,CAAA;AAEA,MAAM,uBAAA,GAA0B,CAAC,IAAA,EAAwB,KAAA,KAAkC;AAlG3F,EAAA,IAAA,EAAA;AAmGE,EAAA,MAAM,QAAA,GAAA,CAAY,EAAA,GAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAA,EAAA,GAAkD,EAAC;AAErE,EAAA,IAAI,QAAA,CAAS,eAAe,MAAA,EAAW;AACrC,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,QAAA,CAAS,kBAAkB,IAAA,EAAM;AACnC,IAAA,QAAA,CAAS,UAAA,GAAa,eAAA;AAAA,EACxB,WAAW,IAAA,CAAK,SAAA,KAAc,IAAA,IAAQ,KAAA,CAAM,cAAc,IAAA,EAAM;AAC9D,IAAA,QAAA,CAAS,UAAA,GAAa,OAAA;AAAA,EACxB;AAEA,EAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAClB,CAAA;;ACpGA,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,OAAO,IAAA,CAAK,OAAO,KAAK,CAAA;AAC1B;AAGA,SAAS,WAAW,KAAA,EAAwB;AAC1C,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,CAAA,GAAI,OAAO,KAAK,CAAA;AACtB,EAAA,IAAI,MAAM,EAAA,EAAI;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAOE,qBAAA,CAAK,KAAK,CAAA,EAAG,EAAE,WAAW,EAAA,EAAI,EAAE,OAAA,EAAQ;AACjD;AAGA,SAAS,SAAA,CAAU,OAAgB,KAAA,EAAuB;AACxD,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,IAAA,OAAO,QAAQ,MAAA,GAAS,OAAA;AAAA,EAC1B;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,WAAW,KAAK,CAAA;AAAA,EACzB;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAChC,MAAA,IAAI,OAAO,SAAS,QAAA,IAAY,IAAA,KAAS,QAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACrE,QAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,IAA+B,CAAA;AAC9D,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,UAAA,OAAO,CAAA,EAAG,UAAA,CAAW,KAAK,CAAC,CAAA,IAAA,CAAA;AAAA,QAC7B;AACA,QAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,CAAA,GAAI,QAAQ,CAAC,CAAA;AACtC,QAAA,MAAM,SAAA,GAAY,CAAA,EAAG,UAAA,CAAW,KAAK,CAAC,CAAA,EAAA,EAAK,UAAA,CAAW,QAAQ,CAAC,CAAA,EAAA,EAAK,SAAA,CAAU,QAAA,EAAU,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAA;AAClG,QAAA,MAAM,IAAA,GAAO,OAAA,CACV,KAAA,CAAM,CAAC,CAAA,CACP,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAC,CAAC,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA,EAAA,EAAK,SAAA,CAAU,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAE,CAAA;AACzF,QAAA,OAAO,CAAC,SAAA,EAAW,GAAG,IAAI,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,MACvC;AACA,MAAA,OAAO,CAAA,EAAG,WAAW,KAAK,CAAC,KAAK,SAAA,CAAU,IAAA,EAAM,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,IAC5D,CAAC,CAAA;AACD,IAAA,OAAO,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAAA,EAC/B;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,KAAgC,CAAA;AAC/D,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,KAAA,GAAQ,QAAQ,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,EAAG,UAAA,CAAW,KAAK,CAAC,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA,EAAA,EAAK,UAAU,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAE,CAAA;AACxG,IAAA,OAAO,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAAA,EAC/B;AACA,EAAA,OAAO,WAAW,KAAK,CAAA;AACzB;AAGA,SAAS,YAAY,KAAA,EAA6B;AA5ElD,EAAA,IAAA,EAAA;AA6EE,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,GAAA,CAAI,WAAA,EAAY;AAChC,EAAA,OACE,KAAA,CAAM,MAAA,KAAW,gBAAA,KAAqB,CAAA,CAAE,SAAS,MAAM,CAAA,IAAK,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA,IAAA,CAAA,CAAK,EAAA,GAAA,KAAA,CAAM,EAAA,KAAN,mBAAU,SAAA,MAAc,UAAA,CAAA;AAE7G;AAGA,SAAS,2BAA2B,KAAA,EAA6B;AApFjE,EAAA,IAAA,EAAA,EAAA,EAAA;AAqFE,EAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,MAAM,WAAA,EAAa;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAIA,EAAA,IAAA,CAAA,CAAI,EAAA,GAAA,KAAA,CAAM,IAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,aAAa,CAAA,CAAA,KAAM,KAAA,CAAM,MAAA,KAAW,MAAA,EAAQ;AACnF,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAA,CAAA,CAAI,EAAA,GAAA,KAAA,CAAM,OAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,IAAA,MAAS,aAAA,EAAe;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAGA,SAAS,kBAAkB,KAAA,EAA4B;AACrD,EAAA,IAAI,WAAA,CAAY,KAAK,CAAA,EAAG;AACtB,IAAA,OAAO,iBAAA;AAAA,EACT;AACA,EAAA,OAAO,QAAA;AACT;AAGA,SAAS,cAAc,KAAA,EAA6B;AAjHpD,EAAA,IAAA,EAAA;AAkHE,EAAA,IAAI,KAAA,CAAM,iBAAiB,MAAA,EAAW;AACpC,IAAA,OAAO,KAAA,CAAM,YAAA;AAAA,EACf;AAEA,EAAA,IAAA,CAAA,CAAI,EAAA,GAAA,KAAA,CAAM,OAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,OAAA,KAAW,MAAM,EAAA,CAAG,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,OAAO,KAAA,CAAM,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAA;AAAA,EAC7B;AACA,EAAA,QAAQ,MAAM,SAAA;AAAW,IACvB,KAAK,QAAA;AACH,MAAA,OAAO,EAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,CAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,EAAC;AAAA,IACV,KAAK,QAAA;AAAA,IACL,KAAK,KAAA;AACH,MAAA,OAAO,EAAC;AAAA,IACV;AACE,MAAA,OAAO,EAAA;AAAA;AAEb;AAMA,SAAS,YAAA,CAAa,OAAoB,MAAA,EAAwB;AA9IlE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+IE,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,KAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA,CAAM,GAAA;AACnC,EAAA,IAAI,IAAA,GAAO,KAAA;AACX,EAAA,IAAI,MAAM,QAAA,EAAU;AAClB,IAAA,IAAA,IAAQ,aAAA;AAAA,EACV;AACA,EAAA,IAAI,MAAM,WAAA,EAAa;AACrB,IAAA,IAAA,IAAQ,CAAA,QAAA,EAAM,MAAM,WAAW,CAAA,CAAA;AAAA,EACjC;AACA,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAE/B,EAAA,MAAM,OAAA,GAAA,CAAU,EAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,OAAA;AAC1B,EAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACjC,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAC1D,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,kBAAA,EAAqB,IAAI,CAAA,CAAE,CAAA;AAAA,EACjD;AAEA,EAAA,MAAM,iBAAA,GAAA,CAAoB,EAAA,GAAA,KAAA,CAAM,WAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,IAAA;AAAA,IAC3C,CAAC,CAAA,KAAwC,CAAA,CAAE,IAAA,KAAS;AAAA,GAAA;AAEtD,EAAA,IAAI,iBAAA,IAAqB,CAAC,OAAA,EAAS;AACjC,IAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACrE,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,kBAAA,EAAqB,IAAI,CAAA,CAAE,CAAA;AAAA,EACjD;AAEA,EAAA,IAAI,MAAM,SAAA,EAAW;AACnB,IAAA,KAAA,CAAM,KAAK,CAAA,EAAG,MAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,SAAS,CAAA,CAAE,CAAA;AAAA,EACvD;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAcO,SAAS,kBAAA,CACd,MAAA,EACA,MAAA,EACA,OAAA,EACQ;AA/LV,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAgME,EAAA,MAAM,aAAa,CAAC,MAAA;AACpB,EAAA,MAAM,YAAA,GAAA,CAAe,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,QAAA,KAAT,IAAA,GAAA,EAAA,GAAqB,UAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,MAAA;AAChB,EAAA,MAAM,OAAA,GAAU,QAAA;AAGhB,EAAA,MAAM,MAAA,GAAS,cAAc,MAAM,CAAA;AACnC,EAAA,MAAM,aAA4B,EAAC;AACnC,EAAA,MAAM,wBAA8E,EAAC;AACrF,EAAA,MAAM,8BAAoF,EAAC;AAC3F,EAAA,MAAM,2BAA0C,EAAC;AAEjD,EAAA,KAAA,MAAW,EAAE,KAAA,EAAO,MAAA,EAAO,IAAK,MAAA,EAAQ;AACtC,IAAA,MAAM,KAAoB,EAAC;AAC3B,IAAA,MAAM,KAAoB,EAAC;AAC3B,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAE1B,MAAA,IAAI,KAAA,CAAM,IAAA,KAAS,SAAA,KAAA,CAAa,EAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,OAAA,CAAA,IAAW,KAAA,CAAM,EAAA,CAAG,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAChF,QAAA,wBAAA,CAAyB,KAAK,KAAK,CAAA;AACnC,QAAA;AAAA,MACF;AACA,MAAA,IAAI,0BAAA,CAA2B,KAAK,CAAA,EAAG;AACrC,QAAA;AAAA,MACF;AACA,MAAA,QAAQ,MAAM,MAAA;AAAQ,QACpB,KAAK,MAAA;AACH,UAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AACrB,UAAA;AAAA,QACF,KAAK,UAAA;AACH,UAAA,EAAA,CAAG,KAAK,KAAK,CAAA;AACb,UAAA;AAAA,QACF,KAAK,gBAAA;AACH,UAAA,EAAA,CAAG,KAAK,KAAK,CAAA;AACb,UAAA;AAAA;AACJ,IACF;AACA,IAAA,IAAI,EAAA,CAAG,SAAS,CAAA,EAAG;AACjB,MAAA,qBAAA,CAAsB,IAAA,CAAK,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAI,CAAA;AAAA,IAClD;AACA,IAAA,IAAI,EAAA,CAAG,SAAS,CAAA,EAAG;AACjB,MAAA,2BAAA,CAA4B,IAAA,CAAK,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAI,CAAA;AAAA,IACxD;AAAA,EACF;AAEA,EAAA,MAAM,0BAA0B,2BAAA,CAA4B,OAAA,CAAQ,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAInF,EAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,MAAA,CAAO,OAAA,CAAQ,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,SAAS,CAAC,CAAA;AAC9E,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,CAAC,eAAA,CAAgB,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA,IAAK,CAAC,0BAAA,CAA2B,KAAK,CAAA,EAAG;AACnG,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,IACvB;AAAA,EACF;AAEA,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,EAAA,KAAA,CAAM,KAAK,cAAc,CAAA;AACzB,EAAA,KAAA,CAAM,KAAK,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAC,CAAC,WAAW,UAAA,CAAA,CAAW,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,SAAT,IAAA,GAAA,EAAA,GAAiB,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,SAAzB,IAAA,GAAA,EAAA,GAAiC,CAAA,GAAA,EAAM,OAAO,UAAU,CAAA,CAAE,CAAC,CAAA,CAAE,CAAA;AACjH,EAAA,KAAA,CAAM,KAAK,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,MAAA,CAAO,UAAU,CAAA,CAAE,CAAA;AAGjD,EAAA,IAAI,CAAC,UAAA,KAAc,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,GAAA,CAAA,EAAK;AAC9B,IAAA,KAAA,CAAM,IAAA,CAAK,GAAG,OAAO,CAAA,KAAA,EAAQ,WAAW,MAAA,CAAO,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,EACvD;AAGA,EAAA,MAAM,uCAAuB,IAAI,GAAA,CAAI,CAAC,MAAA,EAAQ,MAAA,EAAQ,KAAK,CAAC,CAAA;AAC5D,EAAA,KAAA,MAAW,SAAS,UAAA,EAAY;AAC9B,IAAA,IAAI,oBAAA,CAAqB,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA,EAAG;AACvC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,MAAM,MAAA,GAAS,MAAA,CAAO,MAAM,GAAG,CAAA,GAAI,cAAc,KAAK,CAAA;AAC5D,IAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,IAAA,EAAM;AACrC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,UAAA,IAAc,GAAA,KAAQ,KAAA,EAAO;AAChC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,KAAA,CAAM,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,IACzC;AACA,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,OAAO,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,EAAA,EAAK,SAAA,CAAU,GAAA,EAAK,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,EAC3D;AAIA,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,KAAA,MAAW,MAAM,wBAAA,EAA0B;AACzC,MAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,EAAA,CAAG,KAAA,KAAH,IAAA,GAAA,EAAA,GAAY,EAAA,CAAG,GAAA;AAC7B,MAAA,MAAM,OAAO,EAAA,CAAG,EAAA,CAAI,QAAS,GAAA,CAAI,CAAC,MAAM,CAAA,EAAG,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,KAAK,CAAA,CAAA,CAAG,CAAA,CAAE,KAAK,IAAI,CAAA;AACpF,MAAA,KAAA,CAAM,KAAK,CAAA,EAAG,OAAO,KAAK,KAAK,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAC1C,MAAA,IAAI,GAAG,WAAA,EAAa;AAClB,QAAA,KAAA,CAAM,KAAK,CAAA,EAAG,OAAO,CAAA,IAAA,EAAO,EAAA,CAAG,WAAW,CAAA,CAAE,CAAA;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAGA,EAAA,MAAM,mBAAA,uBAA0B,GAAA,EAAY;AAC5C,EAAA,MAAM,yBAAA,uBAAgC,GAAA,EAAY;AAGlD,EAAA,MAAM,iBAAiB,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,QAAA;AAC/B,EAAA,MAAM,qBAAA,GAAwB,sBAAsB,MAAA,GAAS,CAAA;AAC7D,EAAA,MAAM,qBAAA,GAAwB,CAAC,UAAA,IAAc,cAAA,IAAkB,OAAO,IAAA,CAAK,cAAc,EAAE,MAAA,GAAS,CAAA;AAEpG,EAAA,IAAI,yBAAyB,qBAAA,EAAuB;AAClD,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,OAAO,CAAA,SAAA,CAAW,CAAA;AAGhC,IAAA,KAAA,MAAW,EAAE,KAAA,EAAO,MAAA,EAAQ,WAAA,MAAiB,qBAAA,EAAuB;AAClE,MAAA,IAAI,YAAA,IAAgB,qBAAA,CAAsB,MAAA,GAAS,CAAA,EAAG;AACpD,QAAA,KAAA,CAAM,KAAK,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,KAAA,CAAM,KAAK,CAAA,IAAA,CAAM,CAAA;AAAA,MACjD;AACA,MAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,QAAA,MAAM,GAAA,GAAM,SAAS,cAAA,CAAe,MAAA,EAAQ,YAAY,KAAK,CAAA,GAAI,cAAc,KAAK,CAAA;AACpF,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,IAAA,EAAM;AACrC,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,UAAA,IAAc,KAAA,CAAM,iBAAiB,MAAA,IAAa,GAAA,KAAQ,MAAM,YAAA,EAAc;AACjF,UAAA;AAAA,QACF;AACA,QAAA,mBAAA,CAAoB,GAAA,CAAI,MAAM,GAAG,CAAA;AACjC,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA,KAAA,CAAM,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,QACzC;AACA,QAAA,MAAM,QAAA,GAAW,SAAA,CAAU,GAAA,EAAK,CAAC,CAAA;AACjC,QAAA,IAAI,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,EAAG;AAC7B,UAAA,KAAA,CAAM,IAAA,CAAK,GAAG,OAAO,CAAA,EAAG,MAAM,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAA;AAAA,QACjD,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,IAAA,CAAK,GAAG,OAAO,CAAA,EAAG,MAAM,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAIA,IAAA,IAAI,CAAC,cAAc,cAAA,EAAgB;AACjC,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,EAAG;AACvD,QAAA,IAAI,mBAAA,CAAoB,GAAA,CAAI,GAAG,CAAA,EAAG;AAChC,UAAA;AAAA,QACF;AACA,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,IAAA,EAAM;AACrC,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,SAAA,CAAU,GAAA,EAAK,CAAC,CAAA;AACjC,QAAA,IAAI,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,EAAG;AAC7B,UAAA,KAAA,CAAM,KAAK,CAAA,EAAG,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAA;AAAA,QAC3C,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,KAAK,CAAA,EAAG,OAAO,GAAG,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAMA,EAAA,MAAM,gBAAA,GAAA,CAAoB,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,gBAAA,KAAR,IAAA,GAAA,EAAA,GAA4B,EAAC;AACvD,EAAA,MAAM,qBAAqB,CAAC,UAAA,GAAa,uBAAA,CAAwB,cAAc,IAAI,EAAC;AAGpF,EAAA,MAAM,kBAAA,GAAqB,UAAA,GACvB,uBAAA,GACA,uBAAA,CAAwB,MAAA,CAAO,CAAC,CAAA,KAAM,gBAAA,CAAiB,CAAA,CAAE,GAAG,CAAA,KAAM,IAAI,CAAA;AAE1E,EAAA,IAAI,kBAAA,CAAmB,MAAA,GAAS,CAAA,IAAK,kBAAA,CAAmB,SAAS,CAAA,EAAG;AAClE,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,OAAO,CAAA,eAAA,CAAiB,CAAA;AACtC,IAAA,KAAA,MAAW,SAAS,kBAAA,EAAoB;AACtC,MAAA,yBAAA,CAA0B,GAAA,CAAI,MAAM,GAAG,CAAA;AACvC,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,KAAA,CAAM,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,MACzC;AACA,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,OAAO,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,EAAA,EAAK,iBAAA,CAAkB,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,IAClE;AAEA,IAAA,KAAA,MAAW,OAAO,kBAAA,EAAoB;AACpC,MAAA,IAAI,yBAAA,CAA0B,GAAA,CAAI,GAAG,CAAA,EAAG;AACtC,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,OAAO,CAAA,EAAG,GAAG,CAAA,QAAA,CAAU,CAAA;AAAA,IACvC;AAAA,EACF;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAMA,SAAS,wBAAwB,QAAA,EAAyD;AACxF,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,EAAC;AAAA,EACV;AACA,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,EAAG;AACvC,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,uBAAuB,CAAA;AAC/C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAA,CAAK,IAAA,CAAK,CAAA,eAAA,EAAkB,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,IACxC;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAGA,SAAS,cAAA,CAAe,MAAA,EAAiC,MAAA,EAAgB,KAAA,EAA6B;AACpG,EAAA,MAAM,MAAA,GAAS,OAAO,MAAM,CAAA;AAC5B,EAAA,IAAI,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACxC,IAAA,OAAQ,MAAA,CAAmC,MAAM,GAAG,CAAA;AAAA,EACtD;AACA,EAAA,OAAO,MAAA;AACT;AAOO,SAAS,4BAAA,CACd,IACA,MAAA,EACQ;AACR,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO,mBAAmB,MAAA,EAAQ,EAAA,EAAI,EAAE,QAAA,EAAU,OAAO,CAAA;AAAA,EAC3D;AAGA,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,EAAA,KAAA,CAAM,KAAK,cAAc,CAAA;AACzB,EAAA,KAAA,CAAM,KAAK,CAAA,UAAA,EAAa,UAAA,CAAW,EAAA,CAAG,IAAI,CAAC,CAAA,CAAE,CAAA;AAC7C,EAAA,IAAI,GAAG,GAAA,EAAK;AACV,IAAA,KAAA,CAAM,KAAK,CAAA,SAAA,EAAY,UAAA,CAAW,EAAA,CAAG,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,EAC7C;AACA,EAAA,KAAA,CAAM,KAAK,CAAA,UAAA,EAAa,UAAA,CAAW,EAAA,CAAG,IAAI,CAAC,CAAA,CAAE,CAAA;AAC7C,EAAA,IAAI,GAAG,GAAA,EAAK;AACV,IAAA,KAAA,CAAM,KAAK,CAAA,SAAA,EAAY,UAAA,CAAW,EAAA,CAAG,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,EAC7C;AACA,EAAA,IAAI,GAAG,QAAA,EAAU;AACf,IAAA,KAAA,CAAM,KAAK,CAAA,cAAA,EAAiB,UAAA,CAAW,EAAA,CAAG,QAAQ,CAAC,CAAA,CAAE,CAAA;AAAA,EACvD;AACA,EAAA,IAAI,GAAG,SAAA,EAAW;AAChB,IAAA,KAAA,CAAM,KAAK,qBAAqB,CAAA;AAAA,EAClC;AACA,EAAA,IAAI,GAAG,SAAA,EAAW;AAChB,IAAA,KAAA,CAAM,KAAK,qBAAqB,CAAA;AAChC,IAAA,IAAI,GAAG,aAAA,EAAe;AACpB,MAAA,KAAA,CAAM,KAAK,CAAA,mBAAA,EAAsB,UAAA,CAAW,EAAA,CAAG,aAAa,CAAC,CAAA,CAAE,CAAA;AAAA,IACjE;AAAA,EACF;AAEA,EAAA,MAAM,WAAW,EAAA,CAAG,QAAA;AACpB,EAAA,IAAI,YAAY,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,SAAS,CAAA,EAAG;AAChD,IAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACjD,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,GAAA,EAAK,CAAC,CAAA;AACjC,MAAA,IAAI,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,EAAG;AAC7B,QAAA,KAAA,CAAM,IAAA,CAAK,CAAA,MAAA,EAAS,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAA;AAAA,MACvC,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,IAAA,CAAK,CAAA,MAAA,EAAS,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAGA,EAAA,KAAA,CAAM,KAAK,sEAAiE,CAAA;AAC5E,EAAA,KAAA,CAAM,KAAK,0BAA0B,CAAA;AAErC,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAEA,SAAS,qBAAqB,EAAA,EAA0D;AAtdxF,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAudE,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,OAAO,IAAA,CAAA,CAAM,EAAA,GAAA,EAAA,CAAG,aAAH,IAAA,GAAA,EAAA,GAAe,EAA8B,CAAA,CAAE,IAAA,EAAK;AAAA,IAC/E,UAAA,EAAY;AAAA,MACV,uBAAO,GAAA,CAAI;AAAA,QACT,GAAG,MAAA,CAAO,IAAA,CAAA,CAAM,QAAG,cAAA,KAAH,IAAA,GAAA,EAAA,GAAqB,EAA8B,CAAA;AAAA,QACnE,GAAG,MAAA,CAAO,IAAA,CAAA,CAAM,QAAG,gBAAA,KAAH,IAAA,GAAA,EAAA,GAAuB,EAA8B;AAAA,OACtE;AAAA,MACD,IAAA;AAAK,GACT;AACF;AAEO,MAAM,YAAA,GAAe,CAAC,EAAA,EAA6B,OAAA,GAA6B,EAAC,KAAc;AAletG,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAmeE,EAAA,MAAM,EAAE,YAAA,EAAc,UAAA,EAAW,GAAI;AAAA,IACnC,GAAG,qBAAqB,EAAE,CAAA;AAAA,IAC1B,GAAG;AAAA,GACL;AACA,EAAA,MAAM,OAAgC,EAAC;AAEvC,EAAA,KAAA,MAAW,OAAO,kBAAA,EAAoB;AACpC,IAAA,IAAA,CAAK,GAAG,CAAA,GAAA,CAAI,EAAA,GAAA,EAAA,CAAG,GAAG,MAAN,IAAA,GAAA,EAAA,GAAW,EAAA;AAAA,EACzB;AAEA,EAAA,MAAM,QAAA,GAAA,CAAY,EAAA,GAAA,EAAA,CAAG,QAAA,KAAH,IAAA,GAAA,EAAA,GAAe,EAAC;AAClC,EAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,IAAA,MAAM,eAAwC,EAAC;AAC/C,IAAA,KAAA,MAAW,OAAO,YAAA,EAAc;AAC9B,MAAA,YAAA,CAAa,GAAG,CAAA,GAAA,CAAI,EAAA,GAAA,QAAA,CAAS,GAAG,MAAZ,IAAA,GAAA,EAAA,GAAiB,EAAA;AAAA,IACvC;AACA,IAAA,IAAA,CAAK,QAAA,GAAW,YAAA;AAAA,EAClB;AAEA,EAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,IAAA,MAAM,iBAAyC,EAAC;AAChD,IAAA,KAAA,MAAW,OAAO,UAAA,EAAY;AAC5B,MAAA,cAAA,CAAe,GAAG,CAAA,GAAI,UAAA;AAAA,IACxB;AACA,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AAAA,EACxB;AAEA,EAAA,OAAOA,qBAAA,CAAK,IAAA,CAAK,IAAA,EAAM,EAAE,SAAA,EAAW,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,CAAA,CAAE,OAAA,EAAQ;AACnF;AAEO,MAAM,cAAA,GAAiB,CAAC,QAAA,EAAmC,IAAA,KAA0C;AAjgB5G,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAkgBE,EAAA,MAAM,OAAA,GAAU,EAAE,GAAG,QAAA,EAAU,GAAG,IAAA,EAAK;AAEvC,EAAA,MAAM,UAAA,GAAA,CAAc,EAAA,GAAA,QAAA,CAAS,QAAA,KAAT,IAAA,GAAA,EAAA,GAAqB,EAAC;AAC1C,EAAA,MAAM,SAAA,GAAA,CAAa,EAAA,GAAA,OAAA,CAAQ,QAAA,KAAR,IAAA,GAAA,EAAA,GAAoB,EAAC;AACxC,EAAA,MAAM,eAAe,CAAC,uBAAO,GAAA,CAAI,CAAC,GAAG,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,EAAG,GAAG,OAAO,IAAA,CAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAA,EAAK;AAEhG,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,uBAAO,GAAA,CAAI;AAAA,MACT,GAAG,MAAA,CAAO,IAAA,CAAA,CAAM,cAAS,cAAA,KAAT,IAAA,GAAA,EAAA,GAA2B,EAA8B,CAAA;AAAA,MACzE,GAAG,MAAA,CAAO,IAAA,CAAA,CAAM,cAAS,gBAAA,KAAT,IAAA,GAAA,EAAA,GAA6B,EAA8B,CAAA;AAAA,MAC3E,GAAG,MAAA,CAAO,IAAA,CAAA,CAAM,aAAQ,cAAA,KAAR,IAAA,GAAA,EAAA,GAA0B,EAA8B,CAAA;AAAA,MACxE,GAAG,MAAA,CAAO,IAAA,CAAA,CAAM,aAAQ,gBAAA,KAAR,IAAA,GAAA,EAAA,GAA4B,EAA8B;AAAA,KAC3E;AAAA,IACD,IAAA,EAAK;AAEP,EAAA,MAAM,cAAc,YAAA,CAAa,QAAA,EAAU,EAAE,YAAA,EAAc,YAAY,CAAA;AACvE,EAAA,MAAM,cAAc,YAAA,CAAa,OAAA,EAAS,EAAE,YAAA,EAAc,YAAY,CAAA;AAEtE,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA;AACvC,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA;AACvC,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,SAAS,MAAM,CAAA;AACxD,EAAA,MAAM,YAAsB,EAAC;AAE7B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC/B,IAAA,MAAM,OAAA,GAAU,SAAS,CAAC,CAAA;AAC1B,IAAA,MAAM,OAAA,GAAU,SAAS,CAAC,CAAA;AAC1B,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,SAAA,CAAU,IAAA,CAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAC5B,MAAA;AAAA,IACF;AACA,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,SAAA,CAAU,IAAA,CAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAAA,IAC9B;AACA,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,SAAA,CAAU,IAAA,CAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAAA,IAC9B;AAAA,EACF;AAEA,EAAA,OAAO,WAAA,GAAc,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,GAAI,OAAA;AAC9C;;ACniBO,SAAS,oBAAoB,UAAA,EAA+C;AACjF,EAAA,MAAM,MAAA,GAASC,cAAQ,MAAM,iBAAA,CAAkB,UAAU,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AACxE,EAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,OAAO,IAAA,EAAK;AAC/C;AAEO,SAAS,kBAAkB,UAAA,EAAmD;AACnF,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,gBAAgB,UAAU,CAAA;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,234 +0,0 @@
1
- import React, { useState, useMemo, useCallback } from 'react';
2
- import { useStyles2, Spinner, Alert, LinkButton, Icon, Tooltip, Button, Select } from '@grafana/ui';
3
- import { formKey, getWatchedValue } from './config.js';
4
- import { SECURE_FIELD_CONFIGURED } from './datasource.js';
5
- import { isFieldRequired } from './fieldUtils.js';
6
- import { SchemaField } from './SchemaField.js';
7
- import { AuthorizationHeaderField } from './inputs/AuthorizationHeaderField.js';
8
- import { TabLayout } from './TabLayout.js';
9
- import { getWizardStyles } from './styles.js';
10
- import { useDatasourceConfigForm } from './hooks/useDatasourceConfigForm.js';
11
-
12
- function DatasourceConfigWizard(props) {
13
- const { schema, dsUid, dsName, onSuccess, onSaving, onRetest, healthError, renderActions, mode = "tab" } = props;
14
- const form = useDatasourceConfigForm({ schema, dsUid, onSuccess, onSaving });
15
- if (mode === "tab") {
16
- return /* @__PURE__ */ React.createElement(
17
- TabLayout,
18
- {
19
- form,
20
- schema,
21
- dsUid,
22
- dsName,
23
- onRetest,
24
- healthError,
25
- renderActions
26
- }
27
- );
28
- }
29
- return /* @__PURE__ */ React.createElement(
30
- WizardLayout,
31
- {
32
- form,
33
- schema,
34
- dsUid,
35
- dsName,
36
- onRetest,
37
- healthError,
38
- renderActions
39
- }
40
- );
41
- }
42
- function WizardLayout({ form, schema, dsUid, dsName, onRetest, healthError, renderActions }) {
43
- var _a, _b, _c;
44
- const styles = useStyles2(getWizardStyles);
45
- const [currentStep, setCurrentStep] = useState(0);
46
- const {
47
- resolvedGroups,
48
- fieldById,
49
- httpHeadersField,
50
- control,
51
- handleSubmit,
52
- trigger,
53
- errors,
54
- watchedValues,
55
- celContext,
56
- initializing,
57
- fetchError,
58
- submitting,
59
- submitError,
60
- readOnly,
61
- isFieldVisible,
62
- isFieldDisabled,
63
- onSubmit,
64
- setValue
65
- } = form;
66
- const arrowSteps = useMemo(() => {
67
- const requiredGroup = resolvedGroups.find((g) => g.group.id === "_required");
68
- if (!requiredGroup) {
69
- return new Set(resolvedGroups.map((_, i) => i));
70
- }
71
- const requiredFieldIds = new Set(requiredGroup.fields.map((f) => f.id));
72
- const steps = /* @__PURE__ */ new Set();
73
- for (let i = 0; i < resolvedGroups.length; i++) {
74
- const g = resolvedGroups[i];
75
- if (g.group.id === "_required" || g.fields.some((f) => !requiredFieldIds.has(f.id))) {
76
- steps.add(i);
77
- }
78
- }
79
- return steps;
80
- }, [resolvedGroups]);
81
- const currentResolved = resolvedGroups[currentStep];
82
- const isFirstStep = useMemo(() => {
83
- for (let i = 0; i < currentStep; i++) {
84
- if (arrowSteps.has(i)) {
85
- return false;
86
- }
87
- }
88
- return true;
89
- }, [currentStep, arrowSteps]);
90
- const isLastStep = useMemo(() => {
91
- for (let i = currentStep + 1; i < resolvedGroups.length; i++) {
92
- if (arrowSteps.has(i)) {
93
- return false;
94
- }
95
- }
96
- return true;
97
- }, [currentStep, arrowSteps, resolvedGroups.length]);
98
- const visibleFieldsForStep = useMemo(
99
- () => currentResolved ? currentResolved.fields.filter(isFieldVisible) : [],
100
- [currentResolved, isFieldVisible]
101
- );
102
- const currentGroupValid = useMemo(() => {
103
- if (!currentResolved) {
104
- return true;
105
- }
106
- for (const field of visibleFieldsForStep) {
107
- if (errors[formKey(field)]) {
108
- return false;
109
- }
110
- if (isFieldRequired(field, watchedValues, fieldById, celContext)) {
111
- const val = getWatchedValue(watchedValues, formKey(field));
112
- if (val === SECURE_FIELD_CONFIGURED) {
113
- continue;
114
- }
115
- if (val === void 0 || val === null || val === "") {
116
- return false;
117
- }
118
- }
119
- }
120
- return true;
121
- }, [currentResolved, errors, visibleFieldsForStep, watchedValues, fieldById, celContext]);
122
- const goNext = useCallback(async () => {
123
- if (!currentResolved) {
124
- return;
125
- }
126
- if (!readOnly) {
127
- const visibleKeys = visibleFieldsForStep.map((f) => formKey(f));
128
- const valid = await trigger(visibleKeys);
129
- if (!valid) {
130
- return;
131
- }
132
- }
133
- setCurrentStep((s) => {
134
- for (let i = s + 1; i < resolvedGroups.length; i++) {
135
- if (arrowSteps.has(i)) {
136
- return i;
137
- }
138
- }
139
- return s;
140
- });
141
- }, [currentResolved, visibleFieldsForStep, trigger, resolvedGroups.length, arrowSteps, readOnly]);
142
- const goPrev = useCallback(() => {
143
- setCurrentStep((s) => {
144
- for (let i = s - 1; i >= 0; i--) {
145
- if (arrowSteps.has(i)) {
146
- return i;
147
- }
148
- }
149
- return s;
150
- });
151
- }, [arrowSteps]);
152
- if (initializing) {
153
- return /* @__PURE__ */ React.createElement("div", { className: styles.container }, /* @__PURE__ */ React.createElement(Spinner, { size: "sm", inline: true }), " Loading configuration...");
154
- }
155
- if (fetchError) {
156
- return /* @__PURE__ */ React.createElement("div", { className: styles.container }, /* @__PURE__ */ React.createElement(Alert, { severity: "error", title: "Failed to load configuration" }, fetchError), /* @__PURE__ */ React.createElement("div", { className: styles.buttons }, /* @__PURE__ */ React.createElement(
157
- LinkButton,
158
- {
159
- variant: "secondary",
160
- size: "sm",
161
- icon: "external-link-alt",
162
- href: `/connections/datasources/edit/${dsUid}`
163
- },
164
- "Open datasource settings"
165
- )));
166
- }
167
- const allDisabled = submitting || readOnly;
168
- if (resolvedGroups.length === 0) {
169
- return null;
170
- }
171
- const currentGroup = currentResolved == null ? void 0 : currentResolved.group;
172
- return /* @__PURE__ */ React.createElement("div", { className: styles.container }, submitting && /* @__PURE__ */ React.createElement("div", { className: styles.overlay }, /* @__PURE__ */ React.createElement(Spinner, { size: "sm" }), /* @__PURE__ */ React.createElement("span", null, "Saving & testing\u2026")), readOnly && /* @__PURE__ */ React.createElement("div", { className: styles.readOnlyBanner }, /* @__PURE__ */ React.createElement(Icon, { name: "lock", size: "xs" }), /* @__PURE__ */ React.createElement("span", null, "Read-only \u2014 managed externally")), /* @__PURE__ */ React.createElement("div", { className: styles.navBar }, currentGroup && /* @__PURE__ */ React.createElement(Tooltip, { content: (_a = currentGroup.description) != null ? _a : currentGroup.title }, /* @__PURE__ */ React.createElement("span", { className: styles.navTitle }, currentGroup.title, /* @__PURE__ */ React.createElement("span", { className: styles.stepCount }, currentStep + 1, "/", resolvedGroups.length))), /* @__PURE__ */ React.createElement("div", { className: styles.navActions }, /* @__PURE__ */ React.createElement(Tooltip, { content: isFirstStep ? "First step" : `Previous: ${(_b = resolvedGroups[currentStep - 1]) == null ? void 0 : _b.group.title}` }, /* @__PURE__ */ React.createElement(
173
- Button,
174
- {
175
- variant: "secondary",
176
- fill: "text",
177
- size: "sm",
178
- icon: "angle-left",
179
- "aria-label": "Previous",
180
- onClick: goPrev,
181
- disabled: isFirstStep || submitting,
182
- type: "button"
183
- }
184
- )), /* @__PURE__ */ React.createElement(
185
- Select,
186
- {
187
- options: resolvedGroups.map((g, i) => ({ label: g.group.title, value: i })),
188
- value: currentStep,
189
- onChange: (v) => {
190
- if (v) {
191
- setCurrentStep(v.value);
192
- }
193
- },
194
- disabled: submitting,
195
- width: 18
196
- }
197
- ), /* @__PURE__ */ React.createElement(Tooltip, { content: isLastStep ? "Last step" : `Next: ${(_c = resolvedGroups[currentStep + 1]) == null ? void 0 : _c.group.title}` }, /* @__PURE__ */ React.createElement(
198
- Button,
199
- {
200
- variant: isLastStep || !readOnly && !currentGroupValid ? "secondary" : "primary",
201
- size: "sm",
202
- icon: "angle-right",
203
- "aria-label": "Next",
204
- onClick: goNext,
205
- disabled: isLastStep || submitting,
206
- type: "button"
207
- }
208
- )))), currentResolved && /* @__PURE__ */ React.createElement("form", { onSubmit: handleSubmit(onSubmit), className: styles.form }, visibleFieldsForStep.map((field) => /* @__PURE__ */ React.createElement(
209
- SchemaField,
210
- {
211
- key: formKey(field),
212
- field,
213
- control,
214
- errors,
215
- disabled: allDisabled || isFieldDisabled(field),
216
- dsUid,
217
- watchedValues,
218
- fieldById,
219
- celContext,
220
- setValue
221
- }
222
- )), (currentResolved.group.id === "_required" || currentResolved.group.id === "auth") && httpHeadersField && /* @__PURE__ */ React.createElement(
223
- AuthorizationHeaderField,
224
- {
225
- headersFieldKey: formKey(httpHeadersField),
226
- control,
227
- disabled: allDisabled,
228
- watchedValues
229
- }
230
- ), submitError && /* @__PURE__ */ React.createElement(Alert, { severity: "error", title: "Error" }, submitError), /* @__PURE__ */ React.createElement("div", { className: styles.buttons }, readOnly ? /* @__PURE__ */ React.createElement(Button, { variant: "primary", size: "sm", icon: "sync", onClick: onRetest, type: "button" }, "Test") : /* @__PURE__ */ React.createElement(Button, { variant: "primary", size: "sm", disabled: submitting || !currentGroupValid, type: "submit" }, submitting ? "Saving..." : "Save & Test"), healthError && (renderActions == null ? void 0 : renderActions({ dsUid, dsName, dsType: schema.pluginType, healthError })))));
231
- }
232
-
233
- export { DatasourceConfigWizard };
234
- //# sourceMappingURL=DatasourceConfigWizard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DatasourceConfigWizard.js","sources":["../../../../../src/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.tsx"],"sourcesContent":["import React, { type ReactNode, useCallback, useMemo, useState } from 'react';\nimport { useStyles2, Button, LinkButton, Select, Icon, Alert, Tooltip, Spinner } from '@grafana/ui';\nimport type { DatasourceConfigSchema } from '../../../schema/schema';\nimport { formKey, getWatchedValue } from './config';\nimport { SECURE_FIELD_CONFIGURED } from './datasource';\nimport { isFieldRequired } from './fieldUtils';\nimport { SchemaField } from './SchemaField';\nimport { AuthorizationHeaderField } from './inputs/AuthorizationHeaderField';\nimport { TabLayout } from './TabLayout';\nimport { getWizardStyles } from './styles';\nimport { useDatasourceConfigForm } from './hooks/useDatasourceConfigForm';\n\nexport type DatasourceConfigWizardProps = {\n schema: DatasourceConfigSchema;\n dsUid: string;\n dsName: string;\n onSuccess: (status: string, message?: string) => void;\n onSaving?: (saving: boolean) => void;\n onRetest?: () => void;\n onFollowup?: (intent: string) => void;\n healthError?: string;\n mode?: 'tab' | 'wizard';\n /** Optional render prop for custom action buttons (e.g. analyze/troubleshoot). */\n renderActions?: (props: { dsUid: string; dsName: string; dsType: string; healthError?: string }) => ReactNode;\n};\n\nexport function DatasourceConfigWizard(props: DatasourceConfigWizardProps) {\n const { schema, dsUid, dsName, onSuccess, onSaving, onRetest, healthError, renderActions, mode = 'tab' } = props;\n\n const form = useDatasourceConfigForm({ schema, dsUid, onSuccess, onSaving });\n\n if (mode === 'tab') {\n return (\n <TabLayout\n form={form}\n schema={schema}\n dsUid={dsUid}\n dsName={dsName}\n onRetest={onRetest}\n healthError={healthError}\n renderActions={renderActions}\n />\n );\n }\n\n return (\n <WizardLayout\n form={form}\n schema={schema}\n dsUid={dsUid}\n dsName={dsName}\n onRetest={onRetest}\n healthError={healthError}\n renderActions={renderActions}\n />\n );\n}\n\ntype LayoutProps = {\n form: ReturnType<typeof useDatasourceConfigForm>;\n schema: DatasourceConfigSchema;\n dsUid: string;\n dsName: string;\n onRetest?: () => void;\n healthError?: string;\n renderActions?: (props: { dsUid: string; dsName: string; dsType: string; healthError?: string }) => ReactNode;\n};\n\nfunction WizardLayout({ form, schema, dsUid, dsName, onRetest, healthError, renderActions }: LayoutProps) {\n const styles = useStyles2(getWizardStyles);\n const [currentStep, setCurrentStep] = useState(0);\n\n const {\n resolvedGroups,\n fieldById,\n httpHeadersField,\n control,\n handleSubmit,\n trigger,\n errors,\n watchedValues,\n celContext,\n initializing,\n fetchError,\n submitting,\n submitError,\n readOnly,\n isFieldVisible,\n isFieldDisabled,\n onSubmit,\n setValue,\n } = form;\n\n const arrowSteps = useMemo(() => {\n const requiredGroup = resolvedGroups.find((g) => g.group.id === '_required');\n if (!requiredGroup) {\n return new Set(resolvedGroups.map((_, i) => i));\n }\n const requiredFieldIds = new Set(requiredGroup.fields.map((f) => f.id));\n const steps = new Set<number>();\n for (let i = 0; i < resolvedGroups.length; i++) {\n const g = resolvedGroups[i];\n if (g.group.id === '_required' || g.fields.some((f) => !requiredFieldIds.has(f.id))) {\n steps.add(i);\n }\n }\n return steps;\n }, [resolvedGroups]);\n\n const currentResolved = resolvedGroups[currentStep];\n\n const isFirstStep = useMemo(() => {\n for (let i = 0; i < currentStep; i++) {\n if (arrowSteps.has(i)) {\n return false;\n }\n }\n return true;\n }, [currentStep, arrowSteps]);\n\n const isLastStep = useMemo(() => {\n for (let i = currentStep + 1; i < resolvedGroups.length; i++) {\n if (arrowSteps.has(i)) {\n return false;\n }\n }\n return true;\n }, [currentStep, arrowSteps, resolvedGroups.length]);\n\n const visibleFieldsForStep = useMemo(\n () => (currentResolved ? currentResolved.fields.filter(isFieldVisible) : []),\n [currentResolved, isFieldVisible]\n );\n\n const currentGroupValid = useMemo(() => {\n if (!currentResolved) {\n return true;\n }\n for (const field of visibleFieldsForStep) {\n if (errors[formKey(field)]) {\n return false;\n }\n if (isFieldRequired(field, watchedValues, fieldById, celContext)) {\n const val = getWatchedValue(watchedValues, formKey(field));\n if (val === SECURE_FIELD_CONFIGURED) {\n continue;\n }\n if (val === undefined || val === null || val === '') {\n return false;\n }\n }\n }\n return true;\n }, [currentResolved, errors, visibleFieldsForStep, watchedValues, fieldById, celContext]);\n\n const goNext = useCallback(async () => {\n if (!currentResolved) {\n return;\n }\n if (!readOnly) {\n const visibleKeys = visibleFieldsForStep.map((f) => formKey(f));\n const valid = await trigger(visibleKeys);\n if (!valid) {\n return;\n }\n }\n setCurrentStep((s) => {\n for (let i = s + 1; i < resolvedGroups.length; i++) {\n if (arrowSteps.has(i)) {\n return i;\n }\n }\n return s;\n });\n }, [currentResolved, visibleFieldsForStep, trigger, resolvedGroups.length, arrowSteps, readOnly]);\n\n const goPrev = useCallback(() => {\n setCurrentStep((s) => {\n for (let i = s - 1; i >= 0; i--) {\n if (arrowSteps.has(i)) {\n return i;\n }\n }\n return s;\n });\n }, [arrowSteps]);\n\n if (initializing) {\n return (\n <div className={styles.container}>\n <Spinner size=\"sm\" inline /> Loading configuration...\n </div>\n );\n }\n\n if (fetchError) {\n return (\n <div className={styles.container}>\n <Alert severity=\"error\" title=\"Failed to load configuration\">\n {fetchError}\n </Alert>\n <div className={styles.buttons}>\n <LinkButton\n variant=\"secondary\"\n size=\"sm\"\n icon=\"external-link-alt\"\n href={`/connections/datasources/edit/${dsUid}`}\n >\n Open datasource settings\n </LinkButton>\n </div>\n </div>\n );\n }\n\n const allDisabled = submitting || readOnly;\n\n if (resolvedGroups.length === 0) {\n return null;\n }\n\n const currentGroup = currentResolved?.group;\n\n return (\n <div className={styles.container}>\n {submitting && (\n <div className={styles.overlay}>\n <Spinner size=\"sm\" />\n <span>Saving & testing…</span>\n </div>\n )}\n {readOnly && (\n <div className={styles.readOnlyBanner}>\n <Icon name=\"lock\" size=\"xs\" />\n <span>Read-only — managed externally</span>\n </div>\n )}\n <div className={styles.navBar}>\n {currentGroup && (\n <Tooltip content={currentGroup.description ?? currentGroup.title}>\n <span className={styles.navTitle}>\n {currentGroup.title}\n <span className={styles.stepCount}>\n {currentStep + 1}/{resolvedGroups.length}\n </span>\n </span>\n </Tooltip>\n )}\n <div className={styles.navActions}>\n <Tooltip content={isFirstStep ? 'First step' : `Previous: ${resolvedGroups[currentStep - 1]?.group.title}`}>\n <Button\n variant=\"secondary\"\n fill=\"text\"\n size=\"sm\"\n icon=\"angle-left\"\n aria-label=\"Previous\"\n onClick={goPrev}\n disabled={isFirstStep || submitting}\n type=\"button\"\n />\n </Tooltip>\n <Select\n options={resolvedGroups.map((g, i) => ({ label: g.group.title, value: i }))}\n value={currentStep}\n onChange={(v) => {\n if (v) {\n setCurrentStep(v.value!);\n }\n }}\n disabled={submitting}\n width={18}\n />\n <Tooltip content={isLastStep ? 'Last step' : `Next: ${resolvedGroups[currentStep + 1]?.group.title}`}>\n <Button\n variant={isLastStep || (!readOnly && !currentGroupValid) ? 'secondary' : 'primary'}\n size=\"sm\"\n icon=\"angle-right\"\n aria-label=\"Next\"\n onClick={goNext}\n disabled={isLastStep || submitting}\n type=\"button\"\n />\n </Tooltip>\n </div>\n </div>\n\n {currentResolved && (\n <form onSubmit={handleSubmit(onSubmit)} className={styles.form}>\n {visibleFieldsForStep.map((field) => (\n <SchemaField\n key={formKey(field)}\n field={field}\n control={control}\n errors={errors}\n disabled={allDisabled || isFieldDisabled(field)}\n dsUid={dsUid}\n watchedValues={watchedValues}\n fieldById={fieldById}\n celContext={celContext}\n setValue={setValue}\n />\n ))}\n\n {(currentResolved.group.id === '_required' || currentResolved.group.id === 'auth') && httpHeadersField && (\n <AuthorizationHeaderField\n headersFieldKey={formKey(httpHeadersField)}\n control={control}\n disabled={allDisabled}\n watchedValues={watchedValues}\n />\n )}\n\n {submitError && (\n <Alert severity=\"error\" title=\"Error\">\n {submitError}\n </Alert>\n )}\n\n <div className={styles.buttons}>\n {readOnly ? (\n <Button variant=\"primary\" size=\"sm\" icon=\"sync\" onClick={onRetest} type=\"button\">\n Test\n </Button>\n ) : (\n <Button variant=\"primary\" size=\"sm\" disabled={submitting || !currentGroupValid} type=\"submit\">\n {submitting ? 'Saving...' : 'Save & Test'}\n </Button>\n )}\n {healthError && renderActions?.({ dsUid, dsName, dsType: schema.pluginType, healthError })}\n </div>\n </form>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import React, { Component } from 'react';
2
- import { Alert } from '@grafana/ui';
3
-
4
- var __defProp$2 = Object.defineProperty;
5
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, key + "" , value);
7
- class DatasourceErrorBoundary extends Component {
8
- constructor() {
9
- super(...arguments);
10
- __publicField$2(this, "state", { error: null });
11
- }
12
- static getDerivedStateFromError(error) {
13
- return { error };
14
- }
15
- componentDidCatch(error, info) {
16
- console.error("[DatasourceConfigWizard] Caught error:", error, info.componentStack);
17
- }
18
- render() {
19
- if (this.state.error) {
20
- return /* @__PURE__ */ React.createElement(Alert, { severity: "warning", title: "Configuration wizard unavailable" }, "Could not load the configuration wizard", this.props.dsName ? ` for ${this.props.dsName}` : "", ". Use the Settings link to configure this datasource manually.");
21
- }
22
- return this.props.children;
23
- }
24
- }
25
-
26
- export { DatasourceErrorBoundary };
27
- //# sourceMappingURL=DatasourceErrorBoundary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DatasourceErrorBoundary.js","sources":["../../../../../src/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.tsx"],"sourcesContent":["import React, { Component, type ReactNode, type ErrorInfo } from 'react';\nimport { Alert } from '@grafana/ui';\n\n/** Lightweight error boundary scoped to datasource config widgets — won't crash the host UI. */\nexport class DatasourceErrorBoundary extends Component<\n { children: ReactNode; dsName?: string },\n { error: Error | null }\n> {\n state: { error: Error | null } = { error: null };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error('[DatasourceConfigWizard] Caught error:', error, info.componentStack);\n }\n\n render() {\n if (this.state.error) {\n return (\n <Alert severity=\"warning\" title=\"Configuration wizard unavailable\">\n Could not load the configuration wizard\n {this.props.dsName ? ` for ${this.props.dsName}` : ''}. Use the Settings link to configure this datasource\n manually.\n </Alert>\n );\n }\n return this.props.children;\n }\n}\n"],"names":["__publicField"],"mappings":";;;;;;AAIO,MAAM,gCAAgC,SAAA,CAG3C;AAAA,EAHK,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAIL,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAiC,EAAE,OAAO,IAAA,EAAK,CAAA;AAAA,EAAA;AAAA,EAE/C,OAAO,yBAAyB,KAAA,EAAc;AAC5C,IAAA,OAAO,EAAE,KAAA,EAAM;AAAA,EACjB;AAAA,EAEA,iBAAA,CAAkB,OAAc,IAAA,EAAiB;AAC/C,IAAA,OAAA,CAAQ,KAAA,CAAM,wCAAA,EAA0C,KAAA,EAAO,IAAA,CAAK,cAAc,CAAA;AAAA,EACpF;AAAA,EAEA,MAAA,GAAS;AACP,IAAA,IAAI,IAAA,CAAK,MAAM,KAAA,EAAO;AACpB,MAAA,2CACG,KAAA,EAAA,EAAM,QAAA,EAAS,SAAA,EAAU,KAAA,EAAM,sCAAmC,yCAAA,EAEhE,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,QAAQ,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA,CAAA,GAAK,IAAG,gEAExD,CAAA;AAAA,IAEJ;AACA,IAAA,OAAO,KAAK,KAAA,CAAM,QAAA;AAAA,EACpB;AACF;;;;"}