ydb-embedded-ui 1.14.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/assets/illustrations/dark/thumbsUp.svg +15 -0
  3. package/dist/assets/illustrations/light/thumbsUp.svg +15 -0
  4. package/dist/components/AsideNavigation/AsideHeader.tsx +1 -1
  5. package/dist/components/AsideNavigation/AsideHeaderFooterItem/AsideHeaderFooterItem.tsx +1 -1
  6. package/dist/components/AsideNavigation/AsideHeaderTooltip/AsideHeaderTooltip.tsx +1 -1
  7. package/dist/components/AsideNavigation/CompositeBar/CompositeBar.tsx +1 -1
  8. package/dist/components/AsideNavigation/Logo/Logo.tsx +1 -1
  9. package/dist/components/AsideNavigation/Settings/Settings.tsx +1 -1
  10. package/dist/components/AsideNavigation/Settings/SettingsMenu/SettingsMenu.tsx +1 -1
  11. package/dist/components/AsideNavigation/Settings/SettingsSearch/SettingsSearch.tsx +1 -1
  12. package/dist/components/AsideNavigation/Settings/collect-settings.ts +1 -1
  13. package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -1
  14. package/dist/components/ClusterInfo/ClusterInfo.tsx +1 -1
  15. package/dist/components/Collapse/Collapse.js +1 -1
  16. package/dist/components/CopyToClipboard/CopyToClipboard.tsx +1 -1
  17. package/dist/components/CriticalActionDialog/CriticalActionDialog.js +1 -1
  18. package/dist/components/EmptyState/EmptyState.scss +0 -1
  19. package/dist/components/EnableFullscreenButton/EnableFullscreenButton.tsx +1 -1
  20. package/dist/components/EntityStatus/EntityStatus.js +1 -1
  21. package/dist/components/Fullscreen/Fullscreen.tsx +1 -1
  22. package/dist/components/Icon/Icon.js +1 -1
  23. package/dist/components/Illustration/Illustration.tsx +3 -1
  24. package/dist/components/Loader/Loader.tsx +1 -1
  25. package/dist/components/NodesViewer/NodesViewer.js +4 -2
  26. package/dist/components/Pagination/Pagination.js +1 -1
  27. package/dist/components/ProblemFilter/ProblemFilter.js +1 -1
  28. package/dist/components/ShortyString/ShortyString.tsx +1 -1
  29. package/dist/components/TableSkeleton/TableSkeleton.tsx +1 -1
  30. package/dist/components/TabletsOverall/TabletsOverall.tsx +1 -1
  31. package/dist/containers/App/App.js +1 -1
  32. package/dist/containers/App/App.scss +0 -10
  33. package/dist/containers/App/Content.js +1 -1
  34. package/dist/containers/App/TipPopup/TipPopup.js +1 -1
  35. package/dist/containers/AsideNavigation/AsideNavigation.tsx +1 -1
  36. package/dist/containers/Authentication/Authentication.tsx +1 -1
  37. package/dist/containers/Group/Group.js +1 -1
  38. package/dist/containers/Header/Header.tsx +1 -1
  39. package/dist/containers/Header/Host/Host.js +1 -1
  40. package/dist/containers/Heatmap/Heatmap.js +1 -1
  41. package/dist/containers/Node/Node.tsx +1 -1
  42. package/dist/containers/Node/NodeStructure/Pdisk.tsx +1 -1
  43. package/dist/containers/Nodes/Nodes.js +3 -2
  44. package/dist/containers/Pdisk/Pdisk.js +1 -1
  45. package/dist/containers/Pool/Pool.js +3 -2
  46. package/dist/containers/ReduxTooltip/ReduxTooltip.js +1 -1
  47. package/dist/containers/Storage/EmptyFilter/EmptyFilter.tsx +34 -0
  48. package/dist/containers/Storage/EmptyFilter/i18n/en.json +4 -0
  49. package/dist/containers/Storage/EmptyFilter/i18n/index.ts +11 -0
  50. package/dist/containers/Storage/EmptyFilter/i18n/ru.json +4 -0
  51. package/dist/containers/Storage/Pdisk/Pdisk.tsx +1 -1
  52. package/dist/containers/Storage/Storage.js +3 -1
  53. package/dist/containers/Storage/StorageFilter/StorageFilter.tsx +1 -1
  54. package/dist/containers/Storage/StorageGroups/StorageGroups.tsx +27 -6
  55. package/dist/containers/Storage/StorageGroups/i18n/en.json +6 -0
  56. package/dist/containers/Storage/StorageGroups/i18n/index.ts +11 -0
  57. package/dist/containers/Storage/StorageGroups/i18n/ru.json +6 -0
  58. package/dist/containers/Storage/StorageNodes/StorageNodes.tsx +24 -7
  59. package/dist/containers/Storage/StorageNodes/i18n/en.json +6 -0
  60. package/dist/containers/Storage/StorageNodes/i18n/index.ts +11 -0
  61. package/dist/containers/Storage/StorageNodes/i18n/ru.json +6 -0
  62. package/dist/containers/Storage/UsageFilter/UsageFilter.tsx +1 -1
  63. package/dist/containers/Storage/Vdisk/Vdisk.js +1 -1
  64. package/dist/containers/Tablet/Tablet.js +1 -1
  65. package/dist/containers/Tablets/Tablets.js +1 -1
  66. package/dist/containers/TabletsFilters/TabletsFilters.js +1 -1
  67. package/dist/containers/Tenant/Acl/Acl.js +1 -1
  68. package/dist/containers/Tenant/Diagnostics/Compute/Compute.js +1 -1
  69. package/dist/containers/Tenant/Diagnostics/Describe/Describe.js +1 -1
  70. package/dist/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.tsx +1 -1
  71. package/dist/containers/Tenant/Diagnostics/Diagnostics.tsx +1 -1
  72. package/dist/containers/Tenant/Diagnostics/Healthcheck/Healthcheck.js +1 -1
  73. package/dist/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +1 -1
  74. package/dist/containers/Tenant/Diagnostics/Network/Network.js +3 -2
  75. package/dist/containers/Tenant/Diagnostics/Network/Network.scss +1 -1
  76. package/dist/containers/Tenant/Diagnostics/Overview/Overview.tsx +23 -24
  77. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +1 -1
  78. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +3 -3
  79. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +3 -3
  80. package/dist/containers/Tenant/ObjectGeneral/ObjectGeneral.tsx +1 -1
  81. package/dist/containers/Tenant/ObjectGeneralTabs/ObjectGeneralTabs.tsx +1 -1
  82. package/dist/containers/Tenant/ObjectSummary/ObjectSummary.tsx +1 -1
  83. package/dist/containers/Tenant/Preview/Preview.js +1 -1
  84. package/dist/containers/Tenant/QueryEditor/Issues/Issues.scss +2 -3
  85. package/dist/containers/Tenant/QueryEditor/Issues/Issues.tsx +1 -1
  86. package/dist/containers/Tenant/QueryEditor/QueriesHistory/QueriesHistory.tsx +1 -1
  87. package/dist/containers/Tenant/QueryEditor/QueryEditor.js +2 -2
  88. package/dist/containers/Tenant/QueryEditor/QueryExplain/QueryExplain.js +61 -42
  89. package/dist/containers/Tenant/QueryEditor/QueryExplain/QueryExplain.scss +8 -4
  90. package/dist/containers/Tenant/QueryEditor/QueryResult/QueryResult.js +1 -1
  91. package/dist/containers/Tenant/QueryEditor/SaveQuery/SaveQuery.js +1 -1
  92. package/dist/containers/Tenant/QueryEditor/SavedQueries/SavedQueries.js +1 -1
  93. package/dist/containers/Tenant/Schema/SchemaInfoViewer/SchemaInfoViewer.scss +2 -2
  94. package/dist/containers/Tenant/utils/paneVisibilityToggleHelpers.tsx +1 -1
  95. package/dist/containers/Tenants/Tenants.js +3 -2
  96. package/dist/containers/UserSettings/UserSettings.tsx +2 -2
  97. package/dist/containers/Vdisk/Vdisk.js +1 -1
  98. package/dist/containers/VdiskPdiskNode/VdiskPdiskNode.js +1 -1
  99. package/dist/index.js +1 -1
  100. package/dist/setupTests.js +1 -1
  101. package/dist/store/reducers/executeTopQueries.js +6 -9
  102. package/dist/store/reducers/explainQuery.js +27 -36
  103. package/dist/store/reducers/olapStats.js +6 -8
  104. package/dist/store/reducers/shardsWorkload.js +6 -8
  105. package/dist/types/api/query.ts +32 -21
  106. package/dist/types/assets.d.ts +1 -1
  107. package/dist/types/store/query.ts +1 -1
  108. package/dist/utils/createToast.tsx +1 -1
  109. package/dist/utils/getNodesColumns.js +1 -1
  110. package/dist/utils/i18n/i18n.ts +1 -1
  111. package/dist/utils/prepareQueryExplain.ts +0 -4
  112. package/dist/utils/query.test.ts +59 -1
  113. package/dist/utils/query.ts +38 -4
  114. package/package.json +9 -11
