@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.
- package/README.md +6 -11
- package/build/cjs/@types/core.d.ts +7 -7
- package/build/cjs/server/components/layout-config.js +3 -3
- package/build/cjs/server/components/layout-config.js.map +1 -1
- package/build/cjs/server/components/requestsSetup.js +13 -5
- package/build/cjs/server/components/requestsSetup.js.map +1 -1
- package/build/cjs/server/components/settings.d.ts +10 -5
- package/build/cjs/server/components/settings.js +24 -23
- package/build/cjs/server/components/settings.js.map +1 -1
- package/build/cjs/server/components/table.d.ts +3 -3
- package/build/cjs/server/components/table.js +4 -4
- package/build/cjs/server/components/table.js.map +1 -1
- package/build/cjs/server/components/yt-auth.d.ts +0 -2
- package/build/cjs/server/components/yt-auth.js +5 -14
- package/build/cjs/server/components/yt-auth.js.map +1 -1
- package/build/cjs/server/configs/common.js +5 -13
- package/build/cjs/server/configs/common.js.map +1 -1
- package/build/cjs/server/configs/local.js +0 -5
- package/build/cjs/server/configs/local.js.map +1 -1
- package/build/cjs/server/controllers/chyt-api.js +1 -1
- package/build/cjs/server/controllers/chyt-api.js.map +1 -1
- package/build/cjs/server/controllers/cluster-info.js +2 -2
- package/build/cjs/server/controllers/cluster-info.js.map +1 -1
- package/build/cjs/server/controllers/cluster-params.js +1 -1
- package/build/cjs/server/controllers/cluster-params.js.map +1 -1
- package/build/cjs/server/controllers/clusters.d.ts +1 -0
- package/build/cjs/server/controllers/clusters.js +24 -1
- package/build/cjs/server/controllers/clusters.js.map +1 -1
- package/build/cjs/server/controllers/home.js +10 -6
- package/build/cjs/server/controllers/home.js.map +1 -1
- package/build/cjs/server/controllers/login.js +18 -5
- package/build/cjs/server/controllers/login.js.map +1 -1
- package/build/cjs/server/controllers/odin-proxy-api.js +1 -1
- package/build/cjs/server/controllers/odin-proxy-api.js.map +1 -1
- package/build/cjs/server/controllers/scheduling-pools.js +2 -2
- package/build/cjs/server/controllers/scheduling-pools.js.map +1 -1
- package/build/cjs/server/controllers/settings.js +10 -10
- package/build/cjs/server/controllers/settings.js.map +1 -1
- package/build/cjs/server/controllers/table-column-preset.js +4 -3
- package/build/cjs/server/controllers/table-column-preset.js.map +1 -1
- package/build/cjs/server/controllers/yt-api.js +1 -1
- package/build/cjs/server/controllers/yt-api.js.map +1 -1
- package/build/cjs/server/controllers/yt-proxy-api.js +2 -2
- package/build/cjs/server/controllers/yt-proxy-api.js.map +1 -1
- package/build/cjs/server/index.js +11 -8
- package/build/cjs/server/index.js.map +1 -1
- package/build/cjs/server/middlewares/authorization.d.ts +1 -1
- package/build/cjs/server/middlewares/authorization.js +3 -2
- package/build/cjs/server/middlewares/authorization.js.map +1 -1
- package/build/cjs/server/middlewares/yt-auth.js +3 -2
- package/build/cjs/server/middlewares/yt-auth.js.map +1 -1
- package/build/cjs/server/routes.js +26 -25
- package/build/cjs/server/routes.js.map +1 -1
- package/build/cjs/server/utils/index.d.ts +1 -1
- package/build/cjs/server/utils/index.js +12 -4
- package/build/cjs/server/utils/index.js.map +1 -1
- package/build/cjs/shared/yt-types.d.ts +1 -0
- package/build/cjs/ui/common/utils/settings-remote-provider.d.ts +5 -5
- package/build/cjs/ui/common/utils/settings-remote-provider.js +42 -16
- package/build/cjs/ui/common/utils/settings-remote-provider.js.map +1 -1
- package/build/cjs/ui/components/ElementsTable/ElementsTable.d.ts +1 -1
- package/build/cjs/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.d.ts +2 -1
- package/build/cjs/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js +11 -6
- package/build/cjs/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js.map +1 -1
- package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js +7 -4
- package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
- package/build/cjs/ui/config/ui-settings.d.ts +1 -0
- package/build/cjs/ui/config/ui-settings.js +3 -2
- package/build/cjs/ui/config/ui-settings.js.map +1 -1
- package/build/cjs/ui/constants/index.d.ts +7 -0
- package/build/cjs/ui/constants/index.js +3 -1
- package/build/cjs/ui/constants/index.js.map +1 -1
- package/build/cjs/ui/containers/App/App.js +4 -3
- package/build/cjs/ui/containers/App/App.js.map +1 -1
- package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js +39 -22
- package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.d.ts +3 -1
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js +3 -1
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/cjs/ui/containers/ClustersMenu/ClusterMenuHeader.css +5 -0
- package/build/cjs/ui/containers/ClustersMenu/ClusterMenuHeader.css.map +1 -1
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenuBody.d.ts +3 -1
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenuBody.js +11 -3
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenuBody.js.map +1 -1
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenuHeader.d.ts +4 -4
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenuHeader.js.map +1 -1
- package/build/cjs/ui/containers/MaintenancePage/HandleRedirect.js.map +1 -1
- package/build/cjs/ui/entries/main.js +4 -1
- package/build/cjs/ui/entries/main.js.map +1 -1
- package/build/cjs/ui/pages/operations/selectors.d.ts +5 -0
- package/build/cjs/ui/pages/query-tracker/module/queries_list/selectors.d.ts +20 -0
- package/build/cjs/ui/pages/query-tracker/module/query/selectors.d.ts +5 -0
- package/build/cjs/ui/pages/query-tracker/module/settings/selector.d.ts +5 -0
- package/build/cjs/ui/pages/system/Chunks/Chunks.d.ts +1 -1
- package/build/cjs/ui/store/actions/cluster-params.d.ts +1 -0
- package/build/cjs/ui/store/actions/cluster-params.js +13 -0
- package/build/cjs/ui/store/actions/cluster-params.js.map +1 -1
- package/build/cjs/ui/store/actions/clusters-menu.d.ts +1 -0
- package/build/cjs/ui/store/actions/clusters-menu.js +22 -2
- package/build/cjs/ui/store/actions/clusters-menu.js.map +1 -1
- package/build/cjs/ui/store/actions/global/index.d.ts +3 -1
- package/build/cjs/ui/store/actions/global/index.js +19 -4
- package/build/cjs/ui/store/actions/global/index.js.map +1 -1
- package/build/cjs/ui/store/actions/navigation/content/table/columns-preset.d.ts +1 -1
- package/build/cjs/ui/store/actions/navigation/content/table/columns-preset.js +6 -4
- package/build/cjs/ui/store/actions/navigation/content/table/columns-preset.js.map +1 -1
- package/build/cjs/ui/store/actions/navigation/content/table/table.js +2 -1
- package/build/cjs/ui/store/actions/navigation/content/table/table.js.map +1 -1
- package/build/cjs/ui/store/actions/settings/index.js +25 -19
- package/build/cjs/ui/store/actions/settings/index.js.map +1 -1
- package/build/cjs/ui/store/reducers/accounts/usage/index.d.ts +1 -1
- package/build/cjs/ui/store/reducers/clusters-menu/clusters-menu.d.ts +4 -0
- package/build/cjs/ui/store/reducers/clusters-menu/clusters-menu.js +8 -0
- package/build/cjs/ui/store/reducers/clusters-menu/clusters-menu.js.map +1 -1
- package/build/cjs/ui/store/reducers/index.d.ts +5 -0
- package/build/cjs/ui/store/reducers/index.js.map +1 -1
- package/build/cjs/ui/store/reducers/settings.js +1 -1
- package/build/cjs/ui/store/reducers/settings.js.map +1 -1
- package/build/cjs/ui/store/selectors/accounts/account-usage.d.ts +40 -0
- package/build/cjs/ui/store/selectors/accounts/accounts-ts.d.ts +40 -0
- package/build/cjs/ui/store/selectors/chaos_cell_bundles/index.d.ts +55 -0
- package/build/cjs/ui/store/selectors/chyt/index.d.ts +35 -0
- package/build/cjs/ui/store/selectors/components/node/memory.d.ts +35 -0
- package/build/cjs/ui/store/selectors/components/node-maintenance-modal.d.ts +15 -0
- package/build/cjs/ui/store/selectors/components/nodes/node-card.d.ts +5 -0
- package/build/cjs/ui/store/selectors/components/nodes/nodes/data.d.ts +10 -0
- package/build/cjs/ui/store/selectors/components/nodes/nodes/predicates.d.ts +30 -0
- package/build/cjs/ui/store/selectors/components/versions/versions_v2-ts.d.ts +10 -0
- package/build/cjs/ui/store/selectors/components/versions/versions_v2.d.ts +25 -0
- package/build/cjs/ui/store/selectors/global/index.d.ts +912 -0
- package/build/cjs/ui/store/selectors/global/index.js +10 -1
- package/build/cjs/ui/store/selectors/global/index.js.map +1 -1
- package/build/cjs/ui/store/selectors/global/supported-features.d.ts +30 -0
- package/build/cjs/ui/store/selectors/modals/errors.d.ts +5 -0
- package/build/cjs/ui/store/selectors/navigation/content/document.d.ts +5 -0
- package/build/cjs/ui/store/selectors/navigation/content/replicated-table.d.ts +15 -0
- package/build/cjs/ui/store/selectors/navigation/content/table-mount-config.d.ts +5 -0
- package/build/cjs/ui/store/selectors/navigation/content/table-ts.d.ts +20 -0
- package/build/cjs/ui/store/selectors/navigation/content/table.d.ts +35 -0
- package/build/cjs/ui/store/selectors/navigation/modals/attributes-editor.d.ts +15 -0
- package/build/cjs/ui/store/selectors/navigation/modals/remote-copy-modal.d.ts +5 -0
- package/build/cjs/ui/store/selectors/navigation/navigation.d.ts +10 -0
- package/build/cjs/ui/store/selectors/navigation/tabs/access-log.d.ts +5 -0
- package/build/cjs/ui/store/selectors/navigation/tabs/annotation.d.ts +5 -0
- package/build/cjs/ui/store/selectors/navigation/tabs/consumer.d.ts +5 -0
- package/build/cjs/ui/store/selectors/navigation/tabs/locks.d.ts +10 -0
- package/build/cjs/ui/store/selectors/navigation/tabs/queue.d.ts +10 -0
- package/build/cjs/ui/store/selectors/navigation/tabs/tablet-errors.d.ts +5 -0
- package/build/cjs/ui/store/selectors/operations/index.d.ts +60 -0
- package/build/cjs/ui/store/selectors/operations/jobs-monitor.d.ts +20 -0
- package/build/cjs/ui/store/selectors/operations/operation.d.ts +60 -0
- package/build/cjs/ui/store/selectors/operations/operations-list.d.ts +15 -0
- package/build/cjs/ui/store/selectors/operations/statistics-v2.d.ts +40 -0
- package/build/cjs/ui/store/selectors/scheduling/attributes-to-filter.d.ts +5 -0
- package/build/cjs/ui/store/selectors/scheduling/create-pool-dialog.d.ts +5 -0
- package/build/cjs/ui/store/selectors/scheduling/expanded-pools.d.ts +5 -0
- package/build/cjs/ui/store/selectors/scheduling/index.d.ts +5 -0
- package/build/cjs/ui/store/selectors/scheduling/scheduling-pools.d.ts +15 -0
- package/build/cjs/ui/store/selectors/scheduling/scheduling-ts.d.ts +30 -0
- package/build/cjs/ui/store/selectors/scheduling/scheduling.d.ts +100 -0
- package/build/cjs/ui/store/selectors/tablet_cell_bundles/index.d.ts +75 -0
- package/build/cjs/ui/store/selectors/thor/support.d.ts +25 -0
- package/build/esm/@types/core.d.ts +7 -7
- package/build/esm/server/components/layout-config.js +4 -3
- package/build/esm/server/components/layout-config.js.map +1 -1
- package/build/esm/server/components/requestsSetup.js +12 -5
- package/build/esm/server/components/requestsSetup.js.map +1 -1
- package/build/esm/server/components/settings.d.ts +10 -5
- package/build/esm/server/components/settings.js +33 -22
- package/build/esm/server/components/settings.js.map +1 -1
- package/build/esm/server/components/table.d.ts +3 -3
- package/build/esm/server/components/table.js +10 -10
- package/build/esm/server/components/table.js.map +1 -1
- package/build/esm/server/components/yt-auth.d.ts +0 -2
- package/build/esm/server/components/yt-auth.js +6 -11
- package/build/esm/server/components/yt-auth.js.map +1 -1
- package/build/esm/server/configs/common.js +4 -14
- package/build/esm/server/configs/common.js.map +1 -1
- package/build/esm/server/configs/local.js +0 -5
- package/build/esm/server/configs/local.js.map +1 -1
- package/build/esm/server/controllers/chyt-api.js +1 -1
- package/build/esm/server/controllers/chyt-api.js.map +1 -1
- package/build/esm/server/controllers/cluster-info.js +3 -3
- package/build/esm/server/controllers/cluster-info.js.map +1 -1
- package/build/esm/server/controllers/cluster-params.js +1 -1
- package/build/esm/server/controllers/cluster-params.js.map +1 -1
- package/build/esm/server/controllers/clusters.d.ts +1 -0
- package/build/esm/server/controllers/clusters.js +23 -0
- package/build/esm/server/controllers/clusters.js.map +1 -1
- package/build/esm/server/controllers/home.js +32 -28
- package/build/esm/server/controllers/home.js.map +1 -1
- package/build/esm/server/controllers/login.js +35 -21
- package/build/esm/server/controllers/login.js.map +1 -1
- package/build/esm/server/controllers/odin-proxy-api.js +1 -1
- package/build/esm/server/controllers/odin-proxy-api.js.map +1 -1
- package/build/esm/server/controllers/scheduling-pools.js +3 -3
- package/build/esm/server/controllers/scheduling-pools.js.map +1 -1
- package/build/esm/server/controllers/settings.js +26 -15
- package/build/esm/server/controllers/settings.js.map +1 -1
- package/build/esm/server/controllers/table-column-preset.js +15 -14
- package/build/esm/server/controllers/table-column-preset.js.map +1 -1
- package/build/esm/server/controllers/yt-api.js +1 -1
- package/build/esm/server/controllers/yt-api.js.map +1 -1
- package/build/esm/server/controllers/yt-proxy-api.js +3 -3
- package/build/esm/server/controllers/yt-proxy-api.js.map +1 -1
- package/build/esm/server/index.js +12 -8
- package/build/esm/server/index.js.map +1 -1
- package/build/esm/server/middlewares/authorization.d.ts +1 -1
- package/build/esm/server/middlewares/authorization.js +21 -16
- package/build/esm/server/middlewares/authorization.js.map +1 -1
- package/build/esm/server/middlewares/yt-auth.js +8 -7
- package/build/esm/server/middlewares/yt-auth.js.map +1 -1
- package/build/esm/server/routes.js +29 -26
- package/build/esm/server/routes.js.map +1 -1
- package/build/esm/server/utils/index.d.ts +1 -1
- package/build/esm/server/utils/index.js +12 -6
- package/build/esm/server/utils/index.js.map +1 -1
- package/build/esm/shared/yt-types.d.ts +1 -0
- package/build/esm/ui/common/utils/settings-remote-provider.d.ts +5 -5
- package/build/esm/ui/common/utils/settings-remote-provider.js +42 -16
- package/build/esm/ui/common/utils/settings-remote-provider.js.map +1 -1
- package/build/esm/ui/components/ElementsTable/ElementsTable.d.ts +1 -1
- package/build/esm/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.d.ts +2 -1
- package/build/esm/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js +11 -6
- package/build/esm/ui/components/Login/ChangePasswordFormPage/ChangePasswordFormPage.js.map +1 -1
- package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js +8 -5
- package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
- package/build/esm/ui/config/ui-settings.d.ts +1 -0
- package/build/esm/ui/config/ui-settings.js +2 -1
- package/build/esm/ui/config/ui-settings.js.map +1 -1
- package/build/esm/ui/constants/index.d.ts +7 -0
- package/build/esm/ui/constants/index.js +1 -0
- package/build/esm/ui/constants/index.js.map +1 -1
- package/build/esm/ui/containers/App/App.js +4 -3
- package/build/esm/ui/containers/App/App.js.map +1 -1
- package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js +39 -22
- package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.d.ts +3 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js +4 -2
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/esm/ui/containers/ClustersMenu/ClusterMenuHeader.css +5 -0
- package/build/esm/ui/containers/ClustersMenu/ClusterMenuHeader.css.map +1 -1
- package/build/esm/ui/containers/ClustersMenu/ClusterMenuHeader.scss +6 -0
- package/build/esm/ui/containers/ClustersMenu/ClustersMenuBody.d.ts +3 -1
- package/build/esm/ui/containers/ClustersMenu/ClustersMenuBody.js +12 -4
- package/build/esm/ui/containers/ClustersMenu/ClustersMenuBody.js.map +1 -1
- package/build/esm/ui/containers/ClustersMenu/ClustersMenuHeader.d.ts +4 -4
- package/build/esm/ui/containers/ClustersMenu/ClustersMenuHeader.js.map +1 -1
- package/build/esm/ui/containers/MaintenancePage/HandleRedirect.js.map +1 -1
- package/build/esm/ui/entries/main.js +4 -1
- package/build/esm/ui/entries/main.js.map +1 -1
- package/build/esm/ui/pages/operations/selectors.d.ts +5 -0
- package/build/esm/ui/pages/query-tracker/module/queries_list/selectors.d.ts +20 -0
- package/build/esm/ui/pages/query-tracker/module/query/selectors.d.ts +5 -0
- package/build/esm/ui/pages/query-tracker/module/settings/selector.d.ts +5 -0
- package/build/esm/ui/pages/system/Chunks/Chunks.d.ts +1 -1
- package/build/esm/ui/store/actions/cluster-params.d.ts +1 -0
- package/build/esm/ui/store/actions/cluster-params.js +12 -0
- package/build/esm/ui/store/actions/cluster-params.js.map +1 -1
- package/build/esm/ui/store/actions/clusters-menu.d.ts +1 -0
- package/build/esm/ui/store/actions/clusters-menu.js +22 -3
- package/build/esm/ui/store/actions/clusters-menu.js.map +1 -1
- package/build/esm/ui/store/actions/global/index.d.ts +3 -1
- package/build/esm/ui/store/actions/global/index.js +19 -4
- package/build/esm/ui/store/actions/global/index.js.map +1 -1
- package/build/esm/ui/store/actions/navigation/content/table/columns-preset.d.ts +1 -1
- package/build/esm/ui/store/actions/navigation/content/table/columns-preset.js +6 -4
- package/build/esm/ui/store/actions/navigation/content/table/columns-preset.js.map +1 -1
- package/build/esm/ui/store/actions/navigation/content/table/table.js +2 -1
- package/build/esm/ui/store/actions/navigation/content/table/table.js.map +1 -1
- package/build/esm/ui/store/actions/settings/index.js +25 -19
- package/build/esm/ui/store/actions/settings/index.js.map +1 -1
- package/build/esm/ui/store/reducers/accounts/usage/index.d.ts +1 -1
- package/build/esm/ui/store/reducers/clusters-menu/clusters-menu.d.ts +4 -0
- package/build/esm/ui/store/reducers/clusters-menu/clusters-menu.js +9 -1
- package/build/esm/ui/store/reducers/clusters-menu/clusters-menu.js.map +1 -1
- package/build/esm/ui/store/reducers/index.d.ts +5 -0
- package/build/esm/ui/store/reducers/index.js.map +1 -1
- package/build/esm/ui/store/reducers/settings.js +1 -1
- package/build/esm/ui/store/reducers/settings.js.map +1 -1
- package/build/esm/ui/store/selectors/accounts/account-usage.d.ts +40 -0
- package/build/esm/ui/store/selectors/accounts/accounts-ts.d.ts +40 -0
- package/build/esm/ui/store/selectors/chaos_cell_bundles/index.d.ts +55 -0
- package/build/esm/ui/store/selectors/chyt/index.d.ts +35 -0
- package/build/esm/ui/store/selectors/components/node/memory.d.ts +35 -0
- package/build/esm/ui/store/selectors/components/node-maintenance-modal.d.ts +15 -0
- package/build/esm/ui/store/selectors/components/nodes/node-card.d.ts +5 -0
- package/build/esm/ui/store/selectors/components/nodes/nodes/data.d.ts +10 -0
- package/build/esm/ui/store/selectors/components/nodes/nodes/predicates.d.ts +30 -0
- package/build/esm/ui/store/selectors/components/versions/versions_v2-ts.d.ts +10 -0
- package/build/esm/ui/store/selectors/components/versions/versions_v2.d.ts +25 -0
- package/build/esm/ui/store/selectors/global/index.d.ts +912 -0
- package/build/esm/ui/store/selectors/global/index.js +10 -1
- package/build/esm/ui/store/selectors/global/index.js.map +1 -1
- package/build/esm/ui/store/selectors/global/supported-features.d.ts +30 -0
- package/build/esm/ui/store/selectors/modals/errors.d.ts +5 -0
- package/build/esm/ui/store/selectors/navigation/content/document.d.ts +5 -0
- package/build/esm/ui/store/selectors/navigation/content/replicated-table.d.ts +15 -0
- package/build/esm/ui/store/selectors/navigation/content/table-mount-config.d.ts +5 -0
- package/build/esm/ui/store/selectors/navigation/content/table-ts.d.ts +20 -0
- package/build/esm/ui/store/selectors/navigation/content/table.d.ts +35 -0
- package/build/esm/ui/store/selectors/navigation/modals/attributes-editor.d.ts +15 -0
- package/build/esm/ui/store/selectors/navigation/modals/remote-copy-modal.d.ts +5 -0
- package/build/esm/ui/store/selectors/navigation/navigation.d.ts +10 -0
- package/build/esm/ui/store/selectors/navigation/tabs/access-log.d.ts +5 -0
- package/build/esm/ui/store/selectors/navigation/tabs/annotation.d.ts +5 -0
- package/build/esm/ui/store/selectors/navigation/tabs/consumer.d.ts +5 -0
- package/build/esm/ui/store/selectors/navigation/tabs/locks.d.ts +10 -0
- package/build/esm/ui/store/selectors/navigation/tabs/queue.d.ts +10 -0
- package/build/esm/ui/store/selectors/navigation/tabs/tablet-errors.d.ts +5 -0
- package/build/esm/ui/store/selectors/operations/index.d.ts +60 -0
- package/build/esm/ui/store/selectors/operations/jobs-monitor.d.ts +20 -0
- package/build/esm/ui/store/selectors/operations/operation.d.ts +60 -0
- package/build/esm/ui/store/selectors/operations/operations-list.d.ts +15 -0
- package/build/esm/ui/store/selectors/operations/statistics-v2.d.ts +40 -0
- package/build/esm/ui/store/selectors/scheduling/attributes-to-filter.d.ts +5 -0
- package/build/esm/ui/store/selectors/scheduling/create-pool-dialog.d.ts +5 -0
- package/build/esm/ui/store/selectors/scheduling/expanded-pools.d.ts +5 -0
- package/build/esm/ui/store/selectors/scheduling/index.d.ts +5 -0
- package/build/esm/ui/store/selectors/scheduling/scheduling-pools.d.ts +15 -0
- package/build/esm/ui/store/selectors/scheduling/scheduling-ts.d.ts +30 -0
- package/build/esm/ui/store/selectors/scheduling/scheduling.d.ts +100 -0
- package/build/esm/ui/store/selectors/tablet_cell_bundles/index.d.ts +75 -0
- package/build/esm/ui/store/selectors/thor/support.d.ts +25 -0
- package/dist/public/build/assets-manifest.json +12 -12
- package/dist/public/build/css/main.8a4cd357.css +2 -0
- package/dist/public/build/css/main.8a4cd357.css.map +1 -0
- package/dist/public/build/js/{861.9703a31c.chunk.js → 861.a0939319.chunk.js} +2 -2
- package/dist/public/build/js/861.a0939319.chunk.js.map +1 -0
- package/dist/public/build/js/main.c39cff0d.js +3 -0
- package/dist/public/build/js/{main.5b132a95.js.map → main.c39cff0d.js.map} +1 -1
- package/dist/public/build/js/runtime.0ac0f2e8.js +2 -0
- package/dist/public/build/js/{runtime.a87a1f88.js.map → runtime.0ac0f2e8.js.map} +1 -1
- package/dist/public/build/manifest.json +8 -8
- package/dist/server/components/layout-config.js +3 -3
- package/dist/server/components/requestsSetup.js +13 -5
- package/dist/server/components/settings.d.ts +10 -5
- package/dist/server/components/settings.js +24 -23
- package/dist/server/components/table.d.ts +3 -3
- package/dist/server/components/table.js +4 -4
- package/dist/server/components/yt-auth.d.ts +0 -2
- package/dist/server/components/yt-auth.js +5 -14
- package/dist/server/configs/common.js +5 -13
- package/dist/server/configs/local.js +0 -5
- package/dist/server/controllers/chyt-api.js +1 -1
- package/dist/server/controllers/cluster-info.js +2 -2
- package/dist/server/controllers/cluster-params.js +1 -1
- package/dist/server/controllers/clusters.d.ts +1 -0
- package/dist/server/controllers/clusters.js +24 -1
- package/dist/server/controllers/home.js +10 -6
- package/dist/server/controllers/login.js +18 -5
- package/dist/server/controllers/odin-proxy-api.js +1 -1
- package/dist/server/controllers/scheduling-pools.js +2 -2
- package/dist/server/controllers/settings.js +10 -10
- package/dist/server/controllers/table-column-preset.js +4 -3
- package/dist/server/controllers/yt-api.js +1 -1
- package/dist/server/controllers/yt-proxy-api.js +2 -2
- package/dist/server/index.js +11 -8
- package/dist/server/middlewares/authorization.d.ts +1 -1
- package/dist/server/middlewares/authorization.js +3 -2
- package/dist/server/middlewares/yt-auth.js +3 -2
- package/dist/server/routes.js +26 -25
- package/dist/server/utils/index.d.ts +1 -1
- package/dist/server/utils/index.js +12 -4
- package/package.json +2 -2
- package/dist/public/build/css/main.4aa70d7b.css +0 -2
- package/dist/public/build/css/main.4aa70d7b.css.map +0 -1
- package/dist/public/build/js/861.9703a31c.chunk.js.map +0 -1
- package/dist/public/build/js/main.5b132a95.js +0 -3
- package/dist/public/build/js/runtime.a87a1f88.js +0 -2
- /package/dist/public/build/js/{main.5b132a95.js.LICENSE.txt → main.c39cff0d.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_typeIs","_interopRequireDefault","require","_expresskit","obj","__esModule","default","path","ytAuthConfig","
|
1
|
+
{"version":3,"names":["_typeIs","_interopRequireDefault","require","_expresskit","obj","__esModule","default","path","ytAuthConfig","allowPasswordAuth","Boolean","process","env","ALLOW_PASSWORD_AUTH","ytAuthAllowInsecure","YT_AUTH_ALLOW_INSECURE","appAuthPolicy","AuthPolicy","required","config","_objectSpread","appName","appSocket","AUTH_POLICY","ytInterfaceSecret","resolve","__dirname","clustersConfigPath","expressBodyParserJSONConfig","strict","type","req","_req$url","url","startsWith","typeis","expressBodyParserURLEncodedConfig","_req$url2","expressBodyParserRawConfig","limit","_req$url3","uiSettings","reHashFromNodeVersion","directDownload","docsBaseUrl","YT_DOCS_BASE_URL","_default","exports"],"sources":["common.ts"],"sourcesContent":["import typeis from 'type-is';\n\nimport {AuthPolicy} from '@gravity-ui/expresskit';\nimport {AppConfig} from '@gravity-ui/nodekit';\n\nconst path = require('path');\n\nconst ytAuthConfig: Partial<AppConfig> = {\n allowPasswordAuth: Boolean(process.env.ALLOW_PASSWORD_AUTH),\n ytAuthAllowInsecure: Boolean(process.env.YT_AUTH_ALLOW_INSECURE),\n appAuthPolicy: AuthPolicy.required,\n};\n\nconst config: Partial<AppConfig> = {\n appName: 'YTSaurus',\n appSocket: 'dist/run/server.sock',\n appAuthPolicy: (process.env.AUTH_POLICY as AuthPolicy) || 'redirect',\n\n ...ytAuthConfig,\n // TODO: fix me\n // csp: 'disabled',\n\n ytInterfaceSecret: path.resolve(__dirname, '../../../secrets/yt-interface-secret.json'),\n clustersConfigPath: path.resolve(__dirname, '../../../clusters-config.json'),\n expressBodyParserJSONConfig: {\n strict: false,\n type(req: any) {\n // Disable JSON parser on yt-api to allow requests piping\n if (req.url?.startsWith('/api/yt/')) return false;\n\n // Simulate default logic given that 'type' option is 'application/json'\n return Boolean(typeis(req, 'application/json'));\n },\n },\n expressBodyParserURLEncodedConfig: {\n type(req) {\n // Disable urlencoded parser on yt-api\n if (req.url?.startsWith('/api/yt/')) return false;\n\n // Simulate default logic given that 'type' option is 'application/x-www-form-urlencoded'\n return Boolean(typeis(req, 'application/x-www-form-urlencoded'));\n },\n },\n expressBodyParserRawConfig: {\n limit: '21mb',\n type(req) {\n // Enable raw parser for all content-types on yt-api\n if (req.url?.startsWith('/api/yt/')) return true;\n\n // Simulate default logic given that 'type' option is 'multiform-data'\n return Boolean(typeis(req, 'multipart/form-data'));\n },\n },\n\n uiSettings: {\n reHashFromNodeVersion: '[^~]+~(?<hash>[^+]+)',\n directDownload: true,\n docsBaseUrl: process.env.YT_DOCS_BASE_URL || 'https://ytsaurus.tech/docs/en',\n },\n};\n\nexport default config;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAAiD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGjD,IAAMG,IAAI,GAAGL,OAAO,CAAC,MAAM,CAAC;AAE5B,IAAMM,YAAgC,GAAG;EACrCC,iBAAiB,EAAEC,OAAO,CAACC,OAAO,CAACC,GAAG,CAACC,mBAAmB,CAAC;EAC3DC,mBAAmB,EAAEJ,OAAO,CAACC,OAAO,CAACC,GAAG,CAACG,sBAAsB,CAAC;EAChEC,aAAa,EAAEC,sBAAU,CAACC;AAC9B,CAAC;AAED,IAAMC,MAA0B,OAAAC,sBAAA,MAAAA,sBAAA;EAC5BC,OAAO,EAAE,UAAU;EACnBC,SAAS,EAAE,sBAAsB;EACjCN,aAAa,EAAGL,OAAO,CAACC,GAAG,CAACW,WAAW,IAAmB;AAAU,GAEjEf,YAAY;EACf;EACA;;EAEAgB,iBAAiB,EAAEjB,IAAI,CAACkB,OAAO,CAACC,SAAS,EAAE,2CAA2C,CAAC;EACvFC,kBAAkB,EAAEpB,IAAI,CAACkB,OAAO,CAACC,SAAS,EAAE,+BAA+B,CAAC;EAC5EE,2BAA2B,EAAE;IACzBC,MAAM,EAAE,KAAK;IACbC,IAAI,WAAAA,KAACC,GAAQ,EAAE;MAAA,IAAAC,QAAA;MACX;MACA,KAAAA,QAAA,GAAID,GAAG,CAACE,GAAG,cAAAD,QAAA,eAAPA,QAAA,CAASE,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;;MAEjD;MACA,OAAOxB,OAAO,CAAC,IAAAyB,eAAM,EAACJ,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACnD;EACJ,CAAC;EACDK,iCAAiC,EAAE;IAC/BN,IAAI,WAAAA,KAACC,GAAG,EAAE;MAAA,IAAAM,SAAA;MACN;MACA,KAAAA,SAAA,GAAIN,GAAG,CAACE,GAAG,cAAAI,SAAA,eAAPA,SAAA,CAASH,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;;MAEjD;MACA,OAAOxB,OAAO,CAAC,IAAAyB,eAAM,EAACJ,GAAG,EAAE,mCAAmC,CAAC,CAAC;IACpE;EACJ,CAAC;EACDO,0BAA0B,EAAE;IACxBC,KAAK,EAAE,MAAM;IACbT,IAAI,WAAAA,KAACC,GAAG,EAAE;MAAA,IAAAS,SAAA;MACN;MACA,KAAAA,SAAA,GAAIT,GAAG,CAACE,GAAG,cAAAO,SAAA,eAAPA,SAAA,CAASN,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,IAAI;;MAEhD;MACA,OAAOxB,OAAO,CAAC,IAAAyB,eAAM,EAACJ,GAAG,EAAE,qBAAqB,CAAC,CAAC;IACtD;EACJ,CAAC;EAEDU,UAAU,EAAE;IACRC,qBAAqB,EAAE,sBAAsB;IAC7CC,cAAc,EAAE,IAAI;IACpBC,WAAW,EAAEjC,OAAO,CAACC,GAAG,CAACiC,gBAAgB,IAAI;EACjD;AAAC,EACJ;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAzC,OAAA,GAEca,MAAM"}
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const type_is_1 = __importDefault(require("type-is"));
|
7
7
|
const expresskit_1 = require("@gravity-ui/expresskit");
|
8
|
-
const constants_1 = require("../../shared/constants");
|
9
8
|
const localModeConfig = {
|
10
9
|
appAuthPolicy: expresskit_1.AuthPolicy.disabled,
|
11
10
|
ytInterfaceSecret: undefined,
|
@@ -30,9 +29,5 @@ const localModeConfig = {
|
|
30
29
|
directDownload: false,
|
31
30
|
reportBugUrl: 'https://github.com/ytsaurus/ytsaurus-ui/issues/new',
|
32
31
|
},
|
33
|
-
userSettingsConfig: {
|
34
|
-
cluster: constants_1.YT_LOCAL_CLUSTER_ID,
|
35
|
-
mapNodePath: '//tmp',
|
36
|
-
},
|
37
32
|
};
|
38
33
|
exports.default = localModeConfig;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_typeIs","_interopRequireDefault","require","_expresskit","
|
1
|
+
{"version":3,"names":["_typeIs","_interopRequireDefault","require","_expresskit","obj","__esModule","default","localModeConfig","appAuthPolicy","AuthPolicy","disabled","ytInterfaceSecret","undefined","expressBodyParserJSONConfig","limit","type","req","_req$url","_req$url2","url","startsWith","Boolean","typeis","uiSettings","newTableReplicasCount","uploadTableMaxSize","uploadTableUseLocalmode","queryTrackerStage","directDownload","reportBugUrl","_default","exports"],"sources":["local.ts"],"sourcesContent":["import typeis from 'type-is';\n\nimport {AuthPolicy} from '@gravity-ui/expresskit';\nimport {AppConfig} from '@gravity-ui/nodekit';\n\nconst localModeConfig: Partial<AppConfig> = {\n appAuthPolicy: AuthPolicy.disabled,\n ytInterfaceSecret: undefined,\n\n expressBodyParserJSONConfig: {\n limit: '51mb',\n type(req) {\n // Enable raw parser for all content-types on yt-api for piping requests\n if (req.url?.startsWith('/api/yt/')) return false;\n if (req.url?.startsWith('/localmode/api/yt/')) return false;\n\n // Simulate default logic given that 'type' option is 'application/json'\n return Boolean(typeis(req, 'application/json'));\n },\n },\n\n uiSettings: {\n newTableReplicasCount: 1,\n uploadTableMaxSize: 50 * 1024 * 1024,\n uploadTableUseLocalmode: true,\n queryTrackerStage: 'testing',\n\n directDownload: false,\n\n reportBugUrl: 'https://github.com/ytsaurus/ytsaurus-ui/issues/new',\n },\n};\n\nexport default localModeConfig;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAAiD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGjD,IAAMG,eAAmC,GAAG;EACxCC,aAAa,EAAEC,sBAAU,CAACC,QAAQ;EAClCC,iBAAiB,EAAEC,SAAS;EAE5BC,2BAA2B,EAAE;IACzBC,KAAK,EAAE,MAAM;IACbC,IAAI,WAAAA,KAACC,GAAG,EAAE;MAAA,IAAAC,QAAA,EAAAC,SAAA;MACN;MACA,KAAAD,QAAA,GAAID,GAAG,CAACG,GAAG,cAAAF,QAAA,eAAPA,QAAA,CAASG,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;MACjD,KAAAF,SAAA,GAAIF,GAAG,CAACG,GAAG,cAAAD,SAAA,eAAPA,SAAA,CAASE,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,KAAK;;MAE3D;MACA,OAAOC,OAAO,CAAC,IAAAC,eAAM,EAACN,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACnD;EACJ,CAAC;EAEDO,UAAU,EAAE;IACRC,qBAAqB,EAAE,CAAC;IACxBC,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACpCC,uBAAuB,EAAE,IAAI;IAC7BC,iBAAiB,EAAE,SAAS;IAE5BC,cAAc,EAAE,KAAK;IAErBC,YAAY,EAAE;EAClB;AACJ,CAAC;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEcC,eAAe"}
|
@@ -22,7 +22,7 @@ async function chytProxyApi(req, res) {
|
|
22
22
|
}
|
23
23
|
exports.chytProxyApi = chytProxyApi;
|
24
24
|
async function chytProxyApiImpl(req, res) {
|
25
|
-
const { action, cluster } = req.params;
|
25
|
+
const { action, ytAuthCluster: cluster } = req.params;
|
26
26
|
const ALLOWED_ACTIONS = new Set([
|
27
27
|
'list',
|
28
28
|
'create',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_axios","_interopRequireDefault","require","_utils","_requestsSetup","_clusterParams","obj","__esModule","default","chytProxyApi","_x","_x2","_chytProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","chytProxyApiImpl","t0","sendAndLogError","ctx","method","query","page","headers","referer","stop","_x3","_x4","_chytProxyApiImpl","_callee3","_req$params","action","cluster","ALLOWED_ACTIONS","isDeveloper","_yield$getPreloadedCl","baseUrl","_getUserYTApiSetup","authHeaders","_callee3$","_context3","params","Set","has","abrupt","Error","concat","getPreloadedClusterUiConfig","sent","chyt_controller_base_url","getUserYTApiSetup","_objectSpread","getMetadata","accept","axios","request","url","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","pipeAxiosResponse","UNEXPECTED_PIPE_AXIOS_RESPONSE","_x5"],"sources":["chyt-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport {getUserYTApiSetup} from '../components/requestsSetup';\nimport {getPreloadedClusterUiConfig} from '../components/cluster-params';\n\nexport async function chytProxyApi(req: Request, res: Response) {\n try {\n await chytProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function chytProxyApiImpl(req: Request, res: Response) {\n const {action, cluster} = req.params;\n const ALLOWED_ACTIONS = new Set([\n 'list',\n 'create',\n 'remove',\n 'start',\n 'stop',\n 'get_brief_info',\n 'describe_options',\n 'edit_options',\n 'get_speclet',\n ]);\n\n if (!ALLOWED_ACTIONS.has(action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`CHYT action - '${action}', is not supported`),\n );\n }\n\n const isDeveloper = req.query.isDeveloper === 'true';\n\n const {chyt_controller_base_url: baseUrl} = await getPreloadedClusterUiConfig(\n cluster,\n req.ctx,\n isDeveloper,\n );\n\n if (!baseUrl) {\n return sendAndLogError(\n req.ctx,\n res,\n 500,\n new Error('//sys/@ui_config/chyt_controller_base_url is not defined'),\n );\n }\n const {ctx} = req;\n\n const {authHeaders} = getUserYTApiSetup(cluster, req);\n const headers = {\n ...ctx.getMetadata(),\n 'accept-encoding': 'gzip',\n ...authHeaders,\n accept: 'application/json',\n };\n\n return axios\n .request({\n url: `${baseUrl}/${cluster}/${action}`,\n method: 'POST',\n headers,\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAAwE,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExE,SAAsBG,YAAYA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAUjC,SAAAF,cAAA;EAAAA,aAAA,OAAAG,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAVM,SAAAC,QAA4BC,GAAY,EAAEC,GAAa;IAAA,OAAAJ,oBAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAEhDC,gBAAgB,CAACP,GAAG,EAAEC,GAAG,CAAC;QAAA;UAAAG,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAI,EAAA,GAAAJ,QAAA;UAAAA,QAAA,CAAAE,IAAA;UAAA,OAE1B,IAAAG,sBAAe,EAACT,GAAG,CAACU,GAAG,EAAET,GAAG,EAAE,GAAG,EAAAG,QAAA,CAAAI,EAAA,EAAK;YACxCG,MAAM,EAAE,QAAQ;YAChBC,KAAK,EAAEZ,GAAG,CAACY,KAAK;YAChBC,IAAI,EAAEb,GAAG,CAACc,OAAO,CAACC;UACtB,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAX,QAAA,CAAAY,IAAA;MAAA;IAAA,GAAAjB,OAAA;EAAA,CAET;EAAA,OAAAN,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEcY,gBAAgBA,CAAAU,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAzB,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAwB,kBAAA;EAAAA,iBAAA,OAAAvB,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAA/B,SAAAsB,SAAgCpB,GAAY,EAAEC,GAAa;IAAA,IAAAoB,WAAA,EAAAC,MAAA,EAAAC,OAAA,EAAAC,eAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,OAAA,EAAAjB,GAAA,EAAAkB,kBAAA,EAAAC,WAAA,EAAAf,OAAA;IAAA,OAAAjB,oBAAA,CAAAK,IAAA,UAAA4B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA1B,IAAA,GAAA0B,SAAA,CAAAzB,IAAA;QAAA;UAAAe,WAAA,
|
1
|
+
{"version":3,"names":["_axios","_interopRequireDefault","require","_utils","_requestsSetup","_clusterParams","obj","__esModule","default","chytProxyApi","_x","_x2","_chytProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","chytProxyApiImpl","t0","sendAndLogError","ctx","method","query","page","headers","referer","stop","_x3","_x4","_chytProxyApiImpl","_callee3","_req$params","action","cluster","ALLOWED_ACTIONS","isDeveloper","_yield$getPreloadedCl","baseUrl","_getUserYTApiSetup","authHeaders","_callee3$","_context3","params","ytAuthCluster","Set","has","abrupt","Error","concat","getPreloadedClusterUiConfig","sent","chyt_controller_base_url","getUserYTApiSetup","_objectSpread","getMetadata","accept","axios","request","url","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","pipeAxiosResponse","UNEXPECTED_PIPE_AXIOS_RESPONSE","_x5"],"sources":["chyt-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport {getUserYTApiSetup} from '../components/requestsSetup';\nimport {getPreloadedClusterUiConfig} from '../components/cluster-params';\n\nexport async function chytProxyApi(req: Request, res: Response) {\n try {\n await chytProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function chytProxyApiImpl(req: Request, res: Response) {\n const {action, ytAuthCluster: cluster} = req.params;\n const ALLOWED_ACTIONS = new Set([\n 'list',\n 'create',\n 'remove',\n 'start',\n 'stop',\n 'get_brief_info',\n 'describe_options',\n 'edit_options',\n 'get_speclet',\n ]);\n\n if (!ALLOWED_ACTIONS.has(action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`CHYT action - '${action}', is not supported`),\n );\n }\n\n const isDeveloper = req.query.isDeveloper === 'true';\n\n const {chyt_controller_base_url: baseUrl} = await getPreloadedClusterUiConfig(\n cluster,\n req.ctx,\n isDeveloper,\n );\n\n if (!baseUrl) {\n return sendAndLogError(\n req.ctx,\n res,\n 500,\n new Error('//sys/@ui_config/chyt_controller_base_url is not defined'),\n );\n }\n const {ctx} = req;\n\n const {authHeaders} = getUserYTApiSetup(cluster, req);\n const headers = {\n ...ctx.getMetadata(),\n 'accept-encoding': 'gzip',\n ...authHeaders,\n accept: 'application/json',\n };\n\n return axios\n .request({\n url: `${baseUrl}/${cluster}/${action}`,\n method: 'POST',\n headers,\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":"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"}
|
@@ -6,8 +6,8 @@ const requestsSetup_1 = require("../components/requestsSetup");
|
|
6
6
|
const utils_1 = require("../utils");
|
7
7
|
async function handleClusterInfoImpl(req, res) {
|
8
8
|
try {
|
9
|
-
const { params: {
|
10
|
-
const cfg = (0, requestsSetup_1.getUserYTApiSetup)(
|
9
|
+
const { params: { ytAuthCluster }, } = req;
|
10
|
+
const cfg = (0, requestsSetup_1.getUserYTApiSetup)(ytAuthCluster, req);
|
11
11
|
const results = await (0, cluster_queries_1.getClusterInfo)(req, cfg);
|
12
12
|
return res.send(results);
|
13
13
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_clusterQueries","require","_requestsSetup","_utils","_interopRequireDefault","obj","__esModule","default","handleClusterInfoImpl","_x","_x2","_handleClusterInfoImpl","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","
|
1
|
+
{"version":3,"names":["_clusterQueries","require","_requestsSetup","_utils","_interopRequireDefault","obj","__esModule","default","handleClusterInfoImpl","_x","_x2","_handleClusterInfoImpl","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","ytAuthCluster","cfg","results","wrap","_callee$","_context","prev","next","params","getUserYTApiSetup","getClusterInfo","sent","abrupt","send","t0","sendAndLogError","ctx","stop","handleClusterInfo","_x3","_x4","_handleClusterInfo","_callee2","_callee2$","_context2"],"sources":["cluster-info.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {getClusterInfo} from '../components/cluster-queries';\nimport {getUserYTApiSetup} from '../components/requestsSetup';\nimport {sendAndLogError} from '../utils';\n\nasync function handleClusterInfoImpl(req: Request, res: Response) {\n try {\n const {\n params: {ytAuthCluster},\n } = req;\n\n const cfg = getUserYTApiSetup(ytAuthCluster, req);\n\n const results = await getClusterInfo(req, cfg);\n return res.send(results);\n } catch (err: any) {\n return sendAndLogError(req.ctx, res, 500, err);\n }\n}\n\nexport async function handleClusterInfo(req: Request, res: Response) {\n await handleClusterInfoImpl(req, res);\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAAwC,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAC,SAE1BG,qBAAqBA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,sBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,uBAAA;EAAAA,sBAAA,OAAAG,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAApC,SAAAC,QAAqCC,GAAY,EAAEC,GAAa;IAAA,IAAAC,aAAA,EAAAC,GAAA,EAAAC,OAAA;IAAA,OAAAP,oBAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAG3CN,aAAa,GACtBF,GAAG,CADHU,MAAM,CAAGR,aAAa;UAGpBC,GAAG,GAAG,IAAAQ,gCAAiB,EAACT,aAAa,EAAEF,GAAG,CAAC;UAAAO,QAAA,CAAAE,IAAA;UAAA,OAE3B,IAAAG,8BAAc,EAACZ,GAAG,EAAEG,GAAG,CAAC;QAAA;UAAxCC,OAAO,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WACNb,GAAG,CAACc,IAAI,CAACX,OAAO,CAAC;QAAA;UAAAG,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAS,EAAA,GAAAT,QAAA;UAAA,OAAAA,QAAA,CAAAO,MAAA,WAEjB,IAAAG,sBAAe,EAACjB,GAAG,CAACkB,GAAG,EAAEjB,GAAG,EAAE,GAAG,EAAAM,QAAA,CAAAS,EAAK,CAAC;QAAA;QAAA;UAAA,OAAAT,QAAA,CAAAY,IAAA;MAAA;IAAA,GAAApB,OAAA;EAAA,CAErD;EAAA,OAAAN,sBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,SAAsByB,iBAAiBA,CAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,kBAAA,CAAA7B,KAAA,OAAAC,SAAA;AAAA;AAEtC,SAAA4B,mBAAA;EAAAA,kBAAA,OAAA3B,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAFM,SAAA0B,SAAiCxB,GAAY,EAAEC,GAAa;IAAA,OAAAJ,oBAAA,CAAAQ,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAAiB,SAAA,CAAAjB,IAAA;UAAA,OACzDnB,qBAAqB,CAACU,GAAG,EAAEC,GAAG,CAAC;QAAA;QAAA;UAAA,OAAAyB,SAAA,CAAAP,IAAA;MAAA;IAAA,GAAAK,QAAA;EAAA,CACxC;EAAA,OAAAD,kBAAA,CAAA7B,KAAA,OAAAC,SAAA;AAAA"}
|
@@ -5,7 +5,7 @@ const cluster_params_1 = require("../components/cluster-params");
|
|
5
5
|
const utils_1 = require("../utils");
|
6
6
|
async function clusterParams(req, res) {
|
7
7
|
try {
|
8
|
-
const response = await (0, cluster_params_1.getPreloadedClusterParams)(req.params.
|
8
|
+
const response = await (0, cluster_params_1.getPreloadedClusterParams)(req.params.ytAuthCluster, req.ctx);
|
9
9
|
res.status(200).send(response);
|
10
10
|
}
|
11
11
|
catch (error) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_clusterParams2","require","_utils","_interopRequireDefault","obj","__esModule","default","clusterParams","_x","_x2","_clusterParams","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","response","wrap","_callee$","_context","prev","next","getPreloadedClusterParams","params","
|
1
|
+
{"version":3,"names":["_clusterParams2","require","_utils","_interopRequireDefault","obj","__esModule","default","clusterParams","_x","_x2","_clusterParams","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","response","wrap","_callee$","_context","prev","next","getPreloadedClusterParams","params","ytAuthCluster","ctx","sent","status","send","t0","sendAndLogError","stop"],"sources":["cluster-params.ts"],"sourcesContent":["import type {AxiosError} from 'axios';\nimport type {Request, Response} from 'express';\n\nimport {getPreloadedClusterParams} from '../components/cluster-params';\nimport {sendAndLogError} from '../utils';\n\nexport async function clusterParams(req: Request, res: Response) {\n try {\n const response = await getPreloadedClusterParams(req.params.ytAuthCluster, req.ctx);\n res.status(200).send(response);\n } catch (error) {\n sendAndLogError(req.ctx, res, 500, error as Error | AxiosError);\n }\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAAwC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExC,SAAsBG,aAAaA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,cAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAOlC,SAAAF,eAAA;EAAAA,cAAA,OAAAG,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAPM,SAAAC,QAA6BC,GAAY,EAAEC,GAAa;IAAA,IAAAC,QAAA;IAAA,OAAAL,oBAAA,CAAAM,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAEhC,IAAAC,yCAAyB,EAACR,GAAG,CAACS,MAAM,CAACC,aAAa,EAAEV,GAAG,CAACW,GAAG,CAAC;QAAA;UAA7ET,QAAQ,GAAAG,QAAA,CAAAO,IAAA;UACdX,GAAG,CAACY,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAACZ,QAAQ,CAAC;UAACG,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAU,EAAA,GAAAV,QAAA;UAE/B,IAAAW,sBAAe,EAAChB,GAAG,CAACW,GAAG,EAAEV,GAAG,EAAE,GAAG,EAAAI,QAAA,CAAAU,EAA6B,CAAC;QAAC;QAAA;UAAA,OAAAV,QAAA,CAAAY,IAAA;MAAA;IAAA,GAAAlB,OAAA;EAAA,CAEvE;EAAA,OAAAN,cAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.clusterVersions = void 0;
|
3
|
+
exports.clusterAuthStatus = exports.clusterVersions = void 0;
|
4
|
+
const constants_1 = require("../../shared/constants");
|
4
5
|
const utils_1 = require("../utils");
|
5
6
|
const cluster_queries_1 = require("../components/cluster-queries");
|
6
7
|
const utils_2 = require("../components/utils");
|
@@ -11,3 +12,25 @@ function clusterVersions(req, res) {
|
|
11
12
|
.catch((error) => (0, utils_1.sendError)(res, error));
|
12
13
|
}
|
13
14
|
exports.clusterVersions = clusterVersions;
|
15
|
+
function clusterAuthStatus(req, res) {
|
16
|
+
const allowPasswordAuth = req.ctx.config.allowPasswordAuth;
|
17
|
+
let data = {};
|
18
|
+
if (allowPasswordAuth) {
|
19
|
+
const clusters = (0, utils_2.getClustersFromConfig)();
|
20
|
+
data = Object.keys(clusters).reduce((ret, cluster) => {
|
21
|
+
ret[cluster] = {
|
22
|
+
authorized: Boolean(req.cookies[`${cluster}:${constants_1.YT_CYPRESS_COOKIE_NAME}`]),
|
23
|
+
};
|
24
|
+
return ret;
|
25
|
+
}, {});
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
const clusters = (0, utils_2.getClustersFromConfig)();
|
29
|
+
data = Object.keys(clusters).reduce((ret, clusterName) => {
|
30
|
+
ret[clusterName] = { authorized: true };
|
31
|
+
return ret;
|
32
|
+
}, {});
|
33
|
+
}
|
34
|
+
(0, utils_1.sendResponse)(res, data);
|
35
|
+
}
|
36
|
+
exports.clusterAuthStatus = clusterAuthStatus;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["_constants","require","_utils","_clusterQueries","_utils2","clusterVersions","req","res","clusters","getClustersFromConfig","getVersions","then","data","sendResponse","error","sendError","clusterAuthStatus","allowPasswordAuth","ctx","config","Object","keys","reduce","ret","cluster","authorized","Boolean","cookies","concat","YT_CYPRESS_COOKIE_NAME","_clusters","clusterName"],"sources":["clusters.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\nimport {sendError, sendResponse} from '../utils';\nimport {getVersions} from '../components/cluster-queries';\nimport {getClustersFromConfig} from '../components/utils';\n\nexport function clusterVersions(req: Request, res: Response) {\n const clusters = getClustersFromConfig();\n\n getVersions(req, clusters)\n .then((data: {}) => sendResponse(res, data))\n .catch((error: any) => sendError(res, error));\n}\n\ntype ClusterAuthStatus = Record<string, {authorized: boolean}>;\n\nexport function clusterAuthStatus(req: Request, res: Response) {\n const allowPasswordAuth = req.ctx.config.allowPasswordAuth;\n\n let data = {};\n\n if (allowPasswordAuth) {\n const clusters = getClustersFromConfig();\n\n data = Object.keys(clusters).reduce((ret, cluster) => {\n ret[cluster] = {\n authorized: Boolean(req.cookies[`${cluster}:${YT_CYPRESS_COOKIE_NAME}`]),\n };\n\n return ret;\n }, {} as ClusterAuthStatus);\n } else {\n const clusters = getClustersFromConfig();\n\n data = Object.keys(clusters).reduce((ret, clusterName) => {\n ret[clusterName] = {authorized: true};\n\n return ret;\n }, {} as ClusterAuthStatus);\n }\n\n sendResponse(res, data);\n}\n"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAEO,SAASI,eAAeA,CAACC,GAAY,EAAEC,GAAa,EAAE;EACzD,IAAMC,QAAQ,GAAG,IAAAC,6BAAqB,EAAC,CAAC;EAExC,IAAAC,2BAAW,EAACJ,GAAG,EAAEE,QAAQ,CAAC,CACrBG,IAAI,CAAC,UAACC,IAAQ;IAAA,OAAK,IAAAC,mBAAY,EAACN,GAAG,EAAEK,IAAI,CAAC;EAAA,EAAC,SACtC,CAAC,UAACE,KAAU;IAAA,OAAK,IAAAC,gBAAS,EAACR,GAAG,EAAEO,KAAK,CAAC;EAAA,EAAC;AACrD;AAIO,SAASE,iBAAiBA,CAACV,GAAY,EAAEC,GAAa,EAAE;EAC3D,IAAMU,iBAAiB,GAAGX,GAAG,CAACY,GAAG,CAACC,MAAM,CAACF,iBAAiB;EAE1D,IAAIL,IAAI,GAAG,CAAC,CAAC;EAEb,IAAIK,iBAAiB,EAAE;IACnB,IAAMT,QAAQ,GAAG,IAAAC,6BAAqB,EAAC,CAAC;IAExCG,IAAI,GAAGQ,MAAM,CAACC,IAAI,CAACb,QAAQ,CAAC,CAACc,MAAM,CAAC,UAACC,GAAG,EAAEC,OAAO,EAAK;MAClDD,GAAG,CAACC,OAAO,CAAC,GAAG;QACXC,UAAU,EAAEC,OAAO,CAACpB,GAAG,CAACqB,OAAO,IAAAC,MAAA,CAAIJ,OAAO,OAAAI,MAAA,CAAIC,iCAAsB,EAAG;MAC3E,CAAC;MAED,OAAON,GAAG;IACd,CAAC,EAAE,CAAC,CAAsB,CAAC;EAC/B,CAAC,MAAM;IACH,IAAMO,SAAQ,GAAG,IAAArB,6BAAqB,EAAC,CAAC;IAExCG,IAAI,GAAGQ,MAAM,CAACC,IAAI,CAACS,SAAQ,CAAC,CAACR,MAAM,CAAC,UAACC,GAAG,EAAEQ,WAAW,EAAK;MACtDR,GAAG,CAACQ,WAAW,CAAC,GAAG;QAACN,UAAU,EAAE;MAAI,CAAC;MAErC,OAAOF,GAAG;IACd,CAAC,EAAE,CAAC,CAAsB,CAAC;EAC/B;EAEA,IAAAV,mBAAY,EAACN,GAAG,EAAEK,IAAI,CAAC;AAC3B"}
|
@@ -35,6 +35,7 @@ const ServerFactory_1 = __importStar(require("../ServerFactory"));
|
|
35
35
|
const utils_2 = require("../utils");
|
36
36
|
const default_settings_1 = require("../utils/default-settings");
|
37
37
|
const constants_1 = require("../../shared/constants");
|
38
|
+
const settings_2 = require("../../server/components/settings");
|
38
39
|
function isRootPage(page) {
|
39
40
|
var _a;
|
40
41
|
const rootPages = [
|
@@ -44,7 +45,7 @@ function isRootPage(page) {
|
|
44
45
|
return -1 !== rootPages.indexOf(page);
|
45
46
|
}
|
46
47
|
function homeRedirect(req, res) {
|
47
|
-
const cluster = req.params.
|
48
|
+
const cluster = req.params.ytAuthCluster;
|
48
49
|
const { referrer } = req.query;
|
49
50
|
const url = referrer ? referrer : `/${cluster}`;
|
50
51
|
res.redirect(url);
|
@@ -52,8 +53,8 @@ function homeRedirect(req, res) {
|
|
52
53
|
exports.homeRedirect = homeRedirect;
|
53
54
|
async function homeIndex(req, res) {
|
54
55
|
var _a, _b;
|
55
|
-
const isRoot = isRootPage(req.params.
|
56
|
-
const cluster = isRoot ? undefined : req.params.
|
56
|
+
const isRoot = isRootPage(req.params.ytAuthCluster);
|
57
|
+
const cluster = isRoot ? undefined : req.params.ytAuthCluster;
|
57
58
|
try {
|
58
59
|
const url = await ServerFactory_1.default.getHomeRedirectedUrl(cluster, req);
|
59
60
|
if (url) {
|
@@ -87,10 +88,13 @@ async function homeIndex(req, res) {
|
|
87
88
|
errorMessage: undefined,
|
88
89
|
},
|
89
90
|
};
|
90
|
-
|
91
|
+
const settingsConfig = (0, settings_2.getSettingsConfig)(cluster);
|
92
|
+
if (login && useRemoteSettings && settingsConfig.cluster) {
|
91
93
|
try {
|
92
|
-
await (0, settings_1.create)({ ctx, username: login });
|
93
|
-
const userSettings = login
|
94
|
+
await (0, settings_1.create)({ ctx, username: login, cluster: settingsConfig.cluster });
|
95
|
+
const userSettings = login
|
96
|
+
? await (0, settings_1.get)({ ctx, username: login, cluster: settingsConfig.cluster })
|
97
|
+
: {};
|
94
98
|
settings.data = Object.assign(Object.assign({}, settings.data), userSettings);
|
95
99
|
}
|
96
100
|
catch (e) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_layoutConfig","require","_settings","_utils","_ServerFactory","_interopRequireWildcard","_utils2","_defaultSettings","_constants","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_interopRequireDefault","obj","isRootPage","page","_getApp$config","rootPages","concat","_toConsumableArray","getApp","config","odinBaseUrl","ODIN_PAGE_ID","ServerFactory","getExtraRootPages","indexOf","homeRedirect","req","res","cluster","params","referrer","query","url","redirect","homeIndex","_x","_x2","_homeIndex","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_req$yt","_req$yt2","isRoot","ctx","_getClusterConfig","clusterConfig","ytConfig","login","useRemoteSettings","settings","userSettings","message","errorMessage","layoutConfig","html","wrap","_callee$","_context","prev","next","undefined","getHomeRedirectedUrl","sent","abrupt","t0","logError","getClusterConfig","isLocalCluster","yt","_isEmpty","ytAllowRemoteLocalProxy","isLocalModeByEnvironment","status","send","encodeURIComponent","isRemoteSettingsConfigured","data","getDafaultUserSettings","meta","create","username","t1","_objectSpread","t2","getLayoutConfig","uid","renderLayout","stop"],"sources":["home.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport _ from 'lodash';\n\nimport {getLayoutConfig} from '../components/layout-config';\nimport {create, get, isRemoteSettingsConfigured} from '../components/settings';\nimport {getClusterConfig} from '../components/utils';\nimport ServerFactory, {getApp} from '../ServerFactory';\nimport {isLocalModeByEnvironment} from '../utils';\nimport {getDafaultUserSettings} from '../utils/default-settings';\nimport {ODIN_PAGE_ID} from '../../shared/constants';\n\nfunction isRootPage(page: string) {\n const rootPages = [\n ...(getApp().config?.odinBaseUrl ? [ODIN_PAGE_ID] : []),\n ...ServerFactory.getExtraRootPages(),\n ];\n return -1 !== rootPages.indexOf(page);\n}\n\nexport function homeRedirect(req: Request, res: Response) {\n const cluster = req.params.cluster;\n const {referrer} = req.query;\n const url = referrer ? (referrer as string) : `/${cluster}`;\n\n res.redirect(url);\n}\n\nexport async function homeIndex(req: Request, res: Response) {\n const isRoot = isRootPage(req.params.cluster);\n const cluster = isRoot ? undefined : req.params.cluster;\n\n try {\n const url = await ServerFactory.getHomeRedirectedUrl(cluster, req);\n if (url) {\n return res.redirect(url);\n }\n } catch (e) {\n req.ctx.logError('Failed to calculate redirects', e);\n }\n\n const {ctx} = req;\n\n const {clusterConfig, ytConfig} = getClusterConfig(cluster);\n const login = ytConfig.isLocalCluster ? 'root' : req.yt?.login;\n // Refuse to serve localRemoteProxy requests erroneously delegated from main interface to another\n // interface running in a container (instead of YT container)\n if (_.isEmpty(clusterConfig) && cluster) {\n if (!req.ctx.config.ytAllowRemoteLocalProxy && !isLocalModeByEnvironment()) {\n res.redirect('/');\n return;\n }\n res.status(404).send(\n `No config for cluster <b>${encodeURIComponent(cluster)}</b> exists.` +\n '<div>If you are trying to connect to your local cluster please make sure:</div>' +\n '<ol><li>FQDN of the cluster is correct</li>' +\n '<li>The port is greater than or equal to 1000.</li></ol>',\n );\n return;\n }\n\n const useRemoteSettings = isRemoteSettingsConfigured();\n\n const settings = {\n data: getDafaultUserSettings(req.ctx.config),\n meta: {\n useRemoteSettings,\n errorMessage: undefined as string | undefined,\n },\n };\n\n if (login && useRemoteSettings) {\n try {\n await create({ctx, username: login});\n const userSettings = login ? await get({ctx, username: login}) : {};\n settings.data = {...settings.data, ...userSettings};\n } catch (e) {\n const message = `Error in getting user settings for ${login}`;\n req.ctx.logError(message, e);\n\n const errorMessage =\n `Oh, no. ${message}. You are using default settings. ` +\n 'All settings changes will be saved in browser only.\\n' +\n 'Try to reload page. If problem persists please report it via Bug Reporter.';\n\n settings.meta = {\n ...settings.meta,\n useRemoteSettings: false,\n errorMessage,\n };\n }\n }\n\n const layoutConfig = await getLayoutConfig(req, {\n login,\n uid: req.yt?.uid,\n cluster,\n ytConfig,\n settings,\n });\n const html = await ServerFactory.renderLayout(layoutConfig, req, res);\n res.send(html);\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_layoutConfig","require","_settings","_utils","_ServerFactory","_interopRequireWildcard","_utils2","_defaultSettings","_constants","_settings2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_interopRequireDefault","obj","isRootPage","page","_getApp$config","rootPages","concat","_toConsumableArray","getApp","config","odinBaseUrl","ODIN_PAGE_ID","ServerFactory","getExtraRootPages","indexOf","homeRedirect","req","res","cluster","params","ytAuthCluster","referrer","query","url","redirect","homeIndex","_x","_x2","_homeIndex","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_req$yt","_req$yt2","isRoot","ctx","_getClusterConfig","clusterConfig","ytConfig","login","useRemoteSettings","settings","settingsConfig","userSettings","message","errorMessage","layoutConfig","html","wrap","_callee$","_context","prev","next","undefined","getHomeRedirectedUrl","sent","abrupt","t0","logError","getClusterConfig","isLocalCluster","yt","_isEmpty","ytAllowRemoteLocalProxy","isLocalModeByEnvironment","status","send","encodeURIComponent","isRemoteSettingsConfigured","data","getDafaultUserSettings","meta","getSettingsConfig","create","username","t1","_objectSpread","t2","getLayoutConfig","uid","renderLayout","stop"],"sources":["home.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport _ from 'lodash';\n\nimport {getLayoutConfig} from '../components/layout-config';\nimport {create, get, isRemoteSettingsConfigured} from '../components/settings';\nimport {getClusterConfig} from '../components/utils';\nimport ServerFactory, {getApp} from '../ServerFactory';\nimport {isLocalModeByEnvironment} from '../utils';\nimport {getDafaultUserSettings} from '../utils/default-settings';\nimport {ODIN_PAGE_ID} from '../../shared/constants';\nimport {getSettingsConfig} from '../../server/components/settings';\n\nfunction isRootPage(page: string) {\n const rootPages = [\n ...(getApp().config?.odinBaseUrl ? [ODIN_PAGE_ID] : []),\n ...ServerFactory.getExtraRootPages(),\n ];\n return -1 !== rootPages.indexOf(page);\n}\n\nexport function homeRedirect(req: Request, res: Response) {\n const cluster = req.params.ytAuthCluster;\n const {referrer} = req.query;\n const url = referrer ? (referrer as string) : `/${cluster}`;\n\n res.redirect(url);\n}\n\nexport async function homeIndex(req: Request, res: Response) {\n const isRoot = isRootPage(req.params.ytAuthCluster);\n const cluster = isRoot ? undefined : req.params.ytAuthCluster;\n\n try {\n const url = await ServerFactory.getHomeRedirectedUrl(cluster, req);\n if (url) {\n return res.redirect(url);\n }\n } catch (e) {\n req.ctx.logError('Failed to calculate redirects', e);\n }\n\n const {ctx} = req;\n\n const {clusterConfig, ytConfig} = getClusterConfig(cluster);\n const login = ytConfig.isLocalCluster ? 'root' : req.yt?.login;\n // Refuse to serve localRemoteProxy requests erroneously delegated from main interface to another\n // interface running in a container (instead of YT container)\n if (_.isEmpty(clusterConfig) && cluster) {\n if (!req.ctx.config.ytAllowRemoteLocalProxy && !isLocalModeByEnvironment()) {\n res.redirect('/');\n return;\n }\n res.status(404).send(\n `No config for cluster <b>${encodeURIComponent(cluster)}</b> exists.` +\n '<div>If you are trying to connect to your local cluster please make sure:</div>' +\n '<ol><li>FQDN of the cluster is correct</li>' +\n '<li>The port is greater than or equal to 1000.</li></ol>',\n );\n return;\n }\n\n const useRemoteSettings = isRemoteSettingsConfigured();\n\n const settings = {\n data: getDafaultUserSettings(req.ctx.config),\n meta: {\n useRemoteSettings,\n errorMessage: undefined as string | undefined,\n },\n };\n\n const settingsConfig = getSettingsConfig(cluster!);\n\n if (login && useRemoteSettings && settingsConfig.cluster) {\n try {\n await create({ctx, username: login, cluster: settingsConfig.cluster});\n const userSettings = login\n ? await get({ctx, username: login, cluster: settingsConfig.cluster})\n : {};\n settings.data = {...settings.data, ...userSettings};\n } catch (e) {\n const message = `Error in getting user settings for ${login}`;\n req.ctx.logError(message, e);\n\n const errorMessage =\n `Oh, no. ${message}. You are using default settings. ` +\n 'All settings changes will be saved in browser only.\\n' +\n 'Try to reload page. If problem persists please report it via Bug Reporter.';\n\n settings.meta = {\n ...settings.meta,\n useRemoteSettings: false,\n errorMessage,\n };\n }\n }\n\n const layoutConfig = await getLayoutConfig(req, {\n login,\n uid: req.yt?.uid,\n cluster,\n ytConfig,\n settings,\n });\n const html = await ServerFactory.renderLayout(layoutConfig, req, res);\n res.send(html);\n}\n"],"mappings":"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"}
|
@@ -13,11 +13,10 @@ const crypto_1 = __importDefault(require("crypto"));
|
|
13
13
|
// @ts-ignore
|
14
14
|
const javascript_wrapper_1 = __importDefault(require("@ytsaurus/javascript-wrapper"));
|
15
15
|
const cluster_queries_1 = require("../components/cluster-queries");
|
16
|
-
const yt_auth_1 = require("../components/yt-auth");
|
17
16
|
const yt = (0, javascript_wrapper_1.default)();
|
18
17
|
async function handleLogin(req, res) {
|
19
18
|
try {
|
20
|
-
const ytAuthCluster =
|
19
|
+
const { ytAuthCluster } = req.params;
|
21
20
|
const { username, password } = JSON.parse(req.body) || {};
|
22
21
|
if (!username || !password) {
|
23
22
|
throw new Error('Username and password must not be empty');
|
@@ -34,7 +33,18 @@ async function handleLogin(req, res) {
|
|
34
33
|
responseType: 'stream',
|
35
34
|
})
|
36
35
|
.then(async (response) => {
|
37
|
-
const pipedSize = await (0, utils_1.pipeAxiosResponse)(req.ctx, res, response, undefined, (headers) =>
|
36
|
+
const pipedSize = await (0, utils_1.pipeAxiosResponse)(req.ctx, res, response, undefined, (headers) => {
|
37
|
+
if (headers['set-cookie']) {
|
38
|
+
headers['set-cookie'] = headers['set-cookie'].reduce((ret, item) => {
|
39
|
+
ret.push(item);
|
40
|
+
if (item.startsWith(constants_1.YT_CYPRESS_COOKIE_NAME)) {
|
41
|
+
ret.push(item.replace(constants_1.YT_CYPRESS_COOKIE_NAME, `${ytAuthCluster}:${constants_1.YT_CYPRESS_COOKIE_NAME}`));
|
42
|
+
}
|
43
|
+
return ret;
|
44
|
+
}, []);
|
45
|
+
}
|
46
|
+
return removeSecureFlagIfOriginInsecure(req, headers);
|
47
|
+
});
|
38
48
|
if (!pipedSize) {
|
39
49
|
throw new Error(utils_1.UNEXPECTED_PIPE_AXIOS_RESPONSE);
|
40
50
|
}
|
@@ -57,7 +67,7 @@ function removeSecureFlagIfOriginInsecure(req, headers) {
|
|
57
67
|
}
|
58
68
|
else {
|
59
69
|
const tmp = lodash_1.default.map(v, (item) => {
|
60
|
-
if (item.
|
70
|
+
if (item.includes(constants_1.YT_CYPRESS_COOKIE_NAME)) {
|
61
71
|
return item.replace(/\s*Secure;/, '');
|
62
72
|
}
|
63
73
|
return item;
|
@@ -69,7 +79,10 @@ function removeSecureFlagIfOriginInsecure(req, headers) {
|
|
69
79
|
}
|
70
80
|
async function handleChangePassword(req, res) {
|
71
81
|
try {
|
72
|
-
const ytAuthCluster =
|
82
|
+
const ytAuthCluster = req.params.ytAuthCluster;
|
83
|
+
if (!ytAuthCluster) {
|
84
|
+
throw new Error('You have to define ytAuthCluster.');
|
85
|
+
}
|
73
86
|
const { newPassword, currentPassword } = JSON.parse(req.body) || {};
|
74
87
|
if (!newPassword || !currentPassword) {
|
75
88
|
throw new Error('New and current password must not be empty');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_axios","_interopRequireDefault","require","_constants","_requestsSetup","_utils","_crypto","_javascriptWrapper","_clusterQueries","_ytAuth","obj","__esModule","default","yt","ytLib","handleLogin","_x","_x2","_handleLogin","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","req","res","ytAuthCluster","_ref","username","password","_getYTApiClusterSetup","proxyBaseUrl","requestUrl","basicAuth","wrap","_callee2$","_context2","prev","next","getAuthCluster","ctx","config","JSON","parse","body","Error","getYTApiClusterSetup","concat","Buffer","from","toString","axios","request","url","method","headers","_objectSpread","getMetadata","Authorization","timeout","responseType","then","_ref2","_callee","response","pipedSize","_callee$","_context","pipeAxiosResponse","undefined","removeSecureFlagIfOriginInsecure","sent","UNEXPECTED_PIPE_AXIOS_RESPONSE","stop","_x5","t0","sendAndLogError","ytAuthAllowInsecure","origin","startsWith","_reduce","acc","v","k","tmp","_map","item","YT_CYPRESS_COOKIE_NAME","replace","handleChangePassword","_x3","_x4","_handleChangePassword","_callee3","_ref3","newPassword","currentPassword","new_password_sha256","current_password_sha256","cfg","_cfg","setup","_yield$getXSRFToken","login","csrf_token","_callee3$","_context3","crypto","createHash","update","digest","getUserYTApiSetup","abrupt","getXSRFToken","createOption","v4","setUserPassword","parameters","user","result","status","send","err","t1"],"sources":["login.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport axios from 'axios';\nimport _ from 'lodash';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\nimport {getUserYTApiSetup, getYTApiClusterSetup} from '../components/requestsSetup';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport crypto from 'crypto';\n\n// @ts-ignore\nimport ytLib from '@ytsaurus/javascript-wrapper';\nimport {getXSRFToken} from '../components/cluster-queries';\nimport {getAuthCluster} from '../components/yt-auth';\n\nconst yt = ytLib();\n\nexport async function handleLogin(req: Request, res: Response) {\n try {\n const ytAuthCluster = getAuthCluster(req.ctx.config);\n\n const {username, password} = JSON.parse(req.body) || {};\n if (!username || !password) {\n throw new Error('Username and password must not be empty');\n }\n\n const {proxyBaseUrl} = getYTApiClusterSetup(ytAuthCluster);\n const requestUrl = `${proxyBaseUrl}/login`;\n\n const basicAuth = Buffer.from(`${username}:${password}`).toString('base64');\n\n await axios\n .request({\n url: requestUrl,\n method: req.method as any,\n headers: {...req.ctx.getMetadata(), Authorization: `Basic ${basicAuth}`},\n timeout: 10000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(\n req.ctx,\n res,\n response,\n undefined,\n (headers) => removeSecureFlagIfOriginInsecure(req, headers),\n );\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 500, e);\n }\n}\n\nfunction removeSecureFlagIfOriginInsecure(\n req: Request,\n headers: Record<string, string | Array<string>>,\n) {\n const {ytAuthAllowInsecure} = req.ctx.config;\n const {origin} = req.headers;\n\n if (!ytAuthAllowInsecure || 'string' !== typeof origin || !origin.startsWith('http://')) {\n return headers;\n }\n\n return _.reduce(\n headers,\n (acc, v, k) => {\n if (k !== 'set-cookie') {\n acc[k] = v;\n } else {\n const tmp = _.map(v as Array<string>, (item) => {\n if (item.startsWith(YT_CYPRESS_COOKIE_NAME)) {\n return item.replace(/\\s*Secure;/, '');\n }\n return item;\n });\n acc[k] = tmp;\n }\n return acc;\n },\n {} as typeof headers,\n );\n}\n\nexport async function handleChangePassword(req: Request, res: Response) {\n try {\n const ytAuthCluster = getAuthCluster(req.ctx.config);\n\n const {newPassword, currentPassword} = JSON.parse(req.body) || {};\n if (!newPassword || !currentPassword) {\n throw new Error('New and current password must not be empty');\n }\n\n const new_password_sha256 = crypto.createHash('sha256').update(newPassword).digest('hex');\n const current_password_sha256 = crypto\n .createHash('sha256')\n .update(currentPassword)\n .digest('hex');\n\n let cfg;\n try {\n cfg = getUserYTApiSetup(ytAuthCluster, req);\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 400, e);\n return;\n }\n\n const {setup} = cfg;\n const {login, csrf_token} = await getXSRFToken(req, cfg);\n\n yt.setup.createOption('requestHeaders', 'object', {\n 'X-Csrf-Token': csrf_token,\n });\n\n await yt.v4\n .setUserPassword({\n setup,\n parameters: {user: login, new_password_sha256, current_password_sha256},\n })\n .then((result: unknown) => {\n res.status(200).send({result});\n })\n .catch((err: any) => {\n sendAndLogError(req.ctx, res, 500, err);\n });\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 500, e);\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_axios","_interopRequireDefault","require","_constants","_requestsSetup","_utils","_crypto","_javascriptWrapper","_clusterQueries","obj","__esModule","default","yt","ytLib","handleLogin","_x","_x2","_handleLogin","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","req","res","ytAuthCluster","_ref","username","password","_getYTApiClusterSetup","proxyBaseUrl","requestUrl","basicAuth","wrap","_callee2$","_context2","prev","next","params","JSON","parse","body","Error","getYTApiClusterSetup","concat","Buffer","from","toString","axios","request","url","method","headers","_objectSpread","ctx","getMetadata","Authorization","timeout","responseType","then","_ref2","_callee","response","pipedSize","_callee$","_context","pipeAxiosResponse","undefined","reduce","ret","item","push","startsWith","YT_CYPRESS_COOKIE_NAME","replace","removeSecureFlagIfOriginInsecure","sent","UNEXPECTED_PIPE_AXIOS_RESPONSE","stop","_x5","t0","sendAndLogError","ytAuthAllowInsecure","config","origin","_reduce","acc","v","k","tmp","_map","includes","handleChangePassword","_x3","_x4","_handleChangePassword","_callee3","_ref3","newPassword","currentPassword","new_password_sha256","current_password_sha256","cfg","_cfg","setup","_yield$getXSRFToken","login","csrf_token","_callee3$","_context3","crypto","createHash","update","digest","getUserYTApiSetup","abrupt","getXSRFToken","createOption","v4","setUserPassword","parameters","user","result","status","send","err","t1"],"sources":["login.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport axios from 'axios';\nimport _ from 'lodash';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\nimport {getUserYTApiSetup, getYTApiClusterSetup} from '../components/requestsSetup';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport crypto from 'crypto';\n\n// @ts-ignore\nimport ytLib from '@ytsaurus/javascript-wrapper';\nimport {getXSRFToken} from '../components/cluster-queries';\n\nconst yt = ytLib();\n\nexport async function handleLogin(req: Request, res: Response) {\n try {\n const {ytAuthCluster} = req.params;\n\n const {username, password} = JSON.parse(req.body) || {};\n if (!username || !password) {\n throw new Error('Username and password must not be empty');\n }\n\n const {proxyBaseUrl} = getYTApiClusterSetup(ytAuthCluster);\n const requestUrl = `${proxyBaseUrl}/login`;\n\n const basicAuth = Buffer.from(`${username}:${password}`).toString('base64');\n\n await axios\n .request({\n url: requestUrl,\n method: req.method as any,\n headers: {...req.ctx.getMetadata(), Authorization: `Basic ${basicAuth}`},\n timeout: 10000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(\n req.ctx,\n res,\n response,\n undefined,\n (headers: Record<string, string[]>) => {\n if (headers['set-cookie']) {\n headers['set-cookie'] = headers['set-cookie'].reduce<string[]>(\n (ret, item) => {\n ret.push(item);\n\n if (item.startsWith(YT_CYPRESS_COOKIE_NAME)) {\n ret.push(\n item.replace(\n YT_CYPRESS_COOKIE_NAME,\n `${ytAuthCluster}:${YT_CYPRESS_COOKIE_NAME}`,\n ),\n );\n }\n\n return ret;\n },\n [],\n );\n }\n\n return removeSecureFlagIfOriginInsecure(req, headers);\n },\n );\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 500, e);\n }\n}\n\nfunction removeSecureFlagIfOriginInsecure(\n req: Request,\n headers: Record<string, string | Array<string>>,\n) {\n const {ytAuthAllowInsecure} = req.ctx.config;\n const {origin} = req.headers;\n\n if (!ytAuthAllowInsecure || 'string' !== typeof origin || !origin.startsWith('http://')) {\n return headers;\n }\n\n return _.reduce(\n headers,\n (acc, v, k) => {\n if (k !== 'set-cookie') {\n acc[k] = v;\n } else {\n const tmp = _.map(v as Array<string>, (item) => {\n if (item.includes(YT_CYPRESS_COOKIE_NAME)) {\n return item.replace(/\\s*Secure;/, '');\n }\n return item;\n });\n acc[k] = tmp;\n }\n return acc;\n },\n {} as typeof headers,\n );\n}\n\nexport async function handleChangePassword(req: Request, res: Response) {\n try {\n const ytAuthCluster = req.params.ytAuthCluster;\n\n if (!ytAuthCluster) {\n throw new Error('You have to define ytAuthCluster.');\n }\n\n const {newPassword, currentPassword} = JSON.parse(req.body) || {};\n if (!newPassword || !currentPassword) {\n throw new Error('New and current password must not be empty');\n }\n\n const new_password_sha256 = crypto.createHash('sha256').update(newPassword).digest('hex');\n const current_password_sha256 = crypto\n .createHash('sha256')\n .update(currentPassword)\n .digest('hex');\n\n let cfg;\n try {\n cfg = getUserYTApiSetup(ytAuthCluster, req);\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 400, e);\n return;\n }\n\n const {setup} = cfg;\n const {login, csrf_token} = await getXSRFToken(req, cfg);\n\n yt.setup.createOption('requestHeaders', 'object', {\n 'X-Csrf-Token': csrf_token,\n });\n\n await yt.v4\n .setUserPassword({\n setup,\n parameters: {user: login, new_password_sha256, current_password_sha256},\n })\n .then((result: unknown) => {\n res.status(200).send({result});\n })\n .catch((err: any) => {\n sendAndLogError(req.ctx, res, 500, err);\n });\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 500, e);\n }\n}\n"],"mappings":"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"}
|
@@ -30,7 +30,7 @@ async function odinProxyApiImpl(req, res) {
|
|
30
30
|
}
|
31
31
|
const { ctx, query } = req;
|
32
32
|
const search = lodash_1.default.isEmpty(query) ? '' : `?${qs_1.default.stringify(query)}`;
|
33
|
-
const { action, cluster } = req.params;
|
33
|
+
const { action, ytAuthCluster: cluster } = req.params;
|
34
34
|
const allowedActionsUrls = {
|
35
35
|
service_list: `${odinPath}/service_list`,
|
36
36
|
exists: `${odinPath}/${action}/${cluster}`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_axios","_interopRequireDefault","require","_qs","_utils","_ServerFactory","obj","__esModule","default","odinProxyApi","_x","_x2","_odinProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","odinProxyApiImpl","t0","sendAndLogError","ctx","method","query","page","headers","referer","stop","_x3","_x4","_odinProxyApiImpl","_callee3","_getApp$config","odinPath","search","_req$params","action","cluster","allowedActionsUrls","url","_callee3$","_context3","getApp","config","odinBaseUrl","abrupt","Error","_isEmpty","concat","qs","stringify","params","service_list","exists","availability","_has","axios","request","_objectSpread","getMetadata","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","pipeAxiosResponse","sent","UNEXPECTED_PIPE_AXIOS_RESPONSE","_x5"],"sources":["odin-proxy-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\nimport qs from 'qs';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport {getApp} from '../ServerFactory';\n\nexport async function odinProxyApi(req: Request, res: Response) {\n try {\n await odinProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function odinProxyApiImpl(req: Request, res: Response) {\n const odinPath = getApp().config?.odinBaseUrl;\n if (!odinPath) {\n return sendAndLogError(req.ctx, res, 500, new Error('Odin base url is not configured'));\n }\n const {ctx, query} = req;\n\n const search = _.isEmpty(query) ? '' : `?${qs.stringify(query)}`;\n const {action, cluster} = req.params;\n\n const allowedActionsUrls: Record<string, string> = {\n service_list: `${odinPath}/service_list`,\n exists: `${odinPath}/${action}/${cluster}`,\n availability: `${odinPath}/${action}/${cluster}${search}`,\n };\n\n if (!_.has(allowedActionsUrls, action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`Odin action - ${action}, is not supported`),\n );\n }\n\n const url = allowedActionsUrls[action];\n\n return axios\n .request({\n url: url,\n method: req.method as any,\n headers: {...ctx.getMetadata(), 'accept-encoding': 'gzip'},\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":";;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,GAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAAuC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEvC,SAAsBG,YAAYA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAUjC,SAAAF,cAAA;EAAAA,aAAA,OAAAG,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAVM,SAAAC,QAA4BC,GAAY,EAAEC,GAAa;IAAA,OAAAJ,oBAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAEhDC,gBAAgB,CAACP,GAAG,EAAEC,GAAG,CAAC;QAAA;UAAAG,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAI,EAAA,GAAAJ,QAAA;UAAAA,QAAA,CAAAE,IAAA;UAAA,OAE1B,IAAAG,sBAAe,EAACT,GAAG,CAACU,GAAG,EAAET,GAAG,EAAE,GAAG,EAAAG,QAAA,CAAAI,EAAA,EAAK;YACxCG,MAAM,EAAE,QAAQ;YAChBC,KAAK,EAAEZ,GAAG,CAACY,KAAK;YAChBC,IAAI,EAAEb,GAAG,CAACc,OAAO,CAACC;UACtB,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAX,QAAA,CAAAY,IAAA;MAAA;IAAA,GAAAjB,OAAA;EAAA,CAET;EAAA,OAAAN,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEcY,gBAAgBA,CAAAU,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAzB,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAwB,kBAAA;EAAAA,iBAAA,OAAAvB,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAA/B,SAAAsB,SAAgCpB,GAAY,EAAEC,GAAa;IAAA,IAAAoB,cAAA;IAAA,IAAAC,QAAA,EAAAZ,GAAA,EAAAE,KAAA,EAAAW,MAAA,EAAAC,WAAA,EAAAC,MAAA,EAAAC,OAAA,EAAAC,kBAAA,EAAAC,GAAA;IAAA,OAAA/B,oBAAA,CAAAK,IAAA,UAAA2B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAzB,IAAA,GAAAyB,SAAA,CAAAxB,IAAA;QAAA;UACjDgB,QAAQ,IAAAD,cAAA,GAAG,IAAAU,qBAAM,EAAC,CAAC,CAACC,MAAM,cAAAX,cAAA,uBAAfA,cAAA,CAAiBY,WAAW;UAAA,IACxCX,QAAQ;YAAAQ,SAAA,CAAAxB,IAAA;YAAA;UAAA;UAAA,OAAAwB,SAAA,CAAAI,MAAA,WACF,IAAAzB,sBAAe,EAACT,GAAG,CAACU,GAAG,EAAET,GAAG,EAAE,GAAG,EAAE,IAAIkC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAAA;UAEpFzB,GAAG,GAAWV,GAAG,CAAjBU,GAAG,EAAEE,KAAK,GAAIZ,GAAG,CAAZY,KAAK;UAEXW,MAAM,GAAG,IAAAa,iBAAA,EAAUxB,KAAK,CAAC,GAAG,EAAE,OAAAyB,MAAA,CAAOC,WAAE,CAACC,SAAS,CAAC3B,KAAK,CAAC,CAAE;UAAAY,WAAA,
|
1
|
+
{"version":3,"names":["_axios","_interopRequireDefault","require","_qs","_utils","_ServerFactory","obj","__esModule","default","odinProxyApi","_x","_x2","_odinProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","odinProxyApiImpl","t0","sendAndLogError","ctx","method","query","page","headers","referer","stop","_x3","_x4","_odinProxyApiImpl","_callee3","_getApp$config","odinPath","search","_req$params","action","cluster","allowedActionsUrls","url","_callee3$","_context3","getApp","config","odinBaseUrl","abrupt","Error","_isEmpty","concat","qs","stringify","params","ytAuthCluster","service_list","exists","availability","_has","axios","request","_objectSpread","getMetadata","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","pipeAxiosResponse","sent","UNEXPECTED_PIPE_AXIOS_RESPONSE","_x5"],"sources":["odin-proxy-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\nimport qs from 'qs';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport {getApp} from '../ServerFactory';\n\nexport async function odinProxyApi(req: Request, res: Response) {\n try {\n await odinProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function odinProxyApiImpl(req: Request, res: Response) {\n const odinPath = getApp().config?.odinBaseUrl;\n if (!odinPath) {\n return sendAndLogError(req.ctx, res, 500, new Error('Odin base url is not configured'));\n }\n const {ctx, query} = req;\n\n const search = _.isEmpty(query) ? '' : `?${qs.stringify(query)}`;\n const {action, ytAuthCluster: cluster} = req.params;\n\n const allowedActionsUrls: Record<string, string> = {\n service_list: `${odinPath}/service_list`,\n exists: `${odinPath}/${action}/${cluster}`,\n availability: `${odinPath}/${action}/${cluster}${search}`,\n };\n\n if (!_.has(allowedActionsUrls, action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`Odin action - ${action}, is not supported`),\n );\n }\n\n const url = allowedActionsUrls[action];\n\n return axios\n .request({\n url: url,\n method: req.method as any,\n headers: {...ctx.getMetadata(), 'accept-encoding': 'gzip'},\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":"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"}
|
@@ -13,11 +13,11 @@ const yt = (0, javascript_wrapper_1.default)();
|
|
13
13
|
async function getClusterPools(req, res) {
|
14
14
|
try {
|
15
15
|
req.ctx.log('Test', req.params);
|
16
|
-
const {
|
16
|
+
const { ytAuthCluster } = req.params;
|
17
17
|
const { poolTree } = req.query;
|
18
18
|
let cfg;
|
19
19
|
try {
|
20
|
-
cfg = (0, requestsSetup_1.getUserYTApiSetup)(
|
20
|
+
cfg = (0, requestsSetup_1.getUserYTApiSetup)(ytAuthCluster, req);
|
21
21
|
}
|
22
22
|
catch (e) {
|
23
23
|
(0, utils_1.sendAndLogError)(req.ctx, res, 400, e);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_javascriptWrapper","_interopRequireDefault","require","_ytApi","_utils","_requestsSetup","obj","__esModule","default","yt","ytLib","getClusterPools","_x","_x2","_getClusterPools","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","_ref","
|
1
|
+
{"version":3,"names":["_javascriptWrapper","_interopRequireDefault","require","_ytApi","_utils","_requestsSetup","obj","__esModule","default","yt","ytLib","getClusterPools","_x","_x2","_getClusterPools","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","_ref","ytAuthCluster","poolTree","cfg","_cfg","setup","_yield$loadPoolTree","names","tree","wrap","_callee$","_context","prev","next","ctx","log","params","query","getUserYTApiSetup","t0","sendAndLogError","abrupt","loadPoolTree","sent","send","t1","stop","SCHEDULER_POOL_TREES","_x3","_x4","_loadPoolTree","_callee2","poolTreesRoot","data","stack","_loop","_callee2$","_context3","getPoolTreeRootPath","loadDefaultPoolTree","v3","get","parameters","_objectSpread","path","concat","USE_MAX_SIZE","item","_loop$","_context2","pop","Object","keys","forEach","k","push","length","delegateYield","then","err","code","codes","NODE_DOES_NOT_EXIST","Promise","reject","_x5","_x6","_loadDefaultPoolTree","_callee3","_callee3$","_context4","defaultTree","error"],"sources":["scheduling-pools.ts"],"sourcesContent":["import _ from 'lodash';\n\nimport type {Request, Response} from 'express';\n// @ts-ignore\nimport ytLib from '@ytsaurus/javascript-wrapper';\n\nimport {USE_MAX_SIZE} from '../../shared/constants/yt-api';\n\nimport {sendAndLogError} from '../utils';\nimport {getUserYTApiSetup} from '../components/requestsSetup';\nimport {YTError} from '../../@types/types';\n\nconst yt = ytLib();\n\nexport async function getClusterPools(req: Request, res: Response) {\n try {\n req.ctx.log('Test', req.params);\n const {ytAuthCluster} = req.params as {ytAuthCluster: string};\n const {poolTree} = req.query;\n let cfg;\n try {\n cfg = getUserYTApiSetup(ytAuthCluster, req);\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 400, e);\n return;\n }\n const {setup} = cfg;\n\n const {names, tree} = await loadPoolTree(setup, poolTree as string);\n res.send({tree, names});\n } catch (e: any) {\n sendAndLogError(req.ctx, res, null, e);\n }\n}\n\nconst SCHEDULER_POOL_TREES = '//sys/scheduler/config/pool_trees_root';\n\ninterface PoolTree extends Record<string, PoolTree> {}\n\nasync function loadPoolTree(\n setup: unknown,\n poolTree?: string,\n): Promise<{names: Array<string>; tree: string}> {\n const poolTreesRoot = await getPoolTreeRootPath(setup);\n\n const tree = poolTree ? poolTree : await loadDefaultPoolTree(setup, poolTreesRoot);\n const data: PoolTree = await yt.v3.get({\n setup,\n parameters: {path: `${poolTreesRoot}/${tree}`, ...USE_MAX_SIZE},\n });\n\n const names: Array<string> = [];\n const stack = [data];\n while (stack.length) {\n const item = stack.pop();\n Object.keys(item ?? {}).forEach((k) => {\n names.push(k);\n if (item) {\n stack.push(item[k]);\n }\n });\n }\n\n return {names, tree};\n}\n\nfunction getPoolTreeRootPath(setup: unknown): Promise<string> {\n return yt.v3.get({setup, parameters: {path: SCHEDULER_POOL_TREES}}).then(\n (path: string) => {\n return path;\n },\n (err: YTError) => {\n return err.code === yt.codes.NODE_DOES_NOT_EXIST\n ? '//sys/pool_trees'\n : Promise.reject(err);\n },\n );\n}\n\nasync function loadDefaultPoolTree(setup: unknown, poolTreesRoot: string) {\n const path = `${poolTreesRoot}/@default_tree`;\n return yt.v3\n .get({setup, parameters: {path}})\n .then((defaultTree: string) => {\n return defaultTree || 'physical';\n })\n .catch((error: any) => {\n if (error && error.code === yt.codes.NODE_DOES_NOT_EXIST) {\n return 'physical';\n }\n throw error;\n });\n}\n"],"mappings":"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"}
|