@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
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactRouter","_reactRedux","_bemCnLite","_interopRequireDefault","_BanPage","_MaintenancePage","_HandleRedirect","_Components","_Operations","_Accounts","_Dashboard","_System","_Navigation","_PathViewer","_Tablet","_TabletCellBundles","_GroupsPage","_UsersPage","_Scheduling","_QueryTracker","_Job","_chyt","_ClusterPageHeader","_PageTracker","_PageHead","_ConnectionErrorRegion","_GeneralErrorRegion","_FlexSplitPane","_Error","_index","_menu","_settings","_clusterParams","_global","_global2","_utils","_settings2","_settings3","_SupportedFeaturesUpdater","_RumUiContext","_rumMeasureTypes","_useCluster","_ExtraClusterPageRoutes","_odin","_config","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","b","cn","RedirectToBanIfNeededMemo","React","memo","RedirectToBanIfNeeded","ClusterPage","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","apply","concat","state","width","contentPaneRef","createRef","onResize","splitScreen","props","toolbar","document","querySelector","isSplit","gutterWidth","offset","getElementById","SPLIT_PANE_ID","clientWidth","style","right","window","dispatchEvent","Event","handleSplit","updateWidthModifier","onResizeEnd","sizes","setSetting","SettingName","NAVIGATION","CLUSTER_PAGE_PANE_SIZES","NAMESPACES","getInitialSizes","clusterPagePaneSizes","_createClass","key","value","componentDidMount","cluster","updateCluster","getSnapshotBeforeUpdate","prevProps","pageYOffset","current","scrollTop","componentDidUpdate","prevState","prevScroll","scrollBy","prevCluster","componentWillUnmount","updateTitle","path","page","unmountCluster","_this$contentPaneRef$","currentWidth","Infinity","setState","renderError","clusterConfig","_ref","error","errorType","LOAD_ERROR","CONNECTION","_jsx","ConnectionErrorRegion","id","AUTHENTICATION","GeneralErrorRegion","message","GENERAL","isParamsLoading","_this$props","paramsCluster","renderContent","_this$props2","startingPage","isLoaded","hasError","paramsError","allowChyt","allowQueryTracker","_jsxs","Fragment","children","SupportedFeaturesUpdater","HandleMaintenanceRedirect","to","Page","BAN","Switch","Route","component","BanPage","MAINTENANCE","MaintenancePage","COMPONENTS","Components","OPERATIONS","Operations","JOB","Job","DASHBOARD","Dashboard","SYSTEM","System","ACCOUNTS","Accounts","TABLET_CELL_BUNDLES","CHAOS_CELL_BUNDLES","TabletCellBundles","Navigation","PATH_VIEWER","PathViewer","TABLET","Tablet","USERS","UsersPage","GROUPS","GroupsPage","SCHEDULING","Scheduling","CHYT","ChytPage","QUERIES","QueryTracker","hasOdinPage","odinPageInfo","pageId","reactComponent","Redirect","from","VERSIONS","makeExtraPageRoutes","PageTracker","className","ErrorBlock","render","_this$props3","clusters","getClusterConfig","ClusterPageStopRumMeasure","PageHeadByCluster","ClusterPageHeader","FlexSplitPane","paneClassNames","direction","HORIZONTAL","onSplit","onUnSplit","minSize","ref","split","Component","mapStateToProps","_state$global","global","login","maintenancePageEvent","loadState","paramsLoading","clustersMenu","LOADING_STATUS","LOADED","ERROR","getClusterPagePaneSizes","getStartingPage","isQueryTrackerAllowed","Boolean","getClusterUiConfig","chyt_controller_base_url","mapDispatchToProps","trackVisit","splitMenuItemsAction","joinMenuItemsAction","_default","exports","connect","_ref2","_useSelector","useSelector","blocked","banned","_useLocation","useLocation","pathname","enableRedirect","endsWith","useClusterFromLocation","useRumMeasureStart","type","RumMeasureTypes","CLUSTER_PARAMS","subPage","allowStop","_ref3","_ref4","_slicedToArray","startDeps","useRumMeasureStop","_ref5","_ref6","stopDeps"],"sources":["ClusterPage.js"],"sourcesContent":["import React, {Component, Fragment} from 'react';\nimport {Redirect, Route, Switch, useLocation} from 'react-router';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport BanPage from '../BanPage/BanPage';\nimport MaintenancePage from '../MaintenancePage/MaintenancePage';\nimport HandleMaintenanceRedirect from '../MaintenancePage/HandleRedirect';\nimport Components from '../../pages/components/Components/Components';\nimport Operations from '../../pages/operations/Operations/Operations';\nimport Accounts from '../../pages/accounts/Accounts/Accounts';\nimport Dashboard from '../../pages/dashboard/Dashboard/Dashboard';\nimport {System} from '../../pages/system/System/System';\nimport Navigation from '../../pages/navigation/Navigation/Navigation';\nimport PathViewer from '../../pages/path-viewer/PathViewer';\nimport Tablet from '../../pages/tablet/Tablet';\nimport TabletCellBundles from '../../pages/tablet_cell_bundles/TabletCellBundles';\nimport GroupsPage from '../../pages/groups/GroupsPage';\nimport UsersPage from '../../pages/users/UsersPage';\nimport Scheduling from '../../pages/scheduling/Scheduling/Scheduling';\nimport QueryTracker from '../../pages/query-tracker/QueryTracker';\nimport Job from '../../pages/job/Job';\nimport {ChytPage} from '../../pages/chyt';\n\nimport ClusterPageHeader from '../ClusterPageHeader/ClusterPageHeader';\nimport PageTracker from './PageTracker';\n\nimport {PageHeadByCluster} from '../../components/PageHead/PageHead';\nimport ConnectionErrorRegion from '../../components/PreloaderErrors/ConnectionErrorRegion';\nimport GeneralErrorRegion from '../../components/PreloaderErrors/GeneralErrorRegion';\nimport FlexSplitPane from '../../components/FlexSplitPane/FlexSplitPane';\nimport ErrorBlock from '../../components/Error/Error';\n\nimport {LOADING_STATUS, LOAD_ERROR, Page, SPLIT_PANE_ID} from '../../constants/index';\nimport {joinMenuItemsAction, splitMenuItemsAction, trackVisit} from '../../store/actions/menu';\nimport {setSetting} from '../../store/actions/settings';\nimport {unmountCluster, updateCluster} from '../../store/actions/cluster-params';\nimport {updateTitle} from '../../store/actions/global';\nimport {getClusterUiConfig, isQueryTrackerAllowed} from '../../store/selectors/global';\nimport {getClusterConfig} from '../../utils';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {getClusterPagePaneSizes, getStartingPage} from '../../store/selectors/settings';\nimport SupportedFeaturesUpdater from './SupportedFeaturesUpdater';\nimport {useRumMeasureStart, useRumMeasureStop} from '../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../rum/rum-measure-types';\nimport {useClusterFromLocation} from '../../hooks/use-cluster';\nimport {makeExtraPageRoutes} from './ExtraClusterPageRoutes';\nimport {odinPageInfo} from '../../pages/odin';\nimport {hasOdinPage} from '../../config';\n\nimport './ClusterPage.scss';\n\nconst b = cn('cluster-page');\n\nconst RedirectToBanIfNeededMemo = React.memo(RedirectToBanIfNeeded);\n\nclass ClusterPage extends Component {\n static propTypes = {\n cluster: PropTypes.string,\n\n // from connect\n clusters: PropTypes.object.isRequired,\n clusterPagePaneSizes: PropTypes.array,\n login: PropTypes.string,\n queriesPageAllowed: PropTypes.bool,\n maintenancePageEvent: PropTypes.object,\n startingPage: PropTypes.string.isRequired,\n isLoaded: PropTypes.bool.isRequired,\n hasError: PropTypes.bool.isRequired,\n error: PropTypes.shape({\n errorType: PropTypes.string,\n }).isRequired,\n paramsError: PropTypes.any,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n }).isRequired,\n\n splitMenuItemsAction: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n joinMenuItemsAction: PropTypes.func.isRequired,\n updateCluster: PropTypes.func.isRequired,\n updateTitle: PropTypes.func.isRequired,\n unmountCluster: PropTypes.func.isRequired,\n trackVisit: PropTypes.func.isRequired,\n\n allowChyt: PropTypes.bool,\n allowQueryTracker: PropTypes.bool,\n };\n\n state = {\n width: 'large',\n };\n\n componentDidMount() {\n const {cluster} = this.props;\n this.props.updateCluster(cluster);\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n if (prevProps.splitScreen.isSplit !== this.props.splitScreen.isSplit) {\n return this.props.splitScreen.isSplit\n ? window.pageYOffset\n : this.contentPaneRef.current.scrollTop;\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState, prevScroll) {\n if (prevScroll !== null) {\n if (this.props.splitScreen.isSplit) {\n this.contentPaneRef.current.scrollTop = prevScroll;\n }\n\n window.scrollBy(0, prevScroll);\n }\n\n const {cluster: prevCluster} = prevProps;\n const {cluster} = this.props;\n\n if (cluster !== prevCluster) {\n this.props.updateCluster(cluster);\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: '', page: ''});\n this.props.unmountCluster();\n }\n\n contentPaneRef = React.createRef();\n\n onResize = () => {\n const {splitScreen} = this.props;\n const toolbar = document.querySelector('#elements-toolbar');\n\n if (splitScreen.isSplit && toolbar) {\n const gutterWidth = 10;\n const offset = document.getElementById(SPLIT_PANE_ID).clientWidth + gutterWidth;\n toolbar.style.right = `${offset}px`;\n } else if (toolbar) {\n toolbar.style.right = '0';\n }\n\n window.dispatchEvent(new Event('resize'));\n };\n\n handleSplit = () => {\n this.onResize();\n // fight the table toolbar becoming invisible after toggling YQLWidget and before first scroll\n window.dispatchEvent(new Event('scroll'));\n this.updateWidthModifier();\n };\n\n updateWidthModifier() {\n const currentWidth = this.contentPaneRef.current?.clientWidth || Infinity;\n if (currentWidth <= 720) {\n this.setState({width: 'small'});\n } else if (currentWidth <= 1024) {\n this.setState({width: 'medium'});\n } else {\n this.setState({width: 'large'});\n }\n }\n\n onResizeEnd = (sizes) => {\n this.props.setSetting(\n SettingName.NAVIGATION.CLUSTER_PAGE_PANE_SIZES,\n NAMESPACES.NAVIGATION,\n sizes,\n );\n this.updateWidthModifier();\n };\n\n getInitialSizes = () => {\n return this.props.clusterPagePaneSizes;\n };\n\n renderError(clusterConfig) {\n const {errorType} = this.props.error || {};\n\n switch (errorType) {\n case LOAD_ERROR.CONNECTION:\n return <ConnectionErrorRegion cluster={clusterConfig.id} />;\n case LOAD_ERROR.AUTHENTICATION:\n return (\n <GeneralErrorRegion\n cluster={clusterConfig.id}\n message={\n 'Could not fetch the XSRF token, therefore preventing further operations. Sometimes ' +\n 'token fetching fails due to the network issues. If the problem persists, please report it ' +\n 'via Bug Reporter.'\n }\n />\n );\n case LOAD_ERROR.GENERAL:\n return (\n <GeneralErrorRegion message=\"Unexpected error occurred. If problem persists please report it via Bug Reporter.\" />\n );\n }\n }\n\n isParamsLoading() {\n const {cluster, paramsCluster} = this.props;\n return cluster !== paramsCluster;\n }\n\n renderContent(clusterConfig) {\n const {\n cluster,\n startingPage,\n isLoaded,\n hasError,\n paramsError,\n allowChyt,\n allowQueryTracker,\n } = this.props;\n\n return isLoaded && !this.isParamsLoading() ? (\n <Fragment>\n <SupportedFeaturesUpdater />\n <HandleMaintenanceRedirect />\n <RedirectToBanIfNeededMemo to={`/${cluster}/${Page.BAN}`} />\n <Switch>\n <Route path={`/:cluster/${Page.BAN}`} component={BanPage} />\n <Route path={`/:cluster/${Page.MAINTENANCE}`} component={MaintenancePage} />\n <Route path={`/:cluster/${Page.COMPONENTS}`} component={Components} />\n <Route path={`/:cluster/${Page.OPERATIONS}`} component={Operations} />\n <Route path={`/:cluster/${Page.JOB}`} component={Job} />\n <Route path={`/:cluster/${Page.DASHBOARD}`} component={Dashboard} />\n <Route path={`/:cluster/${Page.SYSTEM}`} component={System} />\n <Route path={`/:cluster/${Page.ACCOUNTS}`} component={Accounts} />\n <Route\n path={[\n `/:cluster/${Page.TABLET_CELL_BUNDLES}`,\n `/:cluster/${Page.CHAOS_CELL_BUNDLES}`,\n ]}\n component={TabletCellBundles}\n />\n <Route path={`/:cluster/${Page.NAVIGATION}`} component={Navigation} />\n <Route path={`/:cluster/${Page.PATH_VIEWER}`} component={PathViewer} />\n <Route path={`/:cluster/${Page.TABLET}`} component={Tablet} />\n <Route path={`/:cluster/${Page.USERS}`} component={UsersPage} />\n <Route path={`/:cluster/${Page.GROUPS}`} component={GroupsPage} />\n <Route path={`/:cluster/${Page.SCHEDULING}`} component={Scheduling} />\n {allowChyt && <Route path={`/:cluster/${Page.CHYT}`} component={ChytPage} />}\n {allowQueryTracker && (\n <Route path={`/:cluster/${Page.QUERIES}`} component={QueryTracker} />\n )}\n {hasOdinPage() && (\n <Route\n path={`/:cluster/${odinPageInfo.pageId}`}\n component={odinPageInfo.reactComponent}\n />\n )}\n\n <Redirect\n from={`/:cluster/${Page.VERSIONS}`}\n to={`/:cluster/${Page.COMPONENTS}/versions`}\n />\n {makeExtraPageRoutes()}\n <Redirect from={`/${cluster}/`} to={`/${cluster}/${startingPage}`} />\n </Switch>\n\n <Route path=\"/:cluster/:page/:tab?\" component={PageTracker} />\n </Fragment>\n ) : (\n <React.Fragment>\n <div className=\"preloader\">\n {hasError ? (\n this.renderError(clusterConfig)\n ) : (\n <p className=\"preloader__loading\">Loading {clusterConfig?.id}...</p>\n )}\n </div>\n <div className={b('error')}>\n {paramsError && <ErrorBlock error={paramsError} />}\n </div>\n </React.Fragment>\n );\n }\n\n render() {\n const {cluster, splitScreen, clusters} = this.props;\n\n // TODO: put current cluster config into redux state to avoid doing things like these here\n const clusterConfig = getClusterConfig(clusters, cluster);\n\n // FIXME: handle case when clusterConfig is undefined due to wrong cluster name\n return (\n <Fragment>\n <ClusterPageStopRumMeasure />\n <PageHeadByCluster cluster={cluster} />\n\n <ClusterPageHeader />\n\n <FlexSplitPane\n className={b('panes-wrapper', {\n 'with-pane': splitScreen.isSplit,\n })}\n paneClassNames={splitScreen.paneClassNames}\n direction={FlexSplitPane.HORIZONTAL}\n onResize={this.onResize}\n onResizeEnd={this.onResizeEnd}\n onSplit={this.handleSplit}\n onUnSplit={this.handleSplit}\n minSize={600}\n getInitialSizes={this.getInitialSizes}\n id={SPLIT_PANE_ID}\n >\n <div\n ref={this.contentPaneRef}\n className={b('content-pane', {\n split: splitScreen.isSplit && 'yes',\n width: this.state.width,\n })}\n >\n {this.renderContent(clusterConfig)}\n </div>\n\n {null}\n </FlexSplitPane>\n </Fragment>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const {\n login,\n maintenancePageEvent,\n splitScreen,\n loadState,\n error,\n paramsCluster,\n paramsLoading,\n paramsError,\n } = state.global;\n\n const clusters = state.clustersMenu.clusters;\n\n return {\n clusters,\n isLoaded: !paramsLoading && loadState === LOADING_STATUS.LOADED,\n hasError: loadState === LOADING_STATUS.ERROR,\n error,\n paramsError,\n login,\n splitScreen,\n maintenancePageEvent,\n clusterPagePaneSizes: getClusterPagePaneSizes(state),\n startingPage: getStartingPage(state),\n paramsCluster,\n allowQueryTracker: isQueryTrackerAllowed(state),\n allowChyt: Boolean(getClusterUiConfig(state).chyt_controller_base_url),\n };\n}\n\nconst mapDispatchToProps = {\n setSetting,\n trackVisit,\n splitMenuItemsAction,\n joinMenuItemsAction,\n updateTitle,\n updateCluster,\n unmountCluster,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ClusterPage);\n\nfunction RedirectToBanIfNeeded({to}) {\n const {blocked, banned} = useSelector((state) => state.global);\n const {pathname} = useLocation();\n const enableRedirect = (banned || blocked) && !pathname.endsWith('/ban');\n\n if (!enableRedirect) {\n return null;\n }\n\n return <Redirect to={to} />;\n}\n\nfunction ClusterPageStopRumMeasure() {\n const loadState = useSelector((state) => state.global.loadState);\n const paramsLoading = useSelector((state) => state.global.paramsLoading);\n\n const isLoaded =\n loadState === LOADING_STATUS.ERROR ||\n (!paramsLoading && loadState === LOADING_STATUS.LOADED);\n\n const cluster = useClusterFromLocation();\n\n useRumMeasureStart({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n subPage: `ui.${cluster}`,\n allowStop: ([isLoaded]) => !isLoaded,\n startDeps: [isLoaded],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n allowStop: ([isLoaded]) => isLoaded,\n stopDeps: [isLoaded],\n });\n return null;\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactRouter","_reactRedux","_bemCnLite","_interopRequireDefault","_BanPage","_MaintenancePage","_HandleRedirect","_Components","_Operations","_Accounts","_Dashboard","_System","_Navigation","_PathViewer","_Tablet","_TabletCellBundles","_GroupsPage","_UsersPage","_Scheduling","_QueryTracker","_Job","_chyt","_ClusterPageHeader","_PageTracker","_PageHead","_ConnectionErrorRegion","_GeneralErrorRegion","_FlexSplitPane","_Error","_index","_menu","_settings","_clusterParams","_global","_global2","_utils","_settings2","_settings3","_SupportedFeaturesUpdater","_RumUiContext","_rumMeasureTypes","_useCluster","_ExtraClusterPageRoutes","_odin","_config","_UIFactory","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","b","cn","RedirectToBanIfNeededMemo","React","memo","RedirectToBanIfNeeded","ClusterPage","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","apply","concat","state","width","contentPaneRef","createRef","onResize","splitScreen","props","toolbar","document","querySelector","isSplit","gutterWidth","offset","getElementById","SPLIT_PANE_ID","clientWidth","style","right","window","dispatchEvent","Event","handleSplit","updateWidthModifier","onResizeEnd","sizes","setSetting","SettingName","NAVIGATION","CLUSTER_PAGE_PANE_SIZES","NAMESPACES","getInitialSizes","clusterPagePaneSizes","_createClass","key","value","componentDidMount","cluster","updateCluster","getSnapshotBeforeUpdate","prevProps","pageYOffset","current","scrollTop","componentDidUpdate","prevState","prevScroll","scrollBy","prevCluster","componentWillUnmount","updateTitle","path","page","unmountCluster","_this$contentPaneRef$","currentWidth","Infinity","setState","renderError","clusterConfig","_ref","error","errorType","LOAD_ERROR","CONNECTION","_jsx","ConnectionErrorRegion","id","AUTHENTICATION","GeneralErrorRegion","message","GENERAL","isParamsLoading","_this$props","paramsCluster","renderContent","_this$props2","startingPage","isLoaded","hasError","paramsError","allowChyt","allowQueryTracker","_jsxs","Fragment","children","SupportedFeaturesUpdater","HandleMaintenanceRedirect","to","Page","BAN","Switch","Route","component","BanPage","MAINTENANCE","MaintenancePage","COMPONENTS","Components","OPERATIONS","Operations","JOB","Job","DASHBOARD","Dashboard","SYSTEM","System","ACCOUNTS","Accounts","TABLET_CELL_BUNDLES","CHAOS_CELL_BUNDLES","TabletCellBundles","Navigation","PATH_VIEWER","PathViewer","TABLET","Tablet","USERS","UsersPage","GROUPS","GroupsPage","SCHEDULING","Scheduling","CHYT","ChytPage","QUERIES","QueryTracker","hasOdinPage","odinPageInfo","pageId","reactComponent","Redirect","from","VERSIONS","makeExtraPageRoutes","PageTracker","className","ErrorBlock","render","_this$props3","clusters","footer","UIFactory","renderAppFooter","getClusterConfig","ClusterPageStopRumMeasure","PageHeadByCluster","ClusterPageHeader","FlexSplitPane","Boolean","paneClassNames","direction","HORIZONTAL","onSplit","onUnSplit","minSize","ref","split","Component","mapStateToProps","_state$global","global","login","maintenancePageEvent","loadState","paramsLoading","clustersMenu","LOADING_STATUS","LOADED","ERROR","getClusterPagePaneSizes","getStartingPage","isQueryTrackerAllowed","getClusterUiConfig","chyt_controller_base_url","mapDispatchToProps","trackVisit","splitMenuItemsAction","joinMenuItemsAction","_default","exports","connect","_ref2","_useSelector","useSelector","blocked","banned","_useLocation","useLocation","pathname","enableRedirect","endsWith","useClusterFromLocation","useRumMeasureStart","type","RumMeasureTypes","CLUSTER_PARAMS","subPage","allowStop","_ref3","_ref4","_slicedToArray","startDeps","useRumMeasureStop","_ref5","_ref6","stopDeps"],"sources":["ClusterPage.js"],"sourcesContent":["import React, {Component, Fragment} from 'react';\nimport {Redirect, Route, Switch, useLocation} from 'react-router';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport BanPage from '../BanPage/BanPage';\nimport MaintenancePage from '../MaintenancePage/MaintenancePage';\nimport HandleMaintenanceRedirect from '../MaintenancePage/HandleRedirect';\nimport Components from '../../pages/components/Components/Components';\nimport Operations from '../../pages/operations/Operations/Operations';\nimport Accounts from '../../pages/accounts/Accounts/Accounts';\nimport Dashboard from '../../pages/dashboard/Dashboard/Dashboard';\nimport {System} from '../../pages/system/System/System';\nimport Navigation from '../../pages/navigation/Navigation/Navigation';\nimport PathViewer from '../../pages/path-viewer/PathViewer';\nimport Tablet from '../../pages/tablet/Tablet';\nimport TabletCellBundles from '../../pages/tablet_cell_bundles/TabletCellBundles';\nimport GroupsPage from '../../pages/groups/GroupsPage';\nimport UsersPage from '../../pages/users/UsersPage';\nimport Scheduling from '../../pages/scheduling/Scheduling/Scheduling';\nimport QueryTracker from '../../pages/query-tracker/QueryTracker';\nimport Job from '../../pages/job/Job';\nimport {ChytPage} from '../../pages/chyt';\n\nimport ClusterPageHeader from '../ClusterPageHeader/ClusterPageHeader';\nimport PageTracker from './PageTracker';\n\nimport {PageHeadByCluster} from '../../components/PageHead/PageHead';\nimport ConnectionErrorRegion from '../../components/PreloaderErrors/ConnectionErrorRegion';\nimport GeneralErrorRegion from '../../components/PreloaderErrors/GeneralErrorRegion';\nimport FlexSplitPane from '../../components/FlexSplitPane/FlexSplitPane';\nimport ErrorBlock from '../../components/Error/Error';\n\nimport {LOADING_STATUS, LOAD_ERROR, Page, SPLIT_PANE_ID} from '../../constants/index';\nimport {joinMenuItemsAction, splitMenuItemsAction, trackVisit} from '../../store/actions/menu';\nimport {setSetting} from '../../store/actions/settings';\nimport {unmountCluster, updateCluster} from '../../store/actions/cluster-params';\nimport {updateTitle} from '../../store/actions/global';\nimport {getClusterUiConfig, isQueryTrackerAllowed} from '../../store/selectors/global';\nimport {getClusterConfig} from '../../utils';\nimport {NAMESPACES, SettingName} from '../../../shared/constants/settings';\nimport {getClusterPagePaneSizes, getStartingPage} from '../../store/selectors/settings';\nimport SupportedFeaturesUpdater from './SupportedFeaturesUpdater';\nimport {useRumMeasureStart, useRumMeasureStop} from '../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../rum/rum-measure-types';\nimport {useClusterFromLocation} from '../../hooks/use-cluster';\nimport {makeExtraPageRoutes} from './ExtraClusterPageRoutes';\nimport {odinPageInfo} from '../../pages/odin';\nimport {hasOdinPage} from '../../config';\n\nimport './ClusterPage.scss';\nimport UIFactory from '../../UIFactory';\n\nconst b = cn('cluster-page');\n\nconst RedirectToBanIfNeededMemo = React.memo(RedirectToBanIfNeeded);\n\nclass ClusterPage extends Component {\n static propTypes = {\n cluster: PropTypes.string,\n\n // from connect\n clusters: PropTypes.object.isRequired,\n clusterPagePaneSizes: PropTypes.array,\n login: PropTypes.string,\n queriesPageAllowed: PropTypes.bool,\n maintenancePageEvent: PropTypes.object,\n startingPage: PropTypes.string.isRequired,\n isLoaded: PropTypes.bool.isRequired,\n hasError: PropTypes.bool.isRequired,\n error: PropTypes.shape({\n errorType: PropTypes.string,\n }).isRequired,\n paramsError: PropTypes.any,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n }).isRequired,\n\n splitMenuItemsAction: PropTypes.func.isRequired,\n setSetting: PropTypes.func.isRequired,\n joinMenuItemsAction: PropTypes.func.isRequired,\n updateCluster: PropTypes.func.isRequired,\n updateTitle: PropTypes.func.isRequired,\n unmountCluster: PropTypes.func.isRequired,\n trackVisit: PropTypes.func.isRequired,\n\n allowChyt: PropTypes.bool,\n allowQueryTracker: PropTypes.bool,\n };\n\n state = {\n width: 'large',\n };\n\n componentDidMount() {\n const {cluster} = this.props;\n this.props.updateCluster(cluster);\n }\n\n getSnapshotBeforeUpdate(prevProps) {\n if (prevProps.splitScreen.isSplit !== this.props.splitScreen.isSplit) {\n return this.props.splitScreen.isSplit\n ? window.pageYOffset\n : this.contentPaneRef.current.scrollTop;\n }\n\n return null;\n }\n\n componentDidUpdate(prevProps, prevState, prevScroll) {\n if (prevScroll !== null) {\n if (this.props.splitScreen.isSplit) {\n this.contentPaneRef.current.scrollTop = prevScroll;\n }\n\n window.scrollBy(0, prevScroll);\n }\n\n const {cluster: prevCluster} = prevProps;\n const {cluster} = this.props;\n\n if (cluster !== prevCluster) {\n this.props.updateCluster(cluster);\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: '', page: ''});\n this.props.unmountCluster();\n }\n\n contentPaneRef = React.createRef();\n\n onResize = () => {\n const {splitScreen} = this.props;\n const toolbar = document.querySelector('#elements-toolbar');\n\n if (splitScreen.isSplit && toolbar) {\n const gutterWidth = 10;\n const offset = document.getElementById(SPLIT_PANE_ID).clientWidth + gutterWidth;\n toolbar.style.right = `${offset}px`;\n } else if (toolbar) {\n toolbar.style.right = '0';\n }\n\n window.dispatchEvent(new Event('resize'));\n };\n\n handleSplit = () => {\n this.onResize();\n // fight the table toolbar becoming invisible after toggling YQLWidget and before first scroll\n window.dispatchEvent(new Event('scroll'));\n this.updateWidthModifier();\n };\n\n updateWidthModifier() {\n const currentWidth = this.contentPaneRef.current?.clientWidth || Infinity;\n if (currentWidth <= 720) {\n this.setState({width: 'small'});\n } else if (currentWidth <= 1024) {\n this.setState({width: 'medium'});\n } else {\n this.setState({width: 'large'});\n }\n }\n\n onResizeEnd = (sizes) => {\n this.props.setSetting(\n SettingName.NAVIGATION.CLUSTER_PAGE_PANE_SIZES,\n NAMESPACES.NAVIGATION,\n sizes,\n );\n this.updateWidthModifier();\n };\n\n getInitialSizes = () => {\n return this.props.clusterPagePaneSizes;\n };\n\n renderError(clusterConfig) {\n const {errorType} = this.props.error || {};\n\n switch (errorType) {\n case LOAD_ERROR.CONNECTION:\n return <ConnectionErrorRegion cluster={clusterConfig.id} />;\n case LOAD_ERROR.AUTHENTICATION:\n return (\n <GeneralErrorRegion\n cluster={clusterConfig.id}\n message={\n 'Could not fetch the XSRF token, therefore preventing further operations. Sometimes ' +\n 'token fetching fails due to the network issues. If the problem persists, please report it ' +\n 'via Bug Reporter.'\n }\n />\n );\n case LOAD_ERROR.GENERAL:\n return (\n <GeneralErrorRegion message=\"Unexpected error occurred. If problem persists please report it via Bug Reporter.\" />\n );\n }\n }\n\n isParamsLoading() {\n const {cluster, paramsCluster} = this.props;\n return cluster !== paramsCluster;\n }\n\n renderContent(clusterConfig) {\n const {\n cluster,\n startingPage,\n isLoaded,\n hasError,\n paramsError,\n allowChyt,\n allowQueryTracker,\n } = this.props;\n\n return isLoaded && !this.isParamsLoading() ? (\n <Fragment>\n <SupportedFeaturesUpdater />\n <HandleMaintenanceRedirect />\n <RedirectToBanIfNeededMemo to={`/${cluster}/${Page.BAN}`} />\n <Switch>\n <Route path={`/:cluster/${Page.BAN}`} component={BanPage} />\n <Route path={`/:cluster/${Page.MAINTENANCE}`} component={MaintenancePage} />\n <Route path={`/:cluster/${Page.COMPONENTS}`} component={Components} />\n <Route path={`/:cluster/${Page.OPERATIONS}`} component={Operations} />\n <Route path={`/:cluster/${Page.JOB}`} component={Job} />\n <Route path={`/:cluster/${Page.DASHBOARD}`} component={Dashboard} />\n <Route path={`/:cluster/${Page.SYSTEM}`} component={System} />\n <Route path={`/:cluster/${Page.ACCOUNTS}`} component={Accounts} />\n <Route\n path={[\n `/:cluster/${Page.TABLET_CELL_BUNDLES}`,\n `/:cluster/${Page.CHAOS_CELL_BUNDLES}`,\n ]}\n component={TabletCellBundles}\n />\n <Route path={`/:cluster/${Page.NAVIGATION}`} component={Navigation} />\n <Route path={`/:cluster/${Page.PATH_VIEWER}`} component={PathViewer} />\n <Route path={`/:cluster/${Page.TABLET}`} component={Tablet} />\n <Route path={`/:cluster/${Page.USERS}`} component={UsersPage} />\n <Route path={`/:cluster/${Page.GROUPS}`} component={GroupsPage} />\n <Route path={`/:cluster/${Page.SCHEDULING}`} component={Scheduling} />\n {allowChyt && <Route path={`/:cluster/${Page.CHYT}`} component={ChytPage} />}\n {allowQueryTracker && (\n <Route path={`/:cluster/${Page.QUERIES}`} component={QueryTracker} />\n )}\n {hasOdinPage() && (\n <Route\n path={`/:cluster/${odinPageInfo.pageId}`}\n component={odinPageInfo.reactComponent}\n />\n )}\n\n <Redirect\n from={`/:cluster/${Page.VERSIONS}`}\n to={`/:cluster/${Page.COMPONENTS}/versions`}\n />\n {makeExtraPageRoutes()}\n <Redirect from={`/${cluster}/`} to={`/${cluster}/${startingPage}`} />\n </Switch>\n\n <Route path=\"/:cluster/:page/:tab?\" component={PageTracker} />\n </Fragment>\n ) : (\n <React.Fragment>\n <div className=\"preloader\">\n {hasError ? (\n this.renderError(clusterConfig)\n ) : (\n <p className=\"preloader__loading\">Loading {clusterConfig?.id}...</p>\n )}\n </div>\n <div className={b('error')}>\n {paramsError && <ErrorBlock error={paramsError} />}\n </div>\n </React.Fragment>\n );\n }\n\n render() {\n const {cluster, splitScreen, clusters} = this.props;\n const footer = UIFactory.renderAppFooter();\n\n // TODO: put current cluster config into redux state to avoid doing things like these here\n const clusterConfig = getClusterConfig(clusters, cluster);\n\n // FIXME: handle case when clusterConfig is undefined due to wrong cluster name\n return (\n <Fragment>\n <ClusterPageStopRumMeasure />\n <PageHeadByCluster cluster={cluster} />\n\n <ClusterPageHeader />\n\n <FlexSplitPane\n className={b('panes-wrapper', {\n 'with-pane': splitScreen.isSplit,\n 'with-footer': Boolean(footer),\n })}\n paneClassNames={splitScreen.paneClassNames}\n direction={FlexSplitPane.HORIZONTAL}\n onResize={this.onResize}\n onResizeEnd={this.onResizeEnd}\n onSplit={this.handleSplit}\n onUnSplit={this.handleSplit}\n minSize={600}\n getInitialSizes={this.getInitialSizes}\n id={SPLIT_PANE_ID}\n >\n <div\n ref={this.contentPaneRef}\n className={b('content-pane', {\n split: splitScreen.isSplit && 'yes',\n width: this.state.width,\n })}\n >\n {this.renderContent(clusterConfig)}\n </div>\n\n {null}\n </FlexSplitPane>\n {footer}\n </Fragment>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const {\n login,\n maintenancePageEvent,\n splitScreen,\n loadState,\n error,\n paramsCluster,\n paramsLoading,\n paramsError,\n } = state.global;\n\n const clusters = state.clustersMenu.clusters;\n\n return {\n clusters,\n isLoaded: !paramsLoading && loadState === LOADING_STATUS.LOADED,\n hasError: loadState === LOADING_STATUS.ERROR,\n error,\n paramsError,\n login,\n splitScreen,\n maintenancePageEvent,\n clusterPagePaneSizes: getClusterPagePaneSizes(state),\n startingPage: getStartingPage(state),\n paramsCluster,\n allowQueryTracker: isQueryTrackerAllowed(state),\n allowChyt: Boolean(getClusterUiConfig(state).chyt_controller_base_url),\n };\n}\n\nconst mapDispatchToProps = {\n setSetting,\n trackVisit,\n splitMenuItemsAction,\n joinMenuItemsAction,\n updateTitle,\n updateCluster,\n unmountCluster,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ClusterPage);\n\nfunction RedirectToBanIfNeeded({to}) {\n const {blocked, banned} = useSelector((state) => state.global);\n const {pathname} = useLocation();\n const enableRedirect = (banned || blocked) && !pathname.endsWith('/ban');\n\n if (!enableRedirect) {\n return null;\n }\n\n return <Redirect to={to} />;\n}\n\nfunction ClusterPageStopRumMeasure() {\n const loadState = useSelector((state) => state.global.loadState);\n const paramsLoading = useSelector((state) => state.global.paramsLoading);\n\n const isLoaded =\n loadState === LOADING_STATUS.ERROR ||\n (!paramsLoading && loadState === LOADING_STATUS.LOADED);\n\n const cluster = useClusterFromLocation();\n\n useRumMeasureStart({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n subPage: `ui.${cluster}`,\n allowStop: ([isLoaded]) => !isLoaded,\n startDeps: [isLoaded],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.CLUSTER_PARAMS,\n allowStop: ([isLoaded]) => isLoaded,\n stopDeps: [isLoaded],\n });\n return null;\n}\n"],"mappings":"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"}
|
@@ -9,6 +9,7 @@ var _reactRedux = require("react-redux");
|
|
9
9
|
var _PageHead = _interopRequireDefault(require("../../components/PageHead/PageHead"));
|
10
10
|
var _ClustersMenuHeader = _interopRequireDefault(require("./ClustersMenuHeader"));
|
11
11
|
var _ClustersMenuBody = _interopRequireDefault(require("./ClustersMenuBody"));
|
12
|
+
var _UIFactory = _interopRequireDefault(require("../../UIFactory"));
|
12
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
13
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14
15
|
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); }
|
@@ -20,7 +21,7 @@ function ClustersMenu() {
|
|
20
21
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.Fragment, {
|
21
22
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PageHead.default, {
|
22
23
|
title: title
|
23
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClustersMenuHeader.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClustersMenuBody.default, {})]
|
24
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClustersMenuHeader.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClustersMenuBody.default, {}), _UIFactory.default.renderAppFooter()]
|
24
25
|
});
|
25
26
|
}
|
26
27
|
var _default = exports.default = /*#__PURE__*/_react.default.memo(ClustersMenu);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactRedux","_PageHead","_interopRequireDefault","_ClustersMenuHeader","_ClustersMenuBody","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ClustersMenu","title","useSelector","state","global","_jsxs","Fragment","children","_jsx","PageHead","ClustersMenuHeader","ClustersMenuBody","_default","exports","React","memo"],"sources":["ClustersMenu.js"],"sourcesContent":["import React, {Fragment} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport PageHead from '../../components/PageHead/PageHead';\n\nimport ClustersMenuHeader from './ClustersMenuHeader';\nimport ClustersMenuBody from './ClustersMenuBody';\n\nfunction ClustersMenu() {\n const title = useSelector((state) => state.global.title);\n\n return (\n <Fragment>\n <PageHead title={title} />\n <ClustersMenuHeader />\n <ClustersMenuBody />\n </Fragment>\n );\n}\n\nexport default React.memo(ClustersMenu);\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,mBAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,iBAAA,GAAAF,sBAAA,CAAAH,OAAA;
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactRedux","_PageHead","_interopRequireDefault","_ClustersMenuHeader","_ClustersMenuBody","_UIFactory","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ClustersMenu","title","useSelector","state","global","_jsxs","Fragment","children","_jsx","PageHead","ClustersMenuHeader","ClustersMenuBody","UIFactory","renderAppFooter","_default","exports","React","memo"],"sources":["ClustersMenu.js"],"sourcesContent":["import React, {Fragment} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport PageHead from '../../components/PageHead/PageHead';\n\nimport ClustersMenuHeader from './ClustersMenuHeader';\nimport ClustersMenuBody from './ClustersMenuBody';\nimport UIFactory from '../../UIFactory';\n\nfunction ClustersMenu() {\n const title = useSelector((state) => state.global.title);\n\n return (\n <Fragment>\n <PageHead title={title} />\n <ClustersMenuHeader />\n <ClustersMenuBody />\n {UIFactory.renderAppFooter()}\n </Fragment>\n );\n}\n\nexport default React.memo(ClustersMenu);\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,mBAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,iBAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,UAAA,GAAAH,sBAAA,CAAAH,OAAA;AAAwC,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAG,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,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,SAAAb,wBAAAa,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAH,UAAA,SAAAG,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAF,OAAA,EAAAE,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAJ,CAAA,UAAAG,CAAA,CAAAE,GAAA,CAAAL,CAAA,OAAAM,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAZ,CAAA,oBAAAY,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAY,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAX,CAAA,EAAAY,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,IAAAZ,CAAA,CAAAY,CAAA,YAAAN,CAAA,CAAAR,OAAA,GAAAE,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAc,GAAA,CAAAjB,CAAA,EAAAM,CAAA,GAAAA,CAAA;AAExC,SAASY,YAAYA,CAAA,EAAG;EACpB,IAAMC,KAAK,GAAG,IAAAC,uBAAW,EAAC,UAACC,KAAK;IAAA,OAAKA,KAAK,CAACC,MAAM,CAACH,KAAK;EAAA,EAAC;EAExD,oBACI,IAAAI,gBAAA,EAACC,eAAQ;IAAAC,QAAA,gBACL,IAAAC,eAAA,EAACC,iBAAQ;MAACR,KAAK,EAAEA;IAAM,CAAE,CAAC,eAC1B,IAAAO,eAAA,EAACE,2BAAkB,IAAE,CAAC,eACtB,IAAAF,eAAA,EAACG,yBAAgB,IAAE,CAAC,EACnBC,kBAAS,CAACC,eAAe,CAAC,CAAC;EAAA,CACtB,CAAC;AAEnB;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAnC,OAAA,GAEA,aAAeoC,cAAK,CAACC,IAAI,CAACjB,YAAY,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["RootPage.scss"],"names":[],"mappings":"AACI;EACI,oCAAA;EACA,gBAAA;AAAR","file":"RootPage.css","sourcesContent":[".yt-root-page {\n &__content {\n margin-top: var(--app-header-height);\n padding-top: 4px;\n }\n}\n"],"sourceRoot":""}
|
1
|
+
{"version":3,"sources":["RootPage.scss"],"names":[],"mappings":"AACI;EACI,YAAA;EACA,oCAAA;EACA,gBAAA;AAAR","file":"RootPage.css","sourcesContent":[".yt-root-page {\n &__content {\n flex-grow: 1;\n margin-top: var(--app-header-height);\n padding-top: 4px;\n }\n}\n"],"sourceRoot":""}
|
@@ -11,6 +11,7 @@ var _PageHead = _interopRequireDefault(require("../../components/PageHead/PageHe
|
|
11
11
|
var _HeaderLinks = require("../../containers/ClustersMenu/HeaderLinks");
|
12
12
|
var _headerLinksItems = require("../../containers/ClustersMenu/header-links-items");
|
13
13
|
require("./RootPage.css");
|
14
|
+
var _UIFactory = _interopRequireDefault(require("../../UIFactory"));
|
14
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16
17
|
var block = (0, _bemCnLite.default)('yt-root-page');
|
@@ -42,7 +43,7 @@ function RootPage(_ref) {
|
|
42
43
|
className: 'elements-main-section',
|
43
44
|
children: children
|
44
45
|
})
|
45
|
-
})]
|
46
|
+
}), _UIFactory.default.renderAppFooter()]
|
46
47
|
});
|
47
48
|
}
|
48
49
|
var _default = exports.default = /*#__PURE__*/_react.default.memo(RootPage);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_bemCnLite","_PageHead","_HeaderLinks","_headerLinksItems","_jsxRuntime","obj","__esModule","default","block","cn","RootPage","_ref","title","children","currentPathname","pathname","window","location","item","React","useMemo","text","_find","ALL_LINKS_ITEMS","_ref2","href","startsWith","_jsxs","Fragment","_jsx","PageHead","HeaderWithLinks","currentUrl","showTitle","className","_default","exports","memo"],"sources":["RootPage.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport PageHead from '../../components/PageHead/PageHead';\nimport {HeaderWithLinks} from '../../containers/ClustersMenu/HeaderLinks';\nimport {ALL_LINKS_ITEMS} from '../../containers/ClustersMenu/header-links-items';\n\nimport './RootPage.scss';\n\nconst block = cn('yt-root-page');\n\ninterface Props {\n title?: string;\n children?: React.ReactNode;\n currentPathname?: string;\n}\n\nfunction RootPage({title, children, currentPathname}: Props) {\n const pathname = currentPathname || window.location.pathname;\n const item = React.useMemo(() => {\n if (title) {\n return {text: title};\n }\n\n return _.find(ALL_LINKS_ITEMS, ({href}) => href?.startsWith(pathname));\n }, [title]);\n\n return (\n <React.Fragment>\n <PageHead title={item?.text || ''} />\n <HeaderWithLinks currentUrl={pathname} showTitle />\n <div className={block('content')}>\n <div className={'elements-main-section'}>{children}</div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default React.memo(RootPage);\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAEAA,OAAA;
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_bemCnLite","_PageHead","_HeaderLinks","_headerLinksItems","_UIFactory","_jsxRuntime","obj","__esModule","default","block","cn","RootPage","_ref","title","children","currentPathname","pathname","window","location","item","React","useMemo","text","_find","ALL_LINKS_ITEMS","_ref2","href","startsWith","_jsxs","Fragment","_jsx","PageHead","HeaderWithLinks","currentUrl","showTitle","className","UIFactory","renderAppFooter","_default","exports","memo"],"sources":["RootPage.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport PageHead from '../../components/PageHead/PageHead';\nimport {HeaderWithLinks} from '../../containers/ClustersMenu/HeaderLinks';\nimport {ALL_LINKS_ITEMS} from '../../containers/ClustersMenu/header-links-items';\n\nimport './RootPage.scss';\nimport UIFactory from '../../UIFactory';\n\nconst block = cn('yt-root-page');\n\ninterface Props {\n title?: string;\n children?: React.ReactNode;\n currentPathname?: string;\n}\n\nfunction RootPage({title, children, currentPathname}: Props) {\n const pathname = currentPathname || window.location.pathname;\n const item = React.useMemo(() => {\n if (title) {\n return {text: title};\n }\n\n return _.find(ALL_LINKS_ITEMS, ({href}) => href?.startsWith(pathname));\n }, [title]);\n\n return (\n <React.Fragment>\n <PageHead title={item?.text || ''} />\n <HeaderWithLinks currentUrl={pathname} showTitle />\n <div className={block('content')}>\n <div className={'elements-main-section'}>{children}</div>\n </div>\n {UIFactory.renderAppFooter()}\n </React.Fragment>\n );\n}\n\nexport default React.memo(RootPage);\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAEAA,OAAA;AACA,IAAAK,UAAA,GAAAN,sBAAA,CAAAC,OAAA;AAAwC,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExC,IAAMG,KAAK,GAAG,IAAAC,kBAAE,EAAC,cAAc,CAAC;AAQhC,SAASC,QAAQA,CAAAC,IAAA,EAA4C;EAAA,IAA1CC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,eAAe,GAAAH,IAAA,CAAfG,eAAe;EAC/C,IAAMC,QAAQ,GAAGD,eAAe,IAAIE,MAAM,CAACC,QAAQ,CAACF,QAAQ;EAC5D,IAAMG,IAAI,GAAGC,cAAK,CAACC,OAAO,CAAC,YAAM;IAC7B,IAAIR,KAAK,EAAE;MACP,OAAO;QAACS,IAAI,EAAET;MAAK,CAAC;IACxB;IAEA,OAAO,IAAAU,cAAA,EAAOC,iCAAe,EAAE,UAAAC,KAAA;MAAA,IAAEC,IAAI,GAAAD,KAAA,CAAJC,IAAI;MAAA,OAAMA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,UAAU,CAACX,QAAQ,CAAC;IAAA,EAAC;EAC1E,CAAC,EAAE,CAACH,KAAK,CAAC,CAAC;EAEX,oBACI,IAAAe,gBAAA,EAACR,cAAK,CAACS,QAAQ;IAAAf,QAAA,gBACX,IAAAgB,eAAA,EAACC,iBAAQ;MAAClB,KAAK,EAAE,CAAAM,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,IAAI,KAAI;IAAG,CAAE,CAAC,eACrC,IAAAQ,eAAA,EAACE,4BAAe;MAACC,UAAU,EAAEjB,QAAS;MAACkB,SAAS;IAAA,CAAE,CAAC,eACnD,IAAAJ,eAAA;MAAKK,SAAS,EAAE1B,KAAK,CAAC,SAAS,CAAE;MAAAK,QAAA,eAC7B,IAAAgB,eAAA;QAAKK,SAAS,EAAE,uBAAwB;QAAArB,QAAA,EAAEA;MAAQ,CAAM;IAAC,CACxD,CAAC,EACLsB,kBAAS,CAACC,eAAe,CAAC,CAAC;EAAA,CAChB,CAAC;AAEzB;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAA/B,OAAA,GAEA,aAAeY,cAAK,CAACoB,IAAI,CAAC7B,QAAQ,CAAC"}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import { YT_CYPRESS_COOKIE_NAME } from '../../shared/constants';
|
2
2
|
import { getClustersFromConfig } from './utils';
|
3
|
+
import { makeAuthClusterCookieName } from '../utils';
|
3
4
|
export function isYtAuthEnabled(config) {
|
4
5
|
return Boolean(config.allowPasswordAuth);
|
5
6
|
}
|
6
7
|
export function YTAuthLogout(res) {
|
7
8
|
var clusters = getClustersFromConfig();
|
8
9
|
res.setHeader('set-cookie', ["".concat(YT_CYPRESS_COOKIE_NAME, "=deleted; Path=/; Max-Age=0;")].concat(Object.keys(clusters).map(function (cluster) {
|
9
|
-
return "".concat(cluster
|
10
|
+
return "".concat(makeAuthClusterCookieName(cluster), "=deleted; Path=/; Max-Age=0;");
|
10
11
|
})));
|
11
12
|
}
|
12
13
|
// #sourceMappingURL=yt-auth.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["YT_CYPRESS_COOKIE_NAME","getClustersFromConfig","isYtAuthEnabled","config","Boolean","allowPasswordAuth","YTAuthLogout","res","clusters","setHeader","concat","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":["YT_CYPRESS_COOKIE_NAME","getClustersFromConfig","makeAuthClusterCookieName","isYtAuthEnabled","config","Boolean","allowPasswordAuth","YTAuthLogout","res","clusters","setHeader","concat","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';\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,SAAQA,sBAAsB,QAAO,wBAAwB;AAC7D,SAAQC,qBAAqB,QAAO,SAAS;AAC7C,SAAQC,yBAAyB,QAAO,UAAU;AAElD,OAAO,SAASC,eAAeA,CAACC,MAAiB,EAAE;EAC/C,OAAOC,OAAO,CAACD,MAAM,CAACE,iBAAiB,CAAC;AAC5C;AAEA,OAAO,SAASC,YAAYA,CAACC,GAAa,EAAE;EACxC,IAAMC,QAAQ,GAAGR,qBAAqB,CAAC,CAAC;EAExCO,GAAG,CAACE,SAAS,CACT,YAAY,EACZ,IAAAC,MAAA,CAAIX,sBAAsB,kCAA+B,CAACW,MAAM,CAC5DC,MAAM,CAACC,IAAI,CAACJ,QAAQ,CAAC,CAACK,GAAG,CACrB,UAACC,OAAO;IAAA,UAAAJ,MAAA,CAAQT,yBAAyB,CAACa,OAAO,CAAC;EAAA,CACtD,CACJ,CACJ,CAAC;AACL"}
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import {
|
2
|
-
import { sendError, sendResponse } from '../utils';
|
1
|
+
import { makeAuthClusterCookieName, sendError, sendResponse } from '../utils';
|
3
2
|
import { getVersions } from '../components/cluster-queries';
|
4
3
|
import { getClustersFromConfig } from '../components/utils';
|
5
4
|
export function clusterVersions(req, res) {
|
@@ -17,7 +16,7 @@ export function clusterAuthStatus(req, res) {
|
|
17
16
|
var clusters = getClustersFromConfig();
|
18
17
|
data = Object.keys(clusters).reduce(function (ret, cluster) {
|
19
18
|
ret[cluster] = {
|
20
|
-
authorized: Boolean(req.cookies[
|
19
|
+
authorized: Boolean(req.cookies[makeAuthClusterCookieName(cluster)])
|
21
20
|
};
|
22
21
|
return ret;
|
23
22
|
}, {});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["makeAuthClusterCookieName","sendError","sendResponse","getVersions","getClustersFromConfig","clusterVersions","req","res","clusters","then","data","error","clusterAuthStatus","allowPasswordAuth","ctx","config","Object","keys","reduce","ret","cluster","authorized","Boolean","cookies","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,SAAQA,yBAAyB,EAAEC,SAAS,EAAEC,YAAY,QAAO,UAAU;AAC3E,SAAQC,WAAW,QAAO,+BAA+B;AACzD,SAAQC,qBAAqB,QAAO,qBAAqB;AAEzD,OAAO,SAASC,eAAeA,CAACC,GAAY,EAAEC,GAAa,EAAE;EACzD,IAAMC,QAAQ,GAAGJ,qBAAqB,CAAC,CAAC;EAExCD,WAAW,CAACG,GAAG,EAAEE,QAAQ,CAAC,CACrBC,IAAI,CAAC,UAACC,IAAQ;IAAA,OAAKR,YAAY,CAACK,GAAG,EAAEG,IAAI,CAAC;EAAA,EAAC,SACtC,CAAC,UAACC,KAAU;IAAA,OAAKV,SAAS,CAACM,GAAG,EAAEI,KAAK,CAAC;EAAA,EAAC;AACrD;AAIA,OAAO,SAASC,iBAAiBA,CAACN,GAAY,EAAEC,GAAa,EAAE;EAC3D,IAAMM,iBAAiB,GAAGP,GAAG,CAACQ,GAAG,CAACC,MAAM,CAACF,iBAAiB;EAE1D,IAAIH,IAAI,GAAG,CAAC,CAAC;EAEb,IAAIG,iBAAiB,EAAE;IACnB,IAAML,QAAQ,GAAGJ,qBAAqB,CAAC,CAAC;IAExCM,IAAI,GAAGM,MAAM,CAACC,IAAI,CAACT,QAAQ,CAAC,CAACU,MAAM,CAAC,UAACC,GAAG,EAAEC,OAAO,EAAK;MAClDD,GAAG,CAACC,OAAO,CAAC,GAAG;QACXC,UAAU,EAAEC,OAAO,CAAChB,GAAG,CAACiB,OAAO,CAACvB,yBAAyB,CAACoB,OAAO,CAAC,CAAC;MACvE,CAAC;MAED,OAAOD,GAAG;IACd,CAAC,EAAE,CAAC,CAAsB,CAAC;EAC/B,CAAC,MAAM;IACH,IAAMX,SAAQ,GAAGJ,qBAAqB,CAAC,CAAC;IAExCM,IAAI,GAAGM,MAAM,CAACC,IAAI,CAACT,SAAQ,CAAC,CAACU,MAAM,CAAC,UAACC,GAAG,EAAEK,WAAW,EAAK;MACtDL,GAAG,CAACK,WAAW,CAAC,GAAG;QAACH,UAAU,EAAE;MAAI,CAAC;MAErC,OAAOF,GAAG;IACd,CAAC,EAAE,CAAC,CAAsB,CAAC;EAC/B;EAEAjB,YAAY,CAACK,GAAG,EAAEG,IAAI,CAAC;AAC3B"}
|
@@ -6,7 +6,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
6
|
import axios from 'axios';
|
7
7
|
import { YT_CYPRESS_COOKIE_NAME } from '../../shared/constants';
|
8
8
|
import { getUserYTApiSetup, getYTApiClusterSetup } from '../components/requestsSetup';
|
9
|
-
import { UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError } from '../utils';
|
9
|
+
import { UNEXPECTED_PIPE_AXIOS_RESPONSE, makeAuthClusterCookieName, pipeAxiosResponse, sendAndLogError } from '../utils';
|
10
10
|
import crypto from 'crypto';
|
11
11
|
|
12
12
|
// @ts-ignore
|
@@ -55,7 +55,7 @@ function _handleLogin() {
|
|
55
55
|
headers['set-cookie'] = headers['set-cookie'].reduce(function (ret, item) {
|
56
56
|
ret.push(item);
|
57
57
|
if (item.startsWith(YT_CYPRESS_COOKIE_NAME)) {
|
58
|
-
ret.push(item.replace(YT_CYPRESS_COOKIE_NAME,
|
58
|
+
ret.push(item.replace(YT_CYPRESS_COOKIE_NAME, makeAuthClusterCookieName(ytAuthCluster)));
|
59
59
|
}
|
60
60
|
return ret;
|
61
61
|
}, []);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["axios","YT_CYPRESS_COOKIE_NAME","getUserYTApiSetup","getYTApiClusterSetup","UNEXPECTED_PIPE_AXIOS_RESPONSE","pipeAxiosResponse","sendAndLogError","crypto","ytLib","getXSRFToken","yt","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","concat","Buffer","from","toString","request","url","method","headers","_objectSpread","ctx","getMetadata","Authorization","timeout","responseType","then","_ref2","_callee","response","pipedSize","_callee$","_context","undefined","reduce","ret","item","push","startsWith","replace","removeSecureFlagIfOriginInsecure","sent","stop","_x5","t0","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","createHash","update","digest","abrupt","createOption","v4","setUserPassword","parameters","user","result","status","send","err","t1"],"sources":["login.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport axios from 'axios';\nimport _ from 'lodash';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\nimport {getUserYTApiSetup, getYTApiClusterSetup} from '../components/requestsSetup';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport crypto from 'crypto';\n\n// @ts-ignore\nimport ytLib from '@ytsaurus/javascript-wrapper';\nimport {getXSRFToken} from '../components/cluster-queries';\n\nconst yt = ytLib();\n\nexport async function handleLogin(req: Request, res: Response) {\n try {\n const {ytAuthCluster} = req.params;\n\n const {username, password} = JSON.parse(req.body) || {};\n if (!username || !password) {\n throw new Error('Username and password must not be empty');\n }\n\n const {proxyBaseUrl} = getYTApiClusterSetup(ytAuthCluster);\n const requestUrl = `${proxyBaseUrl}/login`;\n\n const basicAuth = Buffer.from(`${username}:${password}`).toString('base64');\n\n await axios\n .request({\n url: requestUrl,\n method: req.method as any,\n headers: {...req.ctx.getMetadata(), Authorization: `Basic ${basicAuth}`},\n timeout: 10000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(\n req.ctx,\n res,\n response,\n undefined,\n (headers: Record<string, string[]>) => {\n if (headers['set-cookie']) {\n headers['set-cookie'] = headers['set-cookie'].reduce<string[]>(\n (ret, item) => {\n ret.push(item);\n\n if (item.startsWith(YT_CYPRESS_COOKIE_NAME)) {\n ret.push(\n item.replace(\n YT_CYPRESS_COOKIE_NAME,\n `${ytAuthCluster}:${YT_CYPRESS_COOKIE_NAME}`,\n ),\n );\n }\n\n return ret;\n },\n [],\n );\n }\n\n return removeSecureFlagIfOriginInsecure(req, headers);\n },\n );\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 500, e);\n }\n}\n\nfunction removeSecureFlagIfOriginInsecure(\n req: Request,\n headers: Record<string, string | Array<string>>,\n) {\n const {ytAuthAllowInsecure} = req.ctx.config;\n const {origin} = req.headers;\n\n if (!ytAuthAllowInsecure || 'string' !== typeof origin || !origin.startsWith('http://')) {\n return headers;\n }\n\n return _.reduce(\n headers,\n (acc, v, k) => {\n if (k !== 'set-cookie') {\n acc[k] = v;\n } else {\n const tmp = _.map(v as Array<string>, (item) => {\n if (item.includes(YT_CYPRESS_COOKIE_NAME)) {\n return item.replace(/\\s*Secure;/, '');\n }\n return item;\n });\n acc[k] = tmp;\n }\n return acc;\n },\n {} as typeof headers,\n );\n}\n\nexport async function handleChangePassword(req: Request, res: Response) {\n try {\n const ytAuthCluster = req.params.ytAuthCluster;\n\n if (!ytAuthCluster) {\n throw new Error('You have to define ytAuthCluster.');\n }\n\n const {newPassword, currentPassword} = JSON.parse(req.body) || {};\n if (!newPassword || !currentPassword) {\n throw new Error('New and current password must not be empty');\n }\n\n const new_password_sha256 = crypto.createHash('sha256').update(newPassword).digest('hex');\n const current_password_sha256 = crypto\n .createHash('sha256')\n .update(currentPassword)\n .digest('hex');\n\n let cfg;\n try {\n cfg = getUserYTApiSetup(ytAuthCluster, req);\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 400, e);\n return;\n }\n\n const {setup} = cfg;\n const {login, csrf_token} = await getXSRFToken(req, cfg);\n\n yt.setup.createOption('requestHeaders', 'object', {\n 'X-Csrf-Token': csrf_token,\n });\n\n await yt.v4\n .setUserPassword({\n setup,\n parameters: {user: login, new_password_sha256, current_password_sha256},\n })\n .then((result: unknown) => {\n res.status(200).send({result});\n })\n .catch((err: any) => {\n sendAndLogError(req.ctx, res, 500, err);\n });\n } catch (e: any) {\n sendAndLogError(req.ctx, res, 500, e);\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["axios","YT_CYPRESS_COOKIE_NAME","getUserYTApiSetup","getYTApiClusterSetup","UNEXPECTED_PIPE_AXIOS_RESPONSE","makeAuthClusterCookieName","pipeAxiosResponse","sendAndLogError","crypto","ytLib","getXSRFToken","yt","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","concat","Buffer","from","toString","request","url","method","headers","_objectSpread","ctx","getMetadata","Authorization","timeout","responseType","then","_ref2","_callee","response","pipedSize","_callee$","_context","undefined","reduce","ret","item","push","startsWith","replace","removeSecureFlagIfOriginInsecure","sent","stop","_x5","t0","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","createHash","update","digest","abrupt","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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"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
3
3
|
import { YT_CYPRESS_COOKIE_NAME, YT_UI_CLUSTER_HEADER_NAME } from '../../shared/constants';
|
4
|
+
import { makeAuthClusterCookieName } from '../utils';
|
4
5
|
export function createYTAuthorizationResolver() {
|
5
6
|
return /*#__PURE__*/function () {
|
6
7
|
var _resolveYTAuthorization = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res, next) {
|
@@ -9,7 +10,7 @@ export function createYTAuthorizationResolver() {
|
|
9
10
|
while (1) switch (_context.prev = _context.next) {
|
10
11
|
case 0:
|
11
12
|
ytAuthCluster = req.params.ytAuthCluster;
|
12
|
-
secret = req.cookies[
|
13
|
+
secret = req.cookies[makeAuthClusterCookieName(ytAuthCluster)];
|
13
14
|
if (ytAuthCluster) {
|
14
15
|
res.setHeader(YT_UI_CLUSTER_HEADER_NAME, ytAuthCluster);
|
15
16
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["YT_CYPRESS_COOKIE_NAME","YT_UI_CLUSTER_HEADER_NAME","createYTAuthorizationResolver","_resolveYTAuthorization","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","ytAuthCluster","secret","wrap","_callee$","_context","prev","params","cookies","
|
1
|
+
{"version":3,"names":["YT_CYPRESS_COOKIE_NAME","YT_UI_CLUSTER_HEADER_NAME","makeAuthClusterCookieName","createYTAuthorizationResolver","_resolveYTAuthorization","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","ytAuthCluster","secret","wrap","_callee$","_context","prev","params","cookies","setHeader","yt","ytApiAuthHeaders","Cookie","concat","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,SAAQA,sBAAsB,EAAEC,yBAAyB,QAAO,wBAAwB;AACxF,SAAQC,yBAAyB,QAAO,UAAU;AAElD,OAAO,SAASC,6BAA6BA,CAAA,EAAkB;EAC3D;IAAA,IAAAC,uBAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAAsCC,GAAY,EAAEC,GAAa,EAAEC,IAAI;MAAA,IAAAC,aAAA,EAAAC,MAAA;MAAA,OAAAP,mBAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAL,IAAA;UAAA;YACnEC,aAAa,GAAIH,GAAG,CAACS,MAAM,CAA3BN,aAAa;YAEdC,MAAc,GAAGJ,GAAG,CAACU,OAAO,CAACjB,yBAAyB,CAACU,aAAa,CAAC,CAAC;YAE5E,IAAIA,aAAa,EAAE;cACfF,GAAG,CAACU,SAAS,CAACnB,yBAAyB,EAAEW,aAAa,CAAC;YAC3D;YAEAH,GAAG,CAACY,EAAE,GAAG;cACLC,gBAAgB,EAAE;gBACdC,MAAM,KAAAC,MAAA,CAAKxB,sBAAsB,OAAAwB,MAAA,CAAIX,MAAM;cAC/C;YACJ,CAAC;YAEDF,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAK,QAAA,CAAAS,IAAA;QAAA;MAAA,GAAAjB,OAAA;IAAA,CACV;IAAA,SAhBqBkB,sBAAsBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAzB,uBAAA,CAAA0B,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 {};
|
@@ -6,6 +6,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
6
|
import * as stream from 'stream';
|
7
7
|
import { isYTError } from '../../shared/utils';
|
8
8
|
import { getApp } from '../ServerFactory';
|
9
|
+
import { YT_CYPRESS_COOKIE_NAME } from '../../shared/constants';
|
9
10
|
import path from 'path';
|
10
11
|
export function isProductionEnv() {
|
11
12
|
return getApp().config.appEnv !== 'development';
|
@@ -268,4 +269,7 @@ function _sendAndLogError() {
|
|
268
269
|
}));
|
269
270
|
return _sendAndLogError.apply(this, arguments);
|
270
271
|
}
|
272
|
+
export var makeAuthClusterCookieName = function makeAuthClusterCookieName(ytAuthCluster) {
|
273
|
+
return "".concat(ytAuthCluster, "_").concat(YT_CYPRESS_COOKIE_NAME);
|
274
|
+
};
|
271
275
|
// #sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["stream","isYTError","getApp","path","isProductionEnv","config","appEnv","isLocalModeByEnvironment","process","env","APP_ENV","getInterfaceVersion","INIT_CWD","packageJsonPath","resolve","require","version","e","nodekit","ctx","logError","concat","prepareErrorToSend","res","message","Error","_toString","JSON","stringify","sendResponse","data","set","status","send","sendError","error","errCode","arguments","length","undefined","errData","asAxiosError","isAxiosError","UNEXPECTED_PIPE_AXIOS_RESPONSE","UNEXPECTED_PIPE_AXIOS_ERROR","pipeAxiosErrorOrFalse","_x","_x2","_x3","_pipeAxiosErrorOrFalse","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dst","wrap","_callee$","_context","prev","next","pipeAxiosResponse","response","abrupt","sent","stop","LOG_HEADERS","_x4","_x5","_x6","_pipeAxiosResponse","_callee2","src","logMsgPrefix","transformHeaders","_args2","_callee2$","_context2","v","Readable","pipeResponse","headers","Promise","_x7","_x8","_x9","_x10","_x11","_x12","_pipeResponse","_callee3","headersToLog","pipedDataSize","_args3","_callee3$","_context3","_forEach","value","key","setHeader","_pick","log","pipeReadableToWriteable","headerContentLength","_x13","_x14","_x15","_x16","_pipeReadableToWriteable","_callee4","firstChunk","closePromise","_callee4$","_context4","reject","on","chunk","pipe","sendAndLogError","_x17","_x18","_x19","_x20","_sendAndLogError","_callee5","extra","ae","_ae$response","_args5","_callee5$","_context5","toJSON","append","statusText","mesasge"],"sources":["index.ts"],"sourcesContent":["import * as stream from 'stream';\nimport _ from 'lodash';\nimport type {Response} from 'express';\nimport {AxiosError, AxiosResponse} from 'axios';\nimport {AppContext} from '@gravity-ui/nodekit';\nimport {isYTError} from '../../shared/utils';\nimport {getApp} from '../ServerFactory';\nimport path from 'path';\n\nexport function isProductionEnv() {\n return getApp().config.appEnv !== 'development';\n}\n\nexport function isLocalModeByEnvironment() {\n return process.env.APP_ENV === 'local';\n}\n\nexport function getInterfaceVersion() {\n if (isProductionEnv()) {\n const {INIT_CWD} = process.env;\n const packageJsonPath = INIT_CWD\n ? path.resolve(INIT_CWD, 'package.json')\n : path.resolve('./package.json');\n try {\n /* eslint-disable-next-line global-require, security/detect-non-literal-require */\n return require(packageJsonPath).version;\n } catch (e) {\n getApp().nodekit.ctx.logError(`Failed to get version from ${packageJsonPath}`, e, {\n INIT_CWD,\n packageJsonPath,\n });\n return 'unkonwn';\n }\n } else {\n return 'local';\n }\n}\n\nexport function prepareErrorToSend(e: unknown) {\n 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":"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"}
|
1
|
+
{"version":3,"names":["stream","isYTError","getApp","YT_CYPRESS_COOKIE_NAME","path","isProductionEnv","config","appEnv","isLocalModeByEnvironment","process","env","APP_ENV","getInterfaceVersion","INIT_CWD","packageJsonPath","resolve","require","version","e","nodekit","ctx","logError","concat","prepareErrorToSend","res","message","Error","_toString","JSON","stringify","sendResponse","data","set","status","send","sendError","error","errCode","arguments","length","undefined","errData","asAxiosError","isAxiosError","UNEXPECTED_PIPE_AXIOS_RESPONSE","UNEXPECTED_PIPE_AXIOS_ERROR","pipeAxiosErrorOrFalse","_x","_x2","_x3","_pipeAxiosErrorOrFalse","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dst","wrap","_callee$","_context","prev","next","pipeAxiosResponse","response","abrupt","sent","stop","LOG_HEADERS","_x4","_x5","_x6","_pipeAxiosResponse","_callee2","src","logMsgPrefix","transformHeaders","_args2","_callee2$","_context2","v","Readable","pipeResponse","headers","Promise","_x7","_x8","_x9","_x10","_x11","_x12","_pipeResponse","_callee3","headersToLog","pipedDataSize","_args3","_callee3$","_context3","_forEach","value","key","setHeader","_pick","log","pipeReadableToWriteable","headerContentLength","_x13","_x14","_x15","_x16","_pipeReadableToWriteable","_callee4","firstChunk","closePromise","_callee4$","_context4","reject","on","chunk","pipe","sendAndLogError","_x17","_x18","_x19","_x20","_sendAndLogError","_callee5","extra","ae","_ae$response","_args5","_callee5$","_context5","toJSON","append","statusText","mesasge","makeAuthClusterCookieName","ytAuthCluster"],"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;
|