@ytsaurus/ui 1.16.1 → 1.17.0

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 (371) hide show
  1. package/README.md +6 -11
  2. package/build/cjs/@types/core.d.ts +7 -7
  3. package/build/cjs/server/components/layout-config.js +3 -3
  4. package/build/cjs/server/components/layout-config.js.map +1 -1
  5. package/build/cjs/server/components/requestsSetup.js +13 -5
  6. package/build/cjs/server/components/requestsSetup.js.map +1 -1
  7. package/build/cjs/server/components/settings.d.ts +10 -5
  8. package/build/cjs/server/components/settings.js +24 -23
  9. package/build/cjs/server/components/settings.js.map +1 -1
  10. package/build/cjs/server/components/table.d.ts +3 -3
  11. package/build/cjs/server/components/table.js +4 -4
  12. package/build/cjs/server/components/table.js.map +1 -1
  13. package/build/cjs/server/components/yt-auth.d.ts +0 -2
  14. package/build/cjs/server/components/yt-auth.js +5 -14
  15. package/build/cjs/server/components/yt-auth.js.map +1 -1
  16. package/build/cjs/server/configs/common.js +5 -13
  17. package/build/cjs/server/configs/common.js.map +1 -1
  18. package/build/cjs/server/configs/local.js +0 -5
  19. package/build/cjs/server/configs/local.js.map +1 -1
  20. package/build/cjs/server/controllers/chyt-api.js +1 -1
  21. package/build/cjs/server/controllers/chyt-api.js.map +1 -1
  22. package/build/cjs/server/controllers/cluster-info.js +2 -2
  23. package/build/cjs/server/controllers/cluster-info.js.map +1 -1
  24. package/build/cjs/server/controllers/cluster-params.js +1 -1
  25. package/build/cjs/server/controllers/cluster-params.js.map +1 -1
  26. package/build/cjs/server/controllers/clusters.d.ts +1 -0
  27. package/build/cjs/server/controllers/clusters.js +24 -1
  28. package/build/cjs/server/controllers/clusters.js.map +1 -1
  29. package/build/cjs/server/controllers/home.js +10 -6
  30. package/build/cjs/server/controllers/home.js.map +1 -1
  31. package/build/cjs/server/controllers/login.js +18 -5
  32. package/build/cjs/server/controllers/login.js.map +1 -1
  33. package/build/cjs/server/controllers/odin-proxy-api.js +1 -1
  34. package/build/cjs/server/controllers/odin-proxy-api.js.map +1 -1
  35. package/build/cjs/server/controllers/scheduling-pools.js +2 -2
  36. package/build/cjs/server/controllers/scheduling-pools.js.map +1 -1
  37. package/build/cjs/server/controllers/settings.js +10 -10
  38. package/build/cjs/server/controllers/settings.js.map +1 -1
  39. package/build/cjs/server/controllers/table-column-preset.js +4 -3
  40. package/build/cjs/server/controllers/table-column-preset.js.map +1 -1
  41. package/build/cjs/server/controllers/yt-api.js +1 -1
  42. package/build/cjs/server/controllers/yt-api.js.map +1 -1
  43. package/build/cjs/server/controllers/yt-proxy-api.js +2 -2
  44. package/build/cjs/server/controllers/yt-proxy-api.js.map +1 -1
  45. package/build/cjs/server/index.js +11 -8
  46. package/build/cjs/server/index.js.map +1 -1
  47. package/build/cjs/server/middlewares/authorization.d.ts +1 -1
  48. package/build/cjs/server/middlewares/authorization.js +3 -2
  49. package/build/cjs/server/middlewares/authorization.js.map +1 -1
  50. package/build/cjs/server/middlewares/yt-auth.js +3 -2
  51. package/build/cjs/server/middlewares/yt-auth.js.map +1 -1
  52. package/build/cjs/server/routes.js +26 -25
  53. package/build/cjs/server/routes.js.map +1 -1
  54. package/build/cjs/server/utils/index.d.ts +1 -1
  55. package/build/cjs/server/utils/index.js +12 -4
  56. package/build/cjs/server/utils/index.js.map +1 -1
  57. package/build/cjs/shared/yt-types.d.ts +1 -0
  58. package/build/cjs/ui/common/utils/settings-remote-provider.d.ts +5 -5
  59. package/build/cjs/ui/common/utils/settings-remote-provider.js +42 -16
  60. package/build/cjs/ui/common/utils/settings-remote-provider.js.map +1 -1
  61. package/build/cjs/ui/components/ElementsTable/ElementsTable.d.ts +1 -1
  62. package/build/cjs/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.d.ts +2 -1
  63. package/build/cjs/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js +11 -6
  64. package/build/cjs/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js.map +1 -1
  65. package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js +7 -4
  66. package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
  67. package/build/cjs/ui/config/ui-settings.d.ts +1 -0
  68. package/build/cjs/ui/config/ui-settings.js +3 -2
  69. package/build/cjs/ui/config/ui-settings.js.map +1 -1
  70. package/build/cjs/ui/constants/index.d.ts +7 -0
  71. package/build/cjs/ui/constants/index.js +3 -1
  72. package/build/cjs/ui/constants/index.js.map +1 -1
  73. package/build/cjs/ui/containers/App/App.js +4 -3
  74. package/build/cjs/ui/containers/App/App.js.map +1 -1
  75. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js +39 -22
  76. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  77. package/build/cjs/ui/containers/ClusterPage/ClusterPage.d.ts +3 -1
  78. package/build/cjs/ui/containers/ClusterPage/ClusterPage.js +3 -1
  79. package/build/cjs/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
  80. package/build/cjs/ui/containers/ClustersMenu/ClusterMenuHeader.css +5 -0
  81. package/build/cjs/ui/containers/ClustersMenu/ClusterMenuHeader.css.map +1 -1
  82. package/build/cjs/ui/containers/ClustersMenu/ClustersMenuBody.d.ts +3 -1
  83. package/build/cjs/ui/containers/ClustersMenu/ClustersMenuBody.js +11 -3
  84. package/build/cjs/ui/containers/ClustersMenu/ClustersMenuBody.js.map +1 -1
  85. package/build/cjs/ui/containers/ClustersMenu/ClustersMenuHeader.d.ts +4 -4
  86. package/build/cjs/ui/containers/ClustersMenu/ClustersMenuHeader.js.map +1 -1
  87. package/build/cjs/ui/containers/MaintenancePage/HandleRedirect.js.map +1 -1
  88. package/build/cjs/ui/entries/main.js +4 -1
  89. package/build/cjs/ui/entries/main.js.map +1 -1
  90. package/build/cjs/ui/pages/operations/selectors.d.ts +5 -0
  91. package/build/cjs/ui/pages/query-tracker/module/queries_list/selectors.d.ts +20 -0
  92. package/build/cjs/ui/pages/query-tracker/module/query/selectors.d.ts +5 -0
  93. package/build/cjs/ui/pages/query-tracker/module/settings/selector.d.ts +5 -0
  94. package/build/cjs/ui/pages/system/Chunks/Chunks.d.ts +1 -1
  95. package/build/cjs/ui/store/actions/cluster-params.d.ts +1 -0
  96. package/build/cjs/ui/store/actions/cluster-params.js +13 -0
  97. package/build/cjs/ui/store/actions/cluster-params.js.map +1 -1
  98. package/build/cjs/ui/store/actions/clusters-menu.d.ts +1 -0
  99. package/build/cjs/ui/store/actions/clusters-menu.js +22 -2
  100. package/build/cjs/ui/store/actions/clusters-menu.js.map +1 -1
  101. package/build/cjs/ui/store/actions/global/index.d.ts +3 -1
  102. package/build/cjs/ui/store/actions/global/index.js +19 -4
  103. package/build/cjs/ui/store/actions/global/index.js.map +1 -1
  104. package/build/cjs/ui/store/actions/navigation/content/table/columns-preset.d.ts +1 -1
  105. package/build/cjs/ui/store/actions/navigation/content/table/columns-preset.js +6 -4
  106. package/build/cjs/ui/store/actions/navigation/content/table/columns-preset.js.map +1 -1
  107. package/build/cjs/ui/store/actions/navigation/content/table/table.js +2 -1
  108. package/build/cjs/ui/store/actions/navigation/content/table/table.js.map +1 -1
  109. package/build/cjs/ui/store/actions/settings/index.js +25 -19
  110. package/build/cjs/ui/store/actions/settings/index.js.map +1 -1
  111. package/build/cjs/ui/store/reducers/accounts/usage/index.d.ts +1 -1
  112. package/build/cjs/ui/store/reducers/clusters-menu/clusters-menu.d.ts +4 -0
  113. package/build/cjs/ui/store/reducers/clusters-menu/clusters-menu.js +8 -0
  114. package/build/cjs/ui/store/reducers/clusters-menu/clusters-menu.js.map +1 -1
  115. package/build/cjs/ui/store/reducers/index.d.ts +5 -0
  116. package/build/cjs/ui/store/reducers/index.js.map +1 -1
  117. package/build/cjs/ui/store/reducers/settings.js +1 -1
  118. package/build/cjs/ui/store/reducers/settings.js.map +1 -1
  119. package/build/cjs/ui/store/selectors/accounts/account-usage.d.ts +40 -0
  120. package/build/cjs/ui/store/selectors/accounts/accounts-ts.d.ts +40 -0
  121. package/build/cjs/ui/store/selectors/chaos_cell_bundles/index.d.ts +55 -0
  122. package/build/cjs/ui/store/selectors/chyt/index.d.ts +35 -0
  123. package/build/cjs/ui/store/selectors/components/node/memory.d.ts +35 -0
  124. package/build/cjs/ui/store/selectors/components/node-maintenance-modal.d.ts +15 -0
  125. package/build/cjs/ui/store/selectors/components/nodes/node-card.d.ts +5 -0
  126. package/build/cjs/ui/store/selectors/components/nodes/nodes/data.d.ts +10 -0
  127. package/build/cjs/ui/store/selectors/components/nodes/nodes/predicates.d.ts +30 -0
  128. package/build/cjs/ui/store/selectors/components/versions/versions_v2-ts.d.ts +10 -0
  129. package/build/cjs/ui/store/selectors/components/versions/versions_v2.d.ts +25 -0
  130. package/build/cjs/ui/store/selectors/global/index.d.ts +912 -0
  131. package/build/cjs/ui/store/selectors/global/index.js +10 -1
  132. package/build/cjs/ui/store/selectors/global/index.js.map +1 -1
  133. package/build/cjs/ui/store/selectors/global/supported-features.d.ts +30 -0
  134. package/build/cjs/ui/store/selectors/modals/errors.d.ts +5 -0
  135. package/build/cjs/ui/store/selectors/navigation/content/document.d.ts +5 -0
  136. package/build/cjs/ui/store/selectors/navigation/content/replicated-table.d.ts +15 -0
  137. package/build/cjs/ui/store/selectors/navigation/content/table-mount-config.d.ts +5 -0
  138. package/build/cjs/ui/store/selectors/navigation/content/table-ts.d.ts +20 -0
  139. package/build/cjs/ui/store/selectors/navigation/content/table.d.ts +35 -0
  140. package/build/cjs/ui/store/selectors/navigation/modals/attributes-editor.d.ts +15 -0
  141. package/build/cjs/ui/store/selectors/navigation/modals/remote-copy-modal.d.ts +5 -0
  142. package/build/cjs/ui/store/selectors/navigation/navigation.d.ts +10 -0
  143. package/build/cjs/ui/store/selectors/navigation/tabs/access-log.d.ts +5 -0
  144. package/build/cjs/ui/store/selectors/navigation/tabs/annotation.d.ts +5 -0
  145. package/build/cjs/ui/store/selectors/navigation/tabs/consumer.d.ts +5 -0
  146. package/build/cjs/ui/store/selectors/navigation/tabs/locks.d.ts +10 -0
  147. package/build/cjs/ui/store/selectors/navigation/tabs/queue.d.ts +10 -0
  148. package/build/cjs/ui/store/selectors/navigation/tabs/tablet-errors.d.ts +5 -0
  149. package/build/cjs/ui/store/selectors/operations/index.d.ts +60 -0
  150. package/build/cjs/ui/store/selectors/operations/jobs-monitor.d.ts +20 -0
  151. package/build/cjs/ui/store/selectors/operations/operation.d.ts +60 -0
  152. package/build/cjs/ui/store/selectors/operations/operations-list.d.ts +15 -0
  153. package/build/cjs/ui/store/selectors/operations/statistics-v2.d.ts +40 -0
  154. package/build/cjs/ui/store/selectors/scheduling/attributes-to-filter.d.ts +5 -0
  155. package/build/cjs/ui/store/selectors/scheduling/create-pool-dialog.d.ts +5 -0
  156. package/build/cjs/ui/store/selectors/scheduling/expanded-pools.d.ts +5 -0
  157. package/build/cjs/ui/store/selectors/scheduling/index.d.ts +5 -0
  158. package/build/cjs/ui/store/selectors/scheduling/scheduling-pools.d.ts +15 -0
  159. package/build/cjs/ui/store/selectors/scheduling/scheduling-ts.d.ts +30 -0
  160. package/build/cjs/ui/store/selectors/scheduling/scheduling.d.ts +100 -0
  161. package/build/cjs/ui/store/selectors/tablet_cell_bundles/index.d.ts +75 -0
  162. package/build/cjs/ui/store/selectors/thor/support.d.ts +25 -0
  163. package/build/esm/@types/core.d.ts +7 -7
  164. package/build/esm/server/components/layout-config.js +4 -3
  165. package/build/esm/server/components/layout-config.js.map +1 -1
  166. package/build/esm/server/components/requestsSetup.js +12 -5
  167. package/build/esm/server/components/requestsSetup.js.map +1 -1
  168. package/build/esm/server/components/settings.d.ts +10 -5
  169. package/build/esm/server/components/settings.js +33 -22
  170. package/build/esm/server/components/settings.js.map +1 -1
  171. package/build/esm/server/components/table.d.ts +3 -3
  172. package/build/esm/server/components/table.js +10 -10
  173. package/build/esm/server/components/table.js.map +1 -1
  174. package/build/esm/server/components/yt-auth.d.ts +0 -2
  175. package/build/esm/server/components/yt-auth.js +6 -11
  176. package/build/esm/server/components/yt-auth.js.map +1 -1
  177. package/build/esm/server/configs/common.js +4 -14
  178. package/build/esm/server/configs/common.js.map +1 -1
  179. package/build/esm/server/configs/local.js +0 -5
  180. package/build/esm/server/configs/local.js.map +1 -1
  181. package/build/esm/server/controllers/chyt-api.js +1 -1
  182. package/build/esm/server/controllers/chyt-api.js.map +1 -1
  183. package/build/esm/server/controllers/cluster-info.js +3 -3
  184. package/build/esm/server/controllers/cluster-info.js.map +1 -1
  185. package/build/esm/server/controllers/cluster-params.js +1 -1
  186. package/build/esm/server/controllers/cluster-params.js.map +1 -1
  187. package/build/esm/server/controllers/clusters.d.ts +1 -0
  188. package/build/esm/server/controllers/clusters.js +23 -0
  189. package/build/esm/server/controllers/clusters.js.map +1 -1
  190. package/build/esm/server/controllers/home.js +32 -28
  191. package/build/esm/server/controllers/home.js.map +1 -1
  192. package/build/esm/server/controllers/login.js +35 -21
  193. package/build/esm/server/controllers/login.js.map +1 -1
  194. package/build/esm/server/controllers/odin-proxy-api.js +1 -1
  195. package/build/esm/server/controllers/odin-proxy-api.js.map +1 -1
  196. package/build/esm/server/controllers/scheduling-pools.js +3 -3
  197. package/build/esm/server/controllers/scheduling-pools.js.map +1 -1
  198. package/build/esm/server/controllers/settings.js +26 -15
  199. package/build/esm/server/controllers/settings.js.map +1 -1
  200. package/build/esm/server/controllers/table-column-preset.js +15 -14
  201. package/build/esm/server/controllers/table-column-preset.js.map +1 -1
  202. package/build/esm/server/controllers/yt-api.js +1 -1
  203. package/build/esm/server/controllers/yt-api.js.map +1 -1
  204. package/build/esm/server/controllers/yt-proxy-api.js +3 -3
  205. package/build/esm/server/controllers/yt-proxy-api.js.map +1 -1
  206. package/build/esm/server/index.js +12 -8
  207. package/build/esm/server/index.js.map +1 -1
  208. package/build/esm/server/middlewares/authorization.d.ts +1 -1
  209. package/build/esm/server/middlewares/authorization.js +21 -16
  210. package/build/esm/server/middlewares/authorization.js.map +1 -1
  211. package/build/esm/server/middlewares/yt-auth.js +8 -7
  212. package/build/esm/server/middlewares/yt-auth.js.map +1 -1
  213. package/build/esm/server/routes.js +29 -26
  214. package/build/esm/server/routes.js.map +1 -1
  215. package/build/esm/server/utils/index.d.ts +1 -1
  216. package/build/esm/server/utils/index.js +12 -6
  217. package/build/esm/server/utils/index.js.map +1 -1
  218. package/build/esm/shared/yt-types.d.ts +1 -0
  219. package/build/esm/ui/common/utils/settings-remote-provider.d.ts +5 -5
  220. package/build/esm/ui/common/utils/settings-remote-provider.js +42 -16
  221. package/build/esm/ui/common/utils/settings-remote-provider.js.map +1 -1
  222. package/build/esm/ui/components/ElementsTable/ElementsTable.d.ts +1 -1
  223. package/build/esm/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.d.ts +2 -1
  224. package/build/esm/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js +11 -6
  225. package/build/esm/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js.map +1 -1
  226. package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js +8 -5
  227. package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
  228. package/build/esm/ui/config/ui-settings.d.ts +1 -0
  229. package/build/esm/ui/config/ui-settings.js +2 -1
  230. package/build/esm/ui/config/ui-settings.js.map +1 -1
  231. package/build/esm/ui/constants/index.d.ts +7 -0
  232. package/build/esm/ui/constants/index.js +1 -0
  233. package/build/esm/ui/constants/index.js.map +1 -1
  234. package/build/esm/ui/containers/App/App.js +4 -3
  235. package/build/esm/ui/containers/App/App.js.map +1 -1
  236. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js +39 -22
  237. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  238. package/build/esm/ui/containers/ClusterPage/ClusterPage.d.ts +3 -1
  239. package/build/esm/ui/containers/ClusterPage/ClusterPage.js +4 -2
  240. package/build/esm/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
  241. package/build/esm/ui/containers/ClustersMenu/ClusterMenuHeader.css +5 -0
  242. package/build/esm/ui/containers/ClustersMenu/ClusterMenuHeader.css.map +1 -1
  243. package/build/esm/ui/containers/ClustersMenu/ClusterMenuHeader.scss +6 -0
  244. package/build/esm/ui/containers/ClustersMenu/ClustersMenuBody.d.ts +3 -1
  245. package/build/esm/ui/containers/ClustersMenu/ClustersMenuBody.js +12 -4
  246. package/build/esm/ui/containers/ClustersMenu/ClustersMenuBody.js.map +1 -1
  247. package/build/esm/ui/containers/ClustersMenu/ClustersMenuHeader.d.ts +4 -4
  248. package/build/esm/ui/containers/ClustersMenu/ClustersMenuHeader.js.map +1 -1
  249. package/build/esm/ui/containers/MaintenancePage/HandleRedirect.js.map +1 -1
  250. package/build/esm/ui/entries/main.js +4 -1
  251. package/build/esm/ui/entries/main.js.map +1 -1
  252. package/build/esm/ui/pages/operations/selectors.d.ts +5 -0
  253. package/build/esm/ui/pages/query-tracker/module/queries_list/selectors.d.ts +20 -0
  254. package/build/esm/ui/pages/query-tracker/module/query/selectors.d.ts +5 -0
  255. package/build/esm/ui/pages/query-tracker/module/settings/selector.d.ts +5 -0
  256. package/build/esm/ui/pages/system/Chunks/Chunks.d.ts +1 -1
  257. package/build/esm/ui/store/actions/cluster-params.d.ts +1 -0
  258. package/build/esm/ui/store/actions/cluster-params.js +12 -0
  259. package/build/esm/ui/store/actions/cluster-params.js.map +1 -1
  260. package/build/esm/ui/store/actions/clusters-menu.d.ts +1 -0
  261. package/build/esm/ui/store/actions/clusters-menu.js +22 -3
  262. package/build/esm/ui/store/actions/clusters-menu.js.map +1 -1
  263. package/build/esm/ui/store/actions/global/index.d.ts +3 -1
  264. package/build/esm/ui/store/actions/global/index.js +19 -4
  265. package/build/esm/ui/store/actions/global/index.js.map +1 -1
  266. package/build/esm/ui/store/actions/navigation/content/table/columns-preset.d.ts +1 -1
  267. package/build/esm/ui/store/actions/navigation/content/table/columns-preset.js +6 -4
  268. package/build/esm/ui/store/actions/navigation/content/table/columns-preset.js.map +1 -1
  269. package/build/esm/ui/store/actions/navigation/content/table/table.js +2 -1
  270. package/build/esm/ui/store/actions/navigation/content/table/table.js.map +1 -1
  271. package/build/esm/ui/store/actions/settings/index.js +25 -19
  272. package/build/esm/ui/store/actions/settings/index.js.map +1 -1
  273. package/build/esm/ui/store/reducers/accounts/usage/index.d.ts +1 -1
  274. package/build/esm/ui/store/reducers/clusters-menu/clusters-menu.d.ts +4 -0
  275. package/build/esm/ui/store/reducers/clusters-menu/clusters-menu.js +9 -1
  276. package/build/esm/ui/store/reducers/clusters-menu/clusters-menu.js.map +1 -1
  277. package/build/esm/ui/store/reducers/index.d.ts +5 -0
  278. package/build/esm/ui/store/reducers/index.js.map +1 -1
  279. package/build/esm/ui/store/reducers/settings.js +1 -1
  280. package/build/esm/ui/store/reducers/settings.js.map +1 -1
  281. package/build/esm/ui/store/selectors/accounts/account-usage.d.ts +40 -0
  282. package/build/esm/ui/store/selectors/accounts/accounts-ts.d.ts +40 -0
  283. package/build/esm/ui/store/selectors/chaos_cell_bundles/index.d.ts +55 -0
  284. package/build/esm/ui/store/selectors/chyt/index.d.ts +35 -0
  285. package/build/esm/ui/store/selectors/components/node/memory.d.ts +35 -0
  286. package/build/esm/ui/store/selectors/components/node-maintenance-modal.d.ts +15 -0
  287. package/build/esm/ui/store/selectors/components/nodes/node-card.d.ts +5 -0
  288. package/build/esm/ui/store/selectors/components/nodes/nodes/data.d.ts +10 -0
  289. package/build/esm/ui/store/selectors/components/nodes/nodes/predicates.d.ts +30 -0
  290. package/build/esm/ui/store/selectors/components/versions/versions_v2-ts.d.ts +10 -0
  291. package/build/esm/ui/store/selectors/components/versions/versions_v2.d.ts +25 -0
  292. package/build/esm/ui/store/selectors/global/index.d.ts +912 -0
  293. package/build/esm/ui/store/selectors/global/index.js +10 -1
  294. package/build/esm/ui/store/selectors/global/index.js.map +1 -1
  295. package/build/esm/ui/store/selectors/global/supported-features.d.ts +30 -0
  296. package/build/esm/ui/store/selectors/modals/errors.d.ts +5 -0
  297. package/build/esm/ui/store/selectors/navigation/content/document.d.ts +5 -0
  298. package/build/esm/ui/store/selectors/navigation/content/replicated-table.d.ts +15 -0
  299. package/build/esm/ui/store/selectors/navigation/content/table-mount-config.d.ts +5 -0
  300. package/build/esm/ui/store/selectors/navigation/content/table-ts.d.ts +20 -0
  301. package/build/esm/ui/store/selectors/navigation/content/table.d.ts +35 -0
  302. package/build/esm/ui/store/selectors/navigation/modals/attributes-editor.d.ts +15 -0
  303. package/build/esm/ui/store/selectors/navigation/modals/remote-copy-modal.d.ts +5 -0
  304. package/build/esm/ui/store/selectors/navigation/navigation.d.ts +10 -0
  305. package/build/esm/ui/store/selectors/navigation/tabs/access-log.d.ts +5 -0
  306. package/build/esm/ui/store/selectors/navigation/tabs/annotation.d.ts +5 -0
  307. package/build/esm/ui/store/selectors/navigation/tabs/consumer.d.ts +5 -0
  308. package/build/esm/ui/store/selectors/navigation/tabs/locks.d.ts +10 -0
  309. package/build/esm/ui/store/selectors/navigation/tabs/queue.d.ts +10 -0
  310. package/build/esm/ui/store/selectors/navigation/tabs/tablet-errors.d.ts +5 -0
  311. package/build/esm/ui/store/selectors/operations/index.d.ts +60 -0
  312. package/build/esm/ui/store/selectors/operations/jobs-monitor.d.ts +20 -0
  313. package/build/esm/ui/store/selectors/operations/operation.d.ts +60 -0
  314. package/build/esm/ui/store/selectors/operations/operations-list.d.ts +15 -0
  315. package/build/esm/ui/store/selectors/operations/statistics-v2.d.ts +40 -0
  316. package/build/esm/ui/store/selectors/scheduling/attributes-to-filter.d.ts +5 -0
  317. package/build/esm/ui/store/selectors/scheduling/create-pool-dialog.d.ts +5 -0
  318. package/build/esm/ui/store/selectors/scheduling/expanded-pools.d.ts +5 -0
  319. package/build/esm/ui/store/selectors/scheduling/index.d.ts +5 -0
  320. package/build/esm/ui/store/selectors/scheduling/scheduling-pools.d.ts +15 -0
  321. package/build/esm/ui/store/selectors/scheduling/scheduling-ts.d.ts +30 -0
  322. package/build/esm/ui/store/selectors/scheduling/scheduling.d.ts +100 -0
  323. package/build/esm/ui/store/selectors/tablet_cell_bundles/index.d.ts +75 -0
  324. package/build/esm/ui/store/selectors/thor/support.d.ts +25 -0
  325. package/dist/public/build/assets-manifest.json +12 -12
  326. package/dist/public/build/css/main.8a4cd357.css +2 -0
  327. package/dist/public/build/css/main.8a4cd357.css.map +1 -0
  328. package/dist/public/build/js/{861.9703a31c.chunk.js → 861.a0939319.chunk.js} +2 -2
  329. package/dist/public/build/js/861.a0939319.chunk.js.map +1 -0
  330. package/dist/public/build/js/main.c39cff0d.js +3 -0
  331. package/dist/public/build/js/{main.5b132a95.js.map → main.c39cff0d.js.map} +1 -1
  332. package/dist/public/build/js/runtime.0ac0f2e8.js +2 -0
  333. package/dist/public/build/js/{runtime.a87a1f88.js.map → runtime.0ac0f2e8.js.map} +1 -1
  334. package/dist/public/build/manifest.json +8 -8
  335. package/dist/server/components/layout-config.js +3 -3
  336. package/dist/server/components/requestsSetup.js +13 -5
  337. package/dist/server/components/settings.d.ts +10 -5
  338. package/dist/server/components/settings.js +24 -23
  339. package/dist/server/components/table.d.ts +3 -3
  340. package/dist/server/components/table.js +4 -4
  341. package/dist/server/components/yt-auth.d.ts +0 -2
  342. package/dist/server/components/yt-auth.js +5 -14
  343. package/dist/server/configs/common.js +5 -13
  344. package/dist/server/configs/local.js +0 -5
  345. package/dist/server/controllers/chyt-api.js +1 -1
  346. package/dist/server/controllers/cluster-info.js +2 -2
  347. package/dist/server/controllers/cluster-params.js +1 -1
  348. package/dist/server/controllers/clusters.d.ts +1 -0
  349. package/dist/server/controllers/clusters.js +24 -1
  350. package/dist/server/controllers/home.js +10 -6
  351. package/dist/server/controllers/login.js +18 -5
  352. package/dist/server/controllers/odin-proxy-api.js +1 -1
  353. package/dist/server/controllers/scheduling-pools.js +2 -2
  354. package/dist/server/controllers/settings.js +10 -10
  355. package/dist/server/controllers/table-column-preset.js +4 -3
  356. package/dist/server/controllers/yt-api.js +1 -1
  357. package/dist/server/controllers/yt-proxy-api.js +2 -2
  358. package/dist/server/index.js +11 -8
  359. package/dist/server/middlewares/authorization.d.ts +1 -1
  360. package/dist/server/middlewares/authorization.js +3 -2
  361. package/dist/server/middlewares/yt-auth.js +3 -2
  362. package/dist/server/routes.js +26 -25
  363. package/dist/server/utils/index.d.ts +1 -1
  364. package/dist/server/utils/index.js +12 -4
  365. package/package.json +2 -2
  366. package/dist/public/build/css/main.4aa70d7b.css +0 -2
  367. package/dist/public/build/css/main.4aa70d7b.css.map +0 -1
  368. package/dist/public/build/js/861.9703a31c.chunk.js.map +0 -1
  369. package/dist/public/build/js/main.5b132a95.js +0 -3
  370. package/dist/public/build/js/runtime.a87a1f88.js +0 -2
  371. /package/dist/public/build/js/{main.5b132a95.js.LICENSE.txt → main.c39cff0d.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  import { AppMiddleware } from '@gravity-ui/expresskit';
2
- export declare function createAuthMiddleware(ytAuthCluster: string): AppMiddleware;
2
+ export declare function createAuthMiddleware(): AppMiddleware;
@@ -23,47 +23,52 @@ function isAuthError(e) {
23
23
  var _e$response;
24
24
  return e instanceof AuthError || axios.isAxiosError(e) && ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.status) === 401;
25
25
  }
