Skip to content

Commit cf7f1c2

Browse files
committed
[CDX-390]: add discriminated union for VariationValue types
1 parent 3adb534 commit cf7f1c2

3 files changed

Lines changed: 23 additions & 8 deletions

File tree

src/types/index.d.ts

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,17 +255,34 @@ export interface SearchSuggestion extends Item {
255255
} & ItemData;
256256
}
257257

258+
export type VariationsMapResponse = Array<Record<string, unknown>> | Record<string, unknown>;
259+
260+
export type Aggregation = 'first' | 'min' | 'max' | 'all' | 'count' | 'field_count' | 'value_count'
261+
262+
export interface VariationsMapBaseValue {
263+
aggregation: Aggregation;
264+
field: string;
265+
}
266+
267+
export interface VariationsMapValueCount extends VariationsMapBaseValue {
268+
aggregation: 'value_count';
269+
field: string;
270+
value: boolean | number | string;
271+
}
272+
273+
export interface VariationsMapStandardValue extends VariationsMapBaseValue {
274+
aggregation: Exclude<Aggregation, 'value_count'>
275+
field: string;
276+
}
277+
258278
export interface VariationsMap {
259-
group_by: Array<{
279+
group_by?: Array<{
260280
name: string,
261281
field: string
262282
}>;
263-
filter_by: FilterBy;
283+
filter_by?: FilterBy;
264284
values: {
265-
[key: string]: {
266-
aggregation: 'first' | 'min' | 'max' | 'all',
267-
field: string
268-
},
285+
[key: string]: VariationsMapValueCount | VariationsMapStandardValue,
269286
},
270287
dtype: 'array' | 'object'
271288
}

src/types/tests/autocomplete.test-d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ expectAssignable<AutocompleteResponse>({
6565
field: 'data.VariationId',
6666
},
6767
],
68-
filter_by: {},
6968
values: {
7069
availability: {
7170
aggregation: 'all',

src/types/tests/search.test-d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ expectAssignable<SearchResponse>({
132132
field: 'data.VariationId',
133133
},
134134
],
135-
filter_by: {},
136135
values: {
137136
availability: {
138137
aggregation: 'all',

0 commit comments

Comments
 (0)