ydb-embedded-ui 4.10.1 → 4.11.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.
- package/CHANGELOG.md +17 -0
 - package/dist/components/QueryResultTable/Cell/Cell.tsx +8 -8
 - package/dist/components/QueryResultTable/i18n/en.json +1 -1
 - package/dist/components/QueryResultTable/i18n/ru.json +1 -1
 - package/dist/components/ShortyString/ShortyString.tsx +3 -6
 - package/dist/components/ShortyString/i18n/en.json +8 -8
 - package/dist/components/ShortyString/i18n/ru.json +8 -8
 - package/dist/components/SpeedMultiMeter/i18n/index.ts +0 -2
 - package/dist/components/Stack/Stack.tsx +16 -16
 - package/dist/components/TableSkeleton/TableSkeleton.tsx +3 -3
 - package/dist/containers/Cluster/ClusterInfo/ClusterInfo.tsx +7 -3
 - package/dist/containers/Header/Header.tsx +2 -2
 - package/dist/containers/Header/breadcrumbs.ts +2 -1
 - package/dist/containers/Heatmap/Heatmap.tsx +4 -3
 - package/dist/containers/Node/NodeStructure/PDiskTitleBadge.tsx +2 -8
 - package/dist/containers/Nodes/Nodes.tsx +1 -1
 - package/dist/containers/Storage/EmptyFilter/i18n/en.json +2 -2
 - package/dist/containers/Storage/EmptyFilter/i18n/ru.json +2 -2
 - package/dist/containers/Storage/StorageGroups/i18n/en.json +5 -5
 - package/dist/containers/Storage/StorageGroups/i18n/ru.json +5 -5
 - package/dist/containers/Storage/UsageFilter/i18n/en.json +3 -8
 - package/dist/containers/Storage/UsageFilter/i18n/ru.json +3 -8
 - package/dist/containers/Tablet/Tablet.tsx +2 -2
 - package/dist/containers/Tenant/Acl/Acl.scss +1 -9
 - package/dist/containers/Tenant/Acl/Acl.tsx +137 -0
 - package/dist/containers/Tenant/Diagnostics/Describe/Describe.tsx +2 -2
 - package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.ts +6 -0
 - package/dist/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +3 -3
 - package/dist/containers/Tenant/Diagnostics/Overview/Overview.tsx +2 -0
 - package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.ts +2 -3
 - package/dist/containers/Tenant/ObjectSummary/ObjectSummary.scss +0 -6
 - package/dist/containers/Tenant/ObjectSummary/ObjectSummary.tsx +95 -83
 - package/dist/containers/Tenant/Query/Issues/Issues.tsx +27 -23
 - package/dist/containers/Tenant/Query/Issues/models.ts +0 -11
 - package/dist/containers/Tenant/Query/Preview/Preview.tsx +3 -3
 - package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.tsx +2 -2
 - package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.tsx +99 -0
 - package/dist/containers/Tenant/Tenant.tsx +1 -5
 - package/dist/containers/Tenant/TenantPages.tsx +9 -14
 - package/dist/containers/Tenant/i18n/en.json +11 -0
 - package/dist/containers/Tenant/i18n/index.ts +11 -0
 - package/dist/containers/Tenant/i18n/ru.json +11 -0
 - package/dist/containers/Tenant/utils/schema.ts +24 -0
 - package/dist/containers/Tenant/utils/schemaActions.ts +28 -24
 - package/dist/containers/Tenants/Tenants.tsx +1 -4
 - package/dist/services/api.ts +6 -7
 - package/dist/store/index.js +1 -1
 - package/dist/store/reducers/nodes/nodes.ts +14 -5
 - package/dist/store/reducers/nodes/types.ts +22 -3
 - package/dist/store/reducers/nodes/utils.ts +23 -10
 - package/dist/store/reducers/preview.ts +6 -4
 - package/dist/store/reducers/schemaAcl/schemaAcl.ts +17 -0
 - package/dist/store/reducers/schemaAcl/types.ts +9 -7
 - package/dist/store/reducers/tenant/constants.ts +6 -0
 - package/dist/store/reducers/tenant/tenant.ts +15 -0
 - package/dist/store/reducers/tenant/types.ts +18 -3
 - package/dist/store/state-url-mapping.js +3 -0
 - package/dist/types/api/cluster.ts +1 -1
 - package/dist/types/api/compute.ts +11 -11
 - package/dist/types/api/error.ts +2 -2
 - package/dist/types/api/netInfo.ts +3 -3
 - package/dist/types/api/nodes.ts +9 -8
 - package/dist/types/api/query.ts +1 -1
 - package/dist/types/api/schema/schema.ts +3 -0
 - package/dist/types/api/schema/shared.ts +3 -3
 - package/dist/types/api/schema/table.ts +22 -22
 - package/dist/types/api/storage.ts +1 -1
 - package/dist/types/assets.d.ts +1 -2
 - package/dist/types/store/executeQuery.ts +2 -3
 - package/dist/types/store/executeTopQueries.ts +8 -5
 - package/dist/types/store/explainQuery.ts +4 -4
 - package/dist/types/store/query.ts +4 -3
 - package/dist/types/store/shardsWorkload.ts +8 -5
 - package/dist/utils/constants.ts +4 -1
 - package/dist/utils/error.ts +2 -3
 - package/dist/utils/query.ts +3 -9
 - package/dist/utils/tests/providers.tsx +6 -9
 - package/package.json +6 -2
 - package/dist/containers/Tenant/Acl/Acl.js +0 -153
 - package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +0 -94
 
| 
         @@ -7,6 +7,7 @@ import type { 
     | 
|
| 
       7 
7 
     | 
    
         
             
                TenantPage,
         
     | 
| 
       8 
8 
     | 
    
         
             
                TenantQueryTab,
         
     | 
| 
       9 
9 
     | 
    
         
             
                TenantState,
         
     | 
| 
      
 10 
     | 
    
         
            +
                TenantSummaryTab,
         
     | 
| 
       10 
11 
     | 
    
         
             
            } from './types';
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
            import '../../../services/api';
         
     | 
