@ytsaurus/ui 1.12.1 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/build/cjs/@types/core.d.ts +38 -0
  2. package/build/cjs/server/components/layout-config.js +6 -1
  3. package/build/cjs/server/components/layout-config.js.map +1 -1
  4. package/build/cjs/server/components/oauth.d.ts +26 -0
  5. package/build/cjs/server/components/oauth.js +123 -0
  6. package/build/cjs/server/components/oauth.js.map +1 -0
  7. package/build/cjs/server/components/yt-auth.d.ts +6 -0
  8. package/build/cjs/server/components/yt-auth.js +23 -0
  9. package/build/cjs/server/components/yt-auth.js.map +1 -0
  10. package/build/cjs/server/controllers/login.d.ts +0 -1
  11. package/build/cjs/server/controllers/login.js +4 -26
  12. package/build/cjs/server/controllers/login.js.map +1 -1
  13. package/build/cjs/server/controllers/logout.d.ts +2 -0
  14. package/build/cjs/server/controllers/logout.js +15 -0
  15. package/build/cjs/server/controllers/logout.js.map +1 -0
  16. package/build/cjs/server/controllers/oauth-login.d.ts +4 -0
  17. package/build/cjs/server/controllers/oauth-login.js +30 -0
  18. package/build/cjs/server/controllers/oauth-login.js.map +1 -0
  19. package/build/cjs/server/index.js +9 -1
  20. package/build/cjs/server/index.js.map +1 -1
  21. package/build/cjs/server/middlewares/authorization.d.ts +2 -0
  22. package/build/cjs/server/middlewares/authorization.js +42 -0
  23. package/build/cjs/server/middlewares/authorization.js.map +1 -0
  24. package/build/cjs/server/middlewares/oauth.d.ts +2 -0
  25. package/build/cjs/server/middlewares/oauth.js +27 -0
  26. package/build/cjs/server/middlewares/oauth.js.map +1 -0
  27. package/build/cjs/server/middlewares/yt-auth.d.ts +1 -1
  28. package/build/cjs/server/middlewares/yt-auth.js +10 -42
  29. package/build/cjs/server/middlewares/yt-auth.js.map +1 -1
  30. package/build/cjs/server/routes.js +6 -1
  31. package/build/cjs/server/routes.js.map +1 -1
  32. package/build/cjs/server/utils/authorization.d.ts +6 -0
  33. package/build/cjs/server/utils/authorization.js +33 -0
  34. package/build/cjs/server/utils/authorization.js.map +1 -0
  35. package/build/cjs/shared/constants/index.d.ts +3 -0
  36. package/build/cjs/shared/constants/index.js +3 -1
  37. package/build/cjs/shared/constants/index.js.map +1 -1
  38. package/build/cjs/shared/yt-types.d.ts +2 -0
  39. package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js +23 -5
  40. package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
  41. package/build/cjs/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css +8 -0
  42. package/build/cjs/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css.map +1 -1
  43. package/build/cjs/ui/components/NumberInput/NumberInput.d.ts +1 -1
  44. package/build/cjs/ui/constants/docsUrls.d.ts +1 -0
  45. package/build/cjs/ui/constants/docsUrls.js +1 -0
  46. package/build/cjs/ui/constants/docsUrls.js.map +1 -1
  47. package/build/cjs/ui/containers/AppNavigation/AppNavigation.js +2 -0
  48. package/build/cjs/ui/containers/AppNavigation/AppNavigation.js.map +1 -1
  49. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.d.ts +1 -1
  50. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js +5 -7
  51. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  52. package/build/cjs/ui/containers/AppNavigation/AppNavigationPageLayout.d.ts +2 -0
  53. package/build/cjs/ui/containers/AppNavigation/AppNavigationPageLayout.js.map +1 -1
  54. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +11 -7
  55. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
  56. package/build/cjs/ui/store/actions/tablet_cell_bundles/index.js +1 -1
  57. package/build/cjs/ui/store/actions/tablet_cell_bundles/index.js.map +1 -1
  58. package/build/cjs/ui/store/reducers/global/index.d.ts +1 -0
  59. package/build/cjs/ui/store/reducers/global/index.js +1 -0
  60. package/build/cjs/ui/store/reducers/global/index.js.map +1 -1
  61. package/build/cjs/ui/store/reducers/tablet_cell_bundles/index.d.ts +8 -0
  62. package/build/cjs/ui/store/reducers/tablet_cell_bundles/index.js.map +1 -1
  63. package/build/cjs/ui/store/selectors/global/index.d.ts +4 -0
  64. package/build/cjs/ui/store/selectors/global/index.js +14 -4
  65. package/build/cjs/ui/store/selectors/global/index.js.map +1 -1
  66. package/build/cjs/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.d.ts +2 -1
  67. package/build/cjs/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js +16 -1
  68. package/build/cjs/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js.map +1 -1
  69. package/build/esm/@types/core.d.ts +38 -0
  70. package/build/esm/server/components/layout-config.js +7 -2
  71. package/build/esm/server/components/layout-config.js.map +1 -1
  72. package/build/esm/server/components/oauth.d.ts +26 -0
  73. package/build/esm/server/components/oauth.js +169 -0
  74. package/build/esm/server/components/oauth.js.map +1 -0
  75. package/build/esm/server/components/yt-auth.d.ts +6 -0
  76. package/build/esm/server/components/yt-auth.js +17 -0
  77. package/build/esm/server/components/yt-auth.js.map +1 -0
  78. package/build/esm/server/controllers/login.d.ts +0 -1
  79. package/build/esm/server/controllers/login.js +41 -88
  80. package/build/esm/server/controllers/login.js.map +1 -1
  81. package/build/esm/server/controllers/logout.d.ts +2 -0
  82. package/build/esm/server/controllers/logout.js +11 -0
  83. package/build/esm/server/controllers/logout.js.map +1 -0
  84. package/build/esm/server/controllers/oauth-login.d.ts +4 -0
  85. package/build/esm/server/controllers/oauth-login.js +50 -0
  86. package/build/esm/server/controllers/oauth-login.js.map +1 -0
  87. package/build/esm/server/index.js +7 -2
  88. package/build/esm/server/index.js.map +1 -1
  89. package/build/esm/server/middlewares/authorization.d.ts +2 -0
  90. package/build/esm/server/middlewares/authorization.js +74 -0
  91. package/build/esm/server/middlewares/authorization.js.map +1 -0
  92. package/build/esm/server/middlewares/oauth.d.ts +2 -0
  93. package/build/esm/server/middlewares/oauth.js +50 -0
  94. package/build/esm/server/middlewares/oauth.js.map +1 -0
  95. package/build/esm/server/middlewares/yt-auth.d.ts +1 -1
  96. package/build/esm/server/middlewares/yt-auth.js +8 -58
  97. package/build/esm/server/middlewares/yt-auth.js.map +1 -1
  98. package/build/esm/server/routes.js +16 -2
  99. package/build/esm/server/routes.js.map +1 -1
  100. package/build/esm/server/utils/authorization.d.ts +6 -0
  101. package/build/esm/server/utils/authorization.js +28 -0
  102. package/build/esm/server/utils/authorization.js.map +1 -0
  103. package/build/esm/shared/constants/index.d.ts +3 -0
  104. package/build/esm/shared/constants/index.js +2 -1
  105. package/build/esm/shared/constants/index.js.map +1 -1
  106. package/build/esm/shared/yt-types.d.ts +2 -0
  107. package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js +24 -6
  108. package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
  109. package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css +8 -0
  110. package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css.map +1 -1
  111. package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.scss +12 -0
  112. package/build/esm/ui/components/NumberInput/NumberInput.d.ts +1 -1
  113. package/build/esm/ui/constants/docsUrls.d.ts +1 -0
  114. package/build/esm/ui/constants/docsUrls.js +1 -0
  115. package/build/esm/ui/constants/docsUrls.js.map +1 -1
  116. package/build/esm/ui/containers/AppNavigation/AppNavigation.js +3 -1
  117. package/build/esm/ui/containers/AppNavigation/AppNavigation.js.map +1 -1
  118. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.d.ts +1 -1
  119. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js +5 -7
  120. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  121. package/build/esm/ui/containers/AppNavigation/AppNavigationPageLayout.d.ts +2 -0
  122. package/build/esm/ui/containers/AppNavigation/AppNavigationPageLayout.js.map +1 -1
  123. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +12 -8
  124. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
  125. package/build/esm/ui/store/actions/tablet_cell_bundles/index.js +1 -1
  126. package/build/esm/ui/store/actions/tablet_cell_bundles/index.js.map +1 -1
  127. package/build/esm/ui/store/reducers/global/index.d.ts +1 -0
  128. package/build/esm/ui/store/reducers/global/index.js +1 -0
  129. package/build/esm/ui/store/reducers/global/index.js.map +1 -1
  130. package/build/esm/ui/store/reducers/tablet_cell_bundles/index.d.ts +8 -0
  131. package/build/esm/ui/store/reducers/tablet_cell_bundles/index.js.map +1 -1
  132. package/build/esm/ui/store/selectors/global/index.d.ts +4 -0
  133. package/build/esm/ui/store/selectors/global/index.js +12 -2
  134. package/build/esm/ui/store/selectors/global/index.js.map +1 -1
  135. package/build/esm/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.d.ts +2 -1
  136. package/build/esm/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js +15 -0
  137. package/build/esm/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js.map +1 -1
  138. package/dist/public/build/assets-manifest.json +12 -12
  139. package/dist/public/build/css/{main.136a49c7.css → main.e919e247.css} +2 -2
  140. package/dist/public/build/css/main.e919e247.css.map +1 -0
  141. package/dist/public/build/js/89.07445d46.chunk.js +2 -0
  142. package/dist/public/build/js/89.07445d46.chunk.js.map +1 -0
  143. package/dist/public/build/js/main.9d592639.js +3 -0
  144. package/dist/public/build/js/{main.69fdeec5.js.map → main.9d592639.js.map} +1 -1
  145. package/dist/public/build/js/{runtime.6c8d85d3.js → runtime.9491563b.js} +2 -2
  146. package/dist/public/build/js/{runtime.6c8d85d3.js.map → runtime.9491563b.js.map} +1 -1
  147. package/dist/public/build/manifest.json +8 -8
  148. package/dist/server/components/layout-config.js +6 -1
  149. package/dist/server/components/oauth.d.ts +26 -0
  150. package/dist/server/components/oauth.js +123 -0
  151. package/dist/server/components/yt-auth.d.ts +6 -0
  152. package/dist/server/components/yt-auth.js +23 -0
  153. package/dist/server/controllers/login.d.ts +0 -1
  154. package/dist/server/controllers/login.js +4 -26
  155. package/dist/server/controllers/logout.d.ts +2 -0
  156. package/dist/server/controllers/logout.js +15 -0
  157. package/dist/server/controllers/oauth-login.d.ts +4 -0
  158. package/dist/server/controllers/oauth-login.js +30 -0
  159. package/dist/server/index.js +9 -1
  160. package/dist/server/middlewares/authorization.d.ts +2 -0
  161. package/dist/server/middlewares/authorization.js +42 -0
  162. package/dist/server/middlewares/oauth.d.ts +2 -0
  163. package/dist/server/middlewares/oauth.js +27 -0
  164. package/dist/server/middlewares/yt-auth.d.ts +1 -1
  165. package/dist/server/middlewares/yt-auth.js +10 -42
  166. package/dist/server/routes.js +6 -1
  167. package/dist/server/utils/authorization.d.ts +6 -0
  168. package/dist/server/utils/authorization.js +33 -0
  169. package/dist/shared/constants/index.d.ts +3 -0
  170. package/dist/shared/constants/index.js +3 -1
  171. package/package.json +2 -2
  172. package/dist/public/build/css/main.136a49c7.css.map +0 -1
  173. package/dist/public/build/js/89.6ea87438.chunk.js +0 -2
  174. package/dist/public/build/js/89.6ea87438.chunk.js.map +0 -1
  175. package/dist/public/build/js/main.69fdeec5.js +0 -3
  176. /package/dist/public/build/js/{main.69fdeec5.js.LICENSE.txt → main.9d592639.js.LICENSE.txt} +0 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOAuthAuthorizationResolver = void 0;
