UNPKG

@yext/search-core

Version:

Typescript Networking Library for the Yext Search API

126 lines (125 loc) 3.19 kB
import { Endpoints } from './Endpoints'; import { Visitor } from './Visitor'; import { Environment } from './Environment'; import { CloudRegion } from './CloudRegion'; import { CloudChoice } from './CloudChoice'; /** * The configuration options for getting the endpoints. * * @public */ export interface ServingConfig { /** * {@inheritDoc Environment} * * @public */ environment?: Environment; /** * {@inheritDoc CloudRegion} * * @public */ cloudRegion?: CloudRegion; /** * {@inheritDoc CloudChoice} * * @public */ cloudChoice?: CloudChoice; } /** * The base configuration options for {@link SearchCore}, which includes the * options from {@link ServingConfig}. * * @public */ export interface BaseSearchConfig extends ServingConfig { /** The experience key of the search experience. */ experienceKey: string; /** The locale of the search experience. */ locale: string; /** * The version of the search experience configuration. * * @remarks * May be a configuration label (string) or a configuration version (number). * * @example * Examples: 'PRODUCTION', 42 */ experienceVersion?: 'STAGING' | 'PRODUCTION' | string | number; /** {@inheritDoc Visitor} */ visitor?: Visitor; /** * {@inheritDoc Endpoints} * * @public */ endpoints?: Endpoints; /** * Additional query params added on to every request. * * @public */ additionalQueryParams?: { [key: string]: string | number | boolean; }; /** * {@inheritDoc Environment} * * @public */ environment?: Environment; /** * {@inheritDoc CloudRegion} * * @public */ cloudRegion?: CloudRegion; } /** * Configuration options for {@link SearchCore}, which includes the * options from {@link BaseSearchConfig}, but requires apiKey. * @public */ export interface SearchConfigWithApiKey extends BaseSearchConfig { /** The api key of the search experience which will be sent as a query param. */ apiKey: string; /** * token should NOT be provided along with apiKey. */ token?: never; } /** * Configuration options for {@link SearchCore}, which includes the * options from {@link BaseSearchConfig}, but requires token. * @public */ export interface SearchConfigWithToken extends BaseSearchConfig { /** * The authentication token of the search experience * which will be passed in the Auth header as a Bearer token. */ token: string; /** * apiKey should NOT be provided along with token. */ apiKey?: never; } /** * The main configuration options for {@link SearchCore}. * For a full description of the options, see {@link BaseSearchConfig}. * The config requires either an apiKey or a token. * * @public */ export type SearchConfig = SearchConfigWithApiKey | SearchConfigWithToken; /** * The SearchConfig after any defaulting has been done from within search-core. * * @internal */ export type SearchConfigWithDefaulting = SearchConfig & { endpoints: Required<Endpoints>; };