26
- export function createAuthMiddleware(ytAuthCluster) {
26
+ export function createAuthMiddleware() {
27
27
  return /*#__PURE__*/function () {
28
28
  var _authMiddleware = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res, next) {
29
- var cfg, _yield$getXSRFToken, login, isAuthFailed, error;
29
+ var ytAuthCluster, cfg, _yield$getXSRFToken, login, isAuthFailed, error;
30
30
  return _regeneratorRuntime.wrap(function _callee$(_context) {
31
31
  while (1) switch (_context.prev = _context.next) {
32
32
  case 0:
33
- _context.prev = 0;
33
+ ytAuthCluster = req.params.ytAuthCluster;
34
+ _context.prev = 1;
34
35
  if (isAuthorized(req)) {
35
- _context.next = 3;
36
+ _context.next = 4;
36
37
  break;
37
38
  }
38
39
  throw new AuthError();
39
- case 3:
40
+ case 4:
40
41
  cfg = getUserYTApiSetup(ytAuthCluster, req);
41
- _context.next = 6;
42
+ _context.next = 7;
42
43
  return getXSRFToken(req, cfg);
43
- case 6:
44
+ case 7:
44
45
  _yield$getXSRFToken = _context.sent;
45
46
  login = _yield$getXSRFToken.login;
46
47
  req.yt.login = login;
47
- _context.next = 18;
48
+ _context.next = 19;
48
49
  break;
49
- case 11:
50
- _context.prev = 11;
51
- _context.t0 = _context["catch"](0);
50
+ case 12:
51
+ _context.prev = 12;
52
+ _context.t0 = _context["catch"](1);
52
53
  isAuthFailed = isAuthError(_context.t0);
53
- error = isAuthFailed ? undefined : _context.t0;
54
+ error = isAuthFailed ? {
55
+ extraData: {
56
+ ytAuthCluster: ytAuthCluster
57
+ }
58
+ } : _context.t0;
54
59
  if (!(!req.routeInfo.ui && isAuthFailed)) {
55
- _context.next = 18;
60
+ _context.next = 19;
56
61
  break;
57
62
  }
58
63
  sendError(res, error, 401);
59
64
  return _context.abrupt("return");
60
- case 18:
61
- next();
62
65
  case 19:
66
+ next();
67
+ case 20:
63
68
  case "end":
64
69
  return _context.stop();
65
70
  }
66
- }, _callee, null, [[0, 11]]);
71
+ }, _callee, null, [[1, 12]]);
67
72
  }));