4
+ const oauth_1 = require("../components/oauth");
5
+ function createOAuthAuthorizationResolver() {
6
+ return async function resoleOAuthAuthorize(req, res, next) {
7
+ if (!(0, oauth_1.isOAuthAllowed)(req) || !(0, oauth_1.isUserOAuthLogged)(req)) {
8
+ next();
9
+ return;
10
+ }
11
+ try {
12
+ const token = await (0, oauth_1.getOAuthAccessToken)(req, res);
13
+ req.yt = {
14
+ ytApiAuthHeaders: {
15
+ Authorization: `OAuth ${token}`,
16
+ },
17
+ };
18
+ req.ctx.log('OAuth: provide a token');
19
+ }
20
+ catch (e) {
21
+ req.ctx.logError('Can not resolve access token', e);
22
+ }
23
+ next();
24
+ return;
25
+ };
26
+ }
27
+ exports.createOAuthAuthorizationResolver = createOAuthAuthorizationResolver;
@@ -1,2 +1,2 @@
1
1
  import { AppMiddleware } from '@gravity-ui/expresskit';
2
- export declare function createYTAuthMiddleware(ytAuthCluster: string): AppMiddleware;
2
+ export declare function createYTAuthorizationResolver(): AppMiddleware;
@@ -1,48 +1,16 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createYTAuthMiddleware = void 0;
7
- const axios_1 = __importDefault(require("axios"));
3
+ exports.createYTAuthorizationResolver = void 0;
8
4
  const constants_1 = require("../../shared/constants");