| 
         @@ -17,6 +18,7 @@ export const FETCH_TENANT = createRequestActionTypes('tenant', 'FETCH_TENANT'); 
     | 
|
| 
       17 
18 
     | 
    
         
             
            const SET_TOP_LEVEL_TAB = 'tenant/SET_TOP_LEVEL_TAB';
         
     | 
| 
       18 
19 
     | 
    
         
             
            const SET_QUERY_TAB = 'tenant/SET_QUERY_TAB';
         
     | 
| 
       19 
20 
     | 
    
         
             
            const SET_DIAGNOSTICS_TAB = 'tenant/SET_DIAGNOSTICS_TAB';
         
     | 
| 
      
 21 
     | 
    
         
            +
            const SET_SUMMARY_TAB = 'tenant/SET_SUMMARY_TAB';
         
     | 
| 
       20 
22 
     | 
    
         
             
            const CLEAR_TENANT = 'tenant/CLEAR_TENANT';
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
       22 
24 
     | 
    
         
             
            const initialState = {loading: false, wasLoaded: false};
         
     | 
| 
         @@ -75,6 +77,12 @@ const tenantReducer: Reducer<TenantState, TenantAction> = (state = initialState, 
     | 
|
| 
       75 
77 
     | 
    
         
             
                            diagnosticsTab: action.data,
         
     | 
| 
       76 
78 
     | 
    
         
             
                        };
         
     | 
| 
       77 
79 
     | 
    
         
             
                    }
         
     | 
| 
      
 80 
     | 
    
         
            +
                    case SET_SUMMARY_TAB: {
         
     | 
| 
      
 81 
     | 
    
         
            +
                        return {
         
     | 
| 
      
 82 
     | 
    
         
            +
                            ...state,
         
     | 
| 
      
 83 
     | 
    
         
            +
                            summaryTab: action.data,
         
     | 
| 
      
 84 
     | 
    
         
            +
                        };
         
     | 
| 
      
 85 
     | 
    
         
            +
                    }
         
     | 
| 
       78 
86 
     | 
    
         | 
| 
       79 
87 
     | 
    
         
             
                    default:
         
     | 
| 
       80 
88 
     | 
    
         
             
                        return state;
         
     | 
| 
         @@ -116,4 +124,11 @@ export function setDiagnosticsTab(tab: TenantDiagnosticsTab) { 
     | 
|
| 
       116 
124 
     | 
    
         
             
                } as const;
         
     | 
| 
       117 
125 
     | 
    
         
             
            }
         
     | 
| 
       118 
126 
     | 
    
         | 
| 
      
 127 
     | 
    
         
            +
            export function setSummaryTab(tab: TenantSummaryTab) {
         
     | 
| 
      
 128 
     | 
    
         
            +
                return {
         
     | 
| 
      
 129 
     | 
    
         
            +
                    type: SET_SUMMARY_TAB,
         
     | 
| 
      
 130 
     | 
    
         
            +
                    data: tab,
         
     | 
| 
      
 131 
     | 
    
         
            +
                } as const;
         
     | 
| 
      
 132 
     | 
    
         
            +
            }
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
       119 
134 
     | 
    
         
             
            export default tenantReducer;
         
     | 
| 
         @@ -3,13 +3,26 @@ import type {TTenant} from '../../../types/api/tenant'; 
     | 
|
| 
       3 
3 
     | 
    
         
             
            import type {ValueOf} from '../../../types/common';
         
     | 
| 
       4 
