@ytsaurus/ui 1.41.1 → 1.42.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/server/components/yt-auth.js +2 -1
- package/build/cjs/server/components/yt-auth.js.map +1 -1
- package/build/cjs/server/controllers/clusters.js +1 -2
- package/build/cjs/server/controllers/clusters.js.map +1 -1
- package/build/cjs/server/controllers/login.js +1 -1
- package/build/cjs/server/controllers/login.js.map +1 -1
- package/build/cjs/server/middlewares/yt-auth.js +2 -1
- package/build/cjs/server/middlewares/yt-auth.js.map +1 -1
- package/build/cjs/server/utils/index.d.ts +1 -0
- package/build/cjs/server/utils/index.js +6 -1
- package/build/cjs/server/utils/index.js.map +1 -1
- package/build/cjs/ui/UIFactory.d.ts +1 -0
- package/build/cjs/ui/UIFactory.js +3 -0
- package/build/cjs/ui/UIFactory.js.map +1 -1
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.css +3 -0
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.css.map +1 -1
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js +5 -2
- package/build/cjs/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenu.js +2 -1
- package/build/cjs/ui/containers/ClustersMenu/ClustersMenu.js.map +1 -1
- package/build/cjs/ui/containers/RootPage/RootPage.css +1 -0
- package/build/cjs/ui/containers/RootPage/RootPage.css.map +1 -1
- package/build/cjs/ui/containers/RootPage/RootPage.js +2 -1
- package/build/cjs/ui/containers/RootPage/RootPage.js.map +1 -1
- package/build/esm/server/components/yt-auth.js +2 -1
- package/build/esm/server/components/yt-auth.js.map +1 -1
- package/build/esm/server/controllers/clusters.js +2 -3
- package/build/esm/server/controllers/clusters.js.map +1 -1
- package/build/esm/server/controllers/login.js +2 -2
- package/build/esm/server/controllers/login.js.map +1 -1
- package/build/esm/server/middlewares/yt-auth.js +2 -1
- package/build/esm/server/middlewares/yt-auth.js.map +1 -1
- package/build/esm/server/utils/index.d.ts +1 -0
- package/build/esm/server/utils/index.js +4 -0
- package/build/esm/server/utils/index.js.map +1 -1
- package/build/esm/ui/UIFactory.d.ts +1 -0
- package/build/esm/ui/UIFactory.js +3 -0
- package/build/esm/ui/UIFactory.js.map +1 -1
- package/build/esm/ui/assets/fonts/Manrope/OFL.txt +93 -0
- package/build/esm/ui/assets/fonts/Manrope/README.txt +69 -0
- package/build/esm/ui/assets/fonts/Manrope/otf/Manrope-Bold.otf +0 -0
- package/build/esm/ui/assets/fonts/Manrope/otf/Manrope-ExtraBold.otf +0 -0
- package/build/esm/ui/assets/fonts/Manrope/otf/Manrope-ExtraLight.otf +0 -0
- package/build/esm/ui/assets/fonts/Manrope/otf/Manrope-Light.otf +0 -0
- package/build/esm/ui/assets/fonts/Manrope/otf/Manrope-Medium.otf +0 -0
- package/build/esm/ui/assets/fonts/Manrope/otf/Manrope-Regular.otf +0 -0
- package/build/esm/ui/assets/fonts/Manrope/otf/Manrope-SemiBold.otf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/LICENSE.txt +202 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/README.txt +77 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/RobotoMono-Italic-VariableFont_wght.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-Bold.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-BoldItalic.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-ExtraLight.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-ExtraLightItalic.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-Italic.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-Light.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-LightItalic.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-Medium.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-MediumItalic.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-Regular.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-SemiBold.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-SemiBoldItalic.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-Thin.ttf +0 -0
- package/build/esm/ui/assets/fonts/Roboto_Mono/static/RobotoMono-ThinItalic.ttf +0 -0
- package/build/esm/ui/assets/img/cluster-2x.svg +6 -0
- package/build/esm/ui/assets/img/cluster.svg +6 -0
- package/build/esm/ui/assets/img/favicon-aqua.png +0 -0
- package/build/esm/ui/assets/img/favicon-bittersweet.png +0 -0
- package/build/esm/ui/assets/img/favicon-bluejeans.png +0 -0
- package/build/esm/ui/assets/img/favicon-darkgray.png +0 -0
- package/build/esm/ui/assets/img/favicon-grapefruit.png +0 -0
- package/build/esm/ui/assets/img/favicon-grass.png +0 -0
- package/build/esm/ui/assets/img/favicon-lavander.png +0 -0
- package/build/esm/ui/assets/img/favicon-lightgray.png +0 -0
- package/build/esm/ui/assets/img/favicon-mediumgray.png +0 -0
- package/build/esm/ui/assets/img/favicon-mint.png +0 -0
- package/build/esm/ui/assets/img/favicon-pinkrose.png +0 -0
- package/build/esm/ui/assets/img/favicon-sunflower.png +0 -0
- package/build/esm/ui/assets/img/favicon.png +0 -0
- package/build/esm/ui/assets/img/favicon.svg +8 -0
- package/build/esm/ui/assets/img/placeholder.svg +2 -0
- package/build/esm/ui/assets/img/svg/YT-login-page-background-dark.svg +101 -0
- package/build/esm/ui/assets/img/svg/YT-login-page-background-light.svg +99 -0
- package/build/esm/ui/assets/img/svg/YTsaurus-logo-dark.svg +4 -0
- package/build/esm/ui/assets/img/svg/YTsaurus-logo-light.svg +4 -0
- package/build/esm/ui/assets/img/svg/acl-inherited.svg +6 -0
- package/build/esm/ui/assets/img/svg/appLogo.svg +5 -0
- package/build/esm/ui/assets/img/svg/calendar.svg +1 -0
- package/build/esm/ui/assets/img/svg/chevron-right.svg +3 -0
- package/build/esm/ui/assets/img/svg/chevron.svg +3 -0
- package/build/esm/ui/assets/img/svg/close-icon.svg +5 -0
- package/build/esm/ui/assets/img/svg/close-tag-icon.svg +4 -0
- package/build/esm/ui/assets/img/svg/data-icon.svg +4 -0
- package/build/esm/ui/assets/img/svg/ellipsis.svg +3 -0
- package/build/esm/ui/assets/img/svg/empty.svg +2 -0
- package/build/esm/ui/assets/img/svg/icons/acl-namespace-map.svg +4 -0
- package/build/esm/ui/assets/img/svg/icons/acl-namespace.svg +5 -0
- package/build/esm/ui/assets/img/svg/icons/acl-object.svg +6 -0
- package/build/esm/ui/assets/img/svg/icons/angle-double-left.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/angle-double-right.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/angle-down.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/angle-left.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/angle-right.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/angle-up.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/arrow-from-bottm.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/arrow-from-bottom.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/arrow-from-top.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/arrow-right-from-square.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/arrow-to-bottm.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/arrow-to-bottom.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/arrow-to-top.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/at.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/ban.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/book.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/calendar-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/chaos-replicated-table.svg +4 -0
- package/build/esm/ui/assets/img/svg/icons/chart-bar.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/chart-line.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/chart_line.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/check-circle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/check.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/chevron-down.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/chevron-up.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/circle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/clipboard-list.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/clock.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/clone.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/cloud.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/code-branch.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/code-merge.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/cog.svg +10 -0
- package/build/esm/ui/assets/img/svg/icons/cogs.svg +10 -0
- package/build/esm/ui/assets/img/svg/icons/compress.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/copy.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/digging.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/download.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/dyn-th.svg +4 -0
- package/build/esm/ui/assets/img/svg/icons/ellipsis-h.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/eraser.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/exclamation-circle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/exclamation-triangle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/exclamation.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/expand.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/external-link.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/eye-slash.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/eye.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/file-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/file-export.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/file.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/filter.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/flame.svg +1 -0
- package/build/esm/ui/assets/img/svg/icons/folder-open.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/folder-tree.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/folder.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/folders.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/ghost.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/hand-paper.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/hashtag.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/intersection.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/key.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/layout-columns-3.svg +1 -0
- package/build/esm/ui/assets/img/svg/icons/level-down-alt.svg +4 -0
- package/build/esm/ui/assets/img/svg/icons/link.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/list.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/not-suported.svg +5 -0
- package/build/esm/ui/assets/img/svg/icons/pause-circle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/pencil-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/pencil.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/plane.svg +4 -0
- package/build/esm/ui/assets/img/svg/icons/play-circle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/plus.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/poll-people.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/question-circle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/redo.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/replication-log-table.svg +6 -0
- package/build/esm/ui/assets/img/svg/icons/rocket.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/save.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/share.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/snowflake.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/sort-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/sort-amount-down-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/sort-amount-up.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/sort-down.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/sort-up.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/sort.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/star-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/star.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/stop-circle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/sync-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/table.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/tag.svg +11 -0
- package/build/esm/ui/assets/img/svg/icons/tasks.svg +8 -0
- package/build/esm/ui/assets/img/svg/icons/th.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/times.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/trash-alt.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/trash-bin.svg +1 -0
- package/build/esm/ui/assets/img/svg/icons/triangle.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/undo.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/union.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/unlink.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/upload.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/user.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/weight-hanging.svg +3 -0
- package/build/esm/ui/assets/img/svg/icons/window-maximize.svg +3 -0
- package/build/esm/ui/assets/img/svg/info-icon.svg +4 -0
- package/build/esm/ui/assets/img/svg/info-icon2.svg +3 -0
- package/build/esm/ui/assets/img/svg/jupyter-logo.svg +21 -0
- package/build/esm/ui/assets/img/svg/learn.svg +3 -0
- package/build/esm/ui/assets/img/svg/modal-no-content.svg +32 -0
- package/build/esm/ui/assets/img/svg/no-content.svg +69 -0
- package/build/esm/ui/assets/img/svg/page-accounts.svg +8 -0
- package/build/esm/ui/assets/img/svg/page-chyt.svg +15 -0
- package/build/esm/ui/assets/img/svg/page-components.svg +6 -0
- package/build/esm/ui/assets/img/svg/page-dashboard.svg +4 -0
- package/build/esm/ui/assets/img/svg/page-groups.svg +8 -0
- package/build/esm/ui/assets/img/svg/page-navigation.svg +3 -0
- package/build/esm/ui/assets/img/svg/page-no-icon.svg +2 -0
- package/build/esm/ui/assets/img/svg/page-operations.svg +8 -0
- package/build/esm/ui/assets/img/svg/page-path-viewer.svg +6 -0
- package/build/esm/ui/assets/img/svg/page-query-tracker.svg +5 -0
- package/build/esm/ui/assets/img/svg/page-scheduling.svg +6 -0
- package/build/esm/ui/assets/img/svg/page-system.svg +6 -0
- package/build/esm/ui/assets/img/svg/page-tablet-cell-bundles.svg +6 -0
- package/build/esm/ui/assets/img/svg/page-users.svg +7 -0
- package/build/esm/ui/assets/img/svg/page-versions.svg +9 -0
- package/build/esm/ui/assets/img/svg/palette-icon.svg +3 -0
- package/build/esm/ui/assets/img/svg/pin-solid.svg +3 -0
- package/build/esm/ui/assets/img/svg/pin.svg +3 -0
- package/build/esm/ui/assets/img/svg/play.svg +3 -0
- package/build/esm/ui/assets/img/svg/read-only-icon.svg +5 -0
- package/build/esm/ui/assets/img/svg/remove.svg +4 -0
- package/build/esm/ui/assets/img/svg/reset-icon.svg +3 -0
- package/build/esm/ui/assets/img/svg/settings-2.svg +3 -0
- package/build/esm/ui/assets/img/svg/shield-icon.svg +4 -0
- package/build/esm/ui/assets/img/svg/square-semifill.svg +3 -0
- package/build/esm/ui/assets/img/svg/square.svg +3 -0
- package/build/esm/ui/assets/img/svg/staff-icon.svg +4 -0
- package/build/esm/ui/assets/img/svg/table-icon.svg +4 -0
- package/build/esm/ui/assets/img/svg/tools-icon.svg +6 -0
- package/build/esm/ui/assets/img/svg/tooltip-icon.svg +4 -0
- package/build/esm/ui/assets/img/svg/transpose.svg +3 -0
- package/build/esm/ui/assets/img/svg/warmup-icon.svg +5 -0
- package/build/esm/ui/assets/img/svg/yt.svg +4 -0
- package/build/esm/ui/assets/img/ui-2x.jpg +0 -0
- package/build/esm/ui/assets/img/ui-big.jpg +0 -0
- package/build/esm/ui/assets/img/ui.jpg +0 -0
- package/build/esm/ui/assets/img/unknown-2x.png +0 -0
- package/build/esm/ui/assets/img/unknown.png +0 -0
- package/build/esm/ui/assets/img/user-avatar.svg +6 -0
- package/build/esm/ui/containers/ClusterPage/ClusterPage.css +3 -0
- package/build/esm/ui/containers/ClusterPage/ClusterPage.css.map +1 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js +5 -2
- package/build/esm/ui/containers/ClusterPage/ClusterPage.js.map +1 -1
- package/build/esm/ui/containers/ClusterPage/ClusterPage.scss +4 -0
- package/build/esm/ui/containers/ClustersMenu/ClustersMenu.js +2 -1
- package/build/esm/ui/containers/ClustersMenu/ClustersMenu.js.map +1 -1
- package/build/esm/ui/containers/RootPage/RootPage.css +1 -0
- package/build/esm/ui/containers/RootPage/RootPage.css.map +1 -1
- package/build/esm/ui/containers/RootPage/RootPage.js +2 -1
- package/build/esm/ui/containers/RootPage/RootPage.js.map +1 -1
- package/build/esm/ui/containers/RootPage/RootPage.scss +1 -0
- package/dist/public/build/assets-manifest.json +7 -7
- package/dist/public/build/css/{main.72c3782f.css → main.419150a6.css} +2 -2
- package/dist/public/build/css/main.419150a6.css.map +1 -0
- package/dist/public/build/js/main.62803f34.js +3 -0
- package/dist/public/build/js/{main.8367a5da.js.map → main.62803f34.js.map} +1 -1
- package/dist/public/build/manifest.json +4 -4
- package/dist/server/components/yt-auth.js +2 -1
- package/dist/server/controllers/clusters.js +1 -2
- package/dist/server/controllers/login.js +1 -1
- package/dist/server/middlewares/yt-auth.js +2 -1
- package/dist/server/utils/index.d.ts +1 -0
- package/dist/server/utils/index.js +6 -1
- package/package.json +5 -4
- package/dist/public/build/css/main.72c3782f.css.map +0 -1
- package/dist/public/build/js/main.8367a5da.js +0 -3
- /package/dist/public/build/js/{main.8367a5da.js.LICENSE.txt → main.62803f34.js.LICENSE.txt} +0 -0
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.YTAuthLogout = exports.isYtAuthEnabled = void 0;
|
4
4
|
const constants_1 = require("../../shared/constants");
|
5
5
|
const utils_1 = require("./utils");
|
6
|
+
const utils_2 = require("../utils");
|
6
7
|
function isYtAuthEnabled(config) {
|
7
8
|
return Boolean(config.allowPasswordAuth);
|
8
9
|
}
|
9
10
|
exports.isYtAuthEnabled = isYtAuthEnabled;
|
10
11
|
function YTAuthLogout(res) {
|
11
12
|
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}
|
13
|
+
res.setHeader('set-cookie', [`${constants_1.YT_CYPRESS_COOKIE_NAME}=deleted; Path=/; Max-Age=0;`].concat(Object.keys(clusters).map((cluster) => `${(0, utils_2.makeAuthClusterCookieName)(cluster)}=deleted; Path=/; Max-Age=0;`)));
|
13
14
|
}
|
14
15
|
exports.YTAuthLogout = YTAuthLogout;
|
@@ -1 +1 @@
|
|
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}
|
1
|
+
{"version":3,"names":["_constants","require","_utils","_utils2","isYtAuthEnabled","config","Boolean","allowPasswordAuth","YTAuthLogout","res","clusters","getClustersFromConfig","setHeader","concat","YT_CYPRESS_COOKIE_NAME","Object","keys","map","cluster","makeAuthClusterCookieName"],"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';\nimport {makeAuthClusterCookieName} 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) => `${makeAuthClusterCookieName(cluster)}=deleted; Path=/; Max-Age=0;`,\n ),\n ),\n );\n}\n"],"mappings":";;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEO,SAASG,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,CAAQ,IAAAM,iCAAyB,EAACD,OAAO,CAAC;EAAA,CACtD,CACJ,CACJ,CAAC;AACL"}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.clusterAuthStatus = exports.clusterVersions = void 0;
|
4
|
-
const constants_1 = require("../../shared/constants");
|
5
4
|
const utils_1 = require("../utils");
|
6
5
|
const cluster_queries_1 = require("../components/cluster-queries");
|
7
6
|
const utils_2 = require("../components/utils");
|
@@ -19,7 +18,7 @@ function clusterAuthStatus(req, res) {
|
|
19
18
|
const clusters = (0, utils_2.getClustersFromConfig)();
|
20
19
|
data = Object.keys(clusters).reduce((ret, cluster) => {
|
21
20
|
ret[cluster] = {
|
22
|
-
authorized: Boolean(req.cookies[
|
21
|
+
authorized: Boolean(req.cookies[(0, utils_1.makeAuthClusterCookieName)(cluster)]),
|
23
22
|
};
|
24
23
|
return ret;
|
25
24
|
}, {});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["_utils","require","_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","makeAuthClusterCookieName","_clusters","clusterName"],"sources":["clusters.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {makeAuthClusterCookieName, 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[makeAuthClusterCookieName(cluster)]),\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,MAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEO,SAASG,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,CAAC,IAAAC,gCAAyB,EAACJ,OAAO,CAAC,CAAC;MACvE,CAAC;MAED,OAAOD,GAAG;IACd,CAAC,EAAE,CAAC,CAAsB,CAAC;EAC/B,CAAC,MAAM;IACH,IAAMM,SAAQ,GAAG,IAAApB,6BAAqB,EAAC,CAAC;IAExCG,IAAI,GAAGQ,MAAM,CAACC,IAAI,CAACQ,SAAQ,CAAC,CAACP,MAAM,CAAC,UAACC,GAAG,EAAEO,WAAW,EAAK;MACtDP,GAAG,CAACO,WAAW,CAAC,GAAG;QAACL,UAAU,EAAE;MAAI,CAAC;MAErC,OAAOF,GAAG;IACd,CAAC,EAAE,CAAC,CAAsB,CAAC;EAC/B;EAEA,IAAAV,mBAAY,EAACN,GAAG,EAAEK,IAAI,CAAC;AAC3B"}
|
@@ -38,7 +38,7 @@ async function handleLogin(req, res) {
|
|
38
38
|
headers['set-cookie'] = headers['set-cookie'].reduce((ret, item) => {
|
39
39
|
ret.push(item);
|
40
40
|
if (item.startsWith(constants_1.YT_CYPRESS_COOKIE_NAME)) {
|
41
|
-
ret.push(item.replace(constants_1.YT_CYPRESS_COOKIE_NAME,
|
41
|
+
ret.push(item.replace(constants_1.YT_CYPRESS_COOKIE_NAME, (0, utils_1.makeAuthClusterCookieName)(ytAuthCluster)));
|
42
42
|
}
|
43
43
|
return ret;
|
44
44
|
}, []);
|
@@ -1 +1 @@
|
|
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":";;;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AAGA,IAAAK,kBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AAA0D,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAF1D;;AAIA,IAAMG,EAAE,GAAG,IAAAC,0BAAK,EAAC,CAAC;AAElB,SAAsBC,WAAWA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,YAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AA2DhC,SAAAF,aAAA;EAAAA,YAAA,OAAAG,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CA3DM,SAAAC,SAA2BC,GAAY,EAAEC,GAAa;IAAA,IAAAC,aAAA,EAAAC,IAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,qBAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,SAAA;IAAA,OAAAZ,oBAAA,CAAAa,IAAA,UAAAC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;QAAA;UAAAF,SAAA,CAAAC,IAAA;UAE9CX,aAAa,GAAIF,GAAG,CAACe,MAAM,CAA3Bb,aAAa;UAAAC,IAAA,GAESa,IAAI,CAACC,KAAK,CAACjB,GAAG,CAACkB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAhDd,QAAQ,GAAAD,IAAA,CAARC,QAAQ,EAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;UAAA,MACrB,CAACD,QAAQ,IAAI,CAACC,QAAQ;YAAAO,SAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MAChB,IAAIK,KAAK,CAAC,yCAAyC,CAAC;QAAA;UAAAb,qBAAA,GAGvC,IAAAc,mCAAoB,EAAClB,aAAa,CAAC,EAAnDK,YAAY,GAAAD,qBAAA,CAAZC,YAAY;UACbC,UAAU,MAAAa,MAAA,CAAMd,YAAY;UAE5BE,SAAS,GAAGa,MAAM,CAACC,IAAI,IAAAF,MAAA,CAAIjB,QAAQ,OAAAiB,MAAA,CAAIhB,QAAQ,CAAE,CAAC,CAACmB,QAAQ,CAAC,QAAQ,CAAC;UAAAZ,SAAA,CAAAE,IAAA;UAAA,OAErEW,cAAK,CACNC,OAAO,CAAC;YACLC,GAAG,EAAEnB,UAAU;YACfoB,MAAM,EAAE5B,GAAG,CAAC4B,MAAa;YACzBC,OAAO,MAAAC,sBAAA,MAAAA,sBAAA,MAAM9B,GAAG,CAAC+B,GAAG,CAACC,WAAW,CAAC,CAAC;cAAEC,aAAa,WAAAZ,MAAA,CAAWZ,SAAS;YAAE,EAAC;YACxEyB,OAAO,EAAE,KAAK;YACdC,YAAY,EAAE;UAClB,CAAC,CAAC,CACDC,IAAI;YAAA,IAAAC,KAAA,OAAAzC,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAAC,SAAAwC,QAAOC,QAAQ;cAAA,IAAAC,SAAA;cAAA,OAAA3C,oBAAA,CAAAa,IAAA,UAAA+B,SAAAC,QAAA;gBAAA,kBAAAA,QAAA,CAAA7B,IAAA,GAAA6B,QAAA,CAAA5B,IAAA;kBAAA;oBAAA4B,QAAA,CAAA5B,IAAA;oBAAA,OACO,IAAA6B,wBAAiB,EACrC3C,GAAG,CAAC+B,GAAG,EACP9B,GAAG,EACHsC,QAAQ,EACRK,SAAS,EACT,UAACf,OAAiC,EAAK;sBACnC,IAAIA,OAAO,CAAC,YAAY,CAAC,EAAE;wBACvBA,OAAO,CAAC,YAAY,CAAC,GAAGA,OAAO,CAAC,YAAY,CAAC,CAACgB,MAAM,CAChD,UAACC,GAAG,EAAEC,IAAI,EAAK;0BACXD,GAAG,CAACE,IAAI,CAACD,IAAI,CAAC;0BAEd,IAAIA,IAAI,CAACE,UAAU,CAACC,iCAAsB,CAAC,EAAE;4BACzCJ,GAAG,CAACE,IAAI,CACJD,IAAI,CAACI,OAAO,CACRD,iCAAsB,KAAA7B,MAAA,CACnBnB,aAAa,OAAAmB,MAAA,CAAI6B,iCAAsB,CAC9C,CACJ,CAAC;0BACL;0BAEA,OAAOJ,GAAG;wBACd,CAAC,EACD,EACJ,CAAC;sBACL;sBAEA,OAAOM,gCAAgC,CAACpD,GAAG,EAAE6B,OAAO,CAAC;oBACzD,CACJ,CAAC;kBAAA;oBA5BKW,SAAS,GAAAE,QAAA,CAAAW,IAAA;oBAAA,IA6BVb,SAAS;sBAAAE,QAAA,CAAA5B,IAAA;sBAAA;oBAAA;oBAAA,MACJ,IAAIK,KAAK,CAACmC,qCAA8B,CAAC;kBAAA;kBAAA;oBAAA,OAAAZ,QAAA,CAAAa,IAAA;gBAAA;cAAA,GAAAjB,OAAA;YAAA,CAEtD;YAAA,iBAAAkB,GAAA;cAAA,OAAAnB,KAAA,CAAA3C,KAAA,OAAAC,SAAA;YAAA;UAAA,IAAC;QAAA;UAAAiB,SAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAA6C,EAAA,GAAA7C,SAAA;UAEN,IAAA8C,sBAAe,EAAC1D,GAAG,CAAC+B,GAAG,EAAE9B,GAAG,EAAE,GAAG,EAAAW,SAAA,CAAA6C,EAAG,CAAC;QAAC;QAAA;UAAA,OAAA7C,SAAA,CAAA2C,IAAA;MAAA;IAAA,GAAAxD,QAAA;EAAA,CAE7C;EAAA,OAAAN,YAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,SAASyD,gCAAgCA,CACrCpD,GAAY,EACZ6B,OAA+C,EACjD;EACE,IAAO8B,mBAAmB,GAAI3D,GAAG,CAAC+B,GAAG,CAAC6B,MAAM,CAArCD,mBAAmB;EAC1B,IAAOE,MAAM,GAAI7D,GAAG,CAAC6B,OAAO,CAArBgC,MAAM;EAEb,IAAI,CAACF,mBAAmB,IAAI,QAAQ,KAAK,OAAOE,MAAM,IAAI,CAACA,MAAM,CAACZ,UAAU,CAAC,SAAS,CAAC,EAAE;IACrF,OAAOpB,OAAO;EAClB;EAEA,OAAO,IAAAiC,gBAAA,EACHjC,OAAO,EACP,UAACkC,GAAG,EAAEC,CAAC,EAAEC,CAAC,EAAK;IACX,IAAIA,CAAC,KAAK,YAAY,EAAE;MACpBF,GAAG,CAACE,CAAC,CAAC,GAAGD,CAAC;IACd,CAAC,MAAM;MACH,IAAME,GAAG,GAAG,IAAAC,aAAA,EAAMH,CAAC,EAAmB,UAACjB,IAAI,EAAK;QAC5C,IAAIA,IAAI,CAACqB,QAAQ,CAAClB,iCAAsB,CAAC,EAAE;UACvC,OAAOH,IAAI,CAACI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QACzC;QACA,OAAOJ,IAAI;MACf,CAAC,CAAC;MACFgB,GAAG,CAACE,CAAC,CAAC,GAAGC,GAAG;IAChB;IACA,OAAOH,GAAG;EACd,CAAC,EACD,CAAC,CACL,CAAC;AACL;AAEA,SAAsBM,oBAAoBA,CAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAA9E,KAAA,OAAAC,SAAA;AAAA;AAgDzC,SAAA6E,sBAAA;EAAAA,qBAAA,OAAA5E,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAhDM,SAAA2E,SAAoCzE,GAAY,EAAEC,GAAa;IAAA,IAAAC,aAAA,EAAAwE,KAAA,EAAAC,WAAA,EAAAC,eAAA,EAAAC,mBAAA,EAAAC,uBAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,KAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,UAAA;IAAA,OAAAvF,oBAAA,CAAAa,IAAA,UAAA2E,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAzE,IAAA,GAAAyE,SAAA,CAAAxE,IAAA;QAAA;UAAAwE,SAAA,CAAAzE,IAAA;UAExDX,aAAa,GAAGF,GAAG,CAACe,MAAM,CAACb,aAAa;UAAA,IAEzCA,aAAa;YAAAoF,SAAA,CAAAxE,IAAA;YAAA;UAAA;UAAA,MACR,IAAIK,KAAK,CAAC,mCAAmC,CAAC;QAAA;UAAAuD,KAAA,GAGjB1D,IAAI,CAACC,KAAK,CAACjB,GAAG,CAACkB,IAAI,CAAC,IAAI,CAAC,CAAC,EAA1DyD,WAAW,GAAAD,KAAA,CAAXC,WAAW,EAAEC,eAAe,GAAAF,KAAA,CAAfE,eAAe;UAAA,MAC/B,CAACD,WAAW,IAAI,CAACC,eAAe;YAAAU,SAAA,CAAAxE,IAAA;YAAA;UAAA;UAAA,MAC1B,IAAIK,KAAK,CAAC,4CAA4C,CAAC;QAAA;UAG3D0D,mBAAmB,GAAGU,eAAM,CAACC,UAAU,CAAC,QAAQ,CAAC,CAACC,MAAM,CAACd,WAAW,CAAC,CAACe,MAAM,CAAC,KAAK,CAAC;UACnFZ,uBAAuB,GAAGS,eAAM,CACjCC,UAAU,CAAC,QAAQ,CAAC,CACpBC,MAAM,CAACb,eAAe,CAAC,CACvBc,MAAM,CAAC,KAAK,CAAC;UAAAJ,SAAA,CAAAzE,IAAA;UAIdkE,GAAG,GAAG,IAAAY,gCAAiB,EAACzF,aAAa,EAAEF,GAAG,CAAC;UAACsF,SAAA,CAAAxE,IAAA;UAAA;QAAA;UAAAwE,SAAA,CAAAzE,IAAA;UAAAyE,SAAA,CAAA7B,EAAA,GAAA6B,SAAA;UAE5C,IAAA5B,sBAAe,EAAC1D,GAAG,CAAC+B,GAAG,EAAE9B,GAAG,EAAE,GAAG,EAAAqF,SAAA,CAAA7B,EAAG,CAAC;UAAC,OAAA6B,SAAA,CAAAM,MAAA;QAAA;UAAAZ,IAAA,GAI1BD,GAAG,EAAZE,KAAK,GAAAD,IAAA,CAALC,KAAK;UAAAK,SAAA,CAAAxE,IAAA;UAAA,OACsB,IAAA+E,4BAAY,EAAC7F,GAAG,EAAE+E,GAAG,CAAC;QAAA;UAAAG,mBAAA,GAAAI,SAAA,CAAAjC,IAAA;UAAjD8B,KAAK,GAAAD,mBAAA,CAALC,KAAK;UAAEC,UAAU,GAAAF,mBAAA,CAAVE,UAAU;UAExBhG,EAAE,CAAC6F,KAAK,CAACa,YAAY,CAAC,gBAAgB,EAAE,QAAQ,EAAE;YAC9C,cAAc,EAAEV;UACpB,CAAC,CAAC;UAACE,SAAA,CAAAxE,IAAA;UAAA,OAEG1B,EAAE,CAAC2G,EAAE,CACNC,eAAe,CAAC;YACbf,KAAK,EAALA,KAAK;YACLgB,UAAU,EAAE;cAACC,IAAI,EAAEf,KAAK;cAAEN,mBAAmB,EAAnBA,mBAAmB;cAAEC,uBAAuB,EAAvBA;YAAuB;UAC1E,CAAC,CAAC,CACD1C,IAAI,CAAC,UAAC+D,MAAe,EAAK;YACvBlG,GAAG,CAACmG,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC;cAACF,MAAM,EAANA;YAAM,CAAC,CAAC;UAClC,CAAC,CAAC,SACI,CAAC,UAACG,GAAQ,EAAK;YACjB,IAAA5C,sBAAe,EAAC1D,GAAG,CAAC+B,GAAG,EAAE9B,GAAG,EAAE,GAAG,EAAEqG,GAAG,CAAC;UAC3C,CAAC,CAAC;QAAA;UAAAhB,SAAA,CAAAxE,IAAA;UAAA;QAAA;UAAAwE,SAAA,CAAAzE,IAAA;UAAAyE,SAAA,CAAAiB,EAAA,GAAAjB,SAAA;UAEN,IAAA5B,sBAAe,EAAC1D,GAAG,CAAC+B,GAAG,EAAE9B,GAAG,EAAE,GAAG,EAAAqF,SAAA,CAAAiB,EAAG,CAAC;QAAC;QAAA;UAAA,OAAAjB,SAAA,CAAA/B,IAAA;MAAA;IAAA,GAAAkB,QAAA;EAAA,CAE7C;EAAA,OAAAD,qBAAA,CAAA9E,KAAA,OAAAC,SAAA;AAAA"}
|
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","makeAuthClusterCookieName","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 {\n UNEXPECTED_PIPE_AXIOS_RESPONSE,\n makeAuthClusterCookieName,\n pipeAxiosResponse,\n sendAndLogError,\n} 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 makeAuthClusterCookieName(ytAuthCluster),\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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"}
|
@@ -2,10 +2,11 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.createYTAuthorizationResolver = void 0;
|
4
4
|
const constants_1 = require("../../shared/constants");
|
5
|
+
const utils_1 = require("../utils");
|
5
6
|
function createYTAuthorizationResolver() {
|
6
7
|
return async function resolveYTAuthorization(req, res, next) {
|
7
8
|
const { ytAuthCluster } = req.params;
|
8
|
-
const secret = req.cookies[
|
9
|
+
const secret = req.cookies[(0, utils_1.makeAuthClusterCookieName)(ytAuthCluster)];
|
9
10
|
if (ytAuthCluster) {
|
10
11
|
res.setHeader(constants_1.YT_UI_CLUSTER_HEADER_NAME, ytAuthCluster);
|
11
12
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_constants","require","_interopRequireDefault","obj","__esModule","default","createYTAuthorizationResolver","_resolveYTAuthorization","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","ytAuthCluster","secret","wrap","_callee$","_context","prev","params","cookies","
|
1
|
+
{"version":3,"names":["_constants","require","_utils","_interopRequireDefault","obj","__esModule","default","createYTAuthorizationResolver","_resolveYTAuthorization","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","ytAuthCluster","secret","wrap","_callee$","_context","prev","params","cookies","makeAuthClusterCookieName","setHeader","YT_UI_CLUSTER_HEADER_NAME","yt","ytApiAuthHeaders","Cookie","concat","YT_CYPRESS_COOKIE_NAME","stop","resolveYTAuthorization","_x","_x2","_x3","apply","arguments"],"sources":["yt-auth.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {YT_CYPRESS_COOKIE_NAME, YT_UI_CLUSTER_HEADER_NAME} from '../../shared/constants';\nimport {makeAuthClusterCookieName} from '../utils';\n\nexport function createYTAuthorizationResolver(): AppMiddleware {\n return async function resolveYTAuthorization(req: Request, res: Response, next) {\n const {ytAuthCluster} = req.params;\n\n const secret: string = req.cookies[makeAuthClusterCookieName(ytAuthCluster)];\n\n if (ytAuthCluster) {\n res.setHeader(YT_UI_CLUSTER_HEADER_NAME, ytAuthCluster);\n }\n\n req.yt = {\n ytApiAuthHeaders: {\n Cookie: `${YT_CYPRESS_COOKIE_NAME}=${secret};`,\n },\n };\n\n next();\n };\n}\n"],"mappings":";;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAAkD,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C,SAASG,6BAA6BA,CAAA,EAAkB;EAC3D;IAAA,IAAAC,uBAAA,OAAAC,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAAO,SAAAC,QAAsCC,GAAY,EAAEC,GAAa,EAAEC,IAAI;MAAA,IAAAC,aAAA,EAAAC,MAAA;MAAA,OAAAP,oBAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAL,IAAA;UAAA;YACnEC,aAAa,GAAIH,GAAG,CAACS,MAAM,CAA3BN,aAAa;YAEdC,MAAc,GAAGJ,GAAG,CAACU,OAAO,CAAC,IAAAC,gCAAyB,EAACR,aAAa,CAAC,CAAC;YAE5E,IAAIA,aAAa,EAAE;cACfF,GAAG,CAACW,SAAS,CAACC,oCAAyB,EAAEV,aAAa,CAAC;YAC3D;YAEAH,GAAG,CAACc,EAAE,GAAG;cACLC,gBAAgB,EAAE;gBACdC,MAAM,KAAAC,MAAA,CAAKC,iCAAsB,OAAAD,MAAA,CAAIb,MAAM;cAC/C;YACJ,CAAC;YAEDF,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAK,QAAA,CAAAY,IAAA;QAAA;MAAA,GAAApB,OAAA;IAAA,CACV;IAAA,SAhBqBqB,sBAAsBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAA5B,uBAAA,CAAA6B,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAtBL,sBAAsB;EAAA;AAiBhD"}
|
@@ -23,4 +23,5 @@ export declare function pipeResponse(logMsgPrefix: string, ctx: AppContext, dst:
|
|
23
23
|
}>;
|
24
24
|
export declare function pipeReadableToWriteable(ctx: AppContext, dst: stream.Writable, src: stream.Readable, logMsgPrefix: string): Promise<number>;
|
25
25
|
export declare function sendAndLogError(ctx: AppContext, res: Response, status: number | null, e: Error | AxiosError, extra?: any): Promise<Response<any, Record<string, any>> | undefined>;
|
26
|
+
export declare const makeAuthClusterCookieName: (ytAuthCluster: string) => string;
|
26
27
|
export {};
|
@@ -26,11 +26,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
27
|
};
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
exports.sendAndLogError = exports.pipeReadableToWriteable = exports.pipeResponse = exports.pipeAxiosResponse = exports.pipeAxiosErrorOrFalse = exports.UNEXPECTED_PIPE_AXIOS_ERROR = exports.UNEXPECTED_PIPE_AXIOS_RESPONSE = exports.sendError = exports.sendResponse = exports.prepareErrorToSend = exports.getInterfaceVersion = exports.isLocalModeByEnvironment = exports.isProductionEnv = void 0;
|
29
|
+
exports.makeAuthClusterCookieName = exports.sendAndLogError = exports.pipeReadableToWriteable = exports.pipeResponse = exports.pipeAxiosResponse = exports.pipeAxiosErrorOrFalse = exports.UNEXPECTED_PIPE_AXIOS_ERROR = exports.UNEXPECTED_PIPE_AXIOS_RESPONSE = exports.sendError = exports.sendResponse = exports.prepareErrorToSend = exports.getInterfaceVersion = exports.isLocalModeByEnvironment = exports.isProductionEnv = void 0;
|
30
30
|
const stream = __importStar(require("stream"));
|
31
31
|
const lodash_1 = __importDefault(require("lodash"));
|
32
32
|
const utils_1 = require("../../shared/utils");
|
33
33
|
const ServerFactory_1 = require("../ServerFactory");
|
34
|
+
const constants_1 = require("../../shared/constants");
|
34
35
|
const path_1 = __importDefault(require("path"));
|
35
36
|
function isProductionEnv() {
|
36
37
|
return (0, ServerFactory_1.getApp)().config.appEnv !== 'development';
|
@@ -176,3 +177,7 @@ async function sendAndLogError(ctx, res, status, e, extra = {}) {
|
|
176
177
|
return res.status(status || 500).send({ message: JSON.stringify(e) });
|
177
178
|
}
|
178
179
|
exports.sendAndLogError = sendAndLogError;
|
180
|
+
const makeAuthClusterCookieName = (ytAuthCluster) => {
|
181
|
+
return `${ytAuthCluster}_${constants_1.YT_CYPRESS_COOKIE_NAME}`;
|
182
|
+
};
|
183
|
+
exports.makeAuthClusterCookieName = makeAuthClusterCookieName;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["stream","_interopRequireWildcard","require","_utils","_ServerFactory","_path","_interopRequireDefault","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","isProductionEnv","getApp","config","appEnv","isLocalModeByEnvironment","process","env","APP_ENV","getInterfaceVersion","INIT_CWD","packageJsonPath","path","resolve","version","nodekit","ctx","logError","concat","prepareErrorToSend","res","message","Error","_toString","isYTError","JSON","stringify","sendResponse","data","status","send","sendError","error","errCode","arguments","length","undefined","errData","asAxiosError","isAxiosError","UNEXPECTED_PIPE_AXIOS_RESPONSE","exports","UNEXPECTED_PIPE_AXIOS_ERROR","pipeAxiosErrorOrFalse","_x","_x2","_x3","_pipeAxiosErrorOrFalse","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dst","wrap","_callee$","_context","prev","next","pipeAxiosResponse","response","abrupt","sent","stop","LOG_HEADERS","_x4","_x5","_x6","_pipeAxiosResponse","_callee2","src","logMsgPrefix","transformHeaders","_args2","_callee2$","_context2","v","Readable","pipeResponse","headers","Promise","_x7","_x8","_x9","_x10","_x11","_x12","_pipeResponse","_callee3","headersToLog","pipedDataSize","_args3","_callee3$","_context3","_forEach","value","key","setHeader","_pick","log","pipeReadableToWriteable","headerContentLength","_x13","_x14","_x15","_x16","_pipeReadableToWriteable","_callee4","firstChunk","closePromise","_callee4$","_context4","reject","on","chunk","pipe","sendAndLogError","_x17","_x18","_x19","_x20","_sendAndLogError","_callee5","extra","ae","_ae$response","_args5","_callee5$","_context5","toJSON","append","statusText","mesasge"],"sources":["index.ts"],"sourcesContent":["import * as stream from 'stream';\nimport _ from 'lodash';\nimport type {Response} from 'express';\nimport {AxiosError, AxiosResponse} from 'axios';\nimport {AppContext} from '@gravity-ui/nodekit';\nimport {isYTError} from '../../shared/utils';\nimport {getApp} from '../ServerFactory';\nimport path from 'path';\n\nexport function isProductionEnv() {\n return getApp().config.appEnv !== 'development';\n}\n\nexport function isLocalModeByEnvironment() {\n return process.env.APP_ENV === 'local';\n}\n\nexport function getInterfaceVersion() {\n if (isProductionEnv()) {\n const {INIT_CWD} = process.env;\n const packageJsonPath = INIT_CWD\n ? path.resolve(INIT_CWD, 'package.json')\n : path.resolve('./package.json');\n try {\n /* eslint-disable-next-line global-require, security/detect-non-literal-require */\n return require(packageJsonPath).version;\n } catch (e) {\n getApp().nodekit.ctx.logError(`Failed to get version from ${packageJsonPath}`, e, {\n INIT_CWD,\n packageJsonPath,\n });\n return 'unkonwn';\n }\n } else {\n return 'local';\n }\n}\n\nexport function prepareErrorToSend(e: unknown) {\n const res: Record<string, any> = {\n message: '',\n };\n\n if (e instanceof Error) {\n res.message = _.toString(e);\n } else if (isYTError(e)) {\n return e;\n } else {\n res.message = JSON.stringify(e);\n }\n\n return res;\n}\n\nexport function sendResponse(res: Response, data: object) {\n return res.set('content-type', 'application/json').status(200).send(JSON.stringify(data));\n}\n\nexport function sendError(res: Response, error: unknown, errCode = 500) {\n const errData = prepareErrorToSend(error);\n return res.set('content-type', 'application/json').status(errCode).send(errData);\n}\n\nfunction asAxiosError<T>(e: Error | AxiosError<T>): AxiosError<T> | undefined {\n return (e as AxiosError).isAxiosError ? (e as AxiosError<T>) : undefined;\n}\n\nexport const UNEXPECTED_PIPE_AXIOS_RESPONSE =\n 'Unexpected behavior: response.data should be an instance of stream.Readable';\nexport const UNEXPECTED_PIPE_AXIOS_ERROR =\n 'Unexpected behavior: e.response.data should be an instance of stream.Readable';\n\nexport async function pipeAxiosErrorOrFalse(ctx: AppContext, dst: Response, e: AxiosError) {\n return await pipeAxiosResponse(ctx, dst, e.response, '[Send error]');\n}\n\ninterface PipedResponseSize {\n headerContentLength?: string;\n pipedDataSize: number;\n}\n\nconst LOG_HEADERS = ['x-yt-proxy', 'x-yt-request-id', 'x-yt-trace-id', 'content-length'];\n\nexport async function pipeAxiosResponse(\n ctx: AppContext,\n dst: Response,\n src?: AxiosResponse<stream.Readable | unknown>,\n logMsgPrefix = '',\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n): Promise<PipedResponseSize | undefined> {\n if (src?.data instanceof stream.Readable) {\n return await pipeResponse(\n logMsgPrefix,\n ctx,\n dst,\n src.data,\n src.headers,\n src.status,\n transformHeaders,\n );\n } else {\n return Promise.resolve(undefined);\n }\n}\n\nexport async function pipeResponse(\n logMsgPrefix: string,\n ctx: AppContext,\n dst: Response,\n data: stream.Readable,\n headers?: any,\n status?: number,\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n) {\n dst.status(status ?? 500);\n\n _.forEach(transformHeaders(headers), (value, key) => {\n if (key !== 'content-length' && key !== 'vary' && key !== 'www-authenticate') {\n dst.setHeader(key, value);\n }\n });\n\n const headersToLog = _.pick(headers, LOG_HEADERS);\n ctx.log(logMsgPrefix + ' Headers', headersToLog);\n\n const pipedDataSize = await pipeReadableToWriteable(ctx, dst, data, logMsgPrefix);\n return {headerContentLength: headers['content-length'], pipedDataSize};\n}\n\nexport async function pipeReadableToWriteable(\n ctx: AppContext,\n dst: stream.Writable,\n src: stream.Readable,\n logMsgPrefix: string,\n) {\n let firstChunk = true;\n let pipedDataSize = 0;\n const closePromise = new Promise<void>((resolve, reject) => {\n src.on('data', (chunk) => {\n if (firstChunk) {\n ctx.log(logMsgPrefix + ' TTFB');\n firstChunk = false;\n }\n pipedDataSize += chunk?.length;\n });\n src.on('error', (e: any) => {\n resolve = () => {};\n reject(e);\n });\n src.on('close', () => {\n ctx.log(logMsgPrefix + ' Response stream closed', {\n pipedDataSize,\n });\n resolve();\n });\n });\n src.pipe(dst);\n await closePromise;\n\n return pipedDataSize;\n}\n\nexport async function sendAndLogError(\n ctx: AppContext,\n res: Response,\n status: number | null,\n e: Error | AxiosError,\n extra: any = {},\n) {\n const ae = asAxiosError(e);\n if (ae) {\n ctx.logError('AxiosError', ae.toJSON(), extra);\n if (await pipeAxiosErrorOrFalse(ctx, res, ae)) {\n return;\n }\n\n if (ae.response?.status) {\n _.forEach(ae.response.headers, (value, key) => {\n res.append(key, value);\n });\n return res.status(ae.response.status).send(ae.response.data || ae.response.statusText);\n }\n\n return res.status(504).send({message: _.toString(e)});\n }\n\n ctx.logError('Error', e, extra);\n\n if (e instanceof Error) {\n return res.status(status || 500).send({message: _.toString(e)});\n }\n\n if (typeof e === 'string') {\n return res.status(status || 500).send({mesasge: e});\n }\n\n if (isYTError(e)) {\n return res.status(status || 500).send(e);\n }\n\n return res.status(status || 500).send({message: JSON.stringify(e)});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAuB,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAP,wBAAAO,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAV,uBAAAsB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAEhB,SAASC,eAAeA,CAAA,EAAG;EAC9B,OAAO,IAAAC,qBAAM,EAAC,CAAC,CAACC,MAAM,CAACC,MAAM,KAAK,aAAa;AACnD;AAEO,SAASC,wBAAwBA,CAAA,EAAG;EACvC,OAAOC,OAAO,CAACC,GAAG,CAACC,OAAO,KAAK,OAAO;AAC1C;AAEO,SAASC,mBAAmBA,CAAA,EAAG;EAClC,IAAIR,eAAe,CAAC,CAAC,EAAE;IACnB,IAAOS,QAAQ,GAAIJ,OAAO,CAACC,GAAG,CAAvBG,QAAQ;IACf,IAAMC,eAAe,GAAGD,QAAQ,GAC1BE,aAAI,CAACC,OAAO,CAACH,QAAQ,EAAE,cAAc,CAAC,GACtCE,aAAI,CAACC,OAAO,CAAC,gBAAgB,CAAC;IACpC,IAAI;MACA;MACA,OAAOvC,OAAO,CAACqC,eAAe,CAAC,CAACG,OAAO;IAC3C,CAAC,CAAC,OAAOlC,CAAC,EAAE;MACR,IAAAsB,qBAAM,EAAC,CAAC,CAACa,OAAO,CAACC,GAAG,CAACC,QAAQ,+BAAAC,MAAA,CAA+BP,eAAe,GAAI/B,CAAC,EAAE;QAC9E8B,QAAQ,EAARA,QAAQ;QACRC,eAAe,EAAfA;MACJ,CAAC,CAAC;MACF,OAAO,SAAS;IACpB;EACJ,CAAC,MAAM;IACH,OAAO,OAAO;EAClB;AACJ;AAEO,SAASQ,kBAAkBA,CAACvC,CAAU,EAAE;EAC3C,IAAMwC,GAAwB,GAAG;IAC7BC,OAAO,EAAE;EACb,CAAC;EAED,IAAIzC,CAAC,YAAY0C,KAAK,EAAE;IACpBF,GAAG,CAACC,OAAO,GAAG,IAAAE,kBAAA,EAAW3C,CAAC,CAAC;EAC/B,CAAC,MAAM,IAAI,IAAA4C,gBAAS,EAAC5C,CAAC,CAAC,EAAE;IACrB,OAAOA,CAAC;EACZ,CAAC,MAAM;IACHwC,GAAG,CAACC,OAAO,GAAGI,IAAI,CAACC,SAAS,CAAC9C,CAAC,CAAC;EACnC;EAEA,OAAOwC,GAAG;AACd;AAEO,SAASO,YAAYA,CAACP,GAAa,EAAEQ,IAAY,EAAE;EACtD,OAAOR,GAAG,CAACrB,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC8B,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAACL,IAAI,CAACC,SAAS,CAACE,IAAI,CAAC,CAAC;AAC7F;AAEO,SAASG,SAASA,CAACX,GAAa,EAAEY,KAAc,EAAiB;EAAA,IAAfC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EAClE,IAAMG,OAAO,GAAGlB,kBAAkB,CAACa,KAAK,CAAC;EACzC,OAAOZ,GAAG,CAACrB,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC8B,MAAM,CAACI,OAAO,CAAC,CAACH,IAAI,CAACO,OAAO,CAAC;AACpF;AAEA,SAASC,YAAYA,CAAI1D,CAAwB,EAA6B;EAC1E,OAAQA,CAAC,CAAgB2D,YAAY,GAAI3D,CAAC,GAAqBwD,SAAS;AAC5E;AAEO,IAAMI,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA,GACvC,6EAA6E;AAC1E,IAAME,2BAA2B,GAAAD,OAAA,CAAAC,2BAAA,GACpC,+EAA+E;AAEnF,SAAsBC,qBAAqBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,sBAAA,CAAAC,KAAA,OAAAd,SAAA;AAAA;AAE1C,SAAAa,uBAAA;EAAAA,sBAAA,OAAAE,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAFM,SAAAC,QAAqCpC,GAAe,EAAEqC,GAAa,EAAEzE,CAAa;IAAA,OAAAsE,oBAAA,CAAAI,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAE,IAAA;UAAA,OACxEC,iBAAiB,CAAC3C,GAAG,EAAEqC,GAAG,EAAEzE,CAAC,CAACgF,QAAQ,EAAE,cAAc,CAAC;QAAA;UAAA,OAAAJ,QAAA,CAAAK,MAAA,WAAAL,QAAA,CAAAM,IAAA;QAAA;QAAA;UAAA,OAAAN,QAAA,CAAAO,IAAA;MAAA;IAAA,GAAAX,OAAA;EAAA,CACvE;EAAA,OAAAL,sBAAA,CAAAC,KAAA,OAAAd,SAAA;AAAA;AAOD,IAAM8B,WAAW,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,CAAC;AAExF,SAAsBL,iBAAiBA,CAAAM,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,kBAAA,CAAApB,KAAA,OAAAd,SAAA;AAAA;AAoBtC,SAAAkC,mBAAA;EAAAA,kBAAA,OAAAnB,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CApBM,SAAAkB,SACHrD,GAAe,EACfqC,GAAa,EACbiB,GAA8C;IAAA,IAAAC,YAAA;MAAAC,gBAAA;MAAAC,MAAA,GAAAvC,SAAA;IAAA,OAAAgB,oBAAA,CAAAI,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAC9Ca,YAAY,GAAAE,MAAA,CAAAtC,MAAA,QAAAsC,MAAA,QAAArC,SAAA,GAAAqC,MAAA,MAAG,EAAE;UACjBD,gBAAkD,GAAAC,MAAA,CAAAtC,MAAA,QAAAsC,MAAA,QAAArC,SAAA,GAAAqC,MAAA,MAAG,UAACG,CAAC;YAAA,OAAKA,CAAC;UAAA;UAAA,MAEzD,CAAAN,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAE1C,IAAI,aAAYxD,MAAM,CAACyG,QAAQ;YAAAF,SAAA,CAAAjB,IAAA;YAAA;UAAA;UAAAiB,SAAA,CAAAjB,IAAA;UAAA,OACvBoB,YAAY,CACrBP,YAAY,EACZvD,GAAG,EACHqC,GAAG,EACHiB,GAAG,CAAC1C,IAAI,EACR0C,GAAG,CAACS,OAAO,EACXT,GAAG,CAACzC,MAAM,EACV2C,gBACJ,CAAC;QAAA;UAAA,OAAAG,SAAA,CAAAd,MAAA,WAAAc,SAAA,CAAAb,IAAA;QAAA;UAAA,OAAAa,SAAA,CAAAd,MAAA,WAEMmB,OAAO,CAACnE,OAAO,CAACuB,SAAS,CAAC;QAAA;QAAA;UAAA,OAAAuC,SAAA,CAAAZ,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CAExC;EAAA,OAAAD,kBAAA,CAAApB,KAAA,OAAAd,SAAA;AAAA;AAED,SAAsB4C,YAAYA,CAAAG,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,aAAA,CAAAvC,KAAA,OAAAd,SAAA;AAAA;AAsBjC,SAAAqD,cAAA;EAAAA,aAAA,OAAAtC,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAtBM,SAAAqC,SACHjB,YAAoB,EACpBvD,GAAe,EACfqC,GAAa,EACbzB,IAAqB,EACrBmD,OAAa,EACblD,MAAe;IAAA,IAAA2C,gBAAA;MAAAiB,YAAA;MAAAC,aAAA;MAAAC,MAAA,GAAAzD,SAAA;IAAA,OAAAgB,oBAAA,CAAAI,IAAA,UAAAsC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAApC,IAAA,GAAAoC,SAAA,CAAAnC,IAAA;QAAA;UACfc,gBAAkD,GAAAmB,MAAA,CAAAxD,MAAA,QAAAwD,MAAA,QAAAvD,SAAA,GAAAuD,MAAA,MAAG,UAACf,CAAC;YAAA,OAAKA,CAAC;UAAA;UAE7DvB,GAAG,CAACxB,MAAM,CAACA,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,GAAG,CAAC;UAEzB,IAAAiE,iBAAA,EAAUtB,gBAAgB,CAACO,OAAO,CAAC,EAAE,UAACgB,KAAK,EAAEC,GAAG,EAAK;YACjD,IAAIA,GAAG,KAAK,gBAAgB,IAAIA,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,kBAAkB,EAAE;cAC1E3C,GAAG,CAAC4C,SAAS,CAACD,GAAG,EAAED,KAAK,CAAC;YAC7B;UACJ,CAAC,CAAC;UAEIN,YAAY,GAAG,IAAAS,cAAA,EAAOnB,OAAO,EAAEf,WAAW,CAAC;UACjDhD,GAAG,CAACmF,GAAG,CAAC5B,YAAY,GAAG,UAAU,EAAEkB,YAAY,CAAC;UAACI,SAAA,CAAAnC,IAAA;UAAA,OAErB0C,uBAAuB,CAACpF,GAAG,EAAEqC,GAAG,EAAEzB,IAAI,EAAE2C,YAAY,CAAC;QAAA;UAA3EmB,aAAa,GAAAG,SAAA,CAAA/B,IAAA;UAAA,OAAA+B,SAAA,CAAAhC,MAAA,WACZ;YAACwC,mBAAmB,EAAEtB,OAAO,CAAC,gBAAgB,CAAC;YAAEW,aAAa,EAAbA;UAAa,CAAC;QAAA;QAAA;UAAA,OAAAG,SAAA,CAAA9B,IAAA;MAAA;IAAA,GAAAyB,QAAA;EAAA,CACzE;EAAA,OAAAD,aAAA,CAAAvC,KAAA,OAAAd,SAAA;AAAA;AAED,SAAsBkE,uBAAuBA,CAAAE,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,wBAAA,CAAA1D,KAAA,OAAAd,SAAA;AAAA;AA+B5C,SAAAwE,yBAAA;EAAAA,wBAAA,OAAAzD,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CA/BM,SAAAwD,SACH3F,GAAe,EACfqC,GAAoB,EACpBiB,GAAoB,EACpBC,YAAoB;IAAA,IAAAqC,UAAA,EAAAlB,aAAA,EAAAmB,YAAA;IAAA,OAAA3D,oBAAA,CAAAI,IAAA,UAAAwD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAArD,IAAA;QAAA;UAEhBkD,UAAU,GAAG,IAAI;UACjBlB,aAAa,GAAG,CAAC;UACfmB,YAAY,GAAG,IAAI7B,OAAO,CAAO,UAACnE,OAAO,EAAEmG,MAAM,EAAK;YACxD1C,GAAG,CAAC2C,EAAE,CAAC,MAAM,EAAE,UAACC,KAAK,EAAK;cACtB,IAAIN,UAAU,EAAE;gBACZ5F,GAAG,CAACmF,GAAG,CAAC5B,YAAY,GAAG,OAAO,CAAC;gBAC/BqC,UAAU,GAAG,KAAK;cACtB;cACAlB,aAAa,IAAIwB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE/E,MAAM;YAClC,CAAC,CAAC;YACFmC,GAAG,CAAC2C,EAAE,CAAC,OAAO,EAAE,UAACrI,CAAM,EAAK;cACxBiC,OAAO,GAAG,SAAAA,QAAA,EAAM,CAAC,CAAC;cAClBmG,MAAM,CAACpI,CAAC,CAAC;YACb,CAAC,CAAC;YACF0F,GAAG,CAAC2C,EAAE,CAAC,OAAO,EAAE,YAAM;cAClBjG,GAAG,CAACmF,GAAG,CAAC5B,YAAY,GAAG,yBAAyB,EAAE;gBAC9CmB,aAAa,EAAbA;cACJ,CAAC,CAAC;cACF7E,OAAO,CAAC,CAAC;YACb,CAAC,CAAC;UACN,CAAC,CAAC;UACFyD,GAAG,CAAC6C,IAAI,CAAC9D,GAAG,CAAC;UAAC0D,SAAA,CAAArD,IAAA;UAAA,OACRmD,YAAY;QAAA;UAAA,OAAAE,SAAA,CAAAlD,MAAA,WAEX6B,aAAa;QAAA;QAAA;UAAA,OAAAqB,SAAA,CAAAhD,IAAA;MAAA;IAAA,GAAA4C,QAAA;EAAA,CACvB;EAAA,OAAAD,wBAAA,CAAA1D,KAAA,OAAAd,SAAA;AAAA;AAED,SAAsBkF,eAAeA,CAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,gBAAA,CAAAzE,KAAA,OAAAd,SAAA;AAAA;AAuCpC,SAAAuF,iBAAA;EAAAA,gBAAA,OAAAxE,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAvCM,SAAAuE,SACH1G,GAAe,EACfI,GAAa,EACbS,MAAqB,EACrBjD,CAAqB;IAAA,IAAA+I,KAAA;MAAAC,EAAA;MAAAC,YAAA;MAAAC,MAAA,GAAA5F,SAAA;IAAA,OAAAgB,oBAAA,CAAAI,IAAA,UAAAyE,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAvE,IAAA,GAAAuE,SAAA,CAAAtE,IAAA;QAAA;UACrBiE,KAAU,GAAAG,MAAA,CAAA3F,MAAA,QAAA2F,MAAA,QAAA1F,SAAA,GAAA0F,MAAA,MAAG,CAAC,CAAC;UAETF,EAAE,GAAGtF,YAAY,CAAC1D,CAAC,CAAC;UAAA,KACtBgJ,EAAE;YAAAI,SAAA,CAAAtE,IAAA;YAAA;UAAA;UACF1C,GAAG,CAACC,QAAQ,CAAC,YAAY,EAAE2G,EAAE,CAACK,MAAM,CAAC,CAAC,EAAEN,KAAK,CAAC;UAACK,SAAA,CAAAtE,IAAA;UAAA,OACrCf,qBAAqB,CAAC3B,GAAG,EAAEI,GAAG,EAAEwG,EAAE,CAAC;QAAA;UAAA,KAAAI,SAAA,CAAAlE,IAAA;YAAAkE,SAAA,CAAAtE,IAAA;YAAA;UAAA;UAAA,OAAAsE,SAAA,CAAAnE,MAAA;QAAA;UAAA,OAAAgE,YAAA,GAIzCD,EAAE,CAAChE,QAAQ,cAAAiE,YAAA,eAAXA,YAAA,CAAahG,MAAM;YAAAmG,SAAA,CAAAtE,IAAA;YAAA;UAAA;UACnB,IAAAoC,iBAAA,EAAU8B,EAAE,CAAChE,QAAQ,CAACmB,OAAO,EAAE,UAACgB,KAAK,EAAEC,GAAG,EAAK;YAC3C5E,GAAG,CAAC8G,MAAM,CAAClC,GAAG,EAAED,KAAK,CAAC;UAC1B,CAAC,CAAC;UAAC,OAAAiC,SAAA,CAAAnE,MAAA,WACIzC,GAAG,CAACS,MAAM,CAAC+F,EAAE,CAAChE,QAAQ,CAAC/B,MAAM,CAAC,CAACC,IAAI,CAAC8F,EAAE,CAAChE,QAAQ,CAAChC,IAAI,IAAIgG,EAAE,CAAChE,QAAQ,CAACuE,UAAU,CAAC;QAAA;UAAA,OAAAH,SAAA,CAAAnE,MAAA,WAGnFzC,GAAG,CAACS,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC;YAACT,OAAO,EAAE,IAAAE,kBAAA,EAAW3C,CAAC;UAAC,CAAC,CAAC;QAAA;UAGzDoC,GAAG,CAACC,QAAQ,CAAC,OAAO,EAAErC,CAAC,EAAE+I,KAAK,CAAC;UAAC,MAE5B/I,CAAC,YAAY0C,KAAK;YAAA0G,SAAA,CAAAtE,IAAA;YAAA;UAAA;UAAA,OAAAsE,SAAA,CAAAnE,MAAA,WACXzC,GAAG,CAACS,MAAM,CAACA,MAAM,IAAI,GAAG,CAAC,CAACC,IAAI,CAAC;YAACT,OAAO,EAAE,IAAAE,kBAAA,EAAW3C,CAAC;UAAC,CAAC,CAAC;QAAA;UAAA,MAG/D,OAAOA,CAAC,KAAK,QAAQ;YAAAoJ,SAAA,CAAAtE,IAAA;YAAA;UAAA;UAAA,OAAAsE,SAAA,CAAAnE,MAAA,WACdzC,GAAG,CAACS,MAAM,CAACA,MAAM,IAAI,GAAG,CAAC,CAACC,IAAI,CAAC;YAACsG,OAAO,EAAExJ;UAAC,CAAC,CAAC;QAAA;UAAA,KAGnD,IAAA4C,gBAAS,EAAC5C,CAAC,CAAC;YAAAoJ,SAAA,CAAAtE,IAAA;YAAA;UAAA;UAAA,OAAAsE,SAAA,CAAAnE,MAAA,WACLzC,GAAG,CAACS,MAAM,CAACA,MAAM,IAAI,GAAG,CAAC,CAACC,IAAI,CAAClD,CAAC,CAAC;QAAA;UAAA,OAAAoJ,SAAA,CAAAnE,MAAA,WAGrCzC,GAAG,CAACS,MAAM,CAACA,MAAM,IAAI,GAAG,CAAC,CAACC,IAAI,CAAC;YAACT,OAAO,EAAEI,IAAI,CAACC,SAAS,CAAC9C,CAAC;UAAC,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAoJ,SAAA,CAAAjE,IAAA;MAAA;IAAA,GAAA2D,QAAA;EAAA,CACtE;EAAA,OAAAD,gBAAA,CAAAzE,KAAA,OAAAd,SAAA;AAAA"}
|
1
|
+
{"version":3,"names":["stream","_interopRequireWildcard","require","_utils","_ServerFactory","_constants","_path","_interopRequireDefault","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","isProductionEnv","getApp","config","appEnv","isLocalModeByEnvironment","process","env","APP_ENV","getInterfaceVersion","INIT_CWD","packageJsonPath","path","resolve","version","nodekit","ctx","logError","concat","prepareErrorToSend","res","message","Error","_toString","isYTError","JSON","stringify","sendResponse","data","status","send","sendError","error","errCode","arguments","length","undefined","errData","asAxiosError","isAxiosError","UNEXPECTED_PIPE_AXIOS_RESPONSE","exports","UNEXPECTED_PIPE_AXIOS_ERROR","pipeAxiosErrorOrFalse","_x","_x2","_x3","_pipeAxiosErrorOrFalse","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dst","wrap","_callee$","_context","prev","next","pipeAxiosResponse","response","abrupt","sent","stop","LOG_HEADERS","_x4","_x5","_x6","_pipeAxiosResponse","_callee2","src","logMsgPrefix","transformHeaders","_args2","_callee2$","_context2","v","Readable","pipeResponse","headers","Promise","_x7","_x8","_x9","_x10","_x11","_x12","_pipeResponse","_callee3","headersToLog","pipedDataSize","_args3","_callee3$","_context3","_forEach","value","key","setHeader","_pick","log","pipeReadableToWriteable","headerContentLength","_x13","_x14","_x15","_x16","_pipeReadableToWriteable","_callee4","firstChunk","closePromise","_callee4$","_context4","reject","on","chunk","pipe","sendAndLogError","_x17","_x18","_x19","_x20","_sendAndLogError","_callee5","extra","ae","_ae$response","_args5","_callee5$","_context5","toJSON","append","statusText","mesasge","makeAuthClusterCookieName","ytAuthCluster","YT_CYPRESS_COOKIE_NAME"],"sources":["index.ts"],"sourcesContent":["import * as stream from 'stream';\nimport _ from 'lodash';\nimport type {Response} from 'express';\nimport {AxiosError, AxiosResponse} from 'axios';\nimport {AppContext} from '@gravity-ui/nodekit';\nimport {isYTError} from '../../shared/utils';\nimport {getApp} from '../ServerFactory';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\nimport path from 'path';\n\nexport function isProductionEnv() {\n return getApp().config.appEnv !== 'development';\n}\n\nexport function isLocalModeByEnvironment() {\n return process.env.APP_ENV === 'local';\n}\n\nexport function getInterfaceVersion() {\n if (isProductionEnv()) {\n const {INIT_CWD} = process.env;\n const packageJsonPath = INIT_CWD\n ? path.resolve(INIT_CWD, 'package.json')\n : path.resolve('./package.json');\n try {\n /* eslint-disable-next-line global-require, security/detect-non-literal-require */\n return require(packageJsonPath).version;\n } catch (e) {\n getApp().nodekit.ctx.logError(`Failed to get version from ${packageJsonPath}`, e, {\n INIT_CWD,\n packageJsonPath,\n });\n return 'unkonwn';\n }\n } else {\n return 'local';\n }\n}\n\nexport function prepareErrorToSend(e: unknown) {\n const res: Record<string, any> = {\n message: '',\n };\n\n if (e instanceof Error) {\n res.message = _.toString(e);\n } else if (isYTError(e)) {\n return e;\n } else {\n res.message = JSON.stringify(e);\n }\n\n return res;\n}\n\nexport function sendResponse(res: Response, data: object) {\n return res.set('content-type', 'application/json').status(200).send(JSON.stringify(data));\n}\n\nexport function sendError(res: Response, error: unknown, errCode = 500) {\n const errData = prepareErrorToSend(error);\n return res.set('content-type', 'application/json').status(errCode).send(errData);\n}\n\nfunction asAxiosError<T>(e: Error | AxiosError<T>): AxiosError<T> | undefined {\n return (e as AxiosError).isAxiosError ? (e as AxiosError<T>) : undefined;\n}\n\nexport const UNEXPECTED_PIPE_AXIOS_RESPONSE =\n 'Unexpected behavior: response.data should be an instance of stream.Readable';\nexport const UNEXPECTED_PIPE_AXIOS_ERROR =\n 'Unexpected behavior: e.response.data should be an instance of stream.Readable';\n\nexport async function pipeAxiosErrorOrFalse(ctx: AppContext, dst: Response, e: AxiosError) {\n return await pipeAxiosResponse(ctx, dst, e.response, '[Send error]');\n}\n\ninterface PipedResponseSize {\n headerContentLength?: string;\n pipedDataSize: number;\n}\n\nconst LOG_HEADERS = ['x-yt-proxy', 'x-yt-request-id', 'x-yt-trace-id', 'content-length'];\n\nexport async function pipeAxiosResponse(\n ctx: AppContext,\n dst: Response,\n src?: AxiosResponse<stream.Readable | unknown>,\n logMsgPrefix = '',\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n): Promise<PipedResponseSize | undefined> {\n if (src?.data instanceof stream.Readable) {\n return await pipeResponse(\n logMsgPrefix,\n ctx,\n dst,\n src.data,\n src.headers,\n src.status,\n transformHeaders,\n );\n } else {\n return Promise.resolve(undefined);\n }\n}\n\nexport async function pipeResponse(\n logMsgPrefix: string,\n ctx: AppContext,\n dst: Response,\n data: stream.Readable,\n headers?: any,\n status?: number,\n transformHeaders: (headers: any) => typeof headers = (v) => v,\n) {\n dst.status(status ?? 500);\n\n _.forEach(transformHeaders(headers), (value, key) => {\n if (key !== 'content-length' && key !== 'vary' && key !== 'www-authenticate') {\n dst.setHeader(key, value);\n }\n });\n\n const headersToLog = _.pick(headers, LOG_HEADERS);\n ctx.log(logMsgPrefix + ' Headers', headersToLog);\n\n const pipedDataSize = await pipeReadableToWriteable(ctx, dst, data, logMsgPrefix);\n return {headerContentLength: headers['content-length'], pipedDataSize};\n}\n\nexport async function pipeReadableToWriteable(\n ctx: AppContext,\n dst: stream.Writable,\n src: stream.Readable,\n logMsgPrefix: string,\n) {\n let firstChunk = true;\n let pipedDataSize = 0;\n const closePromise = new Promise<void>((resolve, reject) => {\n src.on('data', (chunk) => {\n if (firstChunk) {\n ctx.log(logMsgPrefix + ' TTFB');\n firstChunk = false;\n }\n pipedDataSize += chunk?.length;\n });\n src.on('error', (e: any) => {\n resolve = () => {};\n reject(e);\n });\n src.on('close', () => {\n ctx.log(logMsgPrefix + ' Response stream closed', {\n pipedDataSize,\n });\n resolve();\n });\n });\n src.pipe(dst);\n await closePromise;\n\n return pipedDataSize;\n}\n\nexport async function sendAndLogError(\n ctx: AppContext,\n res: Response,\n status: number | null,\n e: Error | AxiosError,\n extra: any = {},\n) {\n const ae = asAxiosError(e);\n if (ae) {\n ctx.logError('AxiosError', ae.toJSON(), extra);\n if (await pipeAxiosErrorOrFalse(ctx, res, ae)) {\n return;\n }\n\n if (ae.response?.status) {\n _.forEach(ae.response.headers, (value, key) => {\n res.append(key, value);\n });\n return res.status(ae.response.status).send(ae.response.data || ae.response.statusText);\n }\n\n return res.status(504).send({message: _.toString(e)});\n }\n\n ctx.logError('Error', e, extra);\n\n if (e instanceof Error) {\n return res.status(status || 500).send({message: _.toString(e)});\n }\n\n if (typeof e === 'string') {\n return res.status(status || 500).send({mesasge: e});\n }\n\n if (isYTError(e)) {\n return res.status(status || 500).send(e);\n }\n\n return res.status(status || 500).send({message: JSON.stringify(e)});\n}\n\nexport const makeAuthClusterCookieName = (ytAuthCluster: string) => {\n return `${ytAuthCluster}_${YT_CYPRESS_COOKIE_NAME}`;\n};\n"],"mappings":"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"}
|
@@ -304,6 +304,7 @@ export interface UIFactory {
|
|
304
304
|
nanny_service?: string;
|
305
305
|
yp_cluster?: string;
|
306
306
|
}): string | undefined;
|
307
|
+
renderAppFooter(): React.ReactNode;
|
307
308
|
renderAppNavigation(props: AppNavigationProps): React.ReactElement;
|
308
309
|
createNotificationUrl(clusterConfig?: ClusterConfig): string | undefined;
|
309
310
|
wrapApp(app: React.ReactElement): React.ReactElement;
|
@@ -221,6 +221,9 @@ var uiFactory = {
|
|
221
221
|
getNodeNannyUrl: function getNodeNannyUrl() {
|
222
222
|
return undefined;
|
223
223
|
},
|
224
|
+
renderAppFooter: function renderAppFooter() {
|
225
|
+
return null;
|
226
|
+
},
|
224
227
|
renderAppNavigation: function renderAppNavigation(props) {
|
225
228
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AppNavigationPageLayout.default, (0, _objectSpread2.default)({}, props));
|
226
229
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_AppNavigationPageLayout","_externalAclApi","_SupportComponent","_YTUserSuggest","_docsUrls","_YTSubjectSuggest","_RoleActions","_OperationDetailsMonitorLinks","_acl","_uiSettings","_ytConfig","_SubjectLink","_jsxRuntime","obj","__esModule","default","experimentalPages","uiFactory","getClusterAppearance","cluster","_YT$clusters","YT","clusters","urls","isWatchMen","makeUrlForTransferTask","undefined","makeUrlForNodeIO","makeUrlForTabletCellBundleDashboard","makeUrlForMonitoringDescriptor","makeUrlForUserDashboard","getExtaClusterPages","getExtraRootPages","getExtraReducersAndUrlMapping","getSchedulingExtraTabs","_uiSettings$schedulin","uiSettings","schedulingMonitoring","urlTemplate","_uiSettings$schedulin2","_uiSettings$schedulin3","title","name","getSystemMonitoringTab","systemMonitoring","getVersionMonitoringLink","componentVersionsMonitoring","getMonitoringForAccounts","_uiSettings$accountsM","accountsMonitoring","_uiSettings$accountsM2","getMonitoringForBundle","_uiSettings$bundlesMo","bundlesMonitoring","_uiSettings$bundlesMo2","getMonitoringForOperation","params","_uiSettings$operation","_params$pools","operationsMonitoring","_uiSettings$operation2","hasPoolParameter","indexOf","pools","length","component","OperationDetailMonitorLinks","getMonitorComponentForJob","getMonitoringComponentForChyt","_uiSettings$chytMonit","_ref","chytMonitoring","getStatisticsComponentForAccount","getStatisticsComponentForBundle","renderNavigationExtraActions","renderSchedulingLastDayMaximum","renderComponentsNodeCardTop","getExtraMetaTableItemsForComponentsNode","getExtraMetaTableItemsForPool","getExtraMetaTableItemsForBundle","getComponentsNodeDashboardUrl","renderTransferQuotaNoticeForPool","renderTransferQuotaNoticeForAccount","renderTopRowExtraControlsForAccount","renderTopRowExtraControlsForPool","renderTopRowExtraControlsForBundle","renderAccountsTableItemExtraControls","renderSchedulingTableItemExtraControls","renderBundlesTableItemExtraControls","renderControlAbcService","renderSubjectCard","props","_jsx","DefaultSubjectCard","_objectSpread","makeSupportContent","_x","makeContent","reportBugUrl","SupportComponent","getComponentForConsumerMetrics","getComonentForQueueMetrics","renderTableCellBundleEditorNotice","getNodeDeployUrl","getNodeNannyUrl","renderAppNavigation","AppNavigationPageLayout","createNotificationUrl","wrapApp","app","externalSchemaDescriptionSetup","load","_cluster","_path","Promise","resolve","getAclApi","defaultAclApi","renderAclSubjectsSuggestControl","YTSubjectSuggest","renderRolesLink","getCustomQueryResultTab","getExternalSettings","renderUserSuggest","YTUserSuggest","getExperimentalPages","getAllowedExperimentalPages","docsUrls","getComponentForAclRoleActions","RoleActions","getAclPermissionsSettings","PERMISSIONS_SETTINGS","onChytAliasSqlClick","configureUIFactoryItem","k","redefinition","configureUIFactory","overrides","_forEach","_v","key","_default","exports","Proxy","set","Error","isAbcAllowed","abc","onChange","value","id","slug","Boolean"],"sources":["UIFactory.tsx"],"sourcesContent":["import {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\nimport {MetaTableItem} from './components/MetaTable/MetaTable';\nimport _ from 'lodash';\nimport React from 'react';\nimport {Reducer} from 'redux';\nimport {PathParameters} from './store/location';\nimport {TabletBundle} from './store/reducers/tablet_cell_bundles';\nimport {PoolInfo} from './store/selectors/scheduling/scheduling-pools';\nimport {ClusterConfig, ClusterUiConfig} from '../shared/yt-types';\nimport {ClusterAppearance} from './appearance';\nimport AppNavigationPageLayout, {\n AppNavigationProps,\n} from './containers/AppNavigation/AppNavigationPageLayout';\nimport {ExternalSchemaDescription} from './pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription';\nimport {AclApi, defaultAclApi} from './utils/acl/external-acl-api';\nimport {SubjectsControlProps} from './containers/ACL/SubjectsControl/SubjectsControl';\nimport {SettingsPage} from './containers/SettingsPanel/settings-description';\nimport {SupportComponent} from './containers/SupportComponent/SupportComponent';\nimport {UserSuggestProps} from './containers/UserSuggest/UserSuggest';\nimport {YTUserSuggest} from './containers/UserSuggest/YTUserSuggest';\nimport {DocsUrls, docsUrls} from './constants/docsUrls';\nimport {YTSubjectSuggest} from './containers/ACL/SubjectsControl/YTSubjectSuggest';\nimport RoleActions, {Props as RoleActionsProps} from './containers/ACL/RoleActions';\nimport OperationDetailMonitorLinks from './pages/operations/OperationDetail/tabs/monitor/OperationDetailsMonitorLinks';\nimport {PERMISSIONS_SETTINGS} from './constants/acl';\nimport {uiSettings} from './config/ui-settings';\nimport YT from './config/yt-config';\nimport {PreparedAclSubject} from './utils/acl/acl-types';\nimport {PreparedRole} from './utils/acl';\nimport {UISettingsMonitoring} from '../shared/ui-settings';\nimport {DefaultSubjectCard, type SubjectCardProps} from './components/SubjectLink/SubjectLink';\nimport type {QueryItem} from './pages/query-tracker/module/api';\n\ntype HeaderItemOrPage =\n | {\n href: string;\n\n pageId?: undefined;\n reactComponent?: undefined;\n reducers?: undefined;\n urlMapping?: undefined;\n }\n | {\n pageId?: string;\n reactComponent?: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n reducers?: Record<string, Reducer>;\n urlMapping?: Record<string, PathParameters>;\n\n href?: undefined;\n };\n\nexport type UIFactoryRootPageInfo = HeaderItemOrPage & {\n title: string;\n getVisible?: () => Promise<boolean>;\n};\n\nexport interface UIFactoryClusterPageInfo {\n title: string;\n pageId: string; // also used as urlMatch for <Route path={`/:cluster/${pageId}`} ... />\n svgIcon?: SVGIconData;\n reducers?: Record<string, Reducer<any, any>>;\n reactComponent: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n topRowComponent?: React.ComponentType<any>; // used as component for <Route ... component={topRowComponent} />\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface ExternalSchemaDescriptionResponse {\n url?: string;\n externalSchema?: Map<string, ExternalSchemaDescription>;\n}\n\nexport interface ReducersAndUrlMapping {\n reducers?: Record<string, Reducer<any, any>>;\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface SchedulingExtraTab {\n name: string;\n title?: string;\n component?: React.ComponentType<any>;\n /**\n * Allows to redefine link of corresponding tab\n * Example: https://grafana.mydomain.com?var-pool={ytPool}&var-tree={ytPoolTree}&var-cluster={ytCluster}\n */\n urlTemplate?: string;\n}\n\nexport interface OperationMonitoringTabProps {\n cluster: string;\n operation: {\n id: string;\n startTime?: string;\n finishTime?: string;\n pools?: Array<{pool: string; tree: string; slotIndex?: number}>;\n };\n}\n\nexport type AclRoleActionsType = Partial<Omit<PreparedAclSubject | PreparedRole, 'type'>> & {\n type?: string;\n};\n\nexport interface UIFactory {\n getClusterAppearance(cluster?: string): undefined | ClusterAppearance;\n\n isWatchMen(login: string): boolean;\n\n makeUrlForTransferTask(operation: unknown): string | undefined;\n makeUrlForNodeIO(cluster: string, host?: string): string | undefined;\n makeUrlForTabletCellBundleDashboard(cluster: string, bundle: string): string | undefined;\n makeUrlForMonitoringDescriptor(\n cluster: string,\n timeRange: {from: string; to?: string},\n monitoring_descriptor?: string,\n ): string | undefined;\n makeUrlForUserDashboard(cluster: string, user: string): string | undefined;\n\n getExtaClusterPages(): Array<UIFactoryClusterPageInfo>;\n getExtraRootPages(): Array<UIFactoryRootPageInfo>;\n\n getExtraReducersAndUrlMapping(): undefined | ReducersAndUrlMapping;\n getSchedulingExtraTabs(params: {\n cluster: string;\n pool: string;\n tree: string;\n extraOptions: {\n isRoot?: boolean;\n isEphemeral?: boolean | undefined;\n };\n }): Array<SchedulingExtraTab>;\n getSystemMonitoringTab():\n | {\n title?: string;\n urlTemplate: string;\n }\n | {\n title?: string;\n component: React.ComponentType<any>;\n }\n | undefined;\n getVersionMonitoringLink(cluster: string): UISettingsMonitoring | undefined;\n\n getMonitoringForAccounts():\n | undefined\n | {\n component: React.ComponentType<{cluster: string; account: string}>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForBundle():\n | undefined\n | {\n component: React.ComponentType<{\n cluster: string;\n tablet_cell_bundle: string;\n bundleData: any;\n }>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForOperation(params: OperationMonitoringTabProps['operation']):\n | undefined\n | {\n component: React.ComponentType<OperationMonitoringTabProps>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitorComponentForJob():\n | undefined\n | React.ComponentType<{\n cluster: string;\n job_descriptor: string;\n from?: number;\n to?: number;\n }>;\n\n getMonitoringComponentForChyt():\n | undefined\n | {\n component?: React.ComponentType<{cluster: string; alias: string}>;\n urlTemplate?: string;\n title?: string;\n };\n\n getStatisticsComponentForAccount():\n | undefined\n | React.ComponentType<{\n cluster: string;\n account: string;\n accountSubtreeAllNames: Array<string>;\n theme: string;\n }>;\n\n getStatisticsComponentForBundle():\n | undefined\n | React.ComponentType<{cluster: string; bundle: string; theme: string}>;\n\n renderNavigationExtraActions(params: {\n className?: string;\n cluster: string;\n path: string;\n type: string;\n attributes: unknown;\n }): React.ReactNode;\n\n renderSchedulingLastDayMaximum(props: {\n className?: string;\n cluster: string;\n tree: string;\n title?: string;\n sensor: 'max_operation_count' | 'max_running_operation_count';\n format?(sensorValue?: number): string;\n current?: {value: string; title: string};\n showHint?: boolean;\n showAsLink?: boolean;\n }): React.ReactNode;\n\n renderComponentsNodeCardTop(props: {\n className?: string;\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): React.ReactNode;\n\n getComponentsNodeDashboardUrl(props: {cluster: string; host: string}): {\n url?: string;\n title?: string;\n };\n\n renderTransferQuotaNoticeForPool(props: {\n className?: string;\n pool?: PoolInfo;\n parentPool?: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n isTopLevel?: boolean;\n }): React.ReactNode;\n\n renderTransferQuotaNoticeForAccount(props: {\n className?: string;\n isTopLevel?: boolean;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForAccount(props: {\n className?: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForPool(props: {\n itemClassName?: string;\n pool?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForBundle(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getExtraMetaTableItemsForComponentsNode(props: {\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForPool(props: {\n pool: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForBundle(props: {\n bundle: TabletBundle;\n clusterUiConfig: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n renderAccountsTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n account: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderSchedulingTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n pool: unknown;\n clusterUiConfig: ClusterUiConfig;\n }): React.ReactNode;\n\n renderBundlesTableItemExtraControls(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderControlAbcService<T extends {slug: string; id?: number}>(props: {\n className?: string;\n value?: T;\n onChange: (v?: T) => void;\n placeholder?: string;\n disabled?: boolean;\n }): React.ReactNode;\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode;\n\n makeSupportContent(\n params: {login: string; cluster?: string; buttonToWrap?: React.ReactNode},\n makeContent: (params: {\n supportContent?: React.ReactNode;\n onSupportClick: () => void;\n }) => React.ReactNode,\n ): React.ReactNode;\n\n getComponentForConsumerMetrics():\n | undefined\n | React.ComponentType<{\n cluster: string;\n path: string;\n targetQueue?: string;\n }>;\n\n getComonentForQueueMetrics(): undefined | React.ComponentType<{cluster: string; path: string}>;\n\n renderTableCellBundleEditorNotice(props: {\n bundleData?: {$attributes: unknown};\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getNodeDeployUrl(ypCluster?: string, podId?: string): string | undefined;\n getNodeNannyUrl(params: {\n pod_id?: string;\n nanny_service?: string;\n yp_cluster?: string;\n }): string | undefined;\n\n renderAppNavigation(props: AppNavigationProps): React.ReactElement;\n\n createNotificationUrl(clusterConfig?: ClusterConfig): string | undefined;\n\n wrapApp(app: React.ReactElement): React.ReactElement;\n\n externalSchemaDescriptionSetup: {\n columns?: Record<keyof ExternalSchemaDescription['glossaryEntity'], string>;\n load(cluster: string, path: string): Promise<ExternalSchemaDescriptionResponse>;\n };\n\n getAclApi(): AclApi;\n\n renderAclSubjectsSuggestControl(props: SubjectsControlProps): React.ReactNode;\n\n renderRolesLink(params: {cluster: string; login: string; className?: string}): React.ReactNode;\n\n getCustomQueryResultTab():\n | undefined\n | {\n title: string;\n renderContent: (params: {query: QueryItem}) => React.ReactNode;\n };\n\n getExternalSettings(params: {\n cluster: string;\n login: string;\n isAdmin: boolean;\n }): Array<SettingsPage>;\n\n renderUserSuggest(props: UserSuggestProps): React.ReactNode;\n\n yqlWidgetSetup?: {\n renderButton(props: {className?: string; isSplit?: string}): React.ReactNode;\n renderWidget(props: {cluster: string; path: string; attributes: unknown}): React.ReactNode;\n renderYqlOperationLink(yqlOperationId: string): React.ReactNode;\n };\n\n getExperimentalPages(): string[];\n getAllowedExperimentalPages(login: string): Promise<Array<string>>;\n\n docsUrls: DocsUrls;\n\n getComponentForAclRoleActions(): undefined | React.ComponentType<RoleActionsProps>;\n\n getAclPermissionsSettings(): typeof PERMISSIONS_SETTINGS;\n\n onChytAliasSqlClick(params: {alias: string; cluster: string}): void;\n}\n\nconst experimentalPages: string[] = [];\n\nconst uiFactory: UIFactory = {\n getClusterAppearance(cluster) {\n return YT.clusters[cluster!]?.urls;\n },\n isWatchMen() {\n return false;\n },\n makeUrlForTransferTask() {\n return undefined;\n },\n makeUrlForNodeIO() {\n return undefined;\n },\n makeUrlForTabletCellBundleDashboard() {\n return undefined;\n },\n makeUrlForMonitoringDescriptor() {\n return undefined;\n },\n makeUrlForUserDashboard() {\n return undefined;\n },\n\n getExtaClusterPages() {\n return [];\n },\n getExtraRootPages() {\n return [];\n },\n\n getExtraReducersAndUrlMapping() {\n return undefined;\n },\n\n getSchedulingExtraTabs() {\n if (!uiSettings.schedulingMonitoring?.urlTemplate) {\n return [];\n }\n\n const {urlTemplate, title = 'Monitoring'} = uiSettings.schedulingMonitoring;\n\n return [\n {\n name: 'monitoring',\n title,\n urlTemplate,\n },\n ];\n },\n getSystemMonitoringTab() {\n if (!uiSettings?.systemMonitoring) return undefined;\n return uiSettings.systemMonitoring;\n },\n getVersionMonitoringLink() {\n if (!uiSettings?.componentVersionsMonitoring) return undefined;\n return uiSettings.componentVersionsMonitoring;\n },\n getMonitoringForAccounts() {\n if (!uiSettings?.accountsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.accountsMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForBundle() {\n if (!uiSettings.bundlesMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.bundlesMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForOperation(params) {\n if (!uiSettings.operationsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.operationsMonitoring;\n\n const hasPoolParameter =\n urlTemplate.indexOf('{ytPool}') !== -1 || urlTemplate.indexOf('{ytPoolTree}') !== -1;\n\n if (hasPoolParameter && params.pools?.length! > 1) {\n return {component: OperationDetailMonitorLinks};\n }\n\n return {urlTemplate, title};\n },\n getMonitorComponentForJob() {\n return undefined;\n },\n getMonitoringComponentForChyt() {\n const {urlTemplate, title} = uiSettings.chytMonitoring ?? {};\n if (!urlTemplate) {\n return undefined;\n }\n\n return {urlTemplate, title};\n },\n getStatisticsComponentForAccount() {\n return undefined;\n },\n getStatisticsComponentForBundle() {\n return undefined;\n },\n\n renderNavigationExtraActions() {\n return null;\n },\n\n renderSchedulingLastDayMaximum() {\n return undefined;\n },\n\n renderComponentsNodeCardTop() {\n return undefined;\n },\n\n getExtraMetaTableItemsForComponentsNode() {\n return undefined;\n },\n\n getExtraMetaTableItemsForPool() {\n return undefined;\n },\n\n getExtraMetaTableItemsForBundle() {\n return undefined;\n },\n\n getComponentsNodeDashboardUrl() {\n return {};\n },\n\n renderTransferQuotaNoticeForPool() {\n return undefined;\n },\n\n renderTransferQuotaNoticeForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForPool() {\n return undefined;\n },\n\n renderTopRowExtraControlsForBundle() {\n return undefined;\n },\n\n renderAccountsTableItemExtraControls() {\n return undefined;\n },\n\n renderSchedulingTableItemExtraControls() {\n return undefined;\n },\n\n renderBundlesTableItemExtraControls() {\n return undefined;\n },\n\n renderControlAbcService() {\n return undefined;\n },\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode {\n return <DefaultSubjectCard {...props} />;\n },\n\n makeSupportContent(_x, makeContent) {\n const {reportBugUrl} = uiSettings;\n if (!reportBugUrl) {\n return undefined;\n }\n\n return <SupportComponent makeContent={makeContent} />;\n },\n\n getComponentForConsumerMetrics() {\n return undefined;\n },\n\n getComonentForQueueMetrics() {\n return undefined;\n },\n\n renderTableCellBundleEditorNotice() {\n return undefined;\n },\n\n getNodeDeployUrl() {\n return undefined;\n },\n\n getNodeNannyUrl() {\n return undefined;\n },\n\n renderAppNavigation(props) {\n return <AppNavigationPageLayout {...props} />;\n },\n\n createNotificationUrl() {\n return undefined;\n },\n\n wrapApp(app) {\n return app;\n },\n\n externalSchemaDescriptionSetup: {\n load(_cluster: string, _path: string) {\n return Promise.resolve({});\n },\n },\n\n getAclApi() {\n return defaultAclApi;\n },\n\n renderAclSubjectsSuggestControl(props) {\n return <YTSubjectSuggest {...props} />;\n },\n\n renderRolesLink() {\n return undefined;\n },\n\n getCustomQueryResultTab() {\n return undefined;\n },\n\n getExternalSettings() {\n return [];\n },\n\n renderUserSuggest(props) {\n return <YTUserSuggest {...props} />;\n },\n\n getExperimentalPages() {\n return experimentalPages;\n },\n\n getAllowedExperimentalPages() {\n return Promise.resolve([]);\n },\n\n docsUrls: docsUrls,\n\n getComponentForAclRoleActions() {\n return RoleActions;\n },\n\n getAclPermissionsSettings() {\n return PERMISSIONS_SETTINGS;\n },\n\n onChytAliasSqlClick() {},\n};\n\nfunction configureUIFactoryItem<K extends keyof UIFactory>(k: K, redefinition: UIFactory[K]) {\n uiFactory[k] = redefinition;\n}\n\nexport function configureUIFactory(overrides: Partial<UIFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof UIFactory;\n configureUIFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(uiFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n\nexport function isAbcAllowed() {\n const abc = uiFactory.renderControlAbcService({\n onChange: () => {},\n value: {id: 123, slug: '123'},\n });\n return Boolean(abc);\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_AppNavigationPageLayout","_externalAclApi","_SupportComponent","_YTUserSuggest","_docsUrls","_YTSubjectSuggest","_RoleActions","_OperationDetailsMonitorLinks","_acl","_uiSettings","_ytConfig","_SubjectLink","_jsxRuntime","obj","__esModule","default","experimentalPages","uiFactory","getClusterAppearance","cluster","_YT$clusters","YT","clusters","urls","isWatchMen","makeUrlForTransferTask","undefined","makeUrlForNodeIO","makeUrlForTabletCellBundleDashboard","makeUrlForMonitoringDescriptor","makeUrlForUserDashboard","getExtaClusterPages","getExtraRootPages","getExtraReducersAndUrlMapping","getSchedulingExtraTabs","_uiSettings$schedulin","uiSettings","schedulingMonitoring","urlTemplate","_uiSettings$schedulin2","_uiSettings$schedulin3","title","name","getSystemMonitoringTab","systemMonitoring","getVersionMonitoringLink","componentVersionsMonitoring","getMonitoringForAccounts","_uiSettings$accountsM","accountsMonitoring","_uiSettings$accountsM2","getMonitoringForBundle","_uiSettings$bundlesMo","bundlesMonitoring","_uiSettings$bundlesMo2","getMonitoringForOperation","params","_uiSettings$operation","_params$pools","operationsMonitoring","_uiSettings$operation2","hasPoolParameter","indexOf","pools","length","component","OperationDetailMonitorLinks","getMonitorComponentForJob","getMonitoringComponentForChyt","_uiSettings$chytMonit","_ref","chytMonitoring","getStatisticsComponentForAccount","getStatisticsComponentForBundle","renderNavigationExtraActions","renderSchedulingLastDayMaximum","renderComponentsNodeCardTop","getExtraMetaTableItemsForComponentsNode","getExtraMetaTableItemsForPool","getExtraMetaTableItemsForBundle","getComponentsNodeDashboardUrl","renderTransferQuotaNoticeForPool","renderTransferQuotaNoticeForAccount","renderTopRowExtraControlsForAccount","renderTopRowExtraControlsForPool","renderTopRowExtraControlsForBundle","renderAccountsTableItemExtraControls","renderSchedulingTableItemExtraControls","renderBundlesTableItemExtraControls","renderControlAbcService","renderSubjectCard","props","_jsx","DefaultSubjectCard","_objectSpread","makeSupportContent","_x","makeContent","reportBugUrl","SupportComponent","getComponentForConsumerMetrics","getComonentForQueueMetrics","renderTableCellBundleEditorNotice","getNodeDeployUrl","getNodeNannyUrl","renderAppFooter","renderAppNavigation","AppNavigationPageLayout","createNotificationUrl","wrapApp","app","externalSchemaDescriptionSetup","load","_cluster","_path","Promise","resolve","getAclApi","defaultAclApi","renderAclSubjectsSuggestControl","YTSubjectSuggest","renderRolesLink","getCustomQueryResultTab","getExternalSettings","renderUserSuggest","YTUserSuggest","getExperimentalPages","getAllowedExperimentalPages","docsUrls","getComponentForAclRoleActions","RoleActions","getAclPermissionsSettings","PERMISSIONS_SETTINGS","onChytAliasSqlClick","configureUIFactoryItem","k","redefinition","configureUIFactory","overrides","_forEach","_v","key","_default","exports","Proxy","set","Error","isAbcAllowed","abc","onChange","value","id","slug","Boolean"],"sources":["UIFactory.tsx"],"sourcesContent":["import {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\nimport {MetaTableItem} from './components/MetaTable/MetaTable';\nimport _ from 'lodash';\nimport React from 'react';\nimport {Reducer} from 'redux';\nimport {PathParameters} from './store/location';\nimport {TabletBundle} from './store/reducers/tablet_cell_bundles';\nimport {PoolInfo} from './store/selectors/scheduling/scheduling-pools';\nimport {ClusterConfig, ClusterUiConfig} from '../shared/yt-types';\nimport {ClusterAppearance} from './appearance';\nimport AppNavigationPageLayout, {\n AppNavigationProps,\n} from './containers/AppNavigation/AppNavigationPageLayout';\nimport {ExternalSchemaDescription} from './pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription';\nimport {AclApi, defaultAclApi} from './utils/acl/external-acl-api';\nimport {SubjectsControlProps} from './containers/ACL/SubjectsControl/SubjectsControl';\nimport {SettingsPage} from './containers/SettingsPanel/settings-description';\nimport {SupportComponent} from './containers/SupportComponent/SupportComponent';\nimport {UserSuggestProps} from './containers/UserSuggest/UserSuggest';\nimport {YTUserSuggest} from './containers/UserSuggest/YTUserSuggest';\nimport {DocsUrls, docsUrls} from './constants/docsUrls';\nimport {YTSubjectSuggest} from './containers/ACL/SubjectsControl/YTSubjectSuggest';\nimport RoleActions, {Props as RoleActionsProps} from './containers/ACL/RoleActions';\nimport OperationDetailMonitorLinks from './pages/operations/OperationDetail/tabs/monitor/OperationDetailsMonitorLinks';\nimport {PERMISSIONS_SETTINGS} from './constants/acl';\nimport {uiSettings} from './config/ui-settings';\nimport YT from './config/yt-config';\nimport {PreparedAclSubject} from './utils/acl/acl-types';\nimport {PreparedRole} from './utils/acl';\nimport {UISettingsMonitoring} from '../shared/ui-settings';\nimport {DefaultSubjectCard, type SubjectCardProps} from './components/SubjectLink/SubjectLink';\nimport type {QueryItem} from './pages/query-tracker/module/api';\n\ntype HeaderItemOrPage =\n | {\n href: string;\n\n pageId?: undefined;\n reactComponent?: undefined;\n reducers?: undefined;\n urlMapping?: undefined;\n }\n | {\n pageId?: string;\n reactComponent?: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n reducers?: Record<string, Reducer>;\n urlMapping?: Record<string, PathParameters>;\n\n href?: undefined;\n };\n\nexport type UIFactoryRootPageInfo = HeaderItemOrPage & {\n title: string;\n getVisible?: () => Promise<boolean>;\n};\n\nexport interface UIFactoryClusterPageInfo {\n title: string;\n pageId: string; // also used as urlMatch for <Route path={`/:cluster/${pageId}`} ... />\n svgIcon?: SVGIconData;\n reducers?: Record<string, Reducer<any, any>>;\n reactComponent: React.ComponentType<any>; // used as component for <Route ... component={reactComponent} />\n topRowComponent?: React.ComponentType<any>; // used as component for <Route ... component={topRowComponent} />\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface ExternalSchemaDescriptionResponse {\n url?: string;\n externalSchema?: Map<string, ExternalSchemaDescription>;\n}\n\nexport interface ReducersAndUrlMapping {\n reducers?: Record<string, Reducer<any, any>>;\n urlMapping?: Record<string, PathParameters>;\n}\n\nexport interface SchedulingExtraTab {\n name: string;\n title?: string;\n component?: React.ComponentType<any>;\n /**\n * Allows to redefine link of corresponding tab\n * Example: https://grafana.mydomain.com?var-pool={ytPool}&var-tree={ytPoolTree}&var-cluster={ytCluster}\n */\n urlTemplate?: string;\n}\n\nexport interface OperationMonitoringTabProps {\n cluster: string;\n operation: {\n id: string;\n startTime?: string;\n finishTime?: string;\n pools?: Array<{pool: string; tree: string; slotIndex?: number}>;\n };\n}\n\nexport type AclRoleActionsType = Partial<Omit<PreparedAclSubject | PreparedRole, 'type'>> & {\n type?: string;\n};\n\nexport interface UIFactory {\n getClusterAppearance(cluster?: string): undefined | ClusterAppearance;\n\n isWatchMen(login: string): boolean;\n\n makeUrlForTransferTask(operation: unknown): string | undefined;\n makeUrlForNodeIO(cluster: string, host?: string): string | undefined;\n makeUrlForTabletCellBundleDashboard(cluster: string, bundle: string): string | undefined;\n makeUrlForMonitoringDescriptor(\n cluster: string,\n timeRange: {from: string; to?: string},\n monitoring_descriptor?: string,\n ): string | undefined;\n makeUrlForUserDashboard(cluster: string, user: string): string | undefined;\n\n getExtaClusterPages(): Array<UIFactoryClusterPageInfo>;\n getExtraRootPages(): Array<UIFactoryRootPageInfo>;\n\n getExtraReducersAndUrlMapping(): undefined | ReducersAndUrlMapping;\n getSchedulingExtraTabs(params: {\n cluster: string;\n pool: string;\n tree: string;\n extraOptions: {\n isRoot?: boolean;\n isEphemeral?: boolean | undefined;\n };\n }): Array<SchedulingExtraTab>;\n getSystemMonitoringTab():\n | {\n title?: string;\n urlTemplate: string;\n }\n | {\n title?: string;\n component: React.ComponentType<any>;\n }\n | undefined;\n getVersionMonitoringLink(cluster: string): UISettingsMonitoring | undefined;\n\n getMonitoringForAccounts():\n | undefined\n | {\n component: React.ComponentType<{cluster: string; account: string}>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForBundle():\n | undefined\n | {\n component: React.ComponentType<{\n cluster: string;\n tablet_cell_bundle: string;\n bundleData: any;\n }>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitoringForOperation(params: OperationMonitoringTabProps['operation']):\n | undefined\n | {\n component: React.ComponentType<OperationMonitoringTabProps>;\n urlTemplate?: undefined;\n title?: undefined;\n }\n | {urlTemplate: string; title?: string; component?: undefined};\n getMonitorComponentForJob():\n | undefined\n | React.ComponentType<{\n cluster: string;\n job_descriptor: string;\n from?: number;\n to?: number;\n }>;\n\n getMonitoringComponentForChyt():\n | undefined\n | {\n component?: React.ComponentType<{cluster: string; alias: string}>;\n urlTemplate?: string;\n title?: string;\n };\n\n getStatisticsComponentForAccount():\n | undefined\n | React.ComponentType<{\n cluster: string;\n account: string;\n accountSubtreeAllNames: Array<string>;\n theme: string;\n }>;\n\n getStatisticsComponentForBundle():\n | undefined\n | React.ComponentType<{cluster: string; bundle: string; theme: string}>;\n\n renderNavigationExtraActions(params: {\n className?: string;\n cluster: string;\n path: string;\n type: string;\n attributes: unknown;\n }): React.ReactNode;\n\n renderSchedulingLastDayMaximum(props: {\n className?: string;\n cluster: string;\n tree: string;\n title?: string;\n sensor: 'max_operation_count' | 'max_running_operation_count';\n format?(sensorValue?: number): string;\n current?: {value: string; title: string};\n showHint?: boolean;\n showAsLink?: boolean;\n }): React.ReactNode;\n\n renderComponentsNodeCardTop(props: {\n className?: string;\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): React.ReactNode;\n\n getComponentsNodeDashboardUrl(props: {cluster: string; host: string}): {\n url?: string;\n title?: string;\n };\n\n renderTransferQuotaNoticeForPool(props: {\n className?: string;\n pool?: PoolInfo;\n parentPool?: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n isTopLevel?: boolean;\n }): React.ReactNode;\n\n renderTransferQuotaNoticeForAccount(props: {\n className?: string;\n isTopLevel?: boolean;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForAccount(props: {\n className?: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForPool(props: {\n itemClassName?: string;\n pool?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderTopRowExtraControlsForBundle(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getExtraMetaTableItemsForComponentsNode(props: {\n clusterConfig: ClusterConfig;\n host: string;\n physicalHost: string;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForPool(props: {\n pool: PoolInfo;\n clusterUiConfig?: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n getExtraMetaTableItemsForBundle(props: {\n bundle: TabletBundle;\n clusterUiConfig: ClusterUiConfig;\n }): undefined | Array<MetaTableItem>;\n\n renderAccountsTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n account: string;\n accountAttributes?: unknown;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderSchedulingTableItemExtraControls(props: {\n itemClassName?: string;\n cluster: string;\n pool: unknown;\n clusterUiConfig: ClusterUiConfig;\n }): React.ReactNode;\n\n renderBundlesTableItemExtraControls(props: {\n itemClassName?: string;\n bundle?: TabletBundle;\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n renderControlAbcService<T extends {slug: string; id?: number}>(props: {\n className?: string;\n value?: T;\n onChange: (v?: T) => void;\n placeholder?: string;\n disabled?: boolean;\n }): React.ReactNode;\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode;\n\n makeSupportContent(\n params: {login: string; cluster?: string; buttonToWrap?: React.ReactNode},\n makeContent: (params: {\n supportContent?: React.ReactNode;\n onSupportClick: () => void;\n }) => React.ReactNode,\n ): React.ReactNode;\n\n getComponentForConsumerMetrics():\n | undefined\n | React.ComponentType<{\n cluster: string;\n path: string;\n targetQueue?: string;\n }>;\n\n getComonentForQueueMetrics(): undefined | React.ComponentType<{cluster: string; path: string}>;\n\n renderTableCellBundleEditorNotice(props: {\n bundleData?: {$attributes: unknown};\n clusterUiConfig?: ClusterUiConfig;\n }): React.ReactNode;\n\n getNodeDeployUrl(ypCluster?: string, podId?: string): string | undefined;\n getNodeNannyUrl(params: {\n pod_id?: string;\n nanny_service?: string;\n yp_cluster?: string;\n }): string | undefined;\n\n renderAppFooter(): React.ReactNode;\n\n renderAppNavigation(props: AppNavigationProps): React.ReactElement;\n\n createNotificationUrl(clusterConfig?: ClusterConfig): string | undefined;\n\n wrapApp(app: React.ReactElement): React.ReactElement;\n\n externalSchemaDescriptionSetup: {\n columns?: Record<keyof ExternalSchemaDescription['glossaryEntity'], string>;\n load(cluster: string, path: string): Promise<ExternalSchemaDescriptionResponse>;\n };\n\n getAclApi(): AclApi;\n\n renderAclSubjectsSuggestControl(props: SubjectsControlProps): React.ReactNode;\n\n renderRolesLink(params: {cluster: string; login: string; className?: string}): React.ReactNode;\n\n getCustomQueryResultTab():\n | undefined\n | {\n title: string;\n renderContent: (params: {query: QueryItem}) => React.ReactNode;\n };\n\n getExternalSettings(params: {\n cluster: string;\n login: string;\n isAdmin: boolean;\n }): Array<SettingsPage>;\n\n renderUserSuggest(props: UserSuggestProps): React.ReactNode;\n\n yqlWidgetSetup?: {\n renderButton(props: {className?: string; isSplit?: string}): React.ReactNode;\n renderWidget(props: {cluster: string; path: string; attributes: unknown}): React.ReactNode;\n renderYqlOperationLink(yqlOperationId: string): React.ReactNode;\n };\n\n getExperimentalPages(): string[];\n getAllowedExperimentalPages(login: string): Promise<Array<string>>;\n\n docsUrls: DocsUrls;\n\n getComponentForAclRoleActions(): undefined | React.ComponentType<RoleActionsProps>;\n\n getAclPermissionsSettings(): typeof PERMISSIONS_SETTINGS;\n\n onChytAliasSqlClick(params: {alias: string; cluster: string}): void;\n}\n\nconst experimentalPages: string[] = [];\n\nconst uiFactory: UIFactory = {\n getClusterAppearance(cluster) {\n return YT.clusters[cluster!]?.urls;\n },\n isWatchMen() {\n return false;\n },\n makeUrlForTransferTask() {\n return undefined;\n },\n makeUrlForNodeIO() {\n return undefined;\n },\n makeUrlForTabletCellBundleDashboard() {\n return undefined;\n },\n makeUrlForMonitoringDescriptor() {\n return undefined;\n },\n makeUrlForUserDashboard() {\n return undefined;\n },\n\n getExtaClusterPages() {\n return [];\n },\n getExtraRootPages() {\n return [];\n },\n\n getExtraReducersAndUrlMapping() {\n return undefined;\n },\n\n getSchedulingExtraTabs() {\n if (!uiSettings.schedulingMonitoring?.urlTemplate) {\n return [];\n }\n\n const {urlTemplate, title = 'Monitoring'} = uiSettings.schedulingMonitoring;\n\n return [\n {\n name: 'monitoring',\n title,\n urlTemplate,\n },\n ];\n },\n getSystemMonitoringTab() {\n if (!uiSettings?.systemMonitoring) return undefined;\n return uiSettings.systemMonitoring;\n },\n getVersionMonitoringLink() {\n if (!uiSettings?.componentVersionsMonitoring) return undefined;\n return uiSettings.componentVersionsMonitoring;\n },\n getMonitoringForAccounts() {\n if (!uiSettings?.accountsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.accountsMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForBundle() {\n if (!uiSettings.bundlesMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.bundlesMonitoring;\n return {urlTemplate, title};\n },\n getMonitoringForOperation(params) {\n if (!uiSettings.operationsMonitoring?.urlTemplate) {\n return undefined;\n }\n\n const {urlTemplate, title} = uiSettings.operationsMonitoring;\n\n const hasPoolParameter =\n urlTemplate.indexOf('{ytPool}') !== -1 || urlTemplate.indexOf('{ytPoolTree}') !== -1;\n\n if (hasPoolParameter && params.pools?.length! > 1) {\n return {component: OperationDetailMonitorLinks};\n }\n\n return {urlTemplate, title};\n },\n getMonitorComponentForJob() {\n return undefined;\n },\n getMonitoringComponentForChyt() {\n const {urlTemplate, title} = uiSettings.chytMonitoring ?? {};\n if (!urlTemplate) {\n return undefined;\n }\n\n return {urlTemplate, title};\n },\n getStatisticsComponentForAccount() {\n return undefined;\n },\n getStatisticsComponentForBundle() {\n return undefined;\n },\n\n renderNavigationExtraActions() {\n return null;\n },\n\n renderSchedulingLastDayMaximum() {\n return undefined;\n },\n\n renderComponentsNodeCardTop() {\n return undefined;\n },\n\n getExtraMetaTableItemsForComponentsNode() {\n return undefined;\n },\n\n getExtraMetaTableItemsForPool() {\n return undefined;\n },\n\n getExtraMetaTableItemsForBundle() {\n return undefined;\n },\n\n getComponentsNodeDashboardUrl() {\n return {};\n },\n\n renderTransferQuotaNoticeForPool() {\n return undefined;\n },\n\n renderTransferQuotaNoticeForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForAccount() {\n return undefined;\n },\n\n renderTopRowExtraControlsForPool() {\n return undefined;\n },\n\n renderTopRowExtraControlsForBundle() {\n return undefined;\n },\n\n renderAccountsTableItemExtraControls() {\n return undefined;\n },\n\n renderSchedulingTableItemExtraControls() {\n return undefined;\n },\n\n renderBundlesTableItemExtraControls() {\n return undefined;\n },\n\n renderControlAbcService() {\n return undefined;\n },\n\n renderSubjectCard(props: SubjectCardProps): React.ReactNode {\n return <DefaultSubjectCard {...props} />;\n },\n\n makeSupportContent(_x, makeContent) {\n const {reportBugUrl} = uiSettings;\n if (!reportBugUrl) {\n return undefined;\n }\n\n return <SupportComponent makeContent={makeContent} />;\n },\n\n getComponentForConsumerMetrics() {\n return undefined;\n },\n\n getComonentForQueueMetrics() {\n return undefined;\n },\n\n renderTableCellBundleEditorNotice() {\n return undefined;\n },\n\n getNodeDeployUrl() {\n return undefined;\n },\n\n getNodeNannyUrl() {\n return undefined;\n },\n\n renderAppFooter() {\n return null;\n },\n\n renderAppNavigation(props) {\n return <AppNavigationPageLayout {...props} />;\n },\n\n createNotificationUrl() {\n return undefined;\n },\n\n wrapApp(app) {\n return app;\n },\n\n externalSchemaDescriptionSetup: {\n load(_cluster: string, _path: string) {\n return Promise.resolve({});\n },\n },\n\n getAclApi() {\n return defaultAclApi;\n },\n\n renderAclSubjectsSuggestControl(props) {\n return <YTSubjectSuggest {...props} />;\n },\n\n renderRolesLink() {\n return undefined;\n },\n\n getCustomQueryResultTab() {\n return undefined;\n },\n\n getExternalSettings() {\n return [];\n },\n\n renderUserSuggest(props) {\n return <YTUserSuggest {...props} />;\n },\n\n getExperimentalPages() {\n return experimentalPages;\n },\n\n getAllowedExperimentalPages() {\n return Promise.resolve([]);\n },\n\n docsUrls: docsUrls,\n\n getComponentForAclRoleActions() {\n return RoleActions;\n },\n\n getAclPermissionsSettings() {\n return PERMISSIONS_SETTINGS;\n },\n\n onChytAliasSqlClick() {},\n};\n\nfunction configureUIFactoryItem<K extends keyof UIFactory>(k: K, redefinition: UIFactory[K]) {\n uiFactory[k] = redefinition;\n}\n\nexport function configureUIFactory(overrides: Partial<UIFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof UIFactory;\n configureUIFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(uiFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n\nexport function isAbcAllowed() {\n const abc = uiFactory.renderControlAbcService({\n onChange: () => {},\n value: {id: 123, slug: '123'},\n });\n return Boolean(abc);\n}\n"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["ClusterPage.scss"],"names":[],"mappings":"AAGI;EACI,oCAAA;EACA,iBAAA;AAFR;AAIQ;EACI,iBAAA;AAFZ;AAMI;EACI,cAAA;EACA,6BAAA;AAJR;AAMQ;EACI,cAAA;AAJZ;AAQI;EACI,WAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;
|
1
|
+
{"version":3,"sources":["ClusterPage.scss"],"names":[],"mappings":"AAGI;EACI,oCAAA;EACA,iBAAA;AAFR;AAIQ;EACI,iBAAA;AAFZ;AAMI;EACI,cAAA;EACA,6BAAA;AAJR;AAMQ;EACI,cAAA;AAJZ;AAQI;EACI,cAAA;AANR;AASI;EACI,WAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;AAPR;AASQ;EACI,cAAA;EACA,8CAAA;AAPZ;AAWI;EACI,kBAAA;EACA,yCAAA;EACA,aAAA;EACA,WAAA;EACA,kBAAA;AATR;AAYI;EACI,cAAA;AAVR","file":"ClusterPage.css","sourcesContent":["@import '../../styles/common';\n\n.cluster-page {\n &__panes-wrapper {\n margin-top: var(--app-header-height);\n overflow: visible;\n\n & .flex-split__pane {\n overflow: visible;\n }\n }\n\n &__panes-wrapper_with-pane {\n overflow: auto;\n max-width: calc(100vw - 56px);\n\n & .flex-split__pane {\n overflow: auto;\n }\n }\n\n &__panes-wrapper_with-footer {\n overflow: auto;\n }\n\n &__content-pane {\n width: 100%;\n max-width: 100vw;\n display: flex;\n flex-direction: column;\n\n &_split_yes {\n overflow: auto;\n height: calc(100vh - var(--app-header-height));\n }\n }\n\n &__warning-pane {\n text-align: center;\n background-color: var(--alert-background);\n padding: 15px;\n margin: 5px;\n border-radius: 5px;\n }\n\n &__error {\n margin: 0 20px;\n }\n}\n"],"sourceRoot":""}
|
@@ -55,6 +55,7 @@ var _ExtraClusterPageRoutes = require("./ExtraClusterPageRoutes");
|
|
55
55
|
var _odin = require("../../pages/odin");
|
56
56
|
var _config = require("../../config");
|
57
57
|
require("./ClusterPage.css");
|
58
|
+
var _UIFactory = _interopRequireDefault(require("../../UIFactory"));
|
58
59
|
var _jsxRuntime = require("react/jsx-runtime");
|
59
60
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
60
61
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
@@ -290,6 +291,7 @@ var ClusterPage = /*#__PURE__*/function (_Component) {
|
|
290
291
|
cluster = _this$props3.cluster,
|
291
292
|
splitScreen = _this$props3.splitScreen,
|
292
293
|
clusters = _this$props3.clusters;
|
294
|
+
var footer = _UIFactory.default.renderAppFooter();
|
293
295
|
|
294
296
|
// TODO: put current cluster config into redux state to avoid doing things like these here
|
295
297
|
var clusterConfig = (0, _utils.getClusterConfig)(clusters, cluster);
|
@@ -300,7 +302,8 @@ var ClusterPage = /*#__PURE__*/function (_Component) {
|
|
300
302
|
cluster: cluster
|
301
303
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClusterPageHeader.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_FlexSplitPane.default, {
|
302
304
|
className: b('panes-wrapper', {
|
303
|
-
'with-pane': splitScreen.isSplit
|
305
|
+
'with-pane': splitScreen.isSplit,
|
306
|
+
'with-footer': Boolean(footer)
|
304
307
|
}),
|
305
308
|
paneClassNames: splitScreen.paneClassNames,
|
306
309
|
direction: _FlexSplitPane.default.HORIZONTAL,
|
@@ -319,7 +322,7 @@ var ClusterPage = /*#__PURE__*/function (_Component) {
|
|
319
322
|
}),
|
320
323
|
children: this.renderContent(clusterConfig)
|
321
324
|
}), null]
|
322
|
-
})]
|
325
|
+
}), footer]
|
323
326
|
});
|
324
327
|
}
|
325
328
|
}]);
|