@@ -1,6 +1,9 @@
1
- import {createRequestActionTypes, createApiRequest} from '../utils';
2
1
  import '../../services/api';
3
2
 
3
+ import {parseQueryAPIExecuteResponse} from '../../utils/query';
4
+
5
+ import {createRequestActionTypes, createApiRequest} from '../utils';
6
+
4
7
  const SEND_SHARD_QUERY = createRequestActionTypes('query', 'SEND_SHARD_QUERY');
5
8
  const SET_SHARD_QUERY_OPTIONS = 'query/SET_SHARD_QUERY_OPTIONS';
6
9
 
@@ -76,6 +79,7 @@ const shardsWorkload = (state = initialState, action) => {
76
79
  export const sendShardQuery = ({database, path = '', sortOrder}) => {
77
80
  return createApiRequest({
78
81
  request: window.api.sendQuery({
82
+ schema: 'modern',
79
83
  query: createShardQuery(path, sortOrder, database),
80
84
  database,
81
85
  action: queryAction,
@@ -83,13 +87,7 @@ export const sendShardQuery = ({database, path = '', sortOrder}) => {
83
87
  concurrentId: 'topShards',
84
88
  }),
85
89
  actions: SEND_SHARD_QUERY,
86
- dataHandler: (result) => {
87
- if (result && typeof result === 'string') {
88
- throw 'Unexpected token in JSON.';
89
- }
90
-
91
- return result;
92
- },
90
+ dataHandler: parseQueryAPIExecuteResponse,
93
91
  });
94
92
  };
95
93
 
@@ -46,15 +46,12 @@ export interface ColumnType {
46
46
  // modern response
47
47
 
48
48
  export type ExecuteModernResponse = {
49
- // either both fields exist, or neither one does
50
- // they can be undefined for queries like `insert into`
51
- result?: ArrayRow[];
52
- columns?: ColumnType[];
49
+ result: ArrayRow[];
50
+ columns: ColumnType[];
53
51
  } & CommonFields;
54
52
 
55
53
  export type ExecuteClassicResponseDeep = {
56
- // can be undefined for queries like `insert into`
57
- result?: KeyValueRow[];
54
+ result: KeyValueRow[];
58
55
  } & CommonFields;
59
56
 
60
57
  // can be undefined for queries like `insert into`
@@ -63,19 +60,20 @@ export type ExecuteClassicResponsePlain = KeyValueRow[] | undefined;
63
60
  export type ExecuteClassicResponse = ExecuteClassicResponseDeep | ExecuteClassicResponsePlain;
64
61
 
65
62
  export type ExecuteYdbResponse = {
66
- // can be undefined for queries like `insert into`
67
- result?: KeyValueRow[];
63
+ result: KeyValueRow[];
68
64
  } & CommonFields;
69
65
 
70
- type ExecuteResponse<Schema extends Schemas> = (
71
- Schema extends 'modern'
72
- ? ExecuteModernResponse
73
- : Schema extends 'ydb'
74
- ? ExecuteYdbResponse
75
- : Schema extends 'classic' | undefined
76
- ? ExecuteClassicResponse
77
- : unknown
78
- );
66
+ type ExecuteResponse<Schema extends Schemas> =
67
+ | CommonFields // result can be undefined for queries like `insert into`
68
+ | (
69
+ Schema extends 'modern'
70
+ ? ExecuteModernResponse
71
+ : Schema extends 'ydb'
72
+ ? ExecuteYdbResponse
73
+ : Schema extends 'classic' | undefined
74
+ ? ExecuteClassicResponse
75
+ : unknown
76
+ );
79
77
 
80
78
  // deprecated response from older versions, backward compatibility
81
79
 
@@ -107,9 +105,9 @@ type ExplainResponse = CommonFields;
107
105
 
108
106
  type DeprecatedExplainResponse<Action extends ExplainActions> = (
109
107
  Action extends 'explain-ast'
110
- ? {ast: AST} & DeprecatedCommonFields
111
- : Actions extends 'explain'
112
- ? ({result: Plan} & DeprecatedCommonFields) | Plan
108
+ ? ({result: {ast: AST}} & Required<DeprecatedCommonFields>) | {ast: AST}
109
+ : Action extends 'explain'
110
+ ? ({result: Plan} & Required<DeprecatedCommonFields>) | Plan
113
111
  : unknown
114
112
  );
115
113
 
@@ -138,10 +136,23 @@ export type AnyExecuteResponse =
138
136
  | ExecuteModernResponse
139
137
  | ExecuteClassicResponse
140
138
  | ExecuteYdbResponse
141
- | DeprecatedExecuteResponse;
139
+ | CommonFields
140
+ | DeprecatedExecuteResponse
141
+ | null;
142
142
 
143
143
  export type DeepExecuteResponse =
144
144
  | ExecuteModernResponse
145
145
  | ExecuteClassicResponseDeep
146
146
  | ExecuteYdbResponse
147
147
  | DeprecatedExecuteResponseDeep;
148
+
149
+ export type AnyExplainResponse =
150
+ | ExplainResponse
151
+ | CommonFields
152
+ | DeprecatedExplainResponse<'explain'>
153
+ | DeprecatedExplainResponse<'explain-ast'>
154
+ | null;
155
+
156
+ export type AnyResponse =
157
+ | AnyExecuteResponse
158
+ | AnyExplainResponse;
@@ -9,4 +9,4 @@ declare module '*.jpeg';
9
9
  declare module '*.ico';
10
10
 
11
11
  declare type SVGIconData =
12
- import('@yandex-cloud/uikit/build/esm/components/Icon/types').SVGIconData;
12
+ import('@gravity-ui/uikit/build/esm/components/Icon/types').SVGIconData;
@@ -5,5 +5,5 @@ export interface IQueryResult {
5
5
  columns?: ColumnType[];
6
6
  stats?: any;
7
7
  plan?: any;
8
- ast?: any;
8
+ ast?: string;
9
9
  }
@@ -1,4 +1,4 @@
1
- import {Toaster} from '@yandex-cloud/uikit';
1
+ import {Toaster} from '@gravity-ui/uikit';
2
2
 
3
3
  const toaster = new Toaster();
4
4
 
@@ -1,6 +1,6 @@
1
1
  import cn from 'bem-cn-lite';
2
2
  import DataTable from '@yandex-cloud/react-data-table';
3
- import {Button, Popover} from '@yandex-cloud/uikit';
3
+ import {Button, Popover} from '@gravity-ui/uikit';
4
4
 
5
5
  import Icon from '../components/Icon/Icon';
6
6
  import EntityStatus from '../components/EntityStatus/EntityStatus';
@@ -1,4 +1,4 @@
1
- import {I18N} from '@yandex-cloud/i18n';
1
+ import {I18N} from '@gravity-ui/i18n';
2
2
 
3
3
  export enum Lang {
4
4
  En = 'en',
@@ -59,8 +59,6 @@ export function preparePlan(plan: Plan) {
59
59
  const nodes: GraphNode[] = [];
60
60
  const links: Link[] = [];
61
61
 
62
- let graphDepth = 0;
63
-
64
62
  function parsePlans(plans: Plan[] = [], from: string, curDepth: number) {
65
63
  const depth = curDepth + 1;
66
64
  plans.forEach((p) => {
@@ -77,7 +75,6 @@ export function preparePlan(plan: Plan) {
77
75
  };
78
76
  nodes.push(node);
79
77
  links.push({from, to: node.name});
80
- graphDepth = Math.max(graphDepth, depth);
81
78
  parsePlans(p.Plans, node.name, depth);
82
79
  });
83
80
  }
@@ -96,6 +93,5 @@ export function preparePlan(plan: Plan) {
96
93
  return {
97
94
  nodes,
98
95
  links,
99
- graphDepth,
100
96
  };
101
97
  }
@@ -1,4 +1,7 @@
1
- import {parseQueryAPIExecuteResponse} from './query';
1
+ import {
2
+ parseQueryAPIExecuteResponse,
3
+ parseQueryAPIExplainResponse,
4
+ } from './query';
2
5
 
3
6
  describe('API utils', () => {
4
7
  describe('json/viewer/query', () => {
@@ -185,5 +188,60 @@ describe('API utils', () => {
185
188
  });
186
189
  });
187
190
  });
191
+
192
+ describe('parseQueryAPIExplainResponse', () => {
193
+ it('should handle empty response', () => {
194
+ expect(parseQueryAPIExplainResponse(null)).toEqual({});
195
+ });
196
+
197
+ it('should accept stats without a plan', () => {
198
+ const stats = {metric: 'good'};
199
+ expect(parseQueryAPIExplainResponse({stats}).stats).toEqual(stats);
200
+ });
201
+
202
+ describe('old format', () => {
203
+ describe('explain', () => {
204
+ it('should parse plan data in the root', () => {
205
+ const plan = {foo: 'bar'};
206
+ expect(parseQueryAPIExplainResponse(plan).plan).toEqual(plan);
207
+ });
208
+
209
+ it('should parse plan in the result field with stats', () => {
210
+ const plan = {foo: 'bar'};
211
+ const stats = {metric: 'good'};
212
+ const actual = parseQueryAPIExplainResponse({result: plan, stats});
213
+ expect(actual.plan).toEqual(plan);
214
+ expect(actual.stats).toEqual(stats);
215
+ });
216
+ });
217
+
218
+ describe('explain-ast', () => {
219
+ it('should parse ast field in the root', () => {
220
+ const ast = 'ast';
221
+ expect(parseQueryAPIExplainResponse({ast}).ast).toBe(ast);
222
+ });
223
+
224
+ it('should parse ast in the result field with stats', () => {
225
+ const ast = 'ast';
226
+ const stats = {metric: 'good'};
227
+ const actual = parseQueryAPIExplainResponse({result: {ast}, stats});
228
+ expect(actual.ast).toBe(ast);
229
+ expect(actual.stats).toEqual(stats);
230
+ });
231
+ });
232
+ });
233
+
234
+ describe('new format', () => {
235
+ it('should parse explain response with stats', () => {
236
+ const plan = {foo: 'bar'};
237
+ const ast = 'ast';
238
+ const stats = {metric: 'good'};
239
+ const actual = parseQueryAPIExplainResponse({plan, ast, stats});
240
+ expect(actual.plan).toEqual(plan);
241
+ expect(actual.ast).toBe(ast);
242
+ expect(actual.stats).toEqual(stats);
243
+ });
244
+ });
245
+ });
188
246
  });
189
247
  });
@@ -1,14 +1,14 @@
1
1
  import {YQLType} from '../types';
2
2
  import type {
3
3
  AnyExecuteResponse,
4
+ AnyExplainResponse,
5
+ AnyResponse,
4
6
  CommonFields,
5
7
  DeepExecuteResponse,
6
8
  DeprecatedExecuteResponsePlain,
7
9
  ExecuteClassicResponsePlain,
8
10
  ExecuteModernResponse,
9
11
  KeyValueRow,
10
- QueryAPIExecuteResponse,
11
- Schemas,
12
12
  } from '../types/api/query';
13
13
  import type {IQueryResult} from '../types/store/query';
14
14
 
@@ -97,13 +97,13 @@ const isModern = (response: AnyExecuteResponse): response is ExecuteModernRespon
97
97
  Array.isArray((response as ExecuteModernResponse).columns)
98
98
  );
