Skip to content

Commit 293bd20

Browse files
improve configProperties typing
bonus: remove cruft and unnecessary comments, blank spaces.
1 parent fa00a70 commit 293bd20

File tree

12 files changed

+230
-233
lines changed

12 files changed

+230
-233
lines changed

modules/components/src/Table/DownloadButton/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ export interface TableColumnMappingInterface extends ColumnMappingInterface {
1212
Header: ReactNode;
1313
}
1414

15-
// export type blah = 'meep';
16-
1715
export type CustomColumnMappingInterface = TypesUnionPropertiesOfInterface<
1816
Partial<TableColumnMappingInterface>,
1917
(TableColumnMappingInterface: any) => any

modules/server/src/config/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { type ConfigObject, ConfigRequiredProperties } from './types.js';
1+
import { type ConfigObject, configRequiredProperties } from './types.js';
22
import getConfigFromFiles from './utils/getConfigFromFiles.js';
33
import { makeConfigsFromEnv } from './utils/index.js';
44

@@ -7,7 +7,7 @@ export { initializeSets } from './utils/index.js';
77

88
const validateProperties = (configs: Partial<ConfigObject>) => {
99
// Verify all the required values are present
10-
for (const property of Object.values(ConfigRequiredProperties)) {
10+
for (const property of Object.values(configRequiredProperties)) {
1111
// this condition could be made more exhaustive if needed
1212
if (!(Object.keys(configs).includes(property) && configs[property])) {
1313
console.log(' Failed...');

modules/server/src/config/types.ts

Lines changed: 97 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
import { type ES_TYPES } from '#mapping/esToAggTypeMap.js';
44

5-
export const ConfigOptionalProperties = {
5+
export const configOptionalProperties = {
66
DOWNLOADS: 'downloads',
77
MATCHBOX: 'matchbox',
88
NETWORK_AGGREGATION: 'network',
99
} as const;
1010

11-
export const ConfigRequiredProperties = {
11+
export const configRequiredProperties = {
1212
DOCUMENT_TYPE: 'documentType',
1313
EXTENDED: 'extended',
1414
FACETS: 'facets',
1515
INDEX: 'index',
1616
TABLE: 'table',
1717
} as const;
1818

19-
export const DataFieldProperties = {
19+
export const dataFieldProperties = {
2020
ACCESSOR: 'accessor',
2121
CAN_CHANGE_SHOW: 'canChangeShow',
2222
DISPLAY_FORMAT: 'displayFormat',
@@ -37,130 +37,129 @@ export const DataFieldProperties = {
3737
UNIT: 'unit',
3838
} as const;
3939

40-
export const DownloadProperties = {
40+
export const downloadProperties = {
4141
ALLOW_CUSTOM_MAX_DOWNLOAD_ROWS: 'allowCustomMaxRows',
4242
MAX_DOWNLOAD_ROWS: 'maxRows',
4343
} as const;
4444

45-
export const FacetsProperties = {
45+
export const facetsProperties = {
4646
AGGS: 'aggregations',
4747
} as const;
4848

49-
export const TableProperties = {
49+
export const tableProperties = {
5050
COLUMNS: 'columns',
5151
DESCENDING: 'desc',
5252
DEFAULT_SORTING: 'defaultSorting',
5353
MAX_RESULTS_WINDOW: 'maxResultsWindow',
5454
ROW_ID_FIELD_NAME: 'rowIdFieldName',
5555
} as const;
5656

57-
const NetworkAggregationProperties = {
57+
const networkAggregationProperties = {
5858
GRAPHQL_URL: 'graphqlUrl',
5959
DOCUMENT_TYPE: 'documentType',
6060
DISPLAY_NAME: 'displayName',
6161
} as const;
6262

6363
//////////////////////////////////
6464

65-
export const ConfigProperties = {
66-
...ConfigRequiredProperties,
67-
...ConfigOptionalProperties,
68-
...DataFieldProperties,
69-
...DownloadProperties,
70-
...FacetsProperties,
71-
...TableProperties,
65+
export const configProperties = {
66+
...configRequiredProperties,
67+
...configOptionalProperties,
68+
...dataFieldProperties,
69+
...downloadProperties,
70+
...facetsProperties,
71+
...tableProperties,
7272
};
7373

74-
export type ConfigProperties = typeof ConfigRequiredProperties | typeof ConfigOptionalProperties;
74+
export type ConfigProperties = typeof configRequiredProperties | typeof configOptionalProperties;
7575

76-
export interface AggConfigsInterface {
77-
[ConfigProperties.DISPLAY_NAME]: string;
78-
[ConfigProperties.DISPLAY_TYPE]: string;
79-
[ConfigProperties.FIELD_NAME]: string;
80-
[ConfigProperties.IS_ACTIVE]: boolean; // TODO: what is this? active = API vs show = UI? "isActive"
81-
[ConfigProperties.SHOW]: boolean;
76+
export type AggConfigs = {
77+
[configProperties.DISPLAY_NAME]: string;
78+
[configProperties.DISPLAY_TYPE]: string;
79+
[configProperties.FIELD_NAME]: string;
80+
[configProperties.IS_ACTIVE]: boolean; // TODO: what is this? active = API vs show = UI? "isActive"
81+
[configProperties.SHOW]: boolean;
8282
// TODO: implement these
8383
// max results
8484
// collapsible
85-
}
86-
87-
export interface ColumnConfigsInterface {
88-
[ConfigProperties.ACCESSOR]: string;
89-
[ConfigProperties.CAN_CHANGE_SHOW]: boolean;
90-
[ConfigProperties.DISPLAY_FORMAT]: string;
91-
[ConfigProperties.DISPLAY_NAME]: string;
92-
[ConfigProperties.DISPLAY_TYPE]: string;
93-
[ConfigProperties.DISPLAY_VALUES]: Record<string, any>; // used for "readable" replacements e.g. true as "yes"
94-
[ConfigProperties.FIELD_NAME]: string;
95-
[ConfigProperties.IS_ARRAY]: boolean; // should it be displayed as a list of items, or leave as a single string
96-
[ConfigProperties.JSON_PATH]: string;
97-
[ConfigProperties.QUERY]: string;
98-
[ConfigProperties.SHOW]: boolean;
99-
[ConfigProperties.SORTABLE]: boolean;
100-
}
101-
102-
export interface DownloadsConfigsInterface {
103-
[ConfigProperties.ALLOW_CUSTOM_MAX_DOWNLOAD_ROWS]?: boolean;
104-
[ConfigProperties.MAX_DOWNLOAD_ROWS]?: number;
105-
}
85+
};
86+
87+
export type ColumnConfigs = {
88+
[configProperties.ACCESSOR]: string;
89+
[configProperties.CAN_CHANGE_SHOW]: boolean;
90+
[configProperties.DISPLAY_FORMAT]: string;
91+
[configProperties.DISPLAY_NAME]: string;
92+
[configProperties.DISPLAY_TYPE]: string;
93+
[configProperties.DISPLAY_VALUES]: Record<string, any>; // used for "readable" replacements e.g. true as "yes"
94+
[configProperties.FIELD_NAME]: string;
95+
[configProperties.IS_ARRAY]: boolean; // should it be displayed as a list of items, or leave as a single string
96+
[configProperties.JSON_PATH]: string;
97+
[configProperties.QUERY]: string;
98+
[configProperties.SHOW]: boolean;
99+
[configProperties.SORTABLE]: boolean;
100+
};
101+
102+
export type DownloadsConfigs = {
103+
[configProperties.ALLOW_CUSTOM_MAX_DOWNLOAD_ROWS]?: boolean;
104+
[configProperties.MAX_DOWNLOAD_ROWS]?: number;
105+
};
106106

107107
export type DisplayType = 'all' | 'bits' | 'boolean' | 'bytes' | 'date' | 'list' | 'nested' | 'number';
108108

109-
export interface ExtendedConfigsInterface {
110-
[ConfigProperties.DISPLAY_NAME]: string;
111-
[ConfigProperties.DISPLAY_TYPE]: string;
112-
[ConfigProperties.DISPLAY_VALUES]: Record<string, any>;
113-
[ConfigProperties.FIELD_NAME]: string;
114-
[ConfigProperties.IS_ACTIVE]: boolean; // TODO: what is this?
115-
[ConfigProperties.IS_ARRAY]: boolean;
116-
[ConfigProperties.PRIMARY_KEY]: boolean;
117-
[ConfigProperties.QUICKSEARCH_ENABLED]: boolean;
118-
[ConfigProperties.RANGE_STEP]: number;
119-
[ConfigProperties.TYPE]: DisplayType;
120-
[ConfigProperties.UNIT]: string;
121-
}
122-
123-
export interface FacetsConfigsInterface {
124-
[ConfigProperties.AGGS]: AggConfigsInterface[];
125-
}
126-
127-
export interface MatchBoxConfigsInterface {
128-
[ConfigProperties.DISPLAY_NAME]: string;
129-
[ConfigProperties.FIELD_NAME]: string;
130-
}
131-
132-
export interface SortingConfigsInterface {
133-
[ConfigProperties.DESCENDING]: boolean;
134-
[ConfigProperties.FIELD_NAME]: string;
135-
[ConfigProperties.IS_ACTIVE]: boolean;
136-
}
137-
138-
export interface TableConfigsInterface {
139-
[ConfigProperties.COLUMNS]: ColumnConfigsInterface[];
140-
[ConfigProperties.DEFAULT_SORTING]?: SortingConfigsInterface[];
141-
[ConfigProperties.MAX_RESULTS_WINDOW]?: number;
142-
[ConfigProperties.ROW_ID_FIELD_NAME]?: string;
143-
}
144-
145-
interface NetworkAggregationInterface {
146-
[NetworkAggregationProperties.GRAPHQL_URL]: string;
147-
[NetworkAggregationProperties.DOCUMENT_TYPE]: string;
148-
[NetworkAggregationProperties.DISPLAY_NAME]: string;
149-
}
150-
[];
151-
152-
export interface ConfigObject {
153-
[ConfigProperties.DOCUMENT_TYPE]: string;
154-
[ConfigProperties.DOWNLOADS]?: DownloadsConfigsInterface;
155-
[ConfigProperties.EXTENDED]: any[];
156-
[ConfigProperties.FACETS]: FacetsConfigsInterface;
157-
[ConfigProperties.INDEX]: string;
158-
[ConfigProperties.MATCHBOX]: any[];
159-
[ConfigProperties.TABLE]: TableConfigsInterface;
160-
[ConfigProperties.NETWORK_AGGREGATION]: any[];
161-
}
162-
163-
export interface FieldFromMapping {
109+
export type ExtendedConfigs = {
110+
[configProperties.DISPLAY_NAME]: string;
111+
[configProperties.DISPLAY_TYPE]: string;
112+
[configProperties.DISPLAY_VALUES]: Record<string, any>;
113+
[configProperties.FIELD_NAME]: string;
114+
[configProperties.IS_ACTIVE]: boolean; // TODO: what is this?
115+
[configProperties.IS_ARRAY]: boolean;
116+
[configProperties.PRIMARY_KEY]: boolean;
117+
[configProperties.QUICKSEARCH_ENABLED]: boolean;
118+
[configProperties.RANGE_STEP]: number;
119+
[configProperties.TYPE]: DisplayType;
120+
[configProperties.UNIT]: string;
121+
};
122+
123+
export type FacetsConfigs = {
124+
[configProperties.AGGS]: AggConfigs[];
125+
};
126+
127+
export type MatchBoxConfigs = {
128+
[configProperties.DISPLAY_NAME]: string;
129+
[configProperties.FIELD_NAME]: string;
130+
};
131+
132+
export type SortingConfigs = {
133+
[configProperties.DESCENDING]: boolean;
134+
[configProperties.FIELD_NAME]: string;
135+
[configProperties.IS_ACTIVE]: boolean;
136+
};
137+
138+
export type TableConfigs = {
139+
[configProperties.COLUMNS]: ColumnConfigs[];
140+
[configProperties.DEFAULT_SORTING]?: SortingConfigs[];
141+
[configProperties.MAX_RESULTS_WINDOW]?: number;
142+
[configProperties.ROW_ID_FIELD_NAME]?: string;
143+
};
144+
145+
export type NetworkAggregation = {
146+
[networkAggregationProperties.GRAPHQL_URL]: string;
147+
[networkAggregationProperties.DOCUMENT_TYPE]: string;
148+
[networkAggregationProperties.DISPLAY_NAME]: string;
149+
};
150+
151+
export type ConfigObject = {
152+
[configProperties.DOCUMENT_TYPE]: string;
153+
[configProperties.DOWNLOADS]?: DownloadsConfigs;
154+
[configProperties.EXTENDED]: any[];
155+
[configProperties.FACETS]: FacetsConfigs;
156+
[configProperties.INDEX]: string;
157+
[configProperties.MATCHBOX]: any[];
158+
[configProperties.TABLE]: TableConfigs;
159+
[configProperties.NETWORK_AGGREGATION]: NetworkAggregation[];
160+
};
161+
162+
export type FieldFromMapping = {
164163
fieldName: string;
165164
type: ES_TYPES;
166-
}
165+
};

modules/server/src/config/utils/getConfigFromFiles.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import path from 'path';
44

55
import { merge } from 'lodash-es';
66

7-
import { ConfigProperties } from '#config/types.js';
8-
import type { ConfigObject, SortingConfigsInterface } from '#config/types.js';
7+
import { configProperties } from '#config/types.js';
8+
import type { ConfigObject, SortingConfigs } from '#config/types.js';
99

1010
type FileEncodingType =
1111
| BufferEncoding
@@ -46,7 +46,9 @@ const getConfigFromFiles = (dirname: string, configsFromEnv: Partial<ConfigObjec
4646
.then((filenames = []) =>
4747
// TODO: shouldn't fail all files if one is broken
4848
Promise.all(
49-
(filenames as string[]).filter(isDataFile).map((filename) => readFileAsync(configsPath, filename, 'utf8')),
49+
(filenames as string[])
50+
.filter(isDataFile)
51+
.map((filename) => readFileAsync(configsPath, filename, 'utf8')),
5052
),
5153
)
5254
.then((files = []) => {
@@ -57,13 +59,13 @@ const getConfigFromFiles = (dirname: string, configsFromEnv: Partial<ConfigObjec
5759
try {
5860
const fileDataJSON = JSON.parse(fileData);
5961

60-
if (fileDataJSON?.[ConfigProperties.TABLE]?.[ConfigProperties.DEFAULT_SORTING]) {
62+
if (fileDataJSON?.[configProperties.TABLE]?.[configProperties.DEFAULT_SORTING]) {
6163
return merge({}, configsAcc, fileDataJSON, {
62-
[ConfigProperties.TABLE]: {
63-
...fileDataJSON[ConfigProperties.TABLE],
64-
[ConfigProperties.DEFAULT_SORTING]: fileDataJSON[ConfigProperties.TABLE][
65-
ConfigProperties.DEFAULT_SORTING
66-
].map((sorting: SortingConfigsInterface) => ({
64+
[configProperties.TABLE]: {
65+
...fileDataJSON[configProperties.TABLE],
66+
[configProperties.DEFAULT_SORTING]: fileDataJSON[configProperties.TABLE][
67+
configProperties.DEFAULT_SORTING
68+
].map((sorting: SortingConfigs) => ({
6769
...sorting,
6870
desc: sorting.desc || false,
6971
})),

modules/server/src/config/utils/index.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { Client } from '@elastic/elasticsearch';
22

33
import { ENV_CONFIG } from '#config/index.js';
4-
import { type ConfigObject, ConfigProperties } from '#config/types.js';
4+
import { type ConfigObject, configProperties } from '#config/types.js';
55
import { setsMapping } from '#schema/index.js';
66

77
export const initializeSets = async ({
@@ -35,21 +35,21 @@ export const initializeSets = async ({
3535
};
3636

3737
export const makeConfigsFromEnv = (): Partial<ConfigObject> => ({
38-
[ConfigProperties.DOCUMENT_TYPE]: ENV_CONFIG.DOCUMENT_TYPE,
39-
[ConfigProperties.DOWNLOADS]: {
40-
[ConfigProperties.ALLOW_CUSTOM_MAX_DOWNLOAD_ROWS]: ENV_CONFIG.ALLOW_CUSTOM_MAX_DOWNLOAD_ROWS,
41-
[ConfigProperties.MAX_DOWNLOAD_ROWS]: ENV_CONFIG.MAX_DOWNLOAD_ROWS,
38+
[configProperties.DOCUMENT_TYPE]: ENV_CONFIG.DOCUMENT_TYPE,
39+
[configProperties.DOWNLOADS]: {
40+
[configProperties.ALLOW_CUSTOM_MAX_DOWNLOAD_ROWS]: ENV_CONFIG.ALLOW_CUSTOM_MAX_DOWNLOAD_ROWS,
41+
[configProperties.MAX_DOWNLOAD_ROWS]: ENV_CONFIG.MAX_DOWNLOAD_ROWS,
4242
},
43-
[ConfigProperties.EXTENDED]: [],
44-
[ConfigProperties.FACETS]: {
45-
[ConfigProperties.AGGS]: [],
43+
[configProperties.EXTENDED]: [],
44+
[configProperties.FACETS]: {
45+
[configProperties.AGGS]: [],
4646
},
47-
[ConfigProperties.INDEX]: ENV_CONFIG.ES_INDEX,
48-
[ConfigProperties.MATCHBOX]: [],
49-
[ConfigProperties.TABLE]: {
50-
[ConfigProperties.COLUMNS]: [],
51-
[ConfigProperties.MAX_RESULTS_WINDOW]: ENV_CONFIG.MAX_RESULTS_WINDOW,
52-
[ConfigProperties.ROW_ID_FIELD_NAME]: ENV_CONFIG.ROW_ID_FIELD_NAME,
47+
[configProperties.INDEX]: ENV_CONFIG.ES_INDEX,
48+
[configProperties.MATCHBOX]: [],
49+
[configProperties.TABLE]: {
50+
[configProperties.COLUMNS]: [],
51+
[configProperties.MAX_RESULTS_WINDOW]: ENV_CONFIG.MAX_RESULTS_WINDOW,
52+
[configProperties.ROW_ID_FIELD_NAME]: ENV_CONFIG.ROW_ID_FIELD_NAME,
5353
},
54-
[ConfigProperties.NETWORK_AGGREGATION]: ENV_CONFIG.NETWORK_AGGREGATIONS,
54+
[configProperties.NETWORK_AGGREGATION]: ENV_CONFIG.NETWORK_AGGREGATIONS,
5555
});

0 commit comments

Comments
 (0)