68
73
  function authMiddleware(_x, _x2, _x3) {
69
74
  return _authMiddleware.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"names":["axios","isAuthorized","getUserYTApiSetup","getXSRFToken","sendError","AuthError","_Error","_inherits","_super","_createSuper","_classCallCheck","call","_createClass","_wrapNativeSuper","Error","isAuthError","e","_e$response","isAxiosError","response","status","createAuthMiddleware","ytAuthCluster","_authMiddleware","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","cfg","_yield$getXSRFToken","login","isAuthFailed","error","wrap","_callee$","_context","prev","sent","yt","t0","undefined","routeInfo","ui","abrupt","stop","authMiddleware","_x","_x2","_x3","apply","arguments"],"sources":["authorization.ts"],"sourcesContent":["import axios from 'axios';\nimport {isAuthorized} from '../utils/authorization';\nimport {getUserYTApiSetup} from '../components/requestsSetup';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {getXSRFToken} from '../components/cluster-queries';\nimport {sendError} from '../utils';\n\nclass AuthError extends Error {\n constructor() {\n super('Authorization required');\n }\n}\n\nfunction isAuthError(e: unknown) {\n return e instanceof AuthError || (axios.isAxiosError(e) && e.response?.status === 401);\n}\n\nexport function createAuthMiddleware(ytAuthCluster: string): AppMiddleware {\n return async function authMiddleware(req, res, next) {\n try {\n if (!isAuthorized(req)) {\n throw new AuthError();\n }\n\n const cfg = getUserYTApiSetup(ytAuthCluster, req);\n const {login} = await getXSRFToken(req, cfg);\n req.yt.login = login;\n } catch (e) {\n const isAuthFailed = isAuthError(e);\n const error = isAuthFailed ? undefined : e;\n\n if (!req.routeInfo.ui && isAuthFailed) {\n sendError(res, error, 401);\n return;\n }\n }\n\n next();\n };\n}\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,YAAY,QAAO,wBAAwB;AACnD,SAAQC,iBAAiB,QAAO,6BAA6B;AAE7D,SAAQC,YAAY,QAAO,+BAA+B;AAC1D,SAAQC,SAAS,QAAO,UAAU;AAAC,IAE7BC,SAAS,0BAAAC,MAAA;EAAAC,SAAA,CAAAF,SAAA,EAAAC,MAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,SAAA;EACX,SAAAA,UAAA,EAAc;IAAAK,eAAA,OAAAL,SAAA;IAAA,OAAAG,MAAA,CAAAG,IAAA,OACJ,wBAAwB;EAClC;EAAC,OAAAC,YAAA,CAAAP,SAAA;AAAA,gBAAAQ,gBAAA,CAHmBC,KAAK;AAM7B,SAASC,WAAWA,CAACC,CAAU,EAAE;EAAA,IAAAC,WAAA;EAC7B,OAAOD,CAAC,YAAYX,SAAS,IAAKL,KAAK,CAACkB,YAAY,CAACF,CAAC,CAAC,IAAI,EAAAC,WAAA,GAAAD,CAAC,CAACG,QAAQ,cAAAF,WAAA,uBAAVA,WAAA,CAAYG,MAAM,MAAK,GAAI;AAC1F;AAEA,OAAO,SAASC,oBAAoBA,CAACC,aAAqB,EAAiB;EACvE;IAAA,IAAAC,eAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAA8BC,GAAG,EAAEC,GAAG,EAAEC,IAAI;MAAA,IAAAC,GAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,YAAA,EAAAC,KAAA;MAAA,OAAAV,mBAAA,CAAAW,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAR,IAAA;UAAA;YAAAQ,QAAA,CAAAC,IAAA;YAAA,IAEtCtC,YAAY,CAAC2B,GAAG,CAAC;cAAAU,QAAA,CAAAR,IAAA;cAAA;YAAA;YAAA,MACZ,IAAIzB,SAAS,CAAC,CAAC;UAAA;YAGnB0B,GAAG,GAAG7B,iBAAiB,CAACoB,aAAa,EAAEM,GAAG,CAAC;YAAAU,QAAA,CAAAR,IAAA;YAAA,OAC3B3B,YAAY,CAACyB,GAAG,EAAEG,GAAG,CAAC;UAAA;YAAAC,mBAAA,GAAAM,QAAA,CAAAE,IAAA;YAArCP,KAAK,GAAAD,mBAAA,CAALC,KAAK;YACZL,GAAG,CAACa,EAAE,CAACR,KAAK,GAAGA,KAAK;YAACK,QAAA,CAAAR,IAAA;YAAA;UAAA;YAAAQ,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAI,EAAA,GAAAJ,QAAA;YAEfJ,YAAY,GAAGnB,WAAW,CAAAuB,QAAA,CAAAI,EAAE,CAAC;YAC7BP,KAAK,GAAGD,YAAY,GAAGS,SAAS,GAAAL,QAAA,CAAAI,EAAI;YAAA,MAEtC,CAACd,GAAG,CAACgB,SAAS,CAACC,EAAE,IAAIX,YAAY;cAAAI,QAAA,CAAAR,IAAA;cAAA;YAAA;YACjC1B,SAAS,CAACyB,GAAG,EAAEM,KAAK,EAAE,GAAG,CAAC;YAAC,OAAAG,QAAA,CAAAQ,MAAA;UAAA;YAKnChB,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAQ,QAAA,CAAAS,IAAA;QAAA;MAAA,GAAApB,OAAA;IAAA,CACV;IAAA,SApBqBqB,cAAcA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAA5B,eAAA,CAAA6B,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAdL,cAAc;EAAA;AAqBxC"}
1
+ {"version":3,"names":["axios","isAuthorized","getUserYTApiSetup","getXSRFToken","sendError","AuthError","_Error","_inherits","_super","_createSuper","_classCallCheck","call","_createClass","_wrapNativeSuper","Error","isAuthError","e","_e$response","isAxiosError","response","status","createAuthMiddleware","_authMiddleware","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","ytAuthCluster","cfg","_yield$getXSRFToken","login","isAuthFailed","error","wrap","_callee$","_context","prev","params","sent","yt","t0","extraData","routeInfo","ui","abrupt","stop","authMiddleware","_x","_x2","_x3","apply","arguments"],"sources":["authorization.ts"],"sourcesContent":["import axios from 'axios';\nimport {isAuthorized} from '../utils/authorization';\nimport {getUserYTApiSetup} from '../components/requestsSetup';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {getXSRFToken} from '../components/cluster-queries';\nimport {sendError} from '../utils';\n\nclass AuthError extends Error {\n constructor() {\n super('Authorization required');\n }\n}\n\nfunction isAuthError(e: unknown) {\n return e instanceof AuthError || (axios.isAxiosError(e) && e.response?.status === 401);\n}\n\nexport function createAuthMiddleware(): AppMiddleware {\n return async function authMiddleware(req, res, next) {\n const {ytAuthCluster} = req.params;\n\n try {\n if (!isAuthorized(req)) {\n throw new AuthError();\n }\n\n const cfg = getUserYTApiSetup(ytAuthCluster, req);\n const {login} = await getXSRFToken(req, cfg);\n req.yt.login = login;\n } catch (e) {\n const isAuthFailed = isAuthError(e);\n const error = isAuthFailed ? {extraData: {ytAuthCluster}} : e;\n\n if (!req.routeInfo.ui && isAuthFailed) {\n sendError(res, error, 401);\n return;\n }\n }\n\n next();\n };\n}\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,YAAY,QAAO,wBAAwB;AACnD,SAAQC,iBAAiB,QAAO,6BAA6B;AAE7D,SAAQC,YAAY,QAAO,+BAA+B;AAC1D,SAAQC,SAAS,QAAO,UAAU;AAAC,IAE7BC,SAAS,0BAAAC,MAAA;EAAAC,SAAA,CAAAF,SAAA,EAAAC,MAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,SAAA;EACX,SAAAA,UAAA,EAAc;IAAAK,eAAA,OAAAL,SAAA;IAAA,OAAAG,MAAA,CAAAG,IAAA,OACJ,wBAAwB;EAClC;EAAC,OAAAC,YAAA,CAAAP,SAAA;AAAA,gBAAAQ,gBAAA,CAHmBC,KAAK;AAM7B,SAASC,WAAWA,CAACC,CAAU,EAAE;EAAA,IAAAC,WAAA;EAC7B,OAAOD,CAAC,YAAYX,SAAS,IAAKL,KAAK,CAACkB,YAAY,CAACF,CAAC,CAAC,IAAI,EAAAC,WAAA,GAAAD,CAAC,CAACG,QAAQ,cAAAF,WAAA,uBAAVA,WAAA,CAAYG,MAAM,MAAK,GAAI;AAC1F;AAEA,OAAO,SAASC,oBAAoBA,CAAA,EAAkB;EAClD;IAAA,IAAAC,eAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAA8BC,GAAG,EAAEC,GAAG,EAAEC,IAAI;MAAA,IAAAC,aAAA,EAAAC,GAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,YAAA,EAAAC,KAAA;MAAA,OAAAX,mBAAA,CAAAY,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAT,IAAA;UAAA;YACxCC,aAAa,GAAIH,GAAG,CAACa,MAAM,CAA3BV,aAAa;YAAAQ,QAAA,CAAAC,IAAA;YAAA,IAGXtC,YAAY,CAAC0B,GAAG,CAAC;cAAAW,QAAA,CAAAT,IAAA;cAAA;YAAA;YAAA,MACZ,IAAIxB,SAAS,CAAC,CAAC;UAAA;YAGnB0B,GAAG,GAAG7B,iBAAiB,CAAC4B,aAAa,EAAEH,GAAG,CAAC;YAAAW,QAAA,CAAAT,IAAA;YAAA,OAC3B1B,YAAY,CAACwB,GAAG,EAAEI,GAAG,CAAC;UAAA;YAAAC,mBAAA,GAAAM,QAAA,CAAAG,IAAA;YAArCR,KAAK,GAAAD,mBAAA,CAALC,KAAK;YACZN,GAAG,CAACe,EAAE,CAACT,KAAK,GAAGA,KAAK;YAACK,QAAA,CAAAT,IAAA;YAAA;UAAA;YAAAS,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAK,EAAA,GAAAL,QAAA;YAEfJ,YAAY,GAAGnB,WAAW,CAAAuB,QAAA,CAAAK,EAAE,CAAC;YAC7BR,KAAK,GAAGD,YAAY,GAAG;cAACU,SAAS,EAAE;gBAACd,aAAa,EAAbA;cAAa;YAAC,CAAC,GAAAQ,QAAA,CAAAK,EAAI;YAAA,MAEzD,CAAChB,GAAG,CAACkB,SAAS,CAACC,EAAE,IAAIZ,YAAY;cAAAI,QAAA,CAAAT,IAAA;cAAA;YAAA;YACjCzB,SAAS,CAACwB,GAAG,EAAEO,KAAK,EAAE,GAAG,CAAC;YAAC,OAAAG,QAAA,CAAAS,MAAA;UAAA;YAKnClB,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAS,QAAA,CAAAU,IAAA;QAAA;MAAA,GAAAtB,OAAA;IAAA,CACV;IAAA,SAtBqBuB,cAAcA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAA9B,eAAA,CAAA+B,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAdL,cAAc;EAAA;AAuBxC"}
@@ -3,28 +3,29 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { YT_CYPRESS_COOKIE_NAME } from '../../shared/constants';
4
4
  export function createYTAuthorizationResolver() {
5
5
  return /*#__PURE__*/function () {
6
- var _resoleOAuthAuthorize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, _, next) {
7
- var secret;
6
+ var _resolveYTAuthorization = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, _, next) {
7
+ var ytAuthCluster, secret;
8
8
  return _regeneratorRuntime.wrap(function _callee$(_context) {
9
9
  while (1) switch (_context.prev = _context.next) {
10
10
  case 0:
11
- secret = req.cookies[YT_CYPRESS_COOKIE_NAME];
11
+ ytAuthCluster = req.params.ytAuthCluster;
12
+ secret = req.cookies["".concat(ytAuthCluster, ":").concat(YT_CYPRESS_COOKIE_NAME)];
12
13
  req.yt = {
13
14
  ytApiAuthHeaders: {
14
15
  Cookie: "".concat(YT_CYPRESS_COOKIE_NAME, "=").concat(secret, ";")
15
16
  }
16
17
  };
17
18
  next();
18
- case 3:
19
+ case 4:
19
20
  case "end":
20
21
  return _context.stop();
21
22
  }
22
23
  }, _callee);
23
24
  }));
24
- function resoleOAuthAuthorize(_x, _x2, _x3) {
25
- return _resoleOAuthAuthorize.apply(this, arguments);
25
+ function resolveYTAuthorization(_x, _x2, _x3) {
26
+ return _resolveYTAuthorization.apply(this, arguments);
26
27
  }
27
- return resoleOAuthAuthorize;
28
+ return resolveYTAuthorization;
28
29
  }();
29
30
  }
