@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
package/README.md CHANGED
@@ -21,8 +21,8 @@ To run the development environment you need to prepare and run nginx:
21
21
  1. Install nginx
22
22
  2. Copy file `deploy/nginx/yt.development.conf.example` to `/etc/nginx/sites-enabled/yt.development.conf`
23
23
  3. Modify `/etc/nginx/sites-enabled/yt.development.conf`
24
- - change `server_name`
25
- - replace all `/path/to/the/repo` to correct path
24
+ - change `server_name`
25
+ - replace all `/path/to/the/repo` to correct path
26
26
  4. `sudo systemctl restart nginx`
27
27
 
28
28
  Install required dependencies:
@@ -40,22 +40,17 @@ $ npm run dev:localmode
40
40
  Another way is to provide `clusters-config.json` and run the command like:
41
41
 
42
42
  ```bash
43
- # my-cluster should be present in your clusters-config.json
44
- $ YT_AUTH_CLUSTER_ID=my-cluster npm run dev:app
43
+ $ npm run dev:app
45
44
  ```
46
45
 
47
46
  ### Environment variables
48
47
 
49
- - `YT_AUTH_CLUSTER_ID` - if defined enables yt-password authentication, also the cluster will be used for userSettings and for userColumnPresets
50
- - `YT_AUTH_ALLOW_INSECURE` - if defined allows insecure (over http) authentication, do not use it for production _(the variable is ignored if `YT_AUTH_CLUSTER_ID` is not defined)_
51
- - `YT_USER_SETTINGS_PATH` - path to map-node with files of user-settings, if not defined '//tmp' is used _(the variable is ignored if `YT_AUTH_CLUSTER_ID` is not defined)_
52
- - `YT_USER_COLUMN_PRESETS_PATH` - path to dynamic table with user column presets _(the variable is ignored if `YT_AUTH_CLUSTER_ID` is not defined)_. The table should have two columns: **"name"** _(string, required, sort_order: ascheding)_, **"columns_json"** _(string)_.
48
+ - `YT_AUTH_ALLOW_INSECURE` - if defined allows insecure (over http) authentication, do not use it for production
53
49
 
54
50
  ### Feature flags
55
51
 
56
- It is recommended way to link feature with version of proxies or schedulers of cluster.
57
- But some cases require ability to turn on/off a feature manually on a cluster. Such feature flags
58
- are placed placed in:
52
+ There is yt-api command get_supported_feature and it is a good place to describe some features.
53
+ But some cases require ability to turn on/off a feature manually on a cluster. Such feature flags are placed placed in:
59
54
 
60
55
  - `//sys/@ui_config` (values affects all users)
61
56
  - `//sys/@ui_config_dev_overrides` (values affects only developers)
@@ -10,6 +10,11 @@ import {UISettings} from '../../shared/ui-settings';
10
10
  import {Settings} from '../shared/constants/settings-types';
11
11
 