4 
     | 
    
         
             
            import type {ApiRequestAction} from '../../utils';
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            import { 
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
            import {
         
     | 
| 
      
 7 
     | 
    
         
            +
                TENANT_QUERY_TABS_ID,
         
     | 
| 
      
 8 
     | 
    
         
            +
                TENANT_DIAGNOSTICS_TABS_IDS,
         
     | 
| 
      
 9 
     | 
    
         
            +
                TENANT_PAGES_IDS,
         
     | 
| 
      
 10 
     | 
    
         
            +
                TENANT_SUMMARY_TABS_IDS,
         
     | 
| 
      
 11 
     | 
    
         
            +
            } from './constants';
         
     | 
| 
      
 12 
     | 
    
         
            +
            import {
         
     | 
| 
      
 13 
     | 
    
         
            +
                FETCH_TENANT,
         
     | 
| 
      
 14 
     | 
    
         
            +
                clearTenant,
         
     | 
| 
      
 15 
     | 
    
         
            +
                setDiagnosticsTab,
         
     | 
| 
      
 16 
     | 
    
         
            +
                setQueryTab,
         
     | 
| 
      
 17 
     | 
    
         
            +
                setSummaryTab,
         
     | 
| 
      
 18 
     | 
    
         
            +
                setTenantPage,
         
     | 
| 
      
 19 
     | 
    
         
            +
            } from './tenant';
         
     | 
| 
       8 
20 
     | 
    
         | 
| 
       9 
21 
     | 
    
         
             
            export type TenantPage = ValueOf<typeof TENANT_PAGES_IDS>;
         
     | 
| 
       10 
22 
     | 
    
         | 
| 
       11 
23 
     | 
    
         
             
            export type TenantQueryTab = ValueOf<typeof TENANT_QUERY_TABS_ID>;
         
     | 
| 
       12 
24 
     | 
    
         
             
            export type TenantDiagnosticsTab = ValueOf<typeof TENANT_DIAGNOSTICS_TABS_IDS>;
         
     | 
| 
      
 25 
     | 
    
         
            +
            export type TenantSummaryTab = ValueOf<typeof TENANT_SUMMARY_TABS_IDS>;
         
     | 
| 
       13 
26 
     | 
    
         | 
| 
       14 
27 
     | 
    
         
             
            export interface TenantState {
         
     | 
| 
       15 
28 
     | 
    
         
             
                loading: boolean;
         
     | 
| 
         @@ -17,6 +30,7 @@ export interface TenantState { 
     | 
|
| 
       17 
30 
     | 
    
         
             
                tenantPage?: TenantPage;
         
     | 
| 
       18 
31 
     | 
    
         
             
                queryTab?: TenantQueryTab;
         
     | 
| 
       19 
32 
     | 
    
         
             
                diagnosticsTab?: TenantDiagnosticsTab;
         
     | 
| 
      
 33 
     | 
    
         
            +
                summaryTab?: TenantSummaryTab;
         
     | 
| 
       20 
34 
     | 
    
         
             
                tenant?: TTenant;
         
     | 
| 
       21 
35 
     | 
    
         
             
                error?: IResponseError;
         
     | 
| 
       22 
36 
     | 
    
         
             
            }
         
     | 
| 
         @@ -26,4 +40,5 @@ export type TenantAction = 
     | 
|
| 
       26 
40 
     | 
    
         
             
                | ReturnType<typeof clearTenant>
         
     | 
| 
       27 
41 
     | 
    
         
             
                | ReturnType<typeof setTenantPage>
         
     | 
| 
       28 
42 
     | 
    
         
             
                | ReturnType<typeof setQueryTab>
         
     | 
| 
       29 
     | 
    
         
            -
                | ReturnType<typeof setDiagnosticsTab 
     | 
| 
      
 43 
     | 
    
         
            +
                | ReturnType<typeof setDiagnosticsTab>
         
     | 
| 
      
 44 
     | 
    
         
            +
                | ReturnType<typeof setSummaryTab>;
         
     | 
| 
         @@ -62,18 +62,18 @@ export interface TTabletStateInfo { 
     | 
|
| 
       62 
62 
     | 
    
         
             
            }
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
            export enum EVersion {
         
     | 
| 
       65 
     | 
    
         
            -
                v1,
         
     | 
| 
       66 
     | 
    
         
            -
                v2, // only this versions works with sorting
         
     | 
| 
      
 65 
     | 
    
         
            +
                v1 = 'v1',
         
     | 
| 
      
 66 
     | 
    
         
            +
                v2 = 'v2', // only this versions works with sorting
         
     | 
| 
       67 
67 
     | 
    
         
             
            }
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
            export enum ESort {
         
     | 
| 
       70 
     | 
    
         
            -
                NodeId,
         
     | 
| 
       71 
     | 
    
         
            -
                Host,
         
     | 
| 
       72 
     | 
    
         
            -
                DC,
         
     | 
| 
       73 
     | 
    
         
            -
                Rack,
         
     | 
| 
       74 
     | 
    
         
            -
                Version,
         
     | 
| 
       75 
     | 
    
         
            -
                Uptime,
         
     | 
| 
       76 
     | 
    
         
            -
                Memory,
         
     | 
| 
       77 
     | 
    
         
            -
                CPU,
         
     | 
| 
       78 
     | 
    
         
            -
                LoadAverage,
         
     | 
| 
      
 70 
     | 
    
         
            +
                NodeId = 'NodeId',
         
     | 
| 
      
 71 
     | 
    
         
            +
                Host = 'Host',
         
     | 
| 
      
 72 
     | 
    
         
            +
                DC = 'DC',
         
     | 
| 
      
 73 
     | 
    
         
            +
                Rack = 'Rack',
         
     | 
| 
      
 74 
     | 
    
         
            +
                Version = 'Version',
         
     | 
| 
      
 75 
     | 
    
         
            +
                Uptime = 'Uptime',
         
     | 
| 
      
 76 
     | 
    
         
            +
                Memory = 'Memory',
         
     | 
| 
      
 77 
     | 
    
         
            +
                CPU = 'CPU',
         
     | 
| 
      
 78 
     | 
    
         
            +
                LoadAverage = 'LoadAverage',
         
     | 
| 
       79 
79 
     | 
    
         
             
            }
         
     | 
    
        package/dist/types/api/error.ts
    CHANGED
    
    
    
        package/dist/types/api/nodes.ts
    CHANGED
    
    | 
         @@ -103,12 +103,13 @@ enum EConfigState { 
     | 
|
| 
       103 
103 
     | 
    
         
             
            }
         
     | 
| 
       104 
104 
     | 
    
         | 
| 
       105 
105 
     | 
    
         
             
            export enum ESort {
         
     | 
| 
       106 
     | 
    
         
            -
                NodeId,
         
     | 
| 
       107 
     | 
    
         
            -
                Host,
         
     | 
| 
       108 
     | 
    
         
            -
                DC,
         
     | 
| 
       109 
     | 
    
         
            -
                 
     | 
| 
       110 
     | 
    
         
            -
                 
     | 
| 
       111 
     | 
    
         
            -
                 
     | 
| 
       112 
     | 
    
         
            -
                 
     | 
| 
       113 
     | 
    
         
            -
                 
     | 
| 
      
 106 
     | 
    
         
            +
                NodeId = 'NodeId',
         
     | 
| 
      
 107 
     | 
    
         
            +
                Host = 'Host',
         
     | 
| 
      
 108 
     | 
    
         
            +
                DC = 'DC',
         
     | 
| 
      
 109 
     | 
    
         
            +
                Rack = 'Rack',
         
     | 
| 
      
 110 
     | 
    
         
            +
                Version = 'Version',
         
     | 
| 
      
 111 
     | 
    
         
            +
                Uptime = 'Uptime',
         
     | 
| 
      
 112 
     | 
    
         
            +
                Memory = 'Memory',
         
     | 
| 
      
 113 
     | 
    
         
            +
                CPU = 'CPU',
         
     | 
| 
      
 114 
     | 
    
         
            +
                LoadAverage = 'LoadAverage',
         
     | 
| 
       114 
115 
     | 
    
         
             
            }
         
     | 
    
        package/dist/types/api/query.ts
    CHANGED
    
    
| 
         @@ -260,6 +260,9 @@ export enum EPathType { 
     | 
|
| 
       260 
260 
     | 
    
         
             
                EPathTypeColumnStore = 'EPathTypeColumnStore',
         
     | 
| 
       261 
261 
     | 
    
         
             
                EPathTypeColumnTable = 'EPathTypeColumnTable',
         
     | 
| 
       262 
262 
     | 
    
         
             
                EPathTypeCdcStream = 'EPathTypeCdcStream',
         
     | 
| 
      
 263 
     | 
    
         
            +
             
     | 
| 
      
 264 
     | 
    
         
            +
                EPathTypeExternalDataSource = 'EPathTypeExternalDataSource',
         
     | 
| 
      
 265 
     | 
    
         
            +
                EPathTypeExternalTable = 'EPathTypeExternalTable',
         
     | 
| 
       263 
266 
     | 
    
         
             
            }
         
     | 
| 
       264 
267 
     | 
    
         | 
| 
       265 
268 
     | 
    
         
             
            export enum EPathSubType {
         
     | 
| 
         @@ -28,9 +28,9 @@ export interface TColumnDescription { 
     | 
|
| 
       28 
28 
     | 
    
         
             
            }
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
            export enum EColumnCodec {
         
     | 
| 
       31 
     | 
    
         
            -
                ColumnCodecPlain,
         
     | 
| 
       32 
     | 
    
         
            -
                ColumnCodecLZ4,
         
     | 
| 
       33 
     | 
    
         
            -
                ColumnCodecZSTD,
         
     | 
| 
      
 31 
     | 
    
         
            +
                ColumnCodecPlain = 'ColumnCodecPlain',
         
     | 
| 
      
 32 
     | 
    
         
            +
                ColumnCodecLZ4 = 'ColumnCodecLZ4',
         
     | 
| 
      
 33 
     | 
    
         
            +
                ColumnCodecZSTD = 'ColumnCodecZSTD',
         
     | 
| 
       34 
34 
     | 
    
         
             
            }
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            export enum EUnit {
         
     | 
| 
         @@ -579,38 +579,38 @@ interface TBackgroundPolicy { 
     | 
|
| 
       579 
579 
     | 
    
         
             
            }
         
     | 
| 
       580 
580 
     | 
    
         | 
| 
       581 
581 
     | 
    
         
             
            enum EPurpose {
         
     | 
| 
       582 
     | 
    
         
            -
                SysLog,
         
     | 
| 
       583 
     | 
    
         
            -
                Log,
         
     | 
| 
       584 
     | 
    
         
            -
                Data,
         
     | 
| 
       585 
     | 
    
         
            -
                External,
         
     | 
| 
      
 582 
     | 
    
         
            +
                SysLog = 'SysLog',
         
     | 
| 
      
 583 
     | 
    
         
            +
                Log = 'Log',
         
     | 
| 
      
 584 
     | 
    
         
            +
                Data = 'Data',
         
     | 
| 
      
 585 
     | 
    
         
            +
                External = 'External',
         
     | 
| 
       586 
586 
     | 
    
         
             
            }
         
     | 
| 
       587 
587 
     | 
    
         | 
| 
       588 
588 
     | 
    
         
             
            enum EFreezeState {
         
     | 
| 
       589 
     | 
    
         
            -
                Unspecified,
         
     | 
| 
       590 
     | 
    
         
            -
                Freeze,
         
     | 
| 
       591 
     | 
    
         
            -
                Unfreeze,
         
     | 
| 
      
 589 
     | 
    
         
            +
                Unspecified = 'Unspecified',
         
     | 
| 
      
 590 
     | 
    
         
            +
                Freeze = 'Freeze',
         
     | 
| 
      
 591 
     | 
    
         
            +
                Unfreeze = 'Unfreeze',
         
     | 
| 
       592 
592 
     | 
    
         
             
            }
         
     | 
| 
       593 
593 
     | 
    
         | 
| 
       594 
594 
     | 
    
         
             
            enum EColumnCache {
         
     | 
| 
       595 
     | 
    
         
            -
                ColumnCacheNone,
         
     | 
| 
       596 
     | 
    
         
            -
                ColumnCacheOnce,
         
     | 
| 
       597 
     | 
    
         
            -
                ColumnCacheEver,
         
     | 
| 
      
 595 
     | 
    
         
            +
                ColumnCacheNone = 'ColumnCacheNone',
         
     | 
| 
      
 596 
     | 
    
         
            +
                ColumnCacheOnce = 'ColumnCacheOnce',
         
     | 
| 
      
 597 
     | 
    
         
            +
                ColumnCacheEver = 'ColumnCacheEver',
         
     | 
| 
       598 
598 
     | 
    
         
             
            }
         
     | 
| 
       599 
599 
     | 
    
         | 
| 
       600 
600 
     | 
    
         
             
            enum EColumnStorage {
         
     | 
| 
       601 
     | 
    
         
            -
                ColumnStorage1,
         
     | 
| 
       602 
     | 
    
         
            -
                ColumnStorage2,
         
     | 
| 
       603 
     | 
    
         
            -
                ColumnStorage1Ext1,
         
     | 
| 
       604 
     | 
    
         
            -
                ColumnStorage1Ext2,
         
     | 
| 
       605 
     | 
    
         
            -
                ColumnStorage2Ext1,
         
     | 
| 
       606 
     | 
    
         
            -
                ColumnStorage2Ext2,
         
     | 
| 
       607 
     | 
    
         
            -
                ColumnStorage1Med2Ext2,
         
     | 
| 
       608 
     | 
    
         
            -
                ColumnStorage2Med2Ext2,
         
     | 
| 
       609 
     | 
    
         
            -
                ColumnStorageTest_1_2_1k,
         
     | 
| 
      
 601 
     | 
    
         
            +
                ColumnStorage1 = 'ColumnStorage1',
         
     | 
| 
      
 602 
     | 
    
         
            +
                ColumnStorage2 = 'ColumnStorage2',
         
     | 
| 
      
 603 
     | 
    
         
            +
                ColumnStorage1Ext1 = 'ColumnStorage1Ext1',
         
     | 
| 
      
 604 
     | 
    
         
            +
                ColumnStorage1Ext2 = 'ColumnStorage1Ext2',
         
     | 
| 
      
 605 
     | 
    
         
            +
                ColumnStorage2Ext1 = 'ColumnStorage2Ext1',
         
     | 
| 
      
 606 
     | 
    
         
            +
                ColumnStorage2Ext2 = 'ColumnStorage2Ext2',
         
     | 
| 
      
 607 
     | 
    
         
            +
                ColumnStorage1Med2Ext2 = 'ColumnStorage1Med2Ext2',
         
     | 
| 
      
 608 
     | 
    
         
            +
                ColumnStorage2Med2Ext2 = 'ColumnStorage2Med2Ext2',
         
     | 
| 
      
 609 
     | 
    
         
            +
                ColumnStorageTest_1_2_1k = 'ColumnStorageTest_1_2_1k',
         
     | 
| 
       610 
610 
     | 
    
         
             
            }
         
     | 
| 
       611 
611 
     | 
    
         | 
| 
       612 
612 
     | 
    
         
             
            enum ECompactionStrategy {
         
     | 
| 
       613 
     | 
    
         
            -
                CompactionStrategyUnset,
         
     | 
| 
       614 
     | 
    
         
            -
                CompactionStrategyGenerational,
         
     | 
| 
       615 
     | 
    
         
            -
                CompactionStrategySharded,
         
     | 
| 
      
 613 
     | 
    
         
            +
                CompactionStrategyUnset = 'CompactionStrategyUnset',
         
     | 
| 
      
 614 
     | 
    
         
            +
                CompactionStrategyGenerational = 'CompactionStrategyGenerational',
         
     | 
| 
      
 615 
     | 
    
         
            +
                CompactionStrategySharded = 'CompactionStrategySharded',
         
     | 
| 
       616 
616 
     | 
    
         
             
            }
         
     | 
    
        package/dist/types/assets.d.ts
    CHANGED
    
    | 
         @@ -8,5 +8,4 @@ declare module '*.jpg'; 
     | 
|
| 
       8 
8 
     | 
    
         
             
            declare module '*.jpeg';
         
     | 
| 
       9 
9 
     | 
    
         
             
            declare module '*.ico';
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
            declare type SVGIconData =
         
     | 
| 
       12 
     | 
    
         
            -
                import('@gravity-ui/uikit/build/esm/components/Icon/types').SVGIconData;
         
     | 
| 
      
 11 
     | 
    
         
            +
            declare type SVGIconData = import('@gravity-ui/uikit/build/esm/components/Icon/types').SVGIconData;
         
     | 
| 
         @@ -9,9 +9,8 @@ import { 
     | 
|
| 
       9 
9 
     | 
    
         
             
                MONACO_HOT_KEY_ACTIONS,
         
     | 
| 
       10 
10 
     | 
    
         
             
            } from '../../store/reducers/executeQuery';
         
     | 
| 
       11 
11 
     | 
    
         
             
            import type {ApiRequestAction} from '../../store/utils';
         
     | 
| 
       12 
     | 
    
         
            -
            import type {ErrorResponse} from '../api/query';
         
     | 
| 
       13 
12 
     | 
    
         
             
            import type {ValueOf} from '../common';
         
     | 
| 
       14 
     | 
    
         
            -
            import type {IQueryResult, QueryError} from './query';
         
     | 
| 
      
 13 
     | 
    
         
            +
            import type {IQueryResult, QueryError, QueryErrorResponse} from './query';
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
15 
     | 
    
         
             
            export type MonacoHotKeyAction = ValueOf<typeof MONACO_HOT_KEY_ACTIONS>;
         
     | 
| 
       17 
16 
     | 
    
         | 
| 
         @@ -26,7 +25,7 @@ export interface ExecuteQueryState { 
     | 
|
| 
       26 
25 
     | 
    
         
             
                tenantPath?: string;
         
     | 
| 
       27 
26 
     | 
    
         
             
                data?: IQueryResult;
         
     | 
| 
       28 
27 
     | 
    
         
             
                stats?: IQueryResult['stats'];
         
     | 
| 
       29 
     | 
    
         
            -
                error?: string |  
     | 
| 
      
 28 
     | 
    
         
            +
                error?: string | QueryErrorResponse;
         
     | 
| 
       30 
29 
     | 
    
         
             
            }
         
     | 
| 
       31 
30 
     | 
    
         | 
| 
       32 
31 
     | 
    
         
             
            type SendQueryAction = ApiRequestAction<typeof SEND_QUERY, IQueryResult, QueryError>;
         
     | 
| 
         @@ -1,7 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { 
     | 
| 
      
 1 
     | 
    
         
            +
            import {
         
     | 
| 
      
 2 
     | 
    
         
            +
                FETCH_TOP_QUERIES,
         
     | 
| 
      
 3 
     | 
    
         
            +
                setTopQueriesState,
         
     | 
| 
      
 4 
     | 
    
         
            +
                setTopQueriesFilters,
         
     | 
| 
      
 5 
     | 
    
         
            +
            } from '../../store/reducers/executeTopQueries';
         
     | 
| 
       2 
6 
     | 
    
         
             
            import type {ApiRequestAction} from '../../store/utils';
         
     | 
| 
       3 
     | 
    
         
            -
            import type { 
     | 
| 
       4 
     | 
    
         
            -
            import type {IQueryResult} from './query';
         
     | 
| 
      
 7 
     | 
    
         
            +
            import type {IQueryResult, QueryErrorResponse} from './query';
         
     | 
| 
       5 
8 
     | 
    
         | 
| 
       6 
9 
     | 
    
         
             
            export interface ITopQueriesFilters {
         
     | 
| 
       7 
10 
     | 
    
         
             
                /** ms from epoch */
         
     | 
| 
         @@ -15,12 +18,12 @@ export interface ITopQueriesState { 
     | 
|
| 
       15 
18 
     | 
    
         
             
                loading: boolean;
         
     | 
| 
       16 
19 
     | 
    
         
             
                wasLoaded: boolean;
         
     | 
| 
       17 
20 
     | 
    
         
             
                data?: IQueryResult;
         
     | 
| 
       18 
     | 
    
         
            -
                error?:  
     | 
| 
      
 21 
     | 
    
         
            +
                error?: QueryErrorResponse;
         
     | 
| 
       19 
22 
     | 
    
         
             
                filters: ITopQueriesFilters;
         
     | 
| 
       20 
23 
     | 
    
         
             
            }
         
     | 
| 
       21 
24 
     | 
    
         | 
| 
       22 
25 
     | 
    
         
             
            export type ITopQueriesAction =
         
     | 
| 
       23 
     | 
    
         
            -
                | ApiRequestAction<typeof FETCH_TOP_QUERIES, IQueryResult,  
     | 
| 
      
 26 
     | 
    
         
            +
                | ApiRequestAction<typeof FETCH_TOP_QUERIES, IQueryResult, QueryErrorResponse>
         
     | 
| 
       24 
27 
     | 
    
         
             
                | ReturnType<typeof setTopQueriesState>
         
     | 
| 
       25 
28 
     | 
    
         
             
                | ReturnType<typeof setTopQueriesFilters>;
         
     | 
| 
       26 
29 
     | 
    
         | 
| 
         @@ -2,8 +2,8 @@ import type {ExplainPlanNodeData, GraphNode, Link} from '@gravity-ui/paranoid'; 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            import {GET_EXPLAIN_QUERY, GET_EXPLAIN_QUERY_AST} from '../../store/reducers/explainQuery';
         
     | 
| 
       4 
4 
     | 
    
         
             
            import type {ApiRequestAction} from '../../store/utils';
         
     | 
| 
       5 
     | 
    
         
            -
            import type {PlanTable,  
     | 
| 
       6 
     | 
    
         
            -
            import type {IQueryResult, QueryError} from './query';
         
     | 
| 
      
 5 
     | 
    
         
            +
            import type {PlanTable, QueryPlan, ScriptPlan} from '../api/query';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import type {IQueryResult, QueryError, QueryErrorResponse} from './query';
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            export interface PreparedExplainResponse {
         
     | 
| 
       9 
9 
     | 
    
         
             
                plan?: {
         
     | 
| 
         @@ -20,8 +20,8 @@ export interface ExplainQueryState { 
     | 
|
| 
       20 
20 
     | 
    
         
             
                loading: boolean;
         
     | 
| 
       21 
21 
     | 
    
         
             
                data?: PreparedExplainResponse['plan'];
         
     | 
| 
       22 
22 
     | 
    
         
             
                dataAst?: PreparedExplainResponse['ast'];
         
     | 
| 
       23 
     | 
    
         
            -
                error?: string |  
     | 
| 
       24 
     | 
    
         
            -
                errorAst?: string |  
     | 
| 
      
 23 
     | 
    
         
            +
                error?: string | QueryErrorResponse;
         
     | 
| 
      
 24 
     | 
    
         
            +
                errorAst?: string | QueryErrorResponse;
         
     | 
| 
       25 
25 
     | 
    
         
             
            }
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            type GetExplainQueryAstAction = ApiRequestAction<
         
     | 
| 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import {QUERY_ACTIONS, QUERY_MODES} from '../../utils/query';
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            import type {NetworkError} from '../api/error';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import type {IResponseError, NetworkError} from '../api/error';
         
     | 
| 
       4 
4 
     | 
    
         
             
            import type {
         
     | 
| 
       5 
5 
     | 
    
         
             
                KeyValueRow,
         
     | 
| 
       6 
6 
     | 
    
         
             
                ColumnType,
         
     | 
| 
       7 
     | 
    
         
            -
                ErrorResponse,
         
     | 
| 
      
 7 
     | 
    
         
            +
                ErrorResponse as QueryErrorResponseData,
         
     | 
| 
       8 
8 
     | 
    
         
             
                ScriptPlan,
         
     | 
| 
       9 
9 
     | 
    
         
             
                QueryPlan,
         
     | 
| 
       10 
10 
     | 
    
         
             
                TKqpStatsQuery,
         
     | 
| 
         @@ -24,7 +24,8 @@ export interface QueryRequestParams { 
     | 
|
| 
       24 
24 
     | 
    
         
             
                query: string;
         
     | 
| 
       25 
25 
     | 
    
         
             
            }
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
            export type  
     | 
| 
      
 27 
     | 
    
         
            +
            export type QueryErrorResponse = IResponseError<QueryErrorResponseData>;
         
     | 
| 
      
 28 
     | 
    
         
            +
            export type QueryError = NetworkError | QueryErrorResponse;
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
            export type QueryAction = ValueOf<typeof QUERY_ACTIONS>;
         
     | 
| 
       30 
31 
     | 
    
         
             
            export type QueryMode = ValueOf<typeof QUERY_MODES>;
         
     | 
| 
         @@ -1,7 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { 
     | 
| 
      
 1 
     | 
    
         
            +
            import {
         
     | 
| 
      
 2 
     | 
    
         
            +
                SEND_SHARD_QUERY,
         
     | 
| 
      
 3 
     | 
    
         
            +
                setShardsState,
         
     | 
| 
      
 4 
     | 
    
         
            +
                setShardsQueryFilters,
         
     | 
| 
      
 5 
     | 
    
         
            +
            } from '../../store/reducers/shardsWorkload';
         
     | 
| 
       2 
6 
     | 
    
         
             
            import type {ApiRequestAction} from '../../store/utils';
         
     | 
| 
       3 
     | 
    
         
            -
            import type { 
     | 
| 
       4 
     | 
    
         
            -
            import type {IQueryResult} from './query';
         
     | 
| 
      
 7 
     | 
    
         
            +
            import type {IQueryResult, QueryErrorResponse} from './query';
         
     | 
| 
       5 
8 
     | 
    
         | 
| 
       6 
9 
     | 
    
         
             
            export enum EShardsWorkloadMode {
         
     | 
| 
       7 
10 
     | 
    
         
             
                Immediate = 'immediate',
         
     | 
| 
         @@ -20,12 +23,12 @@ export interface IShardsWorkloadState { 
     | 
|
| 
       20 
23 
     | 
    
         
             
                loading: boolean;
         
     | 
| 
       21 
24 
     | 
    
         
             
                wasLoaded: boolean;
         
     | 
| 
       22 
25 
     | 
    
         
             
                data?: IQueryResult;
         
     | 
| 
       23 
     | 
    
         
            -
                error?:  
     | 
| 
      
 26 
     | 
    
         
            +
                error?: QueryErrorResponse;
         
     | 
| 
       24 
27 
     | 
    
         
             
                filters: IShardsWorkloadFilters;
         
     | 
| 
       25 
28 
     | 
    
         
             
            }
         
     | 
| 
       26 
29 
     | 
    
         | 
| 
       27 
30 
     | 
    
         
             
            export type IShardsWorkloadAction =
         
     | 
| 
       28 
     | 
    
         
            -
                | ApiRequestAction<typeof SEND_SHARD_QUERY, IQueryResult,  
     | 
| 
      
 31 
     | 
    
         
            +
                | ApiRequestAction<typeof SEND_SHARD_QUERY, IQueryResult, QueryErrorResponse>
         
     | 
| 
       29 
32 
     | 
    
         
             
                | ReturnType<typeof setShardsState>
         
     | 
| 
       30 
33 
     | 
    
         
             
                | ReturnType<typeof setShardsQueryFilters>;
         
     | 
| 
       31 
34 
     | 
    
         | 
    
        package/dist/utils/constants.ts
    CHANGED
    
    | 
         @@ -75,8 +75,11 @@ export const COLORS_PRIORITY = { 
     | 
|
| 
       75 
75 
     | 
    
         
             
                grey: 1,
         
     | 
| 
       76 
76 
     | 
    
         
             
            };
         
     | 
| 
       77 
77 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
            // ==== Titles ====
         
     | 
| 
      
 79 
     | 
    
         
            +
            export const DEVELOPER_UI_TITLE = 'Developer UI';
         
     | 
| 
      
 80 
     | 
    
         
            +
            export const CLUSTER_DEFAULT_TITLE = 'Cluster';
         
     | 
| 
       79 
81 
     | 
    
         | 
| 
      
 82 
     | 
    
         
            +
            // ==== Settings ====
         
     | 
| 
       80 
83 
     | 
    
         
             
            export const THEME_KEY = 'theme';
         
     | 
| 
       81 
84 
     | 
    
         
             
            export const INVERTED_DISKS_KEY = 'invertedDisks';
         
     | 
| 
       82 
85 
     | 
    
         
             
            export const USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY = 'useNodesEndpointInDiagnostics';
         
     | 
    
        package/dist/utils/error.ts
    CHANGED
    
    | 
         @@ -1,10 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import type {AxiosError} from 'axios';
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            import type {IResponseError, NetworkError} from '../types/api/error';
         
     | 
| 
       4 
     | 
    
         
            -
            import type { 
     | 
| 
       5 
     | 
    
         
            -
            import type {QueryError} from '../types/store/query';
         
     | 
| 
      
 4 
     | 
    
         
            +
            import type {QueryError, QueryErrorResponse} from '../types/store/query';
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            type RequestError = NetworkError | IResponseError | AxiosError |  
     | 
| 
      
 6 
     | 
    
         
            +
            type RequestError = NetworkError | IResponseError | AxiosError | unknown;
         
     | 
| 
       8 
7 
     | 
    
         | 
| 
       9 
8 
     | 
    
         
             
            const isNetworkError = (error: RequestError): error is NetworkError => {
         
     | 
| 
       10 
9 
     | 
    
         
             
                return Boolean(
         
     | 
    
        package/dist/utils/query.ts
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ import type { 
     | 
|
| 
       7 
7 
     | 
    
         
             
                QueryPlan,
         
     | 
| 
       8 
8 
     | 
    
         
             
                ScriptPlan,
         
     | 
| 
       9 
9 
     | 
    
         
             
            } from '../types/api/query';
         
     | 
| 
       10 
     | 
    
         
            -
            import type {IQueryResult} from '../types/store/query';
         
     | 
| 
      
 10 
     | 
    
         
            +
            import type {IQueryResult, QueryErrorResponse} from '../types/store/query';
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            export const QUERY_ACTIONS = {
         
     | 
| 
       13 
13 
     | 
    
         
             
                execute: 'execute',
         
     | 
| 
         @@ -169,12 +169,6 @@ export const prepareQueryResponse = (data?: KeyValueRow[]) => { 
     | 
|
| 
       169 
169 
     | 
    
         
             
                });
         
     | 
| 
       170 
170 
     | 
    
         
             
            };
         
     | 
| 
       171 
171 
     | 
    
         | 
| 
       172 
     | 
    
         
            -
            export function prepareQueryError(error:  
     | 
| 
       173 
     | 
    
         
            -
                return  
     | 
| 
       174 
     | 
    
         
            -
                    error.data?.error?.message ||
         
     | 
| 
       175 
     | 
    
         
            -
                    error.message ||
         
     | 
| 
       176 
     | 
    
         
            -
                    error.data ||
         
     | 
| 
       177 
     | 
    
         
            -
                    error.statusText ||
         
     | 
| 
       178 
     | 
    
         
            -
                    JSON.stringify(error)
         
     | 
| 
       179 
     | 
    
         
            -
                );
         
     | 
| 
      
 172 
     | 
    
         
            +
            export function prepareQueryError(error: QueryErrorResponse) {
         
     | 
| 
      
 173 
     | 
    
         
            +
                return error.data?.error?.message || error.statusText;
         
     | 
| 
       180 
174 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import React, {PropsWithChildren} from 'react';
         
     | 
| 
       2 
     | 
    
         
            -
            import {Provider} from 'react-redux'
         
     | 
| 
       3 
     | 
    
         
            -
            import {render} from '@testing-library/react'
         
     | 
| 
       4 
     | 
    
         
            -
            import type {RenderOptions} from '@testing-library/react'
         
     | 
| 
      
 2 
     | 
    
         
            +
            import {Provider} from 'react-redux';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import {render} from '@testing-library/react';
         
     | 
| 
      
 4 
     | 
    
         
            +
            import type {RenderOptions} from '@testing-library/react';
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            import configureStore from '../../store';
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
         @@ -14,16 +14,13 @@ interface ExtendedRenderOptions extends Omit<RenderOptions, 'queries'> { 
     | 
|
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            export const renderWithStore = (
         
     | 
| 
       16 
16 
     | 
    
         
             
                ui: React.ReactElement,
         
     | 
| 
       17 
     | 
    
         
            -
                {
         
     | 
| 
       18 
     | 
    
         
            -
                    storeConfiguration = configureStore(),
         
     | 
| 
       19 
     | 
    
         
            -
                    ...renderOptions
         
     | 
| 
       20 
     | 
    
         
            -
                }: ExtendedRenderOptions = {}
         
     | 
| 
      
 17 
     | 
    
         
            +
                {storeConfiguration = configureStore(), ...renderOptions}: ExtendedRenderOptions = {},
         
     | 
| 
       21 
18 
     | 
    
         
             
            ) => {
         
     | 
| 
       22 
19 
     | 
    
         
             
                const {store} = storeConfiguration;
         
     | 
| 
       23 
20 
     | 
    
         | 
| 
       24 
21 
     | 
    
         
             
                function Wrapper({children}: PropsWithChildren<{}>) {
         
     | 
| 
       25 
     | 
    
         
            -
                    return <Provider store={store}>{children}</Provider 
     | 
| 
      
 22 
     | 
    
         
            +
                    return <Provider store={store}>{children}</Provider>;
         
     | 
| 
       26 
23 
     | 
    
         
             
                }
         
     | 
| 
       27 
24 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                return {store, ...render(ui, {wrapper: Wrapper, ...renderOptions})}
         
     | 
| 
      
 25 
     | 
    
         
            +
                return {store, ...render(ui, {wrapper: Wrapper, ...renderOptions})};
         
     | 
| 
       29 
26 
     | 
    
         
             
            };
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "ydb-embedded-ui",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "4. 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "4.11.0",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "files": [
         
     | 
| 
       5 
5 
     | 
    
         
             
                "dist"
         
     | 
| 
       6 
6 
     | 
    
         
             
              ],
         
     | 
| 
         @@ -17,6 +17,7 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
                "@gravity-ui/react-data-table": "^1.0.3",
         
     | 
| 
       18 
18 
     | 
    
         
             
                "axios": "0.19.2",
         
     | 
| 
       19 
19 
     | 
    
         
             
                "bem-cn-lite": "4.0.0",
         
     | 
| 
      
 20 
     | 
    
         
            +
                "copy-to-clipboard": "^3.3.3",
         
     | 
| 
       20 
21 
     | 
    
         
             
                "history": "4.10.1",
         
     | 
| 
       21 
22 
     | 
    
         
             
                "js-cookie": "2.2.1",
         
     | 
| 
       22 
23 
     | 
    
         
             
                "keymaster": "1.6.2",
         
     | 
| 
         @@ -39,7 +40,7 @@ 
     | 
|
| 
       39 
40 
     | 
    
         
             
                "reselect": "4.1.6",
         
     | 
| 
       40 
41 
     | 
    
         
             
                "sass": "1.32.8",
         
     | 
| 
       41 
42 
     | 
    
         
             
                "web-vitals": "1.1.2",
         
     | 
| 
       42 
     | 
    
         
            -
                "ydb-ui-components": "^3.1 
     | 
| 
      
 43 
     | 
    
         
            +
                "ydb-ui-components": "^3.2.1"
         
     | 
| 
       43 
44 
     | 
    
         
             
              },
         
     | 
| 
       44 
45 
     | 
    
         
             
              "scripts": {
         
     | 
| 
       45 
46 
     | 
    
         
             
                "start": "react-app-rewired start",
         
     | 
| 
         @@ -64,6 +65,9 @@ 
     | 
|
| 
       64 
65 
     | 
    
         
             
                ],
         
     | 
| 
       65 
66 
     | 
    
         
             
                "*.{js,jsx,ts,tsx}": [
         
     | 
| 
       66 
67 
     | 
    
         
             
                  "eslint --fix --quiet"
         
     | 
| 
      
 68 
     | 
    
         
            +
                ],
         
     | 
| 
      
 69 
     | 
    
         
            +
                "*.{json}": [
         
     | 
| 
      
 70 
     | 
    
         
            +
                  "prettier --write"
         
     | 
| 
       67 
71 
     | 
    
         
             
                ]
         
     | 
| 
       68 
72 
     | 
    
         
             
              },
         
     | 
| 
       69 
73 
     | 
    
         
             
              "jest": {
         
     |