UNPKG

@klevu/core

Version:

Typescript SDK that simplifies development on Klevu backend. Klevu provides advanced AI-powered search and discovery solutions for online retailers.

134 lines (133 loc) 4.93 kB
import { KlevuQueryResult } from "../models/KlevuApiRawResponse.js"; import { KlevuFetchQueryResult } from "../models/KlevuFetchResponse.js"; import { KlevuResultEventOnResult } from "../models/KlevuResultEvent.js"; import { KlevuFetchFunctionReturnValue } from "../queries/index.js"; import { FilterManager } from "../store/filterManager.js"; import { KlevuKeywordUrlMap } from "../models/KMCMaps.js"; import { KlevuResponseObject } from "./responseObject.js"; /** * Result object for each query. A storage for results. Can be used to fetch more data, send events etc. */ export declare class KlevuResponseQueryObject { #private; /** * Original request response that includes all queries */ responseObject: KlevuResponseObject; /** * This query */ query: KlevuQueryResult; /** * Function used to create this query */ func: KlevuFetchFunctionReturnValue; /** * Hooks that can be used to listen for events */ hooks: KlevuResultEventOnResult[]; /** * When query is search this is available. It is used to send search click events */ searchClickEvent?: KlevuFetchQueryResult["searchClickEvent"]; /** * When query is categoryMerchandising this is available. It is used to send categoryMerchandising click events */ categoryMerchandisingClickEvent?: KlevuFetchQueryResult["categoryMerchandisingClickEvent"]; /** * When query is recommendation this is available. It is used to send recommendation click events */ recommendationClickEvent?: KlevuFetchQueryResult["recommendationClickEvent"]; /** * When there is a banner in the recommendation this is available. It is used to send recommendation banner click events */ recommendationBannerClickEvent?: KlevuFetchQueryResult["recommendationBannerClickEvent"]; /** * Fetches redirects for this query. This is available only for search queries */ getRedirects?: () => Promise<KlevuKeywordUrlMap[]>; constructor(responseObject: KlevuResponseObject, query: KlevuQueryResult, func: KlevuFetchFunctionReturnValue); /** * All filters related to this query */ get filters(): (import("../models/KlevuApiRawResponse.js").KlevuFilterResultOptions | import("../models/KlevuApiRawResponse.js").KlevuFilterResultSlider | import("../models/KlevuApiRawResponse.js").KlevuFilterResultRating)[] | undefined; /** * Id if the query */ get id(): string; /** * Meta data of the query */ get meta(): { apiKey: string; isPersonalised: boolean; qTime: number; noOfResults: number; totalResultsFound: number; offset: number; typeOfSearch: import("../index.js").KlevuTypeOfSearch; debuggingInformation: unknown; notificationCode: number; searchedTerm: string; klevuImageData?: { processed: { urls: string[]; }[]; } | undefined; tags: string[]; }; /** * Records of the query */ get records(): ({ id: string; } & import("../index.js").KlevuRecord)[]; /** * Special parameters that are saved to query */ get functionParams(): import("../queries/index.js").KlevuFetchFunctionParams | undefined; /** * Fetches page of results. If pageIndex is not defined it will fetch next page. * * @param params * @returns */ getPage(params?: { /** * Limit number of results for next query. By default this is automatically calculated from previous result */ limit?: number; /** * Filter manager to apply for next function */ filterManager?: FilterManager; /** * Use page index to load certain page instead of next available. 0 is first page */ pageIndex?: number; }): Promise<KlevuResponseObject | undefined>; /** * * @returns true if there are more pages to fetch */ hasNextPage(): boolean; /** * * @returns total number of pages */ getTotalPages(): number; annotationsById(productId: string, languageCode: string): Promise<import("../models/KlevuFetchResponse.js").KlevuAnnotations | undefined>; /** * @returns List of banners that were received for this query * @param params in case of search query you need to specify location of search */ getBanners(params?: { searchType?: "quicksearch" | "landingpage"; }): Promise<import("../index.js").KlevuBanner[]>; /** * @returns List of params used in the query and the metadata that was generated during * the query. This is useful for example to fetching KMC metadata that was received * for recommendations query. */ getQueryParameters(): import("../queries/index.js").KlevuFetchFunctionParams | undefined; }