12
12
  export interface YTCoreConfig {
13
+ /**
14
+ * Enables YT-password authentication when defined
15
+ */
16
+ allowPasswordAuth: boolean;
17
+
13
18
  /**
14
19
  * Path to the file with OAuth-token of special-user ("the OAuthRobot" below) in format: {"oauthToken": "******"}
15
20
  * The OAuth-token is used for some service requests, see usages of getRobotYTApiSetup.
@@ -52,7 +57,7 @@ export interface YTCoreConfig {
52
57
  * The OAuthRobot should have read/write access to mapNodePath
53
58
  */
54
59
  userSettingsConfig?: {
55
- cluster: string;
60
+ cluster?: string;
56
61
  // path to a map node with user-settings files
57
62
  mapNodePath: string;
58
63
  };
@@ -65,15 +70,10 @@ export interface YTCoreConfig {
65
70
  * The OAuthRobot should have read/write access to the table.
66
71
  */
67
72
  userColumnPresets?: {
68
- cluster: string;
73
+ cluster?: string;
69
74
  dynamicTablePath: string;
70
75
  };
71
76
 
72
- /**
73
- * Enables YT-password authentication when defined
74
- */
75
- ytAuthCluster?: string;
76
-
77
77
  /**
78
78
  * OpenID Connect configuration
79
79
  */
@@ -8,8 +8,7 @@ const oauth_1 = require("./oauth");
8
8
  async function getLayoutConfig(req, params) {
9
9
  var _a;
10
10
  const { login, ytConfig, settings } = params;
11
- const { ytApiUseCORS, uiSettings, metrikaCounter, ytAuthCluster, odinBaseUrl } = req.ctx
12
- .config;
11
+ const { ytApiUseCORS, uiSettings, metrikaCounter, allowPasswordAuth, odinBaseUrl, userSettingsConfig, } = req.ctx.config;
13
12
  const YT = ytConfig;
14
13
  const uiVersion = (0, utils_1.getInterfaceVersion)();
15
14
  const parameters = {
@@ -37,11 +36,12 @@ async function getLayoutConfig(req, params) {
37
36
  `window.YT.environment = window.YT.environment || (${isProduction} ? 'production' : 'development');`,
38
37
  ],
39
38
  data: {
39
+ userSettingsCluster: userSettingsConfig === null || userSettingsConfig === void 0 ? void 0 : userSettingsConfig.cluster,
40
40
  settings,
41
41
  ytApiUseCORS,
42
42
  uiSettings,
43
43
  metrikaCounterId: (_a = metrikaCounter === null || metrikaCounter === void 0 ? void 0 : metrikaCounter[0]) === null || _a === void 0 ? void 0 : _a.id,
44
- allowLoginDialog: Boolean(ytAuthCluster),
44
+ allowLoginDialog: Boolean(allowPasswordAuth),
45
45
  allowOAuth: (0, oauth_1.isOAuthAllowed)(req),
46
46
  oauthButtonLabel: (0, oauth_1.isOAuthAllowed)(req) ? (0, oauth_1.getOAuthSettings)(req).buttonLabel : undefined,
47
47
  allowUserColumnPresets: (0, table_column_preset_1.isUserColumnPresetsEnabled)(req),
@@ -1 +1 @@
1
- {"version":3,"names":["_tableColumnPreset","require","_utils","_authorization","_oauth","_interopRequireDefault","obj","__esModule","default","getLayoutConfig","_x","_x2","_getLayoutConfig","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","params","_metrikaCounter$","login","ytConfig","settings","_ref","ytApiUseCORS","uiSettings","metrikaCounter","ytAuthCluster","odinBaseUrl","YT","uiVersion","parameters","isProduction","res","wrap","_callee$","_context","prev","next","ctx","config","getInterfaceVersion","version","authWay","getAuthWay","isProductionEnv","bodyContent","root","title","lang","meta","name","content","inlineScripts","concat","JSON","stringify","data","metrikaCounterId","id","allowLoginDialog","Boolean","allowOAuth","isOAuthAllowed","oauthButtonLabel","getOAuthSettings","buttonLabel","undefined","allowUserColumnPresets","isUserColumnPresetsEnabled","odinPageEnabled","pluginsOptions","yandexMetrika","counter","layout","abrupt","stop"],"sources":["layout-config.ts"],"sourcesContent":["import type {Request} from 'express';\nimport {YTCoreConfig} from '../../@types/core';\nimport {ConfigData, YTConfig} from '../../shared/yt-types';\nimport {AppLayoutConfig} from '../render-layout';\nimport {isUserColumnPresetsEnabled} from '../controllers/table-column-preset';\nimport {getInterfaceVersion, isProductionEnv} from '../utils';\nimport {getAuthWay} from '../utils/authorization';\nimport {getOAuthSettings, isOAuthAllowed} from './oauth';\n\ninterface Params {\n login?: string;\n uid?: string;\n cluster: string | undefined;\n settings: ConfigData['settings'];\n ytConfig: Partial<YTConfig>;\n}\n\nexport async function getLayoutConfig(req: Request, params: Params): Promise<AppLayoutConfig> {\n const {login, ytConfig, settings} = params;\n const {ytApiUseCORS, uiSettings, metrikaCounter, ytAuthCluster, odinBaseUrl} = req.ctx\n .config as YTCoreConfig;\n const YT = ytConfig;\n const uiVersion = getInterfaceVersion();\n\n const parameters = {\n interface: {\n version: uiVersion,\n },\n login,\n authWay: getAuthWay(req),\n };\n\n const isProduction = isProductionEnv();\n\n const res: AppLayoutConfig = {\n bodyContent: {root: ''},\n title: 'YT',\n lang: 'en',\n meta: [\n {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1.0',\n },\n ],\n inlineScripts: [\n `window.YT = Object.assign(window.YT || {}, ${JSON.stringify(YT)}, ${JSON.stringify({\n parameters,\n })});`,\n `window.YT.environment = window.YT.environment || (${isProduction} ? 'production' : 'development');`,\n ],\n data: {\n settings,\n ytApiUseCORS,\n uiSettings,\n metrikaCounterId: metrikaCounter?.[0]?.id,\n allowLoginDialog: Boolean(ytAuthCluster),\n allowOAuth: isOAuthAllowed(req),\n oauthButtonLabel: isOAuthAllowed(req) ? getOAuthSettings(req).buttonLabel : undefined,\n allowUserColumnPresets: isUserColumnPresetsEnabled(req),\n odinPageEnabled: Boolean(odinBaseUrl),\n },\n pluginsOptions: {\n yandexMetrika: {\n counter: metrikaCounter,\n },\n layout: {\n name: 'main',\n },\n },\n };\n return res;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_tableColumnPreset","require","_utils","_authorization","_oauth","_interopRequireDefault","obj","__esModule","default","getLayoutConfig","_x","_x2","_getLayoutConfig","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","params","_metrikaCounter$","login","ytConfig","settings","_ref","ytApiUseCORS","uiSettings","metrikaCounter","allowPasswordAuth","odinBaseUrl","userSettingsConfig","YT","uiVersion","parameters","isProduction","res","wrap","_callee$","_context","prev","next","ctx","config","getInterfaceVersion","version","authWay","getAuthWay","isProductionEnv","bodyContent","root","title","lang","meta","name","content","inlineScripts","concat","JSON","stringify","data","userSettingsCluster","cluster","metrikaCounterId","id","allowLoginDialog","Boolean","allowOAuth","isOAuthAllowed","oauthButtonLabel","getOAuthSettings","buttonLabel","undefined","allowUserColumnPresets","isUserColumnPresetsEnabled","odinPageEnabled","pluginsOptions","yandexMetrika","counter","layout","abrupt","stop"],"sources":["layout-config.ts"],"sourcesContent":["import type {Request} from 'express';\nimport {YTCoreConfig} from '../../@types/core';\nimport {ConfigData, YTConfig} from '../../shared/yt-types';\nimport {AppLayoutConfig} from '../render-layout';\nimport {isUserColumnPresetsEnabled} from '../controllers/table-column-preset';\nimport {getInterfaceVersion, isProductionEnv} from '../utils';\nimport {getAuthWay} from '../utils/authorization';\nimport {getOAuthSettings, isOAuthAllowed} from './oauth';\n\ninterface Params {\n login?: string;\n uid?: string;\n cluster: string | undefined;\n settings: ConfigData['settings'];\n ytConfig: Partial<YTConfig>;\n}\n\nexport async function getLayoutConfig(req: Request, params: Params): Promise<AppLayoutConfig> {\n const {login, ytConfig, settings} = params;\n const {\n ytApiUseCORS,\n uiSettings,\n metrikaCounter,\n allowPasswordAuth,\n odinBaseUrl,\n userSettingsConfig,\n } = req.ctx.config as YTCoreConfig;\n const YT = ytConfig;\n const uiVersion = getInterfaceVersion();\n\n const parameters = {\n interface: {\n version: uiVersion,\n },\n login,\n authWay: getAuthWay(req),\n };\n\n const isProduction = isProductionEnv();\n\n const res: AppLayoutConfig = {\n bodyContent: {root: ''},\n title: 'YT',\n lang: 'en',\n meta: [\n {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1.0',\n },\n ],\n inlineScripts: [\n `window.YT = Object.assign(window.YT || {}, ${JSON.stringify(YT)}, ${JSON.stringify({\n parameters,\n })});`,\n `window.YT.environment = window.YT.environment || (${isProduction} ? 'production' : 'development');`,\n ],\n data: {\n userSettingsCluster: userSettingsConfig?.cluster,\n settings,\n ytApiUseCORS,\n uiSettings,\n metrikaCounterId: metrikaCounter?.[0]?.id,\n allowLoginDialog: Boolean(allowPasswordAuth),\n allowOAuth: isOAuthAllowed(req),\n oauthButtonLabel: isOAuthAllowed(req) ? getOAuthSettings(req).buttonLabel : undefined,\n allowUserColumnPresets: isUserColumnPresetsEnabled(req),\n odinPageEnabled: Boolean(odinBaseUrl),\n },\n pluginsOptions: {\n yandexMetrika: {\n counter: metrikaCounter,\n },\n layout: {\n name: 'main',\n },\n },\n };\n return res;\n}\n"],"mappings":";;;;;;;;AAIA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAwD,SAAAI,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAUxD,SAAsBG,eAAeA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AA6DpC,SAAAF,iBAAA;EAAAA,gBAAA,OAAAG,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CA7DM,SAAAC,QAA+BC,GAAY,EAAEC,MAAc;IAAA,IAAAC,gBAAA;IAAA,IAAAC,KAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,IAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,cAAA,EAAAC,iBAAA,EAAAC,WAAA,EAAAC,kBAAA,EAAAC,EAAA,EAAAC,SAAA,EAAAC,UAAA,EAAAC,YAAA,EAAAC,GAAA;IAAA,OAAApB,oBAAA,CAAAqB,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACvDnB,KAAK,GAAwBF,MAAM,CAAnCE,KAAK,EAAEC,QAAQ,GAAcH,MAAM,CAA5BG,QAAQ,EAAEC,QAAQ,GAAIJ,MAAM,CAAlBI,QAAQ;UAAAC,IAAA,GAQ5BN,GAAG,CAACuB,GAAG,CAACC,MAAM,EANdjB,YAAY,GAAAD,IAAA,CAAZC,YAAY,EACZC,UAAU,GAAAF,IAAA,CAAVE,UAAU,EACVC,cAAc,GAAAH,IAAA,CAAdG,cAAc,EACdC,iBAAiB,GAAAJ,IAAA,CAAjBI,iBAAiB,EACjBC,WAAW,GAAAL,IAAA,CAAXK,WAAW,EACXC,kBAAkB,GAAAN,IAAA,CAAlBM,kBAAkB;UAEhBC,EAAE,GAAGT,QAAQ;UACbU,SAAS,GAAG,IAAAW,0BAAmB,EAAC,CAAC;UAEjCV,UAAU,GAAG;YACf,aAAW;cACPW,OAAO,EAAEZ;YACb,CAAC;YACDX,KAAK,EAALA,KAAK;YACLwB,OAAO,EAAE,IAAAC,yBAAU,EAAC5B,GAAG;UAC3B,CAAC;UAEKgB,YAAY,GAAG,IAAAa,sBAAe,EAAC,CAAC;UAEhCZ,GAAoB,GAAG;YACzBa,WAAW,EAAE;cAACC,IAAI,EAAE;YAAE,CAAC;YACvBC,KAAK,EAAE,IAAI;YACXC,IAAI,EAAE,IAAI;YACVC,IAAI,EAAE,CACF;cACIC,IAAI,EAAE,UAAU;cAChBC,OAAO,EAAE;YACb,CAAC,CACJ;YACDC,aAAa,EAAE,+CAAAC,MAAA,CACmCC,IAAI,CAACC,SAAS,CAAC3B,EAAE,CAAC,QAAAyB,MAAA,CAAKC,IAAI,CAACC,SAAS,CAAC;cAChFzB,UAAU,EAAVA;YACJ,CAAC,CAAC,8DAAAuB,MAAA,CACmDtB,YAAY,uCACpE;YACDyB,IAAI,EAAE;cACFC,mBAAmB,EAAE9B,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE+B,OAAO;cAChDtC,QAAQ,EAARA,QAAQ;cACRE,YAAY,EAAZA,YAAY;cACZC,UAAU,EAAVA,UAAU;cACVoC,gBAAgB,EAAEnC,cAAc,aAAdA,cAAc,gBAAAP,gBAAA,GAAdO,cAAc,CAAG,CAAC,CAAC,cAAAP,gBAAA,uBAAnBA,gBAAA,CAAqB2C,EAAE;cACzCC,gBAAgB,EAAEC,OAAO,CAACrC,iBAAiB,CAAC;cAC5CsC,UAAU,EAAE,IAAAC,qBAAc,EAACjD,GAAG,CAAC;cAC/BkD,gBAAgB,EAAE,IAAAD,qBAAc,EAACjD,GAAG,CAAC,GAAG,IAAAmD,uBAAgB,EAACnD,GAAG,CAAC,CAACoD,WAAW,GAAGC,SAAS;cACrFC,sBAAsB,EAAE,IAAAC,6CAA0B,EAACvD,GAAG,CAAC;cACvDwD,eAAe,EAAET,OAAO,CAACpC,WAAW;YACxC,CAAC;YACD8C,cAAc,EAAE;cACZC,aAAa,EAAE;gBACXC,OAAO,EAAElD;cACb,CAAC;cACDmD,MAAM,EAAE;gBACJzB,IAAI,EAAE;cACV;YACJ;UACJ,CAAC;UAAA,OAAAf,QAAA,CAAAyC,MAAA,WACM5C,GAAG;QAAA;QAAA;UAAA,OAAAG,QAAA,CAAA0C,IAAA;MAAA;IAAA,GAAA/D,OAAA;EAAA,CACb;EAAA,OAAAN,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
@@ -14,11 +14,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.getUserYTApiSetup = exports.getRobotYTApiSetup = exports.getYTApiClusterSetup = void 0;
15
15
  const utils_1 = require("../components/utils");
16
16
  const ServerFactory_1 = require("../ServerFactory");
17
- function getRobotOAuthToken() {
17
+ function getRobotOAuthToken(cluster) {
18
+ var _a, _b, _c;
18
19
  const { ytInterfaceSecret } = (0, ServerFactory_1.getApp)().config;
19
- // eslint-disable-next-line security/detect-non-literal-require
20
- const secret = ytInterfaceSecret ? require(ytInterfaceSecret).oauthToken : '';
21
- return secret;
20
+ let oauthToken = '';
21
+ if (ytInterfaceSecret) {
22
+ oauthToken =
23
+ // eslint-disable-next-line security/detect-non-literal-require
24
+ ((_b = (_a = require(ytInterfaceSecret)) === null || _a === void 0 ? void 0 : _a[cluster]) === null || _b === void 0 ? void 0 : _b.oauthToken) ||
25
+ (
26
+ // eslint-disable-next-line security/detect-non-literal-require
27
+ (_c = require(ytInterfaceSecret)) === null || _c === void 0 ? void 0 : _c.oauthToken); // Backward compatibility
28
+ }
29
+ return oauthToken;
22
30
  }
23
31
  function getClusterSetup(clusterConfig) {
24
32
  const { proxy } = clusterConfig;
@@ -45,7 +53,7 @@ function getYTApiClusterSetup(cluster) {
45
53
  }
46
54
  exports.getYTApiClusterSetup = getYTApiClusterSetup;
47
55
  function getRobotYTApiSetup(cluster) {
48
- const oauthToken = getRobotOAuthToken();
56
+ const oauthToken = getRobotOAuthToken(cluster);
49
57
  const config = getYTApiClusterSetup(cluster);
50
58
  const { setup } = config, rest = __rest(config, ["setup"]);
51
59
  const authHeaders = setup.authentication && setup.authentication !== 'none'
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_ServerFactory","_interopRequireDefault","obj","__esModule","default","getRobotOAuthToken","_ref","getApp","config","ytInterfaceSecret","secret","oauthToken","getClusterSetup","clusterConfig","proxy","secure","Boolean","setup","id","authentication","useEncodedParameters","useHeavyProxy","timeout","proxyBaseUrl","concat","getYTApiClusterSetup","cluster","_getClusterConfig","getClusterConfig","isLocalCluster","ytConfig","Error","_objectSpread","getRobotYTApiSetup","rest","_objectWithoutProperties","_excluded","authHeaders","Authorization","type","token","getUserYTApiSetup","req","_getYTApiClusterSetup","_excluded2","yt","ytApiAuthHeaders","Object","assign","requestHeaders"],"sources":["requestsSetup.ts"],"sourcesContent":["import type {Request} from 'express';\n\nimport {YTCoreConfig} from '../../@types/core';\nimport {ClusterConfig} from '../../shared/yt-types';\nimport {getClusterConfig} from '../components/utils';\nimport {getApp} from '../ServerFactory';\n\nfunction getRobotOAuthToken() {\n const {ytInterfaceSecret} = getApp().config as YTCoreConfig;\n // eslint-disable-next-line security/detect-non-literal-require\n const secret = ytInterfaceSecret ? require(ytInterfaceSecret).oauthToken : '';\n return secret;\n}\n\nexport interface YTApiSetup {\n id: string;\n proxy: string;\n authentication: 'none' | 'basic' | 'domain' | {type: 'oauth'; token: string};\n secure: boolean;\n useEncodedParameters: boolean;\n useHeavyProxy: boolean;\n timeout: number;\n}\n\nfunction getClusterSetup(clusterConfig: ClusterConfig): {\n setup: YTApiSetup;\n proxyBaseUrl: string;\n} {\n const {proxy} = clusterConfig;\n const secure = Boolean(clusterConfig?.secure);\n\n return {\n setup: {\n id: clusterConfig?.id,\n proxy,\n authentication: clusterConfig?.authentication || 'none',\n secure,\n useEncodedParameters: true,\n useHeavyProxy: false,\n timeout: 5000,\n },\n proxyBaseUrl: secure ? `https://${proxy}` : `http://${proxy}`,\n };\n}\n\nexport type YTApiClusterSetup = ReturnType<typeof getClusterSetup>;\n\nexport function getYTApiClusterSetup(\n cluster: string,\n): YTApiClusterSetup & {isLocalCluster?: boolean} {\n const {\n clusterConfig,\n ytConfig: {isLocalCluster},\n } = getClusterConfig(cluster);\n if (!clusterConfig) {\n throw new Error(`Cluster '${cluster}' is not found`);\n }\n\n return {isLocalCluster, ...getClusterSetup(clusterConfig)};\n}\n\nexport function getRobotYTApiSetup(cluster: string): YTApiUserSetup {\n const oauthToken = getRobotOAuthToken();\n const config = getYTApiClusterSetup(cluster);\n\n const {setup, ...rest} = config;\n\n const authHeaders: Record<string, string> =\n setup.authentication && setup.authentication !== 'none'\n ? {\n Authorization: `OAuth ${oauthToken}`,\n }\n : {};\n\n return {\n setup: {\n ...setup,\n authentication:\n setup.authentication && setup.authentication !== 'none'\n ? {\n type: 'oauth',\n token: oauthToken!,\n }\n : 'none',\n },\n authHeaders,\n ...rest,\n };\n}\n\n/**\n * @param cluster\n * @param req\n * @returns undefined when cluster is not found\n */\nexport function getUserYTApiSetup(cluster: string, req: Request): YTApiUserSetup {\n const {setup, ...rest} = getYTApiClusterSetup(cluster);\n const {authentication} = setup;\n\n const authHeaders =\n authentication && authentication !== 'none' ? req.yt.ytApiAuthHeaders || {} : {};\n\n Object.assign(setup, {requestHeaders: {...authHeaders}});\n\n return {\n ...rest,\n setup,\n authHeaders,\n };\n}\n\nexport type YTApiUserSetup = ReturnType<typeof getYTApiClusterSetup> & {\n authHeaders: Record<string, string>;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_utils","require","_ServerFactory","_interopRequireDefault","obj","__esModule","default","getRobotOAuthToken","cluster","_ref","getApp","config","ytInterfaceSecret","oauthToken","_require","_require2","getClusterSetup","clusterConfig","proxy","secure","Boolean","setup","id","authentication","useEncodedParameters","useHeavyProxy","timeout","proxyBaseUrl","concat","getYTApiClusterSetup","_getClusterConfig","getClusterConfig","isLocalCluster","ytConfig","Error","_objectSpread","getRobotYTApiSetup","rest","_objectWithoutProperties","_excluded","authHeaders","Authorization","type","token","getUserYTApiSetup","req","_getYTApiClusterSetup","_excluded2","yt","ytApiAuthHeaders","Object","assign","requestHeaders"],"sources":["requestsSetup.ts"],"sourcesContent":["import type {Request} from 'express';\n\nimport {YTCoreConfig} from '../../@types/core';\nimport {ClusterConfig} from '../../shared/yt-types';\nimport {getClusterConfig} from '../components/utils';\nimport {getApp} from '../ServerFactory';\n\nfunction getRobotOAuthToken(cluster: string) {\n const {ytInterfaceSecret} = getApp().config as YTCoreConfig;\n\n let oauthToken = '';\n\n if (ytInterfaceSecret) {\n oauthToken =\n // eslint-disable-next-line security/detect-non-literal-require\n require(ytInterfaceSecret)?.[cluster]?.oauthToken ||\n // eslint-disable-next-line security/detect-non-literal-require\n require(ytInterfaceSecret)?.oauthToken; // Backward compatibility\n }\n\n return oauthToken;\n}\n\nexport interface YTApiSetup {\n id: string;\n proxy: string;\n authentication: 'none' | 'basic' | 'domain' | {type: 'oauth'; token: string};\n secure: boolean;\n useEncodedParameters: boolean;\n useHeavyProxy: boolean;\n timeout: number;\n}\n\nfunction getClusterSetup(clusterConfig: ClusterConfig): {\n setup: YTApiSetup;\n proxyBaseUrl: string;\n} {\n const {proxy} = clusterConfig;\n const secure = Boolean(clusterConfig?.secure);\n\n return {\n setup: {\n id: clusterConfig?.id,\n proxy,\n authentication: clusterConfig?.authentication || 'none',\n secure,\n useEncodedParameters: true,\n useHeavyProxy: false,\n timeout: 5000,\n },\n proxyBaseUrl: secure ? `https://${proxy}` : `http://${proxy}`,\n };\n}\n\nexport type YTApiClusterSetup = ReturnType<typeof getClusterSetup>;\n\nexport function getYTApiClusterSetup(\n cluster: string,\n): YTApiClusterSetup & {isLocalCluster?: boolean} {\n const {\n clusterConfig,\n ytConfig: {isLocalCluster},\n } = getClusterConfig(cluster);\n if (!clusterConfig) {\n throw new Error(`Cluster '${cluster}' is not found`);\n }\n\n return {isLocalCluster, ...getClusterSetup(clusterConfig)};\n}\n\nexport function getRobotYTApiSetup(cluster: string): YTApiUserSetup {\n const oauthToken = getRobotOAuthToken(cluster);\n const config = getYTApiClusterSetup(cluster);\n\n const {setup, ...rest} = config;\n\n const authHeaders: Record<string, string> =\n setup.authentication && setup.authentication !== 'none'\n ? {\n Authorization: `OAuth ${oauthToken}`,\n }\n : {};\n\n return {\n setup: {\n ...setup,\n authentication:\n setup.authentication && setup.authentication !== 'none'\n ? {\n type: 'oauth',\n token: oauthToken!,\n }\n : 'none',\n },\n authHeaders,\n ...rest,\n };\n}\n\n/**\n * @param cluster\n * @param req\n * @returns undefined when cluster is not found\n */\nexport function getUserYTApiSetup(cluster: string, req: Request): YTApiUserSetup {\n const {setup, ...rest} = getYTApiClusterSetup(cluster);\n const {authentication} = setup;\n\n const authHeaders =\n authentication && authentication !== 'none' ? req.yt.ytApiAuthHeaders || {} : {};\n\n Object.assign(setup, {requestHeaders: {...authHeaders}});\n\n return {\n ...rest,\n setup,\n authHeaders,\n };\n}\n\nexport type YTApiUserSetup = ReturnType<typeof getYTApiClusterSetup> & {\n authHeaders: Record<string, string>;\n};\n"],"mappings":";;;;;;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAAuC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;;;AAEvC,SAASG,kBAAkBA,CAACC,OAAe,EAAE;EACzC,IAAAC,IAAA,GAA4B,IAAAC,qBAAM,EAAC,CAAC,CAACC,MAAM;IAApCC,iBAAiB,GAAAH,IAAA,CAAjBG,iBAAiB;EAExB,IAAIC,UAAU,GAAG,EAAE;EAEnB,IAAID,iBAAiB,EAAE;IAAA,IAAAE,QAAA,EAAAC,SAAA;IACnBF,UAAU;IACN;IACA,EAAAC,QAAA,GAAAb,OAAO,CAACW,iBAAiB,CAAC,cAAAE,QAAA,gBAAAA,QAAA,GAA1BA,QAAA,CAA6BN,OAAO,CAAC,cAAAM,QAAA,uBAArCA,QAAA,CAAuCD,UAAU;IACjD;IAAA,CAAAE,SAAA,GACAd,OAAO,CAACW,iBAAiB,CAAC,cAAAG,SAAA,uBAA1BA,SAAA,CAA4BF,UAAU,EAAC,CAAC;EAChD;;EAEA,OAAOA,UAAU;AACrB;AAYA,SAASG,eAAeA,CAACC,aAA4B,EAGnD;EACE,IAAOC,KAAK,GAAID,aAAa,CAAtBC,KAAK;EACZ,IAAMC,MAAM,GAAGC,OAAO,CAACH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,MAAM,CAAC;EAE7C,OAAO;IACHE,KAAK,EAAE;MACHC,EAAE,EAAEL,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEK,EAAE;MACrBJ,KAAK,EAALA,KAAK;MACLK,cAAc,EAAE,CAAAN,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEM,cAAc,KAAI,MAAM;MACvDJ,MAAM,EAANA,MAAM;MACNK,oBAAoB,EAAE,IAAI;MAC1BC,aAAa,EAAE,KAAK;MACpBC,OAAO,EAAE;IACb,CAAC;IACDC,YAAY,EAAER,MAAM,cAAAS,MAAA,CAAcV,KAAK,cAAAU,MAAA,CAAeV,KAAK;EAC/D,CAAC;AACL;AAIO,SAASW,oBAAoBA,CAChCrB,OAAe,EAC+B;EAC9C,IAAAsB,iBAAA,GAGI,IAAAC,uBAAgB,EAACvB,OAAO,CAAC;IAFzBS,aAAa,GAAAa,iBAAA,CAAbb,aAAa;IACFe,cAAc,GAAAF,iBAAA,CAAzBG,QAAQ,CAAGD,cAAc;EAE7B,IAAI,CAACf,aAAa,EAAE;IAChB,MAAM,IAAIiB,KAAK,aAAAN,MAAA,CAAapB,OAAO,mBAAgB,CAAC;EACxD;EAEA,WAAA2B,sBAAA;IAAQH,cAAc,EAAdA;EAAc,GAAKhB,eAAe,CAACC,aAAa,CAAC;AAC7D;AAEO,SAASmB,kBAAkBA,CAAC5B,OAAe,EAAkB;EAChE,IAAMK,UAAU,GAAGN,kBAAkB,CAACC,OAAO,CAAC;EAC9C,IAAMG,MAAM,GAAGkB,oBAAoB,CAACrB,OAAO,CAAC;EAE5C,IAAOa,KAAK,GAAaV,MAAM,CAAxBU,KAAK;IAAKgB,IAAI,OAAAC,iCAAA,EAAI3B,MAAM,EAAA4B,SAAA;EAE/B,IAAMC,WAAmC,GACrCnB,KAAK,CAACE,cAAc,IAAIF,KAAK,CAACE,cAAc,KAAK,MAAM,GACjD;IACIkB,aAAa,WAAAb,MAAA,CAAWf,UAAU;EACtC,CAAC,GACD,CAAC,CAAC;EAEZ,WAAAsB,sBAAA;IACId,KAAK,MAAAc,sBAAA,MAAAA,sBAAA,MACEd,KAAK;MACRE,cAAc,EACVF,KAAK,CAACE,cAAc,IAAIF,KAAK,CAACE,cAAc,KAAK,MAAM,GACjD;QACImB,IAAI,EAAE,OAAO;QACbC,KAAK,EAAE9B;MACX,CAAC,GACD;IAAM,EACnB;IACD2B,WAAW,EAAXA;EAAW,GACRH,IAAI;AAEf;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASO,iBAAiBA,CAACpC,OAAe,EAAEqC,GAAY,EAAkB;EAC7E,IAAAC,qBAAA,GAAyBjB,oBAAoB,CAACrB,OAAO,CAAC;IAA/Ca,KAAK,GAAAyB,qBAAA,CAALzB,KAAK;IAAKgB,IAAI,OAAAC,iCAAA,EAAAQ,qBAAA,EAAAC,UAAA;EACrB,IAAOxB,cAAc,GAAIF,KAAK,CAAvBE,cAAc;EAErB,IAAMiB,WAAW,GACbjB,cAAc,IAAIA,cAAc,KAAK,MAAM,GAAGsB,GAAG,CAACG,EAAE,CAACC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EAEpFC,MAAM,CAACC,MAAM,CAAC9B,KAAK,EAAE;IAAC+B,cAAc,MAAAjB,sBAAA,MAAMK,WAAW;EAAC,CAAC,CAAC;EAExD,WAAAL,sBAAA,MAAAA,sBAAA,MACOE,IAAI;IACPhB,KAAK,EAALA,KAAK;IACLmB,WAAW,EAAXA;EAAW;AAEnB"}
@@ -1,18 +1,23 @@
1
1
  import { AppContext } from '@gravity-ui/nodekit';
2
+ export declare function getSettingsConfig(cluster: string): {
3
+ cluster: string;
4
+ mapNodePath?: string;
5
+ };
2
6
  export declare function isRemoteSettingsConfigured(): boolean;
3
7
  interface Params {
4
8
  ctx: AppContext;
5
9
  username: string;
10
+ cluster: string;
6
11
  }
7
- export declare function create({ ctx, username }: Params): any;
8
- export declare function get({ ctx, username }: Params): any;
12
+ export declare function create({ ctx, username, cluster }: Params): any;
13
+ export declare function get({ ctx, username, cluster }: Params): any;
9
14
  interface GetParams extends Params {
10
15
  path: string;
11
16
  }
12
- export declare function getItem({ ctx, username, path }: GetParams): any;
17
+ export declare function getItem({ ctx, username, path, cluster }: GetParams): any;
13
18
  interface SetParams extends GetParams {
14
19
  value: any;
15
20
  }
16
- export declare function setItem({ ctx, username, path, value }: SetParams): any;
17
- export declare function deleteItem({ ctx, username, path }: GetParams): any;
21
+ export declare function setItem({ ctx, username, path, value, cluster }: SetParams): any;
22
+ export declare function deleteItem({ ctx, username, path, cluster }: GetParams): any;
18
23
  export {};
@@ -1,33 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteItem = exports.setItem = exports.getItem = exports.get = exports.create = exports.isRemoteSettingsConfigured = void 0;
3
+ exports.deleteItem = exports.setItem = exports.getItem = exports.get = exports.create = exports.isRemoteSettingsConfigured = exports.getSettingsConfig = void 0;
4
4
  const ServerFactory_1 = require("../ServerFactory");
5
5
  const requestsSetup_1 = require("./requestsSetup");
6
6
  const yt = require('@ytsaurus/javascript-wrapper')();
7
7
  function makeConfigError() {
8
8
  return new Error('Remote user settings are not configured. Please provide userSettingsConfig.');
9
9
  }
10
- function getSettingsConfig() {
10
+ function getSettingsConfig(cluster) {
11
11
  const { userSettingsConfig } = (0, ServerFactory_1.getApp)().config;
12
- return userSettingsConfig || {};
12
+ return Object.assign({ cluster }, userSettingsConfig);
13
13
  }
14
- function getSettingsSetup() {
15
- return (0, requestsSetup_1.getRobotYTApiSetup)(getSettingsConfig().cluster).setup;
14
+ exports.getSettingsConfig = getSettingsConfig;
15
+ function getSettingsSetup(cluster) {
16
+ return (0, requestsSetup_1.getRobotYTApiSetup)(getSettingsConfig(cluster).cluster).setup;
16
17
  }
17
18
  function isRemoteSettingsConfigured() {
18
19
  const { userSettingsConfig } = (0, ServerFactory_1.getApp)().config;
19
20
  return Boolean(userSettingsConfig);
20
21
  }
21
22
  exports.isRemoteSettingsConfigured = isRemoteSettingsConfigured;
22
- function create({ ctx, username }) {
23
+ function create({ ctx, username, cluster }) {
23
24
  ctx.log('settings.create', { username });
24
25
  if (!isRemoteSettingsConfigured()) {
25
26
  return Promise.reject(makeConfigError());
26
27
  }
27
28
  return yt.v3.create({
28
- setup: getSettingsSetup(),
29
+ setup: getSettingsSetup(cluster),
29
30
  parameters: {
30
- path: getSettingsConfig().mapNodePath + '/' + username,
31
+ path: getSettingsConfig(cluster).mapNodePath + '/' + username,
31
32
  type: 'document',
32
33
  ignore_existing: true,
33
34
  attributes: {
@@ -37,15 +38,15 @@ function create({ ctx, username }) {
37
38
  });
38
39
  }
39
40
  exports.create = create;
40
- function get({ ctx, username }) {
41
- ctx.log('settings.get', { username });
41
+ function get({ ctx, username, cluster }) {
42
+ ctx.log('settings.get', { username, cluster });
42
43
  if (!isRemoteSettingsConfigured()) {
43
44
  return Promise.reject(makeConfigError());
44
45
  }
45
46
  return yt.v3.get({
46
- setup: getSettingsSetup(),
47
+ setup: getSettingsSetup(cluster),
47
48
  parameters: {
48
- path: getSettingsConfig().mapNodePath + '/' + username,
49
+ path: getSettingsConfig(cluster).mapNodePath + '/' + username,
49
50
  output_format: {
50
51
  $value: 'json',
51
52
  $attributes: {
@@ -56,15 +57,15 @@ function get({ ctx, username }) {
56
57
  });
57
58
  }
58
59
  exports.get = get;
59
- function getItem({ ctx, username, path }) {
60
+ function getItem({ ctx, username, path, cluster }) {
60
61
  ctx.log('settings.getItem', { username, path });
61
62
  if (!isRemoteSettingsConfigured()) {
62
63
  return Promise.reject(makeConfigError());
63
64
  }
64
65
  return yt.v3.get({
65
- setup: getSettingsSetup(),
66
+ setup: getSettingsSetup(cluster),
66
67
  parameters: {
67
- path: getSettingsConfig().mapNodePath + '/' + username + '/' + path,
68
+ path: getSettingsConfig(cluster).mapNodePath + '/' + username + '/' + path,
68
69
  output_format: {
69
70
  $value: 'json',
70
71
  $attributes: {
@@ -75,15 +76,15 @@ function getItem({ ctx, username, path }) {
75
76
  });
76
77
  }
77
78
  exports.getItem = getItem;
78
- function setItem({ ctx, username, path, value }) {
79
- ctx.log('settings.setItem', { username, path, value });
79
+ function setItem({ ctx, username, path, value, cluster }) {
80
+ ctx.log('settings.setItem', { username, path, value, cluster });
80
81
  if (!isRemoteSettingsConfigured()) {
81
82
  return Promise.reject(makeConfigError());
82
83
  }
83
84
  return yt.v3.set({
84
- setup: getSettingsSetup(),
85
+ setup: getSettingsSetup(cluster),
85
86
  parameters: {
86
- path: getSettingsConfig().mapNodePath + '/' + username + '/' + path,
87
+ path: getSettingsConfig(cluster).mapNodePath + '/' + username + '/' + path,
87
88
  input_format: {
88
89
  $value: 'json',
89
90
  $attributes: {
@@ -95,15 +96,15 @@ function setItem({ ctx, username, path, value }) {
95
96
  });
96
97
  }
97
98
  exports.setItem = setItem;
98
- function deleteItem({ ctx, username, path }) {
99
- ctx.log('settings.deleteItem', { username, path });
99
+ function deleteItem({ ctx, username, path, cluster }) {
100
+ ctx.log('settings.deleteItem', { username, path, cluster });
100
101
  if (!isRemoteSettingsConfigured()) {
101
102
  return Promise.reject(makeConfigError());
102
103
  }
103
104
  return yt.v3.remove({
104
- setup: getSettingsSetup(),
105
+ setup: getSettingsSetup(cluster),
105
106
  parameters: {
106
- path: getSettingsConfig().mapNodePath + '/' + username + '/' + path,
107
+ path: getSettingsConfig(cluster).mapNodePath + '/' + username + '/' + path,
107
108
  },
108
109
  });
109
110
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_ServerFactory","require","_requestsSetup","yt","makeConfigError","Error","getSettingsConfig","userSettingsConfig","getApp","config","getSettingsSetup","getRobotYTApiSetup","cluster","setup","isRemoteSettingsConfigured","Boolean","create","_ref","ctx","username","log","Promise","reject","v3","parameters","path","mapNodePath","type","ignore_existing","attributes","value","get","_ref2","output_format","$value","$attributes","encode_utf8","getItem","_ref3","setItem","_ref4","set","input_format","data","deleteItem","_ref5","remove"],"sources":["settings.ts"],"sourcesContent":["import {AppContext} from '@gravity-ui/nodekit';\nimport {YTCoreConfig} from '../../@types/core';\nimport {getApp} from '../ServerFactory';\nimport {getRobotYTApiSetup} from './requestsSetup';\n\nconst yt = require('@ytsaurus/javascript-wrapper')();\n\nfunction makeConfigError() {\n return new Error('Remote user settings are not configured. Please provide userSettingsConfig.');\n}\n\nfunction getSettingsConfig(): Partial<Required<YTCoreConfig>['userSettingsConfig']> {\n const {userSettingsConfig} = getApp().config;\n return userSettingsConfig || {};\n}\n\nfunction getSettingsSetup() {\n return getRobotYTApiSetup(getSettingsConfig().cluster!).setup;\n}\n\nexport function isRemoteSettingsConfigured() {\n const {userSettingsConfig} = getApp().config;\n return Boolean(userSettingsConfig);\n}\n\ninterface Params {\n ctx: AppContext;\n username: string;\n}\n\nexport function create({ctx, username}: Params) {\n ctx.log('settings.create', {username});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.create({\n setup: getSettingsSetup(),\n parameters: {\n path: getSettingsConfig().mapNodePath + '/' + username,\n type: 'document',\n ignore_existing: true, // No error if exists\n attributes: {\n value: {},\n },\n },\n });\n}\n\nexport function get({ctx, username}: Params) {\n ctx.log('settings.get', {username});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.get({\n setup: getSettingsSetup(),\n parameters: {\n path: getSettingsConfig().mapNodePath + '/' + username,\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n });\n}\n\ninterface GetParams extends Params {\n path: string;\n}\nexport function getItem({ctx, username, path}: GetParams) {\n ctx.log('settings.getItem', {username, path});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.get({\n setup: getSettingsSetup(),\n parameters: {\n path: getSettingsConfig().mapNodePath + '/' + username + '/' + path,\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n });\n}\n\ninterface SetParams extends GetParams {\n value: any;\n}\nexport function setItem({ctx, username, path, value}: SetParams) {\n ctx.log('settings.setItem', {username, path, value});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.set({\n setup: getSettingsSetup(),\n parameters: {\n path: getSettingsConfig().mapNodePath + '/' + username + '/' + path,\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n data: value,\n });\n}\nexport function deleteItem({ctx, username, path}: GetParams) {\n ctx.log('settings.deleteItem', {username, path});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.remove({\n setup: getSettingsSetup(),\n parameters: {\n path: getSettingsConfig().mapNodePath + '/' + username + '/' + path,\n },\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_ServerFactory","require","_requestsSetup","_interopRequireDefault","obj","__esModule","default","yt","makeConfigError","Error","getSettingsConfig","cluster","userSettingsConfig","getApp","config","_objectSpread","getSettingsSetup","getRobotYTApiSetup","setup","isRemoteSettingsConfigured","Boolean","create","_ref","ctx","username","log","Promise","reject","v3","parameters","path","mapNodePath","type","ignore_existing","attributes","value","get","_ref2","output_format","$value","$attributes","encode_utf8","getItem","_ref3","setItem","_ref4","set","input_format","data","deleteItem","_ref5","remove"],"sources":["settings.ts"],"sourcesContent":["import {AppContext} from '@gravity-ui/nodekit';\nimport {getApp} from '../ServerFactory';\nimport {getRobotYTApiSetup} from './requestsSetup';\n\nconst yt = require('@ytsaurus/javascript-wrapper')();\n\nfunction makeConfigError() {\n return new Error('Remote user settings are not configured. Please provide userSettingsConfig.');\n}\n\nexport function getSettingsConfig(cluster: string): {\n cluster: string;\n mapNodePath?: string;\n} {\n const {userSettingsConfig} = getApp().config;\n\n return {\n cluster,\n ...userSettingsConfig,\n };\n}\n\nfunction getSettingsSetup(cluster: string) {\n return getRobotYTApiSetup(getSettingsConfig(cluster).cluster).setup;\n}\n\nexport function isRemoteSettingsConfigured() {\n const {userSettingsConfig} = getApp().config;\n return Boolean(userSettingsConfig);\n}\n\ninterface Params {\n ctx: AppContext;\n username: string;\n cluster: string;\n}\n\nexport function create({ctx, username, cluster}: Params) {\n ctx.log('settings.create', {username});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.create({\n setup: getSettingsSetup(cluster),\n parameters: {\n path: getSettingsConfig(cluster).mapNodePath + '/' + username,\n type: 'document',\n ignore_existing: true, // No error if exists\n attributes: {\n value: {},\n },\n },\n });\n}\n\nexport function get({ctx, username, cluster}: Params) {\n ctx.log('settings.get', {username, cluster});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.get({\n setup: getSettingsSetup(cluster),\n parameters: {\n path: getSettingsConfig(cluster).mapNodePath + '/' + username,\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n });\n}\n\ninterface GetParams extends Params {\n path: string;\n}\nexport function getItem({ctx, username, path, cluster}: GetParams) {\n ctx.log('settings.getItem', {username, path});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.get({\n setup: getSettingsSetup(cluster),\n parameters: {\n path: getSettingsConfig(cluster).mapNodePath + '/' + username + '/' + path,\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n });\n}\n\ninterface SetParams extends GetParams {\n value: any;\n}\nexport function setItem({ctx, username, path, value, cluster}: SetParams) {\n ctx.log('settings.setItem', {username, path, value, cluster});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.set({\n setup: getSettingsSetup(cluster),\n parameters: {\n path: getSettingsConfig(cluster).mapNodePath + '/' + username + '/' + path,\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n data: value,\n });\n}\nexport function deleteItem({ctx, username, path, cluster}: GetParams) {\n ctx.log('settings.deleteItem', {username, path, cluster});\n if (!isRemoteSettingsConfigured()) {\n return Promise.reject(makeConfigError());\n }\n\n return yt.v3.remove({\n setup: getSettingsSetup(cluster),\n parameters: {\n path: getSettingsConfig(cluster).mapNodePath + '/' + username + '/' + path,\n },\n });\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  interface PresetConfig {
2
- cluster: string;
2
+ cluster?: string;
3
3
  dynamicTablePath: string;
4
4
  }
5
- export declare function getColumnPreset({ cluster, dynamicTablePath }: PresetConfig, hash: string): Promise<Array<string> | undefined>;
6
- export declare function saveColumnPreset({ cluster, dynamicTablePath }: PresetConfig, columns: unknown | Array<string>): Promise<string>;
5
+ export declare function getColumnPreset({ dynamicTablePath, cluster }: PresetConfig, hash: string, ytAuthCluster: string): Promise<Array<string> | undefined>;
6
+ export declare function saveColumnPreset({ dynamicTablePath, cluster }: PresetConfig, columns: unknown | Array<string>, ytAuthCluster: string): Promise<string>;
7
7
  export {};
@@ -11,11 +11,11 @@ const javascript_wrapper_1 = __importDefault(require("@ytsaurus/javascript-wrapp
11
11
  const requestsSetup_1 = require("./requestsSetup");
12
12
  const yt = (0, javascript_wrapper_1.default)();
13
13
  const SHA1_REGEXP = /^[0-9a-f]{40}$/;
14
- async function getColumnPreset({ cluster, dynamicTablePath }, hash) {
14
+ async function getColumnPreset({ dynamicTablePath, cluster }, hash, ytAuthCluster) {
15
15
  if (!SHA1_REGEXP.test(hash)) {
16
16
  throw new Error('The hash parameter should be defined as a valid sha1-hash string');
17
17
  }
18
- const { setup: setupConfig } = (0, requestsSetup_1.getRobotYTApiSetup)(cluster);
18
+ const { setup: setupConfig } = (0, requestsSetup_1.getRobotYTApiSetup)(cluster || ytAuthCluster);
19
19
  const query = `* FROM [${dynamicTablePath}] WHERE hash="${hash}" LIMIT 1`;
20
20
  const result = await yt.v3.selectRows({
21
21
  setup: setupConfig,
@@ -46,11 +46,11 @@ async function getColumnPreset({ cluster, dynamicTablePath }, hash) {
46
46
  return columns;
47
47
  }
48
48
  exports.getColumnPreset = getColumnPreset;
49
- async function saveColumnPreset({ cluster, dynamicTablePath }, columns) {
49
+ async function saveColumnPreset({ dynamicTablePath, cluster }, columns, ytAuthCluster) {
50
50
  if (!Array.isArray(columns) || lodash_1.default.some(columns, (i) => 'string' !== typeof i)) {
51
51
  throw new Error('Request body should contain JSON-array of strings');
52
52
  }
53
- const { setup: setupConfig } = (0, requestsSetup_1.getRobotYTApiSetup)(cluster);
53
+ const { setup: setupConfig } = (0, requestsSetup_1.getRobotYTApiSetup)(cluster || ytAuthCluster);
54
54
  const hash = object_hash_1.default.sha1(columns);
55
55
  await yt.v3.insertRows({
56
56
  setup: setupConfig,
@@ -1 +1 @@
1
- {"version":3,"names":["_objectHash","_interopRequireDefault","require","_javascriptWrapper","_requestsSetup","obj","__esModule","default","yt","ytLib","SHA1_REGEXP","getColumnPreset","_x","_x2","_getColumnPreset","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","hash","cluster","dynamicTablePath","_getRobotYTApiSetup","setupConfig","query","result","columns","wrap","_callee$","_context","prev","next","test","Error","getRobotYTApiSetup","setup","concat","v3","selectRows","parameters","output_format","$value","$attributes","field_weight_limit","encode_utf8","sent","abrupt","undefined","JSON","parse","columns_json","t0","Array","isArray","_some","i","stop","saveColumnPreset","_x3","_x4","_saveColumnPreset","_callee2","_ref2","_getRobotYTApiSetup2","_callee2$","_context2","objectHash","sha1","insertRows","path","input_format","data","stringify"],"sources":["table.ts"],"sourcesContent":["import _ from 'lodash';\nimport objectHash from 'object-hash';\n// @ts-ignore-next-line\nimport ytLib from '@ytsaurus/javascript-wrapper';\nimport {getRobotYTApiSetup} from './requestsSetup';\n\nconst yt = ytLib();\n\nconst SHA1_REGEXP = /^[0-9a-f]{40}$/;\n\ninterface PresetConfig {\n cluster: string;\n dynamicTablePath: string;\n}\n\nexport async function getColumnPreset(\n {cluster, dynamicTablePath}: PresetConfig,\n hash: string,\n): Promise<Array<string> | undefined> {\n if (!SHA1_REGEXP.test(hash)) {\n throw new Error('The hash parameter should be defined as a valid sha1-hash string');\n }\n\n const {setup: setupConfig} = getRobotYTApiSetup(cluster);\n\n const query = `* FROM [${dynamicTablePath}] WHERE hash=\"${hash}\" LIMIT 1`;\n const result = await yt.v3.selectRows({\n setup: setupConfig,\n parameters: {\n query,\n output_format: {\n $value: 'json',\n $attributes: {\n field_weight_limit: 100000,\n encode_utf8: 'false',\n },\n },\n },\n });\n\n if (!result) {\n return undefined;\n }\n\n let columns: Array<string> = [];\n try {\n columns = JSON.parse(JSON.parse(result).columns_json);\n } catch (e) {\n throw new Error(`Failed to parse ${hash}-preset`);\n }\n\n if (!Array.isArray(columns) || _.some(columns, (i) => 'string' !== typeof i)) {\n throw new Error(`${hash}-preset is not an array of strings`);\n }\n return columns;\n}\n\nexport async function saveColumnPreset(\n {cluster, dynamicTablePath}: PresetConfig,\n columns: unknown | Array<string>,\n): Promise<string> {\n if (!Array.isArray(columns) || _.some(columns, (i) => 'string' !== typeof i)) {\n throw new Error('Request body should contain JSON-array of strings');\n }\n\n const {setup: setupConfig} = getRobotYTApiSetup(cluster);\n\n const hash = objectHash.sha1(columns);\n\n await yt.v3.insertRows({\n setup: setupConfig,\n parameters: {\n path: dynamicTablePath,\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n data: [{hash, columns_json: JSON.stringify(columns)}],\n });\n\n return hash;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_objectHash","_interopRequireDefault","require","_javascriptWrapper","_requestsSetup","obj","__esModule","default","yt","ytLib","SHA1_REGEXP","getColumnPreset","_x","_x2","_x3","_getColumnPreset","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","hash","ytAuthCluster","dynamicTablePath","cluster","_getRobotYTApiSetup","setupConfig","query","result","columns","wrap","_callee$","_context","prev","next","test","Error","getRobotYTApiSetup","setup","concat","v3","selectRows","parameters","output_format","$value","$attributes","field_weight_limit","encode_utf8","sent","abrupt","undefined","JSON","parse","columns_json","t0","Array","isArray","_some","i","stop","saveColumnPreset","_x4","_x5","_x6","_saveColumnPreset","_callee2","_ref2","_getRobotYTApiSetup2","_callee2$","_context2","objectHash","sha1","insertRows","path","input_format","data","stringify"],"sources":["table.ts"],"sourcesContent":["import _ from 'lodash';\nimport objectHash from 'object-hash';\n// @ts-ignore-next-line\nimport ytLib from '@ytsaurus/javascript-wrapper';\nimport {getRobotYTApiSetup} from './requestsSetup';\n\nconst yt = ytLib();\n\nconst SHA1_REGEXP = /^[0-9a-f]{40}$/;\n\ninterface PresetConfig {\n cluster?: string;\n dynamicTablePath: string;\n}\n\nexport async function getColumnPreset(\n {dynamicTablePath, cluster}: PresetConfig,\n hash: string,\n ytAuthCluster: string,\n): Promise<Array<string> | undefined> {\n if (!SHA1_REGEXP.test(hash)) {\n throw new Error('The hash parameter should be defined as a valid sha1-hash string');\n }\n\n const {setup: setupConfig} = getRobotYTApiSetup(cluster || ytAuthCluster);\n\n const query = `* FROM [${dynamicTablePath}] WHERE hash=\"${hash}\" LIMIT 1`;\n const result = await yt.v3.selectRows({\n setup: setupConfig,\n parameters: {\n query,\n output_format: {\n $value: 'json',\n $attributes: {\n field_weight_limit: 100000,\n encode_utf8: 'false',\n },\n },\n },\n });\n\n if (!result) {\n return undefined;\n }\n\n let columns: Array<string> = [];\n try {\n columns = JSON.parse(JSON.parse(result).columns_json);\n } catch (e) {\n throw new Error(`Failed to parse ${hash}-preset`);\n }\n\n if (!Array.isArray(columns) || _.some(columns, (i) => 'string' !== typeof i)) {\n throw new Error(`${hash}-preset is not an array of strings`);\n }\n return columns;\n}\n\nexport async function saveColumnPreset(\n {dynamicTablePath, cluster}: PresetConfig,\n columns: unknown | Array<string>,\n ytAuthCluster: string,\n): Promise<string> {\n if (!Array.isArray(columns) || _.some(columns, (i) => 'string' !== typeof i)) {\n throw new Error('Request body should contain JSON-array of strings');\n }\n\n const {setup: setupConfig} = getRobotYTApiSetup(cluster || ytAuthCluster);\n\n const hash = objectHash.sha1(columns);\n\n await yt.v3.insertRows({\n setup: setupConfig,\n parameters: {\n path: dynamicTablePath,\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n data: [{hash, columns_json: JSON.stringify(columns)}],\n });\n\n return hash;\n}\n"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import { AppConfig } from '@gravity-ui/nodekit';
2
2
  import type { Response } from 'express';
3
3
  export declare function isYtAuthEnabled(config: AppConfig): boolean;
4
- export declare function assertAuthEnabled(ytAuthCluster?: string): asserts ytAuthCluster is string;
5
- export declare function getAuthCluster(config: AppConfig): string;
6
4
  export declare function YTAuthLogout(res: Response): void;
@@ -1,23 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.YTAuthLogout = exports.getAuthCluster = exports.assertAuthEnabled = exports.isYtAuthEnabled = void 0;
3
+ exports.YTAuthLogout = exports.isYtAuthEnabled = void 0;
4
4
  const constants_1 = require("../../shared/constants");
5
+ const utils_1 = require("./utils");
5
6
  function isYtAuthEnabled(config) {
6
- return Boolean(config.ytAuthCluster);
7
+ return Boolean(config.allowPasswordAuth);
7
8
  }
8
9
  exports.isYtAuthEnabled = isYtAuthEnabled;
9
- function assertAuthEnabled(ytAuthCluster) {
10
- if (!ytAuthCluster) {
11
- throw new Error('Cluster for password authentication is disabled. You have to define ytAuthCluster to use it.');
12
- }
13
- }
14
- exports.assertAuthEnabled = assertAuthEnabled;
15
- function getAuthCluster(config) {
16
- assertAuthEnabled(config.ytAuthCluster);
17
- return config.ytAuthCluster;
18
- }
19
- exports.getAuthCluster = getAuthCluster;
20
10
  function YTAuthLogout(res) {
21
- res.setHeader('set-cookie', `${constants_1.YT_CYPRESS_COOKIE_NAME}=deleted; Path=/; Max-Age=0;`);
11
+ const clusters = (0, utils_1.getClustersFromConfig)();
12
+ res.setHeader('set-cookie', [`${constants_1.YT_CYPRESS_COOKIE_NAME}=deleted; Path=/; Max-Age=0;`].concat(Object.keys(clusters).map((cluster) => `${cluster}:${constants_1.YT_CYPRESS_COOKIE_NAME}=deleted; Path=/; Max-Age=0;`)));
22
13
  }
23
14
  exports.YTAuthLogout = YTAuthLogout;
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","isYtAuthEnabled","config","Boolean","ytAuthCluster","assertAuthEnabled","Error","getAuthCluster","YTAuthLogout","res","setHeader","concat","YT_CYPRESS_COOKIE_NAME"],"sources":["yt-auth.ts"],"sourcesContent":["import {AppConfig} from '@gravity-ui/nodekit';\nimport type {Response} from 'express';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\n\nexport function isYtAuthEnabled(config: AppConfig) {\n return Boolean(config.ytAuthCluster);\n}\n\nexport function assertAuthEnabled(ytAuthCluster?: string): asserts ytAuthCluster is string {\n if (!ytAuthCluster) {\n throw new Error(\n 'Cluster for password authentication is disabled. You have to define ytAuthCluster to use it.',\n );\n }\n}\n\nexport function getAuthCluster(config: AppConfig) {\n assertAuthEnabled(config.ytAuthCluster);\n return config.ytAuthCluster;\n}\n\nexport function YTAuthLogout(res: Response) {\n res.setHeader('set-cookie', `${YT_CYPRESS_COOKIE_NAME}=deleted; Path=/; Max-Age=0;`);\n}\n"],"mappings":";;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,eAAeA,CAACC,MAAiB,EAAE;EAC/C,OAAOC,OAAO,CAACD,MAAM,CAACE,aAAa,CAAC;AACxC;AAEO,SAASC,iBAAiBA,CAACD,aAAsB,EAAmC;EACvF,IAAI,CAACA,aAAa,EAAE;IAChB,MAAM,IAAIE,KAAK,CACX,8FACJ,CAAC;EACL;AACJ;AAEO,SAASC,cAAcA,CAACL,MAAiB,EAAE;EAC9CG,iBAAiB,CAACH,MAAM,CAACE,aAAa,CAAC;EACvC,OAAOF,MAAM,CAACE,aAAa;AAC/B;AAEO,SAASI,YAAYA,CAACC,GAAa,EAAE;EACxCA,GAAG,CAACC,SAAS,CAAC,YAAY,KAAAC,MAAA,CAAKC,iCAAsB,iCAA8B,CAAC;AACxF"}
1
+ {"version":3,"names":["_constants","require","_utils","isYtAuthEnabled","config","Boolean","allowPasswordAuth","YTAuthLogout","res","clusters","getClustersFromConfig","setHeader","concat","YT_CYPRESS_COOKIE_NAME","Object","keys","map","cluster"],"sources":["yt-auth.ts"],"sourcesContent":["import {AppConfig} from '@gravity-ui/nodekit';\nimport type {Response} from 'express';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\nimport {getClustersFromConfig} from './utils';\n\nexport function isYtAuthEnabled(config: AppConfig) {\n return Boolean(config.allowPasswordAuth);\n}\n\nexport function YTAuthLogout(res: Response) {\n const clusters = getClustersFromConfig();\n\n res.setHeader(\n 'set-cookie',\n [`${YT_CYPRESS_COOKIE_NAME}=deleted; Path=/; Max-Age=0;`].concat(\n Object.keys(clusters).map(\n (cluster) => `${cluster}:${YT_CYPRESS_COOKIE_NAME}=deleted; Path=/; Max-Age=0;`,\n ),\n ),\n );\n}\n"],"mappings":";;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEO,SAASE,eAAeA,CAACC,MAAiB,EAAE;EAC/C,OAAOC,OAAO,CAACD,MAAM,CAACE,iBAAiB,CAAC;AAC5C;AAEO,SAASC,YAAYA,CAACC,GAAa,EAAE;EACxC,IAAMC,QAAQ,GAAG,IAAAC,4BAAqB,EAAC,CAAC;EAExCF,GAAG,CAACG,SAAS,CACT,YAAY,EACZ,IAAAC,MAAA,CAAIC,iCAAsB,kCAA+B,CAACD,MAAM,CAC5DE,MAAM,CAACC,IAAI,CAACN,QAAQ,CAAC,CAACO,GAAG,CACrB,UAACC,OAAO;IAAA,UAAAL,MAAA,CAAQK,OAAO,OAAAL,MAAA,CAAIC,iCAAsB;EAAA,CACrD,CACJ,CACJ,CAAC;AACL"}
@@ -2,23 +2,15 @@
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
- var _a;
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
7
6
  const type_is_1 = __importDefault(require("type-is"));
8
7
  const expresskit_1 = require("@gravity-ui/expresskit");
9
8
  const path = require('path');
10
- const ytAuthConfig = process.env.YT_AUTH_CLUSTER_ID
11
- ? Object.assign({ ytAuthCluster: process.env.YT_AUTH_CLUSTER_ID, ytAuthAllowInsecure: Boolean(process.env.YT_AUTH_ALLOW_INSECURE), appAuthPolicy: expresskit_1.AuthPolicy.required, userSettingsConfig: {
12
- cluster: process.env.YT_AUTH_CLUSTER_ID,
13
- mapNodePath: (_a = process.env.YT_USER_SETTINGS_PATH) !== null && _a !== void 0 ? _a : '//tmp',
14
- } }, (process.env.YT_USER_COLUMN_PRESETS_PATH
15
- ? {
16
- userColumnPresets: {
17
- cluster: process.env.YT_AUTH_CLUSTER_ID,
18
- dynamicTablePath: process.env.YT_USER_COLUMN_PRESETS_PATH,
19
- },
20
- }
21
- : {})) : {};
9
+ const ytAuthConfig = {
10
+ allowPasswordAuth: Boolean(process.env.ALLOW_PASSWORD_AUTH),
11
+ ytAuthAllowInsecure: Boolean(process.env.YT_AUTH_ALLOW_INSECURE),
12
+ appAuthPolicy: expresskit_1.AuthPolicy.required,
13
+ };
22
14
  const config = Object.assign(Object.assign({ appName: 'YTSaurus', appSocket: 'dist/run/server.sock', appAuthPolicy: process.env.AUTH_POLICY || 'redirect' }, ytAuthConfig), {
23
15
  // TODO: fix me
24
16
  // csp: 'disabled',