30
31
  // #sourceMappingURL=yt-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["YT_CYPRESS_COOKIE_NAME","createYTAuthorizationResolver","_resoleOAuthAuthorize","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","_","next","secret","wrap","_callee$","_context","prev","cookies","yt","ytApiAuthHeaders","Cookie","concat","stop","resoleOAuthAuthorize","_x","_x2","_x3","apply","arguments"],"sources":["yt-auth.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\n\nexport function createYTAuthorizationResolver(): AppMiddleware {\n return async function resoleOAuthAuthorize(req: Request, _: Response, next) {\n const secret: string = req.cookies[YT_CYPRESS_COOKIE_NAME];\n req.yt = {\n ytApiAuthHeaders: {\n Cookie: `${YT_CYPRESS_COOKIE_NAME}=${secret};`,\n },\n };\n next();\n };\n}\n"],"mappings":";;AAEA,SAAQA,sBAAsB,QAAO,wBAAwB;AAE7D,OAAO,SAASC,6BAA6BA,CAAA,EAAkB;EAC3D;IAAA,IAAAC,qBAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAAoCC,GAAY,EAAEC,CAAW,EAAEC,IAAI;MAAA,IAAAC,MAAA;MAAA,OAAAN,mBAAA,CAAAO,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAJ,IAAA;UAAA;YAChEC,MAAc,GAAGH,GAAG,CAACQ,OAAO,CAACf,sBAAsB,CAAC;YAC1DO,GAAG,CAACS,EAAE,GAAG;cACLC,gBAAgB,EAAE;gBACdC,MAAM,KAAAC,MAAA,CAAKnB,sBAAsB,OAAAmB,MAAA,CAAIT,MAAM;cAC/C;YACJ,CAAC;YACDD,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAI,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAd,OAAA;IAAA,CACV;IAAA,SARqBe,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAtB,qBAAA,CAAAuB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAApBL,oBAAoB;EAAA;AAS9C"}
1
+ {"version":3,"names":["YT_CYPRESS_COOKIE_NAME","createYTAuthorizationResolver","_resolveYTAuthorization","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","_","next","ytAuthCluster","secret","wrap","_callee$","_context","prev","params","cookies","concat","yt","ytApiAuthHeaders","Cookie","stop","resolveYTAuthorization","_x","_x2","_x3","apply","arguments"],"sources":["yt-auth.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\n\nexport function createYTAuthorizationResolver(): AppMiddleware {\n return async function resolveYTAuthorization(req: Request, _: Response, next) {\n const {ytAuthCluster} = req.params;\n\n const secret: string = req.cookies[`${ytAuthCluster}:${YT_CYPRESS_COOKIE_NAME}`];\n\n req.yt = {\n ytApiAuthHeaders: {\n Cookie: `${YT_CYPRESS_COOKIE_NAME}=${secret};`,\n },\n };\n\n next();\n };\n}\n"],"mappings":";;AAEA,SAAQA,sBAAsB,QAAO,wBAAwB;AAE7D,OAAO,SAASC,6BAA6BA,CAAA,EAAkB;EAC3D;IAAA,IAAAC,uBAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAAsCC,GAAY,EAAEC,CAAW,EAAEC,IAAI;MAAA,IAAAC,aAAA,EAAAC,MAAA;MAAA,OAAAP,mBAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAL,IAAA;UAAA;YACjEC,aAAa,GAAIH,GAAG,CAACS,MAAM,CAA3BN,aAAa;YAEdC,MAAc,GAAGJ,GAAG,CAACU,OAAO,IAAAC,MAAA,CAAIR,aAAa,OAAAQ,MAAA,CAAIlB,sBAAsB,EAAG;YAEhFO,GAAG,CAACY,EAAE,GAAG;cACLC,gBAAgB,EAAE;gBACdC,MAAM,KAAAH,MAAA,CAAKlB,sBAAsB,OAAAkB,MAAA,CAAIP,MAAM;cAC/C;YACJ,CAAC;YAEDF,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAK,QAAA,CAAAQ,IAAA;QAAA;MAAA,GAAAhB,OAAA;IAAA,CACV;IAAA,SAZqBiB,sBAAsBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAxB,uBAAA,CAAAyB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAtBL,sBAAsB;EAAA;AAahD"}
@@ -6,7 +6,7 @@ import { ytProxyApi } from './controllers/yt-proxy-api';
6
6
  import { settingsCreate, settingsDeleteItem, settingsGet, settingsGetItem, settingsSetItem } from './controllers/settings';
