diff --git a/.gitignore b/.gitignore index d40ffbd0..018c4180 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules/ coverage/ dist/ -temp/ \ No newline at end of file +temp/ +.DS_STORE \ No newline at end of file diff --git a/LICENSE b/LICENSE index 6337be8d..8ba5a106 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -The Answers Headless files listed in this repository are licensed under the below license.  All other features and products are subject to separate agreements +The Search Headless files listed in this repository are licensed under the below license.  All other features and products are subject to separate agreements and certain functionality requires paid subscriptions to Yext products. Contains information from the language-subtag-registry JSON Database (https://github.com/mattcg/language-subtag-registry/tree/master/data/json) diff --git a/README.md b/README.md index 7e4f9638..70dd7d91 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# answers-headless -A library for powering UI components for Yext Answers integrations. +# search-headless +A library for powering UI components for Yext Search integrations. -[Full Documentation](./docs/answers-headless.md) +[Full Documentation](./docs/search-headless.md) - - Coverage Status + + Coverage Status diff --git a/docs/search-headless.answersheadless.executeverticalquery.md b/docs/search-headless.answersheadless.executeverticalquery.md deleted file mode 100644 index cab0de24..00000000 --- a/docs/search-headless.answersheadless.executeverticalquery.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [executeVerticalQuery](./search-headless.answersheadless.executeverticalquery.md) - -## AnswersHeadless.executeVerticalQuery() method - -Perform an Answers search for a single vertical with relevant parts of the state used as input to the search. Updates the state with the response data. - -Signature: - -```typescript -executeVerticalQuery(): Promise; -``` -Returns: - -Promise<[VerticalSearchResponse](./search-headless.verticalsearchresponse.md) \| undefined> - -A Promise of a [VerticalSearchResponse](./search-headless.verticalsearchresponse.md) from the Answers API or of undefined if there is no verticalKey defined in state - diff --git a/docs/search-headless.answersheadless.md b/docs/search-headless.answersheadless.md index 3717ef62..69138d78 100644 --- a/docs/search-headless.answersheadless.md +++ b/docs/search-headless.answersheadless.md @@ -2,61 +2,15 @@ [Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) -## AnswersHeadless class +## AnswersHeadless variable -Provides the functionality for interacting with an Answers Search experience. +> Warning: This API is now obsolete. +> +> AnswersHeadless has been deprecated and renamed to SearchHeadless +> Signature: ```typescript -export default class AnswersHeadless +AnswersHeadless: typeof SearchHeadless ``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(core, stateManager, httpManager, additionalHttpHeaders)](./search-headless.answersheadless._constructor_.md) | | Constructs a new instance of the AnswersHeadless class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [state](./search-headless.answersheadless.state.md) | | [State](./search-headless.state.md) | Gets the current state of the AnswersHeadless instance. | -| [utilities](./search-headless.answersheadless.utilities.md) | | typeof answersUtilities | Common utility functions for manipulating Answers-related data. | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [addListener(listener)](./search-headless.answersheadless.addlistener.md) | | Adds a listener for a specific state value of type T. | -| [executeFilterSearch(query, sectioned, fields)](./search-headless.answersheadless.executefiltersearch.md) | | Performs a filtersearch request against specified fields within a single vertical using the vertical key stored in state. | -| [executeUniversalAutocomplete()](./search-headless.answersheadless.executeuniversalautocomplete.md) | | Performs an autocomplete request across all verticals using the query input stored in state. | -| [executeUniversalQuery()](./search-headless.answersheadless.executeuniversalquery.md) | | Performs an Answers search across all verticals with relevant parts of the state used as input to the search. Updates the state with the response data. | -| [executeVerticalAutocomplete()](./search-headless.answersheadless.executeverticalautocomplete.md) | | Performs an autocomplete request for a single vertical using the query input and vertical key stored in state. | -| [executeVerticalQuery()](./search-headless.answersheadless.executeverticalquery.md) | | Perform an Answers search for a single vertical with relevant parts of the state used as input to the search. Updates the state with the response data. | -| [resetFacets()](./search-headless.answersheadless.resetfacets.md) | | Unselects all [facets](./search-headless.filtersstate.facets.md). | -| [setAlternativeVerticals(alternativeVerticals)](./search-headless.answersheadless.setalternativeverticals.md) | | Sets the alternativeVerticals for [VerticalSearchState.noResults](./search-headless.verticalsearchstate.noresults.md) to the specified verticals. | -| [setContext(context)](./search-headless.answersheadless.setcontext.md) | | Sets [MetaState.context](./search-headless.metastate.context.md) to the specified context. | -| [setFacetOption(fieldId, facetOption, selected)](./search-headless.answersheadless.setfacetoption.md) | | Sets a specified facet option to be selected or unselected. | -| [setFacets(facets)](./search-headless.answersheadless.setfacets.md) | | Sets [FiltersState.facets](./search-headless.filtersstate.facets.md) to the specified facets. | -| [setFilterOption(filter)](./search-headless.answersheadless.setfilteroption.md) | | Sets a static filter option and whether or not it is selected in state. | -| [setOffset(offset)](./search-headless.answersheadless.setoffset.md) | | Sets [VerticalSearchState.offset](./search-headless.verticalsearchstate.offset.md) to the specified offset. | -| [setQuery(input)](./search-headless.answersheadless.setquery.md) | | Sets [QueryState.input](./search-headless.querystate.input.md) to the specified input. | -| [setQuerySource(source)](./search-headless.answersheadless.setquerysource.md) | | Sets [QueryState.querySource](./search-headless.querystate.querysource.md) to the specified source. | -| [setQueryTrigger(trigger)](./search-headless.answersheadless.setquerytrigger.md) | | Sets [QueryState.queryTrigger](./search-headless.querystate.querytrigger.md) to the specified trigger. | -| [setReferrerPageUrl(referrerPageUrl)](./search-headless.answersheadless.setreferrerpageurl.md) | | Sets [MetaState.referrerPageUrl](./search-headless.metastate.referrerpageurl.md) to the specified URL. | -| [setRestrictVerticals(restrictVerticals)](./search-headless.answersheadless.setrestrictverticals.md) | | Sets [UniversalSearchState.restrictVerticals](./search-headless.universalsearchstate.restrictverticals.md) to the specified vertical keys. | -| [setSessionId(sessionId)](./search-headless.answersheadless.setsessionid.md) | | Sets [SessionTrackingState.sessionId](./search-headless.sessiontrackingstate.sessionid.md) to the specified ID. | -| [setSessionTrackingEnabled(enabled)](./search-headless.answersheadless.setsessiontrackingenabled.md) | | Sets [SessionTrackingState.enabled](./search-headless.sessiontrackingstate.enabled.md) to the specified boolean value. | -| [setSortBys(sortBys)](./search-headless.answersheadless.setsortbys.md) | | Sets [VerticalSearchState.sortBys](./search-headless.verticalsearchstate.sortbys.md) to the specified sortBys. | -| [setSpellCheckEnabled(enabled)](./search-headless.answersheadless.setspellcheckenabled.md) | | Sets [SpellCheckState.enabled](./search-headless.spellcheckstate.enabled.md) to the specified boolean value. | -| [setState(state)](./search-headless.answersheadless.setstate.md) | | Sets the [State](./search-headless.state.md) to the specified state. | -| [setStaticFilters(filters)](./search-headless.answersheadless.setstaticfilters.md) | | Sets [FiltersState.static](./search-headless.filtersstate.static.md) to the specified filters. | -| [setUniversal()](./search-headless.answersheadless.setuniversal.md) | | Sets up Headless to manage universal searches. | -| [setUniversalLimit(limit)](./search-headless.answersheadless.setuniversallimit.md) | | Sets [UniversalSearchState.limit](./search-headless.universalsearchstate.limit.md) to the specified limit. | -| [setUserLocation(latLong)](./search-headless.answersheadless.setuserlocation.md) | | Sets [LocationState.userLocation](./search-headless.locationstate.userlocation.md) to the specified latitude and longitude. | -| [setVertical(verticalKey)](./search-headless.answersheadless.setvertical.md) | | Sets up Headless to manage the vertical indicated by the verticalKey. | -| [setVerticalLimit(limit)](./search-headless.answersheadless.setverticallimit.md) | | Sets [VerticalSearchState.limit](./search-headless.verticalsearchstate.limit.md) to the specified limit. | -| [submitQuestion(request)](./search-headless.answersheadless.submitquestion.md) | | Submits a question to the Answers API with the specified request data. | - diff --git a/docs/search-headless.answersheadless.state.md b/docs/search-headless.answersheadless.state.md deleted file mode 100644 index dc3fce41..00000000 --- a/docs/search-headless.answersheadless.state.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [state](./search-headless.answersheadless.state.md) - -## AnswersHeadless.state property - -Gets the current state of the AnswersHeadless instance. - -Signature: - -```typescript -get state(): State; -``` diff --git a/docs/search-headless.answersheadless.utilities.md b/docs/search-headless.answersheadless.utilities.md deleted file mode 100644 index 154ae856..00000000 --- a/docs/search-headless.answersheadless.utilities.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [utilities](./search-headless.answersheadless.utilities.md) - -## AnswersHeadless.utilities property - -Common utility functions for manipulating Answers-related data. - -Signature: - -```typescript -readonly utilities: typeof answersUtilities; -``` diff --git a/docs/search-headless.answersutilities.md b/docs/search-headless.answersutilities.md index 75057e71..3042e331 100644 --- a/docs/search-headless.answersutilities.md +++ b/docs/search-headless.answersutilities.md @@ -2,12 +2,15 @@ [Home](./index.md) > [@yext/search-headless](./search-headless.md) > [answersUtilities](./search-headless.answersutilities.md) -## answersUtilities namespace +## answersUtilities variable -## Functions +> Warning: This API is now obsolete. +> +> answersUtilities has been deprecated and renamed to searchUtilities +> -| Function | Description | -| --- | --- | -| [isCloseMatch(value, searchTerm)](./search-headless.answersutilities.isclosematch.md) | Checks if the searchTerm is a case-insensitive, Levenshtein match for the value. | -| [searchThroughFacet(facet, searchTerm)](./search-headless.answersutilities.searchthroughfacet.md) | Searches through the specified facet and filters out the options that aren't a close match for the given searchTerm. The comparison is case insensitive. | +Signature: +```typescript +answersUtilities: typeof searchUtilities +``` diff --git a/docs/search-headless.default_headless_id.md b/docs/search-headless.default_headless_id.md index a9a725ff..7b19658e 100644 --- a/docs/search-headless.default_headless_id.md +++ b/docs/search-headless.default_headless_id.md @@ -4,7 +4,7 @@ ## DEFAULT\_HEADLESS\_ID variable -The headlessId automatically given to the first AnswersHeadless instance created. +The headlessId automatically given to the first SearchHeadless instance created. Signature: diff --git a/docs/search-headless.directanswerstate.md b/docs/search-headless.directanswerstate.md index 5f9a0848..67b011f5 100644 --- a/docs/search-headless.directanswerstate.md +++ b/docs/search-headless.directanswerstate.md @@ -16,5 +16,5 @@ export interface DirectAnswerState | Property | Type | Description | | --- | --- | --- | -| [result?](./search-headless.directanswerstate.result.md) | [FeaturedSnippetDirectAnswer](./search-headless.featuredsnippetdirectanswer.md) \| [FieldValueDirectAnswer](./search-headless.fieldvaluedirectanswer.md) | (Optional) The data for the direct answer. The type of the data is determined by the Answers API based on whether the answer was found within a document or was a field value in the knowledge graph. | +| [result?](./search-headless.directanswerstate.result.md) | [FeaturedSnippetDirectAnswer](./search-headless.featuredsnippetdirectanswer.md) \| [FieldValueDirectAnswer](./search-headless.fieldvaluedirectanswer.md) | (Optional) The data for the direct answer. The type of the data is determined by the Search API based on whether the answer was found within a document or was a field value in the knowledge graph. | diff --git a/docs/search-headless.directanswerstate.result.md b/docs/search-headless.directanswerstate.result.md index d9d42f1a..28205ae7 100644 --- a/docs/search-headless.directanswerstate.result.md +++ b/docs/search-headless.directanswerstate.result.md @@ -4,7 +4,7 @@ ## DirectAnswerState.result property -The data for the direct answer. The type of the data is determined by the Answers API based on whether the answer was found within a document or was a field value in the knowledge graph. +The data for the direct answer. The type of the data is determined by the Search API based on whether the answer was found within a document or was a field value in the knowledge graph. Signature: diff --git a/docs/search-headless.headlessconfig.md b/docs/search-headless.headlessconfig.md index d3438a47..5b497be7 100644 --- a/docs/search-headless.headlessconfig.md +++ b/docs/search-headless.headlessconfig.md @@ -4,7 +4,7 @@ ## HeadlessConfig type -The configuration for an AnswersHeadless instance. +The configuration for an SearchHeadless instance. Signature: diff --git a/docs/search-headless.locationstate.locationbias.md b/docs/search-headless.locationstate.locationbias.md index bcabbf02..9cb1bbda 100644 --- a/docs/search-headless.locationstate.locationbias.md +++ b/docs/search-headless.locationstate.locationbias.md @@ -4,7 +4,7 @@ ## LocationState.locationBias property -The geographical location bias used in the search, returned from the Answers API. +The geographical location bias used in the search, returned from the Search API. Signature: diff --git a/docs/search-headless.locationstate.md b/docs/search-headless.locationstate.md index aa922ad1..15500ebc 100644 --- a/docs/search-headless.locationstate.md +++ b/docs/search-headless.locationstate.md @@ -16,6 +16,6 @@ export interface LocationState | Property | Type | Description | | --- | --- | --- | -| [locationBias?](./search-headless.locationstate.locationbias.md) | [LocationBias](./search-headless.locationbias.md) | (Optional) The geographical location bias used in the search, returned from the Answers API. | +| [locationBias?](./search-headless.locationstate.locationbias.md) | [LocationBias](./search-headless.locationbias.md) | (Optional) The geographical location bias used in the search, returned from the Search API. | | [userLocation?](./search-headless.locationstate.userlocation.md) | [LatLong](./search-headless.latlong.md) | (Optional) The latitude and longitude of the user making the request. Used to bias the results. | diff --git a/docs/search-headless.md b/docs/search-headless.md index 4f2d2041..9cb86f2d 100644 --- a/docs/search-headless.md +++ b/docs/search-headless.md @@ -10,7 +10,7 @@ | --- | --- | | [AnswersCore](./search-headless.answerscore.md) | Provides methods for executing searches, submitting questions, and performing autocompletes. | | [AnswersError](./search-headless.answerserror.md) | Represents an error | -| [AnswersHeadless](./search-headless.answersheadless.md) | Provides the functionality for interacting with an Answers Search experience. | +| [SearchHeadless](./search-headless.searchheadless.md) | Provides the functionality for interacting with an Search experience. | ## Enumerations @@ -40,7 +40,7 @@ | [createEqualsFilter(fieldId, value)](./search-headless.createequalsfilter.md) | Creates a simple [Filter](./search-headless.filter.md) that ensures all results will match a specific field value. | | [createNearMeFilter(position)](./search-headless.createnearmefilter.md) | Creates a [Filter](./search-headless.filter.md) that matches all results within a certain radius of the given position. | | [createNumberRangeFilter(fieldId, range)](./search-headless.createnumberrangefilter.md) | Creates a [Filter](./search-headless.filter.md) or [CombinedFilter](./search-headless.combinedfilter.md) that matches all results where the given field value falls in a specific number [BoundedRange](./search-headless.boundedrange.md). | -| [provideAnswersHeadless(config)](./search-headless.provideanswersheadless.md) | Supplies a new instance of [AnswersHeadless](./search-headless.answersheadless.md), using the provided configuration. | +| [provideHeadless(config)](./search-headless.provideheadless.md) | Supplies a new instance of [SearchHeadless](./search-headless.searchheadless.md), using the provided configuration. | ## Interfaces @@ -80,10 +80,10 @@ | [LocationFilterDetails](./search-headless.locationfilterdetails.md) | Additional details relevant to the filter with "PLACE" for its [AppliedQueryFilterType](./search-headless.appliedqueryfiltertype.md). | | [LocationState](./search-headless.locationstate.md) | Maintains the user's location, if given, or the inferred location, that is used to bias search results. | | [LowerNumberRangeLimit](./search-headless.lowernumberrangelimit.md) | The start limit of [NumberRangeValue](./search-headless.numberrangevalue.md). | -| [MetaState](./search-headless.metastate.md) | Maintains the metadata for Answers Headless. | +| [MetaState](./search-headless.metastate.md) | Maintains the metadata for Search Headless. | | [NearFilterValue](./search-headless.nearfiltervalue.md) | A filter value for a filter with a $near [Matcher](./search-headless.matcher.md). | | [NumberRangeValue](./search-headless.numberrangevalue.md) | A filter value for a filter with a $between [Matcher](./search-headless.matcher.md). | -| [ParentState](./search-headless.parentstate.md) | The overall shape of the redux state tree, with each key value pair of headlessId to [State](./search-headless.state.md) representing a single AnswersHeadless instance. | +| [ParentState](./search-headless.parentstate.md) | The overall shape of the redux state tree, with each key value pair of headlessId to [State](./search-headless.state.md) representing a single SearchHeadless instance. | | [QueryRulesActionsData](./search-headless.queryrulesactionsdata.md) | Data returned from the Answers query rules system. | | [QueryRulesState](./search-headless.queryrulesstate.md) | Maintains the data from the triggered query rules. | | [QueryState](./search-headless.querystate.md) | Maintains the latest query and its associated data. | @@ -101,9 +101,9 @@ | [SortBy](./search-headless.sortby.md) | Represents a criterion that can be used to sort results. | | [SpellCheck](./search-headless.spellcheck.md) | A spellcheck response from a search query. | | [SpellCheckState](./search-headless.spellcheckstate.md) | Maintains whether spellcheck is enabled and the spellcheck response from the latest search. | -| [State](./search-headless.state.md) | The state representing an AnswersHeadless instance. | +| [State](./search-headless.state.md) | The state representing a SearchHeadless instance. | | [StateListener](./search-headless.statelistener.md) | Represents a listener for a specific value of type T in the state. | -| [StateManager](./search-headless.statemanager.md) | Manages the information contained in the state for an AnswersHeadless instance. | +| [StateManager](./search-headless.statemanager.md) | Manages the information contained in the state for an SearchHeadless instance. | | [UniversalAutocompleteRequest](./search-headless.universalautocompleterequest.md) | Options for a universal autocomplete request. | | [UniversalLimit](./search-headless.universallimit.md) | The maximum limit of results per vertical. Each limit can be set from 1-50, inclusive. | | [UniversalSearchRequest](./search-headless.universalsearchrequest.md) | Options which can be specified for a universal search. | @@ -121,13 +121,16 @@ | Namespace | Description | | --- | --- | -| [answersUtilities](./search-headless.answersutilities.md) | | +| [searchUtilities](./search-headless.searchutilities.md) | | ## Variables | Variable | Description | | --- | --- | -| [DEFAULT\_HEADLESS\_ID](./search-headless.default_headless_id.md) | The headlessId automatically given to the first AnswersHeadless instance created. | +| [AnswersHeadless](./search-headless.answersheadless.md) | | +| [answersUtilities](./search-headless.answersutilities.md) | | +| [DEFAULT\_HEADLESS\_ID](./search-headless.default_headless_id.md) | The headlessId automatically given to the first SearchHeadless instance created. | +| [provideAnswersHeadless](./search-headless.provideanswersheadless.md) | Supplies a new instance of [SearchHeadless](./search-headless.searchheadless.md), using the provided configuration. | | [SandboxEndpoints](./search-headless.sandboxendpoints.md) | The endpoints to use for sandbox experiences. | ## Type Aliases @@ -138,7 +141,7 @@ | [Context](./search-headless.context.md) | Used to trigger Answers [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). | | [EnumOrLiteral](./search-headless.enumorliteral.md) | Produces a union type from the enum passed as a generic which consists of the enum values and the string literals of the enum. | | [FilterTypes](./search-headless.filtertypes.md) | A union type for the different kinds of filter. | -| [HeadlessConfig](./search-headless.headlessconfig.md) | The configuration for an AnswersHeadless instance. | +| [HeadlessConfig](./search-headless.headlessconfig.md) | The configuration for an SearchHeadless instance. | | [HighlightedFields](./search-headless.highlightedfields.md) | A mapping of fields to the values emphasized by the Answers API | | [SearchType](./search-headless.searchtype.md) | An enum and its corresponding string literals which indicate the type of search that Headless is managing. | diff --git a/docs/search-headless.metastate.md b/docs/search-headless.metastate.md index 1d19d501..32aae716 100644 --- a/docs/search-headless.metastate.md +++ b/docs/search-headless.metastate.md @@ -4,7 +4,7 @@ ## MetaState interface -Maintains the metadata for Answers Headless. +Maintains the metadata for Search Headless. Signature: @@ -18,6 +18,6 @@ export interface MetaState | --- | --- | --- | | [context?](./search-headless.metastate.context.md) | [Context](./search-headless.context.md) | (Optional) A JSON object used for passing data to and triggering Answers [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). | | [referrerPageUrl?](./search-headless.metastate.referrerpageurl.md) | string | (Optional) The URL of the referring page (the page that directed to the current page from which the request was made). | -| [searchType](./search-headless.metastate.searchtype.md) | [SearchType](./search-headless.searchtype.md) | Indicates the type of search that Answers Headless is managing. | +| [searchType](./search-headless.metastate.searchtype.md) | [SearchType](./search-headless.searchtype.md) | Indicates the type of search that Search Headless is managing. | | [uuid?](./search-headless.metastate.uuid.md) | string | (Optional) A unique id which corresponds to the latest request/response. | diff --git a/docs/search-headless.metastate.searchtype.md b/docs/search-headless.metastate.searchtype.md index 4433a40b..0b2301bf 100644 --- a/docs/search-headless.metastate.searchtype.md +++ b/docs/search-headless.metastate.searchtype.md @@ -4,7 +4,7 @@ ## MetaState.searchType property -Indicates the type of search that Answers Headless is managing. +Indicates the type of search that Search Headless is managing. Signature: diff --git a/docs/search-headless.parentstate.md b/docs/search-headless.parentstate.md index 43d43fb6..1596a139 100644 --- a/docs/search-headless.parentstate.md +++ b/docs/search-headless.parentstate.md @@ -4,7 +4,7 @@ ## ParentState interface -The overall shape of the redux state tree, with each key value pair of headlessId to [State](./search-headless.state.md) representing a single AnswersHeadless instance. +The overall shape of the redux state tree, with each key value pair of headlessId to [State](./search-headless.state.md) representing a single SearchHeadless instance. Signature: diff --git a/docs/search-headless.provideanswersheadless.md b/docs/search-headless.provideanswersheadless.md index b1ffcd1e..7c1280ea 100644 --- a/docs/search-headless.provideanswersheadless.md +++ b/docs/search-headless.provideanswersheadless.md @@ -2,25 +2,17 @@ [Home](./index.md) > [@yext/search-headless](./search-headless.md) > [provideAnswersHeadless](./search-headless.provideanswersheadless.md) -## provideAnswersHeadless() function +## provideAnswersHeadless variable -Supplies a new instance of [AnswersHeadless](./search-headless.answersheadless.md), using the provided configuration. +> Warning: This API is now obsolete. +> +> provideAnswersHeadless has been deprecated and renamed to provideHeadless +> + +Supplies a new instance of [SearchHeadless](./search-headless.searchheadless.md), using the provided configuration. Signature: ```typescript -export declare function provideAnswersHeadless(config: HeadlessConfig): AnswersHeadless; +provideAnswersHeadless: typeof provideHeadless ``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | [HeadlessConfig](./search-headless.headlessconfig.md) | The apiKey, experienceKey, etc. needed to set up a front-end Answers experience. | - -Returns: - -AnswersHeadless - -The newly created instance of [AnswersHeadless](./search-headless.answersheadless.md) - diff --git a/docs/search-headless.provideheadless.md b/docs/search-headless.provideheadless.md new file mode 100644 index 00000000..79dbf187 --- /dev/null +++ b/docs/search-headless.provideheadless.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [provideHeadless](./search-headless.provideheadless.md) + +## provideHeadless() function + +Supplies a new instance of [SearchHeadless](./search-headless.searchheadless.md), using the provided configuration. + +Signature: + +```typescript +export declare function provideHeadless(config: HeadlessConfig): SearchHeadless; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [HeadlessConfig](./search-headless.headlessconfig.md) | The apiKey, experienceKey, etc. needed to set up a front-end Search experience. | + +Returns: + +SearchHeadless + +The newly created instance of [SearchHeadless](./search-headless.searchheadless.md) + diff --git a/docs/search-headless.querystate.md b/docs/search-headless.querystate.md index a723d431..5af080be 100644 --- a/docs/search-headless.querystate.md +++ b/docs/search-headless.querystate.md @@ -19,7 +19,7 @@ export interface QueryState | [input?](./search-headless.querystate.input.md) | string | (Optional) The user input used for the next search query. | | [mostRecentSearch?](./search-headless.querystate.mostrecentsearch.md) | string | (Optional) The query of the most recent search. | | [queryId?](./search-headless.querystate.queryid.md) | string | (Optional) The ID of the query from the latest search. | -| [querySource?](./search-headless.querystate.querysource.md) | [QuerySource](./search-headless.querysource.md) | (Optional) The source of the query (from a standard Answers integration, an Answers overlay, or from visual autocomplete). | +| [querySource?](./search-headless.querystate.querysource.md) | [QuerySource](./search-headless.querysource.md) | (Optional) The source of the query (from a standard Search integration, an Search overlay, or from visual autocomplete). | | [queryTrigger?](./search-headless.querystate.querytrigger.md) | [QueryTrigger](./search-headless.querytrigger.md) | (Optional) How the query was triggered (besides user input). | -| [searchIntents?](./search-headless.querystate.searchintents.md) | [SearchIntent](./search-headless.searchintent.md)\[\] | (Optional) The computed intents of the mostRecentSearch, as returned by the Answers API. | +| [searchIntents?](./search-headless.querystate.searchintents.md) | [SearchIntent](./search-headless.searchintent.md)\[\] | (Optional) The computed intents of the mostRecentSearch, as returned by the Search API. | diff --git a/docs/search-headless.querystate.querysource.md b/docs/search-headless.querystate.querysource.md index 9abba4a6..2c2e5e23 100644 --- a/docs/search-headless.querystate.querysource.md +++ b/docs/search-headless.querystate.querysource.md @@ -4,7 +4,7 @@ ## QueryState.querySource property -The source of the query (from a standard Answers integration, an Answers overlay, or from visual autocomplete). +The source of the query (from a standard Search integration, an Search overlay, or from visual autocomplete). Signature: diff --git a/docs/search-headless.querystate.searchintents.md b/docs/search-headless.querystate.searchintents.md index f9a16a79..48dad570 100644 --- a/docs/search-headless.querystate.searchintents.md +++ b/docs/search-headless.querystate.searchintents.md @@ -4,7 +4,7 @@ ## QueryState.searchIntents property -The computed intents of the mostRecentSearch, as returned by the Answers API. +The computed intents of the mostRecentSearch, as returned by the Search API. Signature: diff --git a/docs/search-headless.answersheadless._constructor_.md b/docs/search-headless.searchheadless._constructor_.md similarity index 72% rename from docs/search-headless.answersheadless._constructor_.md rename to docs/search-headless.searchheadless._constructor_.md index e6c81dc7..5c45809d 100644 --- a/docs/search-headless.answersheadless._constructor_.md +++ b/docs/search-headless.searchheadless._constructor_.md @@ -1,10 +1,10 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [(constructor)](./search-headless.answersheadless._constructor_.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [(constructor)](./search-headless.searchheadless._constructor_.md) -## AnswersHeadless.(constructor) +## SearchHeadless.(constructor) -Constructs a new instance of the `AnswersHeadless` class +Constructs a new instance of the `SearchHeadless` class Signature: diff --git a/docs/search-headless.answersheadless.addlistener.md b/docs/search-headless.searchheadless.addlistener.md similarity index 71% rename from docs/search-headless.answersheadless.addlistener.md rename to docs/search-headless.searchheadless.addlistener.md index d78fbd6e..51089128 100644 --- a/docs/search-headless.answersheadless.addlistener.md +++ b/docs/search-headless.searchheadless.addlistener.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [addListener](./search-headless.answersheadless.addlistener.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [addListener](./search-headless.searchheadless.addlistener.md) -## AnswersHeadless.addListener() method +## SearchHeadless.addListener() method Adds a listener for a specific state value of type T. diff --git a/docs/search-headless.answersheadless.executefiltersearch.md b/docs/search-headless.searchheadless.executefiltersearch.md similarity index 74% rename from docs/search-headless.answersheadless.executefiltersearch.md rename to docs/search-headless.searchheadless.executefiltersearch.md index 81414056..4263b7ac 100644 --- a/docs/search-headless.answersheadless.executefiltersearch.md +++ b/docs/search-headless.searchheadless.executefiltersearch.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [executeFilterSearch](./search-headless.answersheadless.executefiltersearch.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [executeFilterSearch](./search-headless.searchheadless.executefiltersearch.md) -## AnswersHeadless.executeFilterSearch() method +## SearchHeadless.executeFilterSearch() method Performs a filtersearch request against specified fields within a single vertical using the vertical key stored in state. @@ -24,5 +24,5 @@ executeFilterSearch(query: string, sectioned: boolean, fields: SearchParameterFi Promise<[FilterSearchResponse](./search-headless.filtersearchresponse.md) \| undefined> -A Promise of a [FilterSearchResponse](./search-headless.filtersearchresponse.md) from the Answers API or of undefined if there is no verticalKey defined in state +A Promise of a [FilterSearchResponse](./search-headless.filtersearchresponse.md) from the Search API or of undefined if there is no verticalKey defined in state diff --git a/docs/search-headless.answersheadless.executeuniversalautocomplete.md b/docs/search-headless.searchheadless.executeuniversalautocomplete.md similarity index 64% rename from docs/search-headless.answersheadless.executeuniversalautocomplete.md rename to docs/search-headless.searchheadless.executeuniversalautocomplete.md index 53d942e5..22acf8e4 100644 --- a/docs/search-headless.answersheadless.executeuniversalautocomplete.md +++ b/docs/search-headless.searchheadless.executeuniversalautocomplete.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [executeUniversalAutocomplete](./search-headless.answersheadless.executeuniversalautocomplete.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [executeUniversalAutocomplete](./search-headless.searchheadless.executeuniversalautocomplete.md) -## AnswersHeadless.executeUniversalAutocomplete() method +## SearchHeadless.executeUniversalAutocomplete() method Performs an autocomplete request across all verticals using the query input stored in state. @@ -15,5 +15,5 @@ executeUniversalAutocomplete(): Promise; Promise<[AutocompleteResponse](./search-headless.autocompleteresponse.md)> -A Promise of an [AutocompleteResponse](./search-headless.autocompleteresponse.md) from the Answers API +A Promise of an [AutocompleteResponse](./search-headless.autocompleteresponse.md) from the Search API diff --git a/docs/search-headless.answersheadless.executeuniversalquery.md b/docs/search-headless.searchheadless.executeuniversalquery.md similarity index 51% rename from docs/search-headless.answersheadless.executeuniversalquery.md rename to docs/search-headless.searchheadless.executeuniversalquery.md index c701a72b..71d3fef7 100644 --- a/docs/search-headless.answersheadless.executeuniversalquery.md +++ b/docs/search-headless.searchheadless.executeuniversalquery.md @@ -1,10 +1,10 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [executeUniversalQuery](./search-headless.answersheadless.executeuniversalquery.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [executeUniversalQuery](./search-headless.searchheadless.executeuniversalquery.md) -## AnswersHeadless.executeUniversalQuery() method +## SearchHeadless.executeUniversalQuery() method -Performs an Answers search across all verticals with relevant parts of the state used as input to the search. Updates the state with the response data. +Performs a Search across all verticals with relevant parts of the state used as input to the search. Updates the state with the response data. Signature: @@ -15,5 +15,5 @@ executeUniversalQuery(): Promise; Promise<[UniversalSearchResponse](./search-headless.universalsearchresponse.md) \| undefined> -A Promise of a [UniversalSearchResponse](./search-headless.universalsearchresponse.md) from the Answers API +A Promise of a [UniversalSearchResponse](./search-headless.universalsearchresponse.md) from the Search API diff --git a/docs/search-headless.answersheadless.executeverticalautocomplete.md b/docs/search-headless.searchheadless.executeverticalautocomplete.md similarity index 61% rename from docs/search-headless.answersheadless.executeverticalautocomplete.md rename to docs/search-headless.searchheadless.executeverticalautocomplete.md index f5489b83..d22f3d4d 100644 --- a/docs/search-headless.answersheadless.executeverticalautocomplete.md +++ b/docs/search-headless.searchheadless.executeverticalautocomplete.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [executeVerticalAutocomplete](./search-headless.answersheadless.executeverticalautocomplete.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [executeVerticalAutocomplete](./search-headless.searchheadless.executeverticalautocomplete.md) -## AnswersHeadless.executeVerticalAutocomplete() method +## SearchHeadless.executeVerticalAutocomplete() method Performs an autocomplete request for a single vertical using the query input and vertical key stored in state. @@ -15,5 +15,5 @@ executeVerticalAutocomplete(): Promise; Promise<[AutocompleteResponse](./search-headless.autocompleteresponse.md) \| undefined> -A Promise of an [AutocompleteResponse](./search-headless.autocompleteresponse.md) from the Answers API or of undefined if there is no verticalKey defined in state +A Promise of an [AutocompleteResponse](./search-headless.autocompleteresponse.md) from the Search API or of undefined if there is no verticalKey defined in state diff --git a/docs/search-headless.searchheadless.executeverticalquery.md b/docs/search-headless.searchheadless.executeverticalquery.md new file mode 100644 index 00000000..04c2a7eb --- /dev/null +++ b/docs/search-headless.searchheadless.executeverticalquery.md @@ -0,0 +1,19 @@ + + +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [executeVerticalQuery](./search-headless.searchheadless.executeverticalquery.md) + +## SearchHeadless.executeVerticalQuery() method + +Perform a Search for a single vertical with relevant parts of the state used as input to the search. Updates the state with the response data. + +Signature: + +```typescript +executeVerticalQuery(): Promise; +``` +Returns: + +Promise<[VerticalSearchResponse](./search-headless.verticalsearchresponse.md) \| undefined> + +A Promise of a [VerticalSearchResponse](./search-headless.verticalsearchresponse.md) from the Search API or of undefined if there is no verticalKey defined in state + diff --git a/docs/search-headless.searchheadless.md b/docs/search-headless.searchheadless.md new file mode 100644 index 00000000..9c474e45 --- /dev/null +++ b/docs/search-headless.searchheadless.md @@ -0,0 +1,62 @@ + + +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) + +## SearchHeadless class + +Provides the functionality for interacting with an Search experience. + +Signature: + +```typescript +export default class SearchHeadless +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(core, stateManager, httpManager, additionalHttpHeaders)](./search-headless.searchheadless._constructor_.md) | | Constructs a new instance of the SearchHeadless class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [state](./search-headless.searchheadless.state.md) | | [State](./search-headless.state.md) | Gets the current state of the SearchHeadless instance. | +| [utilities](./search-headless.searchheadless.utilities.md) | | typeof answersUtilities | Common utility functions for manipulating Search-related data. | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [addListener(listener)](./search-headless.searchheadless.addlistener.md) | | Adds a listener for a specific state value of type T. | +| [executeFilterSearch(query, sectioned, fields)](./search-headless.searchheadless.executefiltersearch.md) | | Performs a filtersearch request against specified fields within a single vertical using the vertical key stored in state. | +| [executeUniversalAutocomplete()](./search-headless.searchheadless.executeuniversalautocomplete.md) | | Performs an autocomplete request across all verticals using the query input stored in state. | +| [executeUniversalQuery()](./search-headless.searchheadless.executeuniversalquery.md) | | Performs a Search across all verticals with relevant parts of the state used as input to the search. Updates the state with the response data. | +| [executeVerticalAutocomplete()](./search-headless.searchheadless.executeverticalautocomplete.md) | | Performs an autocomplete request for a single vertical using the query input and vertical key stored in state. | +| [executeVerticalQuery()](./search-headless.searchheadless.executeverticalquery.md) | | Perform a Search for a single vertical with relevant parts of the state used as input to the search. Updates the state with the response data. | +| [resetFacets()](./search-headless.searchheadless.resetfacets.md) | | Unselects all [facets](./search-headless.filtersstate.facets.md). | +| [setAlternativeVerticals(alternativeVerticals)](./search-headless.searchheadless.setalternativeverticals.md) | | Sets the alternativeVerticals for [VerticalSearchState.noResults](./search-headless.verticalsearchstate.noresults.md) to the specified verticals. | +| [setContext(context)](./search-headless.searchheadless.setcontext.md) | | Sets [MetaState.context](./search-headless.metastate.context.md) to the specified context. | +| [setFacetOption(fieldId, facetOption, selected)](./search-headless.searchheadless.setfacetoption.md) | | Sets a specified facet option to be selected or unselected. | +| [setFacets(facets)](./search-headless.searchheadless.setfacets.md) | | Sets [FiltersState.facets](./search-headless.filtersstate.facets.md) to the specified facets. | +| [setFilterOption(filter)](./search-headless.searchheadless.setfilteroption.md) | | Sets a static filter option and whether or not it is selected in state. | +| [setOffset(offset)](./search-headless.searchheadless.setoffset.md) | | Sets [VerticalSearchState.offset](./search-headless.verticalsearchstate.offset.md) to the specified offset. | +| [setQuery(input)](./search-headless.searchheadless.setquery.md) | | Sets [QueryState.input](./search-headless.querystate.input.md) to the specified input. | +| [setQuerySource(source)](./search-headless.searchheadless.setquerysource.md) | | Sets [QueryState.querySource](./search-headless.querystate.querysource.md) to the specified source. | +| [setQueryTrigger(trigger)](./search-headless.searchheadless.setquerytrigger.md) | | Sets [QueryState.queryTrigger](./search-headless.querystate.querytrigger.md) to the specified trigger. | +| [setReferrerPageUrl(referrerPageUrl)](./search-headless.searchheadless.setreferrerpageurl.md) | | Sets [MetaState.referrerPageUrl](./search-headless.metastate.referrerpageurl.md) to the specified URL. | +| [setRestrictVerticals(restrictVerticals)](./search-headless.searchheadless.setrestrictverticals.md) | | Sets [UniversalSearchState.restrictVerticals](./search-headless.universalsearchstate.restrictverticals.md) to the specified vertical keys. | +| [setSessionId(sessionId)](./search-headless.searchheadless.setsessionid.md) | | Sets [SessionTrackingState.sessionId](./search-headless.sessiontrackingstate.sessionid.md) to the specified ID. | +| [setSessionTrackingEnabled(enabled)](./search-headless.searchheadless.setsessiontrackingenabled.md) | | Sets [SessionTrackingState.enabled](./search-headless.sessiontrackingstate.enabled.md) to the specified boolean value. | +| [setSortBys(sortBys)](./search-headless.searchheadless.setsortbys.md) | | Sets [VerticalSearchState.sortBys](./search-headless.verticalsearchstate.sortbys.md) to the specified sortBys. | +| [setSpellCheckEnabled(enabled)](./search-headless.searchheadless.setspellcheckenabled.md) | | Sets [SpellCheckState.enabled](./search-headless.spellcheckstate.enabled.md) to the specified boolean value. | +| [setState(state)](./search-headless.searchheadless.setstate.md) | | Sets the [State](./search-headless.state.md) to the specified state. | +| [setStaticFilters(filters)](./search-headless.searchheadless.setstaticfilters.md) | | Sets [FiltersState.static](./search-headless.filtersstate.static.md) to the specified filters. | +| [setUniversal()](./search-headless.searchheadless.setuniversal.md) | | Sets up Headless to manage universal searches. | +| [setUniversalLimit(limit)](./search-headless.searchheadless.setuniversallimit.md) | | Sets [UniversalSearchState.limit](./search-headless.universalsearchstate.limit.md) to the specified limit. | +| [setUserLocation(latLong)](./search-headless.searchheadless.setuserlocation.md) | | Sets [LocationState.userLocation](./search-headless.locationstate.userlocation.md) to the specified latitude and longitude. | +| [setVertical(verticalKey)](./search-headless.searchheadless.setvertical.md) | | Sets up Headless to manage the vertical indicated by the verticalKey. | +| [setVerticalLimit(limit)](./search-headless.searchheadless.setverticallimit.md) | | Sets [VerticalSearchState.limit](./search-headless.verticalsearchstate.limit.md) to the specified limit. | +| [submitQuestion(request)](./search-headless.searchheadless.submitquestion.md) | | Submits a question to the Search API with the specified request data. | + diff --git a/docs/search-headless.answersheadless.resetfacets.md b/docs/search-headless.searchheadless.resetfacets.md similarity index 61% rename from docs/search-headless.answersheadless.resetfacets.md rename to docs/search-headless.searchheadless.resetfacets.md index e9d3bca0..261162d0 100644 --- a/docs/search-headless.answersheadless.resetfacets.md +++ b/docs/search-headless.searchheadless.resetfacets.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [resetFacets](./search-headless.answersheadless.resetfacets.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [resetFacets](./search-headless.searchheadless.resetfacets.md) -## AnswersHeadless.resetFacets() method +## SearchHeadless.resetFacets() method Unselects all [facets](./search-headless.filtersstate.facets.md). diff --git a/docs/search-headless.answersheadless.setalternativeverticals.md b/docs/search-headless.searchheadless.setalternativeverticals.md similarity index 72% rename from docs/search-headless.answersheadless.setalternativeverticals.md rename to docs/search-headless.searchheadless.setalternativeverticals.md index f368edec..d242487a 100644 --- a/docs/search-headless.answersheadless.setalternativeverticals.md +++ b/docs/search-headless.searchheadless.setalternativeverticals.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setAlternativeVerticals](./search-headless.answersheadless.setalternativeverticals.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setAlternativeVerticals](./search-headless.searchheadless.setalternativeverticals.md) -## AnswersHeadless.setAlternativeVerticals() method +## SearchHeadless.setAlternativeVerticals() method Sets the alternativeVerticals for [VerticalSearchState.noResults](./search-headless.verticalsearchstate.noresults.md) to the specified verticals. diff --git a/docs/search-headless.answersheadless.setcontext.md b/docs/search-headless.searchheadless.setcontext.md similarity index 71% rename from docs/search-headless.answersheadless.setcontext.md rename to docs/search-headless.searchheadless.setcontext.md index 944b2745..e9cdb41d 100644 --- a/docs/search-headless.answersheadless.setcontext.md +++ b/docs/search-headless.searchheadless.setcontext.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setContext](./search-headless.answersheadless.setcontext.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setContext](./search-headless.searchheadless.setcontext.md) -## AnswersHeadless.setContext() method +## SearchHeadless.setContext() method Sets [MetaState.context](./search-headless.metastate.context.md) to the specified context. diff --git a/docs/search-headless.answersheadless.setfacetoption.md b/docs/search-headless.searchheadless.setfacetoption.md similarity index 75% rename from docs/search-headless.answersheadless.setfacetoption.md rename to docs/search-headless.searchheadless.setfacetoption.md index c5da7866..dfc5ff61 100644 --- a/docs/search-headless.answersheadless.setfacetoption.md +++ b/docs/search-headless.searchheadless.setfacetoption.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setFacetOption](./search-headless.answersheadless.setfacetoption.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setFacetOption](./search-headless.searchheadless.setfacetoption.md) -## AnswersHeadless.setFacetOption() method +## SearchHeadless.setFacetOption() method Sets a specified facet option to be selected or unselected. diff --git a/docs/search-headless.answersheadless.setfacets.md b/docs/search-headless.searchheadless.setfacets.md similarity index 73% rename from docs/search-headless.answersheadless.setfacets.md rename to docs/search-headless.searchheadless.setfacets.md index ccd35561..d9d76b16 100644 --- a/docs/search-headless.answersheadless.setfacets.md +++ b/docs/search-headless.searchheadless.setfacets.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setFacets](./search-headless.answersheadless.setfacets.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setFacets](./search-headless.searchheadless.setfacets.md) -## AnswersHeadless.setFacets() method +## SearchHeadless.setFacets() method Sets [FiltersState.facets](./search-headless.filtersstate.facets.md) to the specified facets. diff --git a/docs/search-headless.answersheadless.setfilteroption.md b/docs/search-headless.searchheadless.setfilteroption.md similarity index 71% rename from docs/search-headless.answersheadless.setfilteroption.md rename to docs/search-headless.searchheadless.setfilteroption.md index e49f78e4..42b7df55 100644 --- a/docs/search-headless.answersheadless.setfilteroption.md +++ b/docs/search-headless.searchheadless.setfilteroption.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setFilterOption](./search-headless.answersheadless.setfilteroption.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setFilterOption](./search-headless.searchheadless.setfilteroption.md) -## AnswersHeadless.setFilterOption() method +## SearchHeadless.setFilterOption() method Sets a static filter option and whether or not it is selected in state. diff --git a/docs/search-headless.answersheadless.setoffset.md b/docs/search-headless.searchheadless.setoffset.md similarity index 70% rename from docs/search-headless.answersheadless.setoffset.md rename to docs/search-headless.searchheadless.setoffset.md index 7c2f868e..d6093545 100644 --- a/docs/search-headless.answersheadless.setoffset.md +++ b/docs/search-headless.searchheadless.setoffset.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setOffset](./search-headless.answersheadless.setoffset.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setOffset](./search-headless.searchheadless.setoffset.md) -## AnswersHeadless.setOffset() method +## SearchHeadless.setOffset() method Sets [VerticalSearchState.offset](./search-headless.verticalsearchstate.offset.md) to the specified offset. diff --git a/docs/search-headless.answersheadless.setquery.md b/docs/search-headless.searchheadless.setquery.md similarity index 69% rename from docs/search-headless.answersheadless.setquery.md rename to docs/search-headless.searchheadless.setquery.md index 9fe84359..75cc1dac 100644 --- a/docs/search-headless.answersheadless.setquery.md +++ b/docs/search-headless.searchheadless.setquery.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setQuery](./search-headless.answersheadless.setquery.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setQuery](./search-headless.searchheadless.setquery.md) -## AnswersHeadless.setQuery() method +## SearchHeadless.setQuery() method Sets [QueryState.input](./search-headless.querystate.input.md) to the specified input. diff --git a/docs/search-headless.answersheadless.setquerysource.md b/docs/search-headless.searchheadless.setquerysource.md similarity index 71% rename from docs/search-headless.answersheadless.setquerysource.md rename to docs/search-headless.searchheadless.setquerysource.md index c36bad92..94487160 100644 --- a/docs/search-headless.answersheadless.setquerysource.md +++ b/docs/search-headless.searchheadless.setquerysource.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setQuerySource](./search-headless.answersheadless.setquerysource.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setQuerySource](./search-headless.searchheadless.setquerysource.md) -## AnswersHeadless.setQuerySource() method +## SearchHeadless.setQuerySource() method Sets [QueryState.querySource](./search-headless.querystate.querysource.md) to the specified source. diff --git a/docs/search-headless.answersheadless.setquerytrigger.md b/docs/search-headless.searchheadless.setquerytrigger.md similarity index 71% rename from docs/search-headless.answersheadless.setquerytrigger.md rename to docs/search-headless.searchheadless.setquerytrigger.md index 02a71b00..4d557940 100644 --- a/docs/search-headless.answersheadless.setquerytrigger.md +++ b/docs/search-headless.searchheadless.setquerytrigger.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setQueryTrigger](./search-headless.answersheadless.setquerytrigger.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setQueryTrigger](./search-headless.searchheadless.setquerytrigger.md) -## AnswersHeadless.setQueryTrigger() method +## SearchHeadless.setQueryTrigger() method Sets [QueryState.queryTrigger](./search-headless.querystate.querytrigger.md) to the specified trigger. diff --git a/docs/search-headless.answersheadless.setreferrerpageurl.md b/docs/search-headless.searchheadless.setreferrerpageurl.md similarity index 69% rename from docs/search-headless.answersheadless.setreferrerpageurl.md rename to docs/search-headless.searchheadless.setreferrerpageurl.md index 6050db35..385dc682 100644 --- a/docs/search-headless.answersheadless.setreferrerpageurl.md +++ b/docs/search-headless.searchheadless.setreferrerpageurl.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setReferrerPageUrl](./search-headless.answersheadless.setreferrerpageurl.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setReferrerPageUrl](./search-headless.searchheadless.setreferrerpageurl.md) -## AnswersHeadless.setReferrerPageUrl() method +## SearchHeadless.setReferrerPageUrl() method Sets [MetaState.referrerPageUrl](./search-headless.metastate.referrerpageurl.md) to the specified URL. diff --git a/docs/search-headless.answersheadless.setrestrictverticals.md b/docs/search-headless.searchheadless.setrestrictverticals.md similarity index 71% rename from docs/search-headless.answersheadless.setrestrictverticals.md rename to docs/search-headless.searchheadless.setrestrictverticals.md index 72093146..4ba0ab01 100644 --- a/docs/search-headless.answersheadless.setrestrictverticals.md +++ b/docs/search-headless.searchheadless.setrestrictverticals.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setRestrictVerticals](./search-headless.answersheadless.setrestrictverticals.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setRestrictVerticals](./search-headless.searchheadless.setrestrictverticals.md) -## AnswersHeadless.setRestrictVerticals() method +## SearchHeadless.setRestrictVerticals() method Sets [UniversalSearchState.restrictVerticals](./search-headless.universalsearchstate.restrictverticals.md) to the specified vertical keys. diff --git a/docs/search-headless.answersheadless.setsessionid.md b/docs/search-headless.searchheadless.setsessionid.md similarity index 70% rename from docs/search-headless.answersheadless.setsessionid.md rename to docs/search-headless.searchheadless.setsessionid.md index 1b875f3e..c0eceb04 100644 --- a/docs/search-headless.answersheadless.setsessionid.md +++ b/docs/search-headless.searchheadless.setsessionid.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setSessionId](./search-headless.answersheadless.setsessionid.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setSessionId](./search-headless.searchheadless.setsessionid.md) -## AnswersHeadless.setSessionId() method +## SearchHeadless.setSessionId() method Sets [SessionTrackingState.sessionId](./search-headless.sessiontrackingstate.sessionid.md) to the specified ID. diff --git a/docs/search-headless.answersheadless.setsessiontrackingenabled.md b/docs/search-headless.searchheadless.setsessiontrackingenabled.md similarity index 68% rename from docs/search-headless.answersheadless.setsessiontrackingenabled.md rename to docs/search-headless.searchheadless.setsessiontrackingenabled.md index deb3852f..be9eb622 100644 --- a/docs/search-headless.answersheadless.setsessiontrackingenabled.md +++ b/docs/search-headless.searchheadless.setsessiontrackingenabled.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setSessionTrackingEnabled](./search-headless.answersheadless.setsessiontrackingenabled.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setSessionTrackingEnabled](./search-headless.searchheadless.setsessiontrackingenabled.md) -## AnswersHeadless.setSessionTrackingEnabled() method +## SearchHeadless.setSessionTrackingEnabled() method Sets [SessionTrackingState.enabled](./search-headless.sessiontrackingstate.enabled.md) to the specified boolean value. diff --git a/docs/search-headless.answersheadless.setsortbys.md b/docs/search-headless.searchheadless.setsortbys.md similarity index 72% rename from docs/search-headless.answersheadless.setsortbys.md rename to docs/search-headless.searchheadless.setsortbys.md index 1d80d18b..a7d1fae2 100644 --- a/docs/search-headless.answersheadless.setsortbys.md +++ b/docs/search-headless.searchheadless.setsortbys.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setSortBys](./search-headless.answersheadless.setsortbys.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setSortBys](./search-headless.searchheadless.setsortbys.md) -## AnswersHeadless.setSortBys() method +## SearchHeadless.setSortBys() method Sets [VerticalSearchState.sortBys](./search-headless.verticalsearchstate.sortbys.md) to the specified sortBys. diff --git a/docs/search-headless.answersheadless.setspellcheckenabled.md b/docs/search-headless.searchheadless.setspellcheckenabled.md similarity index 69% rename from docs/search-headless.answersheadless.setspellcheckenabled.md rename to docs/search-headless.searchheadless.setspellcheckenabled.md index 64051736..5470c2e8 100644 --- a/docs/search-headless.answersheadless.setspellcheckenabled.md +++ b/docs/search-headless.searchheadless.setspellcheckenabled.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setSpellCheckEnabled](./search-headless.answersheadless.setspellcheckenabled.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setSpellCheckEnabled](./search-headless.searchheadless.setspellcheckenabled.md) -## AnswersHeadless.setSpellCheckEnabled() method +## SearchHeadless.setSpellCheckEnabled() method Sets [SpellCheckState.enabled](./search-headless.spellcheckstate.enabled.md) to the specified boolean value. diff --git a/docs/search-headless.answersheadless.setstate.md b/docs/search-headless.searchheadless.setstate.md similarity index 70% rename from docs/search-headless.answersheadless.setstate.md rename to docs/search-headless.searchheadless.setstate.md index ccdd1dee..da8918eb 100644 --- a/docs/search-headless.answersheadless.setstate.md +++ b/docs/search-headless.searchheadless.setstate.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setState](./search-headless.answersheadless.setstate.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setState](./search-headless.searchheadless.setstate.md) -## AnswersHeadless.setState() method +## SearchHeadless.setState() method Sets the [State](./search-headless.state.md) to the specified state. diff --git a/docs/search-headless.answersheadless.setstaticfilters.md b/docs/search-headless.searchheadless.setstaticfilters.md similarity index 71% rename from docs/search-headless.answersheadless.setstaticfilters.md rename to docs/search-headless.searchheadless.setstaticfilters.md index 07589577..80bb905e 100644 --- a/docs/search-headless.answersheadless.setstaticfilters.md +++ b/docs/search-headless.searchheadless.setstaticfilters.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setStaticFilters](./search-headless.answersheadless.setstaticfilters.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setStaticFilters](./search-headless.searchheadless.setstaticfilters.md) -## AnswersHeadless.setStaticFilters() method +## SearchHeadless.setStaticFilters() method Sets [FiltersState.static](./search-headless.filtersstate.static.md) to the specified filters. diff --git a/docs/search-headless.answersheadless.setuniversal.md b/docs/search-headless.searchheadless.setuniversal.md similarity index 58% rename from docs/search-headless.answersheadless.setuniversal.md rename to docs/search-headless.searchheadless.setuniversal.md index 278891c5..897756be 100644 --- a/docs/search-headless.answersheadless.setuniversal.md +++ b/docs/search-headless.searchheadless.setuniversal.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setUniversal](./search-headless.answersheadless.setuniversal.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setUniversal](./search-headless.searchheadless.setuniversal.md) -## AnswersHeadless.setUniversal() method +## SearchHeadless.setUniversal() method Sets up Headless to manage universal searches. diff --git a/docs/search-headless.answersheadless.setuniversallimit.md b/docs/search-headless.searchheadless.setuniversallimit.md similarity index 71% rename from docs/search-headless.answersheadless.setuniversallimit.md rename to docs/search-headless.searchheadless.setuniversallimit.md index 98c194c4..38b512d8 100644 --- a/docs/search-headless.answersheadless.setuniversallimit.md +++ b/docs/search-headless.searchheadless.setuniversallimit.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setUniversalLimit](./search-headless.answersheadless.setuniversallimit.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setUniversalLimit](./search-headless.searchheadless.setuniversallimit.md) -## AnswersHeadless.setUniversalLimit() method +## SearchHeadless.setUniversalLimit() method Sets [UniversalSearchState.limit](./search-headless.universalsearchstate.limit.md) to the specified limit. diff --git a/docs/search-headless.answersheadless.setuserlocation.md b/docs/search-headless.searchheadless.setuserlocation.md similarity index 71% rename from docs/search-headless.answersheadless.setuserlocation.md rename to docs/search-headless.searchheadless.setuserlocation.md index 68a8b33b..121f7abd 100644 --- a/docs/search-headless.answersheadless.setuserlocation.md +++ b/docs/search-headless.searchheadless.setuserlocation.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setUserLocation](./search-headless.answersheadless.setuserlocation.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setUserLocation](./search-headless.searchheadless.setuserlocation.md) -## AnswersHeadless.setUserLocation() method +## SearchHeadless.setUserLocation() method Sets [LocationState.userLocation](./search-headless.locationstate.userlocation.md) to the specified latitude and longitude. diff --git a/docs/search-headless.answersheadless.setvertical.md b/docs/search-headless.searchheadless.setvertical.md similarity index 68% rename from docs/search-headless.answersheadless.setvertical.md rename to docs/search-headless.searchheadless.setvertical.md index b07ec112..a5a0111d 100644 --- a/docs/search-headless.answersheadless.setvertical.md +++ b/docs/search-headless.searchheadless.setvertical.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setVertical](./search-headless.answersheadless.setvertical.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setVertical](./search-headless.searchheadless.setvertical.md) -## AnswersHeadless.setVertical() method +## SearchHeadless.setVertical() method Sets up Headless to manage the vertical indicated by the verticalKey. diff --git a/docs/search-headless.answersheadless.setverticallimit.md b/docs/search-headless.searchheadless.setverticallimit.md similarity index 68% rename from docs/search-headless.answersheadless.setverticallimit.md rename to docs/search-headless.searchheadless.setverticallimit.md index 82e13e36..5437aa3d 100644 --- a/docs/search-headless.answersheadless.setverticallimit.md +++ b/docs/search-headless.searchheadless.setverticallimit.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [setVerticalLimit](./search-headless.answersheadless.setverticallimit.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [setVerticalLimit](./search-headless.searchheadless.setverticallimit.md) -## AnswersHeadless.setVerticalLimit() method +## SearchHeadless.setVerticalLimit() method Sets [VerticalSearchState.limit](./search-headless.verticalsearchstate.limit.md) to the specified limit. diff --git a/docs/search-headless.searchheadless.state.md b/docs/search-headless.searchheadless.state.md new file mode 100644 index 00000000..1fcaa9d9 --- /dev/null +++ b/docs/search-headless.searchheadless.state.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [state](./search-headless.searchheadless.state.md) + +## SearchHeadless.state property + +Gets the current state of the SearchHeadless instance. + +Signature: + +```typescript +get state(): State; +``` diff --git a/docs/search-headless.answersheadless.submitquestion.md b/docs/search-headless.searchheadless.submitquestion.md similarity index 68% rename from docs/search-headless.answersheadless.submitquestion.md rename to docs/search-headless.searchheadless.submitquestion.md index 5d2e5865..fc83bd4e 100644 --- a/docs/search-headless.answersheadless.submitquestion.md +++ b/docs/search-headless.searchheadless.submitquestion.md @@ -1,10 +1,10 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [AnswersHeadless](./search-headless.answersheadless.md) > [submitQuestion](./search-headless.answersheadless.submitquestion.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [submitQuestion](./search-headless.searchheadless.submitquestion.md) -## AnswersHeadless.submitQuestion() method +## SearchHeadless.submitQuestion() method -Submits a question to the Answers API with the specified request data. +Submits a question to the Search API with the specified request data. Signature: @@ -22,5 +22,5 @@ submitQuestion(request: Omit Promise<[QuestionSubmissionResponse](./search-headless.questionsubmissionresponse.md)> -A Promise of a [QuestionSubmissionResponse](./search-headless.questionsubmissionresponse.md) from the Answers API +A Promise of a [QuestionSubmissionResponse](./search-headless.questionsubmissionresponse.md) from the Search API diff --git a/docs/search-headless.searchheadless.utilities.md b/docs/search-headless.searchheadless.utilities.md new file mode 100644 index 00000000..02039971 --- /dev/null +++ b/docs/search-headless.searchheadless.utilities.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [SearchHeadless](./search-headless.searchheadless.md) > [utilities](./search-headless.searchheadless.utilities.md) + +## SearchHeadless.utilities property + +Common utility functions for manipulating Search-related data. + +Signature: + +```typescript +readonly utilities: typeof answersUtilities; +``` diff --git a/docs/search-headless.answersutilities.isclosematch.md b/docs/search-headless.searchutilities.isclosematch.md similarity index 75% rename from docs/search-headless.answersutilities.isclosematch.md rename to docs/search-headless.searchutilities.isclosematch.md index 32c71f29..05fe5ea9 100644 --- a/docs/search-headless.answersutilities.isclosematch.md +++ b/docs/search-headless.searchutilities.isclosematch.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [answersUtilities](./search-headless.answersutilities.md) > [isCloseMatch](./search-headless.answersutilities.isclosematch.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [searchUtilities](./search-headless.searchutilities.md) > [isCloseMatch](./search-headless.searchutilities.isclosematch.md) -## answersUtilities.isCloseMatch() function +## searchUtilities.isCloseMatch() function Checks if the searchTerm is a case-insensitive, Levenshtein match for the value. diff --git a/docs/search-headless.searchutilities.md b/docs/search-headless.searchutilities.md new file mode 100644 index 00000000..48807a3b --- /dev/null +++ b/docs/search-headless.searchutilities.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [searchUtilities](./search-headless.searchutilities.md) + +## searchUtilities namespace + +## Functions + +| Function | Description | +| --- | --- | +| [isCloseMatch(value, searchTerm)](./search-headless.searchutilities.isclosematch.md) | Checks if the searchTerm is a case-insensitive, Levenshtein match for the value. | +| [searchThroughFacet(facet, searchTerm)](./search-headless.searchutilities.searchthroughfacet.md) | Searches through the specified facet and filters out the options that aren't a close match for the given searchTerm. The comparison is case insensitive. | + diff --git a/docs/search-headless.answersutilities.searchthroughfacet.md b/docs/search-headless.searchutilities.searchthroughfacet.md similarity index 79% rename from docs/search-headless.answersutilities.searchthroughfacet.md rename to docs/search-headless.searchutilities.searchthroughfacet.md index 05580f41..2471721e 100644 --- a/docs/search-headless.answersutilities.searchthroughfacet.md +++ b/docs/search-headless.searchutilities.searchthroughfacet.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [answersUtilities](./search-headless.answersutilities.md) > [searchThroughFacet](./search-headless.answersutilities.searchthroughfacet.md) +[Home](./index.md) > [@yext/search-headless](./search-headless.md) > [searchUtilities](./search-headless.searchutilities.md) > [searchThroughFacet](./search-headless.searchutilities.searchthroughfacet.md) -## answersUtilities.searchThroughFacet() function +## searchUtilities.searchThroughFacet() function Searches through the specified facet and filters out the options that aren't a close match for the given searchTerm. The comparison is case insensitive. diff --git a/docs/search-headless.state.md b/docs/search-headless.state.md index 454941b7..3254e858 100644 --- a/docs/search-headless.state.md +++ b/docs/search-headless.state.md @@ -4,7 +4,7 @@ ## State interface -The state representing an AnswersHeadless instance. +The state representing a SearchHeadless instance. Signature: @@ -19,7 +19,7 @@ export interface State | [directAnswer](./search-headless.state.directanswer.md) | [DirectAnswerState](./search-headless.directanswerstate.md) | Maintains the direct answer associated with the latest search. | | [filters](./search-headless.state.filters.md) | [FiltersState](./search-headless.filtersstate.md) | Maintains the current state of facets and filters in the application. | | [location](./search-headless.state.location.md) | [LocationState](./search-headless.locationstate.md) | Maintains the user's location, if given, or the inferred location, that is used to bias search results. | -| [meta](./search-headless.state.meta.md) | [MetaState](./search-headless.metastate.md) | Maintains the metadata for Answers Headless. | +| [meta](./search-headless.state.meta.md) | [MetaState](./search-headless.metastate.md) | Maintains the metadata for Search Headless. | | [query](./search-headless.state.query.md) | [QueryState](./search-headless.querystate.md) | Maintains the latest query and its associated data. | | [queryRules](./search-headless.state.queryrules.md) | [QueryRulesState](./search-headless.queryrulesstate.md) | Maintains the data from the triggered query rules. | | [searchStatus](./search-headless.state.searchstatus.md) | [SearchStatusState](./search-headless.searchstatusstate.md) | Maintains the status of the latest search. | diff --git a/docs/search-headless.state.meta.md b/docs/search-headless.state.meta.md index 1b610f88..6570286e 100644 --- a/docs/search-headless.state.meta.md +++ b/docs/search-headless.state.meta.md @@ -4,7 +4,7 @@ ## State.meta property -Maintains the metadata for Answers Headless. +Maintains the metadata for Search Headless. Signature: diff --git a/docs/search-headless.statemanager.md b/docs/search-headless.statemanager.md index 1c046a90..b838ab48 100644 --- a/docs/search-headless.statemanager.md +++ b/docs/search-headless.statemanager.md @@ -4,7 +4,7 @@ ## StateManager interface -Manages the information contained in the state for an AnswersHeadless instance. +Manages the information contained in the state for an SearchHeadless instance. Signature: diff --git a/etc/search-headless.api.md b/etc/search-headless.api.md index 29d56d30..75d31c54 100644 --- a/etc/search-headless.api.md +++ b/etc/search-headless.api.md @@ -52,56 +52,16 @@ export class AnswersError extends Error { /* Excluded from this release type: __constructor */ } -// @public -export class AnswersHeadless { - // Warning: (ae-forgotten-export) The symbol "HttpManager" needs to be exported by the entry point index.d.ts - constructor(core: AnswersCore, stateManager: StateManager, httpManager: HttpManager, additionalHttpHeaders?: AdditionalHttpHeaders | undefined); - addListener(listener: StateListener): Unsubscribe; - executeFilterSearch(query: string, sectioned: boolean, fields: SearchParameterField[]): Promise; - executeUniversalAutocomplete(): Promise; - executeUniversalQuery(): Promise; - executeVerticalAutocomplete(): Promise; - executeVerticalQuery(): Promise; - resetFacets(): void; - setAlternativeVerticals(alternativeVerticals: VerticalResults[]): void; - setContext(context: Context): void; - setFacetOption(fieldId: string, facetOption: FacetOption, selected: boolean): void; - setFacets(facets: DisplayableFacet[]): void; - setFilterOption(filter: SelectableFilter): void; - setOffset(offset: number): void; - setQuery(input: string): void; - setQuerySource(source: QuerySource): void; - setQueryTrigger(trigger: QueryTrigger): void; - setReferrerPageUrl(referrerPageUrl: string): void; - setRestrictVerticals(restrictVerticals: string[]): void; - setSessionId(sessionId: string): void; - setSessionTrackingEnabled(enabled: boolean): void; - setSortBys(sortBys: SortBy[]): void; - setSpellCheckEnabled(enabled: boolean): void; - setState(state: State): void; - setStaticFilters(filters: SelectableFilter[]): void; - setUniversal(): void; - setUniversalLimit(limit: UniversalLimit): void; - setUserLocation(latLong: LatLong): void; - setVertical(verticalKey: string): void; - setVerticalLimit(limit: number): void; - get state(): State; - submitQuestion(request: Omit): Promise; - readonly utilities: typeof answersUtilities; -} +// @public @deprecated (undocumented) +export const AnswersHeadless: typeof SearchHeadless; // @public export interface AnswersRequest { additionalHttpHeaders?: AdditionalHttpHeaders; } -declare namespace answersUtilities { - export { - searchThroughFacet, - isCloseMatch - } -} -export { answersUtilities } +// @public @deprecated (undocumented) +export const answersUtilities: typeof searchUtilities; // @public export interface AppliedQueryFilter { @@ -466,13 +426,16 @@ export interface ParentState { [headlessId: string]: State; } -// Warning: (ae-internal-mixed-release-tag) Mixed release tags are not allowed for "provideAnswersHeadless" because one of its declarations is marked as @internal +// @public @deprecated +export const provideAnswersHeadless: typeof provideHeadless; + +// Warning: (ae-internal-mixed-release-tag) Mixed release tags are not allowed for "provideHeadless" because one of its declarations is marked as @internal // // @public -export function provideAnswersHeadless(config: HeadlessConfig): AnswersHeadless; +export function provideHeadless(config: HeadlessConfig): SearchHeadless; // @internal -export function provideAnswersHeadless(config: HeadlessConfig, additionalHttpHeaders: AdditionalHttpHeaders): AnswersHeadless; +export function provideHeadless(config: HeadlessConfig, additionalHttpHeaders: AdditionalHttpHeaders): SearchHeadless; // @public export interface QueryRulesActionsData { @@ -557,6 +520,44 @@ export interface Result { // @public export const SandboxEndpoints: Required; +// @public +export class SearchHeadless { + // Warning: (ae-forgotten-export) The symbol "HttpManager" needs to be exported by the entry point index.d.ts + constructor(core: AnswersCore, stateManager: StateManager, httpManager: HttpManager, additionalHttpHeaders?: AdditionalHttpHeaders | undefined); + addListener(listener: StateListener): Unsubscribe; + executeFilterSearch(query: string, sectioned: boolean, fields: SearchParameterField[]): Promise; + executeUniversalAutocomplete(): Promise; + executeUniversalQuery(): Promise; + executeVerticalAutocomplete(): Promise; + executeVerticalQuery(): Promise; + resetFacets(): void; + setAlternativeVerticals(alternativeVerticals: VerticalResults[]): void; + setContext(context: Context): void; + setFacetOption(fieldId: string, facetOption: FacetOption, selected: boolean): void; + setFacets(facets: DisplayableFacet[]): void; + setFilterOption(filter: SelectableFilter): void; + setOffset(offset: number): void; + setQuery(input: string): void; + setQuerySource(source: QuerySource): void; + setQueryTrigger(trigger: QueryTrigger): void; + setReferrerPageUrl(referrerPageUrl: string): void; + setRestrictVerticals(restrictVerticals: string[]): void; + setSessionId(sessionId: string): void; + setSessionTrackingEnabled(enabled: boolean): void; + setSortBys(sortBys: SortBy[]): void; + setSpellCheckEnabled(enabled: boolean): void; + setState(state: State): void; + setStaticFilters(filters: SelectableFilter[]): void; + setUniversal(): void; + setUniversalLimit(limit: UniversalLimit): void; + setUserLocation(latLong: LatLong): void; + setVertical(verticalKey: string): void; + setVerticalLimit(limit: number): void; + get state(): State; + submitQuestion(request: Omit): Promise; + readonly utilities: typeof searchUtilities; +} + // @public export enum SearchIntent { NearMe = "NEAR_ME" @@ -592,6 +593,14 @@ export enum SearchTypeEnum { Vertical = "vertical" } +declare namespace searchUtilities { + export { + searchThroughFacet, + isCloseMatch + } +} +export { searchUtilities } + // @public export interface SelectableFilter extends Filter { displayName?: string; diff --git a/src/constants.ts b/src/constants.ts index 383569b7..25490d9a 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,5 +1,5 @@ /** - * The headlessId automatically given to the first AnswersHeadless instance created. + * The headlessId automatically given to the first SearchHeadless instance created. * * @public */ diff --git a/src/deprecated.ts b/src/deprecated.ts new file mode 100644 index 00000000..00bc4cda --- /dev/null +++ b/src/deprecated.ts @@ -0,0 +1,29 @@ +import { searchUtilities, provideHeadless } from '.'; +import SearchHeadless from './search-headless'; + +/** + * @public + * + * @deprecated answersUtilities has been deprecated and renamed to searchUtilities + */ +export const answersUtilities = searchUtilities; + +/** + * Supplies a new instance of {@link SearchHeadless}, using the provided configuration. + * + * @param config - The apiKey, experienceKey, etc. needed to set up a front-end Answers + * experience. + * @returns The newly created instance of {@link SearchHeadless} + * + * @public + * + * @deprecated provideAnswersHeadless has been deprecated and renamed to provideHeadless + */ +export const provideAnswersHeadless = provideHeadless; + +/** + * @public + * + * @deprecated AnswersHeadless has been deprecated and renamed to SearchHeadless + */ +export const AnswersHeadless = SearchHeadless; \ No newline at end of file diff --git a/src/headless-reducer-manager.ts b/src/headless-reducer-manager.ts index 9962806e..7ad5ebde 100644 --- a/src/headless-reducer-manager.ts +++ b/src/headless-reducer-manager.ts @@ -25,7 +25,7 @@ export default class HeadlessReducerManager { } getParentReducer(): Reducer { - // set-state should only update the state tree for the AnswersHeadless instance + // set-state should only update the state tree for the SearchHeadless instance // that dispatched it const coreReducer = combineReducers(this.headlessIdToReducer); return (state, action) => { diff --git a/src/http-manager.ts b/src/http-manager.ts index 5023f618..1594081f 100644 --- a/src/http-manager.ts +++ b/src/http-manager.ts @@ -7,7 +7,7 @@ type ServiceIds = { /** * Assigns numeric IDs to every http request and the corresponding response * through {@link AnswersCore}. This helps track the received order of requests - * and responses. {@link AnswersHeadless} uses it to ensure dispatch events for + * and responses. {@link SearchHeadless} uses it to ensure dispatch events for * state updates are triggered with up-to-date responses (e.g. if the newly received * response has a higher ID number than the recorded received response). */ diff --git a/src/index.ts b/src/index.ts index f758814f..1e0b233e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,12 +1,12 @@ import { provideCore, AnswersConfig, AdditionalHttpHeaders } from '@yext/answers-core'; import HttpManager from './http-manager'; import ReduxStateManager from './redux-state-manager'; -import AnswersHeadless from './answers-headless'; +import SearchHeadless from './search-headless'; import { createBaseStore } from './store'; import HeadlessReducerManager from './headless-reducer-manager'; import { DEFAULT_HEADLESS_ID } from './constants'; import { SessionTrackingState } from './models/slices/sessiontracking'; -import * as answersUtilities from './answers-utilities'; +import * as searchUtilities from './search-utilities'; import { getHttpHeaders } from './utils/client-sdk-utils'; export * from './answers-core-re-exports'; @@ -14,16 +14,17 @@ export * from './models'; export * from './constants'; export * from './utils/filter-creators'; export * from './utils/types'; -export { answersUtilities }; +export * from './deprecated'; +export { searchUtilities }; /** - * The configuration for an AnswersHeadless instance. + * The configuration for an SearchHeadless instance. * * @public */ export type HeadlessConfig = AnswersConfig & { /** - * The ID of the AnswersHeadless instance. + * The ID of the SearchHeadless instance. * * @remarks * Must be different from {@link DEFAULT_HEADLESS_ID}. @@ -31,55 +32,55 @@ export type HeadlessConfig = AnswersConfig & { headlessId?: string, /** * The verticalKey associated with the vertical to manage. If none is provided, - * Answers Headless will manage universal search. + * Search Headless will manage universal search. */ verticalKey?: string }; -let firstHeadlessInstance: AnswersHeadless; +let firstHeadlessInstance: SearchHeadless; const store = createBaseStore(); const headlessReducerManager = new HeadlessReducerManager(); /** - * Supplies a new instance of {@link AnswersHeadless}, using the provided configuration. + * Supplies a new instance of {@link SearchHeadless}, using the provided configuration. * - * @param config - The apiKey, experienceKey, etc. needed to set up a front-end Answers + * @param config - The apiKey, experienceKey, etc. needed to set up a front-end Search * experience. - * @returns The newly created instance of {@link AnswersHeadless} + * @returns The newly created instance of {@link SearchHeadless} * * @public */ -export function provideAnswersHeadless(config: HeadlessConfig): AnswersHeadless; +export function provideHeadless(config: HeadlessConfig): SearchHeadless; /** - * Supplies a new instance of {@link AnswersHeadless}, using the provided configuration, + * Supplies a new instance of {@link SearchHeadless}, using the provided configuration, * and accepts additional HTTP headers to pass with API requests. * - * @param config - The apiKey, experienceKey, etc. needed to set up a front-end Answers + * @param config - The apiKey, experienceKey, etc. needed to set up a front-end Search * experience * @param additionalHttpHeaders - Additional value for specific HTTP headers - * @returns The newly created instance of {@link AnswersHeadless} + * @returns The newly created instance of {@link SearchHeadless} * * @internal */ // eslint-disable-next-line @yext/export-star/no-duplicate-exports -export function provideAnswersHeadless( +export function provideHeadless( config: HeadlessConfig, additionalHttpHeaders: AdditionalHttpHeaders -): AnswersHeadless; +): SearchHeadless; // eslint-disable-next-line @yext/export-star/no-duplicate-exports -export function provideAnswersHeadless( +export function provideHeadless( config: HeadlessConfig, additionalHttpHeaders?: AdditionalHttpHeaders -): AnswersHeadless { +): SearchHeadless { const { verticalKey, headlessId, ...answersConfig } = config; if (headlessId === DEFAULT_HEADLESS_ID) { - throw new Error(`Cannot instantiate an AnswersHeadless using the default headlessId "${headlessId}". ` + throw new Error(`Cannot instantiate an SearchHeadless using the default headlessId "${headlessId}". ` + 'Specify a different headlessId.'); } const answersCore = provideCore(answersConfig); @@ -88,7 +89,7 @@ export function provideAnswersHeadless( const httpManager = new HttpManager(); const httpHeaders = getHttpHeaders(additionalHttpHeaders); - const headless = new AnswersHeadless(answersCore, stateManager, httpManager, httpHeaders); + const headless = new SearchHeadless(answersCore, stateManager, httpManager, httpHeaders); verticalKey ? headless.setVertical(verticalKey) : headless.setUniversal(); @@ -108,7 +109,7 @@ export function provideAnswersHeadless( * Links the secondHeadless instance to sessionTracking updates made to the firstHeadless * instance. */ -function linkSessionTracking(firstHeadless: AnswersHeadless, secondHeadless: AnswersHeadless) { +function linkSessionTracking(firstHeadless: SearchHeadless, secondHeadless: SearchHeadless) { firstHeadless.addListener({ valueAccessor: state => state.sessionTracking, callback: sessionTracking => { @@ -120,4 +121,4 @@ function linkSessionTracking(firstHeadless: AnswersHeadless, secondHeadless: Ans }); } -export { AnswersHeadless }; +export { SearchHeadless }; \ No newline at end of file diff --git a/src/models/slices/directanswer.ts b/src/models/slices/directanswer.ts index 9168c1cd..a657978b 100644 --- a/src/models/slices/directanswer.ts +++ b/src/models/slices/directanswer.ts @@ -8,7 +8,7 @@ import { FeaturedSnippetDirectAnswer, FieldValueDirectAnswer } from '@yext/answe export interface DirectAnswerState { /** * The data for the direct answer. The type of the data is determined by the - * Answers API based on whether the answer was found within a document or was a + * Search API based on whether the answer was found within a document or was a * field value in the knowledge graph. */ result?: FeaturedSnippetDirectAnswer | FieldValueDirectAnswer diff --git a/src/models/slices/location.ts b/src/models/slices/location.ts index 61847ff6..7923fa3a 100644 --- a/src/models/slices/location.ts +++ b/src/models/slices/location.ts @@ -9,7 +9,7 @@ import { LatLong, LocationBias } from '@yext/answers-core'; export interface LocationState { /** * The geographical location bias used in the search, returned from the - * Answers API. + * Search API. */ locationBias?: LocationBias, /** diff --git a/src/models/slices/meta.ts b/src/models/slices/meta.ts index 043b3f6f..9b24989c 100644 --- a/src/models/slices/meta.ts +++ b/src/models/slices/meta.ts @@ -2,7 +2,7 @@ import { Context } from '@yext/answers-core'; import { SearchType } from '../utils/searchType'; /** - * Maintains the metadata for Answers Headless. + * Maintains the metadata for Search Headless. * * @public */ @@ -22,7 +22,7 @@ export interface MetaState { */ uuid?: string, /** - * Indicates the type of search that Answers Headless is managing. + * Indicates the type of search that Search Headless is managing. */ searchType: SearchType } \ No newline at end of file diff --git a/src/models/slices/query.ts b/src/models/slices/query.ts index 41807949..aed59851 100644 --- a/src/models/slices/query.ts +++ b/src/models/slices/query.ts @@ -19,7 +19,7 @@ export interface QueryState { */ queryTrigger?: QueryTrigger, /** - * The source of the query (from a standard Answers integration, an Answers + * The source of the query (from a standard Search integration, an Search * overlay, or from visual autocomplete). */ querySource?: QuerySource, @@ -28,7 +28,7 @@ export interface QueryState { */ mostRecentSearch?: string, /** - * The computed intents of the mostRecentSearch, as returned by the Answers API. + * The computed intents of the mostRecentSearch, as returned by the Search API. */ searchIntents?: SearchIntent[] } \ No newline at end of file diff --git a/src/models/state-manager.ts b/src/models/state-manager.ts index 99322870..c9676bc3 100644 --- a/src/models/state-manager.ts +++ b/src/models/state-manager.ts @@ -3,7 +3,7 @@ import { State } from './state'; import StateListener from './state-listener'; /** - * Manages the information contained in the state for an AnswersHeadless instance. + * Manages the information contained in the state for an SearchHeadless instance. * * @remarks * The {@link State} is immutable, and can only be updated by dispatched events. diff --git a/src/models/state.ts b/src/models/state.ts index 9a5a3ba9..e1d3fb2b 100644 --- a/src/models/state.ts +++ b/src/models/state.ts @@ -12,19 +12,19 @@ import { QueryRulesState } from './slices/queryrules'; /** * The overall shape of the redux state tree, with each key value pair of - * headlessId to {@link State} representing a single AnswersHeadless instance. + * headlessId to {@link State} representing a single SearchHeadless instance. * * @public */ export interface ParentState { /** - * A mapping of the ID of an AnswersHeadless instance to its {@link State}. + * A mapping of the ID of a SearchHeadless instance to its {@link State}. */ [headlessId: string]: State } /** - * The state representing an AnswersHeadless instance. + * The state representing a SearchHeadless instance. * * @public */ diff --git a/src/answers-headless.ts b/src/search-headless.ts similarity index 96% rename from src/answers-headless.ts rename to src/search-headless.ts index 7de3d686..00317427 100644 --- a/src/answers-headless.ts +++ b/src/search-headless.ts @@ -24,7 +24,7 @@ import { State } from './models/state'; import StateManager from './models/state-manager'; import { Unsubscribe } from '@reduxjs/toolkit'; import HttpManager from './http-manager'; -import * as answersUtilities from './answers-utilities'; +import * as answersUtilities from './search-utilities'; import { SelectableFilter } from './models/utils/selectableFilter'; import { transformFiltersToCoreFormat } from './utils/transform-filters'; import { SearchTypeEnum } from './models/utils/searchType'; @@ -36,13 +36,13 @@ import { initialState as initialQueryRulesState } from './slices/queryrules'; import { initialState as initialSearchStatusState } from './slices/searchstatus'; /** - * Provides the functionality for interacting with an Answers Search experience. + * Provides the functionality for interacting with an Search experience. * * @public */ -export default class AnswersHeadless { +export default class SearchHeadless { /** - * Common utility functions for manipulating Answers-related data. + * Common utility functions for manipulating Search-related data. */ public readonly utilities = answersUtilities; @@ -262,7 +262,7 @@ export default class AnswersHeadless { } /** - * Gets the current state of the AnswersHeadless instance. + * Gets the current state of the SearchHeadless instance. */ get state(): State { return this.stateManager.getState(); @@ -279,10 +279,10 @@ export default class AnswersHeadless { } /** - * Submits a question to the Answers API with the specified request data. + * Submits a question to the Search API with the specified request data. * * @param request - The data for the network request - * @returns A Promise of a {@link QuestionSubmissionResponse} from the Answers API + * @returns A Promise of a {@link QuestionSubmissionResponse} from the Search API */ async submitQuestion( request: Omit @@ -294,10 +294,10 @@ export default class AnswersHeadless { } /** - * Performs an Answers search across all verticals with relevant parts of the + * Performs a Search across all verticals with relevant parts of the * state used as input to the search. Updates the state with the response data. * - * @returns A Promise of a {@link UniversalSearchResponse} from the Answers API + * @returns A Promise of a {@link UniversalSearchResponse} from the Search API */ async executeUniversalQuery(): Promise { if (this.state.meta.searchType !== SearchTypeEnum.Universal) { @@ -361,7 +361,7 @@ export default class AnswersHeadless { * Performs an autocomplete request across all verticals using the query input * stored in state. * - * @returns A Promise of an {@link AutocompleteResponse} from the Answers API + * @returns A Promise of an {@link AutocompleteResponse} from the Search API */ async executeUniversalAutocomplete(): Promise { const query = this.state.query.input || ''; @@ -372,10 +372,10 @@ export default class AnswersHeadless { } /** - * Perform an Answers search for a single vertical with relevant parts of the + * Perform a Search for a single vertical with relevant parts of the * state used as input to the search. Updates the state with the response data. * - * @returns A Promise of a {@link VerticalSearchResponse} from the Answers API or + * @returns A Promise of a {@link VerticalSearchResponse} from the Search API or * of undefined if there is no verticalKey defined in state */ async executeVerticalQuery(): Promise { @@ -463,7 +463,7 @@ export default class AnswersHeadless { * Performs an autocomplete request for a single vertical using the query input * and vertical key stored in state. * - * @returns A Promise of an {@link AutocompleteResponse} from the Answers API or + * @returns A Promise of an {@link AutocompleteResponse} from the Search API or * of undefined if there is no verticalKey defined in state */ async executeVerticalAutocomplete(): Promise { @@ -493,7 +493,7 @@ export default class AnswersHeadless { * @param query - The query for which to search * @param sectioned - Whether or not the results should be sectioned by field * @param fields - The entity fields to search - * @returns A Promise of a {@link FilterSearchResponse} from the Answers API or + * @returns A Promise of a {@link FilterSearchResponse} from the Search API or * of undefined if there is no verticalKey defined in state */ async executeFilterSearch( diff --git a/src/answers-utilities.ts b/src/search-utilities.ts similarity index 100% rename from src/answers-utilities.ts rename to src/search-utilities.ts diff --git a/src/slices/searchstatus.ts b/src/slices/searchstatus.ts index 0167d190..e8d093aa 100644 --- a/src/slices/searchstatus.ts +++ b/src/slices/searchstatus.ts @@ -11,7 +11,7 @@ const reducers = { /** * Registers with Redux the slice of {@link State} pertaining to the loading status - * of Answers Headless. + * of Search Headless. */ export default function createSearchStatusSlice(prefix: string): Slice { return createSlice({ diff --git a/src/slices/sessiontracking.ts b/src/slices/sessiontracking.ts index acb238ef..c95a3237 100644 --- a/src/slices/sessiontracking.ts +++ b/src/slices/sessiontracking.ts @@ -16,7 +16,7 @@ const reducers = { /** * Registers with Redux the slice of {@link State} pertaining to session tracking of - * an Answers experience. + * an Search experience. */ export default function createSessionTrackingSlice( prefix: string diff --git a/src/utils/transform-filters.ts b/src/utils/transform-filters.ts index c68e2309..4a27eb97 100644 --- a/src/utils/transform-filters.ts +++ b/src/utils/transform-filters.ts @@ -19,8 +19,8 @@ function combineFiltersWithOR(filters: Filter[]): Filter | CombinedFilter { } /** - * Converts a list of {@link SelectableFilter}s used in Answers Headless - * to a single nested filter stucture used in Answers Core. + * Converts a list of {@link SelectableFilter}s used in Search Headless + * to a single nested filter stucture used in Search Core. * * @param selectableFilters - The filters to be transformed * @returns The filters in a singly-nested {@link CombinedFilter}, or if there diff --git a/test-site-node/index.js b/test-site-node/index.js index a397c7d7..3b36be4f 100644 --- a/test-site-node/index.js +++ b/test-site-node/index.js @@ -1,6 +1,6 @@ -const { provideAnswersHeadless } = require('@yext/answers-headless'); +const { provideHeadless } = require('@yext/search-headless'); -const answers = provideAnswersHeadless({ +const answers = provideHeadless({ apiKey: '2d8c550071a64ea23e263118a2b0680b', experienceKey: 'slanswers', locale: 'en' diff --git a/test-site-node/package-lock.json b/test-site-node/package-lock.json index dae6068e..ead6cae5 100644 --- a/test-site-node/package-lock.json +++ b/test-site-node/package-lock.json @@ -9,16 +9,16 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@yext/answers-headless": "file:.." + "@yext/search-headless": "file:.." } }, "..": { - "name": "@yext/answers-headless", - "version": "1.1.1-alpha.96", + "name": "@yext/search-headless", + "version": "1.2.0", "license": "ISC", "dependencies": { "@reduxjs/toolkit": "^1.8.1", - "@yext/answers-core": "^1.7.0-alpha.165", + "@yext/answers-core": "^1.7.0", "js-levenshtein": "^1.1.6", "lodash": "^4.17.21" }, @@ -27,7 +27,7 @@ "@babel/preset-typescript": "^7.16.5", "@microsoft/api-documenter": "^7.13.76", "@microsoft/api-extractor": "^7.19.2", - "@types/jest": "^27.0.3", + "@types/jest": "^28.1.1", "@types/lodash": "^4.14.178", "@types/node": "^16.11.12", "@typescript-eslint/eslint-plugin": "^5.16.0", @@ -39,18 +39,18 @@ "eslint-config-react-app": "^7.0.0", "eslint-plugin-tsdoc": "^0.2.14", "generate-license-file": "^1.3.0", - "jest": "^27.4.5", + "jest": "^28.1.0", "ts-node": "^10.4.0", "typescript": "^4.5.4" } }, - "node_modules/@yext/answers-headless": { + "node_modules/@yext/search-headless": { "resolved": "..", "link": true } }, "dependencies": { - "@yext/answers-headless": { + "@yext/search-headless": { "version": "file:..", "requires": { "@babel/preset-env": "^7.16.5", @@ -58,12 +58,12 @@ "@microsoft/api-documenter": "^7.13.76", "@microsoft/api-extractor": "^7.19.2", "@reduxjs/toolkit": "^1.8.1", - "@types/jest": "^27.0.3", + "@types/jest": "^28.1.1", "@types/lodash": "^4.14.178", "@types/node": "^16.11.12", "@typescript-eslint/eslint-plugin": "^5.16.0", "@typescript-eslint/parser": "^5.16.0", - "@yext/answers-core": "^1.7.0-alpha.165", + "@yext/answers-core": "^1.7.0", "@yext/eslint-config-slapshot": "^0.2.0", "@yext/eslint-plugin-export-star": "^1.0.0", "babel-jest": "^27.4.5", @@ -71,7 +71,7 @@ "eslint-config-react-app": "^7.0.0", "eslint-plugin-tsdoc": "^0.2.14", "generate-license-file": "^1.3.0", - "jest": "^27.4.5", + "jest": "^28.1.0", "js-levenshtein": "^1.1.6", "lodash": "^4.17.21", "ts-node": "^10.4.0", diff --git a/test-site-node/package.json b/test-site-node/package.json index 61fa3ff6..f520540f 100644 --- a/test-site-node/package.json +++ b/test-site-node/package.json @@ -10,6 +10,6 @@ "author": "", "license": "ISC", "dependencies": { - "@yext/answers-headless": "file:.." + "@yext/search-headless": "file:.." } } diff --git a/tests/.DS_Store b/tests/.DS_Store new file mode 100644 index 00000000..e0ae54f0 Binary files /dev/null and b/tests/.DS_Store differ diff --git a/tests/acceptance/multiple-instances.ts b/tests/acceptance/multiple-instances.ts index 2eed3529..74e9cccd 100644 --- a/tests/acceptance/multiple-instances.ts +++ b/tests/acceptance/multiple-instances.ts @@ -1,4 +1,4 @@ -import { provideAnswersHeadless } from '../../src'; +import { provideHeadless } from '../../src'; import { DEFAULT_HEADLESS_ID } from '../../src/constants'; import { expectedInitialState } from '../mocks/expectedInitialState'; @@ -8,13 +8,13 @@ const config = { locale: 'en' }; -it('multiple AnswersHeadless instances link SessionTrackingState together', () => { - const firstHeadless = provideAnswersHeadless(config); - const secondHeadless = provideAnswersHeadless({ +it('multiple SearchHeadless instances link SessionTrackingState together', () => { + const firstHeadless = provideHeadless(config); + const secondHeadless = provideHeadless({ ...config, headlessId: 'second' }); - const thirdHeadless = provideAnswersHeadless({ + const thirdHeadless = provideHeadless({ ...config, headlessId: 'third' }); @@ -49,9 +49,9 @@ it('multiple AnswersHeadless instances link SessionTrackingState together', () = it('an error is thrown if you manually specify a headlessId equal to the default id', () => { expect(() => { - provideAnswersHeadless({ + provideHeadless({ ...config, headlessId: DEFAULT_HEADLESS_ID }); - }).toThrow('Cannot instantiate an AnswersHeadless using the default headlessId'); + }).toThrow('Cannot instantiate an SearchHeadless using the default headlessId'); }); \ No newline at end of file diff --git a/tests/acceptance/provideAnswersHeadless.ts b/tests/acceptance/provideHeadless.ts similarity index 79% rename from tests/acceptance/provideAnswersHeadless.ts rename to tests/acceptance/provideHeadless.ts index 1f136769..d07fce7c 100644 --- a/tests/acceptance/provideAnswersHeadless.ts +++ b/tests/acceptance/provideHeadless.ts @@ -1,4 +1,4 @@ -import { provideAnswersHeadless } from '../../src'; +import { provideHeadless } from '../../src'; const baseConfig = { apiKey: 'api-key', @@ -7,7 +7,7 @@ const baseConfig = { }; it('if apiKey is passed into the headless config, the searchType is set to \'vertical\'', () => { - const headless = provideAnswersHeadless({ + const headless = provideHeadless({ ...baseConfig, verticalKey: 'test' }); @@ -17,7 +17,7 @@ it('if apiKey is passed into the headless config, the searchType is set to \'ver }); it('if no apiKey is passed into the headless config, the searchType is \'universal\'', () => { - const headless = provideAnswersHeadless(baseConfig); + const headless = provideHeadless(baseConfig); expect(headless.state.vertical.verticalKey).toBeUndefined(); expect(headless.state.meta.searchType).toEqual('universal'); diff --git a/tests/integration/directanswer.ts b/tests/integration/directanswer.ts index c7ad3311..b92d7efc 100644 --- a/tests/integration/directanswer.ts +++ b/tests/integration/directanswer.ts @@ -1,4 +1,4 @@ -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; import { FeaturedSnippetDirectAnswer, DirectAnswerType, Source } from '@yext/answers-core'; import { State } from '../../src/models/state'; import { SearchTypeEnum } from '../../src/models/utils/searchType'; @@ -40,7 +40,7 @@ const featuredSnippedDirectAnswer: FeaturedSnippetDirectAnswer = { describe('AnswersHeadless spellcheck interactions properly update state', () => { it('executeVerticalQuery properly updates direct answer state', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: () => Promise.resolve({ directAnswer: featuredSnippedDirectAnswer }) }, initialState); answers.setVertical('123'); @@ -59,7 +59,7 @@ describe('AnswersHeadless spellcheck interactions properly update state', () => }); it('executeUniversalQuery properly updates direct answer state', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: () => Promise.resolve({ directAnswer: featuredSnippedDirectAnswer }) }, initialState); answers.setUniversal(); @@ -79,7 +79,7 @@ describe('AnswersHeadless spellcheck interactions properly update state', () => ...initialState, directAnswer: { result: featuredSnippedDirectAnswer } }; - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: () => Promise.resolve({ directAnswer: undefined }) }, initialStateWithDA); answers.setUniversal(); diff --git a/tests/integration/facets.ts b/tests/integration/facets.ts index 53dddd1e..f8fd3923 100644 --- a/tests/integration/facets.ts +++ b/tests/integration/facets.ts @@ -1,11 +1,11 @@ import { DisplayableFacet, DisplayableFacetOption, Matcher } from '@yext/answers-core'; import { State } from '../../src/models/state'; import { SearchTypeEnum } from '../../src/models/utils/searchType'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; it('can select a facet option', () => { const [initialState, facetOption] = createInitialState(false); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); answers.setFacetOption('testFieldId', facetOption, true); expect(answers.state.filters.facets[0].options[0]).toEqual({ matcher: Matcher.Equals, @@ -23,7 +23,7 @@ it('handles multiple facets with the same fieldId', () => { fieldId: 'testFieldId', options: [{ ...facetOption }] }); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); answers.setFacetOption('testFieldId', facetOption, true); expect(answers.state.filters.facets).toEqual([ { @@ -54,7 +54,7 @@ it('handles multiple facets with the same fieldId', () => { it('handles selecting multiple facetOptions at the same time', () => { const [initialState, facetOption] = createInitialState(false); initialState.filters.facets[0].options.push({ ...facetOption }); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); answers.setFacetOption('testFieldId', facetOption, true); expect(answers.state.filters.facets[0].options).toEqual([ { @@ -76,7 +76,7 @@ it('handles selecting multiple facetOptions at the same time', () => { it('can unselect a facet option', () => { const [initialState, facetOption] = createInitialState(true); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); answers.setFacetOption('testFieldId', facetOption, false); expect(answers.state.filters.facets[0].options[0]).toEqual({ matcher: Matcher.Equals, @@ -89,7 +89,7 @@ it('can unselect a facet option', () => { it('gives a console warning when facets do not exist in state', () => { const consoleWarnSpy = jest.spyOn(global.console, 'warn').mockImplementation(); - const answers = createMockedAnswersHeadless(); + const answers = createMockedHeadless(); answers.setFacetOption('testFieldId', {} as DisplayableFacetOption, true); expect(consoleWarnSpy).toHaveBeenCalledTimes(1); consoleWarnSpy.mockClear(); @@ -98,7 +98,7 @@ it('gives a console warning when facets do not exist in state', () => { it('gives a console warning when the facet option\'s fieldId is not found in state', () => { const consoleWarnSpy = jest.spyOn(global.console, 'warn').mockImplementation(); const [initialState] = createInitialState(true); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); answers.setFacetOption('fakeFieldId', {} as DisplayableFacetOption, true); expect(consoleWarnSpy).toHaveBeenCalledTimes(1); consoleWarnSpy.mockClear(); @@ -121,7 +121,7 @@ it('facets are updated after a vertical search', async () => { query: { input: 'test query' }, spellCheck: { enabled: true } }; - const answers = createMockedAnswersHeadless(mockAnswersCore, initialState); + const answers = createMockedHeadless(mockAnswersCore, initialState); expect(answers.state.filters.facets).toEqual(undefined); answers.setVertical('vertical-key'); await answers.executeVerticalQuery(); @@ -144,7 +144,7 @@ it('only selected facets are sent in the vertical search request', () => { const mockedCore = { verticalSearch: jest.fn(() => { return {}; }) }; - const answers = createMockedAnswersHeadless(mockedCore, initialState); + const answers = createMockedHeadless(mockedCore, initialState); answers.setVertical('vertical-key'); answers.setFacets(initialState.filters.facets); answers.executeVerticalQuery(); @@ -178,7 +178,7 @@ it('searchThroughFacet filters facet options correctly', () => { ...facetOption, displayName: 'ignore me' }); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); const facet = answers.state.filters.facets[0]; const searchedFacet = answers.utilities.searchThroughFacet(facet, 'cation'); expect(searchedFacet).toEqual({ @@ -211,7 +211,7 @@ it('searchThroughFacet filters facet options correctly for similar searchTerm', ...facetOption, displayName: 'Cation' }); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); const facet = answers.state.filters.facets[0]; const searchedFacet = answers.utilities.searchThroughFacet(facet, 'car'); expect(searchedFacet).toEqual({ @@ -248,7 +248,7 @@ it('searchThroughFacet filters facet options correctly for short searchTerm', () ...facetOption, displayName: 'ignore me' }); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); const facet = answers.state.filters.facets[0]; const searchedFacet = answers.utilities.searchThroughFacet(facet, 'ca'); expect(searchedFacet).toEqual({ @@ -273,7 +273,7 @@ it('searchThroughFacet filters facet options correctly for short searchTerm', () it('can set facets correctly', () => { const [initialState, facetOption] = createInitialState(true); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); const facets = [ { fieldId: 'newFieldId', @@ -287,7 +287,7 @@ it('can set facets correctly', () => { it('can reset facets correctly', () => { const [initialState, ] = createInitialState(true); - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); answers.resetFacets(); answers.state.filters.facets.map(facet => facet.options.map(option => expect(option.selected).toBeFalsy()) diff --git a/tests/integration/location.ts b/tests/integration/location.ts index df20bcce..686fed4c 100644 --- a/tests/integration/location.ts +++ b/tests/integration/location.ts @@ -1,5 +1,5 @@ import { VerticalSearchRequest, UniversalSearchRequest, LocationBias, LocationBiasMethod, LatLong } from '@yext/answers-core'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; describe('userLocation', () => { it('vertical searches pass userLocation', async () => { @@ -8,7 +8,7 @@ describe('userLocation', () => { longitude: 1 }; const mockSearch = jest.fn((_request: VerticalSearchRequest) => Promise.resolve({})); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setVertical('vertical-key'); @@ -23,7 +23,7 @@ describe('userLocation', () => { longitude: 1 }; const mockSearch = jest.fn((_request: UniversalSearchRequest) => Promise.resolve({})); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); answers.setUserLocation(userLocation); @@ -41,7 +41,7 @@ describe('locationBias', () => { method: LocationBiasMethod.Ip }; const mockSearch = jest.fn((_request: VerticalSearchRequest) => Promise.resolve({ locationBias })); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setVertical('vertical-key'); @@ -58,7 +58,7 @@ describe('locationBias', () => { method: LocationBiasMethod.Ip }; const mockSearch = jest.fn((_request: UniversalSearchRequest) => Promise.resolve({ locationBias })); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); expect(answers.state.location.locationBias).toEqual(undefined); diff --git a/tests/integration/meta.ts b/tests/integration/meta.ts index 3c0bc8d9..69fc400a 100644 --- a/tests/integration/meta.ts +++ b/tests/integration/meta.ts @@ -1,9 +1,9 @@ import { UniversalSearchRequest, VerticalSearchRequest } from '@yext/answers-core'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; it('by default no meta attributes are sent', async () => { const mockSearch = jest.fn((_request: VerticalSearchRequest) => Promise.resolve({})); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setQuery('lol'); @@ -15,7 +15,7 @@ it('by default no meta attributes are sent', async () => { it('vertical searches send meta data', async () => { const mockSearch = jest.fn((_request: VerticalSearchRequest) => Promise.resolve({})); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setQuery('lol'); @@ -39,7 +39,7 @@ it('vertical searches send meta data', async () => { it('universal searches send context', async () => { const mockSearch = jest.fn((_request: UniversalSearchRequest) => Promise.resolve({})); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); answers.setQuery('lol'); @@ -65,7 +65,7 @@ it('universal searches update the uuid', async () => { const mockSearch = jest.fn((_request: UniversalSearchRequest) => Promise.resolve({ uuid: 123 })); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); answers.setUniversal(); @@ -78,7 +78,7 @@ it('vertical searches update the uuid', async () => { const mockSearch = jest.fn((_request: UniversalSearchRequest) => Promise.resolve({ uuid: 456 })); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setQuery('lol'); diff --git a/tests/integration/query.ts b/tests/integration/query.ts index 9ce485b9..457f97f7 100644 --- a/tests/integration/query.ts +++ b/tests/integration/query.ts @@ -5,8 +5,8 @@ import { } from '@yext/answers-core'; import HttpManager from '../../src/http-manager'; import ReduxStateManager from '../../src/redux-state-manager'; -import AnswersHeadless from '../../src/answers-headless'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import SearchHeadless from '../../src/search-headless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; import { createBaseStore } from '../../src/store'; import { DEFAULT_HEADLESS_ID } from '../../src/constants'; import HeadlessReducerManager from '../../src/headless-reducer-manager'; @@ -15,7 +15,7 @@ it('vertical searches set search intents', async () => { const mockSearch = jest.fn((_request: VerticalSearchRequest) => Promise.resolve({ searchIntents: [SearchIntent.NearMe] })); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setVertical('vertical-key'); @@ -28,7 +28,7 @@ it('universal searches set search intents', async () => { const mockSearch = jest.fn((_request: UniversalSearchRequest) => Promise.resolve({ searchIntents: [SearchIntent.NearMe] })); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); expect(answers.state.query.searchIntents).toEqual(undefined); @@ -39,7 +39,7 @@ it('universal searches set search intents', async () => { describe('sessionId to request works as expected', () => { const verticalMockSearch = jest.fn().mockReturnValue({}); const universalMockSearch = jest.fn().mockReturnValue({}); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: verticalMockSearch, universalSearch: universalMockSearch }); @@ -164,5 +164,5 @@ function getAnswersHeadless(requestsTime: { [x: string]: number }) { const stateManager = new ReduxStateManager( createBaseStore(), DEFAULT_HEADLESS_ID, new HeadlessReducerManager()); const httpManager = new HttpManager(); - return new AnswersHeadless(mockedCore, stateManager, httpManager); + return new SearchHeadless(mockedCore, stateManager, httpManager); } diff --git a/tests/integration/queryrules.ts b/tests/integration/queryrules.ts index 2a0907ad..179e8eb1 100644 --- a/tests/integration/queryrules.ts +++ b/tests/integration/queryrules.ts @@ -1,4 +1,4 @@ -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; const initialState = { queryRules: { @@ -30,7 +30,7 @@ function mockSearchWithQueryRules() { describe('AnswersHeadless queryRules interactions properly update state', () => { it('executeVerticalQuery properly updates queryRules state', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearchWithQueryRules }, initialState); answers.setVertical('123'); @@ -45,7 +45,7 @@ describe('AnswersHeadless queryRules interactions properly update state', () => }); it('executeUniversalQuery properly updates queryRules state', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearchWithQueryRules }, initialState); answers.setUniversal(); diff --git a/tests/integration/redux-state-manager.ts b/tests/integration/redux-state-manager.ts index 0f74b0dd..351ce0ca 100644 --- a/tests/integration/redux-state-manager.ts +++ b/tests/integration/redux-state-manager.ts @@ -1,7 +1,7 @@ import ReduxStateManager from '../../src/redux-state-manager'; import { createBaseStore } from '../../src/store'; import HeadlessReducerManager from '../../src/headless-reducer-manager'; -import AnswersHeadless from '../../src/answers-headless'; +import SearchHeadless from '../../src/search-headless'; import { expectedInitialState } from '../mocks/expectedInitialState'; import HttpManager from '../../src/http-manager'; import { AnswersCore } from '@yext/answers-core'; @@ -53,11 +53,11 @@ it('set-state actions are scoped to State subtrees respective to their ReduxStat }); }); -it('dispatching answers actions through AnswersHeadless', () => { +it('dispatching answers actions through SearchHeadless', () => { const store = createBaseStore(); const headlessReducerManager = new HeadlessReducerManager(); const stateManager = new ReduxStateManager(store, 'anId', headlessReducerManager); - const headless = new AnswersHeadless({} as AnswersCore, stateManager, new HttpManager()); + const headless = new SearchHeadless({} as AnswersCore, stateManager, new HttpManager()); headless.setQuery('yo'); expect(store.getState()).toEqual({ anId: { @@ -73,7 +73,7 @@ it('addListener works with multiple headless instances', () => { const store = createBaseStore(); const headlessReducerManager = new HeadlessReducerManager(); const stateManager = new ReduxStateManager(store, 'anId', headlessReducerManager); - const headless = new AnswersHeadless({} as AnswersCore, stateManager, new HttpManager()); + const headless = new SearchHeadless({} as AnswersCore, stateManager, new HttpManager()); const callback = jest.fn(); headless.addListener({ valueAccessor: state => state.query.input, @@ -92,12 +92,12 @@ it('addListener works with multiple headless instances', () => { it('addListener can be used to link together different headless instances', () => { const store = createBaseStore(); const headlessReducerManager = new HeadlessReducerManager(); - const firstHeadless = new AnswersHeadless( + const firstHeadless = new SearchHeadless( {} as AnswersCore, new ReduxStateManager(store, 'first', headlessReducerManager), new HttpManager() ); - const secondHeadless = new AnswersHeadless( + const secondHeadless = new SearchHeadless( {} as AnswersCore, new ReduxStateManager(store, 'second', headlessReducerManager), new HttpManager() diff --git a/tests/integration/sortbys.ts b/tests/integration/sortbys.ts index f5db95a9..814525ca 100644 --- a/tests/integration/sortbys.ts +++ b/tests/integration/sortbys.ts @@ -1,9 +1,9 @@ import { Direction, SortType, VerticalSearchRequest } from '@yext/answers-core'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; it('executeVerticalQuery properly updates spellcheck state', async () => { const mockSearch = jest.fn((_request: VerticalSearchRequest) => Promise.resolve({})); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setQuery('lol'); diff --git a/tests/integration/spellcheck.ts b/tests/integration/spellcheck.ts index 27b3310e..e8a11a03 100644 --- a/tests/integration/spellcheck.ts +++ b/tests/integration/spellcheck.ts @@ -1,4 +1,4 @@ -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; const initialState = { query: { @@ -27,7 +27,7 @@ function mockSearchWithSpellcheck() { describe('AnswersHeadless spellcheck interactions properly update state', () => { it('executeVerticalQuery properly updates spellcheck state', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearchWithSpellcheck }, initialState); answers.setVertical('123'); @@ -46,7 +46,7 @@ describe('AnswersHeadless spellcheck interactions properly update state', () => }); it('executeUniversalQuery properly updates spellcheck state', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearchWithSpellcheck }, initialState); answers.setUniversal(); @@ -62,7 +62,7 @@ describe('AnswersHeadless spellcheck interactions properly update state', () => }); it('setSpellCheckEnabled properly updates state', async () => { - const answers = createMockedAnswersHeadless({}, initialState); + const answers = createMockedHeadless({}, initialState); await answers.setSpellCheckEnabled(false); const expectedState = { spellCheck: { diff --git a/tests/integration/status.ts b/tests/integration/status.ts index a3c7e24c..4ea7528f 100644 --- a/tests/integration/status.ts +++ b/tests/integration/status.ts @@ -1,10 +1,10 @@ import { UniversalSearchRequest, VerticalSearchRequest } from '@yext/answers-core'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; import setTimeout from '../utils/setTimeout'; it('universal searches update the search loading state', async () => { const mockSearch = createMockSearch(); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); @@ -16,7 +16,7 @@ it('universal searches update the search loading state', async () => { it('vertical searches update the search loading state', async () => { const mockSearch = createMockSearch(); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setVertical('vertical-key'); diff --git a/tests/integration/universalsearch.ts b/tests/integration/universalsearch.ts index b4f56731..eb25f7b2 100644 --- a/tests/integration/universalsearch.ts +++ b/tests/integration/universalsearch.ts @@ -1,12 +1,12 @@ import { UniversalSearchRequest } from '@yext/answers-core'; import HttpManager from '../../src/http-manager'; import { getHttpHeaders } from '../../src/utils/client-sdk-utils'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; import setTimeout from '../utils/setTimeout'; it('universal searches send blank queries by default', async () => { const mockSearch = createMockSearch(); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); await answers.executeUniversalQuery(); @@ -14,7 +14,7 @@ it('universal searches send blank queries by default', async () => { }); it('answers.setUniversalLimit sets the universal limit when a UniversalLimit is passed to it', () => { - const answers = createMockedAnswersHeadless(); + const answers = createMockedHeadless(); const universalLimit = { faq: 5, people: 5 @@ -25,7 +25,7 @@ it('answers.setUniversalLimit sets the universal limit when a UniversalLimit is it('answers.setRestrictVerticals sets the restrictVerticals param', async () => { const mockSearch = createMockSearch(); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); answers.setRestrictVerticals(['KM', 'people']); @@ -37,7 +37,7 @@ it('handle a rejected promise from core', async () => { const mockSearch = createMockRejectedSearch(); const mockCore = { universalSearch: mockSearch }; const httpManager = new HttpManager(); - const answers = createMockedAnswersHeadless(mockCore, {}, undefined, undefined, httpManager); + const answers = createMockedHeadless(mockCore, {}, undefined, undefined, httpManager); try { await answers.executeUniversalQuery(); } catch (e) { @@ -49,7 +49,7 @@ it('handle a rejected promise from core', async () => { it('executeUniversalQuery passes the additional HTTP headers', async () => { const mockSearch = createMockSearch(); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ universalSearch: mockSearch }); await answers.executeUniversalQuery(); diff --git a/tests/integration/verticalsearch.ts b/tests/integration/verticalsearch.ts index 7ea837ba..6241ed88 100644 --- a/tests/integration/verticalsearch.ts +++ b/tests/integration/verticalsearch.ts @@ -4,7 +4,7 @@ import { AllResultsForVertical } from '../../src/models/slices/vertical'; import { State } from '../../src/models/state'; import { SearchTypeEnum } from '../../src/models/utils/searchType'; import { getHttpHeaders } from '../../src/utils/client-sdk-utils'; -import { createMockedAnswersHeadless } from '../mocks/createMockedAnswersHeadless'; +import { createMockedHeadless } from '../mocks/createMockedHeadless'; import setTimeout from '../utils/setTimeout'; const initialState: State = { @@ -60,7 +60,7 @@ const allResultsForVertical: VerticalSearchResponse = { }; it('vertical searches set allResultsForVertical and alternativeVerticals', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: () => Promise.resolve({ allResultsForVertical, alternativeVerticals, @@ -89,7 +89,7 @@ it('vertical searches set appliedQueryFilters', async () => { value: 42 } }]; - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: () => Promise.resolve({ verticalResults: { appliedQueryFilters: mockAppliedQueryFilters @@ -101,7 +101,7 @@ it('vertical searches set appliedQueryFilters', async () => { }); it('vertical searches set queryDurationMillis', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: () => Promise.resolve({ verticalResults: { queryDurationMillis: 42 @@ -117,7 +117,7 @@ it('vertical searches set results', async () => { rawData: { test: 'hello' }, source: Source.KnowledgeManager }]; - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: () => Promise.resolve({ verticalResults: { results: mockResults @@ -129,7 +129,7 @@ it('vertical searches set results', async () => { }); it('vertical searches set results count', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: () => Promise.resolve({ verticalResults: { resultsCount: 3 @@ -141,7 +141,7 @@ it('vertical searches set results count', async () => { }); it('vertical searches set the source', async () => { - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: () => Promise.resolve({ verticalResults: { source: Source.KnowledgeManager @@ -154,7 +154,7 @@ it('vertical searches set the source', async () => { it('vertical searches send blank queries by default', async () => { const mockSearch = createMockSearch(); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setVertical('vertical-key'); @@ -163,7 +163,7 @@ it('vertical searches send blank queries by default', async () => { }); it('answers.setVerticalLimit sets the vertical limit when a number is passed to it', () => { - const answers = createMockedAnswersHeadless(); + const answers = createMockedHeadless(); answers.setVerticalLimit(7); expect(answers.state.vertical.limit).toEqual(7); }); @@ -173,7 +173,7 @@ it('handle a rejected promise from core', async () => { const mockSearch = createMockRejectedSearch(); const mockCore = { verticalSearch: mockSearch }; const httpManager = new HttpManager(); - const answers = createMockedAnswersHeadless(mockCore, {}, undefined, undefined, httpManager); + const answers = createMockedHeadless(mockCore, {}, undefined, undefined, httpManager); answers.setVertical('vertical-key'); try { await answers.executeVerticalQuery(); @@ -186,7 +186,7 @@ it('handle a rejected promise from core', async () => { it('executeVerticalQuery passes the additional HTTP headers', async () => { const mockSearch = createMockSearch(); - const answers = createMockedAnswersHeadless({ + const answers = createMockedHeadless({ verticalSearch: mockSearch }); answers.setVertical('vertical-key'); diff --git a/tests/mocks/createMockedAnswersHeadless.ts b/tests/mocks/createMockedHeadless.ts similarity index 72% rename from tests/mocks/createMockedAnswersHeadless.ts rename to tests/mocks/createMockedHeadless.ts index 829a777f..4e8a7a82 100644 --- a/tests/mocks/createMockedAnswersHeadless.ts +++ b/tests/mocks/createMockedHeadless.ts @@ -1,30 +1,30 @@ import HttpManager from '../../src/http-manager'; import { State } from '../../src/models/state'; import ReduxStateManager from '../../src/redux-state-manager'; -import AnswersHeadless from '../../src/answers-headless'; +import SearchHeadless from '../../src/search-headless'; import { createBaseStore, HeadlessEnhancedStore } from '../../src/store'; import { DEFAULT_HEADLESS_ID } from '../../src/constants'; import HeadlessReducerManager from '../../src/headless-reducer-manager'; import { getHttpHeaders } from '../../src/utils/client-sdk-utils'; /** - * Creates an Answers Headless instance with a mocked Answers Core. + * Creates an Search Headless instance with a mocked Search Core. * - * @param mockedAnswersCore - Answers Core overrides - * @param initialState - The initial state of Answers Headless - * @returns The new Answers Headless instance + * @param mockedAnswersCore - Search Core overrides + * @param initialState - The initial state of Search Headless + * @returns The new Search Headless instance */ -export function createMockedAnswersHeadless( +export function createMockedHeadless( mockedAnswersCore: any = {}, initialState: Partial = {}, store?: HeadlessEnhancedStore, headlessReducerManager?: HeadlessReducerManager, httpManager?: HttpManager -): AnswersHeadless { +): SearchHeadless { const reduxStateManager = new ReduxStateManager( store || createBaseStore(), DEFAULT_HEADLESS_ID, headlessReducerManager || new HeadlessReducerManager()); const headlessHttpManager = httpManager || new HttpManager(); - const answers = new AnswersHeadless( + const answers = new SearchHeadless( mockedAnswersCore, reduxStateManager, headlessHttpManager, getHttpHeaders()); answers.setState({ ...answers.state, diff --git a/tests/unit/index.ts b/tests/unit/index.ts index 697c10b0..0fe7dfe4 100644 --- a/tests/unit/index.ts +++ b/tests/unit/index.ts @@ -1,7 +1,7 @@ -import { AnswersHeadless, provideAnswersHeadless } from '../../src'; +import { SearchHeadless, provideHeadless } from '../../src'; import { getHttpHeaders } from '../../src/utils/client-sdk-utils'; -jest.mock('../../src/answers-headless.ts'); +jest.mock('../../src/search-headless.ts'); const baseConfig = { apiKey: 'api-key', @@ -11,22 +11,22 @@ const baseConfig = { const headlessVersionHeader = getHttpHeaders(); -it('provideAnswersHeadless passes Headless agent to AnswersHeadless', () => { - provideAnswersHeadless(baseConfig); +it('provideHeadless passes Headless agent to SearchHeadless', () => { + provideHeadless(baseConfig); - expect(AnswersHeadless).toHaveBeenLastCalledWith( + expect(SearchHeadless).toHaveBeenLastCalledWith( expect.anything(), expect.anything(), expect.anything(), headlessVersionHeader); }); -it('provideAnswersHeadless passes additional HTTP headers to AnswersHeadless', () => { +it('provideHeadless passes additional HTTP headers to SearchHeadless', () => { const additionalHttpHeaders = { 'Client-SDK': { CUSTOM_TEST_SITE: 'test' } }; - provideAnswersHeadless(baseConfig, additionalHttpHeaders); + provideHeadless(baseConfig, additionalHttpHeaders); - expect(AnswersHeadless).toHaveBeenLastCalledWith(expect.anything(), expect.anything(), expect.anything(), { + expect(SearchHeadless).toHaveBeenLastCalledWith(expect.anything(), expect.anything(), expect.anything(), { 'Client-SDK': { ...additionalHttpHeaders['Client-SDK'], ...headlessVersionHeader['Client-SDK'] diff --git a/tests/unit/answers-headless.ts b/tests/unit/search-headless.ts similarity index 98% rename from tests/unit/answers-headless.ts rename to tests/unit/search-headless.ts index 68fdf5e8..fabeb965 100644 --- a/tests/unit/answers-headless.ts +++ b/tests/unit/search-headless.ts @@ -1,7 +1,7 @@ import { Matcher, QuerySource, QueryTrigger } from '@yext/answers-core'; import HttpManager from '../../src/http-manager'; import StateManager from '../../src/models/state-manager'; -import AnswersHeadless from '../../src/answers-headless'; +import SearchHeadless from '../../src/search-headless'; import { SelectableFilter } from '../../src/models/utils/selectableFilter'; import { State } from '../../src/models/state'; import { SearchTypeEnum } from '../../src/models/utils/searchType'; @@ -66,7 +66,7 @@ const mockedCore: any = { filterSearch: jest.fn(() => Promise.resolve({})) }; -const answers = new AnswersHeadless(mockedCore, mockedStateManager, new HttpManager()); +const answers = new SearchHeadless(mockedCore, mockedStateManager, new HttpManager()); describe('setters work as expected', () => { beforeEach(() => {