ydb-embedded-ui 6.12.0 → 6.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. package/dist/components/AutoRefreshControl/i18n/index.d.ts +1 -1
  2. package/dist/components/ButtonWithConfirmDialog/ButtonWithConfirmDialog.d.ts +3 -2
  3. package/dist/components/ButtonWithConfirmDialog/ButtonWithConfirmDialog.js +9 -5
  4. package/dist/components/CriticalActionDialog/CriticalActionDialog.d.ts +5 -3
  5. package/dist/components/CriticalActionDialog/CriticalActionDialog.js +8 -7
  6. package/dist/components/CriticalActionDialog/CriticalActionDialog.scss +1 -1
  7. package/dist/components/CriticalActionDialog/i18n/en.json +1 -0
  8. package/dist/components/CriticalActionDialog/i18n/index.d.ts +1 -1
  9. package/dist/components/Errors/PageError/PageError.d.ts +11 -0
  10. package/dist/components/Errors/PageError/PageError.js +19 -0
  11. package/dist/components/Errors/i18n/en.json +2 -1
  12. package/dist/components/Errors/i18n/index.d.ts +1 -1
  13. package/dist/components/Errors/i18n/ru.json +2 -1
  14. package/dist/components/Fullscreen/Fullscreen.d.ts +1 -1
  15. package/dist/components/Fullscreen/Fullscreen.js +34 -27
  16. package/dist/components/Fullscreen/Fullscreen.scss +16 -8
  17. package/dist/components/Graph/Graph.d.ts +13 -0
  18. package/dist/components/Graph/Graph.js +41 -0
  19. package/dist/components/LabelWithPopover/LabelWithPopover.d.ts +4 -1
  20. package/dist/components/LabelWithPopover/LabelWithPopover.js +1 -1
  21. package/dist/components/Loader/Loader.d.ts +2 -1
  22. package/dist/components/Loader/Loader.js +6 -1
  23. package/dist/components/LoaderWrapper/LoaderWrapper.d.ts +10 -0
  24. package/dist/components/LoaderWrapper/LoaderWrapper.js +8 -0
  25. package/dist/components/MetricChart/reducer.d.ts +2 -2
  26. package/dist/components/PDiskInfo/PDiskInfo.d.ts +2 -2
  27. package/dist/components/PDiskInfo/PDiskInfo.js +9 -6
  28. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  29. package/dist/components/ProgressViewer/ProgressViewer.js +3 -0
  30. package/dist/components/QueryExecutionStatus/QueryExecutionStatus.js +13 -3
  31. package/dist/components/QueryExecutionStatus/QueryExecutionStatus.scss +4 -0
  32. package/dist/components/QuerySettingsDescription/QuerySettingsDescription.d.ts +7 -0
  33. package/dist/components/QuerySettingsDescription/QuerySettingsDescription.js +8 -0
  34. package/dist/components/QuerySettingsDescription/QuerySettingsDescription.scss +8 -0
  35. package/dist/components/QuerySettingsDescription/index.d.ts +1 -0
  36. package/dist/components/QuerySettingsDescription/index.js +1 -0
  37. package/dist/components/VDisk/VDisk.js +3 -4
  38. package/dist/components/VDiskInfo/VDiskInfo.d.ts +2 -2
  39. package/dist/components/VDiskInfo/VDiskInfo.js +4 -2
  40. package/dist/containers/App/Content.js +15 -19
  41. package/dist/containers/AsideNavigation/AsideNavigation.js +2 -1
  42. package/dist/containers/AsideNavigation/YdbInternalUser/YdbInternalUser.js +4 -4
  43. package/dist/containers/Authentication/Authentication.js +8 -10
  44. package/dist/containers/Authentication/utils.d.ts +8 -0
  45. package/dist/containers/Authentication/utils.js +15 -0
  46. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +6 -6
  47. package/dist/containers/Clusters/constants.d.ts +1 -1
  48. package/dist/containers/Heatmap/Heatmap.js +5 -4
  49. package/dist/containers/Node/Node.js +5 -7
  50. package/dist/containers/Node/Node.scss +4 -0
  51. package/dist/containers/Node/NodeStructure/NodeStructure.js +4 -4
  52. package/dist/containers/Node/NodeStructure/NodeStructure.scss +4 -0
  53. package/dist/containers/Node/NodeStructure/Pdisk.js +2 -2
  54. package/dist/containers/Nodes/Nodes.js +6 -8
  55. package/dist/containers/Nodes/getNodesColumns.js +6 -21
  56. package/dist/containers/PDiskPage/PDiskPage.js +19 -8
  57. package/dist/containers/PDiskPage/i18n/en.json +1 -0
  58. package/dist/containers/PDiskPage/i18n/index.d.ts +1 -1
  59. package/dist/containers/Storage/PDisk/PDisk.js +3 -4
  60. package/dist/containers/Storage/Storage.js +4 -6
  61. package/dist/containers/Tablet/Tablet.js +2 -2
  62. package/dist/containers/Tablet/TabletControls/TabletControls.js +2 -1
  63. package/dist/containers/Tablets/Tablets.js +3 -5
  64. package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.js +2 -5
  65. package/dist/containers/Tenant/Diagnostics/Describe/Describe.js +10 -13
  66. package/dist/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.scss +1 -0
  67. package/dist/containers/Tenant/Diagnostics/Network/Network.js +8 -11
  68. package/dist/containers/Tenant/Diagnostics/Network/Network.scss +1 -0
  69. package/dist/containers/Tenant/Diagnostics/Overview/Overview.d.ts +1 -2
  70. package/dist/containers/Tenant/Diagnostics/Overview/Overview.js +3 -5
  71. package/dist/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js +3 -4
  72. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js +1 -4
  73. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.js +3 -3
  74. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/index.d.ts +1 -1
  75. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +4 -3
  76. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +4 -3
  77. package/dist/containers/Tenant/Query/ExecuteResult/ExecuteResult.d.ts +2 -2
  78. package/dist/containers/Tenant/Query/ExecuteResult/ExecuteResult.js +56 -20
  79. package/dist/containers/Tenant/Query/ExecuteResult/ExecuteResult.scss +10 -6
  80. package/dist/containers/Tenant/Query/ExecuteResult/i18n/en.json +7 -0
  81. package/dist/containers/Tenant/Query/ExecuteResult/i18n/index.d.ts +2 -0
  82. package/dist/containers/Tenant/Query/ExecuteResult/i18n/index.js +4 -0
  83. package/dist/containers/Tenant/Query/ExecuteResult/utils.d.ts +18 -0
  84. package/dist/containers/Tenant/Query/ExecuteResult/utils.js +36 -0
  85. package/dist/containers/Tenant/Query/ExplainResult/ExplainResult.d.ts +23 -1
  86. package/dist/containers/Tenant/Query/ExplainResult/ExplainResult.js +56 -111
  87. package/dist/containers/Tenant/Query/ExplainResult/ExplainResult.scss +1 -30
  88. package/dist/containers/Tenant/Query/ExplainResult/components/Ast/Ast.d.ts +7 -0
  89. package/dist/containers/Tenant/Query/ExplainResult/components/Ast/Ast.js +18 -0
  90. package/dist/containers/Tenant/Query/ExplainResult/components/Ast/Ast.scss +8 -0
  91. package/dist/containers/Tenant/Query/ExplainResult/components/Graph/Graph.d.ts +8 -0
  92. package/dist/containers/Tenant/Query/ExplainResult/components/Graph/Graph.js +14 -0
  93. package/dist/containers/Tenant/Query/ExplainResult/components/Graph/Graph.scss +14 -0
  94. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/MetricsCell.d.ts +6 -0
  95. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/MetricsCell.js +11 -0
  96. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/OperationCell.d.ts +13 -0
  97. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/OperationCell.js +48 -0
  98. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/OperationParams.d.ts +6 -0
  99. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/OperationParams.js +66 -0
  100. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/SimplifiedPlan.d.ts +7 -0
  101. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/SimplifiedPlan.js +100 -0
  102. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/SimplifiedPlan.scss +128 -0
  103. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/types.d.ts +5 -0
  104. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/utils.d.ts +5 -0
  105. package/dist/containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/utils.js +59 -0
  106. package/dist/containers/Tenant/Query/ExplainResult/components/TextExplain/TextExplain.d.ts +8 -0
  107. package/dist/containers/Tenant/Query/ExplainResult/components/TextExplain/TextExplain.js +11 -0
  108. package/dist/containers/Tenant/Query/ExplainResult/components/TextExplain/TextExplain.scss +14 -0
  109. package/dist/containers/Tenant/Query/ExplainResult/i18n/en.json +8 -0
  110. package/dist/containers/Tenant/Query/ExplainResult/i18n/index.d.ts +2 -0
  111. package/dist/containers/Tenant/Query/ExplainResult/i18n/index.js +4 -0
  112. package/dist/containers/Tenant/Query/Preview/Preview.js +2 -3
  113. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.js +1 -19
  114. package/dist/containers/Tenant/Query/QueryDuration/QueryDuration.js +1 -1
  115. package/dist/containers/Tenant/Query/QueryDuration/QueryDuration.scss +11 -0
  116. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.d.ts +1 -1
  117. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +91 -95
  118. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +4 -6
  119. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +18 -49
  120. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.d.ts +2 -0
  121. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.js +5 -0
  122. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.d.ts +1 -0
  123. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.js +42 -0
  124. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.d.ts +5 -0
  125. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.js +19 -0
  126. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.d.ts +1 -0
  127. package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.js +56 -0
  128. package/dist/containers/Tenant/Query/QuerySettingsBanner/QuerySettingsBanner.d.ts +2 -0
  129. package/dist/containers/Tenant/Query/QuerySettingsBanner/QuerySettingsBanner.js +12 -0
  130. package/dist/containers/Tenant/Query/QuerySettingsBanner/QuerySettingsBanner.scss +3 -0
  131. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.js +20 -23
  132. package/dist/containers/Tenant/Query/QuerySettingsDialog/constants.d.ts +123 -7
  133. package/dist/containers/Tenant/Query/QuerySettingsDialog/constants.js +32 -10
  134. package/dist/containers/Tenant/Query/i18n/en.json +3 -1
  135. package/dist/containers/Tenant/Query/i18n/index.d.ts +1 -1
  136. package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.js +6 -6
  137. package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +5 -2
  138. package/dist/containers/Tenant/Schema/SchemaViewer/columns.d.ts +2 -1
  139. package/dist/containers/Tenant/Schema/SchemaViewer/columns.js +13 -1
  140. package/dist/containers/Tenant/Schema/SchemaViewer/i18n/en.json +1 -0
  141. package/dist/containers/Tenant/Schema/SchemaViewer/i18n/index.d.ts +1 -1
  142. package/dist/containers/Tenant/Schema/SchemaViewer/prepareData.js +3 -2
  143. package/dist/containers/Tenant/Schema/SchemaViewer/types.d.ts +1 -0
  144. package/dist/containers/Tenant/Tenant.js +4 -8
  145. package/dist/containers/Tenant/utils/schemaActions.d.ts +2 -2
  146. package/dist/containers/Tenant/utils/schemaActions.js +2 -2
  147. package/dist/containers/Tenants/Tenants.js +4 -7
  148. package/dist/containers/UserSettings/i18n/en.json +3 -5
  149. package/dist/containers/UserSettings/i18n/index.d.ts +1 -1
  150. package/dist/containers/UserSettings/settings.d.ts +2 -3
  151. package/dist/containers/UserSettings/settings.js +17 -23
  152. package/dist/containers/VDiskPage/VDiskPage.js +27 -13
  153. package/dist/containers/VDiskPage/i18n/en.json +1 -0
  154. package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
  155. package/dist/services/api.d.ts +21 -8
  156. package/dist/services/api.js +29 -42
  157. package/dist/services/settings.d.ts +11 -4
  158. package/dist/services/settings.js +7 -6
  159. package/dist/store/configureStore.d.ts +7 -7
  160. package/dist/store/defaultStore.d.ts +3 -3
  161. package/dist/store/reducers/api.d.ts +1 -1
  162. package/dist/store/reducers/api.js +1 -1
  163. package/dist/store/reducers/authentication/authentication.d.ts +37 -24
  164. package/dist/store/reducers/authentication/authentication.js +77 -57
  165. package/dist/store/reducers/authentication/types.d.ts +0 -8
  166. package/dist/store/reducers/capabilities/capabilities.d.ts +106 -0
  167. package/dist/store/reducers/capabilities/capabilities.js +22 -0
  168. package/dist/store/reducers/capabilities/hooks.d.ts +2 -0
  169. package/dist/store/reducers/capabilities/hooks.js +13 -0
  170. package/dist/store/reducers/cluster/cluster.d.ts +2 -2
  171. package/dist/store/reducers/clusterNodes/clusterNodes.d.ts +2 -2
  172. package/dist/store/reducers/clusters/clusters.d.ts +2 -2
  173. package/dist/store/reducers/describe.d.ts +2 -2
  174. package/dist/store/reducers/executeQuery.d.ts +7 -14
  175. package/dist/store/reducers/executeQuery.js +19 -14
  176. package/dist/store/reducers/executeTopQueries/executeTopQueries.d.ts +2 -2
  177. package/dist/store/reducers/explainQuery/explainQuery.d.ts +5 -4
  178. package/dist/store/reducers/explainQuery/explainQuery.js +14 -4
  179. package/dist/store/reducers/explainQuery/types.d.ts +13 -1
  180. package/dist/store/reducers/explainQuery/utils.js +7 -2
  181. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +58 -58
  182. package/dist/store/reducers/heatmap.d.ts +2 -2
  183. package/dist/store/reducers/hotKeys/hotKeys.d.ts +2 -2
  184. package/dist/store/reducers/index.d.ts +6 -6
  185. package/dist/store/reducers/network/network.d.ts +2 -2
  186. package/dist/store/reducers/node/node.d.ts +3 -3
  187. package/dist/store/reducers/node/selectors.d.ts +1 -1
  188. package/dist/store/reducers/nodes/nodes.d.ts +3 -3
  189. package/dist/store/reducers/nodesList.d.ts +3 -3
  190. package/dist/store/reducers/overview/overview.d.ts +2 -2
  191. package/dist/store/reducers/partitions/partitions.d.ts +2 -2
  192. package/dist/store/reducers/pdisk/pdisk.d.ts +3 -3
  193. package/dist/store/reducers/preview.d.ts +2 -2
  194. package/dist/store/reducers/schema/schema.d.ts +3 -3
  195. package/dist/store/reducers/schema/schema.js +10 -3
  196. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +2 -2
  197. package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +2 -2
  198. package/dist/store/reducers/storage/storage.d.ts +3 -3
  199. package/dist/store/reducers/tablet.d.ts +3 -3
  200. package/dist/store/reducers/tablets.d.ts +13 -13
  201. package/dist/store/reducers/tabletsFilters.d.ts +1 -1
  202. package/dist/store/reducers/tenant/tenant.d.ts +2 -2
  203. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +2 -2
  204. package/dist/store/reducers/tenantOverview/topNodes/topNodes.d.ts +2 -2
  205. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +2 -2
  206. package/dist/store/reducers/tenantOverview/topStorageGroups/topStorageGroups.d.ts +2 -2
  207. package/dist/store/reducers/tenants/selectors.d.ts +31 -30
  208. package/dist/store/reducers/tenants/selectors.js +8 -2
  209. package/dist/store/reducers/tenants/tenants.d.ts +2 -2
  210. package/dist/store/reducers/topic.d.ts +44 -44
  211. package/dist/store/reducers/vdisk/vdisk.d.ts +2 -2
  212. package/dist/store/reducers/viewSchema/viewSchema.d.ts +2 -2
  213. package/dist/styles/mixins.scss +2 -0
  214. package/dist/types/api/capabilities.d.ts +7 -0
  215. package/dist/types/api/capabilities.js +1 -0
  216. package/dist/types/api/modifyDisk.d.ts +8 -0
  217. package/dist/types/api/modifyDisk.js +1 -0
  218. package/dist/types/api/query.d.ts +39 -3
  219. package/dist/types/api/query.js +9 -1
  220. package/dist/types/api/schema/shared.d.ts +8 -0
  221. package/dist/types/store/query.d.ts +7 -0
  222. package/dist/utils/__test__/prepareQueryExplain.test.d.ts +1 -0
  223. package/dist/utils/__test__/prepareQueryExplain.test.js +115 -0
  224. package/dist/utils/constants.d.ts +13 -4
  225. package/dist/utils/constants.js +15 -4
  226. package/dist/utils/dataFormatters/dataFormatters.d.ts +0 -1
  227. package/dist/utils/dataFormatters/dataFormatters.js +1 -4
  228. package/dist/utils/hooks/index.d.ts +2 -1
  229. package/dist/utils/hooks/index.js +2 -1
  230. package/dist/utils/hooks/useChangedQuerySettings.d.ts +10 -0
  231. package/dist/utils/hooks/useChangedQuerySettings.js +46 -0
  232. package/dist/utils/hooks/useDelayed.d.ts +1 -0
  233. package/dist/utils/hooks/useDelayed.js +13 -0
  234. package/dist/utils/hooks/useEventHandler.d.ts +6 -0
  235. package/dist/utils/hooks/useEventHandler.js +17 -0
  236. package/dist/utils/hooks/useLastQueryExecutionSettings.d.ts +2 -0
  237. package/dist/utils/hooks/useLastQueryExecutionSettings.js +5 -0
  238. package/dist/utils/hooks/useQueryExecutionSettings.d.ts +8 -0
  239. package/dist/utils/hooks/useQueryExecutionSettings.js +15 -0
  240. package/dist/utils/prepareQueryExplain.d.ts +3 -1
  241. package/dist/utils/prepareQueryExplain.js +54 -2
  242. package/dist/utils/query.js +1 -0
  243. package/dist/utils/query.test.js +3 -0
  244. package/dist/utils/utils.d.ts +8 -7
  245. package/dist/utils/utils.js +23 -11
  246. package/package.json +4 -2
  247. package/dist/containers/Tenant/Query/ExplainResult/utils.d.ts +0 -2
  248. package/dist/containers/Tenant/Query/ExplainResult/utils.js +0 -4
  249. package/dist/store/utils.d.ts +0 -23
  250. package/dist/store/utils.js +0 -49
  251. package/dist/types/api/restartPDisk.d.ts +0 -4
  252. package/dist/utils/hooks/useQueryModes.d.ts +0 -2
  253. package/dist/utils/hooks/useQueryModes.js +0 -5
  254. /package/dist/{types/api/restartPDisk.js → containers/Tenant/Query/ExplainResult/components/SimplifiedPlan/types.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { CircleInfo, Flask, PencilToSquare, StarFill } from '@gravity-ui/icons';
3
3
  import { createNextState } from '@reduxjs/toolkit';
4
- import { AUTOCOMPLETE_ON_ENTER, BINARY_DATA_IN_PLAIN_TEXT_DISPLAY, ENABLE_AUTOCOMPLETE, INVERTED_DISKS_KEY, LANGUAGE_KEY, QUERY_SETTINGS, QUERY_USE_MULTI_SCHEMA_KEY, THEME_KEY, USE_CLUSTER_BALANCER_AS_BACKEND_KEY, USE_DIRECTORY_OPERATIONS, USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY, USE_PAGINATED_TABLES_KEY, USE_SEPARATE_DISKS_PAGES_KEY, } from '../../utils/constants';
4
+ import { AUTOCOMPLETE_ON_ENTER, BINARY_DATA_IN_PLAIN_TEXT_DISPLAY, ENABLE_AUTOCOMPLETE, ENABLE_TRACING_LEVEL_KEY, INVERTED_DISKS_KEY, LANGUAGE_KEY, QUERY_USE_MULTI_SCHEMA_KEY, SHOW_DOMAIN_DATABASE_KEY, THEME_KEY, USE_CLUSTER_BALANCER_AS_BACKEND_KEY, USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY, USE_PAGINATED_TABLES_KEY, } from '../../utils/constants';
5
5
  import { Lang, defaultLang } from '../../utils/i18n';
6
6
  import { ClusterModeGuard } from '../ClusterModeGuard';
7
7
  import i18n from './i18n';
@@ -65,25 +65,20 @@ export const usePaginatedTables = {
65
65
  title: i18n('settings.usePaginatedTables.title'),
66
66
  description: i18n('settings.usePaginatedTables.description'),
67
67
  };
68
- export const useQuerySettings = {
69
- settingKey: QUERY_SETTINGS,
70
- title: i18n('settings.useQuerySettings.title'),
71
- description: i18n('settings.useQuerySettings.description'),
68
+ export const showDomainDatabase = {
69
+ settingKey: SHOW_DOMAIN_DATABASE_KEY,
70
+ title: i18n('settings.showDomainDatabase.title'),
71
+ };
72
+ export const enableTracingLevel = {
73
+ settingKey: ENABLE_TRACING_LEVEL_KEY,
74
+ title: i18n('settings.enableTracingLevel.title'),
75
+ description: i18n('settings.enableTracingLevel.description'),
72
76
  };
73
77
  export const queryUseMultiSchemaSetting = {
74
78
  settingKey: QUERY_USE_MULTI_SCHEMA_KEY,
75
79
  title: i18n('settings.queryUseMultiSchema.title'),
76
80
  description: i18n('settings.queryUseMultiSchema.description'),
77
81
  };
78
- export const useSeparateDisksPagesSetting = {
79
- settingKey: USE_SEPARATE_DISKS_PAGES_KEY,
80
- title: i18n('settings.useSeparateDisksPages.title'),
81
- description: i18n('settings.useSeparateDisksPages.description'),
82
- };
83
- export const useDirectoryActionsSetting = {
84
- settingKey: USE_DIRECTORY_OPERATIONS,
85
- title: i18n('settings.useDirectoryOperations.title'),
86
- };
87
82
  export const useClusterBalancerAsBackendSetting = {
88
83
  settingKey: USE_CLUSTER_BALANCER_AS_BACKEND_KEY,
89
84
  title: i18n('settings.useClusterBalancerAsBackend.title'),
@@ -107,23 +102,22 @@ export const interfaceVersionInfoField = {
107
102
  export const appearanceSection = {
108
103
  id: 'appearanceSection',
109
104
  title: i18n('section.appearance'),
110
- settings: [themeSetting, invertedDisksSetting, binaryDataInPlainTextDisplay],
105
+ settings: [
106
+ themeSetting,
107
+ invertedDisksSetting,
108
+ binaryDataInPlainTextDisplay,
109
+ showDomainDatabase,
110
+ ],
111
111
  };
112
112
  export const experimentsSection = {
113
113
  id: 'experimentsSection',
114
114
  title: i18n('section.experiments'),
115
- settings: [
116
- useNodesEndpointSetting,
117
- usePaginatedTables,
118
- queryUseMultiSchemaSetting,
119
- useSeparateDisksPagesSetting,
120
- useDirectoryActionsSetting,
121
- ],
115
+ settings: [useNodesEndpointSetting, usePaginatedTables, queryUseMultiSchemaSetting],
122
116
  };
123
117
  export const devSettingsSection = {
124
118
  id: 'devSettingsSection',
125
119
  title: i18n('section.dev-setting'),
126
- settings: [enableAutocompleteSetting, autocompleteOnEnterSetting],
120
+ settings: [enableAutocompleteSetting, autocompleteOnEnterSetting, enableTracingLevel],
127
121
  };
128
122
  export const aboutSettingsSection = {
129
123
  id: 'aboutSettingsSection',
@@ -8,11 +8,13 @@ import { StringParam, useQueryParams } from 'use-query-params';
8
8
  import { AutoRefreshControl } from '../../components/AutoRefreshControl/AutoRefreshControl';
9
9
  import { ButtonWithConfirmDialog } from '../../components/ButtonWithConfirmDialog/ButtonWithConfirmDialog';
10
10
  import { DiskPageTitle } from '../../components/DiskPageTitle/DiskPageTitle';
11
+ import { ResponseError } from '../../components/Errors/ResponseError';
11
12
  import { GroupInfo } from '../../components/GroupInfo/GroupInfo';
12
13
  import { InfoViewerSkeleton } from '../../components/InfoViewerSkeleton/InfoViewerSkeleton';
13
14
  import { PageMeta } from '../../components/PageMeta/PageMeta';
14
15
  import { VDiskWithDonorsStack } from '../../components/VDisk/VDiskWithDonorsStack';
15
16
  import { VDiskInfo } from '../../components/VDiskInfo/VDiskInfo';
17
+ import { selectIsUserAllowedToMakeChanges } from '../../store/reducers/authentication/authentication';
16
18
  import { setHeaderBreadcrumbs } from '../../store/reducers/header/header';
17
19
  import { selectNodesMap } from '../../store/reducers/nodesList';
18
20
  import { vDiskApi } from '../../store/reducers/vdisk/vdisk';
@@ -27,7 +29,7 @@ const vDiskPageCn = cn('ydb-vdisk-page');
27
29
  export function VDiskPage() {
28
30
  const dispatch = useTypedDispatch();
29
31
  const nodesMap = useTypedSelector(selectNodesMap);
30
- const { isUserAllowedToMakeChanges } = useTypedSelector((state) => state.authentication);
32
+ const isUserAllowedToMakeChanges = useTypedSelector(selectIsUserAllowedToMakeChanges);
31
33
  const [{ nodeId, pDiskId, vDiskSlotId }] = useQueryParams({
32
34
  nodeId: StringParam,
33
35
  pDiskId: StringParam,
@@ -40,25 +42,37 @@ export function VDiskPage() {
40
42
  const params = valueIsDefined(nodeId) && valueIsDefined(pDiskId) && valueIsDefined(vDiskSlotId)
41
43
  ? { nodeId, pDiskId, vDiskSlotId }
42
44
  : skipToken;
43
- const { currentData, isFetching, refetch } = vDiskApi.useGetVDiskDataQuery(params, {
45
+ const { currentData, isFetching, refetch, error } = vDiskApi.useGetVDiskDataQuery(params, {
44
46
  pollingInterval: autoRefreshInterval,
45
47
  });
46
48
  const loading = isFetching && currentData === undefined;
47
49
  const { vDiskData = {}, groupData } = currentData || {};
48
50
  const { NodeHost, NodeId, NodeType, NodeDC, PDiskId, PDiskType, Severity, VDiskId } = vDiskData;
49
- const handleEvictVDisk = async () => {
50
- const { GroupID, GroupGeneration, Ring, Domain, VDisk } = VDiskId || {};
51
- if (valueIsDefined(GroupID) &&
52
- valueIsDefined(GroupGeneration) &&
53
- valueIsDefined(Ring) &&
54
- valueIsDefined(Domain) &&
55
- valueIsDefined(VDisk)) {
56
- return window.api.evictVDisk({
51
+ const { GroupID, GroupGeneration, Ring, Domain, VDisk } = VDiskId || {};
52
+ const vDiskIdParamsDefined = valueIsDefined(GroupID) &&
53
+ valueIsDefined(GroupGeneration) &&
54
+ valueIsDefined(Ring) &&
55
+ valueIsDefined(Domain) &&
56
+ valueIsDefined(VDisk);
57
+ const handleEvictVDisk = async (isRetry) => {
58
+ if (vDiskIdParamsDefined) {
59
+ return window.api
60
+ .evictVDisk({
57
61
  groupId: GroupID,
58
62
  groupGeneration: GroupGeneration,
59
63
  failRealmIdx: Ring,
60
64
  failDomainIdx: Domain,
61
65
  vDiskIdx: VDisk,
66
+ force: isRetry,
67
+ })
68
+ .then((response) => {
69
+ if ((response === null || response === void 0 ? void 0 : response.result) === false) {
70
+ const err = {
71
+ statusText: response.error,
72
+ retryPossible: response.forceRetryPossible,
73
+ };
74
+ throw err;
75
+ }
62
76
  });
63
77
  }
64
78
  return undefined;
@@ -86,10 +100,10 @@ export function VDiskPage() {
86
100
  return (_jsx(DiskPageTitle, { entityName: vDiskPageKeyset('vdisk'), status: getSeverityColor(Severity), id: stringifyVdiskId(vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.VDiskId) }));
87
101
  };
88
102
  const renderControls = () => {
89
- return (_jsxs("div", { className: vDiskPageCn('controls'), children: [_jsxs(ButtonWithConfirmDialog, { onConfirmAction: handleEvictVDisk, onConfirmActionSuccess: handleAfterEvictVDisk, buttonDisabled: !VDiskId || !isUserAllowedToMakeChanges, buttonView: "normal", dialogContent: vDiskPageKeyset('evict-vdisk-dialog'), withPopover: true, popoverContent: vDiskPageKeyset('evict-vdisk-not-allowed'), popoverDisabled: isUserAllowedToMakeChanges, children: [_jsx(Icon, { data: ArrowsOppositeToDots }), vDiskPageKeyset('evict-vdisk-button')] }), _jsx(AutoRefreshControl, { className: vDiskPageCn('auto-refresh-control') })] }));
103
+ return (_jsxs("div", { className: vDiskPageCn('controls'), children: [_jsxs(ButtonWithConfirmDialog, { onConfirmAction: handleEvictVDisk, onConfirmActionSuccess: handleAfterEvictVDisk, buttonDisabled: !vDiskIdParamsDefined || !isUserAllowedToMakeChanges, buttonView: "normal", dialogContent: vDiskPageKeyset('evict-vdisk-dialog'), retryButtonText: vDiskPageKeyset('force-evict-vdisk-button'), withPopover: true, popoverContent: vDiskPageKeyset('evict-vdisk-not-allowed'), popoverDisabled: isUserAllowedToMakeChanges, children: [_jsx(Icon, { data: ArrowsOppositeToDots }), vDiskPageKeyset('evict-vdisk-button')] }), _jsx(AutoRefreshControl, { className: vDiskPageCn('auto-refresh-control') })] }));
90
104
  };
91
105
  const renderInfo = () => {
92
- return _jsx(VDiskInfo, { data: vDiskData, isVDiskPage: true });
106
+ return _jsx(VDiskInfo, { data: vDiskData });
93
107
  };
94
108
  const renderGroupInfo = () => {
95
109
  var _a;
@@ -104,7 +118,7 @@ export function VDiskPage() {
104
118
  if (loading) {
105
119
  return _jsx(InfoViewerSkeleton, { rows: 20 });
106
120
  }
107
- return (_jsxs(React.Fragment, { children: [renderInfo(), renderGroupInfo()] }));
121
+ return (_jsxs(React.Fragment, { children: [error ? _jsx(ResponseError, { error: error }) : null, renderInfo(), renderGroupInfo()] }));
108
122
  };
109
123
  return (_jsxs("div", { className: vDiskPageCn(null), children: [renderHelmet(), renderPageMeta(), renderPageTitle(), renderControls(), renderContent()] }));
110
124
  }
@@ -5,6 +5,7 @@
5
5
  "vdisk": "VDisk",
6
6
  "group": "Group",
7
7
  "evict-vdisk-button": "Evict VDisk",
8
+ "force-evict-vdisk-button": "Evict anyway",
8
9
  "evict-vdisk-dialog": "VDisk will be evicted. Do you want to proceed?",
9
10
  "evict-vdisk-not-allowed": "You don't have enough rights to evict VDisk"
10
11
  }
@@ -1 +1 @@
1
- export declare const vDiskPageKeyset: (key: "node" | "fqdn" | "group" | "pdisk" | "vdisk" | "evict-vdisk-button" | "evict-vdisk-dialog" | "evict-vdisk-not-allowed", params?: import("@gravity-ui/i18n").Params) => string;
1
+ export declare const vDiskPageKeyset: (key: "node" | "fqdn" | "group" | "pdisk" | "vdisk" | "evict-vdisk-button" | "force-evict-vdisk-button" | "evict-vdisk-dialog" | "evict-vdisk-not-allowed", params?: import("@gravity-ui/i18n").Params) => string;
@@ -4,19 +4,20 @@ import type { ComputeApiRequestParams, NodesApiRequestParams } from '../store/re
4
4
  import type { StorageApiRequestParams } from '../store/reducers/storage/types';
5
5
  import type { TMetaInfo } from '../types/api/acl';
6
6
  import type { TQueryAutocomplete } from '../types/api/autocomplete';
7
+ import type { CapabilitiesResponse } from '../types/api/capabilities';
7
8
  import type { TClusterInfo } from '../types/api/cluster';
8
9
  import type { TComputeInfo } from '../types/api/compute';
9
10
  import type { DescribeConsumerResult } from '../types/api/consumer';
10
11
  import type { HealthCheckAPIResponse } from '../types/api/healthcheck';
11
12
  import type { JsonHotKeysResponse } from '../types/api/hotkeys';
12
13
  import type { MetaClusters } from '../types/api/meta';
14
+ import type { ModifyDiskResponse } from '../types/api/modifyDisk';
13
15
  import type { TNetInfo } from '../types/api/netInfo';
14
16
  import type { TNodesInfo } from '../types/api/nodes';
15
17
  import type { TEvNodesInfo } from '../types/api/nodesList';
16
18
  import type { TEvPDiskStateResponse, TPDiskInfoResponse } from '../types/api/pdisk';
17
- import type { Actions, ErrorResponse, QueryAPIResponse, Schemas } from '../types/api/query';
19
+ import type { Actions, ErrorResponse, QueryAPIResponse, Schemas, Stats, Timeout, TracingLevel, TransactionMode } from '../types/api/query';
18
20
  import type { JsonRenderRequestParams, JsonRenderResponse } from '../types/api/render';
19
- import type { RestartPDiskResponse } from '../types/api/restartPDisk';
20
21
  import type { TEvDescribeSchemeResult } from '../types/api/schema';
21
22
  import type { TStorageInfo } from '../types/api/storage';
22
23
  import type { TEvSystemStateResponse } from '../types/api/systemState';
@@ -36,6 +37,7 @@ export declare class YdbEmbeddedAPI extends AxiosWrapper {
36
37
  DEFAULT_RETRIES_COUNT: number;
37
38
  constructor(options?: AxiosWrapperOptions);
38
39
  getPath(path: string): string;
40
+ getClusterCapabilities(): Promise<CapabilitiesResponse>;
39
41
  getClusterInfo(clusterName?: string, { concurrentId, signal }?: AxiosOptions): Promise<TClusterInfo>;
40
42
  getClusterNodes({ concurrentId, signal }?: AxiosOptions): Promise<TEvSystemStateResponse>;
41
43
  getNodeInfo(id?: string | number, { concurrentId, signal }?: AxiosOptions): Promise<TEvSystemStateResponse>;
@@ -104,13 +106,16 @@ export declare class YdbEmbeddedAPI extends AxiosWrapper {
104
106
  }, { concurrentId, signal }?: AxiosOptions): Promise<UnmergedTEvTabletStateResponse>;
105
107
  getNodesList({ concurrentId, signal }?: AxiosOptions): Promise<TEvNodesInfo>;
106
108
  getTenantsList({ concurrentId, signal }?: AxiosOptions): Promise<TTenants>;
107
- sendQuery<Action extends Actions, Schema extends Schemas = undefined>({ schema, ...params }: {
109
+ sendQuery<Action extends Actions, Schema extends Schemas = undefined>(params: {
108
110
  query?: string;
109
111
  database?: string;
110
112
  action?: Action;
111
- stats?: string;
112
113
  schema?: Schema;
113
114
  syntax?: QuerySyntax;
115
+ stats?: Stats;
116
+ tracingLevel?: TracingLevel;
117
+ transaction_mode?: TransactionMode;
118
+ timeout?: Timeout;
114
119
  }, { concurrentId, signal, withRetries }?: AxiosOptions): Promise<ErrorResponse | QueryAPIResponse<Action, Schema>>;
115
120
  getHotKeys({ path, database, enableSampling }: {
116
121
  path: string;
@@ -121,20 +126,28 @@ export declare class YdbEmbeddedAPI extends AxiosWrapper {
121
126
  database: string;
122
127
  maxLevel?: number;
123
128
  }, { concurrentId, signal }?: AxiosOptions): Promise<HealthCheckAPIResponse>;
124
- evictVDisk({ groupId, groupGeneration, failRealmIdx, failDomainIdx, vDiskIdx, }: {
129
+ evictVDisk({ groupId, groupGeneration, failRealmIdx, failDomainIdx, vDiskIdx, force, }: {
125
130
  groupId: string | number;
126
131
  groupGeneration: string | number;
127
132
  failRealmIdx: string | number;
128
133
  failDomainIdx: string | number;
129
134
  vDiskIdx: string | number;
130
- }): Promise<any>;
131
- restartPDisk(nodeId: number | string, pDiskId: number | string): Promise<RestartPDiskResponse>;
135
+ force?: boolean;
136
+ }): Promise<ModifyDiskResponse>;
137
+ restartPDisk({ nodeId, pDiskId, force, }: {
138
+ nodeId: number | string;
139
+ pDiskId: number | string;
140
+ force?: boolean;
141
+ }): Promise<ModifyDiskResponse>;
132
142
  killTablet(id?: string): Promise<string>;
133
143
  stopTablet(id?: string, hiveId?: string): Promise<string>;
134
144
  resumeTablet(id?: string, hiveId?: string): Promise<string>;
135
145
  getTabletDescribe(tenantId: TDomainKey, { concurrentId, signal }?: AxiosOptions): Promise<Nullable<TEvDescribeSchemeResult>>;
136
146
  getChartData({ target, from, until, maxDataPoints, database }: JsonRenderRequestParams, { concurrentId, signal }?: AxiosOptions): Promise<JsonRenderResponse>;
137
- authenticate(user: string, password: string): Promise<any>;
147
+ authenticate(params: {
148
+ user: string;
149
+ password: string;
150
+ }): Promise<any>;
138
151
  logout(): Promise<any>;
139
152
  whoami(): Promise<TUserToken>;
140
153
  autocomplete(params: {
@@ -1,8 +1,8 @@
1
1
  import AxiosWrapper from '@gravity-ui/axios-wrapper';
2
2
  import axiosRetry from 'axios-retry';
3
+ import qs from 'qs';
3
4
  import { backend as BACKEND, metaBackend as META_BACKEND } from '../store';
4
5
  import { BINARY_DATA_IN_PLAIN_TEXT_DISPLAY } from '../utils/constants';
5
- import { createPDiskDeveloperUILink } from '../utils/developerUI/developerUI';
6
6
  import { prepareSortValue } from '../utils/filters';
7
7
  import { parseMetaCluster } from './parsers/parseMetaCluster';
8
8
  import { parseMetaTenants } from './parsers/parseMetaTenants';
@@ -23,7 +23,7 @@ export class YdbEmbeddedAPI extends AxiosWrapper {
23
23
  // authUrl - external auth service link, after successful auth additional cookies will be appended
24
24
  // that will allow access to clusters where OIDC proxy is a balancer
25
25
  if (response && response.status === 401 && ((_a = response.data) === null || _a === void 0 ? void 0 : _a.authUrl)) {
26
- return window.location.assign(response.data.authUrl);
26
+ window.location.assign(response.data.authUrl);
27
27
  }
28
28
  return Promise.reject(error);
29
29
  });
@@ -31,6 +31,9 @@ export class YdbEmbeddedAPI extends AxiosWrapper {
31
31
  getPath(path) {
32
32
  return `${BACKEND !== null && BACKEND !== void 0 ? BACKEND : ''}${path}`;
33
33
  }
34
+ getClusterCapabilities() {
35
+ return this.get(this.getPath('/viewer/capabilities'), {}, {});
36
+ }
34
37
  getClusterInfo(clusterName, { concurrentId, signal } = {}) {
35
38
  return this.get(this.getPath('/viewer/json/cluster'), {
36
39
  name: clusterName,
@@ -211,22 +214,24 @@ export class YdbEmbeddedAPI extends AxiosWrapper {
211
214
  requestConfig: { signal },
212
215
  });
213
216
  }
214
- sendQuery({ schema, ...params }, { concurrentId, signal, withRetries } = {}) {
215
- // Time difference to ensure that timeout from ui will be shown rather than backend error
216
- const uiTimeout = 9 * 60 * 1000;
217
- const backendTimeout = 10 * 60 * 1000;
217
+ sendQuery(params, { concurrentId, signal, withRetries } = {}) {
218
218
  /**
219
219
  * Return strings using base64 encoding.
220
220
  * @link https://github.com/ydb-platform/ydb/pull/647
221
221
  */
222
222
  const base64 = !settingsManager.readUserSettingsValue(BINARY_DATA_IN_PLAIN_TEXT_DISPLAY, true);
223
- return this.post(this.getPath(`/viewer/json/query?timeout=${backendTimeout}&base64=${base64}${schema ? `&schema=${schema}` : ''}`), params, {}, {
223
+ return this.post(this.getPath('/viewer/json/query'), { ...params, base64 }, {}, {
224
224
  concurrentId,
225
- timeout: uiTimeout,
225
+ timeout: params.timeout,
226
226
  requestConfig: {
227
227
  signal,
228
228
  'axios-retry': { retries: withRetries ? this.DEFAULT_RETRIES_COUNT : 0 },
229
229
  },
230
+ headers: params.tracingLevel
231
+ ? {
232
+ 'X-Trace-Verbosity': params.tracingLevel,
233
+ }
234
+ : undefined,
230
235
  });
231
236
  }
232
237
  getHotKeys({ path, database, enableSampling }, { concurrentId, signal } = {}) {
@@ -239,38 +244,23 @@ export class YdbEmbeddedAPI extends AxiosWrapper {
239
244
  getHealthcheckInfo({ database, maxLevel }, { concurrentId, signal } = {}) {
240
245
  return this.get(this.getPath('/viewer/json/healthcheck?merge_records=true'), { database, tenant: database, max_level: maxLevel }, { concurrentId, requestConfig: { signal } });
241
246
  }
242
- evictVDisk({ groupId, groupGeneration, failRealmIdx, failDomainIdx, vDiskIdx, }) {
243
- // BSC Id is constant for all ydb clusters
244
- const BSC_TABLET_ID = '72057594037932033';
245
- return this.post(this.getPath(`/tablets/app?TabletID=${BSC_TABLET_ID}&exec=1`), {
246
- Command: {
247
- ReassignGroupDisk: {
248
- GroupId: groupId,
249
- GroupGeneration: groupGeneration,
250
- FailRealmIdx: failRealmIdx,
251
- FailDomainIdx: failDomainIdx,
252
- VDiskIdx: vDiskIdx,
253
- },
254
- },
255
- }, {}, {
256
- headers: {
257
- // This handler requires exactly this string
258
- // Automatic headers may not suit
259
- Accept: 'application/json',
260
- },
247
+ evictVDisk({ groupId, groupGeneration, failRealmIdx, failDomainIdx, vDiskIdx, force, }) {
248
+ const params = {
249
+ group_id: groupId,
250
+ group_generation_id: groupGeneration,
251
+ fail_realm_idx: failRealmIdx,
252
+ fail_domain_idx: failDomainIdx,
253
+ vdisk_idx: vDiskIdx,
254
+ force,
255
+ };
256
+ const paramsString = qs.stringify(params);
257
+ const path = this.getPath(`/vdisk/evict?${paramsString}`);
258
+ return this.post(path, {}, {}, {
261
259
  requestConfig: { 'axios-retry': { retries: 0 } },
262
260
  });
263
261
  }
264
- restartPDisk(nodeId, pDiskId) {
265
- const pDiskPath = createPDiskDeveloperUILink({
266
- nodeId,
267
- pDiskId,
268
- host: this.getPath(''),
269
- });
270
- return this.post(pDiskPath, 'restartPDisk=', {}, {
271
- headers: {
272
- 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
273
- },
262
+ restartPDisk({ nodeId, pDiskId, force, }) {
263
+ return this.post(this.getPath(`/pdisk/restart?node_id=${nodeId}&pdisk_id=${pDiskId}&force=${force}`), {}, {}, {
274
264
  requestConfig: { 'axios-retry': { retries: 0 } },
275
265
  });
276
266
  }
@@ -299,11 +289,8 @@ export class YdbEmbeddedAPI extends AxiosWrapper {
299
289
  requestConfig: { signal },
300
290
  });
301
291
  }
302
- authenticate(user, password) {
303
- return this.post(this.getPath('/login'), {
304
- user,
305
- password,
306
- }, {});
292
+ authenticate(params) {
293
+ return this.post(this.getPath('/login'), params, {});
307
294
  }
308
295
  logout() {
309
296
  return this.post(this.getPath('/logout'), {}, {});
@@ -9,19 +9,26 @@ export declare const DEFAULT_USER_SETTINGS: {
9
9
  readonly binaryDataInPlainTextDisplay: true;
10
10
  readonly saved_queries: readonly [];
11
11
  readonly saved_tenant_initial_tab: "query";
12
- readonly query_initial_mode: "script";
13
12
  readonly last_used_query_action: "execute";
14
13
  readonly asideHeaderCompact: true;
15
14
  readonly partitionsHiddenColumns: readonly [];
16
15
  readonly useBackendParamsForTables: false;
17
16
  readonly useClusterBalancerAsBacked: true;
18
- readonly useSeparateDisksPages: false;
19
17
  readonly enableAutocomplete: true;
20
18
  readonly autocompleteOnEnter: true;
21
19
  readonly isHotKeysHelpHidden: false;
22
20
  readonly "auto-refresh-interval": 0;
23
- readonly useDirectoryOperations: false;
24
- readonly query_settings: false;
21
+ readonly enableTracingLevel: false;
22
+ readonly showDomainDatabase: false;
23
+ readonly last_query_execution_settings: undefined;
24
+ readonly querySettingsBannerLastClosed: undefined;
25
+ readonly queryExecutionSettings: {
26
+ queryMode: "script";
27
+ isolationLevel: "serializable-read-write";
28
+ timeout: string;
29
+ statisticsMode: "none";
30
+ tracingLevel: "detailed";
31
+ };
25
32
  };
26
33
  declare class SettingsManager {
27
34
  /**
@@ -1,6 +1,6 @@
1
1
  import { TENANT_PAGES_IDS } from '../store/reducers/tenant/constants';
2
- import { ASIDE_HEADER_COMPACT_KEY, AUTOCOMPLETE_ON_ENTER, AUTO_REFRESH_INTERVAL, BINARY_DATA_IN_PLAIN_TEXT_DISPLAY, ENABLE_AUTOCOMPLETE, INVERTED_DISKS_KEY, IS_HOTKEYS_HELP_HIDDEN_KEY, LANGUAGE_KEY, LAST_USED_QUERY_ACTION_KEY, PARTITIONS_HIDDEN_COLUMNS_KEY, QUERY_INITIAL_MODE_KEY, QUERY_SETTINGS, QUERY_USE_MULTI_SCHEMA_KEY, SAVED_QUERIES_KEY, TENANT_INITIAL_PAGE_KEY, THEME_KEY, USE_CLUSTER_BALANCER_AS_BACKEND_KEY, USE_DIRECTORY_OPERATIONS, USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY, USE_PAGINATED_TABLES_KEY, USE_SEPARATE_DISKS_PAGES_KEY, } from '../utils/constants';
3
- import { QUERY_ACTIONS, QUERY_MODES } from '../utils/query';
2
+ import { ASIDE_HEADER_COMPACT_KEY, AUTOCOMPLETE_ON_ENTER, AUTO_REFRESH_INTERVAL, BINARY_DATA_IN_PLAIN_TEXT_DISPLAY, DEFAULT_QUERY_SETTINGS, ENABLE_AUTOCOMPLETE, ENABLE_TRACING_LEVEL_KEY, INVERTED_DISKS_KEY, IS_HOTKEYS_HELP_HIDDEN_KEY, LANGUAGE_KEY, LAST_QUERY_EXECUTION_SETTINGS_KEY, LAST_USED_QUERY_ACTION_KEY, PARTITIONS_HIDDEN_COLUMNS_KEY, QUERY_EXECUTION_SETTINGS_KEY, QUERY_SETTINGS_BANNER_LAST_CLOSED_KEY, QUERY_USE_MULTI_SCHEMA_KEY, SAVED_QUERIES_KEY, SHOW_DOMAIN_DATABASE_KEY, TENANT_INITIAL_PAGE_KEY, THEME_KEY, USE_CLUSTER_BALANCER_AS_BACKEND_KEY, USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY, USE_PAGINATED_TABLES_KEY, } from '../utils/constants';
3
+ import { QUERY_ACTIONS } from '../utils/query';
4
4
  import { parseJson } from '../utils/utils';
5
5
  /** User settings keys and their default values */
6
6
  export const DEFAULT_USER_SETTINGS = {
@@ -12,19 +12,20 @@ export const DEFAULT_USER_SETTINGS = {
12
12
  [BINARY_DATA_IN_PLAIN_TEXT_DISPLAY]: true,
13
13
  [SAVED_QUERIES_KEY]: [],
14
14
  [TENANT_INITIAL_PAGE_KEY]: TENANT_PAGES_IDS.query,
15
- [QUERY_INITIAL_MODE_KEY]: QUERY_MODES.script,
16
15
  [LAST_USED_QUERY_ACTION_KEY]: QUERY_ACTIONS.execute,
17
16
  [ASIDE_HEADER_COMPACT_KEY]: true,
18
17
  [PARTITIONS_HIDDEN_COLUMNS_KEY]: [],
19
18
  [USE_PAGINATED_TABLES_KEY]: false,
20
19
  [USE_CLUSTER_BALANCER_AS_BACKEND_KEY]: true,
21
- [USE_SEPARATE_DISKS_PAGES_KEY]: false,
22
20
  [ENABLE_AUTOCOMPLETE]: true,
23
21
  [AUTOCOMPLETE_ON_ENTER]: true,
24
22
  [IS_HOTKEYS_HELP_HIDDEN_KEY]: false,
25
23
  [AUTO_REFRESH_INTERVAL]: 0,
26
- [USE_DIRECTORY_OPERATIONS]: false,
27
- [QUERY_SETTINGS]: false,
24
+ [ENABLE_TRACING_LEVEL_KEY]: false,
25
+ [SHOW_DOMAIN_DATABASE_KEY]: false,
26
+ [LAST_QUERY_EXECUTION_SETTINGS_KEY]: undefined,
27
+ [QUERY_SETTINGS_BANNER_LAST_CLOSED_KEY]: undefined,
28
+ [QUERY_EXECUTION_SETTINGS_KEY]: DEFAULT_QUERY_SETTINGS,
28
29
  };
29
30
  class SettingsManager {
30
31
  constructor() {
@@ -6,7 +6,7 @@ export declare const customBackend: string | undefined;
6
6
  export declare const metaBackend: string | undefined;
7
7
  export declare function configureStore({ aRootReducer, singleClusterMode, api, }?: {
8
8
  aRootReducer?: Reducer<{
9
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api">;
9
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData" | "UserData", "api">;
10
10
  singleClusterMode: boolean;
11
11
  cluster: import("./reducers/cluster/types").ClusterState;
12
12
  tenant: import("./reducers/tenant/types").TenantState;
@@ -28,7 +28,7 @@ export declare function configureStore({ aRootReducer, singleClusterMode, api, }
28
28
  }, UnknownAction | import("../types/store/tooltip").ITooltipAction | {
29
29
  readonly type: "schema/SET_SHOW_PREVIEW";
30
30
  readonly data: boolean;
31
- } | import("../types/store/executeQuery").ExecuteQueryAction | import("./reducers/authentication/types").AuthenticationAction | {
31
+ } | import("../types/store/executeQuery").ExecuteQueryAction | {
32
32
  readonly type: "header/SET_HEADER_BREADCRUMBS";
33
33
  readonly page: import("./reducers/header/types").Page;
34
34
  readonly options: {} | import("./reducers/header/types").TabletsBreadcrumbsOptions | import("./reducers/header/types").TenantBreadcrumbsOptions | import("./reducers/header/types").ClusterBreadcrumbsOptions | import("./reducers/header/types").TabletBreadcrumbsOptions | import("./reducers/header/types").NodeBreadcrumbsOptions;
@@ -37,7 +37,7 @@ export declare function configureStore({ aRootReducer, singleClusterMode, api, }
37
37
  } | {
38
38
  readonly type: "DISABLE_FULLSCREEN_MODE";
39
39
  } | Action<string>, Partial<{
40
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api"> | undefined;
40
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData" | "UserData", "api"> | undefined;
41
41
  singleClusterMode: boolean | undefined;
42
42
  cluster: import("./reducers/cluster/types").ClusterState | undefined;
43
43
  tenant: import("./reducers/tenant/types").TenantState | undefined;
@@ -51,7 +51,7 @@ export declare function configureStore({ aRootReducer, singleClusterMode, api, }
51
51
  settings: import("./reducers/settings/types").SettingsState | undefined;
52
52
  executeTopQueries: import("./reducers/executeTopQueries/types").TopQueriesFilters | undefined;
53
53
  shardsWorkload: import("./reducers/shardsWorkload/types").ShardsWorkloadFilters | undefined;
54
- authentication: never;
54
+ authentication: import("./reducers/authentication/types").AuthenticationState | undefined;
55
55
  header: never;
56
56
  queryActions: import("./reducers/queryActions/types").QueryActionsState | undefined;
57
57
  fullscreen: never;
@@ -62,7 +62,7 @@ export declare function configureStore({ aRootReducer, singleClusterMode, api, }
62
62
  }): {
63
63
  history: History<unknown>;
64
64
  store: import("@reduxjs/toolkit").EnhancedStore<{
65
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api">;
65
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData" | "UserData", "api">;
66
66
  singleClusterMode: boolean;
67
67
  cluster: import("./reducers/cluster/types").ClusterState;
68
68
  tenant: import("./reducers/tenant/types").TenantState;
@@ -84,7 +84,7 @@ export declare function configureStore({ aRootReducer, singleClusterMode, api, }
84
84
  }, UnknownAction | import("../types/store/tooltip").ITooltipAction | {
85
85
  readonly type: "schema/SET_SHOW_PREVIEW";
86
86
  readonly data: boolean;
87
- } | import("../types/store/executeQuery").ExecuteQueryAction | import("./reducers/authentication/types").AuthenticationAction | {
87
+ } | import("../types/store/executeQuery").ExecuteQueryAction | {
88
88
  readonly type: "header/SET_HEADER_BREADCRUMBS";
89
89
  readonly page: import("./reducers/header/types").Page;
90
90
  readonly options: {} | import("./reducers/header/types").TabletsBreadcrumbsOptions | import("./reducers/header/types").TenantBreadcrumbsOptions | import("./reducers/header/types").ClusterBreadcrumbsOptions | import("./reducers/header/types").TabletBreadcrumbsOptions | import("./reducers/header/types").NodeBreadcrumbsOptions;
@@ -94,7 +94,7 @@ export declare function configureStore({ aRootReducer, singleClusterMode, api, }
94
94
  readonly type: "DISABLE_FULLSCREEN_MODE";
95
95
  } | Action<string>, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
96
96
  dispatch: import("redux-thunk").ThunkDispatch<{
97
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api">;
97
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData" | "UserData", "api">;
98
98
  singleClusterMode: boolean;
99
99
  cluster: import("./reducers/cluster/types").ClusterState;
100
100
  tenant: import("./reducers/tenant/types").TenantState;
@@ -1,5 +1,5 @@
1
1
  export declare const store: import("@reduxjs/toolkit").EnhancedStore<{
2
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api">;
2
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData" | "UserData", "api">;
3
3
  singleClusterMode: boolean;
4
4
  cluster: import("./reducers/cluster/types").ClusterState;
5
5
  tenant: import("./reducers/tenant/types").TenantState;
@@ -21,7 +21,7 @@ export declare const store: import("@reduxjs/toolkit").EnhancedStore<{
21
21
  }, import("redux").UnknownAction | import("../types/store/tooltip").ITooltipAction | {
22
22
  readonly type: "schema/SET_SHOW_PREVIEW";
23
23
  readonly data: boolean;
24
- } | import("../types/store/executeQuery").ExecuteQueryAction | import("./reducers/authentication/types").AuthenticationAction | {
24
+ } | import("../types/store/executeQuery").ExecuteQueryAction | {
25
25
  readonly type: "header/SET_HEADER_BREADCRUMBS";
26
26
  readonly page: import("./reducers/header/types").Page;
27
27
  readonly options: {} | import("./reducers/header/types").TabletsBreadcrumbsOptions | import("./reducers/header/types").TenantBreadcrumbsOptions | import("./reducers/header/types").ClusterBreadcrumbsOptions | import("./reducers/header/types").TabletBreadcrumbsOptions | import("./reducers/header/types").NodeBreadcrumbsOptions;
@@ -31,7 +31,7 @@ export declare const store: import("@reduxjs/toolkit").EnhancedStore<{
31
31
  readonly type: "DISABLE_FULLSCREEN_MODE";
32
32
  } | import("redux").Action<string>, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
33
33
  dispatch: import("redux-thunk").ThunkDispatch<{
34
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api">;
34
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData" | "UserData", "api">;
35
35
  singleClusterMode: boolean;
36
36
  cluster: import("./reducers/cluster/types").ClusterState;
37
37
  tenant: import("./reducers/tenant/types").TenantState;
@@ -1,3 +1,3 @@
1
1
  import type { BaseQueryFn } from '@reduxjs/toolkit/query';
2
- export declare const api: import("@reduxjs/toolkit/query").Api<BaseQueryFn<void, typeof _NEVER, unknown, {}>, {}, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
2
+ export declare const api: import("@reduxjs/toolkit/query").Api<BaseQueryFn<void, typeof _NEVER, unknown, {}>, {}, "api", "All" | "PDiskData" | "UserData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
3
3
  export declare const _NEVER: unique symbol;
@@ -7,7 +7,7 @@ export const api = createApi({
7
7
  */
8
8
  endpoints: () => ({}),
9
9
  invalidationBehavior: 'immediately',
10
- tagTypes: ['All', 'PDiskData'],
10
+ tagTypes: ['All', 'PDiskData', 'UserData'],
11
11
  });
12
12
  export const _NEVER = Symbol();
13
13
  /**
@@ -1,25 +1,38 @@
1
- import type { Reducer } from '@reduxjs/toolkit';
2
- import type { AuthenticationAction, AuthenticationState } from './types';
3
- export declare const SET_UNAUTHENTICATED: {
4
- readonly REQUEST: "authentication/SET_UNAUTHENTICATED_REQUEST";
5
- readonly SUCCESS: "authentication/SET_UNAUTHENTICATED_SUCCESS";
6
- readonly FAILURE: "authentication/SET_UNAUTHENTICATED_FAILURE";
1
+ import type { PayloadAction } from '@reduxjs/toolkit';
2
+ import type { TUserToken } from '../../../types/api/whoami';
3
+ import type { AuthenticationState } from './types';
4
+ export declare const slice: import("@reduxjs/toolkit").Slice<AuthenticationState, {
5
+ setIsAuthenticated: (state: {
6
+ isAuthenticated: boolean;
7
+ isUserAllowedToMakeChanges?: boolean;
8
+ user: string | undefined;
9
+ }, action: PayloadAction<boolean>) => void;
10
+ setUser: (state: {
11
+ isAuthenticated: boolean;
12
+ isUserAllowedToMakeChanges?: boolean;
13
+ user: string | undefined;
14
+ }, action: PayloadAction<TUserToken>) => void;
15
+ }, "authentication", "authentication", {
16
+ selectIsUserAllowedToMakeChanges: (state: AuthenticationState) => boolean | undefined;
17
+ selectUser: (state: AuthenticationState) => string | undefined;
18
+ }>;
19
+ declare const _default: import("redux").Reducer<AuthenticationState>;
20
+ export default _default;
21
+ export declare const setIsAuthenticated: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "authentication/setIsAuthenticated">, setUser: import("@reduxjs/toolkit").ActionCreatorWithPayload<TUserToken, "authentication/setUser">;
22
+ export declare const selectIsUserAllowedToMakeChanges: import("reselect").Selector<{
23
+ authentication: AuthenticationState;
24
+ }, boolean | undefined, []> & {
25
+ unwrapped: (state: AuthenticationState) => boolean | undefined;
26
+ }, selectUser: import("reselect").Selector<{
27
+ authentication: AuthenticationState;
28
+ }, string | undefined, []> & {
29
+ unwrapped: (state: AuthenticationState) => string | undefined;
7
30
  };
8
- export declare const SET_AUTHENTICATED: {
9
- readonly REQUEST: "authentication/SET_AUTHENTICATED_REQUEST";
10
- readonly SUCCESS: "authentication/SET_AUTHENTICATED_SUCCESS";
11
- readonly FAILURE: "authentication/SET_AUTHENTICATED_FAILURE";
12
- };
13
- export declare const FETCH_USER: {
14
- readonly REQUEST: "authentication/FETCH_USER_REQUEST";
15
- readonly SUCCESS: "authentication/FETCH_USER_SUCCESS";
16
- readonly FAILURE: "authentication/FETCH_USER_FAILURE";
17
- };
18
- declare const authentication: Reducer<AuthenticationState, AuthenticationAction>;
19
- export declare const authenticate: (user: string, password: string) => (dispatch: import("../..").AppDispatch, getState: import("../..").GetState) => Promise<unknown>;
20
- export declare const logout: () => (dispatch: import("../..").AppDispatch, getState: import("../..").GetState) => Promise<unknown>;
21
- export declare const getUser: () => (dispatch: import("../..").AppDispatch, getState: import("../..").GetState) => Promise<{
22
- user: string | undefined;
23
- isUserAllowedToMakeChanges: boolean;
24
- } | undefined>;
25
- export default authentication;
31
+ export declare const authenticationApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
32
+ whoami: import("@reduxjs/toolkit/query").QueryDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData" | "UserData", TUserToken | undefined, "api">;
33
+ authenticate: import("@reduxjs/toolkit/query").MutationDefinition<{
34
+ user: string;
35
+ password: string;
36
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData" | "UserData", any, "api">;
37
+ logout: import("@reduxjs/toolkit/query").MutationDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData" | "UserData", any, "api">;
38
+ }, "api", "All" | "PDiskData" | "UserData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;