99
99
 
100
- const hasCommonFields = (data: AnyExecuteResponse): data is CommonFields => Boolean(
100
+ const hasCommonFields = (data: AnyResponse): data is CommonFields => Boolean(
101
101
  data && typeof data === 'object' && ('ast' in data || 'plan' in data || 'stats' in data)
102
102
  );
103
103
 
104
104
  // complex logic because of the variety of possible responses
105
105
  // after all backends are updated to the latest version, it can be simplified
106
- export const parseQueryAPIExecuteResponse = <T extends Schemas>(data: QueryAPIExecuteResponse<T>): IQueryResult => {
106
+ export const parseQueryAPIExecuteResponse = (data: AnyExecuteResponse): IQueryResult => {
107
107
  if (!data) {
108
108
  return {};
109
109
  }
@@ -128,6 +128,40 @@ export const parseQueryAPIExecuteResponse = <T extends Schemas>(data: QueryAPIEx
128
128
  };
129
129
  };
130
130
 
131
+ // complex logic because of the variety of possible responses
132
+ // after all backends are updated to the latest version, it can be simplified
133
+ export const parseQueryAPIExplainResponse = (data: AnyExplainResponse): IQueryResult => {
134
+ if (!data) {
135
+ return {};
136
+ }
137
+
138
+ if ('ast' in data) {
139
+ return data;
140
+ }
141
+
142
+ if ('result' in data) {
143
+ const {result, ...restData} = data;
144
+
145
+ if ('ast' in data.result) {
146
+ return {
147
+ ast: result.ast,
148
+ ...restData,
149
+ };
150
+ }
151
+
152
+ return {
153
+ plan: data.result,
154
+ ...restData,
155
+ };
156
+ }
157
+
158
+ if (hasCommonFields(data)) {
159
+ return data;
160
+ }
161
+
162
+ return {plan: data};
163
+ };
164
+
131
165
  export const prepareQueryResponse = (data?: KeyValueRow[]) => {
132
166
  if (!Array.isArray(data)) {
133
167
  return [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ydb-embedded-ui",
3
- "version": "1.14.2",
3
+ "version": "2.0.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -9,7 +9,7 @@
9
9
  "url": "git@github.com:ydb-platform/ydb-embedded-ui.git"
10
10
  },
11
11
  "dependencies": {
12
- "@yandex-cloud/i18n": "0.6.0",
12
+ "@gravity-ui/i18n": "^1.0.0",
13
13
  "@yandex-cloud/paranoid": "^1.2.1",
14
14
  "@yandex-cloud/react-data-table": "0.2.1",
15
15
  "axios": "0.19.2",
@@ -36,7 +36,7 @@
36
36
  "reselect": "4.0.0",
37
37
  "sass": "1.32.8",
38
38
  "web-vitals": "1.1.2",
39
- "ydb-ui-components": "2.4.1"
39
+ "ydb-ui-components": "3.0.1"
40
40
  },
41
41
  "scripts": {
42
42
  "start": "react-app-rewired start",
@@ -95,6 +95,11 @@
95
95
  "devDependencies": {
96
96
  "@commitlint/cli": "^15.0.0",
97
97
  "@commitlint/config-conventional": "^15.0.0",
98
+ "@gravity-ui/eslint-config": "^1.0.2",
99
+ "@gravity-ui/prettier-config": "^1.0.1",
100
+ "@gravity-ui/stylelint-config": "^1.0.1",
101
+ "@gravity-ui/tsconfig": "^1.0.0",
102
+ "@gravity-ui/uikit": "^3.0.1",
98
103
  "@testing-library/jest-dom": "^5.15.0",
99
104
  "@testing-library/react": "^11.2.7",
100
105
  "@testing-library/user-event": "^12.8.3",
@@ -107,12 +112,6 @@
107
112
  "@types/react-transition-group": "^4.4.4",
108
113
  "@types/react-virtualized-auto-sizer": "^1.0.1",
109
114
  "@yandex-cloud/axios-wrapper": "^1.0.2",
110
- "@yandex-cloud/browserslist-config": "1.0.1",
111
- "@yandex-cloud/eslint-config": "^1.0.0",
112
- "@yandex-cloud/prettier-config": "^1.0.0",
113
- "@yandex-cloud/stylelint-config": "^1.1.0",
114
- "@yandex-cloud/tsconfig": "^1.0.0",
115
- "@yandex-cloud/uikit": "^2.8.0",
116
115
  "copyfiles": "^2.4.1",
117
116
  "eslint-config-prettier": "^8.3.0",
118
117
  "husky": "^7.0.4",
@@ -128,7 +127,6 @@
128
127
  "typescript": "^4.5.5"
129
128
  },
130
129
  "peerDependencies": {
131
- "@yandex-cloud/browserslist-config": "^1.0.1",
132
- "@yandex-cloud/uikit": "^2.8.0"
130
+ "@gravity-ui/uikit": "^3.0.1"
133
131
  }
134
132
  }