@ytsaurus/ui 1.74.0 → 1.75.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.
Files changed (64) hide show
  1. package/dist/public/build/assets-manifest.json +37 -37
  2. package/dist/public/build/css/{main.c862588f.css → main.2d3cbfcd.css} +2 -2
  3. package/dist/public/build/css/main.2d3cbfcd.css.map +1 -0
  4. package/dist/public/build/css/scheduling.00ec9179.chunk.css +2 -0
  5. package/dist/public/build/css/scheduling.00ec9179.chunk.css.map +1 -0
  6. package/dist/public/build/js/3302.b8eb7c9c.chunk.js +3 -0
  7. package/dist/public/build/js/3302.b8eb7c9c.chunk.js.map +1 -0
  8. package/dist/public/build/js/{6729.a66f3554.chunk.js → 6729.da9aa02f.chunk.js} +2 -2
  9. package/dist/public/build/js/6729.da9aa02f.chunk.js.map +1 -0
  10. package/dist/public/build/js/{7959.fedd6b2e.chunk.js → 7959.95ebd185.chunk.js} +2 -2
  11. package/dist/public/build/js/7959.95ebd185.chunk.js.map +1 -0
  12. package/dist/public/build/js/acl.c948c339.chunk.js +2 -0
  13. package/dist/public/build/js/acl.c948c339.chunk.js.map +1 -0
  14. package/dist/public/build/js/{chyt.8c82dc61.chunk.js → chyt.7f99f87d.chunk.js} +2 -2
  15. package/dist/public/build/js/chyt.7f99f87d.chunk.js.map +1 -0
  16. package/dist/public/build/js/{components.a4b032ee.chunk.js → components.bbe331cb.chunk.js} +2 -2
  17. package/dist/public/build/js/components.bbe331cb.chunk.js.map +1 -0
  18. package/dist/public/build/js/job.4fc50056.chunk.js +2 -0
  19. package/dist/public/build/js/job.4fc50056.chunk.js.map +1 -0
  20. package/dist/public/build/js/main.7981a440.js +3 -0
  21. package/dist/public/build/js/main.7981a440.js.map +1 -0
  22. package/dist/public/build/js/{manage-tokens.1888a00d.chunk.js → manage-tokens.286a4da9.chunk.js} +2 -2
  23. package/dist/public/build/js/{manage-tokens.1888a00d.chunk.js.map → manage-tokens.286a4da9.chunk.js.map} +1 -1
  24. package/dist/public/build/js/{navigation-flow.18200e3a.chunk.js → navigation-flow.eeb01518.chunk.js} +2 -2
  25. package/dist/public/build/js/navigation-flow.eeb01518.chunk.js.map +1 -0
  26. package/dist/public/build/js/navigation.d891266d.chunk.js +2 -0
  27. package/dist/public/build/js/navigation.d891266d.chunk.js.map +1 -0
  28. package/dist/public/build/js/{query-navigation.0ac62e3b.chunk.js → query-navigation.9964bfcf.chunk.js} +2 -2
  29. package/dist/public/build/js/query-navigation.9964bfcf.chunk.js.map +1 -0
  30. package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js +2 -0
  31. package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js.map +1 -0
  32. package/dist/public/build/js/{runtime.8d1e4e78.js → runtime.481a6d3a.js} +2 -2
  33. package/dist/public/build/js/{runtime.8d1e4e78.js.map → runtime.481a6d3a.js.map} +1 -1
  34. package/dist/public/build/manifest.json +32 -32
  35. package/dist/server/components/oauth.d.ts +2 -1
  36. package/dist/server/components/oauth.js +15 -7
  37. package/dist/server/components/vcs/GitlabApi.d.ts +1 -1
  38. package/dist/server/components/vcs/GitlabApi.js +1 -1
  39. package/dist/server/controllers/oauth-login.js +8 -3
  40. package/dist/server/controllers/vcs.js +7 -1
  41. package/package.json +2 -2
  42. package/dist/public/build/css/main.c862588f.css.map +0 -1
  43. package/dist/public/build/css/scheduling.40c36db6.chunk.css +0 -2
  44. package/dist/public/build/css/scheduling.40c36db6.chunk.css.map +0 -1
  45. package/dist/public/build/js/3302.dff164d9.chunk.js +0 -3
  46. package/dist/public/build/js/3302.dff164d9.chunk.js.map +0 -1
  47. package/dist/public/build/js/6729.a66f3554.chunk.js.map +0 -1
  48. package/dist/public/build/js/7959.fedd6b2e.chunk.js.map +0 -1
  49. package/dist/public/build/js/acl.205964ad.chunk.js +0 -2
  50. package/dist/public/build/js/acl.205964ad.chunk.js.map +0 -1
  51. package/dist/public/build/js/chyt.8c82dc61.chunk.js.map +0 -1
  52. package/dist/public/build/js/components.a4b032ee.chunk.js.map +0 -1
  53. package/dist/public/build/js/job.1bfebd02.chunk.js +0 -2
  54. package/dist/public/build/js/job.1bfebd02.chunk.js.map +0 -1
  55. package/dist/public/build/js/main.03a8e7a9.js +0 -3
  56. package/dist/public/build/js/main.03a8e7a9.js.map +0 -1
  57. package/dist/public/build/js/navigation-flow.18200e3a.chunk.js.map +0 -1
  58. package/dist/public/build/js/navigation.18741a4d.chunk.js +0 -2
  59. package/dist/public/build/js/navigation.18741a4d.chunk.js.map +0 -1
  60. package/dist/public/build/js/query-navigation.0ac62e3b.chunk.js.map +0 -1
  61. package/dist/public/build/js/query-tracker.8e7f7688.chunk.js +0 -2
  62. package/dist/public/build/js/query-tracker.8e7f7688.chunk.js.map +0 -1
  63. /package/dist/public/build/js/{3302.dff164d9.chunk.js.LICENSE.txt → 3302.b8eb7c9c.chunk.js.LICENSE.txt} +0 -0
  64. /package/dist/public/build/js/{main.03a8e7a9.js.LICENSE.txt → main.7981a440.js.LICENSE.txt} +0 -0