9
- const cluster_queries_1 = require("../components/cluster-queries");
10
- const requestsSetup_1 = require("../components/requestsSetup");
11
- const utils_1 = require("../utils");
12
- class AuthError extends Error {
13
- constructor() {
14
- super('Authorization required');
15
- }
16
- }
17
- function isAuthError(e) {
18
- var _a;
19
- return e instanceof AuthError || (axios_1.default.isAxiosError(e) && ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401);
20
- }
21
- function createYTAuthMiddleware(ytAuthCluster) {
22
- return async function ytAuthMiddleware(req, res, next) {
23
- try {
24
- const secret = req.cookies[constants_1.YT_CYPRESS_COOKIE_NAME];
25
- req.yt = {
26
- ytApiAuthHeaders: {
27
- Cookie: `${constants_1.YT_CYPRESS_COOKIE_NAME}=${secret};`,
28
- },
29
- };
30
- if (!secret) {
31
- throw new AuthError();
32
- }
33
- const cfg = (0, requestsSetup_1.getUserYTApiSetup)(ytAuthCluster, req);
34
- const { login } = await (0, cluster_queries_1.getXSRFToken)(req, cfg);
35
- req.yt.login = login;
36
- }
37
- catch (e) {
38
- const isAuthFailed = isAuthError(e);
39
- const error = isAuthFailed ? undefined : e;
40
- if (!req.routeInfo.ui && isAuthFailed) {
41
- (0, utils_1.sendError)(res, error, 401);
42
- return;
43
- }
44
- }
5
+ function createYTAuthorizationResolver() {
6
+ return async function resoleOAuthAuthorize(req, _, next) {
7
+ const secret = req.cookies[constants_1.YT_CYPRESS_COOKIE_NAME];
8
+ req.yt = {
9
+ ytApiAuthHeaders: {
10
+ Cookie: `${constants_1.YT_CYPRESS_COOKIE_NAME}=${secret};`,
11
+ },
12
+ };
45
13
  next();
46
14
  };
47
15
  }
48
- exports.createYTAuthMiddleware = createYTAuthMiddleware;
16
+ exports.createYTAuthorizationResolver = createYTAuthorizationResolver;
@@ -17,6 +17,8 @@ const markdown_to_html_1 = require("./controllers/markdown-to-html");
17
17
  const odin_proxy_api_1 = require("./controllers/odin-proxy-api");
18
18
  const availability_1 = require("./controllers/availability");
19
19
  const chyt_api_1 = require("./controllers/chyt-api");
20
+ const oauth_login_1 = require("./controllers/oauth-login");
21
+ const logout_1 = require("./controllers/logout");
20
22
  const HOME_INDEX_TARGET = { handler: home_1.homeIndex, ui: true };
21
23
  const routes = {
22
24
  'GET /change-password/': HOME_INDEX_TARGET,
@@ -27,7 +29,10 @@ const routes = {
27
29
  'GET /api/clusters/versions': { handler: clusters_1.clusterVersions },
28
30
  'GET /api/pool-names/:cluster': { handler: scheduling_pools_1.getClusterPools },
29
31
  'POST /api/yt/login': { handler: login_1.handleLogin, ui: true },
30
- 'POST /api/yt/logout': { handler: login_1.handleLogout, ui: true },
32
+ 'GET /api/yt/logout': { handler: logout_1.handleLogout, ui: true },
33
+ 'GET /oauth/login': { handler: oauth_login_1.oauthLogin, ui: true },
34
+ 'GET /api/oauth/callback': { handler: oauth_login_1.oauthCallback, ui: true },
35
+ 'GET /api/oauth/logout/callback': { handler: oauth_login_1.oauthLogout, ui: true },
31
36
  'POST /api/yt/change-password': { handler: login_1.handleChangePassword, ui: true },
32
37
  'POST /api/remote-copy': { handler: remote_copy_1.handleRemoteCopy },
33
38
  'POST /api/markdown-to-html': { handler: markdown_to_html_1.markdownToHtmlHandler },
@@ -0,0 +1,6 @@
1
+ import type { Request } from 'express';
2
+ import { AppMiddleware } from '@gravity-ui/expresskit';
3
+ import { AuthWay } from '../../shared/constants';
4
+ export declare function isAuthorized(req: Request): boolean;
5
+ export declare function getAuthWay(req: Request): AuthWay | undefined;
6
+ export declare function authorizationResolver(resolver: AppMiddleware): AppMiddleware;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authorizationResolver = exports.getAuthWay = exports.isAuthorized = void 0;
4
+ const oauth_1 = require("../components/oauth");
5
+ function isAuthorized(req) {
6
+ var _a;
7
+ if (req.yt) {
8
+ return Boolean(Object.keys((_a = req.yt.ytApiAuthHeaders) !== null && _a !== void 0 ? _a : {}));
9
+ }
10
+ return false;
11
+ }
12
+ exports.isAuthorized = isAuthorized;
13
+ function getAuthWay(req) {
14
+ if (!isAuthorized(req)) {
15
+ return undefined;
16
+ }
17
+ if ((0, oauth_1.isUserOAuthLogged)(req)) {
18
+ return 'oauth';
19
+ }
20
+ return 'passwd';
21
+ }
22
+ exports.getAuthWay = getAuthWay;
23
+ function authorizationResolver(resolver) {
24
+ return (req, res, next) => {
25
+ if (isAuthorized(req)) {
26
+ next();
27
+ return;
28
+ }
29
+ resolver(req, res, next);
30
+ return;
31
+ };
32
+ }
33
+ exports.authorizationResolver = authorizationResolver;
@@ -2,6 +2,9 @@ export declare const YT_API_REQUEST_ID_HEADER = "X-Custom-Request-Id";
2
2
  export declare const YT_CYPRESS_COOKIE_NAME = "YTCypressCookie";
3
3
  export declare const YT_LOCAL_CLUSTER_ID = "ui";
4
4
  export declare const ODIN_PAGE_ID = "odin";
5
+ export declare const YT_OAUTH_ACCESS_TOKEN_NAME = "yt_oauth_access_token";
6
+ export declare const YT_OAUTH_REFRESH_TOKEN_NAME = "yt_oauth_refresh_token";
7
+ export type AuthWay = 'oauth' | 'passwd';
5
8
  /**
6
9
  * Allows to succeed requests when master are in read-only mode and the transaction coordinator cell is evicted
7
10
  */
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USE_SUPRESS_SYNC = exports.ODIN_PAGE_ID = exports.YT_LOCAL_CLUSTER_ID = exports.YT_CYPRESS_COOKIE_NAME = exports.YT_API_REQUEST_ID_HEADER = void 0;
3
+ exports.USE_SUPRESS_SYNC = exports.YT_OAUTH_REFRESH_TOKEN_NAME = exports.YT_OAUTH_ACCESS_TOKEN_NAME = exports.ODIN_PAGE_ID = exports.YT_LOCAL_CLUSTER_ID = exports.YT_CYPRESS_COOKIE_NAME = exports.YT_API_REQUEST_ID_HEADER = void 0;
4
4
  exports.YT_API_REQUEST_ID_HEADER = 'X-Custom-Request-Id';
5
5
  exports.YT_CYPRESS_COOKIE_NAME = 'YTCypressCookie';
6
6
  exports.YT_LOCAL_CLUSTER_ID = 'ui';
7
7
  exports.ODIN_PAGE_ID = 'odin';
8
+ exports.YT_OAUTH_ACCESS_TOKEN_NAME = 'yt_oauth_access_token';
9
+ exports.YT_OAUTH_REFRESH_TOKEN_NAME = 'yt_oauth_refresh_token';
8
10
  /**
9
11
  * Allows to succeed requests when master are in read-only mode and the transaction coordinator cell is evicted
10
12
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ytsaurus/ui",
3
- "version": "1.12.1",
3
+ "version": "1.13.0",
4
4
  "repository": {
5
5
  "type": "github",
6
6
  "url": "https://github.com/YTsaurus/ytsaurus-ui/tree/main/packages/ui"
@@ -185,7 +185,7 @@
185
185
  "engines": {
186
186
  "node": ">=18"
187
187
  },
188
- "gitHead": "ed3e93a33f916458e9560e6926e9ee97235c5922",
188
+ "gitHead": "ced3f74cdee2c9c3411c6b5417d2cf895ce6b5d6",
189
189
  "overrides": {
190
190
  "react-split-pane": {
191
191
  "react": "$react",