diff --git a/src/types/browse.d.ts b/src/types/browse.d.ts index 691251a2..f5063c28 100644 --- a/src/types/browse.d.ts +++ b/src/types/browse.d.ts @@ -1,4 +1,5 @@ import { + BrowseFacet, Collection, ConstructorClientOptions, Facet, @@ -31,7 +32,7 @@ export interface IBrowseParameters { hiddenFacets?: string[]; variationsMap?: VariationsMap; qsParam?: Record; - filterMatchTypes?: Record + filterMatchTypes?: Record; } declare class Browse { @@ -77,40 +78,52 @@ declare class Browse { /** ********* * Browse results returned from server ********** */ -export interface BrowseResponse extends Record { - request?: Partial; - response?: Partial; - result_id?: string; +export interface BrowseResponse + extends Record { + + request: Omit; + response: ResponseType; + result_id: string; ad_based?: boolean; } export type GetBrowseResultsResponse = - BrowseResponse; + BrowseResponse; export type GetBrowseResultsForItemIdsResponse = - BrowseResponse; + BrowseResponse; export type GetBrowseGroupsResponse = BrowseResponse< Pick< GetBrowseResultsResponseData, 'result_sources' | 'groups' | 'refined_content' - > + >, + 'browse_filter_name' | 'browse_filter_value' | 'searchandized_items' | 'facet_name' >; export type GetBrowseFacetsResponse = BrowseResponse< - Pick + GetBrowseFacetsResultsResponseData, + 'browse_filter_name' | 'browse_filter_value' | 'searchandized_items' | 'facet_name' >; export type GetBrowseFacetOptionsResponse = BrowseResponse< - Pick + Pick, + 'browse_filter_name' | 'browse_filter_value' | 'searchandized_items' >; export interface GetBrowseResultsResponseData extends Record { - result_sources: Partial; - facets: Partial[]; - groups: Partial[]; - results: Partial[]; - sort_options: Partial[]; + result_sources: ResultSources; + facets: Facet[]; + groups: Group[]; + results: BrowseResultData[]; + sort_options: SortOption[]; refined_content: Record[]; total_num_results: number; - features: Partial[]; - collection: Partial; + features: Feature[]; + collection?: Partial; + related_searches?: Record[]; + related_browse_pages?: Record[]; +} + +export interface GetBrowseFacetsResultsResponseData extends Record { + facets: BrowseFacet[]; + total_num_results: number; } export interface BrowseResultData extends Record { @@ -122,23 +135,24 @@ export interface BrowseResultData extends Record { value: string; is_slotted: false; labels: Record; - variations: Record[]; - variations_map: Record | Record[]; + variations?: Record[]; + variations_map?: Record | Record[]; } export interface BrowseRequestType extends Record { browse_filter_name: string; browse_filter_value: string; - filter_match_types: Record; - filters: Record; - fmt_options: Record; + filter_match_types?: Record; + filters?: Record; + fmt_options: FmtOptions; + facet_name: string; num_results_per_page: number; page: number; section: string; sort_by: string; sort_order: string; term: string; - query: string; + query?: string; features: Partial; feature_variants: Partial; searchandized_items: Record; diff --git a/src/types/index.d.ts b/src/types/index.d.ts index ce217566..61885b3d 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -94,6 +94,7 @@ export interface SortOption extends Record { display_name: string; sort_order: string; status: string; + hidden: boolean; } export interface Feature extends Record { @@ -107,44 +108,59 @@ export interface Feature extends Record { } | null; } -export type Facet = RangeFacet | OptionFacet; +export type Facet = RangeFacet | OptionFacet | HierarchialOptionFacet; + +export type BrowseFacet = Pick; export interface BaseFacet extends Record { data: Record; - status: Record; display_name: string; name: string; hidden: boolean; } export interface RangeFacet extends BaseFacet, Record { - max: number; - min: number; + status?: { min: RangeMin, max: RangeMax }; + max: RangeMax; + min: RangeMin; type: 'range'; } export interface OptionFacet extends BaseFacet, Record { options: FacetOption[]; - type: 'multiple' | 'single' | 'hierarchical'; + type: 'multiple' | 'single'; +} + +export interface HierarchialOptionFacet extends BaseFacet, Record { + options: HierarchialFacetOption[]; + type: 'hierarchical'; } export interface FacetOption extends Record { count: number; display_name: string; value: string; - options?: FacetOption[]; - range?: ['-inf' | number, 'inf' | number]; + range?: [RangeMin, RangeMax]; status: string; + data: Record; } +export interface HierarchialFacetOption extends FacetOption { + options?: HierarchialFacetOption[]; +} + +export type RangeMin = '-inf' | number; +export type RangeMax = '+inf' | 'inf' | number + export interface Group extends BaseGroup, Record { - count?: number; + count: number; data?: Record; - parents?: BaseGroup[]; - children?: Group[]; + parents: BaseGroup[]; + children: Group[]; } export interface Collection extends Record { + // documentation says this field is called `id` collection_id: string; display_name: string; data: Record; diff --git a/src/types/search.d.ts b/src/types/search.d.ts index 5c865e0f..293cce95 100644 --- a/src/types/search.d.ts +++ b/src/types/search.d.ts @@ -1,4 +1,5 @@ import { + BrowseResultData, ConstructorClientOptions, Facet, Feature, @@ -56,27 +57,29 @@ declare class Search { * search results returned from server ********** */ export interface SearchResponse { - request: Partial; - response: Partial; + request: SearchRequestType; + response: SearchResponseType | Redirect; result_id: string; } export interface SearchResponseType extends Record { - result_sources: Partial; - facets: Partial[]; - groups: Partial[]; - results: Partial[]; - sort_options: Partial[]; + result_sources: ResultSources; + facets: Facet[]; + groups: Group[]; + results: Result[]; + sort_options: SortOption[]; refined_content: Record[]; total_num_results: number; - features: Partial[]; + features: Feature[]; + related_searches?: Record[]; + related_browse_pages?: Record[]; } export interface SearchRequestType extends Record { page: number; num_results_per_page: number; section: string; - blacklist_rules: boolean; + blacklist_rules?: boolean; term: string; fmt_options: FmtOptions; sort_by: string; @@ -89,18 +92,7 @@ export interface SearchRequestType extends Record { pre_filter_expression?: FilterExpression; } -export interface Result extends Record { - matched_terms: string[]; - data: { - id: string; - [key: string]: any; - }; - value: string; - is_slotted: false; - labels: Record; - variations: Record[]; - variations_map: Record | Record[]; -} +export type Result = BrowseResultData; export interface Redirect extends Record { redirect: {