7
7
  import { homeIndex, homeRedirect } from './controllers/home';
8
8
  import { handleClusterInfo } from './controllers/cluster-info';
9
- import { clusterVersions } from './controllers/clusters';
9
+ import { clusterAuthStatus, clusterVersions } from './controllers/clusters';
10
10
  import { tableColumnPresetGet, tableColumnPresetSave } from './controllers/table-column-preset';
11
11
  import { ping } from './controllers/ping';
12
12
  import { handleChangePassword, handleLogin } from './controllers/login';
@@ -22,25 +22,28 @@ var HOME_INDEX_TARGET = {
22
22
  ui: true
23
23
  };
24
24
  var routes = {
25
- 'GET /change-password/': HOME_INDEX_TARGET,
25
+ 'GET /:ytAuthCluster/change-password/': HOME_INDEX_TARGET,
26
26
  'GET /': HOME_INDEX_TARGET,
27
27
  'GET /ping': {
28
28
  handler: ping,
29
29
  authPolicy: AuthPolicy.disabled
30
30
  },
31
- 'GET /api/cluster-info/:cluster': {
31
+ 'GET /api/cluster-info/:ytAuthCluster': {
32
32
  handler: handleClusterInfo
33
33
  },
34
- 'GET /api/cluster-params/:cluster': {
34
+ 'GET /api/cluster-params/:ytAuthCluster': {
35
35
  handler: clusterParams
36
36
  },
37
37
  'GET /api/clusters/versions': {
38
38
  handler: clusterVersions
39
39
  },
40
- 'GET /api/pool-names/:cluster': {
40
+ 'GET /api/clusters/auth-status': {
41
+ handler: clusterAuthStatus
42
+ },
43
+ 'GET /api/pool-names/:ytAuthCluster': {
41
44
  handler: getClusterPools
42
45
  },
43
- 'POST /api/yt/login': {
46
+ 'POST /api/yt/:ytAuthCluster/login': {
44
47
  handler: handleLogin,
45
48
  ui: true
46
49
  },
@@ -60,7 +63,7 @@ var routes = {
60
63
  handler: oauthLogout,
61
64
  ui: true
62
65
  },
63
- 'POST /api/yt/change-password': {
66
+ 'POST /api/yt/:ytAuthCluster/change-password': {
64
67
  handler: handleChangePassword,
65
68
  ui: true
66
69
  },
@@ -70,56 +73,56 @@ var routes = {
70
73
  'POST /api/markdown-to-html': {
71
74
  handler: markdownToHtmlHandler
72
75
  },
73
- 'GET /api/yt/:cluster/api/:version/:command': {
76
+ 'GET /api/yt/:ytAuthCluster/api/:version/:command': {
74
77
  handler: ytTvmApiHandler
75
78
  },
76
- 'POST /api/yt/:cluster/api/:version/:command': {
79
+ 'POST /api/yt/:ytAuthCluster/api/:version/:command': {
77
80
  handler: ytTvmApiHandler
78
81
  },
79
- 'PUT /api/yt/:cluster/api/:version/:command': {
82
+ 'PUT /api/yt/:ytAuthCluster/api/:version/:command': {
80
83
  handler: ytTvmApiHandler
81
84
  },
82
- 'GET /api/yt-proxy/:cluster/:command': {
85
+ 'GET /api/yt-proxy/:ytAuthCluster/:command': {
83
86
  handler: ytProxyApi
84
87
  },
85
- 'GET /api/odin/proxy/:action/:cluster?': {
88
+ 'GET /api/odin/proxy/:action/:ytAuthCluster?': {
86
89
  handler: odinProxyApi
87
90
  },
88
91
  'GET /api/odin/clusters/availability': {
89
92
  handler: getClustersAvailability
90
93
  },
91
- 'POST /api/chyt/:cluster/:action': {
94
+ 'POST /api/chyt/:ytAuthCluster/:action': {
92
95
  handler: chytProxyApi
93
96
  },
94
- 'GET /api/settings/:username': {
97
+ 'GET /api/settings/:ytAuthCluster/:username': {
95
98
  handler: settingsGet
96
99
  },
97
- 'POST /api/settings/:username': {
100
+ 'POST /api/settings/:ytAuthCluster/:username': {
98
101
  handler: settingsCreate
99
102
  },
100
- 'GET /api/settings/:username/:path': {
103
+ 'GET /api/settings/:ytAuthCluster/:username/:path': {
101
104
  handler: settingsGetItem
102
105
  },
103
- 'PUT /api/settings/:username/:path': {
106
+ 'PUT /api/settings/:ytAuthCluster/:username/:path': {
104
107
  handler: settingsSetItem
105
108
  },
106
- 'DELETE /api/settings/:username/:path': {
109
+ 'DELETE /api/settings/:ytAuthCluster/:username/:path': {
107
110
  handler: settingsDeleteItem
108
111
  },
109
- 'GET /api/table-column-preset/:hash': {
112
+ 'GET /api/table-column-preset/:ytAuthCluster/:hash': {
110
113
  handler: tableColumnPresetGet
111
114
  },
112
- 'POST /api/table-column-preset': {
115
+ 'POST /api/table-column-preset/:ytAuthCluster': {
113
116
  handler: tableColumnPresetSave
114
117
  },
115
- 'GET /:cluster/': HOME_INDEX_TARGET,
116
- 'GET /:cluster/maintenance': {
118
+ 'GET /:ytAuthCluster/': HOME_INDEX_TARGET,
119
+ 'GET /:ytAuthCluster/maintenance': {
117
120
  handler: homeRedirect
118
121
  },
119
- 'GET /:cluster/:page': HOME_INDEX_TARGET,
120
- 'GET /:cluster/:page/:tab': HOME_INDEX_TARGET,
121
- 'GET /:cluster/:page/:operation/:tab': HOME_INDEX_TARGET,
122
- 'GET /:cluster/:page/:operation/:job/:tab': HOME_INDEX_TARGET
122
+ 'GET /:ytAuthCluster/:page': HOME_INDEX_TARGET,
123
+ 'GET /:ytAuthCluster/:page/:tab': HOME_INDEX_TARGET,
124
+ 'GET /:ytAuthCluster/:page/:operation/:tab': HOME_INDEX_TARGET,
125
+ 'GET /:ytAuthCluster/:page/:operation/:job/:tab': HOME_INDEX_TARGET
123
126
  };
124
127
  export default routes;
125
128
  // #sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AuthPolicy","clusterParams","ytTvmApiHandler","handleRemoteCopy","ytProxyApi","settingsCreate","settingsDeleteItem","settingsGet","settingsGetItem","settingsSetItem","homeIndex","homeRedirect","handleClusterInfo","clusterVersions","tableColumnPresetGet","tableColumnPresetSave","ping","handleChangePassword","handleLogin","getClusterPools","markdownToHtmlHandler","odinProxyApi","getClustersAvailability","chytProxyApi","oauthCallback","oauthLogin","oauthLogout","handleLogout","HOME_INDEX_TARGET","handler","ui","routes","authPolicy","disabled"],"sources":["routes.ts"],"sourcesContent":["import {AppRouteDescription, AppRoutes, AuthPolicy} from '@gravity-ui/expresskit';\nimport {clusterParams} from './controllers/cluster-params';\nimport {ytTvmApiHandler} from './controllers/yt-api';\nimport {handleRemoteCopy} from './controllers/remote-copy';\nimport {ytProxyApi} from './controllers/yt-proxy-api';\nimport {\n settingsCreate,\n settingsDeleteItem,\n settingsGet,\n settingsGetItem,\n settingsSetItem,\n} from './controllers/settings';\nimport {homeIndex, homeRedirect} from './controllers/home';\nimport {handleClusterInfo} from './controllers/cluster-info';\n\nimport {clusterVersions} from './controllers/clusters';\nimport {tableColumnPresetGet, tableColumnPresetSave} from './controllers/table-column-preset';\nimport {ping} from './controllers/ping';\nimport {handleChangePassword, handleLogin} from './controllers/login';\nimport {getClusterPools} from './controllers/scheduling-pools';\nimport {markdownToHtmlHandler} from './controllers/markdown-to-html';\nimport {odinProxyApi} from './controllers/odin-proxy-api';\nimport {getClustersAvailability} from './controllers/availability';\nimport {chytProxyApi} from './controllers/chyt-api';\nimport {oauthCallback, oauthLogin, oauthLogout} from './controllers/oauth-login';\nimport {handleLogout} from './controllers/logout';\n\nconst HOME_INDEX_TARGET: AppRouteDescription = {handler: homeIndex, ui: true};\n\nconst routes: AppRoutes = {\n 'GET /change-password/': HOME_INDEX_TARGET,\n 'GET /': HOME_INDEX_TARGET,\n 'GET /ping': {handler: ping, authPolicy: AuthPolicy.disabled},\n 'GET /api/cluster-info/:cluster': {handler: handleClusterInfo},\n 'GET /api/cluster-params/:cluster': {handler: clusterParams},\n 'GET /api/clusters/versions': {handler: clusterVersions},\n 'GET /api/pool-names/:cluster': {handler: getClusterPools},\n 'POST /api/yt/login': {handler: handleLogin, ui: true},\n 'GET /api/yt/logout': {handler: handleLogout, ui: true},\n\n 'GET /oauth/login': {handler: oauthLogin, ui: true},\n 'GET /api/oauth/callback': {handler: oauthCallback, ui: true},\n 'GET /api/oauth/logout/callback': {handler: oauthLogout, ui: true},\n\n 'POST /api/yt/change-password': {handler: handleChangePassword, ui: true},\n 'POST /api/remote-copy': {handler: handleRemoteCopy},\n\n 'POST /api/markdown-to-html': {handler: markdownToHtmlHandler},\n\n 'GET /api/yt/:cluster/api/:version/:command': {handler: ytTvmApiHandler},\n 'POST /api/yt/:cluster/api/:version/:command': {handler: ytTvmApiHandler},\n 'PUT /api/yt/:cluster/api/:version/:command': {handler: ytTvmApiHandler},\n\n 'GET /api/yt-proxy/:cluster/:command': {handler: ytProxyApi},\n\n 'GET /api/odin/proxy/:action/:cluster?': {handler: odinProxyApi},\n 'GET /api/odin/clusters/availability': {handler: getClustersAvailability},\n\n 'POST /api/chyt/:cluster/:action': {handler: chytProxyApi},\n\n 'GET /api/settings/:username': {handler: settingsGet},\n 'POST /api/settings/:username': {handler: settingsCreate},\n 'GET /api/settings/:username/:path': {handler: settingsGetItem},\n 'PUT /api/settings/:username/:path': {handler: settingsSetItem},\n 'DELETE /api/settings/:username/:path': {handler: settingsDeleteItem},\n\n 'GET /api/table-column-preset/:hash': {\n handler: tableColumnPresetGet,\n },\n 'POST /api/table-column-preset': {handler: tableColumnPresetSave},\n\n 'GET /:cluster/': HOME_INDEX_TARGET,\n 'GET /:cluster/maintenance': {handler: homeRedirect},\n 'GET /:cluster/:page': HOME_INDEX_TARGET,\n 'GET /:cluster/:page/:tab': HOME_INDEX_TARGET,\n 'GET /:cluster/:page/:operation/:tab': HOME_INDEX_TARGET,\n 'GET /:cluster/:page/:operation/:job/:tab': HOME_INDEX_TARGET,\n};\n\nexport default routes;\n"],"mappings":"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"}
1
+ {"version":3,"names":["AuthPolicy","clusterParams","ytTvmApiHandler","handleRemoteCopy","ytProxyApi","settingsCreate","settingsDeleteItem","settingsGet","settingsGetItem","settingsSetItem","homeIndex","homeRedirect","handleClusterInfo","clusterAuthStatus","clusterVersions","tableColumnPresetGet","tableColumnPresetSave","ping","handleChangePassword","handleLogin","getClusterPools","markdownToHtmlHandler","odinProxyApi","getClustersAvailability","chytProxyApi","oauthCallback","oauthLogin","oauthLogout","handleLogout","HOME_INDEX_TARGET","handler","ui","routes","authPolicy","disabled"],"sources":["routes.ts"],"sourcesContent":["import {AppRouteDescription, AppRoutes, AuthPolicy} from '@gravity-ui/expresskit';\nimport {clusterParams} from './controllers/cluster-params';\nimport {ytTvmApiHandler} from './controllers/yt-api';\nimport {handleRemoteCopy} from './controllers/remote-copy';\nimport {ytProxyApi} from './controllers/yt-proxy-api';\nimport {\n settingsCreate,\n settingsDeleteItem,\n settingsGet,\n settingsGetItem,\n settingsSetItem,\n} from './controllers/settings';\nimport {homeIndex, homeRedirect} from './controllers/home';\nimport {handleClusterInfo} from './controllers/cluster-info';\n\nimport {clusterAuthStatus, clusterVersions} from './controllers/clusters';\nimport {tableColumnPresetGet, tableColumnPresetSave} from './controllers/table-column-preset';\nimport {ping} from './controllers/ping';\nimport {handleChangePassword, handleLogin} from './controllers/login';\nimport {getClusterPools} from './controllers/scheduling-pools';\nimport {markdownToHtmlHandler} from './controllers/markdown-to-html';\nimport {odinProxyApi} from './controllers/odin-proxy-api';\nimport {getClustersAvailability} from './controllers/availability';\nimport {chytProxyApi} from './controllers/chyt-api';\nimport {oauthCallback, oauthLogin, oauthLogout} from './controllers/oauth-login';\nimport {handleLogout} from './controllers/logout';\n\nconst HOME_INDEX_TARGET: AppRouteDescription = {handler: homeIndex, ui: true};\n\nconst routes: AppRoutes = {\n 'GET /:ytAuthCluster/change-password/': HOME_INDEX_TARGET,\n 'GET /': HOME_INDEX_TARGET,\n 'GET /ping': {handler: ping, authPolicy: AuthPolicy.disabled},\n 'GET /api/cluster-info/:ytAuthCluster': {handler: handleClusterInfo},\n 'GET /api/cluster-params/:ytAuthCluster': {handler: clusterParams},\n 'GET /api/clusters/versions': {handler: clusterVersions},\n 'GET /api/clusters/auth-status': {handler: clusterAuthStatus},\n 'GET /api/pool-names/:ytAuthCluster': {handler: getClusterPools},\n 'POST /api/yt/:ytAuthCluster/login': {handler: handleLogin, ui: true},\n 'GET /api/yt/logout': {handler: handleLogout, ui: true},\n\n 'GET /oauth/login': {handler: oauthLogin, ui: true},\n 'GET /api/oauth/callback': {handler: oauthCallback, ui: true},\n 'GET /api/oauth/logout/callback': {handler: oauthLogout, ui: true},\n\n 'POST /api/yt/:ytAuthCluster/change-password': {handler: handleChangePassword, ui: true},\n 'POST /api/remote-copy': {handler: handleRemoteCopy},\n\n 'POST /api/markdown-to-html': {handler: markdownToHtmlHandler},\n\n 'GET /api/yt/:ytAuthCluster/api/:version/:command': {handler: ytTvmApiHandler},\n 'POST /api/yt/:ytAuthCluster/api/:version/:command': {handler: ytTvmApiHandler},\n 'PUT /api/yt/:ytAuthCluster/api/:version/:command': {handler: ytTvmApiHandler},\n\n 'GET /api/yt-proxy/:ytAuthCluster/:command': {handler: ytProxyApi},\n\n 'GET /api/odin/proxy/:action/:ytAuthCluster?': {handler: odinProxyApi},\n 'GET /api/odin/clusters/availability': {handler: getClustersAvailability},\n\n 'POST /api/chyt/:ytAuthCluster/:action': {handler: chytProxyApi},\n\n 'GET /api/settings/:ytAuthCluster/:username': {handler: settingsGet},\n 'POST /api/settings/:ytAuthCluster/:username': {handler: settingsCreate},\n 'GET /api/settings/:ytAuthCluster/:username/:path': {handler: settingsGetItem},\n 'PUT /api/settings/:ytAuthCluster/:username/:path': {handler: settingsSetItem},\n 'DELETE /api/settings/:ytAuthCluster/:username/:path': {handler: settingsDeleteItem},\n\n 'GET /api/table-column-preset/:ytAuthCluster/:hash': {\n handler: tableColumnPresetGet,\n },\n 'POST /api/table-column-preset/:ytAuthCluster': {handler: tableColumnPresetSave},\n\n 'GET /:ytAuthCluster/': HOME_INDEX_TARGET,\n 'GET /:ytAuthCluster/maintenance': {handler: homeRedirect},\n 'GET /:ytAuthCluster/:page': HOME_INDEX_TARGET,\n 'GET /:ytAuthCluster/:page/:tab': HOME_INDEX_TARGET,\n 'GET /:ytAuthCluster/:page/:operation/:tab': HOME_INDEX_TARGET,\n 'GET /:ytAuthCluster/:page/:operation/:job/:tab': HOME_INDEX_TARGET,\n};\n\nexport default routes;\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { AppContext } from '@gravity-ui/nodekit';
6
6
  export declare function isProductionEnv(): boolean;
7
7
  export declare function isLocalModeByEnvironment(): boolean;
8
8
  export declare function getInterfaceVersion(): any;
9
- export declare function prepareErrorToSend(e: unknown): import("../../@types/types").YTError;
9
+ export declare function prepareErrorToSend(e: unknown): import("../../@types/types").YTError | Record<string, any>;
10
10
  export declare function sendResponse(res: Response, data: object): Response<any, Record<string, any>>;
11
11
  export declare function sendError(res: Response, error: unknown, errCode?: number): Response<any, Record<string, any>>;
12
12
  export declare const UNEXPECTED_PIPE_AXIOS_RESPONSE = "Unexpected behavior: response.data should be an instance of stream.Readable";
@@ -31,18 +31,24 @@ export function getInterfaceVersion() {
31
31
  return 'local';
32
32
  }
33
33
  }
34
+ function isExtraDataError(error) {
35
+ return error.extraData !== undefined;
36
+ }
34
37
  export function prepareErrorToSend(e) {
35
- var message = '';
38
+ var res = {
39
+ message: ''
40
+ };
36
41
  if (e instanceof Error) {
37
- message = _toString(e);
42
+ res.message = _toString(e);
38
43
  } else if (isYTError(e)) {
39
44
  return e;
40
45
  } else {
41
- message = JSON.stringify(e);
46
+ res.message = JSON.stringify(e);
42
47
  }
43
- return {
44
- message: message
45
- };
48
+ if (isExtraDataError(e)) {
49
+ res.extraData = e.extraData;
50
+ }
51
+ return res;
46
52
  }
47
53
  export function sendResponse(res, data) {
48
54
  return res.set('content-type', 'application/json').status(200).send(JSON.stringify(data));
@@ -1 +1 @@
1
- {"version":3,"names":["stream","isYTError","getApp","path","isProductionEnv","config","appEnv","isLocalModeByEnvironment","process","env","APP_ENV","getInterfaceVersion","INIT_CWD","packageJsonPath","resolve","require","version","e","nodekit","ctx","logError","concat","prepareErrorToSend","message","Error","_toString","JSON","stringify","sendResponse","res","data","set","status","send","sendError","error","errCode","arguments","length","undefined","errData","asAxiosError","isAxiosError","UNEXPECTED_PIPE_AXIOS_RESPONSE","UNEXPECTED_PIPE_AXIOS_ERROR","pipeAxiosErrorOrFalse","_x","_x2","_x3","_pipeAxiosErrorOrFalse","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dst","wrap","_callee$","_context","prev","next","pipeAxiosResponse","response","abrupt","sent","stop","LOG_HEADERS","_x4","_x5","_x6","_pipeAxiosResponse","_callee2","src","logMsgPrefix","transformHeaders","_args2","_callee2$","_context2","v","Readable","pipeResponse","headers","Promise","_x7","_x8","_x9","_x10","_x11","_x12","_pipeResponse","_callee3","headersToLog","pipedDataSize","_args3","_callee3$","_context3","_forEach","value","key","setHeader","_pick","log","pipeReadableToWriteable","headerContentLength","_x13","_x14","_x15","_x16","_pipeReadableToWriteable","_callee4","firstChunk","closePromise","_callee4$","_context4","reject","on","chunk","pipe","sendAndLogError","_x17","_x18","_x19","_x20","_sendAndLogError","_callee5","extra","ae","_ae$response","_args5","_callee5$","_context5","toJSON","append","statusText","mesasge"],"sources":["index.ts"],"sourcesContent":["import * as stream from 'stream';\nimport _ from 'lodash';\nimport type {Response} from 'express';\nimport {AxiosError, AxiosResponse} from 'axios';\nimport {AppContext} from '@gravity-ui/nodekit';\nimport {isYTError} from '../../shared/utils';\nimport {getApp} from '../ServerFactory';\nimport path from 'path';\n\nexport function isProductionEnv() {\n return getApp().config.appEnv !== 'development';\n}\n\nexport function isLocalModeByEnvironment() {\n return process.env.APP_ENV === 'local';\n}\n\nexport function getInterfaceVersion() {\n if (isProductionEnv()) {\n const {INIT_CWD} = process.env;\n const packageJsonPath = INIT_CWD\n ? path.resolve(INIT_CWD, 'package.json')\n : path.resolve('./package.json');\n try {\n /* eslint-disable-next-line global-require, security/detect-non-literal-require */\n return require(packageJsonPath).version;\n } catch (e) {\n getApp().nodekit.ctx.logError(`Failed to get version from ${packageJsonPath}`, e, {\n INIT_CWD,\n packageJsonPath,\n });\n return 'unkonwn';\n }\n } else {\n return 'local';\n }\n}\n\nexport function prepareErrorToSend(e: unknown) {\n let message = '';\n if (e instanceof Error) {\n message = _.toString(e);\n } else if (isYTError(e)) {\n return e;\n } else {\n message = JSON.stringify(e);\n }\n return {message};\n}\n\nexport function sendResponse(res: Response, data: object) {\n return res.set('content-type', 'application/json').status(200).send(JSON.stringify(data));\n}\n\nexport function sendError(res: Response, error: unknown, errCode = 500) {\n const errData = prepareErrorToSend(error);\n return res.set('content-type', 'application/json').status(errCode).send(errData);\n}\n\nfunction asAxiosError<T>(e: Error | AxiosError<T>): AxiosError<T> | undefined {\n return (e as AxiosError).isAxiosError ? (e as AxiosError<T>) : undefined;\n}\n\nexport const UNEXPECTED_PIPE_AXIOS_RESPONSE =\n 'Unexpected behavior: response.data should be an instance of stream.Readable';\nexport const UNEXPECTED_PIPE_AXIOS_ERROR =\n 'Unexpected behavior: e.response.data should be an instance of stream.Readable';\n\nexport async function pipeAxiosErrorOrFalse(ctx: AppContext, dst: Response, e: AxiosError) {\n return await pipeAxiosResponse(ctx, dst, e.response, '[Send error]');\n}\n\ninterface PipedResponseSize {\n headerContentLength?: string;\n pipedDataSize: number;\n}\n\nconst LOG_HEADERS = ['x-yt-proxy', 'x-yt-request-id', 'x-yt-trace-id', 'content-length'];\n\nexport async function pipeAxiosResponse(\n ctx: AppContext,\n dst: Response,\n src?: AxiosResponse<stream.Readable | unknown>,\n logMsgPrefix = '',\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n): Promise<PipedResponseSize | undefined> {\n if (src?.data instanceof stream.Readable) {\n return await pipeResponse(\n logMsgPrefix,\n ctx,\n dst,\n src.data,\n src.headers,\n src.status,\n transformHeaders,\n );\n } else {\n return Promise.resolve(undefined);\n }\n}\n\nexport async function pipeResponse(\n logMsgPrefix: string,\n ctx: AppContext,\n dst: Response,\n data: stream.Readable,\n headers?: any,\n status?: number,\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n) {\n dst.status(status ?? 500);\n\n _.forEach(transformHeaders(headers), (value, key) => {\n if (key !== 'content-length' && key !== 'vary' && key !== 'www-authenticate') {\n dst.setHeader(key, value);\n }\n });\n\n const headersToLog = _.pick(headers, LOG_HEADERS);\n ctx.log(logMsgPrefix + ' Headers', headersToLog);\n\n const pipedDataSize = await pipeReadableToWriteable(ctx, dst, data, logMsgPrefix);\n return {headerContentLength: headers['content-length'], pipedDataSize};\n}\n\nexport async function pipeReadableToWriteable(\n ctx: AppContext,\n dst: stream.Writable,\n src: stream.Readable,\n logMsgPrefix: string,\n) {\n let firstChunk = true;\n let pipedDataSize = 0;\n const closePromise = new Promise<void>((resolve, reject) => {\n src.on('data', (chunk) => {\n if (firstChunk) {\n ctx.log(logMsgPrefix + ' TTFB');\n firstChunk = false;\n }\n pipedDataSize += chunk?.length;\n });\n src.on('error', (e: any) => {\n resolve = () => {};\n reject(e);\n });\n src.on('close', () => {\n ctx.log(logMsgPrefix + ' Response stream closed', {\n pipedDataSize,\n });\n resolve();\n });\n });\n src.pipe(dst);\n await closePromise;\n\n return pipedDataSize;\n}\n\nexport async function sendAndLogError(\n ctx: AppContext,\n res: Response,\n status: number | null,\n e: Error | AxiosError,\n extra: any = {},\n) {\n const ae = asAxiosError(e);\n if (ae) {\n ctx.logError('AxiosError', ae.toJSON(), extra);\n if (await pipeAxiosErrorOrFalse(ctx, res, ae)) {\n return;\n }\n\n if (ae.response?.status) {\n _.forEach(ae.response.headers, (value, key) => {\n res.append(key, value);\n });\n return res.status(ae.response.status).send(ae.response.data || ae.response.statusText);\n }\n\n return res.status(504).send({message: _.toString(e)});\n }\n\n ctx.logError('Error', e, extra);\n\n if (e instanceof Error) {\n return res.status(status || 500).send({message: _.toString(e)});\n }\n\n if (typeof e === 'string') {\n return res.status(status || 500).send({mesasge: e});\n }\n\n if (isYTError(e)) {\n return res.status(status || 500).send(e);\n }\n\n return res.status(status || 500).send({message: JSON.stringify(e)});\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["stream","isYTError","getApp","path","isProductionEnv","config","appEnv","isLocalModeByEnvironment","process","env","APP_ENV","getInterfaceVersion","INIT_CWD","packageJsonPath","resolve","require","version","e","nodekit","ctx","logError","concat","isExtraDataError","error","extraData","undefined","prepareErrorToSend","res","message","Error","_toString","JSON","stringify","sendResponse","data","set","status","send","sendError","errCode","arguments","length","errData","asAxiosError","isAxiosError","UNEXPECTED_PIPE_AXIOS_RESPONSE","UNEXPECTED_PIPE_AXIOS_ERROR","pipeAxiosErrorOrFalse","_x","_x2","_x3","_pipeAxiosErrorOrFalse","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dst","wrap","_callee$","_context","prev","next","pipeAxiosResponse","response","abrupt","sent","stop","LOG_HEADERS","_x4","_x5","_x6","_pipeAxiosResponse","_callee2","src","logMsgPrefix","transformHeaders","_args2","_callee2$","_context2","v","Readable","pipeResponse","headers","Promise","_x7","_x8","_x9","_x10","_x11","_x12","_pipeResponse","_callee3","headersToLog","pipedDataSize","_args3","_callee3$","_context3","_forEach","value","key","setHeader","_pick","log","pipeReadableToWriteable","headerContentLength","_x13","_x14","_x15","_x16","_pipeReadableToWriteable","_callee4","firstChunk","closePromise","_callee4$","_context4","reject","on","chunk","pipe","sendAndLogError","_x17","_x18","_x19","_x20","_sendAndLogError","_callee5","extra","ae","_ae$response","_args5","_callee5$","_context5","toJSON","append","statusText","mesasge"],"sources":["index.ts"],"sourcesContent":["import * as stream from 'stream';\nimport _ from 'lodash';\nimport type {Response} from 'express';\nimport {AxiosError, AxiosResponse} from 'axios';\nimport {AppContext} from '@gravity-ui/nodekit';\nimport {isYTError} from '../../shared/utils';\nimport {getApp} from '../ServerFactory';\nimport path from 'path';\n\nexport function isProductionEnv() {\n return getApp().config.appEnv !== 'development';\n}\n\nexport function isLocalModeByEnvironment() {\n return process.env.APP_ENV === 'local';\n}\n\nexport function getInterfaceVersion() {\n if (isProductionEnv()) {\n const {INIT_CWD} = process.env;\n const packageJsonPath = INIT_CWD\n ? path.resolve(INIT_CWD, 'package.json')\n : path.resolve('./package.json');\n try {\n /* eslint-disable-next-line global-require, security/detect-non-literal-require */\n return require(packageJsonPath).version;\n } catch (e) {\n getApp().nodekit.ctx.logError(`Failed to get version from ${packageJsonPath}`, e, {\n INIT_CWD,\n packageJsonPath,\n });\n return 'unkonwn';\n }\n } else {\n return 'local';\n }\n}\n\ntype ExtraError = {\n extraData: Record<string, unknown>;\n};\n\nfunction isExtraDataError(error: ExtraError | unknown): error is ExtraError {\n return (error as ExtraError).extraData !== undefined;\n}\n\nexport function prepareErrorToSend(e: unknown) {\n const res: Record<string, any> = {\n message: '',\n };\n\n if (e instanceof Error) {\n res.message = _.toString(e);\n } else if (isYTError(e)) {\n return e;\n } else {\n res.message = JSON.stringify(e);\n }\n\n if (isExtraDataError(e)) {\n res.extraData = e.extraData;\n }\n\n return res;\n}\n\nexport function sendResponse(res: Response, data: object) {\n return res.set('content-type', 'application/json').status(200).send(JSON.stringify(data));\n}\n\nexport function sendError(res: Response, error: unknown, errCode = 500) {\n const errData = prepareErrorToSend(error);\n return res.set('content-type', 'application/json').status(errCode).send(errData);\n}\n\nfunction asAxiosError<T>(e: Error | AxiosError<T>): AxiosError<T> | undefined {\n return (e as AxiosError).isAxiosError ? (e as AxiosError<T>) : undefined;\n}\n\nexport const UNEXPECTED_PIPE_AXIOS_RESPONSE =\n 'Unexpected behavior: response.data should be an instance of stream.Readable';\nexport const UNEXPECTED_PIPE_AXIOS_ERROR =\n 'Unexpected behavior: e.response.data should be an instance of stream.Readable';\n\nexport async function pipeAxiosErrorOrFalse(ctx: AppContext, dst: Response, e: AxiosError) {\n return await pipeAxiosResponse(ctx, dst, e.response, '[Send error]');\n}\n\ninterface PipedResponseSize {\n headerContentLength?: string;\n pipedDataSize: number;\n}\n\nconst LOG_HEADERS = ['x-yt-proxy', 'x-yt-request-id', 'x-yt-trace-id', 'content-length'];\n\nexport async function pipeAxiosResponse(\n ctx: AppContext,\n dst: Response,\n src?: AxiosResponse<stream.Readable | unknown>,\n logMsgPrefix = '',\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n): Promise<PipedResponseSize | undefined> {\n if (src?.data instanceof stream.Readable) {\n return await pipeResponse(\n logMsgPrefix,\n ctx,\n dst,\n src.data,\n src.headers,\n src.status,\n transformHeaders,\n );\n } else {\n return Promise.resolve(undefined);\n }\n}\n\nexport async function pipeResponse(\n logMsgPrefix: string,\n ctx: AppContext,\n dst: Response,\n data: stream.Readable,\n headers?: any,\n status?: number,\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n) {\n dst.status(status ?? 500);\n\n _.forEach(transformHeaders(headers), (value, key) => {\n if (key !== 'content-length' && key !== 'vary' && key !== 'www-authenticate') {\n dst.setHeader(key, value);\n }\n });\n\n const headersToLog = _.pick(headers, LOG_HEADERS);\n ctx.log(logMsgPrefix + ' Headers', headersToLog);\n\n const pipedDataSize = await pipeReadableToWriteable(ctx, dst, data, logMsgPrefix);\n return {headerContentLength: headers['content-length'], pipedDataSize};\n}\n\nexport async function pipeReadableToWriteable(\n ctx: AppContext,\n dst: stream.Writable,\n src: stream.Readable,\n logMsgPrefix: string,\n) {\n let firstChunk = true;\n let pipedDataSize = 0;\n const closePromise = new Promise<void>((resolve, reject) => {\n src.on('data', (chunk) => {\n if (firstChunk) {\n ctx.log(logMsgPrefix + ' TTFB');\n firstChunk = false;\n }\n pipedDataSize += chunk?.length;\n });\n src.on('error', (e: any) => {\n resolve = () => {};\n reject(e);\n });\n src.on('close', () => {\n ctx.log(logMsgPrefix + ' Response stream closed', {\n pipedDataSize,\n });\n resolve();\n });\n });\n src.pipe(dst);\n await closePromise;\n\n return pipedDataSize;\n}\n\nexport async function sendAndLogError(\n ctx: AppContext,\n res: Response,\n status: number | null,\n e: Error | AxiosError,\n extra: any = {},\n) {\n const ae = asAxiosError(e);\n if (ae) {\n ctx.logError('AxiosError', ae.toJSON(), extra);\n if (await pipeAxiosErrorOrFalse(ctx, res, ae)) {\n return;\n }\n\n if (ae.response?.status) {\n _.forEach(ae.response.headers, (value, key) => {\n res.append(key, value);\n });\n return res.status(ae.response.status).send(ae.response.data || ae.response.statusText);\n }\n\n return res.status(504).send({message: _.toString(e)});\n }\n\n ctx.logError('Error', e, extra);\n\n if (e instanceof Error) {\n return res.status(status || 500).send({message: _.toString(e)});\n }\n\n if (typeof e === 'string') {\n return res.status(status || 500).send({mesasge: e});\n }\n\n if (isYTError(e)) {\n return res.status(status || 500).send(e);\n }\n\n return res.status(status || 500).send({message: JSON.stringify(e)});\n}\n"],"mappings":"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"}
@@ -234,6 +234,7 @@ export interface SettingsConfig {
234
234
  }
235
235
 
236
236
  export interface ConfigData {
237
+ userSettingsCluster?: string;
237
238
  settings: SettingsConfig;
238
239
  ytApiUseCORS?: boolean;
239
240
  uiSettings?: UISettings;
@@ -1,10 +1,10 @@
1
1
  import { PromiseOrValue } from '../../../@types/types';
2
2
  declare const provider: SettingsProvider;
3
3
  export interface SettingsProvider {
4
- get<T>(username: string, path: string): Promise<T | undefined>;
5
- set<T>(username: string, path: string, value: T): Promise<void>;
6
- remove(username: string, path: string): Promise<void>;
7
- getAll<Data extends object>(username: string): PromiseOrValue<Data | undefined>;
8
- create(username: string): Promise<void>;
4
+ get<T>(username: string, path: string, cluster: string): Promise<T | undefined>;
5
+ set<T>(username: string, path: string, value: T, cluster: string): Promise<void>;
6
+ remove(username: string, path: string, cluster: string): Promise<void>;
7
+ getAll<Data extends object>(username: string, cluster: string): PromiseOrValue<Data | undefined>;
8
+ create(username: string, cluster: string): Promise<void>;
9
9
  }
10
10
  export default provider;
@@ -2,14 +2,14 @@ import axios from 'axios';
2
2
 
3
3
  // @ts-expect-error
4
4
  import yt from '@ytsaurus/javascript-wrapper/lib/yt';
5
- function api(method, username, path, data) {
5
+ function api(options) {
6
6
  return axios.request({
7
- method: method,
8
- url: '/api/settings/' + username + path,
7
+ method: options.method,
8
+ url: "/api/settings/".concat(options.cluster, "/").concat(options.username).concat(options.path),
9
9
  headers: {
10
10
  'content-type': 'application/json'
11
11
  },
12
- data: JSON.stringify(data)
12
+ data: JSON.stringify(options.data)
13
13
  }).then(function (response) {
14
14
  return response.data;
15
15
  })["catch"](function (error) {
@@ -27,30 +27,56 @@ function api(method, username, path, data) {
27
27
  });
28
28
  }
29
29
  var provider = {
30
- get: function get(username, path) {
31
- return api('get', username, '/' + path);
30
+ get: function get(username, path, cluster) {
31
+ return api({
32
+ method: 'get',
33
+ username: username,
34
+ path: '/' + path,
35
+ cluster: cluster
36
+ });
32
37
  },
33
- set: function set(username, path, value) {
38
+ set: function set(username, path, value, cluster) {
34
39
  if (value === undefined) {
35
40
  /**
36
41
  * data-ui/core uses body-parser which interprets empty body of request as empty object {},
37
42
  * i.e. setItem from src/server/controllers/settings.js will receive req.body === {} if value === undefined,
38
43
  * so we have to remove it explicitly
39
44
  */
40
- return provider.remove(username, path);
45
+ return provider.remove(username, path, cluster);
41
46
  }
42
- return api('put', username, '/' + path, {
43
- value: value
47
+ return api({
48
+ method: 'put',
49
+ username: username,
50
+ path: '/' + path,
51
+ data: {
52
+ value: value
53
+ },
54
+ cluster: cluster
44
55
  });
45
56
  },
46
- remove: function remove(username, path) {
47
- return api('delete', username, '/' + path);
57
+ remove: function remove(username, path, cluster) {
58
+ return api({
59
+ method: 'delete',
60
+ username: username,
61
+ path: '/' + path,
62
+ cluster: cluster
63
+ });
48
64
  },
49
- getAll: function getAll(username) {
50
- return api('get', username, '/');
65
+ getAll: function getAll(username, cluster) {
66
+ return api({
67
+ method: 'get',
68
+ username: username,
69
+ path: '/',
70
+ cluster: cluster
71
+ });
51
72
  },
52
- create: function create(username) {
53
- return api('post', username, '/');
73
+ create: function create(username, cluster) {
74
+ return api({
75
+ method: 'post',
76
+ username: username,
77
+ path: '/',
78
+ cluster: cluster
79
+ });
54
80
  }
55
81
  };
56
82
  export default provider;
@@ -1 +1 @@
1
- {"version":3,"names":["axios","yt","api","method","username","path","data","request","url","headers","JSON","stringify","then","response","error","Promise","reject","code","message","codes","NODE_DOES_NOT_EXIST","undefined","provider","get","set","value","remove","getAll","create"],"sources":["settings-remote-provider.ts"],"sourcesContent":["import axios from 'axios';\n\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {PromiseOrValue} from '../../../@types/types';\n\ntype Method = 'get' | 'put' | 'post' | 'delete';\n\nfunction api<T>(method: Method, username: string, path: string, data?: unknown) {\n return axios\n .request<T | undefined>({\n method: method,\n url: '/api/settings/' + username + path,\n headers: {\n 'content-type': 'application/json',\n },\n data: JSON.stringify(data),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (!error.response) {\n return Promise.reject({\n code: 0,\n message: 'Network error',\n });\n }\n\n const {data} = error.response;\n if (data.code === yt.codes.NODE_DOES_NOT_EXIST) {\n return undefined;\n }\n\n return Promise.reject(data);\n });\n}\n\nconst provider: SettingsProvider = {\n get<T>(username: string, path: string) {\n return api<T>('get', username, '/' + path);\n },\n set<T>(username: string, path: string, value: T) {\n if (value === undefined) {\n /**\n * data-ui/core uses body-parser which interprets empty body of request as empty object {},\n * i.e. setItem from src/server/controllers/settings.js will receive req.body === {} if value === undefined,\n * so we have to remove it explicitly\n */\n return provider.remove(username, path);\n }\n return api('put', username, '/' + path, {value});\n },\n remove(username: string, path: string) {\n return api('delete', username, '/' + path);\n },\n getAll<T>(username: string) {\n return api<T>('get', username, '/');\n },\n create(username: string) {\n return api('post', username, '/');\n },\n};\n\nexport interface SettingsProvider {\n get<T>(username: string, path: string): Promise<T | undefined>;\n set<T>(username: string, path: string, value: T): Promise<void>;\n remove(username: string, path: string): Promise<void>;\n getAll<Data extends object>(username: string): PromiseOrValue<Data | undefined>;\n create(username: string): Promise<void>;\n}\n\nexport default provider;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;;AAEzB;AACA,OAAOC,EAAE,MAAM,qCAAqC;AAKpD,SAASC,GAAGA,CAAIC,MAAc,EAAEC,QAAgB,EAAEC,IAAY,EAAEC,IAAc,EAAE;EAC5E,OAAON,KAAK,CACPO,OAAO,CAAgB;IACpBJ,MAAM,EAAEA,MAAM;IACdK,GAAG,EAAE,gBAAgB,GAAGJ,QAAQ,GAAGC,IAAI;IACvCI,OAAO,EAAE;MACL,cAAc,EAAE;IACpB,CAAC;IACDH,IAAI,EAAEI,IAAI,CAACC,SAAS,CAACL,IAAI;EAC7B,CAAC,CAAC,CACDM,IAAI,CAAC,UAACC,QAAQ,EAAK;IAChB,OAAOA,QAAQ,CAACP,IAAI;EACxB,CAAC,CAAC,SACI,CAAC,UAACQ,KAAK,EAAK;IACd,IAAI,CAACA,KAAK,CAACD,QAAQ,EAAE;MACjB,OAAOE,OAAO,CAACC,MAAM,CAAC;QAClBC,IAAI,EAAE,CAAC;QACPC,OAAO,EAAE;MACb,CAAC,CAAC;IACN;IAEA,IAAOZ,IAAI,GAAIQ,KAAK,CAACD,QAAQ,CAAtBP,IAAI;IACX,IAAIA,IAAI,CAACW,IAAI,KAAKhB,EAAE,CAACkB,KAAK,CAACC,mBAAmB,EAAE;MAC5C,OAAOC,SAAS;IACpB;IAEA,OAAON,OAAO,CAACC,MAAM,CAACV,IAAI,CAAC;EAC/B,CAAC,CAAC;AACV;AAEA,IAAMgB,QAA0B,GAAG;EAC/BC,GAAG,WAAAA,IAAInB,QAAgB,EAAEC,IAAY,EAAE;IACnC,OAAOH,GAAG,CAAI,KAAK,EAAEE,QAAQ,EAAE,GAAG,GAAGC,IAAI,CAAC;EAC9C,CAAC;EACDmB,GAAG,WAAAA,IAAIpB,QAAgB,EAAEC,IAAY,EAAEoB,KAAQ,EAAE;IAC7C,IAAIA,KAAK,KAAKJ,SAAS,EAAE;MACrB;AACZ;AACA;AACA;AACA;MACY,OAAOC,QAAQ,CAACI,MAAM,CAACtB,QAAQ,EAAEC,IAAI,CAAC;IAC1C;IACA,OAAOH,GAAG,CAAC,KAAK,EAAEE,QAAQ,EAAE,GAAG,GAAGC,IAAI,EAAE;MAACoB,KAAK,EAALA;IAAK,CAAC,CAAC;EACpD,CAAC;EACDC,MAAM,WAAAA,OAACtB,QAAgB,EAAEC,IAAY,EAAE;IACnC,OAAOH,GAAG,CAAC,QAAQ,EAAEE,QAAQ,EAAE,GAAG,GAAGC,IAAI,CAAC;EAC9C,CAAC;EACDsB,MAAM,WAAAA,OAAIvB,QAAgB,EAAE;IACxB,OAAOF,GAAG,CAAI,KAAK,EAAEE,QAAQ,EAAE,GAAG,CAAC;EACvC,CAAC;EACDwB,MAAM,WAAAA,OAACxB,QAAgB,EAAE;IACrB,OAAOF,GAAG,CAAC,MAAM,EAAEE,QAAQ,EAAE,GAAG,CAAC;EACrC;AACJ,CAAC;AAUD,eAAekB,QAAQ"}
1
+ {"version":3,"names":["axios","yt","api","options","request","method","url","concat","cluster","username","path","headers","data","JSON","stringify","then","response","error","Promise","reject","code","message","codes","NODE_DOES_NOT_EXIST","undefined","provider","get","set","value","remove","getAll","create"],"sources":["settings-remote-provider.ts"],"sourcesContent":["import axios from 'axios';\n\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {PromiseOrValue} from '../../../@types/types';\n\ntype Method = 'get' | 'put' | 'post' | 'delete';\n\ninterface ApiOptions {\n method: Method;\n username: string;\n path: string;\n data?: unknown;\n cluster: string;\n}\n\nfunction api<T>(options: ApiOptions) {\n return axios\n .request<T | undefined>({\n method: options.method,\n url: `/api/settings/${options.cluster}/${options.username}${options.path}`,\n headers: {\n 'content-type': 'application/json',\n },\n data: JSON.stringify(options.data),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (!error.response) {\n return Promise.reject({\n code: 0,\n message: 'Network error',\n });\n }\n\n const {data} = error.response;\n if (data.code === yt.codes.NODE_DOES_NOT_EXIST) {\n return undefined;\n }\n\n return Promise.reject(data);\n });\n}\n\nconst provider: SettingsProvider = {\n get<T>(username: string, path: string, cluster: string) {\n return api<T>({method: 'get', username, path: '/' + path, cluster});\n },\n set<T>(username: string, path: string, value: T, cluster: string) {\n if (value === undefined) {\n /**\n * data-ui/core uses body-parser which interprets empty body of request as empty object {},\n * i.e. setItem from src/server/controllers/settings.js will receive req.body === {} if value === undefined,\n * so we have to remove it explicitly\n */\n return provider.remove(username, path, cluster);\n }\n return api({method: 'put', username, path: '/' + path, data: {value}, cluster});\n },\n remove(username: string, path: string, cluster: string) {\n return api({method: 'delete', username, path: '/' + path, cluster});\n },\n getAll<T>(username: string, cluster: string) {\n return api<T>({method: 'get', username, path: '/', cluster});\n },\n create(username: string, cluster: string) {\n return api({method: 'post', username, path: '/', cluster});\n },\n};\n\nexport interface SettingsProvider {\n get<T>(username: string, path: string, cluster: string): Promise<T | undefined>;\n set<T>(username: string, path: string, value: T, cluster: string): Promise<void>;\n remove(username: string, path: string, cluster: string): Promise<void>;\n getAll<Data extends object>(\n username: string,\n cluster: string,\n ): PromiseOrValue<Data | undefined>;\n create(username: string, cluster: string): Promise<void>;\n}\n\nexport default provider;\n"],"mappings":"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"}
@@ -48,7 +48,7 @@ declare const _default: import("react-redux").ConnectedComponent<typeof Elements
48
48
  onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
49
49
  rowClassName: PropTypes.Requireable<(...args: any[]) => any>;
50
50
  colSpan: PropTypes.Requireable<(...args: any[]) => any>;
51
- }>, "columns" | "isLoading" | "sortState" | "onMouseMove" | "colSpan" | "rowClassName" | "onSort" | "selectedIndex" | "onItemClick" | "itemHeight" | "css" | "getItemLink" | "cssTableMods" | "onItemSelect" | "itemMods" | "onItemHover" | "tableId" | "toggleColumnSortOrder" | "computeKey" | "columnsMode" | "onItemToggleState" | "sortInfo" | "emptyDataDescription"> & {
51
+ }>, "columns" | "sortState" | "isLoading" | "onMouseMove" | "colSpan" | "rowClassName" | "onSort" | "selectedIndex" | "onItemClick" | "itemHeight" | "css" | "getItemLink" | "cssTableMods" | "onItemSelect" | "itemMods" | "onItemHover" | "tableId" | "toggleColumnSortOrder" | "computeKey" | "columnsMode" | "onItemToggleState" | "sortInfo" | "emptyDataDescription"> & {
52
52
  theme?: string | null | undefined;
53
53
  body?: any;
54
54
  templates?: NonNullable<PropTypes.InferProps<{