@@ -14,7 +14,13 @@ exports.getOAuthLogoutPath = getOAuthLogoutPath;
14
14
  exports.refreshOAuthToken = refreshOAuthToken;
15
15
  exports.exchangeOAuthToken = exchangeOAuthToken;
16
16
  const axios_1 = __importDefault(require("axios"));
17
+ const node_crypto_1 = __importDefault(require("node:crypto"));
17
18
  const constants_1 = require("../../shared/constants");
19
+ function getRedirectURL(req) {
20
+ var _a;
21
+ const config = getOAuthSettings(req);
22
+ return (_a = config.callbackBaseUrl) !== null && _a !== void 0 ? _a : `https://${req.get('host')}`;
23
+ }
18
24
  function isOAuthAllowed(req) {
19
25
  const config = req.ctx.config.ytOAuthSettings;
20
26
  return Boolean(config &&
@@ -64,14 +70,18 @@ function saveOAuthTokensInCookies(res, tokens) {
64
70
  });
65
71
  }
66
72
  }
67
- function getOAuthLoginPath(req) {
73
+ function getOAuthLoginPath(req, res) {
74
+ var _a, _b, _c;
75
+ const { pathname, search, origin } = new URL((_a = req.get('referrer')) !== null && _a !== void 0 ? _a : '');
76
+ const state = `state_${node_crypto_1.default.randomUUID()}`;
77
+ res.cookie(state, { retPath: pathname + search });
68
78
  const config = getOAuthSettings(req);
69
- const host = req.get('host');
70
79
  const params = new URLSearchParams({
71
80
  response_type: 'code',
72
81
  client_id: config.clientId,
73
82
  scope: config.scope,
74
- redirect_uri: `https://${host}/api/oauth/callback`,
83
+ redirect_uri: `${(_c = (_b = config.callbackBaseUrl) !== null && _b !== void 0 ? _b : origin) !== null && _c !== void 0 ? _c : `https://${req.get('host')}`}/api/oauth/callback`,
84
+ state,
75
85
  });
76
86
  const url = new URL(config.authPath, config.baseURL);
77
87
  url.search = params.toString();
@@ -82,9 +92,8 @@ function getOAuthLogoutPath(req) {
82
92
  if (!config.logoutPath) {
83
93
  return '/api/oauth/logout/callback';
84
94
  }
85
- const host = req.get('host');
86
95
  const params = new URLSearchParams({
87
- post_logout_redirect_uri: `https://${host}/api/oauth/logout/callback`,
96
+ post_logout_redirect_uri: `${getRedirectURL(req)}/api/oauth/logout/callback`,
88
97
  client_id: config.clientId,
89
98
  });
90
99
  const url = new URL(config.logoutPath, config.baseURL);
@@ -108,13 +117,12 @@ async function refreshOAuthToken(req, token) {
108
117
  }
109
118
  async function exchangeOAuthToken(req, code) {
110
119
  const config = getOAuthSettings(req);
111
- const host = req.get('host');
112
120
  const params = new URLSearchParams({
113
121
  grant_type: 'authorization_code',
114
122
  client_id: config.clientId,
115
123
  code: code,
116
124
  client_secret: config.clientSecret,
117
- redirect_uri: `https://${host}/api/oauth/callback`,
125
+ redirect_uri: `${getRedirectURL(req)}/api/oauth/callback`,
118
126
  });
119
127
  const { data } = await axios_1.default.post(new URL(config.tokenPath, config.baseURL).toString(), params.toString(), {
120
128
  headers: {
@@ -31,7 +31,7 @@ export declare class GitlabApi implements VcsApi {
31
31
  path?: string;
32
32
  }): Promise<{
33
33
  name: string;
34
- type: 'tree' | 'blob';
34
+ type: 'file' | 'dir';
35
35
  url: string;
36
36
  }[]>;
37
37
  getFileContent({ repository, branch, path, }: {
@@ -65,7 +65,7 @@ class GitlabApi {
65
65
  return response.data.map((item) => {
66
66
  return {
67
67
  name: item.name,
68
- type: item.type,
68
+ type: item.type === 'tree' ? 'dir' : 'file',
69
69
  url: `/-/blob/${branch}/${item.name}`,
70
70
  };
71
71
  });
@@ -5,21 +5,26 @@ exports.oauthLogout = oauthLogout;
5
5
  exports.oauthCallback = oauthCallback;
6
6
  const oauth_1 = require("../components/oauth");
7
7
  function oauthLogin(req, res) {
8
- res.redirect((0, oauth_1.getOAuthLoginPath)(req));
8
+ res.redirect((0, oauth_1.getOAuthLoginPath)(req, res));
9
9
  }
10
10
  function oauthLogout(_, res) {
11
11
  (0, oauth_1.removeOAuthCookies)(res);
12
12
  res.redirect('/');
13
13
  }
14
14
  async function oauthCallback(req, res) {
15
- const { code } = req.query;
15
+ var _a, _b;
16
+ const { code, state } = req.query;
16
17
  if (!code) {
17
18
  throw new Error('Authorization code is not specified');
18
19
  }
20
+ let redirectURL = '/';
21
+ if (state) {
22
+ redirectURL = (_b = (_a = req.cookies[state]) === null || _a === void 0 ? void 0 : _a.retPath) !== null && _b !== void 0 ? _b : '/';
23
+ }
19
24
  try {
20
25
  const tokens = await (0, oauth_1.exchangeOAuthToken)(req, code);
21
26
  (0, oauth_1.saveOAuthTokensInCookies)(res, tokens);
22
- res.redirect('/');
27
+ res.redirect(redirectURL);
23
28
  }
24
29
  catch (e) {
25
30
  req.ctx.logError('exchange token error', e);
@@ -160,7 +160,13 @@ const getDirectoryContent = async (req, res) => {
160
160
  res,
161
161
  },
162
162
  });
163
- response.sort((a, b) => a.type.localeCompare(b.type));
163
+ response.sort((a, b) => {
164
+ if (a.type === 'dir' && b.type === 'file')
165
+ return -1;
166
+ if (a.type === 'file' && b.type === 'dir')
167
+ return 1;
168
+ return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });
169
+ });
164
170
  res.status(200).json(response);
165
171
  }
166
172
  catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ytsaurus/ui",
3
- "version": "1.74.0",
3
+ "version": "1.75.1",
4
4
  "repository": {
5
5
  "type": "github",
6
6
  "url": "https://github.com/ytsaurus/ytsaurus-ui/tree/main/packages/ui"
@@ -188,7 +188,7 @@
188
188
  "engines": {
189
189
  "node": ">=18"
190
190
  },
191
- "gitHead": "ad40ab6ff50e0d799d0333e1abb905fc50e55263",
191
+ "gitHead": "b7d8c8f34b2adb9cd30b519bc135fb2bb9073e4a",
192
192
  "overrides": {
193
193
  "axios": "$axios",
194
194
  "react-split-pane": {