From bdc53aed90950a768cd72ed7fab9e5a88f6a62ce Mon Sep 17 00:00:00 2001 From: Alex Taing Date: Thu, 4 Aug 2022 14:39:02 -0400 Subject: [PATCH 01/23] update endpoints from ans to search --- src/constants.ts | 20 ++++++++++---------- tests/infra/SearchServiceImpl.ts | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index aa60d984..fed7d675 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -3,13 +3,13 @@ import { Endpoints } from './models/core/Endpoints'; export const defaultApiVersion = 20220511; export const defaultEndpoints: Required = { - universalSearch: 'https://liveapi.yext.com/v2/accounts/me/answers/query', - verticalSearch: 'https://liveapi.yext.com/v2/accounts/me/answers/vertical/query', + universalSearch: 'https://liveapi.yext.com/v2/accounts/me/search/query', + verticalSearch: 'https://liveapi.yext.com/v2/accounts/me/search/vertical/query', questionSubmission: 'https://liveapi.yext.com/v2/accounts/me/createQuestion', status: 'https://answersstatus.pagescdn.com', - universalAutocomplete: 'https://liveapi-cached.yext.com/v2/accounts/me/answers/autocomplete', - verticalAutocomplete: 'https://liveapi-cached.yext.com/v2/accounts/me/answers/vertical/autocomplete', - filterSearch: 'https://liveapi-cached.yext.com/v2/accounts/me/answers/filtersearch', + universalAutocomplete: 'https://liveapi-cached.yext.com/v2/accounts/me/search/autocomplete', + verticalAutocomplete: 'https://liveapi-cached.yext.com/v2/accounts/me/search/vertical/autocomplete', + filterSearch: 'https://liveapi-cached.yext.com/v2/accounts/me/search/filtersearch', } as const; /** @@ -18,11 +18,11 @@ export const defaultEndpoints: Required = { * @public */ export const SandboxEndpoints: Required = { - universalSearch: 'https://liveapi-sandbox.yext.com/v2/accounts/me/answers/query', - verticalSearch: 'https://liveapi-sandbox.yext.com/v2/accounts/me/answers/vertical/query', + universalSearch: 'https://liveapi-sandbox.yext.com/v2/accounts/me/search/query', + verticalSearch: 'https://liveapi-sandbox.yext.com/v2/accounts/me/search/vertical/query', questionSubmission: 'https://liveapi-sandbox.yext.com/v2/accounts/me/createQuestion', status: 'https://answersstatus.pagescdn.com', - universalAutocomplete: 'https://liveapi-sandbox.yext.com/v2/accounts/me/answers/autocomplete', - verticalAutocomplete: 'https://liveapi-sandbox.yext.com/v2/accounts/me/answers/vertical/autocomplete', - filterSearch: 'https://liveapi-sandbox.yext.com/v2/accounts/me/answers/filtersearch', + universalAutocomplete: 'https://liveapi-sandbox.yext.com/v2/accounts/me/search/autocomplete', + verticalAutocomplete: 'https://liveapi-sandbox.yext.com/v2/accounts/me/search/vertical/autocomplete', + filterSearch: 'https://liveapi-sandbox.yext.com/v2/accounts/me/search/filtersearch', } as const; \ No newline at end of file diff --git a/tests/infra/SearchServiceImpl.ts b/tests/infra/SearchServiceImpl.ts index 3395c364..cbdc8394 100644 --- a/tests/infra/SearchServiceImpl.ts +++ b/tests/infra/SearchServiceImpl.ts @@ -74,7 +74,7 @@ describe('SearchService', () => { }); describe('Universal Search', () => { - const expectedUniversalUrl = 'https://liveapi.yext.com/v2/accounts/me/answers/query'; + const expectedUniversalUrl = 'https://liveapi.yext.com/v2/accounts/me/search/query'; it('Query params are correct when only required params (without token) are supplied', async () => { const requestWithRequiredParams: UniversalSearchRequest = { @@ -200,7 +200,7 @@ describe('SearchService', () => { }); describe('Vertical Search', () => { - const expectedVerticalUrl = 'https://liveapi.yext.com/v2/accounts/me/answers/vertical/query'; + const expectedVerticalUrl = 'https://liveapi.yext.com/v2/accounts/me/search/vertical/query'; it('Query params are correct when only required params (without token) are supplied', async () => { const requestWithRequiredParams: VerticalSearchRequest = { From facc939f49e424618275713fbecf933d243f28cc Mon Sep 17 00:00:00 2001 From: nmanu1 <88398086+nmanu1@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:56:11 -0400 Subject: [PATCH 02/23] Rework static filters (#201) This PR reworks static filters to provide a better developer experience. A new `StaticFilters` model is added that replaces the existing `CombinedFilter`. `Filter` is renamed to `FieldValueFilter` in order to more accurately describe what the object represents. Now static filters can be either a field value filter or a nested object that is composed by combining field value filters. Also, I added Jest tests for some edge cases when serializing static filters. J=SLAP-2325 TEST=auto, manual See that the new and existing Jest tests pass. Spin up the test-site and see that requests can be successfully fired when specifying simple or nested static filters and the correct response is received. --- docs/search-core.appliedqueryfilter.filter.md | 2 +- docs/search-core.appliedqueryfilter.md | 2 +- docs/search-core.autocompleteresult.filter.md | 2 +- docs/search-core.autocompleteresult.md | 2 +- docs/search-core.combinedfilter.combinator.md | 13 -- docs/search-core.combinedfilter.filters.md | 13 -- docs/search-core.combinedfilter.md | 21 --- docs/search-core.displayablefacet.fieldid.md | 13 -- docs/search-core.displayablefacet.md | 1 - ...rch-core.displayablefacetoption.matcher.md | 13 -- docs/search-core.displayablefacetoption.md | 2 - ...earch-core.displayablefacetoption.value.md | 13 -- docs/search-core.facetoption.md | 6 +- docs/search-core.facetoption.value.md | 2 +- ...> search-core.fieldvaluefilter.fieldid.md} | 4 +- ...> search-core.fieldvaluefilter.matcher.md} | 4 +- docs/search-core.fieldvaluefilter.md | 22 +++ ... => search-core.fieldvaluefilter.value.md} | 4 +- docs/search-core.filter.matcher.md | 13 -- docs/search-core.filter.md | 22 --- docs/search-core.filtercombinator.md | 2 +- ...earch-core.filtersearchrequest.excluded.md | 4 +- .../search-core.filtersearchrequest.fields.md | 2 +- docs/search-core.filtersearchrequest.md | 4 +- docs/search-core.md | 6 +- docs/search-core.staticfilter.md | 22 +++ docs/search-core.verticalsearchrequest.md | 2 +- ...ore.verticalsearchrequest.staticfilter.md} | 8 +- etc/search-core.api.md | 34 ++--- package-lock.json | 4 +- package.json | 2 +- src/infra/SearchServiceImpl.ts | 2 +- .../AutocompleteRequest.ts | 8 +- .../AutocompleteResponse.ts | 4 +- src/models/index.ts | 4 +- .../searchservice/request/ApiStaticFilters.ts | 2 +- .../searchservice/request/CombinedFilter.ts | 25 ---- src/models/searchservice/request/Facet.ts | 9 +- .../{Filter.ts => FieldValueFilter.ts} | 2 +- .../searchservice/request/StaticFilter.ts | 22 +++ .../request/VerticalSearchRequest.ts | 7 +- .../response/AppliedQueryFilter.ts | 4 +- .../response/DisplayableFacet.ts | 8 -- src/serializers/serializeFacets.ts | 4 +- src/serializers/serializeFilterSearch.ts | 4 +- src/serializers/serializeStaticFilters.ts | 41 +++--- .../createAutocompleteResult.ts | 4 +- ...ateFilter.ts => createFieldValueFilter.ts} | 4 +- .../searchservice/createAppliedQueryFilter.ts | 4 +- .../searchservice/createFacets.ts | 4 +- tests/infra/SearchServiceImpl.ts | 11 +- tests/serializers/serializeStaticFilters.ts | 134 +++++++++++++----- 52 files changed, 274 insertions(+), 297 deletions(-) delete mode 100644 docs/search-core.combinedfilter.combinator.md delete mode 100644 docs/search-core.combinedfilter.filters.md delete mode 100644 docs/search-core.combinedfilter.md delete mode 100644 docs/search-core.displayablefacet.fieldid.md delete mode 100644 docs/search-core.displayablefacetoption.matcher.md delete mode 100644 docs/search-core.displayablefacetoption.value.md rename docs/{search-core.filter.fieldid.md => search-core.fieldvaluefilter.fieldid.md} (61%) rename docs/{search-core.facetoption.matcher.md => search-core.fieldvaluefilter.matcher.md} (59%) create mode 100644 docs/search-core.fieldvaluefilter.md rename docs/{search-core.filter.value.md => search-core.fieldvaluefilter.value.md} (64%) delete mode 100644 docs/search-core.filter.matcher.md delete mode 100644 docs/search-core.filter.md create mode 100644 docs/search-core.staticfilter.md rename docs/{search-core.verticalsearchrequest.staticfilters.md => search-core.verticalsearchrequest.staticfilter.md} (52%) delete mode 100644 src/models/searchservice/request/CombinedFilter.ts rename src/models/searchservice/request/{Filter.ts => FieldValueFilter.ts} (95%) create mode 100644 src/models/searchservice/request/StaticFilter.ts rename src/transformers/core/{createFilter.ts => createFieldValueFilter.ts} (86%) diff --git a/docs/search-core.appliedqueryfilter.filter.md b/docs/search-core.appliedqueryfilter.filter.md index 8ef7046b..7847162b 100644 --- a/docs/search-core.appliedqueryfilter.filter.md +++ b/docs/search-core.appliedqueryfilter.filter.md @@ -9,5 +9,5 @@ The filter applied to the query results. Signature: ```typescript -filter: Filter; +filter: FieldValueFilter; ``` diff --git a/docs/search-core.appliedqueryfilter.md b/docs/search-core.appliedqueryfilter.md index 28cdac0c..277d5a2e 100644 --- a/docs/search-core.appliedqueryfilter.md +++ b/docs/search-core.appliedqueryfilter.md @@ -19,6 +19,6 @@ export interface AppliedQueryFilter | [details?](./search-core.appliedqueryfilter.details.md) | [LocationFilterDetails](./search-core.locationfilterdetails.md) | (Optional) Additional details relevant to the filter with "PLACE" for its [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md). | | [displayKey](./search-core.appliedqueryfilter.displaykey.md) | string | The display name of the filter key. | | [displayValue](./search-core.appliedqueryfilter.displayvalue.md) | string | The value used in the filter. | -| [filter](./search-core.appliedqueryfilter.filter.md) | [Filter](./search-core.filter.md) | The filter applied to the query results. | +| [filter](./search-core.appliedqueryfilter.filter.md) | [FieldValueFilter](./search-core.fieldvaluefilter.md) | The filter applied to the query results. | | [type](./search-core.appliedqueryfilter.type.md) | [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md) | Represents the type of [AppliedQueryFilter](./search-core.appliedqueryfilter.md) applied to a search. | diff --git a/docs/search-core.autocompleteresult.filter.md b/docs/search-core.autocompleteresult.filter.md index 718d2b1f..d125e7cc 100644 --- a/docs/search-core.autocompleteresult.filter.md +++ b/docs/search-core.autocompleteresult.filter.md @@ -9,7 +9,7 @@ A filter applied to the autocomplete response. Signature: ```typescript -filter?: Filter; +filter?: FieldValueFilter; ``` ## Remarks diff --git a/docs/search-core.autocompleteresult.md b/docs/search-core.autocompleteresult.md index 94ca63cb..a84dcaa8 100644 --- a/docs/search-core.autocompleteresult.md +++ b/docs/search-core.autocompleteresult.md @@ -16,7 +16,7 @@ export interface AutocompleteResult | Property | Type | Description | | --- | --- | --- | -| [filter?](./search-core.autocompleteresult.filter.md) | [Filter](./search-core.filter.md) | (Optional) A filter applied to the autocomplete response. | +| [filter?](./search-core.autocompleteresult.filter.md) | [FieldValueFilter](./search-core.fieldvaluefilter.md) | (Optional) A filter applied to the autocomplete response. | | [key?](./search-core.autocompleteresult.key.md) | string | (Optional) The fieldId which corresponds to the AutocompleteResult value. | | [matchedSubstrings?](./search-core.autocompleteresult.matchedsubstrings.md) | { length: number; offset: number; }\[\] | (Optional) An array of substrings which overlap with the autocomplete input. | | [relatedItem?](./search-core.autocompleteresult.relateditem.md) | [Result](./search-core.result.md) | (Optional) An entity that corresponds to the autocomplete result. | diff --git a/docs/search-core.combinedfilter.combinator.md b/docs/search-core.combinedfilter.combinator.md deleted file mode 100644 index ff0853f5..00000000 --- a/docs/search-core.combinedfilter.combinator.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [CombinedFilter](./search-core.combinedfilter.md) > [combinator](./search-core.combinedfilter.combinator.md) - -## CombinedFilter.combinator property - -The logical operator used to combine the filters. - -Signature: - -```typescript -combinator: FilterCombinator; -``` diff --git a/docs/search-core.combinedfilter.filters.md b/docs/search-core.combinedfilter.filters.md deleted file mode 100644 index 73d97aad..00000000 --- a/docs/search-core.combinedfilter.filters.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [CombinedFilter](./search-core.combinedfilter.md) > [filters](./search-core.combinedfilter.filters.md) - -## CombinedFilter.filters property - -An array of filters applied to the search. - -Signature: - -```typescript -filters: (Filter | CombinedFilter)[]; -``` diff --git a/docs/search-core.combinedfilter.md b/docs/search-core.combinedfilter.md deleted file mode 100644 index db5da7cc..00000000 --- a/docs/search-core.combinedfilter.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [CombinedFilter](./search-core.combinedfilter.md) - -## CombinedFilter interface - -Represents multiple filters that will be combined to refine results. - -Signature: - -```typescript -export interface CombinedFilter -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [combinator](./search-core.combinedfilter.combinator.md) | [FilterCombinator](./search-core.filtercombinator.md) | The logical operator used to combine the filters. | -| [filters](./search-core.combinedfilter.filters.md) | ([Filter](./search-core.filter.md) \| [CombinedFilter](./search-core.combinedfilter.md))\[\] | An array of filters applied to the search. | - diff --git a/docs/search-core.displayablefacet.fieldid.md b/docs/search-core.displayablefacet.fieldid.md deleted file mode 100644 index 000f13a9..00000000 --- a/docs/search-core.displayablefacet.fieldid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [DisplayableFacet](./search-core.displayablefacet.md) > [fieldId](./search-core.displayablefacet.fieldid.md) - -## DisplayableFacet.fieldId property - -The associated fieldId. - -Signature: - -```typescript -fieldId: string; -``` diff --git a/docs/search-core.displayablefacet.md b/docs/search-core.displayablefacet.md index d093ab92..783eaf78 100644 --- a/docs/search-core.displayablefacet.md +++ b/docs/search-core.displayablefacet.md @@ -18,6 +18,5 @@ export interface DisplayableFacet extends Facet | Property | Type | Description | | --- | --- | --- | | [displayName](./search-core.displayablefacet.displayname.md) | string | The name of the facet which is meant to be displayed to the user. | -| [fieldId](./search-core.displayablefacet.fieldid.md) | string | The associated fieldId. | | [options](./search-core.displayablefacet.options.md) | [DisplayableFacetOption](./search-core.displayablefacetoption.md)\[\] | An array of [DisplayableFacetOption](./search-core.displayablefacetoption.md) | diff --git a/docs/search-core.displayablefacetoption.matcher.md b/docs/search-core.displayablefacetoption.matcher.md deleted file mode 100644 index d910e08d..00000000 --- a/docs/search-core.displayablefacetoption.matcher.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [DisplayableFacetOption](./search-core.displayablefacetoption.md) > [matcher](./search-core.displayablefacetoption.matcher.md) - -## DisplayableFacetOption.matcher property - -A Matcher is a filtering operation. - -Signature: - -```typescript -matcher: Matcher; -``` diff --git a/docs/search-core.displayablefacetoption.md b/docs/search-core.displayablefacetoption.md index 2d4558c2..7bc320af 100644 --- a/docs/search-core.displayablefacetoption.md +++ b/docs/search-core.displayablefacetoption.md @@ -19,7 +19,5 @@ export interface DisplayableFacetOption extends FacetOption | --- | --- | --- | | [count](./search-core.displayablefacetoption.count.md) | number | The number of results associated with this facet option. | | [displayName](./search-core.displayablefacetoption.displayname.md) | string | The name of the facet option which is meant to be displayed to the end user. | -| [matcher](./search-core.displayablefacetoption.matcher.md) | [Matcher](./search-core.matcher.md) | A Matcher is a filtering operation. | | [selected](./search-core.displayablefacetoption.selected.md) | boolean | Whether or not the filter is selected in the search results. | -| [value](./search-core.displayablefacetoption.value.md) | string \| number \| boolean \| [NumberRangeValue](./search-core.numberrangevalue.md) | The value to compare. | diff --git a/docs/search-core.displayablefacetoption.value.md b/docs/search-core.displayablefacetoption.value.md deleted file mode 100644 index 383c4736..00000000 --- a/docs/search-core.displayablefacetoption.value.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [DisplayableFacetOption](./search-core.displayablefacetoption.md) > [value](./search-core.displayablefacetoption.value.md) - -## DisplayableFacetOption.value property - -The value to compare. - -Signature: - -```typescript -value: string | number | boolean | NumberRangeValue; -``` diff --git a/docs/search-core.facetoption.md b/docs/search-core.facetoption.md index 42c429b6..9fb89ab1 100644 --- a/docs/search-core.facetoption.md +++ b/docs/search-core.facetoption.md @@ -9,13 +9,13 @@ A filter associated with the facet. Signature: ```typescript -export interface FacetOption +export interface FacetOption extends Omit ``` +Extends: Omit<[FieldValueFilter](./search-core.fieldvaluefilter.md), 'fieldId'> ## Properties | Property | Type | Description | | --- | --- | --- | -| [matcher](./search-core.facetoption.matcher.md) | [Matcher](./search-core.matcher.md) | A Matcher is a filtering operation. | -| [value](./search-core.facetoption.value.md) | string \| number \| boolean \| [NumberRangeValue](./search-core.numberrangevalue.md) | The value to compare. | +| [value](./search-core.facetoption.value.md) | Exclude<[FieldValueFilter](./search-core.fieldvaluefilter.md)\['value'\], [NearFilterValue](./search-core.nearfiltervalue.md)> | The value to compare. | diff --git a/docs/search-core.facetoption.value.md b/docs/search-core.facetoption.value.md index 7b5d5e2a..bcb1b025 100644 --- a/docs/search-core.facetoption.value.md +++ b/docs/search-core.facetoption.value.md @@ -9,7 +9,7 @@ The value to compare. Signature: ```typescript -value: string | number | boolean | NumberRangeValue; +value: Exclude; ``` ## Example diff --git a/docs/search-core.filter.fieldid.md b/docs/search-core.fieldvaluefilter.fieldid.md similarity index 61% rename from docs/search-core.filter.fieldid.md rename to docs/search-core.fieldvaluefilter.fieldid.md index 9c2ca524..8e3ad0d0 100644 --- a/docs/search-core.filter.fieldid.md +++ b/docs/search-core.fieldvaluefilter.fieldid.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [Filter](./search-core.filter.md) > [fieldId](./search-core.filter.fieldid.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueFilter](./search-core.fieldvaluefilter.md) > [fieldId](./search-core.fieldvaluefilter.fieldid.md) -## Filter.fieldId property +## FieldValueFilter.fieldId property The fieldId to apply the filter against. diff --git a/docs/search-core.facetoption.matcher.md b/docs/search-core.fieldvaluefilter.matcher.md similarity index 59% rename from docs/search-core.facetoption.matcher.md rename to docs/search-core.fieldvaluefilter.matcher.md index 202080d0..ec908ff3 100644 --- a/docs/search-core.facetoption.matcher.md +++ b/docs/search-core.fieldvaluefilter.matcher.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FacetOption](./search-core.facetoption.md) > [matcher](./search-core.facetoption.matcher.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueFilter](./search-core.fieldvaluefilter.md) > [matcher](./search-core.fieldvaluefilter.matcher.md) -## FacetOption.matcher property +## FieldValueFilter.matcher property A Matcher is a filtering operation. diff --git a/docs/search-core.fieldvaluefilter.md b/docs/search-core.fieldvaluefilter.md new file mode 100644 index 00000000..204e12d0 --- /dev/null +++ b/docs/search-core.fieldvaluefilter.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueFilter](./search-core.fieldvaluefilter.md) + +## FieldValueFilter interface + +Represents a filter which compares values to a single field. + +Signature: + +```typescript +export interface FieldValueFilter +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldId](./search-core.fieldvaluefilter.fieldid.md) | string | The fieldId to apply the filter against. | +| [matcher](./search-core.fieldvaluefilter.matcher.md) | [Matcher](./search-core.matcher.md) | A Matcher is a filtering operation. | +| [value](./search-core.fieldvaluefilter.value.md) | string \| number \| boolean \| [NearFilterValue](./search-core.nearfiltervalue.md) \| [NumberRangeValue](./search-core.numberrangevalue.md) | The value to compare. | + diff --git a/docs/search-core.filter.value.md b/docs/search-core.fieldvaluefilter.value.md similarity index 64% rename from docs/search-core.filter.value.md rename to docs/search-core.fieldvaluefilter.value.md index a552358c..d473650e 100644 --- a/docs/search-core.filter.value.md +++ b/docs/search-core.fieldvaluefilter.value.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [Filter](./search-core.filter.md) > [value](./search-core.filter.value.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueFilter](./search-core.fieldvaluefilter.md) > [value](./search-core.fieldvaluefilter.value.md) -## Filter.value property +## FieldValueFilter.value property The value to compare. diff --git a/docs/search-core.filter.matcher.md b/docs/search-core.filter.matcher.md deleted file mode 100644 index 41197f93..00000000 --- a/docs/search-core.filter.matcher.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [Filter](./search-core.filter.md) > [matcher](./search-core.filter.matcher.md) - -## Filter.matcher property - -A Matcher is a filtering operation. - -Signature: - -```typescript -matcher: Matcher; -``` diff --git a/docs/search-core.filter.md b/docs/search-core.filter.md deleted file mode 100644 index 4851d627..00000000 --- a/docs/search-core.filter.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [Filter](./search-core.filter.md) - -## Filter interface - -Represents a filter which compares values to a single field. - -Signature: - -```typescript -export interface Filter -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fieldId](./search-core.filter.fieldid.md) | string | The fieldId to apply the filter against. | -| [matcher](./search-core.filter.matcher.md) | [Matcher](./search-core.matcher.md) | A Matcher is a filtering operation. | -| [value](./search-core.filter.value.md) | string \| number \| boolean \| [NearFilterValue](./search-core.nearfiltervalue.md) \| [NumberRangeValue](./search-core.numberrangevalue.md) | The value to compare. | - diff --git a/docs/search-core.filtercombinator.md b/docs/search-core.filtercombinator.md index 7c2789e5..566b8ff1 100644 --- a/docs/search-core.filtercombinator.md +++ b/docs/search-core.filtercombinator.md @@ -4,7 +4,7 @@ ## FilterCombinator enum -Indicates how the filters in a [CombinedFilter](./search-core.combinedfilter.md) should be combined. +Indicates how child filters in a [StaticFilter](./search-core.staticfilter.md) should be combined. Signature: diff --git a/docs/search-core.filtersearchrequest.excluded.md b/docs/search-core.filtersearchrequest.excluded.md index 621b3d3d..46610a10 100644 --- a/docs/search-core.filtersearchrequest.excluded.md +++ b/docs/search-core.filtersearchrequest.excluded.md @@ -4,10 +4,10 @@ ## FilterSearchRequest.excluded property -an array of filters that should be excluded from filter search results. +An array of field value filters that should be excluded from filter search results. Signature: ```typescript -excluded?: Filter[]; +excluded?: FieldValueFilter[]; ``` diff --git a/docs/search-core.filtersearchrequest.fields.md b/docs/search-core.filtersearchrequest.fields.md index 98fe1a1f..aedfbd86 100644 --- a/docs/search-core.filtersearchrequest.fields.md +++ b/docs/search-core.filtersearchrequest.fields.md @@ -4,7 +4,7 @@ ## FilterSearchRequest.fields property -An array of [SearchParameterField](./search-core.searchparameterfield.md) +An array of [SearchParameterField](./search-core.searchparameterfield.md). Signature: diff --git a/docs/search-core.filtersearchrequest.md b/docs/search-core.filtersearchrequest.md index 266caf5c..1facc433 100644 --- a/docs/search-core.filtersearchrequest.md +++ b/docs/search-core.filtersearchrequest.md @@ -17,8 +17,8 @@ export interface FilterSearchRequest extends SearchRequest | Property | Type | Description | | --- | --- | --- | -| [excluded?](./search-core.filtersearchrequest.excluded.md) | [Filter](./search-core.filter.md)\[\] | (Optional) an array of filters that should be excluded from filter search results. | -| [fields](./search-core.filtersearchrequest.fields.md) | [SearchParameterField](./search-core.searchparameterfield.md)\[\] | An array of [SearchParameterField](./search-core.searchparameterfield.md) | +| [excluded?](./search-core.filtersearchrequest.excluded.md) | [FieldValueFilter](./search-core.fieldvaluefilter.md)\[\] | (Optional) An array of field value filters that should be excluded from filter search results. | +| [fields](./search-core.filtersearchrequest.fields.md) | [SearchParameterField](./search-core.searchparameterfield.md)\[\] | An array of [SearchParameterField](./search-core.searchparameterfield.md). | | [input](./search-core.filtersearchrequest.input.md) | string | The input string for autocomplete. | | [sectioned](./search-core.filtersearchrequest.sectioned.md) | boolean | Determines whether or not the results of the [FilterSearchResponse](./search-core.filtersearchresponse.md) are separated by field. | | [sessionTrackingEnabled?](./search-core.filtersearchrequest.sessiontrackingenabled.md) | boolean | (Optional) Enables session tracking. | diff --git a/docs/search-core.md b/docs/search-core.md index 3b130d7b..07823d7d 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -20,7 +20,7 @@ | [DirectAnswerType](./search-core.directanswertype.md) | Represents the type of direct answer. | | [Direction](./search-core.direction.md) | The direction of a sort. | | [ErrorType](./search-core.errortype.md) | Identifier for the type of error causing the failure. | -| [FilterCombinator](./search-core.filtercombinator.md) | Indicates how the filters in a [CombinedFilter](./search-core.combinedfilter.md) should be combined. | +| [FilterCombinator](./search-core.filtercombinator.md) | Indicates how child filters in a [StaticFilter](./search-core.staticfilter.md) should be combined. | | [LocationBiasMethod](./search-core.locationbiasmethod.md) | The method used to determine the location. | | [Matcher](./search-core.matcher.md) | A Matcher is a filtering operation. | | [QuerySource](./search-core.querysource.md) | The source of the search request. | @@ -52,7 +52,6 @@ | [BaseAnswersConfig](./search-core.baseanswersconfig.md) | | | [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). | | [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. | -| [CombinedFilter](./search-core.combinedfilter.md) | Represents multiple filters that will be combined to refine results. | | [DirectAnswer](./search-core.directanswer.md) | A direct answer to a search. | | [DisplayableFacet](./search-core.displayablefacet.md) | A [Facet](./search-core.facet.md) which contains extra fields meant to be displayed to the end user. | | [DisplayableFacetOption](./search-core.displayablefacetoption.md) | A [FacetOption](./search-core.facetoption.md) with extra data meant to be displayed to the end user. | @@ -62,7 +61,7 @@ | [FailedVertical](./search-core.failedvertical.md) | Error information from when a vertical fails to return results. | | [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | A direct answer which was found within a document. | | [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. | -| [Filter](./search-core.filter.md) | Represents a filter which compares values to a single field. | +| [FieldValueFilter](./search-core.fieldvaluefilter.md) | Represents a filter which compares values to a single field. | | [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. | | [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. | | [HighlightedValue](./search-core.highlightedvalue.md) | A field value and its substring matches as emphasized by the Search API. | @@ -111,4 +110,5 @@ | [Context](./search-core.context.md) | Used to trigger Search [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). | | [HighlightedFields](./search-core.highlightedfields.md) | A mapping of fields to the values emphasized by the Search API. | | [SearchConfig](./search-core.searchconfig.md) | The main configuration options for [SearchCore](./search-core.searchcore.md). For a full description of the options, see [BaseSearchConfig](./search-core.basesearchconfig.md). The config requires either an apiKey or a token. | +| [StaticFilter](./search-core.staticfilter.md) | Represents a static filter that will be used to refine results. | diff --git a/docs/search-core.staticfilter.md b/docs/search-core.staticfilter.md new file mode 100644 index 00000000..4372db20 --- /dev/null +++ b/docs/search-core.staticfilter.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [StaticFilter](./search-core.staticfilter.md) + +## StaticFilter type + +Represents a static filter that will be used to refine results. + +Signature: + +```typescript +export declare type StaticFilter = { + kind: 'fieldValue'; + value: FieldValueFilter; +} | { + kind: 'combination'; + combinator: FilterCombinator; + children: StaticFilter[]; +}; +``` +References: [FieldValueFilter](./search-core.fieldvaluefilter.md), [FilterCombinator](./search-core.filtercombinator.md), [StaticFilter](./search-core.staticfilter.md) + diff --git a/docs/search-core.verticalsearchrequest.md b/docs/search-core.verticalsearchrequest.md index 5a7d6959..0be58e4d 100644 --- a/docs/search-core.verticalsearchrequest.md +++ b/docs/search-core.verticalsearchrequest.md @@ -33,6 +33,6 @@ export interface VerticalSearchRequest extends SearchRequest | [sessionTrackingEnabled?](./search-core.verticalsearchrequest.sessiontrackingenabled.md) | boolean | (Optional) Enables session tracking. | | [skipSpellCheck?](./search-core.verticalsearchrequest.skipspellcheck.md) | boolean | (Optional) Skips spell checking if true. | | [sortBys?](./search-core.verticalsearchrequest.sortbys.md) | [SortBy](./search-core.sortby.md)\[\] | (Optional) Determines how results are sorted. \* | -| [staticFilters?](./search-core.verticalsearchrequest.staticfilters.md) | [CombinedFilter](./search-core.combinedfilter.md) \| [Filter](./search-core.filter.md) | (Optional) The static filters to apply to the search. | +| [staticFilter?](./search-core.verticalsearchrequest.staticfilter.md) | [StaticFilter](./search-core.staticfilter.md) | (Optional) The static filter to apply to the search. | | [verticalKey](./search-core.verticalsearchrequest.verticalkey.md) | string | The key associated with the vertical. | diff --git a/docs/search-core.verticalsearchrequest.staticfilters.md b/docs/search-core.verticalsearchrequest.staticfilter.md similarity index 52% rename from docs/search-core.verticalsearchrequest.staticfilters.md rename to docs/search-core.verticalsearchrequest.staticfilter.md index 4d42211f..2cd74f11 100644 --- a/docs/search-core.verticalsearchrequest.staticfilters.md +++ b/docs/search-core.verticalsearchrequest.staticfilter.md @@ -1,13 +1,13 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [VerticalSearchRequest](./search-core.verticalsearchrequest.md) > [staticFilters](./search-core.verticalsearchrequest.staticfilters.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [VerticalSearchRequest](./search-core.verticalsearchrequest.md) > [staticFilter](./search-core.verticalsearchrequest.staticfilter.md) -## VerticalSearchRequest.staticFilters property +## VerticalSearchRequest.staticFilter property -The static filters to apply to the search. +The static filter to apply to the search. Signature: ```typescript -staticFilters?: CombinedFilter | Filter; +staticFilter?: StaticFilter; ``` diff --git a/etc/search-core.api.md b/etc/search-core.api.md index b1830baf..f058741a 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -37,7 +37,7 @@ export interface AppliedQueryFilter { details?: LocationFilterDetails; displayKey: string; displayValue: string; - filter: Filter; + filter: FieldValueFilter; type: AppliedQueryFilterType; } @@ -58,7 +58,7 @@ export interface AutocompleteResponse { // @public export interface AutocompleteResult { - filter?: Filter; + filter?: FieldValueFilter; key?: string; matchedSubstrings?: { length: number; @@ -99,12 +99,6 @@ export interface ClientSDKHeaderValues { ANSWERS_CORE?: never; } -// @public -export interface CombinedFilter { - combinator: FilterCombinator; - filters: (Filter | CombinedFilter)[]; -} - // @public export type Context = any; @@ -132,7 +126,6 @@ export enum Direction { // @public export interface DisplayableFacet extends Facet { displayName: string; - fieldId: string; options: DisplayableFacetOption[]; } @@ -140,9 +133,7 @@ export interface DisplayableFacet extends Facet { export interface DisplayableFacetOption extends FacetOption { count: number; displayName: string; - matcher: Matcher; selected: boolean; - value: string | number | boolean | NumberRangeValue; } // @public @@ -178,9 +169,8 @@ export interface Facet { } // @public -export interface FacetOption { - matcher: Matcher; - value: string | number | boolean | NumberRangeValue; +export interface FacetOption extends Omit { + value: Exclude; } // @public @@ -217,7 +207,7 @@ export interface FieldValueDirectAnswer extends DirectAnswer { } // @public -export interface Filter { +export interface FieldValueFilter { fieldId: string; matcher: Matcher; value: string | number | boolean | NearFilterValue | NumberRangeValue; @@ -231,7 +221,7 @@ export enum FilterCombinator { // @public export interface FilterSearchRequest extends SearchRequest { - excluded?: Filter[]; + excluded?: FieldValueFilter[]; fields: SearchParameterField[]; input: string; sectioned: boolean; @@ -507,6 +497,16 @@ export enum SpellCheckType { Suggest = "SUGGEST" } +// @public +export type StaticFilter = { + kind: 'fieldValue'; + value: FieldValueFilter; +} | { + kind: 'combination'; + combinator: FilterCombinator; + children: StaticFilter[]; +}; + // @public export interface UniversalAutocompleteRequest extends SearchRequest { input: string; @@ -588,7 +588,7 @@ export interface VerticalSearchRequest extends SearchRequest { sessionTrackingEnabled?: boolean; skipSpellCheck?: boolean; sortBys?: SortBy[]; - staticFilters?: CombinedFilter | Filter; + staticFilter?: StaticFilter; verticalKey: string; } diff --git a/package-lock.json b/package-lock.json index f133465e..8e2d80fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "1.9.0", + "version": "2.0.0-alpha.201", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "1.9.0", + "version": "2.0.0-alpha.201", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", diff --git a/package.json b/package.json index 14fdcc8b..f12b5389 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "1.9.0", + "version": "2.0.0-alpha.201", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js", diff --git a/src/infra/SearchServiceImpl.ts b/src/infra/SearchServiceImpl.ts index 2f0411d2..0355e8b7 100644 --- a/src/infra/SearchServiceImpl.ts +++ b/src/infra/SearchServiceImpl.ts @@ -150,7 +150,7 @@ export class SearchServiceImpl implements SearchService { input: request.query, location: this.stringifyLatLong(request.location), verticalKey: request.verticalKey, - filters: request.staticFilters && serializeStaticFilters(request.staticFilters), + filters: request.staticFilter && serializeStaticFilters(request.staticFilter), limit: request.limit, offset: request.offset, retrieveFacets: request.retrieveFacets, diff --git a/src/models/autocompleteservice/AutocompleteRequest.ts b/src/models/autocompleteservice/AutocompleteRequest.ts index 15a3e4db..c6c42959 100644 --- a/src/models/autocompleteservice/AutocompleteRequest.ts +++ b/src/models/autocompleteservice/AutocompleteRequest.ts @@ -1,5 +1,5 @@ import { SearchRequest } from '../core/SearchRequest'; -import { Filter } from '../searchservice/request/Filter'; +import { FieldValueFilter } from '../searchservice/request/FieldValueFilter'; /** * Options for a universal autocomplete request. @@ -41,10 +41,10 @@ export interface FilterSearchRequest extends SearchRequest { verticalKey: string, /** Determines whether or not the results of the {@link FilterSearchResponse} are separated by field. */ sectioned: boolean, - /** An array of {@link SearchParameterField} */ + /** An array of {@link SearchParameterField}. */ fields: SearchParameterField[], - /** an array of filters that should be excluded from filter search results. */ - excluded?: Filter[] + /** An array of field value filters that should be excluded from filter search results. */ + excluded?: FieldValueFilter[] } /** diff --git a/src/models/autocompleteservice/AutocompleteResponse.ts b/src/models/autocompleteservice/AutocompleteResponse.ts index 50b20498..bff6380e 100644 --- a/src/models/autocompleteservice/AutocompleteResponse.ts +++ b/src/models/autocompleteservice/AutocompleteResponse.ts @@ -1,4 +1,4 @@ -import { Filter } from '../searchservice/request/Filter'; +import { FieldValueFilter } from '../searchservice/request/FieldValueFilter'; import { SearchIntent } from '../searchservice/response/SearchIntent'; import { Result } from '../searchservice/response/Result'; @@ -63,7 +63,7 @@ export interface AutocompleteResult { * @remarks * This property is only defined for filtersearch. */ - filter?: Filter, + filter?: FieldValueFilter, /** * The fieldId which corresponds to the AutocompleteResult value. * diff --git a/src/models/index.ts b/src/models/index.ts index e16a746c..ddfe7d83 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -33,14 +33,14 @@ export { QuestionSubmissionRequest } from './questionsubmission/QuestionSubmissi export { QuestionSubmissionResponse } from './questionsubmission/QuestionSubmissionResponse'; // Search service request models -export { CombinedFilter, FilterCombinator } from './searchservice/request/CombinedFilter'; +export { StaticFilter, FilterCombinator } from './searchservice/request/StaticFilter'; export { Context } from './searchservice/request/Context'; export { UniversalLimit } from './searchservice/request/UniversalLimit'; export { LatLong } from './searchservice/request/LatLong'; export { QuerySource } from './searchservice/request/QuerySource'; export { QueryTrigger } from './searchservice/request/QueryTrigger'; export { Facet, FacetOption } from './searchservice/request/Facet'; -export { Filter, NearFilterValue } from './searchservice/request/Filter'; +export { FieldValueFilter, NearFilterValue } from './searchservice/request/FieldValueFilter'; export { SortBy } from './searchservice/request/SortBy'; export { UniversalSearchRequest } from './searchservice/request/UniversalSearchRequest'; export { VerticalSearchRequest } from './searchservice/request/VerticalSearchRequest'; diff --git a/src/models/searchservice/request/ApiStaticFilters.ts b/src/models/searchservice/request/ApiStaticFilters.ts index 5f9b13c9..cf27cd13 100644 --- a/src/models/searchservice/request/ApiStaticFilters.ts +++ b/src/models/searchservice/request/ApiStaticFilters.ts @@ -1,4 +1,4 @@ -import { NearFilterValue } from './Filter'; +import { NearFilterValue } from './FieldValueFilter'; /** * Represents static filters in the format that the Search API expects. diff --git a/src/models/searchservice/request/CombinedFilter.ts b/src/models/searchservice/request/CombinedFilter.ts deleted file mode 100644 index 6bd3f580..00000000 --- a/src/models/searchservice/request/CombinedFilter.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Filter } from './Filter'; - -/** - * Represents multiple filters that will be combined to refine results. - * - * @public - */ -export interface CombinedFilter { - /** An array of filters applied to the search. */ - filters: (Filter | CombinedFilter)[], - /** The logical operator used to combine the filters. */ - combinator: FilterCombinator -} - -/** - * Indicates how the filters in a {@link CombinedFilter} should be combined. - * - * @public - */ -export enum FilterCombinator { - /** Indicates that filters should be combined with a logical AND. */ - AND = '$and', - /** Indicates that filters should be combined with a logical OR. */ - OR = '$or' -} \ No newline at end of file diff --git a/src/models/searchservice/request/Facet.ts b/src/models/searchservice/request/Facet.ts index 4e943ab8..6a6ea296 100644 --- a/src/models/searchservice/request/Facet.ts +++ b/src/models/searchservice/request/Facet.ts @@ -1,5 +1,4 @@ -import { Matcher } from '../common/Matcher'; -import { NumberRangeValue } from '../common/NumberRangeValue'; +import { FieldValueFilter, NearFilterValue } from './FieldValueFilter'; /** * Represents dynamic filter options for the Search API. @@ -23,14 +22,12 @@ export interface Facet { * * @public */ -export interface FacetOption { - /** {@inheritDoc Matcher} */ - matcher: Matcher, +export interface FacetOption extends Omit { /** * The value to compare. * * @example * 'Sales' */ - value: string | number | boolean | NumberRangeValue + value: Exclude } diff --git a/src/models/searchservice/request/Filter.ts b/src/models/searchservice/request/FieldValueFilter.ts similarity index 95% rename from src/models/searchservice/request/Filter.ts rename to src/models/searchservice/request/FieldValueFilter.ts index 41e170c4..514bb9cf 100644 --- a/src/models/searchservice/request/Filter.ts +++ b/src/models/searchservice/request/FieldValueFilter.ts @@ -6,7 +6,7 @@ import { NumberRangeValue } from '../common/NumberRangeValue'; * * @public */ -export interface Filter { +export interface FieldValueFilter { /** * The fieldId to apply the filter against. * diff --git a/src/models/searchservice/request/StaticFilter.ts b/src/models/searchservice/request/StaticFilter.ts new file mode 100644 index 00000000..5334de29 --- /dev/null +++ b/src/models/searchservice/request/StaticFilter.ts @@ -0,0 +1,22 @@ +import { FieldValueFilter } from './FieldValueFilter'; + +/** + * Represents a static filter that will be used to refine results. + * + * @public + */ +export type StaticFilter = + { kind: 'fieldValue', value: FieldValueFilter } | + { kind: 'combination', combinator: FilterCombinator, children: StaticFilter[] }; + +/** + * Indicates how child filters in a {@link StaticFilter} should be combined. + * + * @public + */ +export enum FilterCombinator { + /** Indicates that filters should be combined with a logical AND. */ + AND = '$and', + /** Indicates that filters should be combined with a logical OR. */ + OR = '$or' +} \ No newline at end of file diff --git a/src/models/searchservice/request/VerticalSearchRequest.ts b/src/models/searchservice/request/VerticalSearchRequest.ts index 84e1921d..b9cdf9ab 100644 --- a/src/models/searchservice/request/VerticalSearchRequest.ts +++ b/src/models/searchservice/request/VerticalSearchRequest.ts @@ -1,5 +1,4 @@ -import { CombinedFilter } from './CombinedFilter'; -import { Filter } from './Filter'; +import { StaticFilter } from './StaticFilter'; import { Context } from './Context'; import { LatLong } from './LatLong'; import { QueryTrigger } from './QueryTrigger'; @@ -38,8 +37,8 @@ export interface VerticalSearchRequest extends SearchRequest { sessionId?: string, /** Enables session tracking. */ sessionTrackingEnabled?: boolean, - /** The static filters to apply to the search. */ - staticFilters?: CombinedFilter | Filter, + /** The static filter to apply to the search. */ + staticFilter?: StaticFilter, /** Determines how results are sorted. **/ sortBys?: SortBy[], /** {@inheritdoc UniversalSearchRequest.referrerPageUrl} */ diff --git a/src/models/searchservice/response/AppliedQueryFilter.ts b/src/models/searchservice/response/AppliedQueryFilter.ts index 9b9b71e6..f922e26f 100644 --- a/src/models/searchservice/response/AppliedQueryFilter.ts +++ b/src/models/searchservice/response/AppliedQueryFilter.ts @@ -1,4 +1,4 @@ -import { Filter } from '../request/Filter'; +import { FieldValueFilter } from '../request/FieldValueFilter'; import { AppliedQueryFilterType } from './AppliedQueryFilterType'; import { LocationFilterDetails } from './LocationFilterDetails'; @@ -23,7 +23,7 @@ export interface AppliedQueryFilter { */ displayValue: string, /** The filter applied to the query results. */ - filter: Filter, + filter: FieldValueFilter, /** {@inheritDoc AppliedQueryFilterType} */ type: AppliedQueryFilterType, /** {@inheritDoc LocationFilterDetails} */ diff --git a/src/models/searchservice/response/DisplayableFacet.ts b/src/models/searchservice/response/DisplayableFacet.ts index ca71c3ba..1a370d48 100644 --- a/src/models/searchservice/response/DisplayableFacet.ts +++ b/src/models/searchservice/response/DisplayableFacet.ts @@ -1,6 +1,4 @@ import { Facet, FacetOption } from '../request/Facet'; -import { Matcher } from '../common/Matcher'; -import { NumberRangeValue } from '../common/NumberRangeValue'; /** * A {@link Facet} which contains extra fields meant to be displayed to the end user. @@ -8,8 +6,6 @@ import { NumberRangeValue } from '../common/NumberRangeValue'; * @public */ export interface DisplayableFacet extends Facet { - /** {@inheritDoc Facet.fieldId} */ - fieldId: string, /** An array of {@link DisplayableFacetOption} */ options: DisplayableFacetOption[], /** The name of the facet which is meant to be displayed to the user. */ @@ -22,10 +18,6 @@ export interface DisplayableFacet extends Facet { * @public */ export interface DisplayableFacetOption extends FacetOption { - /** {@inheritDoc Matcher} */ - matcher: Matcher, - /** {@inheritDoc FacetOption.value} */ - value: string | number | boolean | NumberRangeValue, /** The name of the facet option which is meant to be displayed to the end user. */ displayName: string, /** The number of results associated with this facet option. */ diff --git a/src/serializers/serializeFacets.ts b/src/serializers/serializeFacets.ts index c9181e34..ab68dd55 100644 --- a/src/serializers/serializeFacets.ts +++ b/src/serializers/serializeFacets.ts @@ -1,6 +1,6 @@ import { Facet, FacetOption } from '../models/searchservice/request/Facet'; import { ApiStaticFilters } from '../models/searchservice/request/ApiStaticFilters'; -import { shapeFilterForApi } from './serializeStaticFilters'; +import { shapeFieldValueFilterForApi } from './serializeStaticFilters'; export function serializeFacets(filters: Facet[]): string { return JSON.stringify(filters.reduce>((obj, facet) => { @@ -13,6 +13,6 @@ export function serializeFacets(filters: Facet[]): string { function shapeFacetOptionArrayForApi(options: FacetOption[], fieldId: string): ApiStaticFilters[] { return options.map((option) => { - return shapeFilterForApi({ ...option, fieldId: fieldId }); + return shapeFieldValueFilterForApi({ ...option, fieldId: fieldId }); }); } \ No newline at end of file diff --git a/src/serializers/serializeFilterSearch.ts b/src/serializers/serializeFilterSearch.ts index dc533e15..2700e618 100644 --- a/src/serializers/serializeFilterSearch.ts +++ b/src/serializers/serializeFilterSearch.ts @@ -1,5 +1,5 @@ import { SearchParameterField } from '../models/autocompleteservice/AutocompleteRequest'; -import { Filter } from '../models/searchservice/request/Filter'; +import { FieldValueFilter } from '../models/searchservice/request/FieldValueFilter'; export function serializeSearchParameterFields(fields: SearchParameterField[]) { return fields.map(({ fieldApiName, entityType, fetchEntities }) => ( @@ -11,7 +11,7 @@ export function serializeSearchParameterFields(fields: SearchParameterField[]) { )); } -export function serializeExcludedFields(excludedFields?: Filter[]) { +export function serializeExcludedFields(excludedFields?: FieldValueFilter[]) { return excludedFields?.map(({ fieldId, matcher, value }) => ( { [fieldId]: { diff --git a/src/serializers/serializeStaticFilters.ts b/src/serializers/serializeStaticFilters.ts index df13a525..92c30a16 100644 --- a/src/serializers/serializeStaticFilters.ts +++ b/src/serializers/serializeStaticFilters.ts @@ -1,32 +1,40 @@ import { isNumberRangeValue } from '../models/searchservice/common/NumberRangeValue'; -import { CombinedFilter } from '../models/searchservice/request/CombinedFilter'; -import { Filter } from '../models/searchservice/request/Filter'; +import { FilterCombinator, StaticFilter } from '../models/searchservice/request/StaticFilter'; +import { FieldValueFilter } from '../models/searchservice/request/FieldValueFilter'; import { ApiStaticFilters, ApiFilter } from '../models/searchservice/request/ApiStaticFilters'; -export function serializeStaticFilters( - filter: CombinedFilter | Filter): string | undefined { - if (isCombinedFilter(filter)) { - return JSON.stringify(shapeCombinedFilterForApi(filter)); +export function serializeStaticFilters(filter: StaticFilter): string | undefined { + if (filter.kind === 'combination') { + const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.children); + return shapedFilter && JSON.stringify(shapedFilter); } - return JSON.stringify(shapeFilterForApi(filter)); + return JSON.stringify(shapeFieldValueFilterForApi(filter.value)); } -function shapeCombinedFilterForApi(combinedFilter: CombinedFilter): ApiStaticFilters { +function shapeCombinedFilterForApi( + combinator: FilterCombinator, + filters: StaticFilter[] +): ApiStaticFilters | undefined { + if (filters.length === 0) { + return undefined; + } + const shapedFilters: ApiStaticFilters[] = []; - for (const filter of combinedFilter.filters) { - if (isCombinedFilter(filter)) { - shapedFilters.push(shapeCombinedFilterForApi(filter)); + for (const filter of filters) { + if (filter.kind === 'combination') { + const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.children); + shapedFilter && shapedFilters.push(shapedFilter); } else { - shapedFilters.push(shapeFilterForApi(filter)); + shapedFilters.push(shapeFieldValueFilterForApi(filter.value)); } } return shapedFilters.length === 1 ? shapedFilters[0] - : { [combinedFilter.combinator]: shapedFilters }; + : { [combinator]: shapedFilters }; } -export function shapeFilterForApi(filter: Filter): ApiStaticFilters { +export function shapeFieldValueFilterForApi(filter: FieldValueFilter): ApiStaticFilters { let filterValues: ApiFilter = {}; if (isNumberRangeValue(filter.value)) { if (filter.value.start) { @@ -42,8 +50,3 @@ export function shapeFilterForApi(filter: Filter): ApiStaticFilters { [filter.fieldId]: filterValues }; } - -function isCombinedFilter(filter: CombinedFilter | Filter): filter is CombinedFilter { - return ((filter as CombinedFilter).filters !== undefined) - && ((filter as CombinedFilter).combinator !== undefined); -} \ No newline at end of file diff --git a/src/transformers/autocompleteservice/createAutocompleteResult.ts b/src/transformers/autocompleteservice/createAutocompleteResult.ts index 0dc4d56a..e47f83a3 100644 --- a/src/transformers/autocompleteservice/createAutocompleteResult.ts +++ b/src/transformers/autocompleteservice/createAutocompleteResult.ts @@ -1,6 +1,6 @@ import { AutocompleteResult } from '../../models/autocompleteservice/AutocompleteResponse'; import { Source } from '../../models/searchservice/response/Source'; -import { createFilter } from '../core/createFilter'; +import { createFieldValueFilter } from '../core/createFieldValueFilter'; import { ResultsFactory } from '../searchservice/ResultsFactory'; export function createAutocompleteResult(result: any): AutocompleteResult { @@ -8,7 +8,7 @@ export function createAutocompleteResult(result: any): AutocompleteResult { ? ResultsFactory.create([result.relatedItem], Source.KnowledgeManager)[0] : result.relatedItem; return { - filter: result.filter && createFilter(result.filter), + filter: result.filter && createFieldValueFilter(result.filter), key: result.key, matchedSubstrings: result.matchedSubstrings || [], value: result.value, diff --git a/src/transformers/core/createFilter.ts b/src/transformers/core/createFieldValueFilter.ts similarity index 86% rename from src/transformers/core/createFilter.ts rename to src/transformers/core/createFieldValueFilter.ts index 98ff4fdb..e02856df 100644 --- a/src/transformers/core/createFilter.ts +++ b/src/transformers/core/createFieldValueFilter.ts @@ -1,8 +1,8 @@ -import { Filter, NearFilterValue } from '../../models/searchservice/request/Filter'; +import { FieldValueFilter, NearFilterValue } from '../../models/searchservice/request/FieldValueFilter'; import { Matcher } from '../../models/searchservice/common/Matcher'; import { NumberRangeValue } from '../../models/searchservice/common/NumberRangeValue'; -export function createFilter(filter: any): Filter { +export function createFieldValueFilter(filter: any): FieldValueFilter { const fieldId = Object.keys(filter)[0]; const matcher = Object.keys(filter[fieldId])[0]; let value: string | number | boolean | NearFilterValue | NumberRangeValue; diff --git a/src/transformers/searchservice/createAppliedQueryFilter.ts b/src/transformers/searchservice/createAppliedQueryFilter.ts index 41421217..a84d140b 100644 --- a/src/transformers/searchservice/createAppliedQueryFilter.ts +++ b/src/transformers/searchservice/createAppliedQueryFilter.ts @@ -1,11 +1,11 @@ import { AppliedQueryFilter } from '../../models/searchservice/response/AppliedQueryFilter'; -import { createFilter } from '../core/createFilter'; +import { createFieldValueFilter } from '../core/createFieldValueFilter'; export function createAppliedQueryFilter(data: any): AppliedQueryFilter { return { displayKey: data.displayKey, displayValue: data.displayValue, - filter: createFilter(data.filter), + filter: createFieldValueFilter(data.filter), type: data.type, ...(data.details && { details: data.details }) }; diff --git a/src/transformers/searchservice/createFacets.ts b/src/transformers/searchservice/createFacets.ts index 19d97e81..e928ba6d 100644 --- a/src/transformers/searchservice/createFacets.ts +++ b/src/transformers/searchservice/createFacets.ts @@ -1,6 +1,6 @@ import { NumberRangeValue } from '../../models/searchservice/common/NumberRangeValue'; import { DisplayableFacet, DisplayableFacetOption } from '../../models/searchservice/response/DisplayableFacet'; -import { createFilter } from '../core/createFilter'; +import { createFieldValueFilter } from '../core/createFieldValueFilter'; export function createFacets(facets: any): DisplayableFacet[] { if (!facets) { @@ -16,7 +16,7 @@ export function createFacets(facets: any): DisplayableFacet[] { function createFacetOptions(options: any[]): DisplayableFacetOption[] { return options.map((option: any) => { - const filter = createFilter(option.filter); + const filter = createFieldValueFilter(option.filter); return { displayName: option.displayName, diff --git a/tests/infra/SearchServiceImpl.ts b/tests/infra/SearchServiceImpl.ts index cbdc8394..a024aa5f 100644 --- a/tests/infra/SearchServiceImpl.ts +++ b/tests/infra/SearchServiceImpl.ts @@ -274,10 +274,13 @@ describe('SearchService', () => { field: 'name', type: SortType.Field }], - staticFilters: { - fieldId: 'city', - matcher: Matcher.NotEquals, - value: 'Arlington' + staticFilter: { + kind: 'fieldValue', + value: { + fieldId: 'city', + matcher: Matcher.NotEquals, + value: 'Arlington' + } }, verticalKey: 'verticalKey' }; diff --git a/tests/serializers/serializeStaticFilters.ts b/tests/serializers/serializeStaticFilters.ts index bc5684c0..74f2f547 100644 --- a/tests/serializers/serializeStaticFilters.ts +++ b/tests/serializers/serializeStaticFilters.ts @@ -1,19 +1,30 @@ import { Matcher } from '../../src/models/searchservice/common/Matcher'; -import { FilterCombinator } from '../../src/models/searchservice/request/CombinedFilter'; +import { FilterCombinator } from '../../src/models/searchservice/request/StaticFilter'; import { serializeStaticFilters } from '../../src/serializers/serializeStaticFilters'; it('serializeStaticFilters works with multiple levels of nesting', () => { const actualSerializedFilters = serializeStaticFilters({ - filters: [ + kind: 'combination', + children: [ { - filters: + kind: 'combination', + children: [ - { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'APAC' }, - { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'EMEA' } + { + kind: 'fieldValue', + value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'APAC' } + }, + { + kind: 'fieldValue', + value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'EMEA' } + } ], combinator: FilterCombinator.OR }, - { fieldId: 'builtin.entityType', matcher: Matcher.Equals, value: 'Publication' }, + { + kind: 'fieldValue', + value: { fieldId: 'builtin.entityType', matcher: Matcher.Equals, value: 'Publication' } + }, ], combinator: FilterCombinator.AND }); @@ -32,11 +43,18 @@ it('serializeStaticFilters works with multiple levels of nesting', () => { expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with a simple Combined Filter', () => { +it('serializeStaticFilters works with a simple combined filter', () => { const actualSerializedFilters = serializeStaticFilters({ - filters: [ - { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'APAC' }, - { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'EMEA' } + kind: 'combination', + children: [ + { + kind: 'fieldValue', + value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'APAC' } + }, + { + kind: 'fieldValue', + value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'EMEA' } + } ], combinator: FilterCombinator.OR }); @@ -50,25 +68,31 @@ it('serializeStaticFilters works with a simple Combined Filter', () => { expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with only a Simple Filter', () => { +it('serializeStaticFilters works with only a FieldValueFilter', () => { const actualSerializedFilters = serializeStaticFilters({ - fieldId: 'c_Region', - matcher: Matcher.Equals, - value: 'APAC' + kind: 'fieldValue', + value: { + fieldId: 'c_Region', + matcher: Matcher.Equals, + value: 'APAC' + } }); const expectedSerializedFilters = { c_Region: { $eq: 'APAC' } }; expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with a $near Simple filter', () => { +it('serializeStaticFilters works with a $near FieldValueFilter', () => { const actualSerializedFilters = serializeStaticFilters({ - fieldId: 'builtin.location', - matcher: Matcher.Near, + kind: 'fieldValue', value: { - lat: 1, - lng: 2, - radius: 3 + fieldId: 'builtin.location', + matcher: Matcher.Near, + value: { + lat: 1, + lng: 2, + radius: 3 + } } }); @@ -84,14 +108,17 @@ it('serializeStaticFilters works with a $near Simple filter', () => { expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with a $between Simple filter', () => { +it('serializeStaticFilters works with a $between FieldValueFilter', () => { const actualSerializedFilters = serializeStaticFilters( { - fieldId: 'price', - matcher: Matcher.Between, + kind: 'fieldValue', value: { - start: { matcher: Matcher.GreaterThan, value: 0 }, - end: { matcher: Matcher.LessThan, value: 10 } + fieldId: 'price', + matcher: Matcher.Between, + value: { + start: { matcher: Matcher.GreaterThan, value: 0 }, + end: { matcher: Matcher.LessThan, value: 10 } + } } } ); @@ -102,13 +129,16 @@ it('serializeStaticFilters works with a $between Simple filter', () => { expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with only lower limit defined for a $between Simple filter', () => { +it('serializeStaticFilters works with only lower limit defined for a $between FieldValueFilter', () => { const actualSerializedFilters = serializeStaticFilters( { - fieldId: 'price', - matcher: Matcher.Between, + kind: 'fieldValue', value: { - start: { matcher: Matcher.GreaterThan, value: 0 } + fieldId: 'price', + matcher: Matcher.Between, + value: { + start: { matcher: Matcher.GreaterThan, value: 0 } + } } } ); @@ -118,13 +148,16 @@ it('serializeStaticFilters works with only lower limit defined for a $between Si expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with only upper limit defined for a $between Simple filter', () => { +it('serializeStaticFilters works with only upper limit defined for a $between FieldValueFilter', () => { const actualSerializedFilters = serializeStaticFilters( { - fieldId: 'price', - matcher: Matcher.Between, + kind: 'fieldValue', value: { - end: { matcher: Matcher.LessThan, value: 10 } + fieldId: 'price', + matcher: Matcher.Between, + value: { + end: { matcher: Matcher.LessThan, value: 10 } + } } } ); @@ -132,4 +165,37 @@ it('serializeStaticFilters works with only upper limit defined for a $between Si price: { $lt: 10 } }; expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); -}); \ No newline at end of file +}); + +it('serializeStaticFilters works with a nested filter with single or no children', () => { + const actualSerializedFilters = serializeStaticFilters({ + kind: 'combination', + children: [ + { + kind: 'combination', + children: [], + combinator: FilterCombinator.OR + }, + { + kind: 'fieldValue', + value: { fieldId: 'builtin.entityType', matcher: Matcher.Equals, value: 'Publication' } + }, + ], + combinator: FilterCombinator.AND + }); + + const expectedSerializedFilters = { + 'builtin.entityType': { $eq: 'Publication' } + }; + expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); +}); + +it('serializeStaticFilters works with a simple combined filter with no children', () => { + const actualSerializedFilters = serializeStaticFilters({ + kind: 'combination', + children: [], + combinator: FilterCombinator.OR + }); + + expect(actualSerializedFilters).toBeUndefined(); +}); From 75a2d99b3af3f6d9087a6e698b0349e2b267afe6 Mon Sep 17 00:00:00 2001 From: juliannzhou <65748924+juliannzhou@users.noreply.github.com> Date: Thu, 11 Aug 2022 16:03:25 -0400 Subject: [PATCH 03/23] make value generic and create fieldType enum for FieldValueDirectAnswer (#200) This PR makes the value of DirectAnswer generic and creates an BuiltInFieldType enum for use in fieldType for FieldValueDirectAnswer and FeatureSnippedDirectAnswer. J=SLAP-2308 TEST=manual Test: created a test interface with type FieldValueDirectAnswer and pass in as the generic type variable, the interface works as expected when setting the value to a number with no errors. --- docs/search-core.builtinfieldtype.md | 20 ++++++++++++++++ docs/search-core.directanswer.fieldtype.md | 2 +- docs/search-core.directanswer.md | 6 ++--- docs/search-core.directanswer.value.md | 2 +- ...e.featuredsnippetdirectanswer.fieldtype.md | 2 +- ...search-core.featuredsnippetdirectanswer.md | 8 +++---- ...-core.featuredsnippetdirectanswer.value.md | 2 +- ...h-core.fieldvaluedirectanswer.fieldtype.md | 2 +- docs/search-core.fieldvaluedirectanswer.md | 8 +++---- ...earch-core.fieldvaluedirectanswer.value.md | 2 +- docs/search-core.md | 1 + etc/search-core.api.md | 24 ++++++++++++------- src/models/index.ts | 1 + .../response/BuiltInFieldType.ts | 21 ++++++++++++++++ .../searchservice/response/DirectAnswer.ts | 7 +++--- .../response/FeaturedSnippetDirectAnswer.ts | 7 +++--- .../response/FieldValueDirectAnswer.ts | 7 +++--- 17 files changed, 87 insertions(+), 35 deletions(-) create mode 100644 docs/search-core.builtinfieldtype.md create mode 100644 src/models/searchservice/response/BuiltInFieldType.ts diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md new file mode 100644 index 00000000..85a39da5 --- /dev/null +++ b/docs/search-core.builtinfieldtype.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BuiltInFieldType](./search-core.builtinfieldtype.md) + +## BuiltInFieldType enum + +Possible built-in field types for [DirectAnswer.fieldType](./search-core.directanswer.fieldtype.md). + +Signature: + +```typescript +export declare enum BuiltInFieldType +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| Address | "address" | | + diff --git a/docs/search-core.directanswer.fieldtype.md b/docs/search-core.directanswer.fieldtype.md index 09571f86..837d6826 100644 --- a/docs/search-core.directanswer.fieldtype.md +++ b/docs/search-core.directanswer.fieldtype.md @@ -9,5 +9,5 @@ The field type of the direct answer. Signature: ```typescript -fieldType: string; +fieldType: BuiltInFieldType | string; ``` diff --git a/docs/search-core.directanswer.md b/docs/search-core.directanswer.md index 18f1eb25..611dabe3 100644 --- a/docs/search-core.directanswer.md +++ b/docs/search-core.directanswer.md @@ -9,16 +9,16 @@ A direct answer to a search. Signature: ```typescript -export interface DirectAnswer +export interface DirectAnswer ``` ## Properties | Property | Type | Description | | --- | --- | --- | -| [fieldType](./search-core.directanswer.fieldtype.md) | string | The field type of the direct answer. | +| [fieldType](./search-core.directanswer.fieldtype.md) | [BuiltInFieldType](./search-core.builtinfieldtype.md) \| string | The field type of the direct answer. | | [relatedResult](./search-core.directanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. | | [type](./search-core.directanswer.type.md) | [DirectAnswerType](./search-core.directanswertype.md) | The [DirectAnswerType](./search-core.directanswertype.md). | -| [value?](./search-core.directanswer.value.md) | string | (Optional) The result of the direct answer. | +| [value?](./search-core.directanswer.value.md) | T | (Optional) The result of the direct answer. | | [verticalKey](./search-core.directanswer.verticalkey.md) | string | The vertical key of the direct answer. | diff --git a/docs/search-core.directanswer.value.md b/docs/search-core.directanswer.value.md index 1076e975..39ea22d4 100644 --- a/docs/search-core.directanswer.value.md +++ b/docs/search-core.directanswer.value.md @@ -9,7 +9,7 @@ The result of the direct answer. Signature: ```typescript -value?: string; +value?: T; ``` ## Remarks diff --git a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md b/docs/search-core.featuredsnippetdirectanswer.fieldtype.md index 1a5e64a0..8f587d72 100644 --- a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md +++ b/docs/search-core.featuredsnippetdirectanswer.fieldtype.md @@ -9,5 +9,5 @@ The field type of the direct answer. Signature: ```typescript -fieldType: string; +fieldType: BuiltInFieldType | string; ``` diff --git a/docs/search-core.featuredsnippetdirectanswer.md b/docs/search-core.featuredsnippetdirectanswer.md index a8c535d4..b1727936 100644 --- a/docs/search-core.featuredsnippetdirectanswer.md +++ b/docs/search-core.featuredsnippetdirectanswer.md @@ -9,18 +9,18 @@ A direct answer which was found within a document. Signature: ```typescript -export interface FeaturedSnippetDirectAnswer extends DirectAnswer +export interface FeaturedSnippetDirectAnswer extends DirectAnswer ``` -Extends: [DirectAnswer](./search-core.directanswer.md) +Extends: [DirectAnswer](./search-core.directanswer.md)<T> ## Properties | Property | Type | Description | | --- | --- | --- | -| [fieldType](./search-core.featuredsnippetdirectanswer.fieldtype.md) | string | The field type of the direct answer. | +| [fieldType](./search-core.featuredsnippetdirectanswer.fieldtype.md) | [BuiltInFieldType](./search-core.builtinfieldtype.md) \| string | The field type of the direct answer. | | [relatedResult](./search-core.featuredsnippetdirectanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. | | [snippet](./search-core.featuredsnippetdirectanswer.snippet.md) | [Snippet](./search-core.snippet.md) | The snippet where the direct answer was found. | | [type](./search-core.featuredsnippetdirectanswer.type.md) | [DirectAnswerType.FeaturedSnippet](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FeaturedSnippet. | -| [value?](./search-core.featuredsnippetdirectanswer.value.md) | string | (Optional) The result of the direct answer. | +| [value?](./search-core.featuredsnippetdirectanswer.value.md) | T | (Optional) The result of the direct answer. | | [verticalKey](./search-core.featuredsnippetdirectanswer.verticalkey.md) | string | The vertical key of the direct answer. | diff --git a/docs/search-core.featuredsnippetdirectanswer.value.md b/docs/search-core.featuredsnippetdirectanswer.value.md index 2627ae03..8ede94aa 100644 --- a/docs/search-core.featuredsnippetdirectanswer.value.md +++ b/docs/search-core.featuredsnippetdirectanswer.value.md @@ -9,7 +9,7 @@ The result of the direct answer. Signature: ```typescript -value?: string; +value?: T; ``` ## Remarks diff --git a/docs/search-core.fieldvaluedirectanswer.fieldtype.md b/docs/search-core.fieldvaluedirectanswer.fieldtype.md index e7af3c09..4d4165f7 100644 --- a/docs/search-core.fieldvaluedirectanswer.fieldtype.md +++ b/docs/search-core.fieldvaluedirectanswer.fieldtype.md @@ -9,5 +9,5 @@ The field type of the direct answer. Signature: ```typescript -fieldType: string; +fieldType: BuiltInFieldType | string; ``` diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index 1bc85324..d8566716 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,9 +9,9 @@ A direct answer where the answer came from a field from the knowledge graph. Signature: ```typescript -export interface FieldValueDirectAnswer extends DirectAnswer +export interface FieldValueDirectAnswer extends DirectAnswer ``` -Extends: [DirectAnswer](./search-core.directanswer.md) +Extends: [DirectAnswer](./search-core.directanswer.md)<T> ## Properties @@ -20,9 +20,9 @@ export interface FieldValueDirectAnswer extends DirectAnswer | [entityName](./search-core.fieldvaluedirectanswer.entityname.md) | string | The name of the entity that direct answer came from. | | [fieldApiName](./search-core.fieldvaluedirectanswer.fieldapiname.md) | string | The field api name of the direct answer. | | [fieldName](./search-core.fieldvaluedirectanswer.fieldname.md) | string | The field name of the direct answer. | -| [fieldType](./search-core.fieldvaluedirectanswer.fieldtype.md) | string | The field type of the direct answer. | +| [fieldType](./search-core.fieldvaluedirectanswer.fieldtype.md) | [BuiltInFieldType](./search-core.builtinfieldtype.md) \| string | The field type of the direct answer. | | [relatedResult](./search-core.fieldvaluedirectanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. | | [type](./search-core.fieldvaluedirectanswer.type.md) | [DirectAnswerType.FieldValue](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FieldValue. | -| [value](./search-core.fieldvaluedirectanswer.value.md) | string | The result of the direct answer. | +| [value](./search-core.fieldvaluedirectanswer.value.md) | T | The result of the direct answer. | | [verticalKey](./search-core.fieldvaluedirectanswer.verticalkey.md) | string | The vertical key of the direct answer. | diff --git a/docs/search-core.fieldvaluedirectanswer.value.md b/docs/search-core.fieldvaluedirectanswer.value.md index aa85b209..7ea836d8 100644 --- a/docs/search-core.fieldvaluedirectanswer.value.md +++ b/docs/search-core.fieldvaluedirectanswer.value.md @@ -9,7 +9,7 @@ The result of the direct answer. Signature: ```typescript -value: string; +value: T; ``` ## Remarks diff --git a/docs/search-core.md b/docs/search-core.md index 07823d7d..0c117f68 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -17,6 +17,7 @@ | Enumeration | Description | | --- | --- | | [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md) | Represents the type of [AppliedQueryFilter](./search-core.appliedqueryfilter.md) applied to a search. | +| [BuiltInFieldType](./search-core.builtinfieldtype.md) | Possible built-in field types for [DirectAnswer.fieldType](./search-core.directanswer.fieldtype.md). | | [DirectAnswerType](./search-core.directanswertype.md) | Represents the type of direct answer. | | [Direction](./search-core.direction.md) | The direction of a sort. | | [ErrorType](./search-core.errortype.md) | Identifier for the type of error causing the failure. | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index f058741a..b6c1b135 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -93,6 +93,12 @@ export interface BaseSearchConfig { visitor?: Visitor; } +// @public +export enum BuiltInFieldType { + // (undocumented) + Address = "address" +} + // @public export interface ClientSDKHeaderValues { [agent: string]: string | undefined; @@ -103,11 +109,11 @@ export interface ClientSDKHeaderValues { export type Context = any; // @public -export interface DirectAnswer { - fieldType: string; +export interface DirectAnswer { + fieldType: BuiltInFieldType | string; relatedResult: Result; type: DirectAnswerType; - value?: string; + value?: T; verticalKey: string; } @@ -185,24 +191,24 @@ export interface FailedVertical { } // @public -export interface FeaturedSnippetDirectAnswer extends DirectAnswer { - fieldType: string; +export interface FeaturedSnippetDirectAnswer extends DirectAnswer { + fieldType: BuiltInFieldType | string; relatedResult: Result; snippet: Snippet; type: DirectAnswerType.FeaturedSnippet; - value?: string; + value?: T; verticalKey: string; } // @public -export interface FieldValueDirectAnswer extends DirectAnswer { +export interface FieldValueDirectAnswer extends DirectAnswer { entityName: string; fieldApiName: string; fieldName: string; - fieldType: string; + fieldType: BuiltInFieldType | string; relatedResult: Result; type: DirectAnswerType.FieldValue; - value: string; + value: T; verticalKey: string; } diff --git a/src/models/index.ts b/src/models/index.ts index ddfe7d83..8e18e9e0 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -70,6 +70,7 @@ export { VerticalSearchResponse } from './searchservice/response/VerticalSearchR export { Snippet } from './searchservice/response/Snippet'; export { ErrorType } from './searchservice/response/ErrorType'; export { FailedVertical } from './searchservice/response/FailedVertical'; +export { BuiltInFieldType } from './searchservice/response/BuiltInFieldType'; // Search service common models export { Matcher } from './searchservice/common/Matcher'; diff --git a/src/models/searchservice/response/BuiltInFieldType.ts b/src/models/searchservice/response/BuiltInFieldType.ts new file mode 100644 index 00000000..0741f8e2 --- /dev/null +++ b/src/models/searchservice/response/BuiltInFieldType.ts @@ -0,0 +1,21 @@ +/** + * Possible built-in field types for {@link DirectAnswer.fieldType}. + * @public + */ +export enum BuiltInFieldType { + // URL = 'url', + // ComplexURL = 'complex_url', + // IOSAppURL = 'ios_app_url', + // AndroidAppURL = 'android_app_url', + // FacebookURL = 'facebook_url', + // Email = 'email', + // InstagramHandle = 'instagram_handle', + // TwitterHandle = 'twitter_handle', + // Phone = 'phone', + Address = 'address', + // Hours = 'hours', + // Decimal = 'decimal', + // RichText = 'rich_text', + // SingleLineText = 'single_line_text', + // MultiLineText = 'multi_line_text' +} \ No newline at end of file diff --git a/src/models/searchservice/response/DirectAnswer.ts b/src/models/searchservice/response/DirectAnswer.ts index 7a4b2eed..055d743d 100644 --- a/src/models/searchservice/response/DirectAnswer.ts +++ b/src/models/searchservice/response/DirectAnswer.ts @@ -1,12 +1,13 @@ import { Result } from './Result'; import { DirectAnswerType } from './DirectAnswerType'; +import { BuiltInFieldType } from './BuiltInFieldType'; /** * A direct answer to a search. * * @public */ -export interface DirectAnswer { +export interface DirectAnswer { /** The {@link DirectAnswerType}. */ type: DirectAnswerType, /** @@ -15,11 +16,11 @@ export interface DirectAnswer { * @remarks * A value will not be present if the {@link DirectAnswer.fieldType} is 'rich_text'. */ - value?: string, + value?: T, /** The entity associated with the direct answer. */ relatedResult: Result, /** The vertical key of the direct answer. */ verticalKey: string, /** The field type of the direct answer. */ - fieldType: string + fieldType: BuiltInFieldType | string } \ No newline at end of file diff --git a/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts index 1c2138c8..4bf565d2 100644 --- a/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts @@ -1,5 +1,6 @@ import { DirectAnswer } from './DirectAnswer'; import { DirectAnswerType } from './DirectAnswerType'; +import { BuiltInFieldType } from './BuiltInFieldType'; import { Result } from './Result'; import { Snippet } from './Snippet'; @@ -8,17 +9,17 @@ import { Snippet } from './Snippet'; * * @public */ -export interface FeaturedSnippetDirectAnswer extends DirectAnswer { +export interface FeaturedSnippetDirectAnswer extends DirectAnswer { /** {@link DirectAnswerType}.FeaturedSnippet. */ type: DirectAnswerType.FeaturedSnippet, /** {@inheritDoc DirectAnswer.value} */ - value?: string, + value?: T, /** {@inheritDoc DirectAnswer.relatedResult} */ relatedResult: Result, /** {@inheritDoc DirectAnswer.verticalKey} */ verticalKey: string, /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: string, + fieldType: BuiltInFieldType | string, /** The snippet where the direct answer was found. */ snippet: Snippet } \ No newline at end of file diff --git a/src/models/searchservice/response/FieldValueDirectAnswer.ts b/src/models/searchservice/response/FieldValueDirectAnswer.ts index 32b7a438..5b5846c7 100644 --- a/src/models/searchservice/response/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/FieldValueDirectAnswer.ts @@ -1,5 +1,6 @@ import { DirectAnswer } from './DirectAnswer'; import { DirectAnswerType } from './DirectAnswerType'; +import { BuiltInFieldType } from './BuiltInFieldType'; import { Result } from './Result'; /** @@ -7,17 +8,17 @@ import { Result } from './Result'; * * @public */ -export interface FieldValueDirectAnswer extends DirectAnswer { +export interface FieldValueDirectAnswer extends DirectAnswer { /** {@link DirectAnswerType}.FieldValue. */ type: DirectAnswerType.FieldValue, /** {@inheritDoc DirectAnswer.value} */ - value: string, + value: T, /** {@inheritDoc DirectAnswer.relatedResult} */ relatedResult: Result, /** {@inheritDoc DirectAnswer.verticalKey} */ verticalKey: string, /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: string, + fieldType: BuiltInFieldType | string, /** The name of the entity that direct answer came from. */ entityName: string, /** The field name of the direct answer. */ From 2b15de32f030dfdf20a7580fe8dd5b9e03772456 Mon Sep 17 00:00:00 2001 From: nmanu1 <88398086+nmanu1@users.noreply.github.com> Date: Mon, 15 Aug 2022 11:39:15 -0400 Subject: [PATCH 04/23] Update static filters (#204) Update the `StaticFilter` interface to only allow combinations of filters supported by the backend. After talking with Watson, only `AND`s of `OR`s (conjunctions of disjunctions), or structures that can be trivially converted to such, are accepted. To reflect this, `ConjunctionStaticFilter` and `DisjunctionStaticFilter` models were created, with the latter having limitations on which filters it can combine so a disjunction of conjunctions is not allowed. Also, I added some Jest tests for a couple more edge cases that were being missed when serializing a static filter. J=SLAP-2325 TEST=auto, manual See that the new and existing Jest tests pass. Spin up the test-site and successfully fire vertical searches with static filters defined with the new interface. --- ...core.conjunctionstaticfilter.combinator.md | 13 ++ ...ch-core.conjunctionstaticfilter.filters.md | 13 ++ ...earch-core.conjunctionstaticfilter.kind.md | 13 ++ docs/search-core.conjunctionstaticfilter.md | 22 ++ ...core.disjunctionstaticfilter.combinator.md | 13 ++ ...ch-core.disjunctionstaticfilter.filters.md | 13 ++ ...earch-core.disjunctionstaticfilter.kind.md | 13 ++ docs/search-core.disjunctionstaticfilter.md | 22 ++ ...search-core.fieldvaluestaticfilter.kind.md | 13 ++ docs/search-core.fieldvaluestaticfilter.md | 21 ++ docs/search-core.md | 3 + docs/search-core.staticfilter.md | 11 +- etc/search-core.api.md | 28 ++- package-lock.json | 4 +- package.json | 2 +- src/models/index.ts | 8 +- .../searchservice/request/StaticFilter.ts | 46 +++- src/serializers/serializeStaticFilters.ts | 25 ++- tests/infra/SearchServiceImpl.ts | 8 +- tests/serializers/serializeStaticFilters.ts | 202 +++++++++++++----- 20 files changed, 395 insertions(+), 98 deletions(-) create mode 100644 docs/search-core.conjunctionstaticfilter.combinator.md create mode 100644 docs/search-core.conjunctionstaticfilter.filters.md create mode 100644 docs/search-core.conjunctionstaticfilter.kind.md create mode 100644 docs/search-core.conjunctionstaticfilter.md create mode 100644 docs/search-core.disjunctionstaticfilter.combinator.md create mode 100644 docs/search-core.disjunctionstaticfilter.filters.md create mode 100644 docs/search-core.disjunctionstaticfilter.kind.md create mode 100644 docs/search-core.disjunctionstaticfilter.md create mode 100644 docs/search-core.fieldvaluestaticfilter.kind.md create mode 100644 docs/search-core.fieldvaluestaticfilter.md diff --git a/docs/search-core.conjunctionstaticfilter.combinator.md b/docs/search-core.conjunctionstaticfilter.combinator.md new file mode 100644 index 00000000..9ef17207 --- /dev/null +++ b/docs/search-core.conjunctionstaticfilter.combinator.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) > [combinator](./search-core.conjunctionstaticfilter.combinator.md) + +## ConjunctionStaticFilter.combinator property + +Indicates that filters should be combined with a logical AND. + +Signature: + +```typescript +combinator: FilterCombinator.AND; +``` diff --git a/docs/search-core.conjunctionstaticfilter.filters.md b/docs/search-core.conjunctionstaticfilter.filters.md new file mode 100644 index 00000000..2f615049 --- /dev/null +++ b/docs/search-core.conjunctionstaticfilter.filters.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) > [filters](./search-core.conjunctionstaticfilter.filters.md) + +## ConjunctionStaticFilter.filters property + +The filters to combine together. + +Signature: + +```typescript +filters: StaticFilter[]; +``` diff --git a/docs/search-core.conjunctionstaticfilter.kind.md b/docs/search-core.conjunctionstaticfilter.kind.md new file mode 100644 index 00000000..181ffb98 --- /dev/null +++ b/docs/search-core.conjunctionstaticfilter.kind.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) > [kind](./search-core.conjunctionstaticfilter.kind.md) + +## ConjunctionStaticFilter.kind property + +The kind of static filter. + +Signature: + +```typescript +kind: 'conjunction'; +``` diff --git a/docs/search-core.conjunctionstaticfilter.md b/docs/search-core.conjunctionstaticfilter.md new file mode 100644 index 00000000..618daaa3 --- /dev/null +++ b/docs/search-core.conjunctionstaticfilter.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) + +## ConjunctionStaticFilter interface + +A static filter composed by combining other static filters with the logical AND operator. + +Signature: + +```typescript +export interface ConjunctionStaticFilter +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [combinator](./search-core.conjunctionstaticfilter.combinator.md) | [FilterCombinator.AND](./search-core.filtercombinator.md) | Indicates that filters should be combined with a logical AND. | +| [filters](./search-core.conjunctionstaticfilter.filters.md) | [StaticFilter](./search-core.staticfilter.md)\[\] | The filters to combine together. | +| [kind](./search-core.conjunctionstaticfilter.kind.md) | 'conjunction' | The kind of static filter. | + diff --git a/docs/search-core.disjunctionstaticfilter.combinator.md b/docs/search-core.disjunctionstaticfilter.combinator.md new file mode 100644 index 00000000..f25f03c8 --- /dev/null +++ b/docs/search-core.disjunctionstaticfilter.combinator.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) > [combinator](./search-core.disjunctionstaticfilter.combinator.md) + +## DisjunctionStaticFilter.combinator property + +Indicates that filters should be combined with a logical OR. + +Signature: + +```typescript +combinator: FilterCombinator.OR; +``` diff --git a/docs/search-core.disjunctionstaticfilter.filters.md b/docs/search-core.disjunctionstaticfilter.filters.md new file mode 100644 index 00000000..8819489f --- /dev/null +++ b/docs/search-core.disjunctionstaticfilter.filters.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) > [filters](./search-core.disjunctionstaticfilter.filters.md) + +## DisjunctionStaticFilter.filters property + +The filters to combine together. + +Signature: + +```typescript +filters: (DisjunctionStaticFilter | FieldValueStaticFilter)[]; +``` diff --git a/docs/search-core.disjunctionstaticfilter.kind.md b/docs/search-core.disjunctionstaticfilter.kind.md new file mode 100644 index 00000000..b39dfe85 --- /dev/null +++ b/docs/search-core.disjunctionstaticfilter.kind.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) > [kind](./search-core.disjunctionstaticfilter.kind.md) + +## DisjunctionStaticFilter.kind property + +The kind of static filter. + +Signature: + +```typescript +kind: 'disjunction'; +``` diff --git a/docs/search-core.disjunctionstaticfilter.md b/docs/search-core.disjunctionstaticfilter.md new file mode 100644 index 00000000..0e3451bc --- /dev/null +++ b/docs/search-core.disjunctionstaticfilter.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) + +## DisjunctionStaticFilter interface + +A static filter composed by combining filters with the logical OR operator. The combined filters can either be field value filters or other disjunction filters. + +Signature: + +```typescript +export interface DisjunctionStaticFilter +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [combinator](./search-core.disjunctionstaticfilter.combinator.md) | [FilterCombinator.OR](./search-core.filtercombinator.md) | Indicates that filters should be combined with a logical OR. | +| [filters](./search-core.disjunctionstaticfilter.filters.md) | ([DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) \| [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md))\[\] | The filters to combine together. | +| [kind](./search-core.disjunctionstaticfilter.kind.md) | 'disjunction' | The kind of static filter. | + diff --git a/docs/search-core.fieldvaluestaticfilter.kind.md b/docs/search-core.fieldvaluestaticfilter.kind.md new file mode 100644 index 00000000..2650e070 --- /dev/null +++ b/docs/search-core.fieldvaluestaticfilter.kind.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md) > [kind](./search-core.fieldvaluestaticfilter.kind.md) + +## FieldValueStaticFilter.kind property + +The kind of static filter. + +Signature: + +```typescript +kind: 'fieldValue'; +``` diff --git a/docs/search-core.fieldvaluestaticfilter.md b/docs/search-core.fieldvaluestaticfilter.md new file mode 100644 index 00000000..66f1fe4a --- /dev/null +++ b/docs/search-core.fieldvaluestaticfilter.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md) + +## FieldValueStaticFilter interface + +A [FieldValueFilter](./search-core.fieldvaluefilter.md) with the kind of filter specified to discriminate between static filter types. + +Signature: + +```typescript +export interface FieldValueStaticFilter extends FieldValueFilter +``` +Extends: [FieldValueFilter](./search-core.fieldvaluefilter.md) + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [kind](./search-core.fieldvaluestaticfilter.kind.md) | 'fieldValue' | The kind of static filter. | + diff --git a/docs/search-core.md b/docs/search-core.md index 0c117f68..a91c1e81 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -53,7 +53,9 @@ | [BaseAnswersConfig](./search-core.baseanswersconfig.md) | | | [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). | | [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. | +| [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) | A static filter composed by combining other static filters with the logical AND operator. | | [DirectAnswer](./search-core.directanswer.md) | A direct answer to a search. | +| [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) | A static filter composed by combining filters with the logical OR operator. The combined filters can either be field value filters or other disjunction filters. | | [DisplayableFacet](./search-core.displayablefacet.md) | A [Facet](./search-core.facet.md) which contains extra fields meant to be displayed to the end user. | | [DisplayableFacetOption](./search-core.displayablefacetoption.md) | A [FacetOption](./search-core.facetoption.md) with extra data meant to be displayed to the end user. | | [Endpoints](./search-core.endpoints.md) | Overrides for the URLs which are used when making requests to the Search API. | @@ -63,6 +65,7 @@ | [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | A direct answer which was found within a document. | | [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. | | [FieldValueFilter](./search-core.fieldvaluefilter.md) | Represents a filter which compares values to a single field. | +| [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md) | A [FieldValueFilter](./search-core.fieldvaluefilter.md) with the kind of filter specified to discriminate between static filter types. | | [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. | | [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. | | [HighlightedValue](./search-core.highlightedvalue.md) | A field value and its substring matches as emphasized by the Search API. | diff --git a/docs/search-core.staticfilter.md b/docs/search-core.staticfilter.md index 4372db20..757a6a6d 100644 --- a/docs/search-core.staticfilter.md +++ b/docs/search-core.staticfilter.md @@ -9,14 +9,7 @@ Represents a static filter that will be used to refine results. Signature: ```typescript -export declare type StaticFilter = { - kind: 'fieldValue'; - value: FieldValueFilter; -} | { - kind: 'combination'; - combinator: FilterCombinator; - children: StaticFilter[]; -}; +export declare type StaticFilter = FieldValueStaticFilter | DisjunctionStaticFilter | ConjunctionStaticFilter; ``` -References: [FieldValueFilter](./search-core.fieldvaluefilter.md), [FilterCombinator](./search-core.filtercombinator.md), [StaticFilter](./search-core.staticfilter.md) +References: [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md), [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md), [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) diff --git a/etc/search-core.api.md b/etc/search-core.api.md index b6c1b135..518ef13c 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -105,6 +105,13 @@ export interface ClientSDKHeaderValues { ANSWERS_CORE?: never; } +// @public +export interface ConjunctionStaticFilter { + combinator: FilterCombinator.AND; + filters: StaticFilter[]; + kind: 'conjunction'; +} + // @public export type Context = any; @@ -129,6 +136,13 @@ export enum Direction { Descending = "DESC" } +// @public +export interface DisjunctionStaticFilter { + combinator: FilterCombinator.OR; + filters: (DisjunctionStaticFilter | FieldValueStaticFilter)[]; + kind: 'disjunction'; +} + // @public export interface DisplayableFacet extends Facet { displayName: string; @@ -219,6 +233,11 @@ export interface FieldValueFilter { value: string | number | boolean | NearFilterValue | NumberRangeValue; } +// @public +export interface FieldValueStaticFilter extends FieldValueFilter { + kind: 'fieldValue'; +} + // @public export enum FilterCombinator { AND = "$and", @@ -504,14 +523,7 @@ export enum SpellCheckType { } // @public -export type StaticFilter = { - kind: 'fieldValue'; - value: FieldValueFilter; -} | { - kind: 'combination'; - combinator: FilterCombinator; - children: StaticFilter[]; -}; +export type StaticFilter = FieldValueStaticFilter | DisjunctionStaticFilter | ConjunctionStaticFilter; // @public export interface UniversalAutocompleteRequest extends SearchRequest { diff --git a/package-lock.json b/package-lock.json index 8e2d80fc..3ad6eeb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.201", + "version": "2.0.0-alpha.204", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "2.0.0-alpha.201", + "version": "2.0.0-alpha.204", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", diff --git a/package.json b/package.json index f12b5389..fa380b43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.201", + "version": "2.0.0-alpha.204", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js", diff --git a/src/models/index.ts b/src/models/index.ts index 8e18e9e0..444d44f4 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -33,7 +33,13 @@ export { QuestionSubmissionRequest } from './questionsubmission/QuestionSubmissi export { QuestionSubmissionResponse } from './questionsubmission/QuestionSubmissionResponse'; // Search service request models -export { StaticFilter, FilterCombinator } from './searchservice/request/StaticFilter'; +export { + StaticFilter, + FieldValueStaticFilter, + ConjunctionStaticFilter, + DisjunctionStaticFilter, + FilterCombinator +} from './searchservice/request/StaticFilter'; export { Context } from './searchservice/request/Context'; export { UniversalLimit } from './searchservice/request/UniversalLimit'; export { LatLong } from './searchservice/request/LatLong'; diff --git a/src/models/searchservice/request/StaticFilter.ts b/src/models/searchservice/request/StaticFilter.ts index 5334de29..ce4b33bc 100644 --- a/src/models/searchservice/request/StaticFilter.ts +++ b/src/models/searchservice/request/StaticFilter.ts @@ -5,9 +5,49 @@ import { FieldValueFilter } from './FieldValueFilter'; * * @public */ -export type StaticFilter = - { kind: 'fieldValue', value: FieldValueFilter } | - { kind: 'combination', combinator: FilterCombinator, children: StaticFilter[] }; +export type StaticFilter = FieldValueStaticFilter | DisjunctionStaticFilter | ConjunctionStaticFilter; + +/** + * A {@link FieldValueFilter} with the kind of filter specified + * to discriminate between static filter types. + * + * @public + */ +export interface FieldValueStaticFilter extends FieldValueFilter { + /** The kind of static filter. */ + kind: 'fieldValue' +} + +/** + * A static filter composed by combining filters with the logical OR + * operator. The combined filters can either be field value filters or + * other disjunction filters. + * + * @public + */ +export interface DisjunctionStaticFilter { + /** {@inheritDoc FieldValueStaticFilter.kind} */ + kind: 'disjunction', + /** {@inheritDoc FilterCombinator.OR} */ + combinator: FilterCombinator.OR, + /** The filters to combine together. */ + filters: (DisjunctionStaticFilter | FieldValueStaticFilter)[] +} + +/** + * A static filter composed by combining other static filters with the + * logical AND operator. + * + * @public + */ +export interface ConjunctionStaticFilter { + /** {@inheritDoc FieldValueStaticFilter.kind} */ + kind: 'conjunction', + /** {@inheritDoc FilterCombinator.AND} */ + combinator: FilterCombinator.AND, + /** {@inheritDoc DisjunctionStaticFilter.filters} */ + filters: StaticFilter[] +} /** * Indicates how child filters in a {@link StaticFilter} should be combined. diff --git a/src/serializers/serializeStaticFilters.ts b/src/serializers/serializeStaticFilters.ts index 92c30a16..1fe8da67 100644 --- a/src/serializers/serializeStaticFilters.ts +++ b/src/serializers/serializeStaticFilters.ts @@ -4,34 +4,33 @@ import { FieldValueFilter } from '../models/searchservice/request/FieldValueFilt import { ApiStaticFilters, ApiFilter } from '../models/searchservice/request/ApiStaticFilters'; export function serializeStaticFilters(filter: StaticFilter): string | undefined { - if (filter.kind === 'combination') { - const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.children); + if (filter.kind !== 'fieldValue') { + const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.filters); return shapedFilter && JSON.stringify(shapedFilter); } - return JSON.stringify(shapeFieldValueFilterForApi(filter.value)); + return JSON.stringify(shapeFieldValueFilterForApi(filter)); } function shapeCombinedFilterForApi( combinator: FilterCombinator, filters: StaticFilter[] ): ApiStaticFilters | undefined { - if (filters.length === 0) { - return undefined; - } - const shapedFilters: ApiStaticFilters[] = []; for (const filter of filters) { - if (filter.kind === 'combination') { - const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.children); + if (filter.kind !== 'fieldValue') { + const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.filters); shapedFilter && shapedFilters.push(shapedFilter); } else { - shapedFilters.push(shapeFieldValueFilterForApi(filter.value)); + shapedFilters.push(shapeFieldValueFilterForApi(filter)); } } - return shapedFilters.length === 1 - ? shapedFilters[0] - : { [combinator]: shapedFilters }; + + return shapedFilters.length === 0 + ? undefined + : shapedFilters.length === 1 + ? shapedFilters[0] + : { [combinator]: shapedFilters }; } export function shapeFieldValueFilterForApi(filter: FieldValueFilter): ApiStaticFilters { diff --git a/tests/infra/SearchServiceImpl.ts b/tests/infra/SearchServiceImpl.ts index a024aa5f..5460b3eb 100644 --- a/tests/infra/SearchServiceImpl.ts +++ b/tests/infra/SearchServiceImpl.ts @@ -276,11 +276,9 @@ describe('SearchService', () => { }], staticFilter: { kind: 'fieldValue', - value: { - fieldId: 'city', - matcher: Matcher.NotEquals, - value: 'Arlington' - } + fieldId: 'city', + matcher: Matcher.NotEquals, + value: 'Arlington' }, verticalKey: 'verticalKey' }; diff --git a/tests/serializers/serializeStaticFilters.ts b/tests/serializers/serializeStaticFilters.ts index 74f2f547..98523b2b 100644 --- a/tests/serializers/serializeStaticFilters.ts +++ b/tests/serializers/serializeStaticFilters.ts @@ -4,27 +4,63 @@ import { serializeStaticFilters } from '../../src/serializers/serializeStaticFil it('serializeStaticFilters works with multiple levels of nesting', () => { const actualSerializedFilters = serializeStaticFilters({ - kind: 'combination', - children: [ + kind: 'conjunction', + filters: [ { - kind: 'combination', - children: + kind: 'disjunction', + filters: [ { kind: 'fieldValue', - value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'APAC' } + fieldId: 'c_Region', + matcher: Matcher.Equals, + value: 'APAC' }, { - kind: 'fieldValue', - value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'EMEA' } + kind: 'disjunction', + filters: [ + { + kind: 'fieldValue', + fieldId: 'c_Region', + matcher: Matcher.Equals, + value: 'EMEA' + }, + { + kind: 'fieldValue', + fieldId: 'c_puppyPreference', + matcher: Matcher.Equals, + value: 'Frodo' + } + ], + combinator: FilterCombinator.OR } ], combinator: FilterCombinator.OR }, { kind: 'fieldValue', - value: { fieldId: 'builtin.entityType', matcher: Matcher.Equals, value: 'Publication' } + fieldId: 'builtin.entityType', + matcher: Matcher.Equals, + value: 'Publication' }, + { + kind: 'conjunction', + filters: [ + { + kind: 'fieldValue', + fieldId: 'c_puppyPreference', + matcher: Matcher.Equals, + value: 'Marty' + }, + { + kind: 'fieldValue', + fieldId: 'c_employeeDepartment', + matcher: Matcher.Equals, + value: 'Technology' + }, + ], + combinator: FilterCombinator.AND + } ], combinator: FilterCombinator.AND }); @@ -34,26 +70,41 @@ it('serializeStaticFilters works with multiple levels of nesting', () => { { $or: [ { c_Region: { $eq: 'APAC' } }, - { c_Region: { $eq: 'EMEA' } } + { + $or: [ + { c_Region: { $eq: 'EMEA' } }, + { c_puppyPreference: { $eq: 'Frodo' } } + ] + } + ] + }, + { 'builtin.entityType': { $eq: 'Publication' } }, + { + $and: [ + { c_puppyPreference: { $eq: 'Marty' } }, + { c_employeeDepartment: { $eq: 'Technology' } } ] }, - { 'builtin.entityType': { $eq: 'Publication' } } ] }; expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with a simple combined filter', () => { +it('serializeStaticFilters works with a DisjunctionStaticFilter', () => { const actualSerializedFilters = serializeStaticFilters({ - kind: 'combination', - children: [ + kind: 'disjunction', + filters: [ { kind: 'fieldValue', - value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'APAC' } + fieldId: 'c_Region', + matcher: Matcher.Equals, + value: 'APAC' }, { kind: 'fieldValue', - value: { fieldId: 'c_Region', matcher: Matcher.Equals, value: 'EMEA' } + fieldId: 'c_Region', + matcher: Matcher.Equals, + value: 'EMEA' } ], combinator: FilterCombinator.OR @@ -68,31 +119,56 @@ it('serializeStaticFilters works with a simple combined filter', () => { expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with only a FieldValueFilter', () => { +it('serializeStaticFilters works with a ConjunctionStaticFilter', () => { + const actualSerializedFilters = serializeStaticFilters({ + kind: 'conjunction', + filters: [ + { + kind: 'fieldValue', + fieldId: 'c_Region', + matcher: Matcher.Equals, + value: 'APAC' + }, + { + kind: 'fieldValue', + fieldId: 'builtin.entityType', + matcher: Matcher.Equals, + value: 'Publication' + } + ], + combinator: FilterCombinator.AND + }); + + const expectedSerializedFilters = { + $and: [ + { c_Region: { $eq: 'APAC' } }, + { 'builtin.entityType': { $eq: 'Publication' } } + ] + }; + expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); +}); + +it('serializeStaticFilters works with a FieldValueStaticFilter', () => { const actualSerializedFilters = serializeStaticFilters({ kind: 'fieldValue', - value: { - fieldId: 'c_Region', - matcher: Matcher.Equals, - value: 'APAC' - } + fieldId: 'c_Region', + matcher: Matcher.Equals, + value: 'APAC' }); const expectedSerializedFilters = { c_Region: { $eq: 'APAC' } }; expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with a $near FieldValueFilter', () => { +it('serializeStaticFilters works with a $near FieldValueStaticFilter', () => { const actualSerializedFilters = serializeStaticFilters({ kind: 'fieldValue', + fieldId: 'builtin.location', + matcher: Matcher.Near, value: { - fieldId: 'builtin.location', - matcher: Matcher.Near, - value: { - lat: 1, - lng: 2, - radius: 3 - } + lat: 1, + lng: 2, + radius: 3 } }); @@ -108,17 +184,15 @@ it('serializeStaticFilters works with a $near FieldValueFilter', () => { expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with a $between FieldValueFilter', () => { +it('serializeStaticFilters works with a $between FieldValueStaticFilter', () => { const actualSerializedFilters = serializeStaticFilters( { kind: 'fieldValue', + fieldId: 'price', + matcher: Matcher.Between, value: { - fieldId: 'price', - matcher: Matcher.Between, - value: { - start: { matcher: Matcher.GreaterThan, value: 0 }, - end: { matcher: Matcher.LessThan, value: 10 } - } + start: { matcher: Matcher.GreaterThan, value: 0 }, + end: { matcher: Matcher.LessThan, value: 10 } } } ); @@ -129,16 +203,14 @@ it('serializeStaticFilters works with a $between FieldValueFilter', () => { expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with only lower limit defined for a $between FieldValueFilter', () => { +it('serializeStaticFilters works with only lower limit defined for a $between FieldValueStaticFilter', () => { const actualSerializedFilters = serializeStaticFilters( { kind: 'fieldValue', + fieldId: 'price', + matcher: Matcher.Between, value: { - fieldId: 'price', - matcher: Matcher.Between, - value: { - start: { matcher: Matcher.GreaterThan, value: 0 } - } + start: { matcher: Matcher.GreaterThan, value: 0 } } } ); @@ -148,16 +220,14 @@ it('serializeStaticFilters works with only lower limit defined for a $between Fi expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with only upper limit defined for a $between FieldValueFilter', () => { +it('serializeStaticFilters works with only upper limit defined for a $between FieldValueStaticFilter', () => { const actualSerializedFilters = serializeStaticFilters( { kind: 'fieldValue', + fieldId: 'price', + matcher: Matcher.Between, value: { - fieldId: 'price', - matcher: Matcher.Between, - value: { - end: { matcher: Matcher.LessThan, value: 10 } - } + end: { matcher: Matcher.LessThan, value: 10 } } } ); @@ -169,16 +239,18 @@ it('serializeStaticFilters works with only upper limit defined for a $between Fi it('serializeStaticFilters works with a nested filter with single or no children', () => { const actualSerializedFilters = serializeStaticFilters({ - kind: 'combination', - children: [ + kind: 'conjunction', + filters: [ { - kind: 'combination', - children: [], + kind: 'disjunction', + filters: [], combinator: FilterCombinator.OR }, { kind: 'fieldValue', - value: { fieldId: 'builtin.entityType', matcher: Matcher.Equals, value: 'Publication' } + fieldId: 'builtin.entityType', + matcher: Matcher.Equals, + value: 'Publication' }, ], combinator: FilterCombinator.AND @@ -190,12 +262,30 @@ it('serializeStaticFilters works with a nested filter with single or no children expect(actualSerializedFilters).toEqual(JSON.stringify(expectedSerializedFilters)); }); -it('serializeStaticFilters works with a simple combined filter with no children', () => { +it('serializeStaticFilters works with a DisjunctionStaticFilter with no children', () => { const actualSerializedFilters = serializeStaticFilters({ - kind: 'combination', - children: [], + kind: 'disjunction', + filters: [], combinator: FilterCombinator.OR }); expect(actualSerializedFilters).toBeUndefined(); }); + +it('serializeStaticFilters works with a nested ConjunctionStaticFilter with no children', () => { + const actualSerializedFilters = serializeStaticFilters({ + kind: 'conjunction', + filters: [{ + kind: 'conjunction', + filters: [], + combinator: FilterCombinator.AND + }, { + kind: 'disjunction', + filters: [], + combinator: FilterCombinator.OR + }], + combinator: FilterCombinator.AND + }); + + expect(actualSerializedFilters).toBeUndefined(); +}); From 6d666ebeb5404bee75d1d39d3642f948cc31be64 Mon Sep 17 00:00:00 2001 From: Yen Truong <36055303+yen-tt@users.noreply.github.com> Date: Mon, 15 Aug 2022 12:10:40 -0400 Subject: [PATCH 05/23] Custom fieldType for field value DA and builtin fieldType for feature snippet DA (#202) update direct answer's `fieldtype` to be: `fieldType: EnumOrLiteral | 'unknown'`. This would support enum or literal string form of the KNOWN built in types and mark all the non built-in types as 'unknown'. Also renamed `FieldValueDirectAnswer` to `BaseFieldValueDirectAnswer`. The new `FieldValueDirectAnswer` will be a union type of all built-in interfaces (e.g AddressFieldValueDA) and `CustomFieldValueDirectAnswer` Move all direct answer related interfaces into its own folder `/directanswer` since there will be a decent amount for field value and potentially feature snippet ones in the future. uncommented `phone` and `multi_line_text` in built-in types enum so the jest tests for createDirectAnswer for field value and feature snippet pass Confirmed with product that FeaturedSnippetDirectAnswer can only have two field types: multi_line_text and rich_text. Updated interface to reflect this. J=SLAP-2329 TEST=auto added a new test for creating custom field value direct answer add a new test to check for an error thrown if a feature snippet DA have a fieldType other than multi_line_text or rich_text --- ....basefieldvaluedirectanswer.entityname.md} | 4 +- ...asefieldvaluedirectanswer.fieldapiname.md} | 4 +- ...e.basefieldvaluedirectanswer.fieldname.md} | 4 +- .../search-core.basefieldvaluedirectanswer.md | 25 +++++++++++ ...h-core.basefieldvaluedirectanswer.type.md} | 4 +- ...h-core.basefieldvaluedirectanswer.value.md | 13 ++++++ docs/search-core.builtinfieldtype.md | 4 +- docs/search-core.directanswer.fieldtype.md | 2 +- docs/search-core.directanswer.md | 4 +- docs/search-core.directanswer.value.md | 4 +- docs/search-core.enumorliteral.md | 13 ++++++ ...e.featuredsnippetdirectanswer.fieldtype.md | 2 +- ...search-core.featuredsnippetdirectanswer.md | 7 +-- ...aturedsnippetdirectanswer.relatedresult.md | 13 ------ ...h-core.featuredsnippetdirectanswer.type.md | 2 +- ...-core.featuredsnippetdirectanswer.value.md | 18 -------- ...featuredsnippetdirectanswer.verticalkey.md | 13 ------ ...h-core.fieldvaluedirectanswer.fieldtype.md | 13 ------ docs/search-core.fieldvaluedirectanswer.md | 21 ++------- ...re.fieldvaluedirectanswer.relatedresult.md | 13 ------ ...earch-core.fieldvaluedirectanswer.value.md | 18 -------- ...core.fieldvaluedirectanswer.verticalkey.md | 13 ------ docs/search-core.md | 5 ++- docs/search-core.snippet.matchedsubstrings.md | 2 +- docs/search-core.snippet.md | 2 +- ...unknownfieldvaluedirectanswer.fieldtype.md | 13 ++++++ ...arch-core.unknownfieldvaluedirectanswer.md | 21 +++++++++ etc/search-core.api.md | 41 ++++++++++------- package.json | 2 +- src/models/index.ts | 15 ++++--- src/models/searchservice/response/Snippet.ts | 2 +- .../response/UniversalSearchResponse.ts | 4 +- .../response/VerticalSearchResponse.ts | 6 +-- .../BaseFieldValueDirectAnswer.ts} | 14 ++---- .../{ => directanswer}/BuiltInFieldType.ts | 8 ++-- .../{ => directanswer}/DirectAnswer.ts | 10 +++-- .../{ => directanswer}/DirectAnswerType.ts | 0 .../FeaturedSnippetDirectAnswer.ts | 15 ++----- .../directanswer/FieldValueDirectAnswer.ts | 9 ++++ .../UnknownFieldValueDirectAnswer.ts | 11 +++++ src/models/utils/EnumOrLiteral.ts | 7 +++ .../searchservice/createDirectAnswer.ts | 15 ++++--- .../searchservice/createDirectAnswer.ts | 44 ++++++++++++++++++- 43 files changed, 254 insertions(+), 206 deletions(-) rename docs/{search-core.fieldvaluedirectanswer.entityname.md => search-core.basefieldvaluedirectanswer.entityname.md} (54%) rename docs/{search-core.fieldvaluedirectanswer.fieldapiname.md => search-core.basefieldvaluedirectanswer.fieldapiname.md} (53%) rename docs/{search-core.fieldvaluedirectanswer.fieldname.md => search-core.basefieldvaluedirectanswer.fieldname.md} (53%) create mode 100644 docs/search-core.basefieldvaluedirectanswer.md rename docs/{search-core.fieldvaluedirectanswer.type.md => search-core.basefieldvaluedirectanswer.type.md} (60%) create mode 100644 docs/search-core.basefieldvaluedirectanswer.value.md create mode 100644 docs/search-core.enumorliteral.md delete mode 100644 docs/search-core.featuredsnippetdirectanswer.relatedresult.md delete mode 100644 docs/search-core.featuredsnippetdirectanswer.value.md delete mode 100644 docs/search-core.featuredsnippetdirectanswer.verticalkey.md delete mode 100644 docs/search-core.fieldvaluedirectanswer.fieldtype.md delete mode 100644 docs/search-core.fieldvaluedirectanswer.relatedresult.md delete mode 100644 docs/search-core.fieldvaluedirectanswer.value.md delete mode 100644 docs/search-core.fieldvaluedirectanswer.verticalkey.md create mode 100644 docs/search-core.unknownfieldvaluedirectanswer.fieldtype.md create mode 100644 docs/search-core.unknownfieldvaluedirectanswer.md rename src/models/searchservice/response/{FieldValueDirectAnswer.ts => directanswer/BaseFieldValueDirectAnswer.ts} (54%) rename src/models/searchservice/response/{ => directanswer}/BuiltInFieldType.ts (80%) rename src/models/searchservice/response/{ => directanswer}/DirectAnswer.ts (60%) rename src/models/searchservice/response/{ => directanswer}/DirectAnswerType.ts (100%) rename src/models/searchservice/response/{ => directanswer}/FeaturedSnippetDirectAnswer.ts (56%) create mode 100644 src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/UnknownFieldValueDirectAnswer.ts create mode 100644 src/models/utils/EnumOrLiteral.ts diff --git a/docs/search-core.fieldvaluedirectanswer.entityname.md b/docs/search-core.basefieldvaluedirectanswer.entityname.md similarity index 54% rename from docs/search-core.fieldvaluedirectanswer.entityname.md rename to docs/search-core.basefieldvaluedirectanswer.entityname.md index 7cd22617..940dbe03 100644 --- a/docs/search-core.fieldvaluedirectanswer.entityname.md +++ b/docs/search-core.basefieldvaluedirectanswer.entityname.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [entityName](./search-core.fieldvaluedirectanswer.entityname.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [entityName](./search-core.basefieldvaluedirectanswer.entityname.md) -## FieldValueDirectAnswer.entityName property +## BaseFieldValueDirectAnswer.entityName property The name of the entity that direct answer came from. diff --git a/docs/search-core.fieldvaluedirectanswer.fieldapiname.md b/docs/search-core.basefieldvaluedirectanswer.fieldapiname.md similarity index 53% rename from docs/search-core.fieldvaluedirectanswer.fieldapiname.md rename to docs/search-core.basefieldvaluedirectanswer.fieldapiname.md index f6827355..572606ec 100644 --- a/docs/search-core.fieldvaluedirectanswer.fieldapiname.md +++ b/docs/search-core.basefieldvaluedirectanswer.fieldapiname.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [fieldApiName](./search-core.fieldvaluedirectanswer.fieldapiname.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [fieldApiName](./search-core.basefieldvaluedirectanswer.fieldapiname.md) -## FieldValueDirectAnswer.fieldApiName property +## BaseFieldValueDirectAnswer.fieldApiName property The field api name of the direct answer. diff --git a/docs/search-core.fieldvaluedirectanswer.fieldname.md b/docs/search-core.basefieldvaluedirectanswer.fieldname.md similarity index 53% rename from docs/search-core.fieldvaluedirectanswer.fieldname.md rename to docs/search-core.basefieldvaluedirectanswer.fieldname.md index fd8b6cff..c796d903 100644 --- a/docs/search-core.fieldvaluedirectanswer.fieldname.md +++ b/docs/search-core.basefieldvaluedirectanswer.fieldname.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [fieldName](./search-core.fieldvaluedirectanswer.fieldname.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [fieldName](./search-core.basefieldvaluedirectanswer.fieldname.md) -## FieldValueDirectAnswer.fieldName property +## BaseFieldValueDirectAnswer.fieldName property The field name of the direct answer. diff --git a/docs/search-core.basefieldvaluedirectanswer.md b/docs/search-core.basefieldvaluedirectanswer.md new file mode 100644 index 00000000..df8b20d3 --- /dev/null +++ b/docs/search-core.basefieldvaluedirectanswer.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) + +## BaseFieldValueDirectAnswer interface + +A direct answer where the answer came from a field from the knowledge graph. + +Signature: + +```typescript +export interface BaseFieldValueDirectAnswer extends DirectAnswer +``` +Extends: [DirectAnswer](./search-core.directanswer.md)<T> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [entityName](./search-core.basefieldvaluedirectanswer.entityname.md) | string | The name of the entity that direct answer came from. | +| [fieldApiName](./search-core.basefieldvaluedirectanswer.fieldapiname.md) | string | The field api name of the direct answer. | +| [fieldName](./search-core.basefieldvaluedirectanswer.fieldname.md) | string | The field name of the direct answer. | +| [type](./search-core.basefieldvaluedirectanswer.type.md) | [DirectAnswerType.FieldValue](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FieldValue. | +| [value](./search-core.basefieldvaluedirectanswer.value.md) | T | The result of the direct answer. | + diff --git a/docs/search-core.fieldvaluedirectanswer.type.md b/docs/search-core.basefieldvaluedirectanswer.type.md similarity index 60% rename from docs/search-core.fieldvaluedirectanswer.type.md rename to docs/search-core.basefieldvaluedirectanswer.type.md index 83b42814..7417b8a1 100644 --- a/docs/search-core.fieldvaluedirectanswer.type.md +++ b/docs/search-core.basefieldvaluedirectanswer.type.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [type](./search-core.fieldvaluedirectanswer.type.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [type](./search-core.basefieldvaluedirectanswer.type.md) -## FieldValueDirectAnswer.type property +## BaseFieldValueDirectAnswer.type property [DirectAnswerType](./search-core.directanswertype.md).FieldValue. diff --git a/docs/search-core.basefieldvaluedirectanswer.value.md b/docs/search-core.basefieldvaluedirectanswer.value.md new file mode 100644 index 00000000..bd68420e --- /dev/null +++ b/docs/search-core.basefieldvaluedirectanswer.value.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [value](./search-core.basefieldvaluedirectanswer.value.md) + +## BaseFieldValueDirectAnswer.value property + +The result of the direct answer. + +Signature: + +```typescript +value: T; +``` diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index 85a39da5..e6a1f6d2 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -16,5 +16,7 @@ export declare enum BuiltInFieldType | Member | Value | Description | | --- | --- | --- | -| Address | "address" | | +| MultiLineText | "multi_line_text" | | +| Phone | "phone" | | +| RichText | "rich_text" | | diff --git a/docs/search-core.directanswer.fieldtype.md b/docs/search-core.directanswer.fieldtype.md index 837d6826..03a13438 100644 --- a/docs/search-core.directanswer.fieldtype.md +++ b/docs/search-core.directanswer.fieldtype.md @@ -9,5 +9,5 @@ The field type of the direct answer. Signature: ```typescript -fieldType: BuiltInFieldType | string; +fieldType: EnumOrLiteral | 'unknown'; ``` diff --git a/docs/search-core.directanswer.md b/docs/search-core.directanswer.md index 611dabe3..f6fd8b6f 100644 --- a/docs/search-core.directanswer.md +++ b/docs/search-core.directanswer.md @@ -16,9 +16,9 @@ export interface DirectAnswer | Property | Type | Description | | --- | --- | --- | -| [fieldType](./search-core.directanswer.fieldtype.md) | [BuiltInFieldType](./search-core.builtinfieldtype.md) \| string | The field type of the direct answer. | +| [fieldType](./search-core.directanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType](./search-core.builtinfieldtype.md)> \| 'unknown' | The field type of the direct answer. | | [relatedResult](./search-core.directanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. | | [type](./search-core.directanswer.type.md) | [DirectAnswerType](./search-core.directanswertype.md) | The [DirectAnswerType](./search-core.directanswertype.md). | -| [value?](./search-core.directanswer.value.md) | T | (Optional) The result of the direct answer. | +| [value?](./search-core.directanswer.value.md) | T | (Optional) The value of the direct answer. | | [verticalKey](./search-core.directanswer.verticalkey.md) | string | The vertical key of the direct answer. | diff --git a/docs/search-core.directanswer.value.md b/docs/search-core.directanswer.value.md index 39ea22d4..77aa935a 100644 --- a/docs/search-core.directanswer.value.md +++ b/docs/search-core.directanswer.value.md @@ -4,7 +4,7 @@ ## DirectAnswer.value property -The result of the direct answer. +The value of the direct answer. Signature: @@ -14,5 +14,5 @@ value?: T; ## Remarks -A value will not be present if the [DirectAnswer.fieldType](./search-core.directanswer.fieldtype.md) is 'rich\_text'. +A value will not be present if the [DirectAnswer.type](./search-core.directanswer.type.md) is 'FEATURED\_SNIPPET' and [DirectAnswer.fieldType](./search-core.directanswer.fieldtype.md) is 'rich\_text'. diff --git a/docs/search-core.enumorliteral.md b/docs/search-core.enumorliteral.md new file mode 100644 index 00000000..7dc80b4c --- /dev/null +++ b/docs/search-core.enumorliteral.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [EnumOrLiteral](./search-core.enumorliteral.md) + +## EnumOrLiteral type + +Produces a union type from the enum passed as a generic which consists of the enum values and the string literals of the enum. + +Signature: + +```typescript +export declare type EnumOrLiteral = T | `${T}`; +``` diff --git a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md b/docs/search-core.featuredsnippetdirectanswer.fieldtype.md index 8f587d72..457439ec 100644 --- a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md +++ b/docs/search-core.featuredsnippetdirectanswer.fieldtype.md @@ -9,5 +9,5 @@ The field type of the direct answer. Signature: ```typescript -fieldType: BuiltInFieldType | string; +fieldType: BuiltInFieldType.MultiLineText | BuiltInFieldType.RichText; ``` diff --git a/docs/search-core.featuredsnippetdirectanswer.md b/docs/search-core.featuredsnippetdirectanswer.md index b1727936..3e69fcf3 100644 --- a/docs/search-core.featuredsnippetdirectanswer.md +++ b/docs/search-core.featuredsnippetdirectanswer.md @@ -17,10 +17,7 @@ export interface FeaturedSnippetDirectAnswer extends DirectAnswer.FeaturedSnippet. | -| [value?](./search-core.featuredsnippetdirectanswer.value.md) | T | (Optional) The result of the direct answer. | -| [verticalKey](./search-core.featuredsnippetdirectanswer.verticalkey.md) | string | The vertical key of the direct answer. | +| [type](./search-core.featuredsnippetdirectanswer.type.md) | [DirectAnswerType.FeaturedSnippet](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FeaturedSnippet | diff --git a/docs/search-core.featuredsnippetdirectanswer.relatedresult.md b/docs/search-core.featuredsnippetdirectanswer.relatedresult.md deleted file mode 100644 index b4225916..00000000 --- a/docs/search-core.featuredsnippetdirectanswer.relatedresult.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) > [relatedResult](./search-core.featuredsnippetdirectanswer.relatedresult.md) - -## FeaturedSnippetDirectAnswer.relatedResult property - -The entity associated with the direct answer. - -Signature: - -```typescript -relatedResult: Result; -``` diff --git a/docs/search-core.featuredsnippetdirectanswer.type.md b/docs/search-core.featuredsnippetdirectanswer.type.md index e5428ab2..a0d5ecd3 100644 --- a/docs/search-core.featuredsnippetdirectanswer.type.md +++ b/docs/search-core.featuredsnippetdirectanswer.type.md @@ -4,7 +4,7 @@ ## FeaturedSnippetDirectAnswer.type property -[DirectAnswerType](./search-core.directanswertype.md).FeaturedSnippet. +[DirectAnswerType](./search-core.directanswertype.md).FeaturedSnippet Signature: diff --git a/docs/search-core.featuredsnippetdirectanswer.value.md b/docs/search-core.featuredsnippetdirectanswer.value.md deleted file mode 100644 index 8ede94aa..00000000 --- a/docs/search-core.featuredsnippetdirectanswer.value.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) > [value](./search-core.featuredsnippetdirectanswer.value.md) - -## FeaturedSnippetDirectAnswer.value property - -The result of the direct answer. - -Signature: - -```typescript -value?: T; -``` - -## Remarks - -A value will not be present if the [DirectAnswer.fieldType](./search-core.directanswer.fieldtype.md) is 'rich\_text'. - diff --git a/docs/search-core.featuredsnippetdirectanswer.verticalkey.md b/docs/search-core.featuredsnippetdirectanswer.verticalkey.md deleted file mode 100644 index c7e00c0c..00000000 --- a/docs/search-core.featuredsnippetdirectanswer.verticalkey.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) > [verticalKey](./search-core.featuredsnippetdirectanswer.verticalkey.md) - -## FeaturedSnippetDirectAnswer.verticalKey property - -The vertical key of the direct answer. - -Signature: - -```typescript -verticalKey: string; -``` diff --git a/docs/search-core.fieldvaluedirectanswer.fieldtype.md b/docs/search-core.fieldvaluedirectanswer.fieldtype.md deleted file mode 100644 index 4d4165f7..00000000 --- a/docs/search-core.fieldvaluedirectanswer.fieldtype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [fieldType](./search-core.fieldvaluedirectanswer.fieldtype.md) - -## FieldValueDirectAnswer.fieldType property - -The field type of the direct answer. - -Signature: - -```typescript -fieldType: BuiltInFieldType | string; -``` diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index d8566716..e139a715 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -2,27 +2,14 @@ [Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) -## FieldValueDirectAnswer interface +## FieldValueDirectAnswer type -A direct answer where the answer came from a field from the knowledge graph. +Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces Signature: ```typescript -export interface FieldValueDirectAnswer extends DirectAnswer +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer; ``` -Extends: [DirectAnswer](./search-core.directanswer.md)<T> - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [entityName](./search-core.fieldvaluedirectanswer.entityname.md) | string | The name of the entity that direct answer came from. | -| [fieldApiName](./search-core.fieldvaluedirectanswer.fieldapiname.md) | string | The field api name of the direct answer. | -| [fieldName](./search-core.fieldvaluedirectanswer.fieldname.md) | string | The field name of the direct answer. | -| [fieldType](./search-core.fieldvaluedirectanswer.fieldtype.md) | [BuiltInFieldType](./search-core.builtinfieldtype.md) \| string | The field type of the direct answer. | -| [relatedResult](./search-core.fieldvaluedirectanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with the direct answer. | -| [type](./search-core.fieldvaluedirectanswer.type.md) | [DirectAnswerType.FieldValue](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FieldValue. | -| [value](./search-core.fieldvaluedirectanswer.value.md) | T | The result of the direct answer. | -| [verticalKey](./search-core.fieldvaluedirectanswer.verticalkey.md) | string | The vertical key of the direct answer. | +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md) diff --git a/docs/search-core.fieldvaluedirectanswer.relatedresult.md b/docs/search-core.fieldvaluedirectanswer.relatedresult.md deleted file mode 100644 index fe294b19..00000000 --- a/docs/search-core.fieldvaluedirectanswer.relatedresult.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [relatedResult](./search-core.fieldvaluedirectanswer.relatedresult.md) - -## FieldValueDirectAnswer.relatedResult property - -The entity associated with the direct answer. - -Signature: - -```typescript -relatedResult: Result; -``` diff --git a/docs/search-core.fieldvaluedirectanswer.value.md b/docs/search-core.fieldvaluedirectanswer.value.md deleted file mode 100644 index 7ea836d8..00000000 --- a/docs/search-core.fieldvaluedirectanswer.value.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [value](./search-core.fieldvaluedirectanswer.value.md) - -## FieldValueDirectAnswer.value property - -The result of the direct answer. - -Signature: - -```typescript -value: T; -``` - -## Remarks - -A value will not be present if the [DirectAnswer.fieldType](./search-core.directanswer.fieldtype.md) is 'rich\_text'. - diff --git a/docs/search-core.fieldvaluedirectanswer.verticalkey.md b/docs/search-core.fieldvaluedirectanswer.verticalkey.md deleted file mode 100644 index 5f9197cc..00000000 --- a/docs/search-core.fieldvaluedirectanswer.verticalkey.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [verticalKey](./search-core.fieldvaluedirectanswer.verticalkey.md) - -## FieldValueDirectAnswer.verticalKey property - -The vertical key of the direct answer. - -Signature: - -```typescript -verticalKey: string; -``` diff --git a/docs/search-core.md b/docs/search-core.md index a91c1e81..b6151471 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -51,6 +51,7 @@ | [AutocompleteResult](./search-core.autocompleteresult.md) | An autocomplete suggestion. | | [AutocompleteService](./search-core.autocompleteservice.md) | A service for autocomplete requests. | | [BaseAnswersConfig](./search-core.baseanswersconfig.md) | | +| [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. | | [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). | | [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. | | [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) | A static filter composed by combining other static filters with the logical AND operator. | @@ -63,7 +64,6 @@ | [FacetOption](./search-core.facetoption.md) | A filter associated with the facet. | | [FailedVertical](./search-core.failedvertical.md) | Error information from when a vertical fails to return results. | | [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | A direct answer which was found within a document. | -| [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. | | [FieldValueFilter](./search-core.fieldvaluefilter.md) | Represents a filter which compares values to a single field. | | [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md) | A [FieldValueFilter](./search-core.fieldvaluefilter.md) with the kind of filter specified to discriminate between static filter types. | | [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. | @@ -93,6 +93,7 @@ | [UniversalLimit](./search-core.universallimit.md) | The maximum limit of results per vertical. Each limit can be set from 1-50, inclusive. | | [UniversalSearchRequest](./search-core.universalsearchrequest.md) | Options which can be specified for a universal search. | | [UniversalSearchResponse](./search-core.universalsearchresponse.md) | A representation of a response from a universal search. | +| [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) with a field type outside of [BuiltInFieldType](./search-core.builtinfieldtype.md). | | [UpperNumberRangeLimit](./search-core.uppernumberrangelimit.md) | The end limit of [NumberRangeValue](./search-core.numberrangevalue.md). | | [VerticalAutocompleteRequest](./search-core.verticalautocompleterequest.md) | Options for a vertial autocomplete request. | | [VerticalResults](./search-core.verticalresults.md) | Represents results from a search vertical. | @@ -112,6 +113,8 @@ | --- | --- | | [AnswersConfig](./search-core.answersconfig.md) | | | [Context](./search-core.context.md) | Used to trigger Search [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). | +| [EnumOrLiteral](./search-core.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. | +| [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces | | [HighlightedFields](./search-core.highlightedfields.md) | A mapping of fields to the values emphasized by the Search API. | | [SearchConfig](./search-core.searchconfig.md) | The main configuration options for [SearchCore](./search-core.searchcore.md). For a full description of the options, see [BaseSearchConfig](./search-core.basesearchconfig.md). The config requires either an apiKey or a token. | | [StaticFilter](./search-core.staticfilter.md) | Represents a static filter that will be used to refine results. | diff --git a/docs/search-core.snippet.matchedsubstrings.md b/docs/search-core.snippet.matchedsubstrings.md index 7a3945f9..983a7f15 100644 --- a/docs/search-core.snippet.matchedsubstrings.md +++ b/docs/search-core.snippet.matchedsubstrings.md @@ -4,7 +4,7 @@ ## Snippet.matchedSubstrings property -The locations in the document text of the [FeaturedSnippetDirectAnswer.value](./search-core.featuredsnippetdirectanswer.value.md) +The locations in the document text of the [DirectAnswer.value](./search-core.directanswer.value.md) Signature: diff --git a/docs/search-core.snippet.md b/docs/search-core.snippet.md index 50692ffc..35d1cf84 100644 --- a/docs/search-core.snippet.md +++ b/docs/search-core.snippet.md @@ -16,6 +16,6 @@ export interface Snippet | Property | Type | Description | | --- | --- | --- | -| [matchedSubstrings](./search-core.snippet.matchedsubstrings.md) | { offset: number; length: number; }\[\] | The locations in the document text of the [FeaturedSnippetDirectAnswer.value](./search-core.featuredsnippetdirectanswer.value.md) | +| [matchedSubstrings](./search-core.snippet.matchedsubstrings.md) | { offset: number; length: number; }\[\] | The locations in the document text of the [DirectAnswer.value](./search-core.directanswer.value.md) | | [value](./search-core.snippet.value.md) | string | The snippet's body of text | diff --git a/docs/search-core.unknownfieldvaluedirectanswer.fieldtype.md b/docs/search-core.unknownfieldvaluedirectanswer.fieldtype.md new file mode 100644 index 00000000..291ac4f3 --- /dev/null +++ b/docs/search-core.unknownfieldvaluedirectanswer.fieldtype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md) > [fieldType](./search-core.unknownfieldvaluedirectanswer.fieldtype.md) + +## UnknownFieldValueDirectAnswer.fieldType property + +The field type of the direct answer. + +Signature: + +```typescript +fieldType: 'unknown'; +``` diff --git a/docs/search-core.unknownfieldvaluedirectanswer.md b/docs/search-core.unknownfieldvaluedirectanswer.md new file mode 100644 index 00000000..351f27f5 --- /dev/null +++ b/docs/search-core.unknownfieldvaluedirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md) + +## UnknownFieldValueDirectAnswer interface + +A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) with a field type outside of [BuiltInFieldType](./search-core.builtinfieldtype.md). + +Signature: + +```typescript +export interface UnknownFieldValueDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<T> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.unknownfieldvaluedirectanswer.fieldtype.md) | 'unknown' | The field type of the direct answer. | + diff --git a/etc/search-core.api.md b/etc/search-core.api.md index 518ef13c..3579d0b4 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -80,6 +80,15 @@ export interface AutocompleteService { export interface BaseAnswersConfig extends BaseSearchConfig { } +// @public +export interface BaseFieldValueDirectAnswer extends DirectAnswer { + entityName: string; + fieldApiName: string; + fieldName: string; + type: DirectAnswerType.FieldValue; + value: T; +} + // @public export interface BaseSearchConfig { // @alpha @@ -96,7 +105,11 @@ export interface BaseSearchConfig { // @public export enum BuiltInFieldType { // (undocumented) - Address = "address" + MultiLineText = "multi_line_text", + // (undocumented) + Phone = "phone", + // (undocumented) + RichText = "rich_text" } // @public @@ -117,7 +130,7 @@ export type Context = any; // @public export interface DirectAnswer { - fieldType: BuiltInFieldType | string; + fieldType: EnumOrLiteral | 'unknown'; relatedResult: Result; type: DirectAnswerType; value?: T; @@ -174,6 +187,9 @@ export interface Endpoints { verticalSearch?: string; } +// @public +export type EnumOrLiteral = T | `${T}`; + // @public export enum ErrorType { BackendError = "BACKEND_ERROR", @@ -206,25 +222,13 @@ export interface FailedVertical { // @public export interface FeaturedSnippetDirectAnswer extends DirectAnswer { - fieldType: BuiltInFieldType | string; - relatedResult: Result; + fieldType: BuiltInFieldType.MultiLineText | BuiltInFieldType.RichText; snippet: Snippet; type: DirectAnswerType.FeaturedSnippet; - value?: T; - verticalKey: string; } // @public -export interface FieldValueDirectAnswer extends DirectAnswer { - entityName: string; - fieldApiName: string; - fieldName: string; - fieldType: BuiltInFieldType | string; - relatedResult: Result; - type: DirectAnswerType.FieldValue; - value: T; - verticalKey: string; -} +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer; // @public export interface FieldValueFilter { @@ -565,6 +569,11 @@ export interface UniversalSearchResponse { verticalResults: VerticalResults[]; } +// @public +export interface UnknownFieldValueDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: 'unknown'; +} + // @public export interface UpperNumberRangeLimit { matcher: Matcher.LessThan | Matcher.LessThanOrEqualTo; diff --git a/package.json b/package.json index fa380b43..4dddf882 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ }, "scripts": { "test": "npm run lint && jest", - "lint": "eslint .", + "lint": "eslint . --max-warnings=0", "tsc-cjs": "tsc -p tsconfig.cjs.json", "tsc-esm": "tsc -p tsconfig.esm.json", "tsc": "npm run tsc-cjs && npm run tsc-esm", diff --git a/src/models/index.ts b/src/models/index.ts index 444d44f4..5b118384 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -57,10 +57,13 @@ export { Direction } from './searchservice/request/Direction'; export { AppliedQueryFilter } from './searchservice/response/AppliedQueryFilter'; export { AppliedQueryFilterType } from './searchservice/response/AppliedQueryFilterType'; export { LocationFilterDetails, LocationBoundingBox } from './searchservice/response/LocationFilterDetails'; -export { DirectAnswer } from './searchservice/response/DirectAnswer'; -export { FieldValueDirectAnswer } from './searchservice/response/FieldValueDirectAnswer'; -export { FeaturedSnippetDirectAnswer } from './searchservice/response/FeaturedSnippetDirectAnswer'; -export { DirectAnswerType } from './searchservice/response/DirectAnswerType'; +export { DirectAnswer } from './searchservice/response/directanswer/DirectAnswer'; +export { BaseFieldValueDirectAnswer } from './searchservice/response/directanswer/BaseFieldValueDirectAnswer'; +export { FieldValueDirectAnswer } from './searchservice/response/directanswer/FieldValueDirectAnswer'; +export { UnknownFieldValueDirectAnswer } from './searchservice/response/directanswer/UnknownFieldValueDirectAnswer'; +export { FeaturedSnippetDirectAnswer } from './searchservice/response/directanswer/FeaturedSnippetDirectAnswer'; +export { DirectAnswerType } from './searchservice/response/directanswer/DirectAnswerType'; +export { BuiltInFieldType } from './searchservice/response/directanswer/BuiltInFieldType'; export { DisplayableFacet, DisplayableFacetOption } from './searchservice/response/DisplayableFacet'; export { HighlightedFields } from './searchservice/response/HighlightedFields'; export { HighlightedValue } from './searchservice/response/HighlightedValue'; @@ -76,7 +79,6 @@ export { VerticalSearchResponse } from './searchservice/response/VerticalSearchR export { Snippet } from './searchservice/response/Snippet'; export { ErrorType } from './searchservice/response/ErrorType'; export { FailedVertical } from './searchservice/response/FailedVertical'; -export { BuiltInFieldType } from './searchservice/response/BuiltInFieldType'; // Search service common models export { Matcher } from './searchservice/common/Matcher'; @@ -85,3 +87,6 @@ export { LowerNumberRangeLimit, UpperNumberRangeLimit } from './searchservice/common/NumberRangeValue'; + +// Utils +export { EnumOrLiteral } from './utils/EnumOrLiteral'; diff --git a/src/models/searchservice/response/Snippet.ts b/src/models/searchservice/response/Snippet.ts index b6b47577..1f2538ff 100644 --- a/src/models/searchservice/response/Snippet.ts +++ b/src/models/searchservice/response/Snippet.ts @@ -6,6 +6,6 @@ export interface Snippet { /** The snippet's body of text */ value: string, - /** The locations in the document text of the {@link FeaturedSnippetDirectAnswer.value} */ + /** The locations in the document text of the {@link DirectAnswer.value} */ matchedSubstrings: { offset: number, length: number }[] } \ No newline at end of file diff --git a/src/models/searchservice/response/UniversalSearchResponse.ts b/src/models/searchservice/response/UniversalSearchResponse.ts index f8e2a30c..c1ddb4ec 100644 --- a/src/models/searchservice/response/UniversalSearchResponse.ts +++ b/src/models/searchservice/response/UniversalSearchResponse.ts @@ -1,7 +1,7 @@ import { VerticalResults } from './VerticalResults'; import { SearchIntent } from './SearchIntent'; -import { FeaturedSnippetDirectAnswer } from './FeaturedSnippetDirectAnswer'; -import { FieldValueDirectAnswer } from './FieldValueDirectAnswer'; +import { FeaturedSnippetDirectAnswer } from './directanswer/FeaturedSnippetDirectAnswer'; +import { FieldValueDirectAnswer } from './directanswer/FieldValueDirectAnswer'; import { SpellCheck } from './SpellCheck'; import { LocationBias } from './LocationBias'; import { QueryRulesActionsData } from './QueryRulesActionsData'; diff --git a/src/models/searchservice/response/VerticalSearchResponse.ts b/src/models/searchservice/response/VerticalSearchResponse.ts index 7a0d0a1c..54904f63 100644 --- a/src/models/searchservice/response/VerticalSearchResponse.ts +++ b/src/models/searchservice/response/VerticalSearchResponse.ts @@ -1,7 +1,7 @@ import { VerticalResults } from './VerticalResults'; import { SearchIntent } from './SearchIntent'; -import { FeaturedSnippetDirectAnswer } from './FeaturedSnippetDirectAnswer'; -import { FieldValueDirectAnswer } from './FieldValueDirectAnswer'; +import { FeaturedSnippetDirectAnswer } from './directanswer/FeaturedSnippetDirectAnswer'; +import { FieldValueDirectAnswer } from './directanswer/FieldValueDirectAnswer'; import { DisplayableFacet } from './DisplayableFacet'; import { LocationBias } from './LocationBias'; import { SpellCheck } from './SpellCheck'; @@ -35,4 +35,4 @@ export interface VerticalSearchResponse { uuid: string, /** {@inheritDoc QueryRulesActionsData} */ queryRulesActionsData?: QueryRulesActionsData[] -} \ No newline at end of file +} diff --git a/src/models/searchservice/response/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts similarity index 54% rename from src/models/searchservice/response/FieldValueDirectAnswer.ts rename to src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts index 5b5846c7..007b66a2 100644 --- a/src/models/searchservice/response/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts @@ -1,28 +1,20 @@ import { DirectAnswer } from './DirectAnswer'; import { DirectAnswerType } from './DirectAnswerType'; -import { BuiltInFieldType } from './BuiltInFieldType'; -import { Result } from './Result'; /** * A direct answer where the answer came from a field from the knowledge graph. * * @public */ -export interface FieldValueDirectAnswer extends DirectAnswer { +export interface BaseFieldValueDirectAnswer extends DirectAnswer { /** {@link DirectAnswerType}.FieldValue. */ type: DirectAnswerType.FieldValue, - /** {@inheritDoc DirectAnswer.value} */ + /** The result of the direct answer. */ value: T, - /** {@inheritDoc DirectAnswer.relatedResult} */ - relatedResult: Result, - /** {@inheritDoc DirectAnswer.verticalKey} */ - verticalKey: string, - /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: BuiltInFieldType | string, /** The name of the entity that direct answer came from. */ entityName: string, /** The field name of the direct answer. */ fieldName: string, /** The field api name of the direct answer. */ fieldApiName: string -} \ No newline at end of file +} diff --git a/src/models/searchservice/response/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts similarity index 80% rename from src/models/searchservice/response/BuiltInFieldType.ts rename to src/models/searchservice/response/directanswer/BuiltInFieldType.ts index 0741f8e2..220785db 100644 --- a/src/models/searchservice/response/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -11,11 +11,11 @@ export enum BuiltInFieldType { // Email = 'email', // InstagramHandle = 'instagram_handle', // TwitterHandle = 'twitter_handle', - // Phone = 'phone', - Address = 'address', + Phone = 'phone', + // Address = 'address', // Hours = 'hours', // Decimal = 'decimal', - // RichText = 'rich_text', + RichText = 'rich_text', // SingleLineText = 'single_line_text', - // MultiLineText = 'multi_line_text' + MultiLineText = 'multi_line_text' } \ No newline at end of file diff --git a/src/models/searchservice/response/DirectAnswer.ts b/src/models/searchservice/response/directanswer/DirectAnswer.ts similarity index 60% rename from src/models/searchservice/response/DirectAnswer.ts rename to src/models/searchservice/response/directanswer/DirectAnswer.ts index 055d743d..bac21cc8 100644 --- a/src/models/searchservice/response/DirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/DirectAnswer.ts @@ -1,6 +1,7 @@ -import { Result } from './Result'; +import { Result } from '../Result'; import { DirectAnswerType } from './DirectAnswerType'; import { BuiltInFieldType } from './BuiltInFieldType'; +import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; /** * A direct answer to a search. @@ -11,10 +12,11 @@ export interface DirectAnswer { /** The {@link DirectAnswerType}. */ type: DirectAnswerType, /** - * The result of the direct answer. + * The value of the direct answer. * * @remarks - * A value will not be present if the {@link DirectAnswer.fieldType} is 'rich_text'. + * A value will not be present if the {@link DirectAnswer."type"} is 'FEATURED_SNIPPET' + * and {@link DirectAnswer.fieldType} is 'rich_text'. */ value?: T, /** The entity associated with the direct answer. */ @@ -22,5 +24,5 @@ export interface DirectAnswer { /** The vertical key of the direct answer. */ verticalKey: string, /** The field type of the direct answer. */ - fieldType: BuiltInFieldType | string + fieldType: EnumOrLiteral | 'unknown' } \ No newline at end of file diff --git a/src/models/searchservice/response/DirectAnswerType.ts b/src/models/searchservice/response/directanswer/DirectAnswerType.ts similarity index 100% rename from src/models/searchservice/response/DirectAnswerType.ts rename to src/models/searchservice/response/directanswer/DirectAnswerType.ts diff --git a/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts similarity index 56% rename from src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts rename to src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts index 4bf565d2..cc581ce1 100644 --- a/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts @@ -1,8 +1,7 @@ import { DirectAnswer } from './DirectAnswer'; import { DirectAnswerType } from './DirectAnswerType'; +import { Snippet } from '../Snippet'; import { BuiltInFieldType } from './BuiltInFieldType'; -import { Result } from './Result'; -import { Snippet } from './Snippet'; /** * A direct answer which was found within a document. @@ -10,16 +9,10 @@ import { Snippet } from './Snippet'; * @public */ export interface FeaturedSnippetDirectAnswer extends DirectAnswer { - /** {@link DirectAnswerType}.FeaturedSnippet. */ + /** {@link DirectAnswerType}.FeaturedSnippet */ type: DirectAnswerType.FeaturedSnippet, - /** {@inheritDoc DirectAnswer.value} */ - value?: T, - /** {@inheritDoc DirectAnswer.relatedResult} */ - relatedResult: Result, - /** {@inheritDoc DirectAnswer.verticalKey} */ - verticalKey: string, /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: BuiltInFieldType | string, + fieldType: BuiltInFieldType.MultiLineText | BuiltInFieldType.RichText, /** The snippet where the direct answer was found. */ snippet: Snippet -} \ No newline at end of file +} diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts new file mode 100644 index 00000000..f9a5abfc --- /dev/null +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -0,0 +1,9 @@ +import { UnknownFieldValueDirectAnswer } from './UnknownFieldValueDirectAnswer'; + +/** + * Possible built-in and custom {@link BaseFieldValueDirectAnswer} interfaces + * + * @public + */ +//add other builtin field value direct answer interfaces here +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/UnknownFieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/UnknownFieldValueDirectAnswer.ts new file mode 100644 index 00000000..8d66ed17 --- /dev/null +++ b/src/models/searchservice/response/directanswer/UnknownFieldValueDirectAnswer.ts @@ -0,0 +1,11 @@ +import { BaseFieldValueDirectAnswer } from './BaseFieldValueDirectAnswer'; + +/** + * A {@link BaseFieldValueDirectAnswer} with a field type outside of {@link BuiltInFieldType}. + * + * @public + */ +export interface UnknownFieldValueDirectAnswer extends BaseFieldValueDirectAnswer{ + /** {@inheritDoc DirectAnswer.fieldType} */ + fieldType: 'unknown' +} diff --git a/src/models/utils/EnumOrLiteral.ts b/src/models/utils/EnumOrLiteral.ts new file mode 100644 index 00000000..b630513e --- /dev/null +++ b/src/models/utils/EnumOrLiteral.ts @@ -0,0 +1,7 @@ +/** + * Produces a union type from the enum passed as a generic which consists of the enum values + * and the string literals of the enum. + * + * @public + */ +export type EnumOrLiteral = T | `${T}`; diff --git a/src/transformers/searchservice/createDirectAnswer.ts b/src/transformers/searchservice/createDirectAnswer.ts index fdc1cc40..b964b1d5 100644 --- a/src/transformers/searchservice/createDirectAnswer.ts +++ b/src/transformers/searchservice/createDirectAnswer.ts @@ -1,7 +1,8 @@ -import { FeaturedSnippetDirectAnswer } from '../../models/searchservice/response/FeaturedSnippetDirectAnswer'; -import { FieldValueDirectAnswer } from '../../models/searchservice/response/FieldValueDirectAnswer'; -import { DirectAnswerType } from '../../models/searchservice/response/DirectAnswerType'; +import { FeaturedSnippetDirectAnswer } from '../../models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer'; +import { FieldValueDirectAnswer } from '../../models/searchservice/response/directanswer/FieldValueDirectAnswer'; +import { DirectAnswerType } from '../../models/searchservice/response/directanswer/DirectAnswerType'; import { ResultsFactory } from './ResultsFactory'; +import { BuiltInFieldType } from '../../models/searchservice/response/directanswer/BuiltInFieldType'; export function createDirectAnswer(data: any): FeaturedSnippetDirectAnswer | FieldValueDirectAnswer { const isFieldValueDirectAnswer = data?.type === DirectAnswerType.FieldValue; @@ -11,7 +12,7 @@ export function createDirectAnswer(data: any): FeaturedSnippetDirectAnswer | Fie value: data.answer.value, relatedResult: ResultsFactory.fromDirectAnswer(data.relatedItem.data), verticalKey: data.relatedItem.verticalConfigId, - fieldType: data.answer.fieldType + fieldType: Object.values(BuiltInFieldType).includes(data.answer.fieldType) ? data.answer.fieldType : 'unknown' }; if (isFieldValueDirectAnswer) { @@ -23,12 +24,16 @@ export function createDirectAnswer(data: any): FeaturedSnippetDirectAnswer | Fie fieldApiName: data.answer.fieldApiName, }; } else if (isFeaturedSnippetDirectAnswer) { + const fieldType = commonDirectAnswerData.fieldType; + if (fieldType != BuiltInFieldType.MultiLineText && fieldType != BuiltInFieldType.RichText) { + throw new Error(`Unexpected fieldType for featured snippet direct answer: ${fieldType}`); + } return { type: DirectAnswerType.FeaturedSnippet, ...commonDirectAnswerData, snippet: data.answer.snippet }; } else { - throw new Error('The Search API returned an unknown direct answer type'); + throw new Error(`The Search API returned an unknown direct answer type: ${data?.type}`); } } \ No newline at end of file diff --git a/tests/transformers/searchservice/createDirectAnswer.ts b/tests/transformers/searchservice/createDirectAnswer.ts index eb1d54fa..78b90aed 100644 --- a/tests/transformers/searchservice/createDirectAnswer.ts +++ b/tests/transformers/searchservice/createDirectAnswer.ts @@ -1,5 +1,5 @@ import { createDirectAnswer } from '../../../src/transformers/searchservice/createDirectAnswer'; -import { DirectAnswerType } from '../../../src/models/searchservice/response/DirectAnswerType'; +import { DirectAnswerType } from '../../../src/models/searchservice/response/directanswer/DirectAnswerType'; it('can create a FeaturedSnippetDirectAnswer', () => { const apiFeaturedSnippetDirectAnswer = { @@ -32,6 +32,26 @@ it('can create a FeaturedSnippetDirectAnswer', () => { expect(actualDirectAnswer).toMatchObject(expectedDirectAnswer); }); +it('can handle unexpected fieldType for a FeaturedSnippetDirectAnswer', () => { + const apiFeaturedSnippetDirectAnswer = { + type: 'FEATURED_SNIPPET', + answer: { + value: 'Honolulu. Hawaii', + fieldType: 'phone', + snippet: { + matchedSubstrings: [{ offset: 31, length: 16 }], + value: '111 222 3333' + } + }, + relatedItem: { + verticalConfigId: 'wiki_bios', + data: {} + } + }; + expect(() => createDirectAnswer(apiFeaturedSnippetDirectAnswer)) + .toThrow('Unexpected fieldType for featured snippet direct answer: phone'); +}); + it('can create a FieldValueDirectAnswer', () => { const apiFieldValueDirectAnswer = { type: 'FIELD_VALUE', @@ -59,4 +79,26 @@ it('can create a FieldValueDirectAnswer', () => { fieldType: 'phone' }; expect(actualDirectAnswer).toMatchObject(expectedDirectAnswer); +}); + +it('can create a custom FieldValueDirectAnswer', () => { + const apiFieldValueDirectAnswer = { + type: 'FIELD_VALUE', + answer: { + value: { + color: 'yellow', + os: 'android' + }, + entityName: 'Obama Phone', + fieldName: 'Phone Description', + fieldApiName: 'phoneDescription', + fieldType: 'c3350634.specialtype' + }, + relatedItem: { + verticalConfigId: 'phone', + data: {} + } + }; + const actualDirectAnswer = createDirectAnswer(apiFieldValueDirectAnswer); + expect(actualDirectAnswer).toMatchObject(expect.objectContaining({ fieldType: 'unknown' })); }); \ No newline at end of file From a3306d8ad7a57647212a26af6c011583406f9dad Mon Sep 17 00:00:00 2001 From: Tom Meyer Date: Mon, 15 Aug 2022 15:38:51 -0400 Subject: [PATCH 06/23] Add `TextValueDirectAnswer` interface. (#206) This PR creates the `TextValueDirectAnswer` interface, which describes a direct answer sourced from a string (or string list) field in the Knowledge Graph. J=SLAP-2315 TEST=manual I made a few code changes locally which are not included in this PR. These changes allowed me to generate a switch statement on `fieldType`. I added cases for `single_line_text` and `multi_line_text`. These cases were hit as expected when getting direct answers for string and string list fields. In these switch statements, I saw the IDE correctly inferring that the DA was a `TextValueDirectAnswer`. --- docs/search-core.builtinfieldtype.md | 1 + etc/search-core.api.md | 4 +++- .../response/directanswer/BuiltInFieldType.ts | 2 +- .../response/directanswer/StringValueDirectAnswer.ts | 12 ++++++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index e6a1f6d2..70b5881e 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -19,4 +19,5 @@ export declare enum BuiltInFieldType | MultiLineText | "multi_line_text" | | | Phone | "phone" | | | RichText | "rich_text" | | +| SingleLineText | "single_line_text" | | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index 3579d0b4..476d3bff 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -109,7 +109,9 @@ export enum BuiltInFieldType { // (undocumented) Phone = "phone", // (undocumented) - RichText = "rich_text" + RichText = "rich_text", + // (undocumented) + SingleLineText = "single_line_text" } // @public diff --git a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts index 220785db..b8cb2449 100644 --- a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -15,7 +15,7 @@ export enum BuiltInFieldType { // Address = 'address', // Hours = 'hours', // Decimal = 'decimal', + SingleLineText = 'single_line_text', RichText = 'rich_text', - // SingleLineText = 'single_line_text', MultiLineText = 'multi_line_text' } \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts new file mode 100644 index 00000000..55687954 --- /dev/null +++ b/src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from './BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from './BuiltInFieldType'; + +/** + * A direct answer whose source is a string or string list field in the knowledge graph. + * + * @public + */ +export interface TextValueDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} \ No newline at end of file From 3126bfab1889e04359d9054be0c104f6c5d810d0 Mon Sep 17 00:00:00 2001 From: Yen Truong <36055303+yen-tt@users.noreply.github.com> Date: Mon, 15 Aug 2022 15:46:03 -0400 Subject: [PATCH 07/23] add featured snippet DA interfaces for the builtin fieldType (#207) - add `MultiLineTextFeaturedSnippetDirectAnswer` and `RichTextFeaturedSnippetDirectAnswer` for the two types that fieldType of featured snippet direct answer can be. - `multi_line_text` for feature snippet DA have non optional `value` field of type string - `rich_text` for feature snippet DA does not have `value` field so that is omitted in the interface - the old `FeaturedSnippetDirectAnswer` is now the base interface `BaseFeaturedSnippetDirectAnswer` that the specific interfaces extend from. The new `FeaturedSnippetDirectAnswer` is the union type. J=SLAP-2330 TEST=auto&manual oshi confirmed the structure of multi_line_text and rich_text through examples listed in the [comments under this item](https://yexttest.atlassian.net/browse/SLAP-2317) where rich_text does NOT provide `value` field and `multi_line_text` does. tested locally that: - 'value' field is not present in IDE for the switch case 'richtext' Screen Shot 2022-08-15 at 1 19 51 PM - 'value' field is present, of type string, and NOT optional in IDE for the switch case 'multi_line_text' Screen Shot 2022-08-15 at 1 21 57 PM --- ...sefeaturedsnippetdirectanswer.fieldtype.md | 13 +++++++ ...ch-core.basefeaturedsnippetdirectanswer.md | 23 +++++++++++ ...asefeaturedsnippetdirectanswer.snippet.md} | 4 +- ...re.basefeaturedsnippetdirectanswer.type.md | 13 +++++++ .../search-core.basefieldvaluedirectanswer.md | 2 +- ...ch-core.basefieldvaluedirectanswer.type.md | 2 +- ...e.featuredsnippetdirectanswer.fieldtype.md | 13 ------- ...search-core.featuredsnippetdirectanswer.md | 16 ++------ ...h-core.featuredsnippetdirectanswer.type.md | 13 ------- docs/search-core.fieldvaluedirectanswer.md | 2 +- docs/search-core.md | 7 +++- ...xtfeaturedsnippetdirectanswer.fieldtype.md | 13 +++++++ ...ultilinetextfeaturedsnippetdirectanswer.md | 22 +++++++++++ ...netextfeaturedsnippetdirectanswer.value.md | 13 +++++++ ...xtfeaturedsnippetdirectanswer.fieldtype.md | 13 +++++++ ...ore.richtextfeaturedsnippetdirectanswer.md | 21 ++++++++++ etc/search-core.api.md | 24 +++++++++--- src/models/index.ts | 15 ++++++-- .../BaseFieldValueDirectAnswer.ts | 2 +- .../response/directanswer/BuiltInFieldType.ts | 1 + .../response/directanswer/DirectAnswer.ts | 2 +- .../FeaturedSnippetDirectAnswer.ts | 38 +++++++++++++++++-- .../directanswer/FieldValueDirectAnswer.ts | 2 +- 23 files changed, 215 insertions(+), 59 deletions(-) create mode 100644 docs/search-core.basefeaturedsnippetdirectanswer.fieldtype.md create mode 100644 docs/search-core.basefeaturedsnippetdirectanswer.md rename docs/{search-core.featuredsnippetdirectanswer.snippet.md => search-core.basefeaturedsnippetdirectanswer.snippet.md} (52%) create mode 100644 docs/search-core.basefeaturedsnippetdirectanswer.type.md delete mode 100644 docs/search-core.featuredsnippetdirectanswer.fieldtype.md delete mode 100644 docs/search-core.featuredsnippetdirectanswer.type.md create mode 100644 docs/search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md create mode 100644 docs/search-core.multilinetextfeaturedsnippetdirectanswer.md create mode 100644 docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md create mode 100644 docs/search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md create mode 100644 docs/search-core.richtextfeaturedsnippetdirectanswer.md diff --git a/docs/search-core.basefeaturedsnippetdirectanswer.fieldtype.md b/docs/search-core.basefeaturedsnippetdirectanswer.fieldtype.md new file mode 100644 index 00000000..c3599a4c --- /dev/null +++ b/docs/search-core.basefeaturedsnippetdirectanswer.fieldtype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) > [fieldType](./search-core.basefeaturedsnippetdirectanswer.fieldtype.md) + +## BaseFeaturedSnippetDirectAnswer.fieldType property + +The field type of the direct answer. + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.basefeaturedsnippetdirectanswer.md b/docs/search-core.basefeaturedsnippetdirectanswer.md new file mode 100644 index 00000000..a9e8fa56 --- /dev/null +++ b/docs/search-core.basefeaturedsnippetdirectanswer.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) + +## BaseFeaturedSnippetDirectAnswer interface + +A direct answer which was found within a document. + +Signature: + +```typescript +export interface BaseFeaturedSnippetDirectAnswer extends DirectAnswer +``` +Extends: [DirectAnswer](./search-core.directanswer.md)<T> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.basefeaturedsnippetdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.MultiLineText](./search-core.builtinfieldtype.md) \| [BuiltInFieldType.RichText](./search-core.builtinfieldtype.md)> | The field type of the direct answer. | +| [snippet](./search-core.basefeaturedsnippetdirectanswer.snippet.md) | [Snippet](./search-core.snippet.md) | The snippet where the direct answer was found. | +| [type](./search-core.basefeaturedsnippetdirectanswer.type.md) | [DirectAnswerType.FeaturedSnippet](./search-core.directanswertype.md) | Indicates that the DirectAnswer is a [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md). | + diff --git a/docs/search-core.featuredsnippetdirectanswer.snippet.md b/docs/search-core.basefeaturedsnippetdirectanswer.snippet.md similarity index 52% rename from docs/search-core.featuredsnippetdirectanswer.snippet.md rename to docs/search-core.basefeaturedsnippetdirectanswer.snippet.md index b85ac80f..459f16c4 100644 --- a/docs/search-core.featuredsnippetdirectanswer.snippet.md +++ b/docs/search-core.basefeaturedsnippetdirectanswer.snippet.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) > [snippet](./search-core.featuredsnippetdirectanswer.snippet.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) > [snippet](./search-core.basefeaturedsnippetdirectanswer.snippet.md) -## FeaturedSnippetDirectAnswer.snippet property +## BaseFeaturedSnippetDirectAnswer.snippet property The snippet where the direct answer was found. diff --git a/docs/search-core.basefeaturedsnippetdirectanswer.type.md b/docs/search-core.basefeaturedsnippetdirectanswer.type.md new file mode 100644 index 00000000..973b5e0d --- /dev/null +++ b/docs/search-core.basefeaturedsnippetdirectanswer.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) > [type](./search-core.basefeaturedsnippetdirectanswer.type.md) + +## BaseFeaturedSnippetDirectAnswer.type property + +Indicates that the DirectAnswer is a [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md). + +Signature: + +```typescript +type: DirectAnswerType.FeaturedSnippet; +``` diff --git a/docs/search-core.basefieldvaluedirectanswer.md b/docs/search-core.basefieldvaluedirectanswer.md index df8b20d3..9a5f2bc7 100644 --- a/docs/search-core.basefieldvaluedirectanswer.md +++ b/docs/search-core.basefieldvaluedirectanswer.md @@ -20,6 +20,6 @@ export interface BaseFieldValueDirectAnswer extends DirectAnswer | [entityName](./search-core.basefieldvaluedirectanswer.entityname.md) | string | The name of the entity that direct answer came from. | | [fieldApiName](./search-core.basefieldvaluedirectanswer.fieldapiname.md) | string | The field api name of the direct answer. | | [fieldName](./search-core.basefieldvaluedirectanswer.fieldname.md) | string | The field name of the direct answer. | -| [type](./search-core.basefieldvaluedirectanswer.type.md) | [DirectAnswerType.FieldValue](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FieldValue. | +| [type](./search-core.basefieldvaluedirectanswer.type.md) | [DirectAnswerType.FieldValue](./search-core.directanswertype.md) | Indicates that the DirectAnswer is a [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md). | | [value](./search-core.basefieldvaluedirectanswer.value.md) | T | The result of the direct answer. | diff --git a/docs/search-core.basefieldvaluedirectanswer.type.md b/docs/search-core.basefieldvaluedirectanswer.type.md index 7417b8a1..e5083a6c 100644 --- a/docs/search-core.basefieldvaluedirectanswer.type.md +++ b/docs/search-core.basefieldvaluedirectanswer.type.md @@ -4,7 +4,7 @@ ## BaseFieldValueDirectAnswer.type property -[DirectAnswerType](./search-core.directanswertype.md).FieldValue. +Indicates that the DirectAnswer is a [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md). Signature: diff --git a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md b/docs/search-core.featuredsnippetdirectanswer.fieldtype.md deleted file mode 100644 index 457439ec..00000000 --- a/docs/search-core.featuredsnippetdirectanswer.fieldtype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) > [fieldType](./search-core.featuredsnippetdirectanswer.fieldtype.md) - -## FeaturedSnippetDirectAnswer.fieldType property - -The field type of the direct answer. - -Signature: - -```typescript -fieldType: BuiltInFieldType.MultiLineText | BuiltInFieldType.RichText; -``` diff --git a/docs/search-core.featuredsnippetdirectanswer.md b/docs/search-core.featuredsnippetdirectanswer.md index 3e69fcf3..e09c2ad9 100644 --- a/docs/search-core.featuredsnippetdirectanswer.md +++ b/docs/search-core.featuredsnippetdirectanswer.md @@ -2,22 +2,14 @@ [Home](./index.md) > [@yext/search-core](./search-core.md) > [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) -## FeaturedSnippetDirectAnswer interface +## FeaturedSnippetDirectAnswer type -A direct answer which was found within a document. +All possible built-in [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) interfaces. Signature: ```typescript -export interface FeaturedSnippetDirectAnswer extends DirectAnswer +export declare type FeaturedSnippetDirectAnswer = MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; ``` -Extends: [DirectAnswer](./search-core.directanswer.md)<T> - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fieldType](./search-core.featuredsnippetdirectanswer.fieldtype.md) | [BuiltInFieldType.MultiLineText](./search-core.builtinfieldtype.md) \| [BuiltInFieldType.RichText](./search-core.builtinfieldtype.md) | The field type of the direct answer. | -| [snippet](./search-core.featuredsnippetdirectanswer.snippet.md) | [Snippet](./search-core.snippet.md) | The snippet where the direct answer was found. | -| [type](./search-core.featuredsnippetdirectanswer.type.md) | [DirectAnswerType.FeaturedSnippet](./search-core.directanswertype.md) | [DirectAnswerType](./search-core.directanswertype.md).FeaturedSnippet | +References: [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md), [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) diff --git a/docs/search-core.featuredsnippetdirectanswer.type.md b/docs/search-core.featuredsnippetdirectanswer.type.md deleted file mode 100644 index a0d5ecd3..00000000 --- a/docs/search-core.featuredsnippetdirectanswer.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) > [type](./search-core.featuredsnippetdirectanswer.type.md) - -## FeaturedSnippetDirectAnswer.type property - -[DirectAnswerType](./search-core.directanswertype.md).FeaturedSnippet - -Signature: - -```typescript -type: DirectAnswerType.FeaturedSnippet; -``` diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index e139a715..efed1aea 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -4,7 +4,7 @@ ## FieldValueDirectAnswer type -Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces +Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces. Signature: diff --git a/docs/search-core.md b/docs/search-core.md index b6151471..02139104 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -51,6 +51,7 @@ | [AutocompleteResult](./search-core.autocompleteresult.md) | An autocomplete suggestion. | | [AutocompleteService](./search-core.autocompleteservice.md) | A service for autocomplete requests. | | [BaseAnswersConfig](./search-core.baseanswersconfig.md) | | +| [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) | A direct answer which was found within a document. | | [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. | | [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). | | [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. | @@ -63,7 +64,6 @@ | [Facet](./search-core.facet.md) | Represents dynamic filter options for the Search API. | | [FacetOption](./search-core.facetoption.md) | A filter associated with the facet. | | [FailedVertical](./search-core.failedvertical.md) | Error information from when a vertical fails to return results. | -| [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | A direct answer which was found within a document. | | [FieldValueFilter](./search-core.fieldvaluefilter.md) | Represents a filter which compares values to a single field. | | [FieldValueStaticFilter](./search-core.fieldvaluestaticfilter.md) | A [FieldValueFilter](./search-core.fieldvaluefilter.md) with the kind of filter specified to discriminate between static filter types. | | [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. | @@ -74,6 +74,7 @@ | [LocationBoundingBox](./search-core.locationboundingbox.md) | Location boundaries for a filter with "Place" for its [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md). (e.g. boundary for a locality or region specific location filter) | | [LocationFilterDetails](./search-core.locationfilterdetails.md) | Additional details relevant to the filter with "PLACE" for its [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md). | | [LowerNumberRangeLimit](./search-core.lowernumberrangelimit.md) | The start limit of [NumberRangeValue](./search-core.numberrangevalue.md). | +| [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'multi\_line\_text' field type. | | [NearFilterValue](./search-core.nearfiltervalue.md) | A filter value for a filter with a $near [Matcher](./search-core.matcher.md). | | [NumberRangeValue](./search-core.numberrangevalue.md) | A filter value for a filter with a $between [Matcher](./search-core.matcher.md). | | [QueryRulesActionsData](./search-core.queryrulesactionsdata.md) | Data returned from the Search query rules system. | @@ -81,6 +82,7 @@ | [QuestionSubmissionResponse](./search-core.questionsubmissionresponse.md) | A representation of a question submission response. | | [QuestionSubmissionService](./search-core.questionsubmissionservice.md) | Submits a custom question to the Search API. | | [Result](./search-core.result.md) | An individual search result. | +| [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'rich\_text' field type. "value" field is omitted for featured snippet direct answer of this field type. | | [SearchConfigWithApiKey](./search-core.searchconfigwithapikey.md) | Configuration options for [SearchCore](./search-core.searchcore.md), which includes the options from [BaseSearchConfig](./search-core.basesearchconfig.md), but requires apiKey. | | [SearchConfigWithToken](./search-core.searchconfigwithtoken.md) | Configuration options for [SearchCore](./search-core.searchcore.md), which includes the options from [BaseSearchConfig](./search-core.basesearchconfig.md), but requires token. | | [SearchParameterField](./search-core.searchparameterfield.md) | Indicates which entity field to perform the autocomplete request on. | @@ -114,7 +116,8 @@ | [AnswersConfig](./search-core.answersconfig.md) | | | [Context](./search-core.context.md) | Used to trigger Search [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). | | [EnumOrLiteral](./search-core.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. | -| [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces | +| [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | All possible built-in [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) interfaces. | +| [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) | Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interfaces. | | [HighlightedFields](./search-core.highlightedfields.md) | A mapping of fields to the values emphasized by the Search API. | | [SearchConfig](./search-core.searchconfig.md) | The main configuration options for [SearchCore](./search-core.searchcore.md). For a full description of the options, see [BaseSearchConfig](./search-core.basesearchconfig.md). The config requires either an apiKey or a token. | | [StaticFilter](./search-core.staticfilter.md) | Represents a static filter that will be used to refine results. | diff --git a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md new file mode 100644 index 00000000..4ccad829 --- /dev/null +++ b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) > [fieldType](./search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md) + +## MultiLineTextFeaturedSnippetDirectAnswer.fieldType property + +The field type of the direct answer. + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.md b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.md new file mode 100644 index 00000000..9311570a --- /dev/null +++ b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) + +## MultiLineTextFeaturedSnippetDirectAnswer interface + +A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'multi\_line\_text' field type. + +Signature: + +```typescript +export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer +``` +Extends: [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.MultiLineText](./search-core.builtinfieldtype.md)> | The field type of the direct answer. | +| [value](./search-core.multilinetextfeaturedsnippetdirectanswer.value.md) | string | The value of the direct answer. | + diff --git a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md new file mode 100644 index 00000000..d42be387 --- /dev/null +++ b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) > [value](./search-core.multilinetextfeaturedsnippetdirectanswer.value.md) + +## MultiLineTextFeaturedSnippetDirectAnswer.value property + +The value of the direct answer. + +Signature: + +```typescript +value: string; +``` diff --git a/docs/search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md b/docs/search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md new file mode 100644 index 00000000..8dcbeb3d --- /dev/null +++ b/docs/search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) > [fieldType](./search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md) + +## RichTextFeaturedSnippetDirectAnswer.fieldType property + +The field type of the direct answer. + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.richtextfeaturedsnippetdirectanswer.md b/docs/search-core.richtextfeaturedsnippetdirectanswer.md new file mode 100644 index 00000000..0699a0fa --- /dev/null +++ b/docs/search-core.richtextfeaturedsnippetdirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) + +## RichTextFeaturedSnippetDirectAnswer interface + +A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'rich\_text' field type. "value" field is omitted for featured snippet direct answer of this field type. + +Signature: + +```typescript +export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> +``` +Extends: Omit<[BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md)<string>, 'value'> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.RichText](./search-core.builtinfieldtype.md)> | The field type of the direct answer. | + diff --git a/etc/search-core.api.md b/etc/search-core.api.md index 476d3bff..c98de5a4 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -80,6 +80,13 @@ export interface AutocompleteService { export interface BaseAnswersConfig extends BaseSearchConfig { } +// @public +export interface BaseFeaturedSnippetDirectAnswer extends DirectAnswer { + fieldType: EnumOrLiteral; + snippet: Snippet; + type: DirectAnswerType.FeaturedSnippet; +} + // @public export interface BaseFieldValueDirectAnswer extends DirectAnswer { entityName: string; @@ -223,11 +230,7 @@ export interface FailedVertical { } // @public -export interface FeaturedSnippetDirectAnswer extends DirectAnswer { - fieldType: BuiltInFieldType.MultiLineText | BuiltInFieldType.RichText; - snippet: Snippet; - type: DirectAnswerType.FeaturedSnippet; -} +export type FeaturedSnippetDirectAnswer = MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; // @public export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer; @@ -341,6 +344,12 @@ export enum Matcher { NotEquals = "!$eq" } +// @public +export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { + fieldType: EnumOrLiteral; + value: string; +} + // @public export interface NearFilterValue { lat: number; @@ -416,6 +425,11 @@ export interface Result> { source: Source; } +// @public +export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> { + fieldType: EnumOrLiteral; +} + // @public export const SandboxEndpoints: Required; diff --git a/src/models/index.ts b/src/models/index.ts index 5b118384..c19d32b4 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -57,13 +57,22 @@ export { Direction } from './searchservice/request/Direction'; export { AppliedQueryFilter } from './searchservice/response/AppliedQueryFilter'; export { AppliedQueryFilterType } from './searchservice/response/AppliedQueryFilterType'; export { LocationFilterDetails, LocationBoundingBox } from './searchservice/response/LocationFilterDetails'; + export { DirectAnswer } from './searchservice/response/directanswer/DirectAnswer'; +export { DirectAnswerType } from './searchservice/response/directanswer/DirectAnswerType'; +export { BuiltInFieldType } from './searchservice/response/directanswer/BuiltInFieldType'; + export { BaseFieldValueDirectAnswer } from './searchservice/response/directanswer/BaseFieldValueDirectAnswer'; export { FieldValueDirectAnswer } from './searchservice/response/directanswer/FieldValueDirectAnswer'; export { UnknownFieldValueDirectAnswer } from './searchservice/response/directanswer/UnknownFieldValueDirectAnswer'; -export { FeaturedSnippetDirectAnswer } from './searchservice/response/directanswer/FeaturedSnippetDirectAnswer'; -export { DirectAnswerType } from './searchservice/response/directanswer/DirectAnswerType'; -export { BuiltInFieldType } from './searchservice/response/directanswer/BuiltInFieldType'; + +export { + BaseFeaturedSnippetDirectAnswer, + FeaturedSnippetDirectAnswer, + RichTextFeaturedSnippetDirectAnswer, + MultiLineTextFeaturedSnippetDirectAnswer +} from './searchservice/response/directanswer/FeaturedSnippetDirectAnswer'; + export { DisplayableFacet, DisplayableFacetOption } from './searchservice/response/DisplayableFacet'; export { HighlightedFields } from './searchservice/response/HighlightedFields'; export { HighlightedValue } from './searchservice/response/HighlightedValue'; diff --git a/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts index 007b66a2..7bca684b 100644 --- a/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts @@ -7,7 +7,7 @@ import { DirectAnswerType } from './DirectAnswerType'; * @public */ export interface BaseFieldValueDirectAnswer extends DirectAnswer { - /** {@link DirectAnswerType}.FieldValue. */ + /** {@inheritDoc DirectAnswerType.FieldValue} */ type: DirectAnswerType.FieldValue, /** The result of the direct answer. */ value: T, diff --git a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts index b8cb2449..b080b809 100644 --- a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -1,5 +1,6 @@ /** * Possible built-in field types for {@link DirectAnswer.fieldType}. + * * @public */ export enum BuiltInFieldType { diff --git a/src/models/searchservice/response/directanswer/DirectAnswer.ts b/src/models/searchservice/response/directanswer/DirectAnswer.ts index bac21cc8..a4d38b45 100644 --- a/src/models/searchservice/response/directanswer/DirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/DirectAnswer.ts @@ -25,4 +25,4 @@ export interface DirectAnswer { verticalKey: string, /** The field type of the direct answer. */ fieldType: EnumOrLiteral | 'unknown' -} \ No newline at end of file +} diff --git a/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts index cc581ce1..23a0e882 100644 --- a/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts @@ -2,17 +2,49 @@ import { DirectAnswer } from './DirectAnswer'; import { DirectAnswerType } from './DirectAnswerType'; import { Snippet } from '../Snippet'; import { BuiltInFieldType } from './BuiltInFieldType'; +import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; /** * A direct answer which was found within a document. * * @public */ -export interface FeaturedSnippetDirectAnswer extends DirectAnswer { - /** {@link DirectAnswerType}.FeaturedSnippet */ +export interface BaseFeaturedSnippetDirectAnswer extends DirectAnswer { + /** {@inheritDoc DirectAnswerType.FeaturedSnippet} */ type: DirectAnswerType.FeaturedSnippet, /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: BuiltInFieldType.MultiLineText | BuiltInFieldType.RichText, + fieldType: EnumOrLiteral, /** The snippet where the direct answer was found. */ snippet: Snippet } + +/** + * A {@link BaseFeaturedSnippetDirectAnswer} with 'multi_line_text' field type. + * + * @public + */ +export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { + /** The value of the direct answer. */ + value: string, + /** {@inheritDoc DirectAnswer.fieldType} */ + fieldType: EnumOrLiteral +} + +/** + * A {@link BaseFeaturedSnippetDirectAnswer} with 'rich_text' field type. + * "value" field is omitted for featured snippet direct answer of this field type. + * + * @public + */ +export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> { + /** {@inheritDoc DirectAnswer.fieldType} */ + fieldType: EnumOrLiteral +} + +/** + * All possible built-in {@link BaseFeaturedSnippetDirectAnswer} interfaces. + * + * @public + */ +export type FeaturedSnippetDirectAnswer = + MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index f9a5abfc..dea868ab 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -1,7 +1,7 @@ import { UnknownFieldValueDirectAnswer } from './UnknownFieldValueDirectAnswer'; /** - * Possible built-in and custom {@link BaseFieldValueDirectAnswer} interfaces + * Possible built-in and custom {@link BaseFieldValueDirectAnswer} interfaces. * * @public */ From f4066f215934a090ce9de810a48cdb5ee78b2a60 Mon Sep 17 00:00:00 2001 From: Oliver Shi Date: Tue, 16 Aug 2022 10:17:52 -0400 Subject: [PATCH 08/23] add additional string and string[] field value direct answers (#208) Each direct answer fieldType was manually tested and experimented with. I used the test-site to double check that every single BuiltInFieldType could be switch-cased over, and also added a bunch of test direct answer queries that I used to test. J=SLAP-2317,2311,2312,2309,2314 TEST=manual,auto added switch case to the test site, and updated github workflow to make sure test site always compiles manually tried all the queries I added to the test-site and verified the value matches --- .github/workflows/run-tests.yml | 12 ++ ...ore.androidappurldirectanswer.fieldtype.md | 11 ++ docs/search-core.androidappurldirectanswer.md | 21 +++ docs/search-core.builtinfieldtype.md | 7 + ...arch-core.decimaldirectanswer.fieldtype.md | 11 ++ docs/search-core.decimaldirectanswer.md | 21 +++ ...-core.facebookurldirectanswer.fieldtype.md | 11 ++ docs/search-core.facebookurldirectanswer.md | 21 +++ docs/search-core.fieldvaluedirectanswer.md | 4 +- ...e.instagramhandledirectanswer.fieldtype.md | 11 ++ ...search-core.instagramhandledirectanswer.md | 21 +++ ...ch-core.iosappurldirectanswer.fieldtype.md | 11 ++ docs/search-core.iosappurldirectanswer.md | 21 +++ docs/search-core.md | 9 ++ ...rch-core.richtextdirectanswer.fieldtype.md | 11 ++ docs/search-core.richtextdirectanswer.md | 21 +++ .../search-core.textdirectanswer.fieldtype.md | 11 ++ docs/search-core.textdirectanswer.md | 21 +++ ...ore.twitterhandledirectanswer.fieldtype.md | 11 ++ docs/search-core.twitterhandledirectanswer.md | 21 +++ docs/search-core.urldirectanswer.fieldtype.md | 11 ++ docs/search-core.urldirectanswer.md | 21 +++ etc/search-core.api.md | 72 +++++++++- src/models/index.ts | 7 +- .../response/directanswer/BuiltInFieldType.ts | 15 +- .../FeaturedSnippetDirectAnswer.ts | 27 +--- .../directanswer/FieldValueDirectAnswer.ts | 26 +++- .../directanswer/StringValueDirectAnswer.ts | 12 -- ...ultiLineTextFeaturedSnippetDirectAnswer.ts | 15 ++ .../RichTextFeaturedSnippetDirectAnswer.ts | 14 ++ .../featuredsnippetdirectanswers/index.ts | 2 + .../AndroidAppUrlDirectAnswer.ts | 12 ++ .../DecimalDirectAnswer.ts | 12 ++ .../FacebookUrlDirectAnswer.ts | 12 ++ .../InstagramHandleDirectAnswer.ts | 12 ++ .../IosAppUrlDirectAnswer.ts | 12 ++ .../RichTextDirectAnswer.ts | 12 ++ .../TextDirectAnswer.ts | 12 ++ .../TwitterHandleDirectAnswer.ts | 12 ++ .../UnknownFieldValueDirectAnswer.ts | 2 +- .../UrlDirectAnswer.ts | 12 ++ .../fieldvaluedirectanswers/index.ts | 10 ++ test-site/index.html | 1 + test-site/src/ts/index.ts | 13 +- test-site/src/ts/initDirectAnswers.ts | 132 ++++++++++++++++++ test-site/tsconfig.json | 2 +- 46 files changed, 722 insertions(+), 56 deletions(-) create mode 100644 docs/search-core.androidappurldirectanswer.fieldtype.md create mode 100644 docs/search-core.androidappurldirectanswer.md create mode 100644 docs/search-core.decimaldirectanswer.fieldtype.md create mode 100644 docs/search-core.decimaldirectanswer.md create mode 100644 docs/search-core.facebookurldirectanswer.fieldtype.md create mode 100644 docs/search-core.facebookurldirectanswer.md create mode 100644 docs/search-core.instagramhandledirectanswer.fieldtype.md create mode 100644 docs/search-core.instagramhandledirectanswer.md create mode 100644 docs/search-core.iosappurldirectanswer.fieldtype.md create mode 100644 docs/search-core.iosappurldirectanswer.md create mode 100644 docs/search-core.richtextdirectanswer.fieldtype.md create mode 100644 docs/search-core.richtextdirectanswer.md create mode 100644 docs/search-core.textdirectanswer.fieldtype.md create mode 100644 docs/search-core.textdirectanswer.md create mode 100644 docs/search-core.twitterhandledirectanswer.fieldtype.md create mode 100644 docs/search-core.twitterhandledirectanswer.md create mode 100644 docs/search-core.urldirectanswer.fieldtype.md create mode 100644 docs/search-core.urldirectanswer.md delete mode 100644 src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextFeaturedSnippetDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextFeaturedSnippetDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AndroidAppUrlDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/DecimalDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/FacebookUrlDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/InstagramHandleDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IosAppUrlDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/RichTextDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TextDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TwitterHandleDirectAnswer.ts rename src/models/searchservice/response/directanswer/{ => fieldvaluedirectanswers}/UnknownFieldValueDirectAnswer.ts (79%) create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/UrlDirectAnswer.ts create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts create mode 100644 test-site/src/ts/initDirectAnswers.ts diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 862cb849..368ffd7f 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -10,3 +10,15 @@ jobs: uses: yext/slapshot-reusable-workflows/.github/workflows/run_tests.yml@v1 with: build_script: npm run build-ci + + compilation_check_for_test_site: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use Node.js + uses: actions/setup-node@v3 + - run: npm ci + - run: npm run build + - run: cd test-site + - run: npm i + - run: npm run build diff --git a/docs/search-core.androidappurldirectanswer.fieldtype.md b/docs/search-core.androidappurldirectanswer.fieldtype.md new file mode 100644 index 00000000..1477337b --- /dev/null +++ b/docs/search-core.androidappurldirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md) > [fieldType](./search-core.androidappurldirectanswer.fieldtype.md) + +## AndroidAppUrlDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.androidappurldirectanswer.md b/docs/search-core.androidappurldirectanswer.md new file mode 100644 index 00000000..eb2b7ef4 --- /dev/null +++ b/docs/search-core.androidappurldirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md) + +## AndroidAppUrlDirectAnswer interface + +A direct answer for an android app url field. + +Signature: + +```typescript +export interface AndroidAppUrlDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.androidappurldirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.AndroidAppURL](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index 70b5881e..1bf120b2 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -16,8 +16,15 @@ export declare enum BuiltInFieldType | Member | Value | Description | | --- | --- | --- | +| AndroidAppURL | "android_app_url" | | +| Decimal | "decimal" | | +| FacebookURL | "facebook_url" | | +| InstagramHandle | "instagram_handle" | | +| IOSAppURL | "ios_app_url" | | | MultiLineText | "multi_line_text" | | | Phone | "phone" | | | RichText | "rich_text" | | | SingleLineText | "single_line_text" | | +| TwitterHandle | "twitter_handle" | | +| URL | "url" | | diff --git a/docs/search-core.decimaldirectanswer.fieldtype.md b/docs/search-core.decimaldirectanswer.fieldtype.md new file mode 100644 index 00000000..dd1583fb --- /dev/null +++ b/docs/search-core.decimaldirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DecimalDirectAnswer](./search-core.decimaldirectanswer.md) > [fieldType](./search-core.decimaldirectanswer.fieldtype.md) + +## DecimalDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.decimaldirectanswer.md b/docs/search-core.decimaldirectanswer.md new file mode 100644 index 00000000..dd91c212 --- /dev/null +++ b/docs/search-core.decimaldirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DecimalDirectAnswer](./search-core.decimaldirectanswer.md) + +## DecimalDirectAnswer interface + +A direct answer for a decimal field, which is a number represented using a string. + +Signature: + +```typescript +export interface DecimalDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string \| string\[\]> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.decimaldirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.Decimal](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.facebookurldirectanswer.fieldtype.md b/docs/search-core.facebookurldirectanswer.fieldtype.md new file mode 100644 index 00000000..ae99e755 --- /dev/null +++ b/docs/search-core.facebookurldirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md) > [fieldType](./search-core.facebookurldirectanswer.fieldtype.md) + +## FacebookUrlDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.facebookurldirectanswer.md b/docs/search-core.facebookurldirectanswer.md new file mode 100644 index 00000000..5f087370 --- /dev/null +++ b/docs/search-core.facebookurldirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md) + +## FacebookUrlDirectAnswer interface + +A direct answer for a facebook url field. + +Signature: + +```typescript +export interface FacebookUrlDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.facebookurldirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.FacebookURL](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index efed1aea..7bea5801 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,7 +9,7 @@ Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefiel Signature: ```typescript -export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer; +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer; ``` -References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md) +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md) diff --git a/docs/search-core.instagramhandledirectanswer.fieldtype.md b/docs/search-core.instagramhandledirectanswer.fieldtype.md new file mode 100644 index 00000000..57db7932 --- /dev/null +++ b/docs/search-core.instagramhandledirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md) > [fieldType](./search-core.instagramhandledirectanswer.fieldtype.md) + +## InstagramHandleDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.instagramhandledirectanswer.md b/docs/search-core.instagramhandledirectanswer.md new file mode 100644 index 00000000..ad4c088a --- /dev/null +++ b/docs/search-core.instagramhandledirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md) + +## InstagramHandleDirectAnswer interface + +A direct answer for an instagram handle field. + +Signature: + +```typescript +export interface InstagramHandleDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.instagramhandledirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.InstagramHandle](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.iosappurldirectanswer.fieldtype.md b/docs/search-core.iosappurldirectanswer.fieldtype.md new file mode 100644 index 00000000..1d54979a --- /dev/null +++ b/docs/search-core.iosappurldirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md) > [fieldType](./search-core.iosappurldirectanswer.fieldtype.md) + +## IosAppUrlDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.iosappurldirectanswer.md b/docs/search-core.iosappurldirectanswer.md new file mode 100644 index 00000000..cc17fac5 --- /dev/null +++ b/docs/search-core.iosappurldirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md) + +## IosAppUrlDirectAnswer interface + +A direct answer for an iOS app url field. + +Signature: + +```typescript +export interface IosAppUrlDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.iosappurldirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.IOSAppURL](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.md b/docs/search-core.md index 02139104..fdaaf382 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -42,6 +42,7 @@ | Interface | Description | | --- | --- | | [AdditionalHttpHeaders](./search-core.additionalhttpheaders.md) | AdditionalHttpHeaders allows users to specify additional values for specific HTTP headers. | +| [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md) | A direct answer for an android app url field. | | [AnswersConfigWithApiKey](./search-core.answersconfigwithapikey.md) | | | [AnswersConfigWithToken](./search-core.answersconfigwithtoken.md) | | | [AnswersError](./search-core.answerserror.md) | | @@ -56,11 +57,13 @@ | [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). | | [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. | | [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) | A static filter composed by combining other static filters with the logical AND operator. | +| [DecimalDirectAnswer](./search-core.decimaldirectanswer.md) | A direct answer for a decimal field, which is a number represented using a string. | | [DirectAnswer](./search-core.directanswer.md) | A direct answer to a search. | | [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) | A static filter composed by combining filters with the logical OR operator. The combined filters can either be field value filters or other disjunction filters. | | [DisplayableFacet](./search-core.displayablefacet.md) | A [Facet](./search-core.facet.md) which contains extra fields meant to be displayed to the end user. | | [DisplayableFacetOption](./search-core.displayablefacetoption.md) | A [FacetOption](./search-core.facetoption.md) with extra data meant to be displayed to the end user. | | [Endpoints](./search-core.endpoints.md) | Overrides for the URLs which are used when making requests to the Search API. | +| [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md) | A direct answer for a facebook url field. | | [Facet](./search-core.facet.md) | Represents dynamic filter options for the Search API. | | [FacetOption](./search-core.facetoption.md) | A filter associated with the facet. | | [FailedVertical](./search-core.failedvertical.md) | Error information from when a vertical fails to return results. | @@ -69,6 +72,8 @@ | [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. | | [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. | | [HighlightedValue](./search-core.highlightedvalue.md) | A field value and its substring matches as emphasized by the Search API. | +| [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md) | A direct answer for an instagram handle field. | +| [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md) | A direct answer for an iOS app url field. | | [LatLong](./search-core.latlong.md) | The latitude and longitude of the user making the request. Used to bias the results. | | [LocationBias](./search-core.locationbias.md) | Information about the user's location. | | [LocationBoundingBox](./search-core.locationboundingbox.md) | Location boundaries for a filter with "Place" for its [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md). (e.g. boundary for a locality or region specific location filter) | @@ -82,6 +87,7 @@ | [QuestionSubmissionResponse](./search-core.questionsubmissionresponse.md) | A representation of a question submission response. | | [QuestionSubmissionService](./search-core.questionsubmissionservice.md) | Submits a custom question to the Search API. | | [Result](./search-core.result.md) | An individual search result. | +| [RichTextDirectAnswer](./search-core.richtextdirectanswer.md) | A direct answer for a rich text field. | | [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'rich\_text' field type. "value" field is omitted for featured snippet direct answer of this field type. | | [SearchConfigWithApiKey](./search-core.searchconfigwithapikey.md) | Configuration options for [SearchCore](./search-core.searchcore.md), which includes the options from [BaseSearchConfig](./search-core.basesearchconfig.md), but requires apiKey. | | [SearchConfigWithToken](./search-core.searchconfigwithtoken.md) | Configuration options for [SearchCore](./search-core.searchcore.md), which includes the options from [BaseSearchConfig](./search-core.basesearchconfig.md), but requires token. | @@ -91,12 +97,15 @@ | [Snippet](./search-core.snippet.md) | The section of text where a [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) was found. | | [SortBy](./search-core.sortby.md) | Represents a criterion that can be used to sort results. | | [SpellCheck](./search-core.spellcheck.md) | A spellcheck response from a search query. | +| [TextDirectAnswer](./search-core.textdirectanswer.md) | A direct answer whose source is a string or string list field in the knowledge graph. | +| [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md) | A direct answer for an twitter handle field. | | [UniversalAutocompleteRequest](./search-core.universalautocompleterequest.md) | Options for a universal autocomplete request. | | [UniversalLimit](./search-core.universallimit.md) | The maximum limit of results per vertical. Each limit can be set from 1-50, inclusive. | | [UniversalSearchRequest](./search-core.universalsearchrequest.md) | Options which can be specified for a universal search. | | [UniversalSearchResponse](./search-core.universalsearchresponse.md) | A representation of a response from a universal search. | | [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) with a field type outside of [BuiltInFieldType](./search-core.builtinfieldtype.md). | | [UpperNumberRangeLimit](./search-core.uppernumberrangelimit.md) | The end limit of [NumberRangeValue](./search-core.numberrangevalue.md). | +| [UrlDirectAnswer](./search-core.urldirectanswer.md) | A direct answer for a simple url field. | | [VerticalAutocompleteRequest](./search-core.verticalautocompleterequest.md) | Options for a vertial autocomplete request. | | [VerticalResults](./search-core.verticalresults.md) | Represents results from a search vertical. | | [VerticalSearchRequest](./search-core.verticalsearchrequest.md) | Options which can be specified for a vertical search. | diff --git a/docs/search-core.richtextdirectanswer.fieldtype.md b/docs/search-core.richtextdirectanswer.fieldtype.md new file mode 100644 index 00000000..2a6ab44c --- /dev/null +++ b/docs/search-core.richtextdirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextDirectAnswer](./search-core.richtextdirectanswer.md) > [fieldType](./search-core.richtextdirectanswer.fieldtype.md) + +## RichTextDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.richtextdirectanswer.md b/docs/search-core.richtextdirectanswer.md new file mode 100644 index 00000000..1460dcfb --- /dev/null +++ b/docs/search-core.richtextdirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextDirectAnswer](./search-core.richtextdirectanswer.md) + +## RichTextDirectAnswer interface + +A direct answer for a rich text field. + +Signature: + +```typescript +export interface RichTextDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string \| string\[\]> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.richtextdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.RichText](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.textdirectanswer.fieldtype.md b/docs/search-core.textdirectanswer.fieldtype.md new file mode 100644 index 00000000..ceb70d7e --- /dev/null +++ b/docs/search-core.textdirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [TextDirectAnswer](./search-core.textdirectanswer.md) > [fieldType](./search-core.textdirectanswer.fieldtype.md) + +## TextDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.textdirectanswer.md b/docs/search-core.textdirectanswer.md new file mode 100644 index 00000000..206bc73d --- /dev/null +++ b/docs/search-core.textdirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [TextDirectAnswer](./search-core.textdirectanswer.md) + +## TextDirectAnswer interface + +A direct answer whose source is a string or string list field in the knowledge graph. + +Signature: + +```typescript +export interface TextDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string \| string\[\]> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.textdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.SingleLineText](./search-core.builtinfieldtype.md) \| [BuiltInFieldType.MultiLineText](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.twitterhandledirectanswer.fieldtype.md b/docs/search-core.twitterhandledirectanswer.fieldtype.md new file mode 100644 index 00000000..6bc84554 --- /dev/null +++ b/docs/search-core.twitterhandledirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md) > [fieldType](./search-core.twitterhandledirectanswer.fieldtype.md) + +## TwitterHandleDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.twitterhandledirectanswer.md b/docs/search-core.twitterhandledirectanswer.md new file mode 100644 index 00000000..c8f1750b --- /dev/null +++ b/docs/search-core.twitterhandledirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md) + +## TwitterHandleDirectAnswer interface + +A direct answer for an twitter handle field. + +Signature: + +```typescript +export interface TwitterHandleDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.twitterhandledirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.TwitterHandle](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.urldirectanswer.fieldtype.md b/docs/search-core.urldirectanswer.fieldtype.md new file mode 100644 index 00000000..b07732c8 --- /dev/null +++ b/docs/search-core.urldirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [UrlDirectAnswer](./search-core.urldirectanswer.md) > [fieldType](./search-core.urldirectanswer.fieldtype.md) + +## UrlDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.urldirectanswer.md b/docs/search-core.urldirectanswer.md new file mode 100644 index 00000000..b2f3539f --- /dev/null +++ b/docs/search-core.urldirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [UrlDirectAnswer](./search-core.urldirectanswer.md) + +## UrlDirectAnswer interface + +A direct answer for a simple url field. + +Signature: + +```typescript +export interface UrlDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string \| string\[\]> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.urldirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.URL](./search-core.builtinfieldtype.md)> | | + diff --git a/etc/search-core.api.md b/etc/search-core.api.md index c98de5a4..58d96d52 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -9,6 +9,12 @@ export interface AdditionalHttpHeaders { 'Client-SDK'?: ClientSDKHeaderValues; } +// @public +export interface AndroidAppUrlDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public @deprecated (undocumented) export type AnswersConfig = SearchConfig; @@ -111,6 +117,16 @@ export interface BaseSearchConfig { // @public export enum BuiltInFieldType { + // (undocumented) + AndroidAppURL = "android_app_url", + // (undocumented) + Decimal = "decimal", + // (undocumented) + FacebookURL = "facebook_url", + // (undocumented) + InstagramHandle = "instagram_handle", + // (undocumented) + IOSAppURL = "ios_app_url", // (undocumented) MultiLineText = "multi_line_text", // (undocumented) @@ -118,7 +134,11 @@ export enum BuiltInFieldType { // (undocumented) RichText = "rich_text", // (undocumented) - SingleLineText = "single_line_text" + SingleLineText = "single_line_text", + // (undocumented) + TwitterHandle = "twitter_handle", + // (undocumented) + URL = "url" } // @public @@ -137,6 +157,12 @@ export interface ConjunctionStaticFilter { // @public export type Context = any; +// @public +export interface DecimalDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface DirectAnswer { fieldType: EnumOrLiteral | 'unknown'; @@ -207,6 +233,12 @@ export enum ErrorType { Timeout = "TIMEOUT" } +// @public +export interface FacebookUrlDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface Facet { fieldId: string; @@ -233,7 +265,7 @@ export interface FailedVertical { export type FeaturedSnippetDirectAnswer = MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; // @public -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer; +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer; // @public export interface FieldValueFilter { @@ -288,6 +320,18 @@ export interface HighlightedValue { value: string; } +// @public +export interface InstagramHandleDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + +// @public +export interface IosAppUrlDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface LatLong { latitude: number; @@ -425,6 +469,12 @@ export interface Result> { source: Source; } +// @public +export interface RichTextDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> { fieldType: EnumOrLiteral; @@ -545,6 +595,18 @@ export enum SpellCheckType { // @public export type StaticFilter = FieldValueStaticFilter | DisjunctionStaticFilter | ConjunctionStaticFilter; +// @public +export interface TextDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + +// @public +export interface TwitterHandleDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface UniversalAutocompleteRequest extends SearchRequest { input: string; @@ -596,6 +658,12 @@ export interface UpperNumberRangeLimit { value: number; } +// @public +export interface UrlDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface VerticalAutocompleteRequest extends SearchRequest { input: string; diff --git a/src/models/index.ts b/src/models/index.ts index c19d32b4..80dfc5d6 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -64,14 +64,13 @@ export { BuiltInFieldType } from './searchservice/response/directanswer/BuiltInF export { BaseFieldValueDirectAnswer } from './searchservice/response/directanswer/BaseFieldValueDirectAnswer'; export { FieldValueDirectAnswer } from './searchservice/response/directanswer/FieldValueDirectAnswer'; -export { UnknownFieldValueDirectAnswer } from './searchservice/response/directanswer/UnknownFieldValueDirectAnswer'; +export * from './searchservice/response/directanswer/fieldvaluedirectanswers'; export { BaseFeaturedSnippetDirectAnswer, - FeaturedSnippetDirectAnswer, - RichTextFeaturedSnippetDirectAnswer, - MultiLineTextFeaturedSnippetDirectAnswer + FeaturedSnippetDirectAnswer } from './searchservice/response/directanswer/FeaturedSnippetDirectAnswer'; +export * from './searchservice/response/directanswer/featuredsnippetdirectanswers'; export { DisplayableFacet, DisplayableFacetOption } from './searchservice/response/DisplayableFacet'; export { HighlightedFields } from './searchservice/response/HighlightedFields'; diff --git a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts index b080b809..0256a317 100644 --- a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -4,18 +4,19 @@ * @public */ export enum BuiltInFieldType { - // URL = 'url', + URL = 'url', // ComplexURL = 'complex_url', - // IOSAppURL = 'ios_app_url', - // AndroidAppURL = 'android_app_url', - // FacebookURL = 'facebook_url', + IOSAppURL = 'ios_app_url', + AndroidAppURL = 'android_app_url', + FacebookURL = 'facebook_url', // Email = 'email', - // InstagramHandle = 'instagram_handle', - // TwitterHandle = 'twitter_handle', + InstagramHandle = 'instagram_handle', + TwitterHandle = 'twitter_handle', Phone = 'phone', // Address = 'address', // Hours = 'hours', - // Decimal = 'decimal', + Decimal = 'decimal', + // Integer = 'integer', SingleLineText = 'single_line_text', RichText = 'rich_text', MultiLineText = 'multi_line_text' diff --git a/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts index 23a0e882..2322f469 100644 --- a/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts @@ -3,6 +3,10 @@ import { DirectAnswerType } from './DirectAnswerType'; import { Snippet } from '../Snippet'; import { BuiltInFieldType } from './BuiltInFieldType'; import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; +import { + MultiLineTextFeaturedSnippetDirectAnswer, + RichTextFeaturedSnippetDirectAnswer +} from './featuredsnippetdirectanswers'; /** * A direct answer which was found within a document. @@ -18,29 +22,6 @@ export interface BaseFeaturedSnippetDirectAnswer extends DirectAnsw snippet: Snippet } -/** - * A {@link BaseFeaturedSnippetDirectAnswer} with 'multi_line_text' field type. - * - * @public - */ -export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { - /** The value of the direct answer. */ - value: string, - /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: EnumOrLiteral -} - -/** - * A {@link BaseFeaturedSnippetDirectAnswer} with 'rich_text' field type. - * "value" field is omitted for featured snippet direct answer of this field type. - * - * @public - */ -export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> { - /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: EnumOrLiteral -} - /** * All possible built-in {@link BaseFeaturedSnippetDirectAnswer} interfaces. * diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index dea868ab..38f1bcf3 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -1,9 +1,29 @@ -import { UnknownFieldValueDirectAnswer } from './UnknownFieldValueDirectAnswer'; +import { + UnknownFieldValueDirectAnswer, + DecimalDirectAnswer, + InstagramHandleDirectAnswer, + IosAppUrlDirectAnswer, + AndroidAppUrlDirectAnswer, + TwitterHandleDirectAnswer, + FacebookUrlDirectAnswer, + RichTextDirectAnswer, + UrlDirectAnswer, + TextDirectAnswer +} from './fieldvaluedirectanswers'; /** * Possible built-in and custom {@link BaseFieldValueDirectAnswer} interfaces. * * @public */ -//add other builtin field value direct answer interfaces here -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer; +export type FieldValueDirectAnswer = + UnknownFieldValueDirectAnswer | + TextDirectAnswer | + UrlDirectAnswer | + RichTextDirectAnswer | + DecimalDirectAnswer | + FacebookUrlDirectAnswer | + InstagramHandleDirectAnswer | + TwitterHandleDirectAnswer | + IosAppUrlDirectAnswer | + AndroidAppUrlDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts deleted file mode 100644 index 55687954..00000000 --- a/src/models/searchservice/response/directanswer/StringValueDirectAnswer.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; -import { BaseFieldValueDirectAnswer } from './BaseFieldValueDirectAnswer'; -import { BuiltInFieldType } from './BuiltInFieldType'; - -/** - * A direct answer whose source is a string or string list field in the knowledge graph. - * - * @public - */ -export interface TextValueDirectAnswer extends BaseFieldValueDirectAnswer { - fieldType: EnumOrLiteral -} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextFeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextFeaturedSnippetDirectAnswer.ts new file mode 100644 index 00000000..ff8ffc02 --- /dev/null +++ b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextFeaturedSnippetDirectAnswer.ts @@ -0,0 +1,15 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BuiltInFieldType } from '../BuiltInFieldType'; +import { BaseFeaturedSnippetDirectAnswer } from '../FeaturedSnippetDirectAnswer'; + +/** + * A {@link BaseFeaturedSnippetDirectAnswer} with 'multi_line_text' field type. + * + * @public + */ +export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { + /** The value of the direct answer. */ + value: string, + /** {@inheritDoc DirectAnswer.fieldType} */ + fieldType: EnumOrLiteral +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextFeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextFeaturedSnippetDirectAnswer.ts new file mode 100644 index 00000000..b7cf61fc --- /dev/null +++ b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextFeaturedSnippetDirectAnswer.ts @@ -0,0 +1,14 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BuiltInFieldType } from '../BuiltInFieldType'; +import { BaseFeaturedSnippetDirectAnswer } from '../FeaturedSnippetDirectAnswer'; + +/** + * A {@link BaseFeaturedSnippetDirectAnswer} with 'rich_text' field type. + * "value" field is omitted for featured snippet direct answer of this field type. + * + * @public + */ +export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> { + /** {@inheritDoc DirectAnswer.fieldType} */ + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts new file mode 100644 index 00000000..c9601444 --- /dev/null +++ b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts @@ -0,0 +1,2 @@ +export { RichTextFeaturedSnippetDirectAnswer } from './RichTextFeaturedSnippetDirectAnswer'; +export { MultiLineTextFeaturedSnippetDirectAnswer } from './MultiLineTextFeaturedSnippetDirectAnswer'; diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AndroidAppUrlDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AndroidAppUrlDirectAnswer.ts new file mode 100644 index 00000000..e83b73a2 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AndroidAppUrlDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for an android app url field. + * + * @public + */ +export interface AndroidAppUrlDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/DecimalDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/DecimalDirectAnswer.ts new file mode 100644 index 00000000..0f9968fb --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/DecimalDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for a decimal field, which is a number represented using a string. + * + * @public + */ +export interface DecimalDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/FacebookUrlDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/FacebookUrlDirectAnswer.ts new file mode 100644 index 00000000..9a3fc7f5 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/FacebookUrlDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for a facebook url field. + * + * @public + */ +export interface FacebookUrlDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/InstagramHandleDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/InstagramHandleDirectAnswer.ts new file mode 100644 index 00000000..e39149e6 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/InstagramHandleDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for an instagram handle field. + * + * @public + */ +export interface InstagramHandleDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IosAppUrlDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IosAppUrlDirectAnswer.ts new file mode 100644 index 00000000..278c1417 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IosAppUrlDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for an iOS app url field. + * + * @public + */ +export interface IosAppUrlDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/RichTextDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/RichTextDirectAnswer.ts new file mode 100644 index 00000000..dd5e12ca --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/RichTextDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for a rich text field. + * + * @public + */ +export interface RichTextDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TextDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TextDirectAnswer.ts new file mode 100644 index 00000000..9aa5d0a0 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TextDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer whose source is a string or string list field in the knowledge graph. + * + * @public + */ +export interface TextDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TwitterHandleDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TwitterHandleDirectAnswer.ts new file mode 100644 index 00000000..131b1a7b --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/TwitterHandleDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for an twitter handle field. + * + * @public + */ +export interface TwitterHandleDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/UnknownFieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/UnknownFieldValueDirectAnswer.ts similarity index 79% rename from src/models/searchservice/response/directanswer/UnknownFieldValueDirectAnswer.ts rename to src/models/searchservice/response/directanswer/fieldvaluedirectanswers/UnknownFieldValueDirectAnswer.ts index 8d66ed17..154e8b52 100644 --- a/src/models/searchservice/response/directanswer/UnknownFieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/UnknownFieldValueDirectAnswer.ts @@ -1,4 +1,4 @@ -import { BaseFieldValueDirectAnswer } from './BaseFieldValueDirectAnswer'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; /** * A {@link BaseFieldValueDirectAnswer} with a field type outside of {@link BuiltInFieldType}. diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/UrlDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/UrlDirectAnswer.ts new file mode 100644 index 00000000..6466669a --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/UrlDirectAnswer.ts @@ -0,0 +1,12 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for a simple url field. + * + * @public + */ +export interface UrlDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts new file mode 100644 index 00000000..66ab7052 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts @@ -0,0 +1,10 @@ +export { UnknownFieldValueDirectAnswer } from './UnknownFieldValueDirectAnswer'; +export { DecimalDirectAnswer } from './DecimalDirectAnswer'; +export { InstagramHandleDirectAnswer } from './InstagramHandleDirectAnswer'; +export { IosAppUrlDirectAnswer } from './IosAppUrlDirectAnswer'; +export { AndroidAppUrlDirectAnswer } from './AndroidAppUrlDirectAnswer'; +export { TwitterHandleDirectAnswer } from './TwitterHandleDirectAnswer'; +export { FacebookUrlDirectAnswer } from './FacebookUrlDirectAnswer'; +export { RichTextDirectAnswer } from './RichTextDirectAnswer'; +export { UrlDirectAnswer } from './UrlDirectAnswer'; +export { TextDirectAnswer } from './TextDirectAnswer'; diff --git a/test-site/index.html b/test-site/index.html index 0c435a86..5bc1868c 100644 --- a/test-site/index.html +++ b/test-site/index.html @@ -6,6 +6,7 @@ + diff --git a/test-site/src/ts/index.ts b/test-site/src/ts/index.ts index 675ac3cb..b844a45f 100644 --- a/test-site/src/ts/index.ts +++ b/test-site/src/ts/index.ts @@ -1,8 +1,9 @@ -import { provideCore, SearchConfig, SearchCore } from '@yext/search-core'; +import { provideCore, SearchConfig, SearchCore, UniversalSearchRequest, UniversalSearchResponse } from '@yext/search-core'; import verticalRequest from './requests/verticalRequest'; import universalRequest from './requests/universalRequest'; import questionRequest from './requests/questionRequest'; import { univeralAutocompleteRequest, verticalAutocompleteRequest, filterSearchRequest } from './requests/autocompleteRequests'; +import initDirectAnswers from './initDirectAnswers'; const coreConfig: SearchConfig = { apiKey: '2d8c550071a64ea23e263118a2b0680b', @@ -14,10 +15,20 @@ const coreConfig: SearchConfig = { const element = document.createElement('pre'); window.onload = () => { document.body.appendChild(element); + initDirectAnswers(); }; const globalCore: SearchCore = provideCore(coreConfig); +export async function directAnswer(query: string): Promise { + loadingSpinner(); + const startTime = new Date().getTime(); + const req: UniversalSearchRequest = { query }; + const res: UniversalSearchResponse = await globalCore.universalSearch(req); + updateUI(res.directAnswer, startTime, 'Universal Direct Answer Response:'); + return res; +} + export async function universalSearch(): Promise { loadingSpinner(); const startTime = new Date().getTime(); diff --git a/test-site/src/ts/initDirectAnswers.ts b/test-site/src/ts/initDirectAnswers.ts new file mode 100644 index 00000000..e1358940 --- /dev/null +++ b/test-site/src/ts/initDirectAnswers.ts @@ -0,0 +1,132 @@ +import { BuiltInFieldType, DirectAnswerType, FeaturedSnippetDirectAnswer, FieldValueDirectAnswer } from '@yext/search-core'; +import { directAnswer } from './index'; + +/** + * The comments denote the expected {@link DirectAnswer.value} type. + */ +const FEATURED_SNIPPET_QUERIES = { + [BuiltInFieldType.MultiLineText]: [ + 'what is oliver shi’s birthday', // string + 'who is chihaya ayase' // string + ], + [BuiltInFieldType.RichText]: [ + 'how to rich text' // no value + ] +}; +const FIELD_VALUE_QUERIES = { + [BuiltInFieldType.URL]: [ + 'what is Abington\'s myurl ', // string + 'what are oliver shi\'s list of urls?' // string[] + ], + [BuiltInFieldType.SingleLineText]: [ + 'Abington Services Offered' // string[] + ], + [BuiltInFieldType.Decimal]: [ + 'oliver shi popularity', // string + 'what are oliver shi\'s favorite numbers?' // string[] + ], + [BuiltInFieldType.AndroidAppURL]: [ + 'what is oliver shi\'s android app url?' // string + ], + [BuiltInFieldType.FacebookURL]: [ + 'what is oliver shi\'s facebook url?' // string + ], + [BuiltInFieldType.IOSAppURL]: [ + 'what is oliver shi\'s ios app url?' // string + ], + [BuiltInFieldType.InstagramHandle]: [ + 'what is oliver shi\'s instagram handle?' // string + ], + [BuiltInFieldType.TwitterHandle]: [ + 'what is oliver shi\'s twitter handle?' // string + ], + [BuiltInFieldType.RichText]: [ + 'oliver shi my rich text field', // string + 'oliver shi multi line rich text' // string[] + ], +}; + +export default function initDirectAnswers() { + const selectEl = document.getElementById('directAnswers'); + if (!(selectEl instanceof HTMLSelectElement)) { + console.error('no select el found'); + return; + } + const possibleQueries = [ + ...Object.values(FEATURED_SNIPPET_QUERIES).flatMap(v => v), + ...Object.values(FIELD_VALUE_QUERIES).flatMap(v => v) + ]; + + possibleQueries.forEach(q => { + const optionEl = document.createElement('option'); + optionEl.innerText = q; + selectEl.appendChild(optionEl); + }); + + selectEl.addEventListener('change', async e => { + const val = (e.target as HTMLSelectElement).value; + const res = await directAnswer(val); + const da = res.directAnswer; + if (da.type === DirectAnswerType.FieldValue) { + ensureFieldValueSwitchability(da); + } else if (da.type === DirectAnswerType.FeaturedSnippet) { + ensureFeaturedSnippetSwitchability(da); + } + }); +} + +/** + * This function will only compile if every direct answer case can be switched over, + * otherwise `da` will have type `never`, which will cause a compile time error when + * trying to access `da.value`. + */ +function ensureFieldValueSwitchability(da: FieldValueDirectAnswer) { + switch (da.fieldType) { + case BuiltInFieldType.AndroidAppURL: + console.log(da.value); + break; + case BuiltInFieldType.Decimal: + console.log(da.value); + break; + case BuiltInFieldType.FacebookURL: + console.log(da.value); + break; + case BuiltInFieldType.IOSAppURL: + console.log(da.value); + break; + case BuiltInFieldType.InstagramHandle: + console.log(da.value); + break; + case BuiltInFieldType.MultiLineText: + console.log(da.value); + break; + case BuiltInFieldType.RichText: + console.log(da.value); + break; + case BuiltInFieldType.SingleLineText: + console.log(da.value); + break; + case BuiltInFieldType.TwitterHandle: + console.log(da.value); + break; + case BuiltInFieldType.URL: + console.log(da.value); + break; + } +} + +/** + * This function will only compile if every direct answer case can be switched over, + * otherwise `da` will have type `never`, which will cause a compile time error when + * trying to access properties like `da.value` or `da.snippet`. + */ +function ensureFeaturedSnippetSwitchability(da: FeaturedSnippetDirectAnswer) { + switch (da.fieldType) { + case BuiltInFieldType.RichText: + console.log(da.snippet); + break; + case BuiltInFieldType.MultiLineText: + console.log(da.value); + break; + } +} \ No newline at end of file diff --git a/test-site/tsconfig.json b/test-site/tsconfig.json index 14649b15..6d28410b 100644 --- a/test-site/tsconfig.json +++ b/test-site/tsconfig.json @@ -4,6 +4,6 @@ "noImplicitAny": true, "module": "commonjs", "esModuleInterop": true, - "target": "es2015", + "target": "es2019", } } \ No newline at end of file From b33f6f2948e82bdef07b5720856f04406c4dd32a Mon Sep 17 00:00:00 2001 From: Oliver Shi Date: Tue, 16 Aug 2022 11:15:56 -0400 Subject: [PATCH 09/23] add IntegerDirectAnswer (#210) I checked that fieldType: integer with a number array value should never exists (afaict) by adding all possible number fields in our test account to our "Test Entity" entity type, hitting composeAbstractSchema, and checking that type.integer was not present for any list types. When you add a custom field, if you make it a number of list of number field, the field type will be a "decimal" type not an "integer". (I am probably not using terminology in an exact manner here). J=SLAP-2314 TEST=manual tested that I can get back an integer direct answer using the "oliver shi pool count?" query --- docs/search-core.builtinfieldtype.md | 1 + docs/search-core.fieldvaluedirectanswer.md | 4 +-- ...arch-core.integerdirectanswer.fieldtype.md | 11 ++++++++ docs/search-core.integerdirectanswer.md | 25 +++++++++++++++++++ docs/search-core.md | 1 + etc/search-core.api.md | 10 +++++++- .../response/directanswer/BuiltInFieldType.ts | 2 +- .../directanswer/FieldValueDirectAnswer.ts | 6 +++-- .../IntegerDirectAnswer.ts | 16 ++++++++++++ .../fieldvaluedirectanswers/index.ts | 1 + test-site/src/ts/initDirectAnswers.ts | 6 +++++ 11 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 docs/search-core.integerdirectanswer.fieldtype.md create mode 100644 docs/search-core.integerdirectanswer.md create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IntegerDirectAnswer.ts diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index 1bf120b2..689cc075 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -20,6 +20,7 @@ export declare enum BuiltInFieldType | Decimal | "decimal" | | | FacebookURL | "facebook_url" | | | InstagramHandle | "instagram_handle" | | +| Integer | "integer" | | | IOSAppURL | "ios_app_url" | | | MultiLineText | "multi_line_text" | | | Phone | "phone" | | diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index 7bea5801..69fc2b1d 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,7 +9,7 @@ Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefiel Signature: ```typescript -export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer; +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | IntegerDirectAnswer; ``` -References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md) +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md) diff --git a/docs/search-core.integerdirectanswer.fieldtype.md b/docs/search-core.integerdirectanswer.fieldtype.md new file mode 100644 index 00000000..03d12abb --- /dev/null +++ b/docs/search-core.integerdirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [IntegerDirectAnswer](./search-core.integerdirectanswer.md) > [fieldType](./search-core.integerdirectanswer.fieldtype.md) + +## IntegerDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.integerdirectanswer.md b/docs/search-core.integerdirectanswer.md new file mode 100644 index 00000000..374cc186 --- /dev/null +++ b/docs/search-core.integerdirectanswer.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [IntegerDirectAnswer](./search-core.integerdirectanswer.md) + +## IntegerDirectAnswer interface + +A direct answer for an integer field. + +Signature: + +```typescript +export interface IntegerDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<number> + +## Remarks + +`IntegerDirectAnswer`s are only used for built in number fields. Custom number fields use [DecimalDirectAnswer](./search-core.decimaldirectanswer.md) instead. + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.integerdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.Integer](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.md b/docs/search-core.md index fdaaf382..261161a3 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -73,6 +73,7 @@ | [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. | | [HighlightedValue](./search-core.highlightedvalue.md) | A field value and its substring matches as emphasized by the Search API. | | [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md) | A direct answer for an instagram handle field. | +| [IntegerDirectAnswer](./search-core.integerdirectanswer.md) | A direct answer for an integer field. | | [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md) | A direct answer for an iOS app url field. | | [LatLong](./search-core.latlong.md) | The latitude and longitude of the user making the request. Used to bias the results. | | [LocationBias](./search-core.locationbias.md) | Information about the user's location. | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index 58d96d52..aacdaa18 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -126,6 +126,8 @@ export enum BuiltInFieldType { // (undocumented) InstagramHandle = "instagram_handle", // (undocumented) + Integer = "integer", + // (undocumented) IOSAppURL = "ios_app_url", // (undocumented) MultiLineText = "multi_line_text", @@ -265,7 +267,7 @@ export interface FailedVertical { export type FeaturedSnippetDirectAnswer = MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; // @public -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer; +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | IntegerDirectAnswer; // @public export interface FieldValueFilter { @@ -326,6 +328,12 @@ export interface InstagramHandleDirectAnswer extends BaseFieldValueDirectAnswer< fieldType: EnumOrLiteral; } +// @public +export interface IntegerDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface IosAppUrlDirectAnswer extends BaseFieldValueDirectAnswer { // (undocumented) diff --git a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts index 0256a317..14b92625 100644 --- a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -16,7 +16,7 @@ export enum BuiltInFieldType { // Address = 'address', // Hours = 'hours', Decimal = 'decimal', - // Integer = 'integer', + Integer = 'integer', SingleLineText = 'single_line_text', RichText = 'rich_text', MultiLineText = 'multi_line_text' diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index 38f1bcf3..7d252511 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -8,7 +8,8 @@ import { FacebookUrlDirectAnswer, RichTextDirectAnswer, UrlDirectAnswer, - TextDirectAnswer + TextDirectAnswer, + IntegerDirectAnswer } from './fieldvaluedirectanswers'; /** @@ -26,4 +27,5 @@ export type FieldValueDirectAnswer = InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | - AndroidAppUrlDirectAnswer; + AndroidAppUrlDirectAnswer | + IntegerDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IntegerDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IntegerDirectAnswer.ts new file mode 100644 index 00000000..96116622 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/IntegerDirectAnswer.ts @@ -0,0 +1,16 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for an integer field. + * + * @remarks + * `IntegerDirectAnswer`s are only used for built in number fields. + * Custom number fields use {@link DecimalDirectAnswer} instead. + * + * @public + */ +export interface IntegerDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts index 66ab7052..dad77731 100644 --- a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts @@ -8,3 +8,4 @@ export { FacebookUrlDirectAnswer } from './FacebookUrlDirectAnswer'; export { RichTextDirectAnswer } from './RichTextDirectAnswer'; export { UrlDirectAnswer } from './UrlDirectAnswer'; export { TextDirectAnswer } from './TextDirectAnswer'; +export { IntegerDirectAnswer } from './IntegerDirectAnswer'; diff --git a/test-site/src/ts/initDirectAnswers.ts b/test-site/src/ts/initDirectAnswers.ts index e1358940..516be2a7 100644 --- a/test-site/src/ts/initDirectAnswers.ts +++ b/test-site/src/ts/initDirectAnswers.ts @@ -44,6 +44,9 @@ const FIELD_VALUE_QUERIES = { 'oliver shi my rich text field', // string 'oliver shi multi line rich text' // string[] ], + [BuiltInFieldType.Integer]: [ + 'oliver shi outdoor pools?' // number + ] }; export default function initDirectAnswers() { @@ -112,6 +115,9 @@ function ensureFieldValueSwitchability(da: FieldValueDirectAnswer) { case BuiltInFieldType.URL: console.log(da.value); break; + case BuiltInFieldType.Integer: + console.log(da.value); + break; } } From cb048885f016fb831d96b91f392ee57ab194fac4 Mon Sep 17 00:00:00 2001 From: Oliver Shi Date: Tue, 16 Aug 2022 11:19:35 -0400 Subject: [PATCH 10/23] rename [Type]FeaturedSnippetDirectAnswer -> [Type]SnippetDirectAnswer (#212) This shortens the name and removes a little redundancy. J=NONE TEST=none --- ...search-core.featuredsnippetdirectanswer.md | 4 ++-- docs/search-core.md | 4 ++-- ...ultilinetextfeaturedsnippetdirectanswer.md | 22 ------------------- ...netextfeaturedsnippetdirectanswer.value.md | 13 ----------- ...ilinetextsnippetdirectanswer.fieldtype.md} | 4 ++-- ...h-core.multilinetextsnippetdirectanswer.md | 22 +++++++++++++++++++ ....multilinetextsnippetdirectanswer.value.md | 13 +++++++++++ ....richtextsnippetdirectanswer.fieldtype.md} | 4 ++-- ...earch-core.richtextsnippetdirectanswer.md} | 8 +++---- etc/search-core.api.md | 6 ++--- .../FeaturedSnippetDirectAnswer.ts | 6 ++--- ...ts => MultiLineTextSnippetDirectAnswer.ts} | 2 +- ...swer.ts => RichTextSnippetDirectAnswer.ts} | 2 +- .../featuredsnippetdirectanswers/index.ts | 4 ++-- 14 files changed, 57 insertions(+), 57 deletions(-) delete mode 100644 docs/search-core.multilinetextfeaturedsnippetdirectanswer.md delete mode 100644 docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md rename docs/{search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md => search-core.multilinetextsnippetdirectanswer.fieldtype.md} (51%) create mode 100644 docs/search-core.multilinetextsnippetdirectanswer.md create mode 100644 docs/search-core.multilinetextsnippetdirectanswer.value.md rename docs/{search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md => search-core.richtextsnippetdirectanswer.fieldtype.md} (52%) rename docs/{search-core.richtextfeaturedsnippetdirectanswer.md => search-core.richtextsnippetdirectanswer.md} (52%) rename src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/{MultiLineTextFeaturedSnippetDirectAnswer.ts => MultiLineTextSnippetDirectAnswer.ts} (81%) rename src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/{RichTextFeaturedSnippetDirectAnswer.ts => RichTextSnippetDirectAnswer.ts} (80%) diff --git a/docs/search-core.featuredsnippetdirectanswer.md b/docs/search-core.featuredsnippetdirectanswer.md index e09c2ad9..fb2a6e1f 100644 --- a/docs/search-core.featuredsnippetdirectanswer.md +++ b/docs/search-core.featuredsnippetdirectanswer.md @@ -9,7 +9,7 @@ All possible built-in [BaseFeaturedSnippetDirectAnswer](./search-core.basefeatur Signature: ```typescript -export declare type FeaturedSnippetDirectAnswer = MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; +export declare type FeaturedSnippetDirectAnswer = MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; ``` -References: [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md), [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) +References: [MultiLineTextSnippetDirectAnswer](./search-core.multilinetextsnippetdirectanswer.md), [RichTextSnippetDirectAnswer](./search-core.richtextsnippetdirectanswer.md) diff --git a/docs/search-core.md b/docs/search-core.md index 261161a3..fc0c2ec6 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -80,7 +80,7 @@ | [LocationBoundingBox](./search-core.locationboundingbox.md) | Location boundaries for a filter with "Place" for its [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md). (e.g. boundary for a locality or region specific location filter) | | [LocationFilterDetails](./search-core.locationfilterdetails.md) | Additional details relevant to the filter with "PLACE" for its [AppliedQueryFilterType](./search-core.appliedqueryfiltertype.md). | | [LowerNumberRangeLimit](./search-core.lowernumberrangelimit.md) | The start limit of [NumberRangeValue](./search-core.numberrangevalue.md). | -| [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'multi\_line\_text' field type. | +| [MultiLineTextSnippetDirectAnswer](./search-core.multilinetextsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'multi\_line\_text' field type. | | [NearFilterValue](./search-core.nearfiltervalue.md) | A filter value for a filter with a $near [Matcher](./search-core.matcher.md). | | [NumberRangeValue](./search-core.numberrangevalue.md) | A filter value for a filter with a $between [Matcher](./search-core.matcher.md). | | [QueryRulesActionsData](./search-core.queryrulesactionsdata.md) | Data returned from the Search query rules system. | @@ -89,7 +89,7 @@ | [QuestionSubmissionService](./search-core.questionsubmissionservice.md) | Submits a custom question to the Search API. | | [Result](./search-core.result.md) | An individual search result. | | [RichTextDirectAnswer](./search-core.richtextdirectanswer.md) | A direct answer for a rich text field. | -| [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'rich\_text' field type. "value" field is omitted for featured snippet direct answer of this field type. | +| [RichTextSnippetDirectAnswer](./search-core.richtextsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'rich\_text' field type. "value" field is omitted for featured snippet direct answer of this field type. | | [SearchConfigWithApiKey](./search-core.searchconfigwithapikey.md) | Configuration options for [SearchCore](./search-core.searchcore.md), which includes the options from [BaseSearchConfig](./search-core.basesearchconfig.md), but requires apiKey. | | [SearchConfigWithToken](./search-core.searchconfigwithtoken.md) | Configuration options for [SearchCore](./search-core.searchcore.md), which includes the options from [BaseSearchConfig](./search-core.basesearchconfig.md), but requires token. | | [SearchParameterField](./search-core.searchparameterfield.md) | Indicates which entity field to perform the autocomplete request on. | diff --git a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.md b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.md deleted file mode 100644 index 9311570a..00000000 --- a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) - -## MultiLineTextFeaturedSnippetDirectAnswer interface - -A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'multi\_line\_text' field type. - -Signature: - -```typescript -export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer -``` -Extends: [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md)<string> - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fieldType](./search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.MultiLineText](./search-core.builtinfieldtype.md)> | The field type of the direct answer. | -| [value](./search-core.multilinetextfeaturedsnippetdirectanswer.value.md) | string | The value of the direct answer. | - diff --git a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md b/docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md deleted file mode 100644 index d42be387..00000000 --- a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.value.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) > [value](./search-core.multilinetextfeaturedsnippetdirectanswer.value.md) - -## MultiLineTextFeaturedSnippetDirectAnswer.value property - -The value of the direct answer. - -Signature: - -```typescript -value: string; -``` diff --git a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md b/docs/search-core.multilinetextsnippetdirectanswer.fieldtype.md similarity index 51% rename from docs/search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md rename to docs/search-core.multilinetextsnippetdirectanswer.fieldtype.md index 4ccad829..cd86822f 100644 --- a/docs/search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md +++ b/docs/search-core.multilinetextsnippetdirectanswer.fieldtype.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextFeaturedSnippetDirectAnswer](./search-core.multilinetextfeaturedsnippetdirectanswer.md) > [fieldType](./search-core.multilinetextfeaturedsnippetdirectanswer.fieldtype.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextSnippetDirectAnswer](./search-core.multilinetextsnippetdirectanswer.md) > [fieldType](./search-core.multilinetextsnippetdirectanswer.fieldtype.md) -## MultiLineTextFeaturedSnippetDirectAnswer.fieldType property +## MultiLineTextSnippetDirectAnswer.fieldType property The field type of the direct answer. diff --git a/docs/search-core.multilinetextsnippetdirectanswer.md b/docs/search-core.multilinetextsnippetdirectanswer.md new file mode 100644 index 00000000..dbe3bc75 --- /dev/null +++ b/docs/search-core.multilinetextsnippetdirectanswer.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextSnippetDirectAnswer](./search-core.multilinetextsnippetdirectanswer.md) + +## MultiLineTextSnippetDirectAnswer interface + +A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'multi\_line\_text' field type. + +Signature: + +```typescript +export interface MultiLineTextSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer +``` +Extends: [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.multilinetextsnippetdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.MultiLineText](./search-core.builtinfieldtype.md)> | The field type of the direct answer. | +| [value](./search-core.multilinetextsnippetdirectanswer.value.md) | string | The value of the direct answer. | + diff --git a/docs/search-core.multilinetextsnippetdirectanswer.value.md b/docs/search-core.multilinetextsnippetdirectanswer.value.md new file mode 100644 index 00000000..8184b639 --- /dev/null +++ b/docs/search-core.multilinetextsnippetdirectanswer.value.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [MultiLineTextSnippetDirectAnswer](./search-core.multilinetextsnippetdirectanswer.md) > [value](./search-core.multilinetextsnippetdirectanswer.value.md) + +## MultiLineTextSnippetDirectAnswer.value property + +The value of the direct answer. + +Signature: + +```typescript +value: string; +``` diff --git a/docs/search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md b/docs/search-core.richtextsnippetdirectanswer.fieldtype.md similarity index 52% rename from docs/search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md rename to docs/search-core.richtextsnippetdirectanswer.fieldtype.md index 8dcbeb3d..42d81d8d 100644 --- a/docs/search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md +++ b/docs/search-core.richtextsnippetdirectanswer.fieldtype.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) > [fieldType](./search-core.richtextfeaturedsnippetdirectanswer.fieldtype.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextSnippetDirectAnswer](./search-core.richtextsnippetdirectanswer.md) > [fieldType](./search-core.richtextsnippetdirectanswer.fieldtype.md) -## RichTextFeaturedSnippetDirectAnswer.fieldType property +## RichTextSnippetDirectAnswer.fieldType property The field type of the direct answer. diff --git a/docs/search-core.richtextfeaturedsnippetdirectanswer.md b/docs/search-core.richtextsnippetdirectanswer.md similarity index 52% rename from docs/search-core.richtextfeaturedsnippetdirectanswer.md rename to docs/search-core.richtextsnippetdirectanswer.md index 0699a0fa..231fb466 100644 --- a/docs/search-core.richtextfeaturedsnippetdirectanswer.md +++ b/docs/search-core.richtextsnippetdirectanswer.md @@ -1,15 +1,15 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextFeaturedSnippetDirectAnswer](./search-core.richtextfeaturedsnippetdirectanswer.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [RichTextSnippetDirectAnswer](./search-core.richtextsnippetdirectanswer.md) -## RichTextFeaturedSnippetDirectAnswer interface +## RichTextSnippetDirectAnswer interface A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'rich\_text' field type. "value" field is omitted for featured snippet direct answer of this field type. Signature: ```typescript -export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> +export interface RichTextSnippetDirectAnswer extends Omit, 'value'> ``` Extends: Omit<[BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md)<string>, 'value'> @@ -17,5 +17,5 @@ export interface RichTextFeaturedSnippetDirectAnswer extends Omit<[BuiltInFieldType.RichText](./search-core.builtinfieldtype.md)> | The field type of the direct answer. | +| [fieldType](./search-core.richtextsnippetdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.RichText](./search-core.builtinfieldtype.md)> | The field type of the direct answer. | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index aacdaa18..e940fe6e 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -264,7 +264,7 @@ export interface FailedVertical { } // @public -export type FeaturedSnippetDirectAnswer = MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; +export type FeaturedSnippetDirectAnswer = MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; // @public export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | IntegerDirectAnswer; @@ -397,7 +397,7 @@ export enum Matcher { } // @public -export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { +export interface MultiLineTextSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { fieldType: EnumOrLiteral; value: string; } @@ -484,7 +484,7 @@ export interface RichTextDirectAnswer extends BaseFieldValueDirectAnswer, 'value'> { +export interface RichTextSnippetDirectAnswer extends Omit, 'value'> { fieldType: EnumOrLiteral; } diff --git a/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts index 2322f469..ec48022f 100644 --- a/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts @@ -4,8 +4,8 @@ import { Snippet } from '../Snippet'; import { BuiltInFieldType } from './BuiltInFieldType'; import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; import { - MultiLineTextFeaturedSnippetDirectAnswer, - RichTextFeaturedSnippetDirectAnswer + MultiLineTextSnippetDirectAnswer, + RichTextSnippetDirectAnswer } from './featuredsnippetdirectanswers'; /** @@ -28,4 +28,4 @@ export interface BaseFeaturedSnippetDirectAnswer extends DirectAnsw * @public */ export type FeaturedSnippetDirectAnswer = - MultiLineTextFeaturedSnippetDirectAnswer | RichTextFeaturedSnippetDirectAnswer; + MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextFeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextSnippetDirectAnswer.ts similarity index 81% rename from src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextFeaturedSnippetDirectAnswer.ts rename to src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextSnippetDirectAnswer.ts index ff8ffc02..c3c4a2e4 100644 --- a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextFeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/MultiLineTextSnippetDirectAnswer.ts @@ -7,7 +7,7 @@ import { BaseFeaturedSnippetDirectAnswer } from '../FeaturedSnippetDirectAnswer' * * @public */ -export interface MultiLineTextFeaturedSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { +export interface MultiLineTextSnippetDirectAnswer extends BaseFeaturedSnippetDirectAnswer { /** The value of the direct answer. */ value: string, /** {@inheritDoc DirectAnswer.fieldType} */ diff --git a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextFeaturedSnippetDirectAnswer.ts b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextSnippetDirectAnswer.ts similarity index 80% rename from src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextFeaturedSnippetDirectAnswer.ts rename to src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextSnippetDirectAnswer.ts index b7cf61fc..fe60225a 100644 --- a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextFeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/RichTextSnippetDirectAnswer.ts @@ -8,7 +8,7 @@ import { BaseFeaturedSnippetDirectAnswer } from '../FeaturedSnippetDirectAnswer' * * @public */ -export interface RichTextFeaturedSnippetDirectAnswer extends Omit, 'value'> { +export interface RichTextSnippetDirectAnswer extends Omit, 'value'> { /** {@inheritDoc DirectAnswer.fieldType} */ fieldType: EnumOrLiteral } diff --git a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts index c9601444..61b085e5 100644 --- a/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts +++ b/src/models/searchservice/response/directanswer/featuredsnippetdirectanswers/index.ts @@ -1,2 +1,2 @@ -export { RichTextFeaturedSnippetDirectAnswer } from './RichTextFeaturedSnippetDirectAnswer'; -export { MultiLineTextFeaturedSnippetDirectAnswer } from './MultiLineTextFeaturedSnippetDirectAnswer'; +export { RichTextSnippetDirectAnswer } from './RichTextSnippetDirectAnswer'; +export { MultiLineTextSnippetDirectAnswer } from './MultiLineTextSnippetDirectAnswer'; From b69f8e5b3f5f6fa465cb0d0bd7afacad10c23041 Mon Sep 17 00:00:00 2001 From: Oliver Shi Date: Tue, 16 Aug 2022 11:32:05 -0400 Subject: [PATCH 11/23] Add ComplexUrlDirectAnswer (#211) tested that displayUrl can be optional by deleting it in Knowledge Graph. J=SLAP-2309 TEST=manual --- docs/search-core.builtinfieldtype.md | 1 + docs/search-core.complexurl.displayurl.md | 11 +++++++++ docs/search-core.complexurl.md | 22 ++++++++++++++++++ ...search-core.complexurl.preferdisplayurl.md | 11 +++++++++ docs/search-core.complexurl.url.md | 11 +++++++++ ...h-core.complexurldirectanswer.fieldtype.md | 11 +++++++++ docs/search-core.complexurldirectanswer.md | 21 +++++++++++++++++ docs/search-core.fieldvaluedirectanswer.md | 4 ++-- docs/search-core.md | 2 ++ etc/search-core.api.md | 20 +++++++++++++++- .../response/directanswer/BuiltInFieldType.ts | 2 +- .../directanswer/FieldValueDirectAnswer.ts | 2 ++ .../ComplexUrlDirectAnswer.ts | 23 +++++++++++++++++++ .../fieldvaluedirectanswers/index.ts | 1 + test-site/src/ts/initDirectAnswers.ts | 8 ++++++- 15 files changed, 145 insertions(+), 5 deletions(-) create mode 100644 docs/search-core.complexurl.displayurl.md create mode 100644 docs/search-core.complexurl.md create mode 100644 docs/search-core.complexurl.preferdisplayurl.md create mode 100644 docs/search-core.complexurl.url.md create mode 100644 docs/search-core.complexurldirectanswer.fieldtype.md create mode 100644 docs/search-core.complexurldirectanswer.md create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/ComplexUrlDirectAnswer.ts diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index 689cc075..0396b04f 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -17,6 +17,7 @@ export declare enum BuiltInFieldType | Member | Value | Description | | --- | --- | --- | | AndroidAppURL | "android_app_url" | | +| ComplexURL | "complex_url" | | | Decimal | "decimal" | | | FacebookURL | "facebook_url" | | | InstagramHandle | "instagram_handle" | | diff --git a/docs/search-core.complexurl.displayurl.md b/docs/search-core.complexurl.displayurl.md new file mode 100644 index 00000000..1402fe61 --- /dev/null +++ b/docs/search-core.complexurl.displayurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ComplexURL](./search-core.complexurl.md) > [displayUrl](./search-core.complexurl.displayurl.md) + +## ComplexURL.displayUrl property + +Signature: + +```typescript +displayUrl?: string; +``` diff --git a/docs/search-core.complexurl.md b/docs/search-core.complexurl.md new file mode 100644 index 00000000..1be69994 --- /dev/null +++ b/docs/search-core.complexurl.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ComplexURL](./search-core.complexurl.md) + +## ComplexURL interface + +The shape of a [BuiltInFieldType.ComplexURL](./search-core.builtinfieldtype.md) DirectAnswer value + +Signature: + +```typescript +export interface ComplexURL +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [displayUrl?](./search-core.complexurl.displayurl.md) | string | (Optional) | +| [preferDisplayUrl](./search-core.complexurl.preferdisplayurl.md) | boolean | | +| [url](./search-core.complexurl.url.md) | string | | + diff --git a/docs/search-core.complexurl.preferdisplayurl.md b/docs/search-core.complexurl.preferdisplayurl.md new file mode 100644 index 00000000..e03669eb --- /dev/null +++ b/docs/search-core.complexurl.preferdisplayurl.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ComplexURL](./search-core.complexurl.md) > [preferDisplayUrl](./search-core.complexurl.preferdisplayurl.md) + +## ComplexURL.preferDisplayUrl property + +Signature: + +```typescript +preferDisplayUrl: boolean; +``` diff --git a/docs/search-core.complexurl.url.md b/docs/search-core.complexurl.url.md new file mode 100644 index 00000000..7dd97ddc --- /dev/null +++ b/docs/search-core.complexurl.url.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ComplexURL](./search-core.complexurl.md) > [url](./search-core.complexurl.url.md) + +## ComplexURL.url property + +Signature: + +```typescript +url: string; +``` diff --git a/docs/search-core.complexurldirectanswer.fieldtype.md b/docs/search-core.complexurldirectanswer.fieldtype.md new file mode 100644 index 00000000..ce9931fd --- /dev/null +++ b/docs/search-core.complexurldirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md) > [fieldType](./search-core.complexurldirectanswer.fieldtype.md) + +## ComplexUrlDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.complexurldirectanswer.md b/docs/search-core.complexurldirectanswer.md new file mode 100644 index 00000000..7da685c3 --- /dev/null +++ b/docs/search-core.complexurldirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md) + +## ComplexUrlDirectAnswer interface + +A direct answer for a complex url field. + +Signature: + +```typescript +export interface ComplexUrlDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<[ComplexURL](./search-core.complexurl.md)> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.complexurldirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.ComplexURL](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index 69fc2b1d..aac67387 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,7 +9,7 @@ Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefiel Signature: ```typescript -export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | IntegerDirectAnswer; +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer; ``` -References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md) +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md) diff --git a/docs/search-core.md b/docs/search-core.md index fc0c2ec6..fd80d914 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -56,6 +56,8 @@ | [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. | | [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). | | [ClientSDKHeaderValues](./search-core.clientsdkheadervalues.md) | Additional agents and their versions used to create the Search experience. The information for these agents is added to the Client-SDK HTTP header along with that of the ANSWERS\_CORE agent. | +| [ComplexURL](./search-core.complexurl.md) | The shape of a [BuiltInFieldType.ComplexURL](./search-core.builtinfieldtype.md) DirectAnswer value | +| [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md) | A direct answer for a complex url field. | | [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) | A static filter composed by combining other static filters with the logical AND operator. | | [DecimalDirectAnswer](./search-core.decimaldirectanswer.md) | A direct answer for a decimal field, which is a number represented using a string. | | [DirectAnswer](./search-core.directanswer.md) | A direct answer to a search. | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index e940fe6e..058eda35 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -120,6 +120,8 @@ export enum BuiltInFieldType { // (undocumented) AndroidAppURL = "android_app_url", // (undocumented) + ComplexURL = "complex_url", + // (undocumented) Decimal = "decimal", // (undocumented) FacebookURL = "facebook_url", @@ -149,6 +151,22 @@ export interface ClientSDKHeaderValues { ANSWERS_CORE?: never; } +// @public +export interface ComplexURL { + // (undocumented) + displayUrl?: string; + // (undocumented) + preferDisplayUrl: boolean; + // (undocumented) + url: string; +} + +// @public +export interface ComplexUrlDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface ConjunctionStaticFilter { combinator: FilterCombinator.AND; @@ -267,7 +285,7 @@ export interface FailedVertical { export type FeaturedSnippetDirectAnswer = MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; // @public -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | IntegerDirectAnswer; +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer; // @public export interface FieldValueFilter { diff --git a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts index 14b92625..a46dc370 100644 --- a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -5,7 +5,7 @@ */ export enum BuiltInFieldType { URL = 'url', - // ComplexURL = 'complex_url', + ComplexURL = 'complex_url', IOSAppURL = 'ios_app_url', AndroidAppURL = 'android_app_url', FacebookURL = 'facebook_url', diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index 7d252511..96398e47 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -9,6 +9,7 @@ import { RichTextDirectAnswer, UrlDirectAnswer, TextDirectAnswer, + ComplexUrlDirectAnswer, IntegerDirectAnswer } from './fieldvaluedirectanswers'; @@ -28,4 +29,5 @@ export type FieldValueDirectAnswer = TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | + ComplexUrlDirectAnswer | IntegerDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/ComplexUrlDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/ComplexUrlDirectAnswer.ts new file mode 100644 index 00000000..e9c9a4c8 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/ComplexUrlDirectAnswer.ts @@ -0,0 +1,23 @@ +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { BuiltInFieldType } from '../BuiltInFieldType'; + +/** + * A direct answer for a complex url field. + * + * @public + */ +export interface ComplexUrlDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} + +/** + * The shape of a {@link BuiltInFieldType.ComplexURL} DirectAnswer value + * + * @public + */ +export interface ComplexURL { + url: string, + displayUrl?: string, + preferDisplayUrl: boolean +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts index dad77731..f61d42a2 100644 --- a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts @@ -8,4 +8,5 @@ export { FacebookUrlDirectAnswer } from './FacebookUrlDirectAnswer'; export { RichTextDirectAnswer } from './RichTextDirectAnswer'; export { UrlDirectAnswer } from './UrlDirectAnswer'; export { TextDirectAnswer } from './TextDirectAnswer'; +export { ComplexUrlDirectAnswer, ComplexURL } from './ComplexUrlDirectAnswer'; export { IntegerDirectAnswer } from './IntegerDirectAnswer'; diff --git a/test-site/src/ts/initDirectAnswers.ts b/test-site/src/ts/initDirectAnswers.ts index 516be2a7..adbe450b 100644 --- a/test-site/src/ts/initDirectAnswers.ts +++ b/test-site/src/ts/initDirectAnswers.ts @@ -44,6 +44,9 @@ const FIELD_VALUE_QUERIES = { 'oliver shi my rich text field', // string 'oliver shi multi line rich text' // string[] ], + [BuiltInFieldType.ComplexURL]: [ + 'oliver shi website url' // ComplexUrl + ], [BuiltInFieldType.Integer]: [ 'oliver shi outdoor pools?' // number ] @@ -115,6 +118,9 @@ function ensureFieldValueSwitchability(da: FieldValueDirectAnswer) { case BuiltInFieldType.URL: console.log(da.value); break; + case BuiltInFieldType.ComplexURL: + console.log(da.value); + break; case BuiltInFieldType.Integer: console.log(da.value); break; @@ -135,4 +141,4 @@ function ensureFeaturedSnippetSwitchability(da: FeaturedSnippetDirectAnswer) { console.log(da.value); break; } -} \ No newline at end of file +} From 97d69d281605535ad2363c110ec8b5e87febbd7d Mon Sep 17 00:00:00 2001 From: Oliver Shi Date: Tue, 16 Aug 2022 12:02:05 -0400 Subject: [PATCH 12/23] fix compilation_check_for_test_site (#213) In a github workflow the `cd` command only affects the current step. This was causing false positives. Also fix a casing issue with a test-site import on the js side. J=NONE TEST=manual checked out a branch that should be failing, saw it fail locally, but succeed in the PR it's in in the github workflow logs for the PR it's in, I see the regular search-core build being run twice, and the test-site build not being run --- .github/workflows/run-tests.yml | 14 ++++---------- test-site/src/js/index.js | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 368ffd7f..863900a2 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -12,13 +12,7 @@ jobs: build_script: npm run build-ci compilation_check_for_test_site: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Use Node.js - uses: actions/setup-node@v3 - - run: npm ci - - run: npm run build - - run: cd test-site - - run: npm i - - run: npm run build + uses: yext/slapshot-reusable-workflows/.github/workflows/run_tests.yml@v1 + with: + test_script: cd test-site && npm i && npm run build + node_matrix: '["16.x"]' diff --git a/test-site/src/js/index.js b/test-site/src/js/index.js index 8ce2e33b..19a7ed73 100644 --- a/test-site/src/js/index.js +++ b/test-site/src/js/index.js @@ -3,7 +3,7 @@ import { provideCore } from '@yext/search-core'; import verticalRequest from './requests/verticalRequest'; import universalRequest from './requests/universalRequest'; import questionRequest from './requests/questionRequest'; -import { univeralAutocompleteRequest, verticalAutocompleteRequest, filterSearchRequest } from './requests/autoCompleteRequests'; +import { univeralAutocompleteRequest, verticalAutocompleteRequest, filterSearchRequest } from './requests/autocompleteRequests'; const coreConfig = { apiKey: 'df4b24f4075800e5e9705090c54c6c13', From 4e152590ce0cf468d143197f82dbddb8cbcb5e75 Mon Sep 17 00:00:00 2001 From: juliannzhou <65748924+juliannzhou@users.noreply.github.com> Date: Tue, 16 Aug 2022 12:11:33 -0400 Subject: [PATCH 13/23] create EmailDirectAnswer interface (#205) This PR creates EmailDirectAnswer interface for direct answers with email values and an email type to define generic type variable. J=SLAP-2313 TEST=manual Test: created a test interface with EmailDirectAnswer and works as expected for when inputting email type values. The email type is verified by checking api response in Search. --- docs/search-core.builtinfieldtype.md | 2 ++ ...search-core.emaildirectanswer.fieldtype.md | 11 ++++++++++ docs/search-core.emaildirectanswer.md | 21 +++++++++++++++++++ docs/search-core.fieldvaluedirectanswer.md | 4 ++-- docs/search-core.md | 1 + etc/search-core.api.md | 12 ++++++++++- .../response/directanswer/BuiltInFieldType.ts | 4 ++-- .../directanswer/FieldValueDirectAnswer.ts | 6 ++++-- .../EmailDirectAnswer.ts | 12 +++++++++++ .../fieldvaluedirectanswers/index.ts | 1 + test-site/src/ts/initDirectAnswers.ts | 6 ++++++ 11 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 docs/search-core.emaildirectanswer.fieldtype.md create mode 100644 docs/search-core.emaildirectanswer.md create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/EmailDirectAnswer.ts diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index 0396b04f..a172ea65 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -16,9 +16,11 @@ export declare enum BuiltInFieldType | Member | Value | Description | | --- | --- | --- | +| Address | "address" | | | AndroidAppURL | "android_app_url" | | | ComplexURL | "complex_url" | | | Decimal | "decimal" | | +| Email | "email" | | | FacebookURL | "facebook_url" | | | InstagramHandle | "instagram_handle" | | | Integer | "integer" | | diff --git a/docs/search-core.emaildirectanswer.fieldtype.md b/docs/search-core.emaildirectanswer.fieldtype.md new file mode 100644 index 00000000..4091a0d2 --- /dev/null +++ b/docs/search-core.emaildirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [EmailDirectAnswer](./search-core.emaildirectanswer.md) > [fieldType](./search-core.emaildirectanswer.fieldtype.md) + +## EmailDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.emaildirectanswer.md b/docs/search-core.emaildirectanswer.md new file mode 100644 index 00000000..f8065de3 --- /dev/null +++ b/docs/search-core.emaildirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [EmailDirectAnswer](./search-core.emaildirectanswer.md) + +## EmailDirectAnswer interface + +A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with 'email' field type. + +Signature: + +```typescript +export interface EmailDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string\[\]> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.emaildirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.Email](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index aac67387..44135aea 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,7 +9,7 @@ Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefiel Signature: ```typescript -export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer; +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | EmailDirectAnswer; ``` -References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md) +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md), [EmailDirectAnswer](./search-core.emaildirectanswer.md) diff --git a/docs/search-core.md b/docs/search-core.md index fd80d914..00996231 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -64,6 +64,7 @@ | [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) | A static filter composed by combining filters with the logical OR operator. The combined filters can either be field value filters or other disjunction filters. | | [DisplayableFacet](./search-core.displayablefacet.md) | A [Facet](./search-core.facet.md) which contains extra fields meant to be displayed to the end user. | | [DisplayableFacetOption](./search-core.displayablefacetoption.md) | A [FacetOption](./search-core.facetoption.md) with extra data meant to be displayed to the end user. | +| [EmailDirectAnswer](./search-core.emaildirectanswer.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with 'email' field type. | | [Endpoints](./search-core.endpoints.md) | Overrides for the URLs which are used when making requests to the Search API. | | [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md) | A direct answer for a facebook url field. | | [Facet](./search-core.facet.md) | Represents dynamic filter options for the Search API. | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index 058eda35..f6a7d828 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -117,6 +117,8 @@ export interface BaseSearchConfig { // @public export enum BuiltInFieldType { + // (undocumented) + Address = "address", // (undocumented) AndroidAppURL = "android_app_url", // (undocumented) @@ -124,6 +126,8 @@ export enum BuiltInFieldType { // (undocumented) Decimal = "decimal", // (undocumented) + Email = "email", + // (undocumented) FacebookURL = "facebook_url", // (undocumented) InstagramHandle = "instagram_handle", @@ -224,6 +228,12 @@ export interface DisplayableFacetOption extends FacetOption { selected: boolean; } +// @public +export interface EmailDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface Endpoints { // (undocumented) @@ -285,7 +295,7 @@ export interface FailedVertical { export type FeaturedSnippetDirectAnswer = MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; // @public -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer; +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | EmailDirectAnswer; // @public export interface FieldValueFilter { diff --git a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts index a46dc370..5ee121a4 100644 --- a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -9,11 +9,11 @@ export enum BuiltInFieldType { IOSAppURL = 'ios_app_url', AndroidAppURL = 'android_app_url', FacebookURL = 'facebook_url', - // Email = 'email', + Email = 'email', InstagramHandle = 'instagram_handle', TwitterHandle = 'twitter_handle', Phone = 'phone', - // Address = 'address', + Address = 'address', // Hours = 'hours', Decimal = 'decimal', Integer = 'integer', diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index 96398e47..963c3e4e 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -10,7 +10,8 @@ import { UrlDirectAnswer, TextDirectAnswer, ComplexUrlDirectAnswer, - IntegerDirectAnswer + IntegerDirectAnswer, + EmailDirectAnswer } from './fieldvaluedirectanswers'; /** @@ -30,4 +31,5 @@ export type FieldValueDirectAnswer = IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | - IntegerDirectAnswer; + IntegerDirectAnswer | + EmailDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/EmailDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/EmailDirectAnswer.ts new file mode 100644 index 00000000..02c2b037 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/EmailDirectAnswer.ts @@ -0,0 +1,12 @@ +import { BuiltInFieldType } from '../BuiltInFieldType'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; + +/** + * A {@link BaseFieldValueDirectAnswer} interface with 'email' field type. + * + * @public + */ +export interface EmailDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts index f61d42a2..1ac1dec6 100644 --- a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts @@ -10,3 +10,4 @@ export { UrlDirectAnswer } from './UrlDirectAnswer'; export { TextDirectAnswer } from './TextDirectAnswer'; export { ComplexUrlDirectAnswer, ComplexURL } from './ComplexUrlDirectAnswer'; export { IntegerDirectAnswer } from './IntegerDirectAnswer'; +export { EmailDirectAnswer } from './EmailDirectAnswer'; diff --git a/test-site/src/ts/initDirectAnswers.ts b/test-site/src/ts/initDirectAnswers.ts index adbe450b..f3f978bb 100644 --- a/test-site/src/ts/initDirectAnswers.ts +++ b/test-site/src/ts/initDirectAnswers.ts @@ -49,6 +49,9 @@ const FIELD_VALUE_QUERIES = { ], [BuiltInFieldType.Integer]: [ 'oliver shi outdoor pools?' // number + ], + [BuiltInFieldType.Email]: [ + 'oliver shi email' // string[] ] }; @@ -124,6 +127,9 @@ function ensureFieldValueSwitchability(da: FieldValueDirectAnswer) { case BuiltInFieldType.Integer: console.log(da.value); break; + case BuiltInFieldType.Email: + console.log(da.value); + break; } } From a9fe869e8ed54d1f90d40f3d2ea3ecb23e65808f Mon Sep 17 00:00:00 2001 From: juliannzhou <65748924+juliannzhou@users.noreply.github.com> Date: Tue, 16 Aug 2022 12:38:59 -0400 Subject: [PATCH 14/23] create phone direct answer (#209) This PR creates PhoneFieldValueDirectAnswer interface for direct answers with phone values. J=SLAP-2316 TEST=manual Test: created a test interface using PhoneFieldValueDirectAnswer. When inputting phone type values, the type works as expected. The phone type is verified by api response in Search. --- docs/search-core.fieldvaluedirectanswer.md | 4 ++-- docs/search-core.md | 1 + ...search-core.phonedirectanswer.fieldtype.md | 11 ++++++++++ docs/search-core.phonedirectanswer.md | 21 +++++++++++++++++++ etc/search-core.api.md | 8 ++++++- .../directanswer/FieldValueDirectAnswer.ts | 2 ++ .../PhoneDirectAnswer.ts | 11 ++++++++++ .../fieldvaluedirectanswers/index.ts | 1 + test-site/src/ts/initDirectAnswers.ts | 6 ++++++ 9 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 docs/search-core.phonedirectanswer.fieldtype.md create mode 100644 docs/search-core.phonedirectanswer.md create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/PhoneDirectAnswer.ts diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index 44135aea..b4e39dd8 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,7 +9,7 @@ Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefiel Signature: ```typescript -export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | EmailDirectAnswer; +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer; ``` -References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md), [EmailDirectAnswer](./search-core.emaildirectanswer.md) +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md), [PhoneDirectAnswer](./search-core.phonedirectanswer.md), [EmailDirectAnswer](./search-core.emaildirectanswer.md) diff --git a/docs/search-core.md b/docs/search-core.md index 00996231..edad53ad 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -86,6 +86,7 @@ | [MultiLineTextSnippetDirectAnswer](./search-core.multilinetextsnippetdirectanswer.md) | A [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) with 'multi\_line\_text' field type. | | [NearFilterValue](./search-core.nearfiltervalue.md) | A filter value for a filter with a $near [Matcher](./search-core.matcher.md). | | [NumberRangeValue](./search-core.numberrangevalue.md) | A filter value for a filter with a $between [Matcher](./search-core.matcher.md). | +| [PhoneDirectAnswer](./search-core.phonedirectanswer.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with phone value. | | [QueryRulesActionsData](./search-core.queryrulesactionsdata.md) | Data returned from the Search query rules system. | | [QuestionSubmissionRequest](./search-core.questionsubmissionrequest.md) | Options for a QuestionSubmission request. | | [QuestionSubmissionResponse](./search-core.questionsubmissionresponse.md) | A representation of a question submission response. | diff --git a/docs/search-core.phonedirectanswer.fieldtype.md b/docs/search-core.phonedirectanswer.fieldtype.md new file mode 100644 index 00000000..e342ab59 --- /dev/null +++ b/docs/search-core.phonedirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [PhoneDirectAnswer](./search-core.phonedirectanswer.md) > [fieldType](./search-core.phonedirectanswer.fieldtype.md) + +## PhoneDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: BuiltInFieldType.Phone; +``` diff --git a/docs/search-core.phonedirectanswer.md b/docs/search-core.phonedirectanswer.md new file mode 100644 index 00000000..dc504094 --- /dev/null +++ b/docs/search-core.phonedirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [PhoneDirectAnswer](./search-core.phonedirectanswer.md) + +## PhoneDirectAnswer interface + +A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with phone value. + +Signature: + +```typescript +export interface PhoneDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<string> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.phonedirectanswer.fieldtype.md) | [BuiltInFieldType.Phone](./search-core.builtinfieldtype.md) | | + diff --git a/etc/search-core.api.md b/etc/search-core.api.md index f6a7d828..5f75876b 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -295,7 +295,7 @@ export interface FailedVertical { export type FeaturedSnippetDirectAnswer = MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; // @public -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | EmailDirectAnswer; +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer; // @public export interface FieldValueFilter { @@ -443,6 +443,12 @@ export interface NumberRangeValue { start?: LowerNumberRangeLimit; } +// @public +export interface PhoneDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: BuiltInFieldType.Phone; +} + // @public export function provideCore(config: SearchConfig): SearchCore; diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index 963c3e4e..5e5c5f5c 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -11,6 +11,7 @@ import { TextDirectAnswer, ComplexUrlDirectAnswer, IntegerDirectAnswer, + PhoneDirectAnswer, EmailDirectAnswer } from './fieldvaluedirectanswers'; @@ -32,4 +33,5 @@ export type FieldValueDirectAnswer = AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | + PhoneDirectAnswer | EmailDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/PhoneDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/PhoneDirectAnswer.ts new file mode 100644 index 00000000..c1bdb587 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/PhoneDirectAnswer.ts @@ -0,0 +1,11 @@ +import { BuiltInFieldType } from '../BuiltInFieldType'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; + +/** + * A {@link BaseFieldValueDirectAnswer} interface with phone value. + * + * @public + */ +export interface PhoneDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: BuiltInFieldType.Phone +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts index 1ac1dec6..8757d172 100644 --- a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts @@ -10,4 +10,5 @@ export { UrlDirectAnswer } from './UrlDirectAnswer'; export { TextDirectAnswer } from './TextDirectAnswer'; export { ComplexUrlDirectAnswer, ComplexURL } from './ComplexUrlDirectAnswer'; export { IntegerDirectAnswer } from './IntegerDirectAnswer'; +export { PhoneDirectAnswer } from './PhoneDirectAnswer'; export { EmailDirectAnswer } from './EmailDirectAnswer'; diff --git a/test-site/src/ts/initDirectAnswers.ts b/test-site/src/ts/initDirectAnswers.ts index f3f978bb..084e7401 100644 --- a/test-site/src/ts/initDirectAnswers.ts +++ b/test-site/src/ts/initDirectAnswers.ts @@ -50,6 +50,9 @@ const FIELD_VALUE_QUERIES = { [BuiltInFieldType.Integer]: [ 'oliver shi outdoor pools?' // number ], + [BuiltInFieldType.Phone]: [ + 'amani farooque phone number?' // string + ], [BuiltInFieldType.Email]: [ 'oliver shi email' // string[] ] @@ -127,6 +130,9 @@ function ensureFieldValueSwitchability(da: FieldValueDirectAnswer) { case BuiltInFieldType.Integer: console.log(da.value); break; + case BuiltInFieldType.Phone: + console.log(da.value); + break; case BuiltInFieldType.Email: console.log(da.value); break; From f15973743936a689a5046a27e5f7d07a954a4104 Mon Sep 17 00:00:00 2001 From: juliannzhou <65748924+juliannzhou@users.noreply.github.com> Date: Tue, 16 Aug 2022 15:56:04 -0400 Subject: [PATCH 15/23] create AddressDirectAnswer interface (#203) This PR creates AddressDirectAnswer interface for direct answers with address values and an address type to define generic type variable. J=SLAP-2310 TEST=manual Test: created a test interface with AddressDirectAnswer and works as expected for when inputting address type values. The Address type interface is generated by CLI types command for Address field of Person entity. All address fields are verified by checking api response in Search except for sublocality, region, and line 3, as I cannot find a search result that returns an address direct answer with these three fields. --- docs/search-core.address.city.md | 11 +++++++ docs/search-core.address.countrycode.md | 11 +++++++ docs/search-core.address.extradescription.md | 11 +++++++ docs/search-core.address.line1.md | 11 +++++++ docs/search-core.address.line2.md | 11 +++++++ docs/search-core.address.line3.md | 11 +++++++ docs/search-core.address.md | 28 +++++++++++++++++ docs/search-core.address.postalcode.md | 11 +++++++ docs/search-core.address.region.md | 11 +++++++ docs/search-core.address.sublocality.md | 11 +++++++ ...arch-core.addressdirectanswer.fieldtype.md | 11 +++++++ docs/search-core.addressdirectanswer.md | 21 +++++++++++++ docs/search-core.fieldvaluedirectanswer.md | 4 +-- docs/search-core.md | 2 ++ etc/search-core.api.md | 30 ++++++++++++++++++- .../directanswer/FieldValueDirectAnswer.ts | 6 ++-- .../AddressDirectAnswer.ts | 29 ++++++++++++++++++ .../fieldvaluedirectanswers/index.ts | 1 + test-site/src/ts/initDirectAnswers.ts | 6 ++++ 19 files changed, 232 insertions(+), 5 deletions(-) create mode 100644 docs/search-core.address.city.md create mode 100644 docs/search-core.address.countrycode.md create mode 100644 docs/search-core.address.extradescription.md create mode 100644 docs/search-core.address.line1.md create mode 100644 docs/search-core.address.line2.md create mode 100644 docs/search-core.address.line3.md create mode 100644 docs/search-core.address.md create mode 100644 docs/search-core.address.postalcode.md create mode 100644 docs/search-core.address.region.md create mode 100644 docs/search-core.address.sublocality.md create mode 100644 docs/search-core.addressdirectanswer.fieldtype.md create mode 100644 docs/search-core.addressdirectanswer.md create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AddressDirectAnswer.ts diff --git a/docs/search-core.address.city.md b/docs/search-core.address.city.md new file mode 100644 index 00000000..4eb847fb --- /dev/null +++ b/docs/search-core.address.city.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [city](./search-core.address.city.md) + +## Address.city property + +Signature: + +```typescript +city?: string; +``` diff --git a/docs/search-core.address.countrycode.md b/docs/search-core.address.countrycode.md new file mode 100644 index 00000000..c396d1f8 --- /dev/null +++ b/docs/search-core.address.countrycode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [countryCode](./search-core.address.countrycode.md) + +## Address.countryCode property + +Signature: + +```typescript +countryCode: string; +``` diff --git a/docs/search-core.address.extradescription.md b/docs/search-core.address.extradescription.md new file mode 100644 index 00000000..39a4f316 --- /dev/null +++ b/docs/search-core.address.extradescription.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [extraDescription](./search-core.address.extradescription.md) + +## Address.extraDescription property + +Signature: + +```typescript +extraDescription?: string; +``` diff --git a/docs/search-core.address.line1.md b/docs/search-core.address.line1.md new file mode 100644 index 00000000..c9dda0dc --- /dev/null +++ b/docs/search-core.address.line1.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [line1](./search-core.address.line1.md) + +## Address.line1 property + +Signature: + +```typescript +line1?: string; +``` diff --git a/docs/search-core.address.line2.md b/docs/search-core.address.line2.md new file mode 100644 index 00000000..caf4856b --- /dev/null +++ b/docs/search-core.address.line2.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [line2](./search-core.address.line2.md) + +## Address.line2 property + +Signature: + +```typescript +line2?: string; +``` diff --git a/docs/search-core.address.line3.md b/docs/search-core.address.line3.md new file mode 100644 index 00000000..4380f7d9 --- /dev/null +++ b/docs/search-core.address.line3.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [line3](./search-core.address.line3.md) + +## Address.line3 property + +Signature: + +```typescript +line3?: string; +``` diff --git a/docs/search-core.address.md b/docs/search-core.address.md new file mode 100644 index 00000000..ba5617a1 --- /dev/null +++ b/docs/search-core.address.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) + +## Address interface + +An interface with address fields to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). + +Signature: + +```typescript +export interface Address +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [city?](./search-core.address.city.md) | string | (Optional) | +| [countryCode](./search-core.address.countrycode.md) | string | | +| [extraDescription?](./search-core.address.extradescription.md) | string | (Optional) | +| [line1?](./search-core.address.line1.md) | string | (Optional) | +| [line2?](./search-core.address.line2.md) | string | (Optional) | +| [line3?](./search-core.address.line3.md) | string | (Optional) | +| [postalCode?](./search-core.address.postalcode.md) | string | (Optional) | +| [region?](./search-core.address.region.md) | string | (Optional) | +| [sublocality?](./search-core.address.sublocality.md) | string | (Optional) | + diff --git a/docs/search-core.address.postalcode.md b/docs/search-core.address.postalcode.md new file mode 100644 index 00000000..6a331902 --- /dev/null +++ b/docs/search-core.address.postalcode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [postalCode](./search-core.address.postalcode.md) + +## Address.postalCode property + +Signature: + +```typescript +postalCode?: string; +``` diff --git a/docs/search-core.address.region.md b/docs/search-core.address.region.md new file mode 100644 index 00000000..934b14c3 --- /dev/null +++ b/docs/search-core.address.region.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [region](./search-core.address.region.md) + +## Address.region property + +Signature: + +```typescript +region?: string; +``` diff --git a/docs/search-core.address.sublocality.md b/docs/search-core.address.sublocality.md new file mode 100644 index 00000000..25177c53 --- /dev/null +++ b/docs/search-core.address.sublocality.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Address](./search-core.address.md) > [sublocality](./search-core.address.sublocality.md) + +## Address.sublocality property + +Signature: + +```typescript +sublocality?: string; +``` diff --git a/docs/search-core.addressdirectanswer.fieldtype.md b/docs/search-core.addressdirectanswer.fieldtype.md new file mode 100644 index 00000000..a398c548 --- /dev/null +++ b/docs/search-core.addressdirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [AddressDirectAnswer](./search-core.addressdirectanswer.md) > [fieldType](./search-core.addressdirectanswer.fieldtype.md) + +## AddressDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.addressdirectanswer.md b/docs/search-core.addressdirectanswer.md new file mode 100644 index 00000000..d0da1257 --- /dev/null +++ b/docs/search-core.addressdirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [AddressDirectAnswer](./search-core.addressdirectanswer.md) + +## AddressDirectAnswer interface + +A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with 'address' field type. + +Signature: + +```typescript +export interface AddressDirectAnswer extends BaseFieldValueDirectAnswer
+``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<[Address](./search-core.address.md)> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.addressdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.Address](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index b4e39dd8..7d8f504b 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,7 +9,7 @@ Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefiel Signature: ```typescript -export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer; +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer | AddressDirectAnswer; ``` -References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md), [PhoneDirectAnswer](./search-core.phonedirectanswer.md), [EmailDirectAnswer](./search-core.emaildirectanswer.md) +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md), [PhoneDirectAnswer](./search-core.phonedirectanswer.md), [EmailDirectAnswer](./search-core.emaildirectanswer.md), [AddressDirectAnswer](./search-core.addressdirectanswer.md) diff --git a/docs/search-core.md b/docs/search-core.md index edad53ad..a46715e4 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -42,6 +42,8 @@ | Interface | Description | | --- | --- | | [AdditionalHttpHeaders](./search-core.additionalhttpheaders.md) | AdditionalHttpHeaders allows users to specify additional values for specific HTTP headers. | +| [Address](./search-core.address.md) | An interface with address fields to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). | +| [AddressDirectAnswer](./search-core.addressdirectanswer.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with 'address' field type. | | [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md) | A direct answer for an android app url field. | | [AnswersConfigWithApiKey](./search-core.answersconfigwithapikey.md) | | | [AnswersConfigWithToken](./search-core.answersconfigwithtoken.md) | | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index 5f75876b..a5d8a1a7 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -9,6 +9,34 @@ export interface AdditionalHttpHeaders { 'Client-SDK'?: ClientSDKHeaderValues; } +// @public +export interface Address { + // (undocumented) + city?: string; + // (undocumented) + countryCode: string; + // (undocumented) + extraDescription?: string; + // (undocumented) + line1?: string; + // (undocumented) + line2?: string; + // (undocumented) + line3?: string; + // (undocumented) + postalCode?: string; + // (undocumented) + region?: string; + // (undocumented) + sublocality?: string; +} + +// @public +export interface AddressDirectAnswer extends BaseFieldValueDirectAnswer
{ + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface AndroidAppUrlDirectAnswer extends BaseFieldValueDirectAnswer { // (undocumented) @@ -295,7 +323,7 @@ export interface FailedVertical { export type FeaturedSnippetDirectAnswer = MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; // @public -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer; +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer | AddressDirectAnswer; // @public export interface FieldValueFilter { diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index 5e5c5f5c..ce13cd91 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -12,7 +12,8 @@ import { ComplexUrlDirectAnswer, IntegerDirectAnswer, PhoneDirectAnswer, - EmailDirectAnswer + EmailDirectAnswer, + AddressDirectAnswer } from './fieldvaluedirectanswers'; /** @@ -34,4 +35,5 @@ export type FieldValueDirectAnswer = ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | - EmailDirectAnswer; + EmailDirectAnswer | + AddressDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AddressDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AddressDirectAnswer.ts new file mode 100644 index 00000000..087e7de2 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/AddressDirectAnswer.ts @@ -0,0 +1,29 @@ +import { BuiltInFieldType } from '../BuiltInFieldType'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; + +/** + * A {@link BaseFieldValueDirectAnswer} interface with 'address' field type. + * + * @public + */ +export interface AddressDirectAnswer extends BaseFieldValueDirectAnswer
{ + fieldType: EnumOrLiteral +} + +/** + * An interface with address fields to use in {@link BaseFieldValueDirectAnswer.value}. + * + * @public + */ +export interface Address { + line1?: string, + line2?: string, + line3?: string, + sublocality?: string, + city?: string, + region?: string, + postalCode?: string, + extraDescription?: string, + countryCode: string +} \ No newline at end of file diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts index 8757d172..d568df39 100644 --- a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts @@ -10,5 +10,6 @@ export { UrlDirectAnswer } from './UrlDirectAnswer'; export { TextDirectAnswer } from './TextDirectAnswer'; export { ComplexUrlDirectAnswer, ComplexURL } from './ComplexUrlDirectAnswer'; export { IntegerDirectAnswer } from './IntegerDirectAnswer'; +export { AddressDirectAnswer, Address } from './AddressDirectAnswer'; export { PhoneDirectAnswer } from './PhoneDirectAnswer'; export { EmailDirectAnswer } from './EmailDirectAnswer'; diff --git a/test-site/src/ts/initDirectAnswers.ts b/test-site/src/ts/initDirectAnswers.ts index 084e7401..22219242 100644 --- a/test-site/src/ts/initDirectAnswers.ts +++ b/test-site/src/ts/initDirectAnswers.ts @@ -50,6 +50,9 @@ const FIELD_VALUE_QUERIES = { [BuiltInFieldType.Integer]: [ 'oliver shi outdoor pools?' // number ], + [BuiltInFieldType.Address]: [ + 'oliver shi address?' // Address + ], [BuiltInFieldType.Phone]: [ 'amani farooque phone number?' // string ], @@ -130,6 +133,9 @@ function ensureFieldValueSwitchability(da: FieldValueDirectAnswer) { case BuiltInFieldType.Integer: console.log(da.value); break; + case BuiltInFieldType.Address: + console.log(da.value); + break; case BuiltInFieldType.Phone: console.log(da.value); break; From 729b686d5cac3035c0969e2330eef89d52826d13 Mon Sep 17 00:00:00 2001 From: Yen Truong <36055303+yen-tt@users.noreply.github.com> Date: Wed, 17 Aug 2022 09:09:33 -0400 Subject: [PATCH 16/23] update package alpha version (#215) publish new alpha version with all the direct answer changes --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ad6eeb3..ed7c0324 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.204", + "version": "2.0.0-alpha.215", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "2.0.0-alpha.204", + "version": "2.0.0-alpha.215", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", diff --git a/package.json b/package.json index 4dddf882..479f01e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.204", + "version": "2.0.0-alpha.215", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js", From cab7d917f3de11990ce9ef0f5ca5258dd8594e73 Mon Sep 17 00:00:00 2001 From: juliannzhou <65748924+juliannzhou@users.noreply.github.com> Date: Wed, 17 Aug 2022 15:27:43 -0400 Subject: [PATCH 17/23] remove deprecated code (#216) This PR removes any code that's marked deprecated as part of v2. J=SLAP-2331 TEST=manual Test: removed code that's tagged deprecated and files named deprecate, updated the documentations, and searched 'deprecate', 'answers', as well as all identifiers in Alex's renaming prs such as AnswersError , AnswersRequest, AnswersConfig, etc, and deleted anything that's deprecated. --- README.md | 2 +- docs/search-core.answersconfig.md | 18 -------- docs/search-core.answersconfigwithapikey.md | 18 -------- docs/search-core.answersconfigwithtoken.md | 18 -------- docs/search-core.answerscore.md | 18 -------- docs/search-core.answerserror.md | 18 -------- docs/search-core.answersrequest.md | 18 -------- docs/search-core.baseanswersconfig.md | 18 -------- docs/search-core.md | 7 --- ....universalsearchrequest.referrerpageurl.md | 2 +- etc/search-core.api.md | 27 ------------ src/deprecated.ts | 7 --- src/index.ts | 3 -- src/models/deprecated.ts | 43 ------------------- src/models/index.ts | 8 ---- .../request/UniversalSearchRequest.ts | 2 +- 16 files changed, 3 insertions(+), 224 deletions(-) delete mode 100644 docs/search-core.answersconfig.md delete mode 100644 docs/search-core.answersconfigwithapikey.md delete mode 100644 docs/search-core.answersconfigwithtoken.md delete mode 100644 docs/search-core.answerscore.md delete mode 100644 docs/search-core.answerserror.md delete mode 100644 docs/search-core.answersrequest.md delete mode 100644 docs/search-core.baseanswersconfig.md delete mode 100644 src/deprecated.ts delete mode 100644 src/models/deprecated.ts diff --git a/README.md b/README.md index 566b05af..a2eb0a72 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Search Core is a networking library for interacting with the Yext Search API. ## Getting Started -For a full getting started walk through, view our [official Hitchhiker Guide](https://hitchhikers.yext.com/guides/answers-core-getting-started/). +For a full getting started walk through, view our [official Hitchhiker Guide](https://hitchhikers.yext.com/guides/search-core-getting-started/). First, install Search-core via [npm](https://www.npmjs.com/get-npm): diff --git a/docs/search-core.answersconfig.md b/docs/search-core.answersconfig.md deleted file mode 100644 index faf4ecb2..00000000 --- a/docs/search-core.answersconfig.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [AnswersConfig](./search-core.answersconfig.md) - -## AnswersConfig type - -> Warning: This API is now obsolete. -> -> AnswersConfig is deprecated and has been replaced by [SearchConfig](./search-core.searchconfig.md) -> - -Signature: - -```typescript -export declare type AnswersConfig = SearchConfig; -``` -References: [SearchConfig](./search-core.searchconfig.md) - diff --git a/docs/search-core.answersconfigwithapikey.md b/docs/search-core.answersconfigwithapikey.md deleted file mode 100644 index 7f1c36c8..00000000 --- a/docs/search-core.answersconfigwithapikey.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [AnswersConfigWithApiKey](./search-core.answersconfigwithapikey.md) - -## AnswersConfigWithApiKey interface - -> Warning: This API is now obsolete. -> -> AnswersConfigWithApiKey is deprecated and has been replaced by [SearchConfigWithApiKey](./search-core.searchconfigwithapikey.md) -> - -Signature: - -```typescript -export interface AnswersConfigWithApiKey extends SearchConfigWithApiKey -``` -Extends: [SearchConfigWithApiKey](./search-core.searchconfigwithapikey.md) - diff --git a/docs/search-core.answersconfigwithtoken.md b/docs/search-core.answersconfigwithtoken.md deleted file mode 100644 index 01755fd6..00000000 --- a/docs/search-core.answersconfigwithtoken.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [AnswersConfigWithToken](./search-core.answersconfigwithtoken.md) - -## AnswersConfigWithToken interface - -> Warning: This API is now obsolete. -> -> AnswersConfigWithToken is deprecated and has been replaced by [SearchConfigWithToken](./search-core.searchconfigwithtoken.md) -> - -Signature: - -```typescript -export interface AnswersConfigWithToken extends SearchConfigWithToken -``` -Extends: [SearchConfigWithToken](./search-core.searchconfigwithtoken.md) - diff --git a/docs/search-core.answerscore.md b/docs/search-core.answerscore.md deleted file mode 100644 index bcffe85f..00000000 --- a/docs/search-core.answerscore.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [AnswersCore](./search-core.answerscore.md) - -## AnswersCore class - -> Warning: This API is now obsolete. -> -> AnswersCore is deprecated and has been replaced by [SearchCore](./search-core.searchcore.md) -> - -Signature: - -```typescript -export declare class AnswersCore extends SearchCore -``` -Extends: [SearchCore](./search-core.searchcore.md) - diff --git a/docs/search-core.answerserror.md b/docs/search-core.answerserror.md deleted file mode 100644 index 4bacf89e..00000000 --- a/docs/search-core.answerserror.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [AnswersError](./search-core.answerserror.md) - -## AnswersError interface - -> Warning: This API is now obsolete. -> -> AnswersError is deprecated and has been replaced by [SearchError](./search-core.searcherror.md) -> - -Signature: - -```typescript -export interface AnswersError extends SearchError -``` -Extends: [SearchError](./search-core.searcherror.md) - diff --git a/docs/search-core.answersrequest.md b/docs/search-core.answersrequest.md deleted file mode 100644 index 3733c784..00000000 --- a/docs/search-core.answersrequest.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [AnswersRequest](./search-core.answersrequest.md) - -## AnswersRequest interface - -> Warning: This API is now obsolete. -> -> AnswersRequest is deprecated and has been replaced by [SearchRequest](./search-core.searchrequest.md) -> - -Signature: - -```typescript -export interface AnswersRequest extends SearchRequest -``` -Extends: [SearchRequest](./search-core.searchrequest.md) - diff --git a/docs/search-core.baseanswersconfig.md b/docs/search-core.baseanswersconfig.md deleted file mode 100644 index c40e97d8..00000000 --- a/docs/search-core.baseanswersconfig.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseAnswersConfig](./search-core.baseanswersconfig.md) - -## BaseAnswersConfig interface - -> Warning: This API is now obsolete. -> -> BaseAnswersConfig is deprecated and has been replaced by [BaseSearchConfig](./search-core.basesearchconfig.md) -> - -Signature: - -```typescript -export interface BaseAnswersConfig extends BaseSearchConfig -``` -Extends: [BaseSearchConfig](./search-core.basesearchconfig.md) - diff --git a/docs/search-core.md b/docs/search-core.md index a46715e4..1f08bee0 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -8,7 +8,6 @@ | Class | Description | | --- | --- | -| [AnswersCore](./search-core.answerscore.md) | | | [SearchCore](./search-core.searchcore.md) | Provides methods for executing searches, submitting questions, and performing autocompletes. | | [SearchError](./search-core.searcherror.md) | Represents an error | @@ -45,15 +44,10 @@ | [Address](./search-core.address.md) | An interface with address fields to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). | | [AddressDirectAnswer](./search-core.addressdirectanswer.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with 'address' field type. | | [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md) | A direct answer for an android app url field. | -| [AnswersConfigWithApiKey](./search-core.answersconfigwithapikey.md) | | -| [AnswersConfigWithToken](./search-core.answersconfigwithtoken.md) | | -| [AnswersError](./search-core.answerserror.md) | | -| [AnswersRequest](./search-core.answersrequest.md) | | | [AppliedQueryFilter](./search-core.appliedqueryfilter.md) | A filter that the Search API applied to the search. | | [AutocompleteResponse](./search-core.autocompleteresponse.md) | The response of a universal or vertical autocomplete request. | | [AutocompleteResult](./search-core.autocompleteresult.md) | An autocomplete suggestion. | | [AutocompleteService](./search-core.autocompleteservice.md) | A service for autocomplete requests. | -| [BaseAnswersConfig](./search-core.baseanswersconfig.md) | | | [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) | A direct answer which was found within a document. | | [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) | A direct answer where the answer came from a field from the knowledge graph. | | [BaseSearchConfig](./search-core.basesearchconfig.md) | The base configuration options for [SearchCore](./search-core.searchcore.md). | @@ -129,7 +123,6 @@ | Type Alias | Description | | --- | --- | -| [AnswersConfig](./search-core.answersconfig.md) | | | [Context](./search-core.context.md) | Used to trigger Search [Query Rules](https://hitchhikers.yext.com/tracks/answers-advanced/ans302-query-rules/). | | [EnumOrLiteral](./search-core.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. | | [FeaturedSnippetDirectAnswer](./search-core.featuredsnippetdirectanswer.md) | All possible built-in [BaseFeaturedSnippetDirectAnswer](./search-core.basefeaturedsnippetdirectanswer.md) interfaces. | diff --git a/docs/search-core.universalsearchrequest.referrerpageurl.md b/docs/search-core.universalsearchrequest.referrerpageurl.md index ae9428ee..b2185ad0 100644 --- a/docs/search-core.universalsearchrequest.referrerpageurl.md +++ b/docs/search-core.universalsearchrequest.referrerpageurl.md @@ -14,5 +14,5 @@ referrerPageUrl?: string; ## Example -If a user is on https://www.yext.com/ and navigates to https://www.yext.com/answers and perform a search, the referrerPageUrl would be https://www.yext.com/. +If a user is on https://www.yext.com/ and navigates to https://search.yext.com/ and perform a search, the referrerPageUrl would be https://www.yext.com/. diff --git a/etc/search-core.api.md b/etc/search-core.api.md index a5d8a1a7..b278cce4 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -43,29 +43,6 @@ export interface AndroidAppUrlDirectAnswer extends BaseFieldValueDirectAnswer; } -// @public @deprecated (undocumented) -export type AnswersConfig = SearchConfig; - -// @public @deprecated (undocumented) -export interface AnswersConfigWithApiKey extends SearchConfigWithApiKey { -} - -// @public @deprecated (undocumented) -export interface AnswersConfigWithToken extends SearchConfigWithToken { -} - -// @public @deprecated (undocumented) -export class AnswersCore extends SearchCore { -} - -// @public @deprecated (undocumented) -export interface AnswersError extends SearchError { -} - -// @public @deprecated (undocumented) -export interface AnswersRequest extends SearchRequest { -} - // @public export interface AppliedQueryFilter { details?: LocationFilterDetails; @@ -110,10 +87,6 @@ export interface AutocompleteService { verticalAutocomplete(request: VerticalAutocompleteRequest): Promise; } -// @public @deprecated (undocumented) -export interface BaseAnswersConfig extends BaseSearchConfig { -} - // @public export interface BaseFeaturedSnippetDirectAnswer extends DirectAnswer { fieldType: EnumOrLiteral; diff --git a/src/deprecated.ts b/src/deprecated.ts deleted file mode 100644 index 7b965448..00000000 --- a/src/deprecated.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { SearchCore } from './SearchCore'; - -/** - * @deprecated AnswersCore is deprecated and has been replaced by {@link SearchCore} - * @public - */ -export class AnswersCore extends SearchCore{} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 8862474c..fcff8109 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,3 @@ -// deprecated symbols -export { AnswersCore } from './deprecated'; - // main symbols export { SearchCore } from './SearchCore'; export { provideCore } from './provideCore'; diff --git a/src/models/deprecated.ts b/src/models/deprecated.ts deleted file mode 100644 index 839ed26a..00000000 --- a/src/models/deprecated.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* eslint-disable @typescript-eslint/no-empty-interface */ -import { SearchConfig } from './core/SearchConfig'; -import { BaseSearchConfig } from './core/SearchConfig'; -import { SearchConfigWithApiKey } from './core/SearchConfig'; -import { SearchConfigWithToken } from './core/SearchConfig'; -import { SearchError } from './searchapi/SearchError'; -import { SearchRequest } from './core/SearchRequest'; - -/** - * @deprecated AnswersConfig is deprecated and has been replaced by {@link SearchConfig} - * @public - */ -export type AnswersConfig = SearchConfig; - -/** - * @deprecated BaseAnswersConfig is deprecated and has been replaced by {@link BaseSearchConfig} - * @public - */ -export interface BaseAnswersConfig extends BaseSearchConfig{} - -/** - * @deprecated AnswersConfigWithApiKey is deprecated and has been replaced by {@link SearchConfigWithApiKey} - * @public - */ -export interface AnswersConfigWithApiKey extends SearchConfigWithApiKey{} - -/** - * @deprecated AnswersConfigWithToken is deprecated and has been replaced by {@link SearchConfigWithToken} - * @public - */ -export interface AnswersConfigWithToken extends SearchConfigWithToken{} - -/** - * @deprecated AnswersError is deprecated and has been replaced by {@link SearchError} - * @public - */ -export interface AnswersError extends SearchError{} - -/** -* @deprecated AnswersRequest is deprecated and has been replaced by {@link SearchRequest} -* @public -*/ -export interface AnswersRequest extends SearchRequest{} diff --git a/src/models/index.ts b/src/models/index.ts index 80dfc5d6..023f7576 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -1,11 +1,3 @@ -// deprecated symbols -export { AnswersConfig } from './deprecated'; -export { BaseAnswersConfig } from './deprecated'; -export { AnswersConfigWithApiKey } from './deprecated'; -export { AnswersConfigWithToken } from './deprecated'; -export { AnswersError } from './deprecated'; -export { AnswersRequest } from './deprecated'; - // Search API models export { SearchError } from './searchapi/SearchError'; diff --git a/src/models/searchservice/request/UniversalSearchRequest.ts b/src/models/searchservice/request/UniversalSearchRequest.ts index de9b49d9..8e4086a8 100644 --- a/src/models/searchservice/request/UniversalSearchRequest.ts +++ b/src/models/searchservice/request/UniversalSearchRequest.ts @@ -29,7 +29,7 @@ export interface UniversalSearchRequest extends SearchRequest { * The URl of the page which referred the user to the current page. * * @example - * If a user is on https://www.yext.com/ and navigates to https://www.yext.com/answers and perform a search, + * If a user is on https://www.yext.com/ and navigates to https://search.yext.com/ and perform a search, * the referrerPageUrl would be https://www.yext.com/. */ referrerPageUrl?: string, From 1d24810e69193afa414adcb0cc95dd56fb4d28af Mon Sep 17 00:00:00 2001 From: juliannzhou <65748924+juliannzhou@users.noreply.github.com> Date: Wed, 17 Aug 2022 15:44:14 -0400 Subject: [PATCH 18/23] make additionalQueryPublic public (#217) This PR removes @alpha tag from additionalQueryParameter and makes it public. J=SLAP-1398 TEST=manual Original PR (#79) made this property alpha to prevent access from typescript users of core, but this property can be public after release. --- ...core.basesearchconfig.additionalqueryparams.md | 15 +++++++++++++++ docs/search-core.basesearchconfig.md | 1 + etc/search-core.api.md | 1 - src/models/core/SearchConfig.ts | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 docs/search-core.basesearchconfig.additionalqueryparams.md diff --git a/docs/search-core.basesearchconfig.additionalqueryparams.md b/docs/search-core.basesearchconfig.additionalqueryparams.md new file mode 100644 index 00000000..b3891309 --- /dev/null +++ b/docs/search-core.basesearchconfig.additionalqueryparams.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseSearchConfig](./search-core.basesearchconfig.md) > [additionalQueryParams](./search-core.basesearchconfig.additionalqueryparams.md) + +## BaseSearchConfig.additionalQueryParams property + +Additional query params added on to every request. + +Signature: + +```typescript +additionalQueryParams?: { + [key: string]: string | number | boolean; + }; +``` diff --git a/docs/search-core.basesearchconfig.md b/docs/search-core.basesearchconfig.md index 8f9407ef..e3e2d413 100644 --- a/docs/search-core.basesearchconfig.md +++ b/docs/search-core.basesearchconfig.md @@ -16,6 +16,7 @@ export interface BaseSearchConfig | Property | Type | Description | | --- | --- | --- | +| [additionalQueryParams?](./search-core.basesearchconfig.additionalqueryparams.md) | { \[key: string\]: string \| number \| boolean; } | (Optional) Additional query params added on to every request. | | [endpoints?](./search-core.basesearchconfig.endpoints.md) | [Endpoints](./search-core.endpoints.md) | (Optional) Overrides for the URLs which are used when making requests to the Search API. | | [experienceKey](./search-core.basesearchconfig.experiencekey.md) | string | The experience key of the search experience. | | [experienceVersion?](./search-core.basesearchconfig.experienceversion.md) | 'STAGING' \| 'PRODUCTION' \| string \| number | (Optional) The version of the search experience configuration. | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index b278cce4..290489bb 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -105,7 +105,6 @@ export interface BaseFieldValueDirectAnswer extends DirectAnswer // @public export interface BaseSearchConfig { - // @alpha additionalQueryParams?: { [key: string]: string | number | boolean; }; diff --git a/src/models/core/SearchConfig.ts b/src/models/core/SearchConfig.ts index 6a198725..ae6e2178 100644 --- a/src/models/core/SearchConfig.ts +++ b/src/models/core/SearchConfig.ts @@ -31,7 +31,7 @@ export interface BaseSearchConfig { /** * Additional query params added on to every request. * - * @alpha + * @public */ additionalQueryParams?: { [key: string]: string | number | boolean From 1128f6b91bf0aaa3673ba47b6ff39ecd9d4d7eab Mon Sep 17 00:00:00 2001 From: juliannzhou <65748924+juliannzhou@users.noreply.github.com> Date: Wed, 17 Aug 2022 16:06:57 -0400 Subject: [PATCH 19/23] bump alpha version (#218) This PR bump alpha after removing all deprecated code. After new version is published, it will prompt error for deprecated re-exports that needs removal in headless. --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ed7c0324..1cc42923 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.215", + "version": "2.0.0-alpha.218", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "2.0.0-alpha.215", + "version": "2.0.0-alpha.218", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", diff --git a/package.json b/package.json index 479f01e6..dcac6c28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.215", + "version": "2.0.0-alpha.218", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js", From ae54b115888eeb7567282146e1de0841b9e5513e Mon Sep 17 00:00:00 2001 From: Yen Truong <36055303+yen-tt@users.noreply.github.com> Date: Mon, 22 Aug 2022 13:06:01 -0400 Subject: [PATCH 20/23] beta version for QA related to DA and StaticFilters changes (#219) beta version for QA related to DA and StaticFilters changes --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1cc42923..b1d8ea65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.218", + "version": "2.0.0-beta.219", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "2.0.0-alpha.218", + "version": "2.0.0-beta.219", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", diff --git a/package.json b/package.json index dcac6c28..dd4672b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.218", + "version": "2.0.0-beta.219", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js", From acfee54310bd3750b56cf6bb3ff7d1fea5109444 Mon Sep 17 00:00:00 2001 From: Tom Meyer Date: Tue, 6 Sep 2022 13:08:43 -0400 Subject: [PATCH 21/23] Add `HoursDirectAnswer` Field Value Direct Answer. (#220) This PR adds the new `HoursDirectAnswer` Field Value Direct Answer. The typing of an Hours Field Value is somewhat complex. All TypeScript types I created for the value were exported. I updated to Direct Answer portion of the test-site as well. J=SLAP-2359 TEST=auto --- THIRD-PARTY-NOTICES | 22 ++++--- docs/search-core.builtinfieldtype.md | 1 + docs/search-core.dayhour.isclosed.md | 11 ++++ docs/search-core.dayhour.md | 21 +++++++ docs/search-core.dayhour.openintervals.md | 11 ++++ docs/search-core.fieldvaluedirectanswer.md | 4 +- docs/search-core.holidayhours.date.md | 11 ++++ docs/search-core.holidayhours.isclosed.md | 11 ++++ ...search-core.holidayhours.isregularhours.md | 11 ++++ docs/search-core.holidayhours.md | 23 +++++++ .../search-core.holidayhours.openintervals.md | 11 ++++ docs/search-core.hours.friday.md | 11 ++++ docs/search-core.hours.holidayhours.md | 11 ++++ docs/search-core.hours.md | 28 +++++++++ docs/search-core.hours.monday.md | 11 ++++ docs/search-core.hours.reopendate.md | 11 ++++ docs/search-core.hours.saturday.md | 11 ++++ docs/search-core.hours.sunday.md | 11 ++++ docs/search-core.hours.thursday.md | 11 ++++ docs/search-core.hours.tuesday.md | 11 ++++ docs/search-core.hours.wednesday.md | 11 ++++ ...search-core.hoursdirectanswer.fieldtype.md | 11 ++++ docs/search-core.hoursdirectanswer.md | 21 +++++++ docs/search-core.interval.end.md | 11 ++++ docs/search-core.interval.md | 21 +++++++ docs/search-core.interval.start.md | 11 ++++ docs/search-core.md | 5 ++ etc/search-core.api.md | 60 +++++++++++++++++- .../response/directanswer/BuiltInFieldType.ts | 2 +- .../directanswer/FieldValueDirectAnswer.ts | 6 +- .../HoursDirectAnswer.ts | 61 +++++++++++++++++++ .../fieldvaluedirectanswers/index.ts | 1 + test-site/src/ts/initDirectAnswers.ts | 6 ++ 33 files changed, 465 insertions(+), 15 deletions(-) create mode 100644 docs/search-core.dayhour.isclosed.md create mode 100644 docs/search-core.dayhour.md create mode 100644 docs/search-core.dayhour.openintervals.md create mode 100644 docs/search-core.holidayhours.date.md create mode 100644 docs/search-core.holidayhours.isclosed.md create mode 100644 docs/search-core.holidayhours.isregularhours.md create mode 100644 docs/search-core.holidayhours.md create mode 100644 docs/search-core.holidayhours.openintervals.md create mode 100644 docs/search-core.hours.friday.md create mode 100644 docs/search-core.hours.holidayhours.md create mode 100644 docs/search-core.hours.md create mode 100644 docs/search-core.hours.monday.md create mode 100644 docs/search-core.hours.reopendate.md create mode 100644 docs/search-core.hours.saturday.md create mode 100644 docs/search-core.hours.sunday.md create mode 100644 docs/search-core.hours.thursday.md create mode 100644 docs/search-core.hours.tuesday.md create mode 100644 docs/search-core.hours.wednesday.md create mode 100644 docs/search-core.hoursdirectanswer.fieldtype.md create mode 100644 docs/search-core.hoursdirectanswer.md create mode 100644 docs/search-core.interval.end.md create mode 100644 docs/search-core.interval.md create mode 100644 docs/search-core.interval.start.md create mode 100644 src/models/searchservice/response/directanswer/fieldvaluedirectanswers/HoursDirectAnswer.ts diff --git a/THIRD-PARTY-NOTICES b/THIRD-PARTY-NOTICES index 7e7197aa..3f2aa919 100644 --- a/THIRD-PARTY-NOTICES +++ b/THIRD-PARTY-NOTICES @@ -1,4 +1,7 @@ -The following NPM package may be included in this product: +This file was generated with the generate-license-file npm package! +https://www.npmjs.com/package/generate-license-file + +The following npm package may be included in this product: - @babel/runtime-corejs3@7.12.5 @@ -29,7 +32,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------- -The following NPM package may be included in this product: +The following npm package may be included in this product: - core-js-pure@3.8.3 @@ -57,7 +60,7 @@ THE SOFTWARE. ----------- -The following NPM package may be included in this product: +The following npm package may be included in this product: - cross-fetch@3.1.5 @@ -87,7 +90,7 @@ SOFTWARE. ----------- -The following NPM package may be included in this product: +The following npm package may be included in this product: - node-fetch@2.6.7 @@ -117,7 +120,7 @@ SOFTWARE. ----------- -The following NPM package may be included in this product: +The following npm package may be included in this product: - regenerator-runtime@0.13.7 @@ -147,7 +150,7 @@ SOFTWARE. ----------- -The following NPM package may be included in this product: +The following npm package may be included in this product: - tr46@0.0.3 @@ -157,7 +160,7 @@ This package contains the following license and notice below: ----------- -The following NPM package may be included in this product: +The following npm package may be included in this product: - webidl-conversions@3.0.1 @@ -178,7 +181,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ----------- -The following NPM package may be included in this product: +The following npm package may be included in this product: - whatwg-url@5.0.0 @@ -208,4 +211,5 @@ THE SOFTWARE. ----------- -This file was generated with generate-license-file! https://www.npmjs.com/package/generate-license-file +This file was generated with the generate-license-file npm package! +https://www.npmjs.com/package/generate-license-file diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index a172ea65..8c7d0d70 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -22,6 +22,7 @@ export declare enum BuiltInFieldType | Decimal | "decimal" | | | Email | "email" | | | FacebookURL | "facebook_url" | | +| Hours | "hours" | | | InstagramHandle | "instagram_handle" | | | Integer | "integer" | | | IOSAppURL | "ios_app_url" | | diff --git a/docs/search-core.dayhour.isclosed.md b/docs/search-core.dayhour.isclosed.md new file mode 100644 index 00000000..18f41a97 --- /dev/null +++ b/docs/search-core.dayhour.isclosed.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DayHour](./search-core.dayhour.md) > [isClosed](./search-core.dayhour.isclosed.md) + +## DayHour.isClosed property + +Signature: + +```typescript +isClosed?: boolean; +``` diff --git a/docs/search-core.dayhour.md b/docs/search-core.dayhour.md new file mode 100644 index 00000000..0b7ce429 --- /dev/null +++ b/docs/search-core.dayhour.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DayHour](./search-core.dayhour.md) + +## DayHour interface + +An interface for a day's hours to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). + +Signature: + +```typescript +export interface DayHour +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [isClosed?](./search-core.dayhour.isclosed.md) | boolean | (Optional) | +| [openIntervals?](./search-core.dayhour.openintervals.md) | [Interval](./search-core.interval.md)\[\] | (Optional) | + diff --git a/docs/search-core.dayhour.openintervals.md b/docs/search-core.dayhour.openintervals.md new file mode 100644 index 00000000..29827320 --- /dev/null +++ b/docs/search-core.dayhour.openintervals.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [DayHour](./search-core.dayhour.md) > [openIntervals](./search-core.dayhour.openintervals.md) + +## DayHour.openIntervals property + +Signature: + +```typescript +openIntervals?: Interval[]; +``` diff --git a/docs/search-core.fieldvaluedirectanswer.md b/docs/search-core.fieldvaluedirectanswer.md index 7d8f504b..952a3fbb 100644 --- a/docs/search-core.fieldvaluedirectanswer.md +++ b/docs/search-core.fieldvaluedirectanswer.md @@ -9,7 +9,7 @@ Possible built-in and custom [BaseFieldValueDirectAnswer](./search-core.basefiel Signature: ```typescript -export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer | AddressDirectAnswer; +export declare type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer | AddressDirectAnswer | HoursDirectAnswer; ``` -References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md), [PhoneDirectAnswer](./search-core.phonedirectanswer.md), [EmailDirectAnswer](./search-core.emaildirectanswer.md), [AddressDirectAnswer](./search-core.addressdirectanswer.md) +References: [UnknownFieldValueDirectAnswer](./search-core.unknownfieldvaluedirectanswer.md), [TextDirectAnswer](./search-core.textdirectanswer.md), [UrlDirectAnswer](./search-core.urldirectanswer.md), [RichTextDirectAnswer](./search-core.richtextdirectanswer.md), [DecimalDirectAnswer](./search-core.decimaldirectanswer.md), [FacebookUrlDirectAnswer](./search-core.facebookurldirectanswer.md), [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md), [TwitterHandleDirectAnswer](./search-core.twitterhandledirectanswer.md), [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md), [AndroidAppUrlDirectAnswer](./search-core.androidappurldirectanswer.md), [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md), [IntegerDirectAnswer](./search-core.integerdirectanswer.md), [PhoneDirectAnswer](./search-core.phonedirectanswer.md), [EmailDirectAnswer](./search-core.emaildirectanswer.md), [AddressDirectAnswer](./search-core.addressdirectanswer.md), [HoursDirectAnswer](./search-core.hoursdirectanswer.md) diff --git a/docs/search-core.holidayhours.date.md b/docs/search-core.holidayhours.date.md new file mode 100644 index 00000000..83353f60 --- /dev/null +++ b/docs/search-core.holidayhours.date.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [HolidayHours](./search-core.holidayhours.md) > [date](./search-core.holidayhours.date.md) + +## HolidayHours.date property + +Signature: + +```typescript +date: string; +``` diff --git a/docs/search-core.holidayhours.isclosed.md b/docs/search-core.holidayhours.isclosed.md new file mode 100644 index 00000000..fc2486a4 --- /dev/null +++ b/docs/search-core.holidayhours.isclosed.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [HolidayHours](./search-core.holidayhours.md) > [isClosed](./search-core.holidayhours.isclosed.md) + +## HolidayHours.isClosed property + +Signature: + +```typescript +isClosed?: boolean; +``` diff --git a/docs/search-core.holidayhours.isregularhours.md b/docs/search-core.holidayhours.isregularhours.md new file mode 100644 index 00000000..da39c59c --- /dev/null +++ b/docs/search-core.holidayhours.isregularhours.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [HolidayHours](./search-core.holidayhours.md) > [isRegularHours](./search-core.holidayhours.isregularhours.md) + +## HolidayHours.isRegularHours property + +Signature: + +```typescript +isRegularHours?: boolean; +``` diff --git a/docs/search-core.holidayhours.md b/docs/search-core.holidayhours.md new file mode 100644 index 00000000..9decf23b --- /dev/null +++ b/docs/search-core.holidayhours.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [HolidayHours](./search-core.holidayhours.md) + +## HolidayHours interface + +An interface for holiday hours to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). + +Signature: + +```typescript +export interface HolidayHours +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [date](./search-core.holidayhours.date.md) | string | | +| [isClosed?](./search-core.holidayhours.isclosed.md) | boolean | (Optional) | +| [isRegularHours?](./search-core.holidayhours.isregularhours.md) | boolean | (Optional) | +| [openIntervals?](./search-core.holidayhours.openintervals.md) | [Interval](./search-core.interval.md)\[\] | (Optional) | + diff --git a/docs/search-core.holidayhours.openintervals.md b/docs/search-core.holidayhours.openintervals.md new file mode 100644 index 00000000..38a3dcc3 --- /dev/null +++ b/docs/search-core.holidayhours.openintervals.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [HolidayHours](./search-core.holidayhours.md) > [openIntervals](./search-core.holidayhours.openintervals.md) + +## HolidayHours.openIntervals property + +Signature: + +```typescript +openIntervals?: Interval[]; +``` diff --git a/docs/search-core.hours.friday.md b/docs/search-core.hours.friday.md new file mode 100644 index 00000000..50c6b426 --- /dev/null +++ b/docs/search-core.hours.friday.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [friday](./search-core.hours.friday.md) + +## Hours.friday property + +Signature: + +```typescript +friday?: DayHour; +``` diff --git a/docs/search-core.hours.holidayhours.md b/docs/search-core.hours.holidayhours.md new file mode 100644 index 00000000..16decf5b --- /dev/null +++ b/docs/search-core.hours.holidayhours.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [holidayHours](./search-core.hours.holidayhours.md) + +## Hours.holidayHours property + +Signature: + +```typescript +holidayHours?: HolidayHours[]; +``` diff --git a/docs/search-core.hours.md b/docs/search-core.hours.md new file mode 100644 index 00000000..2498686f --- /dev/null +++ b/docs/search-core.hours.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) + +## Hours interface + +An interface for hours fields to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). + +Signature: + +```typescript +export interface Hours +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [friday?](./search-core.hours.friday.md) | [DayHour](./search-core.dayhour.md) | (Optional) | +| [holidayHours?](./search-core.hours.holidayhours.md) | [HolidayHours](./search-core.holidayhours.md)\[\] | (Optional) | +| [monday?](./search-core.hours.monday.md) | [DayHour](./search-core.dayhour.md) | (Optional) | +| [reopenDate?](./search-core.hours.reopendate.md) | string | (Optional) | +| [saturday?](./search-core.hours.saturday.md) | [DayHour](./search-core.dayhour.md) | (Optional) | +| [sunday?](./search-core.hours.sunday.md) | [DayHour](./search-core.dayhour.md) | (Optional) | +| [thursday?](./search-core.hours.thursday.md) | [DayHour](./search-core.dayhour.md) | (Optional) | +| [tuesday?](./search-core.hours.tuesday.md) | [DayHour](./search-core.dayhour.md) | (Optional) | +| [wednesday?](./search-core.hours.wednesday.md) | [DayHour](./search-core.dayhour.md) | (Optional) | + diff --git a/docs/search-core.hours.monday.md b/docs/search-core.hours.monday.md new file mode 100644 index 00000000..ac0ebfd2 --- /dev/null +++ b/docs/search-core.hours.monday.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [monday](./search-core.hours.monday.md) + +## Hours.monday property + +Signature: + +```typescript +monday?: DayHour; +``` diff --git a/docs/search-core.hours.reopendate.md b/docs/search-core.hours.reopendate.md new file mode 100644 index 00000000..367b1252 --- /dev/null +++ b/docs/search-core.hours.reopendate.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [reopenDate](./search-core.hours.reopendate.md) + +## Hours.reopenDate property + +Signature: + +```typescript +reopenDate?: string; +``` diff --git a/docs/search-core.hours.saturday.md b/docs/search-core.hours.saturday.md new file mode 100644 index 00000000..300c7369 --- /dev/null +++ b/docs/search-core.hours.saturday.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [saturday](./search-core.hours.saturday.md) + +## Hours.saturday property + +Signature: + +```typescript +saturday?: DayHour; +``` diff --git a/docs/search-core.hours.sunday.md b/docs/search-core.hours.sunday.md new file mode 100644 index 00000000..76f29e76 --- /dev/null +++ b/docs/search-core.hours.sunday.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [sunday](./search-core.hours.sunday.md) + +## Hours.sunday property + +Signature: + +```typescript +sunday?: DayHour; +``` diff --git a/docs/search-core.hours.thursday.md b/docs/search-core.hours.thursday.md new file mode 100644 index 00000000..e8eeb401 --- /dev/null +++ b/docs/search-core.hours.thursday.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [thursday](./search-core.hours.thursday.md) + +## Hours.thursday property + +Signature: + +```typescript +thursday?: DayHour; +``` diff --git a/docs/search-core.hours.tuesday.md b/docs/search-core.hours.tuesday.md new file mode 100644 index 00000000..62718769 --- /dev/null +++ b/docs/search-core.hours.tuesday.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [tuesday](./search-core.hours.tuesday.md) + +## Hours.tuesday property + +Signature: + +```typescript +tuesday?: DayHour; +``` diff --git a/docs/search-core.hours.wednesday.md b/docs/search-core.hours.wednesday.md new file mode 100644 index 00000000..63522c30 --- /dev/null +++ b/docs/search-core.hours.wednesday.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Hours](./search-core.hours.md) > [wednesday](./search-core.hours.wednesday.md) + +## Hours.wednesday property + +Signature: + +```typescript +wednesday?: DayHour; +``` diff --git a/docs/search-core.hoursdirectanswer.fieldtype.md b/docs/search-core.hoursdirectanswer.fieldtype.md new file mode 100644 index 00000000..19d8efa0 --- /dev/null +++ b/docs/search-core.hoursdirectanswer.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [HoursDirectAnswer](./search-core.hoursdirectanswer.md) > [fieldType](./search-core.hoursdirectanswer.fieldtype.md) + +## HoursDirectAnswer.fieldType property + +Signature: + +```typescript +fieldType: EnumOrLiteral; +``` diff --git a/docs/search-core.hoursdirectanswer.md b/docs/search-core.hoursdirectanswer.md new file mode 100644 index 00000000..977144fd --- /dev/null +++ b/docs/search-core.hoursdirectanswer.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [HoursDirectAnswer](./search-core.hoursdirectanswer.md) + +## HoursDirectAnswer interface + +A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with 'hours' field type. + +Signature: + +```typescript +export interface HoursDirectAnswer extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<[Hours](./search-core.hours.md) \| [Hours](./search-core.hours.md)\[\]> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.hoursdirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType.Hours](./search-core.builtinfieldtype.md)> | | + diff --git a/docs/search-core.interval.end.md b/docs/search-core.interval.end.md new file mode 100644 index 00000000..9b259347 --- /dev/null +++ b/docs/search-core.interval.end.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Interval](./search-core.interval.md) > [end](./search-core.interval.end.md) + +## Interval.end property + +Signature: + +```typescript +end?: string; +``` diff --git a/docs/search-core.interval.md b/docs/search-core.interval.md new file mode 100644 index 00000000..38be524b --- /dev/null +++ b/docs/search-core.interval.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Interval](./search-core.interval.md) + +## Interval interface + +An interface for a time interval to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). + +Signature: + +```typescript +export interface Interval +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [end?](./search-core.interval.end.md) | string | (Optional) | +| [start?](./search-core.interval.start.md) | string | (Optional) | + diff --git a/docs/search-core.interval.start.md b/docs/search-core.interval.start.md new file mode 100644 index 00000000..96fba5f6 --- /dev/null +++ b/docs/search-core.interval.start.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [Interval](./search-core.interval.md) > [start](./search-core.interval.start.md) + +## Interval.start property + +Signature: + +```typescript +start?: string; +``` diff --git a/docs/search-core.md b/docs/search-core.md index 1f08bee0..615f03a8 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -55,6 +55,7 @@ | [ComplexURL](./search-core.complexurl.md) | The shape of a [BuiltInFieldType.ComplexURL](./search-core.builtinfieldtype.md) DirectAnswer value | | [ComplexUrlDirectAnswer](./search-core.complexurldirectanswer.md) | A direct answer for a complex url field. | | [ConjunctionStaticFilter](./search-core.conjunctionstaticfilter.md) | A static filter composed by combining other static filters with the logical AND operator. | +| [DayHour](./search-core.dayhour.md) | An interface for a day's hours to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). | | [DecimalDirectAnswer](./search-core.decimaldirectanswer.md) | A direct answer for a decimal field, which is a number represented using a string. | | [DirectAnswer](./search-core.directanswer.md) | A direct answer to a search. | | [DisjunctionStaticFilter](./search-core.disjunctionstaticfilter.md) | A static filter composed by combining filters with the logical OR operator. The combined filters can either be field value filters or other disjunction filters. | @@ -71,8 +72,12 @@ | [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. | | [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. | | [HighlightedValue](./search-core.highlightedvalue.md) | A field value and its substring matches as emphasized by the Search API. | +| [HolidayHours](./search-core.holidayhours.md) | An interface for holiday hours to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). | +| [Hours](./search-core.hours.md) | An interface for hours fields to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). | +| [HoursDirectAnswer](./search-core.hoursdirectanswer.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) interface with 'hours' field type. | | [InstagramHandleDirectAnswer](./search-core.instagramhandledirectanswer.md) | A direct answer for an instagram handle field. | | [IntegerDirectAnswer](./search-core.integerdirectanswer.md) | A direct answer for an integer field. | +| [Interval](./search-core.interval.md) | An interface for a time interval to use in [BaseFieldValueDirectAnswer.value](./search-core.basefieldvaluedirectanswer.value.md). | | [IosAppUrlDirectAnswer](./search-core.iosappurldirectanswer.md) | A direct answer for an iOS app url field. | | [LatLong](./search-core.latlong.md) | The latitude and longitude of the user making the request. Used to bias the results. | | [LocationBias](./search-core.locationbias.md) | Information about the user's location. | diff --git a/etc/search-core.api.md b/etc/search-core.api.md index 290489bb..1cbf0217 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -130,6 +130,8 @@ export enum BuiltInFieldType { // (undocumented) FacebookURL = "facebook_url", // (undocumented) + Hours = "hours", + // (undocumented) InstagramHandle = "instagram_handle", // (undocumented) Integer = "integer", @@ -181,6 +183,14 @@ export interface ConjunctionStaticFilter { // @public export type Context = any; +// @public +export interface DayHour { + // (undocumented) + isClosed?: boolean; + // (undocumented) + openIntervals?: Interval[]; +} + // @public export interface DecimalDirectAnswer extends BaseFieldValueDirectAnswer { // (undocumented) @@ -295,7 +305,7 @@ export interface FailedVertical { export type FeaturedSnippetDirectAnswer = MultiLineTextSnippetDirectAnswer | RichTextSnippetDirectAnswer; // @public -export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer | AddressDirectAnswer; +export type FieldValueDirectAnswer = UnknownFieldValueDirectAnswer | TextDirectAnswer | UrlDirectAnswer | RichTextDirectAnswer | DecimalDirectAnswer | FacebookUrlDirectAnswer | InstagramHandleDirectAnswer | TwitterHandleDirectAnswer | IosAppUrlDirectAnswer | AndroidAppUrlDirectAnswer | ComplexUrlDirectAnswer | IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer | AddressDirectAnswer | HoursDirectAnswer; // @public export interface FieldValueFilter { @@ -350,6 +360,46 @@ export interface HighlightedValue { value: string; } +// @public +export interface HolidayHours { + // (undocumented) + date: string; + // (undocumented) + isClosed?: boolean; + // (undocumented) + isRegularHours?: boolean; + // (undocumented) + openIntervals?: Interval[]; +} + +// @public +export interface Hours { + // (undocumented) + friday?: DayHour; + // (undocumented) + holidayHours?: HolidayHours[]; + // (undocumented) + monday?: DayHour; + // (undocumented) + reopenDate?: string; + // (undocumented) + saturday?: DayHour; + // (undocumented) + sunday?: DayHour; + // (undocumented) + thursday?: DayHour; + // (undocumented) + tuesday?: DayHour; + // (undocumented) + wednesday?: DayHour; +} + +// @public +export interface HoursDirectAnswer extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: EnumOrLiteral; +} + // @public export interface InstagramHandleDirectAnswer extends BaseFieldValueDirectAnswer { // (undocumented) @@ -362,6 +412,14 @@ export interface IntegerDirectAnswer extends BaseFieldValueDirectAnswer fieldType: EnumOrLiteral; } +// @public +export interface Interval { + // (undocumented) + end?: string; + // (undocumented) + start?: string; +} + // @public export interface IosAppUrlDirectAnswer extends BaseFieldValueDirectAnswer { // (undocumented) diff --git a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts index 5ee121a4..8251ecb0 100644 --- a/src/models/searchservice/response/directanswer/BuiltInFieldType.ts +++ b/src/models/searchservice/response/directanswer/BuiltInFieldType.ts @@ -14,7 +14,7 @@ export enum BuiltInFieldType { TwitterHandle = 'twitter_handle', Phone = 'phone', Address = 'address', - // Hours = 'hours', + Hours = 'hours', Decimal = 'decimal', Integer = 'integer', SingleLineText = 'single_line_text', diff --git a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts index ce13cd91..411a783e 100644 --- a/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -13,7 +13,8 @@ import { IntegerDirectAnswer, PhoneDirectAnswer, EmailDirectAnswer, - AddressDirectAnswer + AddressDirectAnswer, + HoursDirectAnswer } from './fieldvaluedirectanswers'; /** @@ -36,4 +37,5 @@ export type FieldValueDirectAnswer = IntegerDirectAnswer | PhoneDirectAnswer | EmailDirectAnswer | - AddressDirectAnswer; + AddressDirectAnswer | + HoursDirectAnswer; diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/HoursDirectAnswer.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/HoursDirectAnswer.ts new file mode 100644 index 00000000..61729fb9 --- /dev/null +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/HoursDirectAnswer.ts @@ -0,0 +1,61 @@ +import { BuiltInFieldType } from '../BuiltInFieldType'; +import { BaseFieldValueDirectAnswer } from '../BaseFieldValueDirectAnswer'; +import { EnumOrLiteral } from '../../../../utils/EnumOrLiteral'; + +/** + * A {@link BaseFieldValueDirectAnswer} interface with 'hours' field type. + * + * @public + */ +export interface HoursDirectAnswer extends BaseFieldValueDirectAnswer { + fieldType: EnumOrLiteral +} + +/** + * An interface for hours fields to use in {@link BaseFieldValueDirectAnswer.value}. + * + * @public + */ +export interface Hours { + monday?: DayHour, + tuesday?: DayHour, + wednesday?: DayHour, + thursday?: DayHour, + friday?: DayHour, + saturday?: DayHour, + sunday?: DayHour, + holidayHours?: HolidayHours[], + reopenDate?: string +} + +/** + * An interface for a day's hours to use in {@link BaseFieldValueDirectAnswer.value}. + * + * @public + */ +export interface DayHour { + openIntervals?: Interval[], + isClosed?: boolean +} + +/** + * An interface for holiday hours to use in {@link BaseFieldValueDirectAnswer.value}. + * + * @public + */ +export interface HolidayHours { + date: string, + openIntervals?: Interval[], + isClosed?: boolean, + isRegularHours?: boolean +} + +/** + * An interface for a time interval to use in {@link BaseFieldValueDirectAnswer.value}. + * + * @public + */ +export interface Interval { + start?: string, + end?: string +} diff --git a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts index d568df39..4b0bf664 100644 --- a/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts +++ b/src/models/searchservice/response/directanswer/fieldvaluedirectanswers/index.ts @@ -13,3 +13,4 @@ export { IntegerDirectAnswer } from './IntegerDirectAnswer'; export { AddressDirectAnswer, Address } from './AddressDirectAnswer'; export { PhoneDirectAnswer } from './PhoneDirectAnswer'; export { EmailDirectAnswer } from './EmailDirectAnswer'; +export { HoursDirectAnswer, Hours, HolidayHours, DayHour, Interval } from './HoursDirectAnswer'; diff --git a/test-site/src/ts/initDirectAnswers.ts b/test-site/src/ts/initDirectAnswers.ts index 22219242..056bd593 100644 --- a/test-site/src/ts/initDirectAnswers.ts +++ b/test-site/src/ts/initDirectAnswers.ts @@ -58,6 +58,9 @@ const FIELD_VALUE_QUERIES = { ], [BuiltInFieldType.Email]: [ 'oliver shi email' // string[] + ], + [BuiltInFieldType.Hours]: [ + 'what are Abington hours?' ] }; @@ -142,6 +145,9 @@ function ensureFieldValueSwitchability(da: FieldValueDirectAnswer) { case BuiltInFieldType.Email: console.log(da.value); break; + case BuiltInFieldType.Hours: + console.log(da.value); + break; } } From 393a710b836e5b3d4c9edbdd4a7bc613197ef3d0 Mon Sep 17 00:00:00 2001 From: Yen Truong <36055303+yen-tt@users.noreply.github.com> Date: Tue, 6 Sep 2022 14:23:54 -0400 Subject: [PATCH 22/23] alpha version for Hours Direct Answer (#221) - publish alpha version to properly update Headless to export the newly added interfaces. --- THIRD-PARTY-NOTICES | 22 ++++++--------- package-lock.json | 68 ++++++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 44 insertions(+), 48 deletions(-) diff --git a/THIRD-PARTY-NOTICES b/THIRD-PARTY-NOTICES index 3f2aa919..7e7197aa 100644 --- a/THIRD-PARTY-NOTICES +++ b/THIRD-PARTY-NOTICES @@ -1,7 +1,4 @@ -This file was generated with the generate-license-file npm package! -https://www.npmjs.com/package/generate-license-file - -The following npm package may be included in this product: +The following NPM package may be included in this product: - @babel/runtime-corejs3@7.12.5 @@ -32,7 +29,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------- -The following npm package may be included in this product: +The following NPM package may be included in this product: - core-js-pure@3.8.3 @@ -60,7 +57,7 @@ THE SOFTWARE. ----------- -The following npm package may be included in this product: +The following NPM package may be included in this product: - cross-fetch@3.1.5 @@ -90,7 +87,7 @@ SOFTWARE. ----------- -The following npm package may be included in this product: +The following NPM package may be included in this product: - node-fetch@2.6.7 @@ -120,7 +117,7 @@ SOFTWARE. ----------- -The following npm package may be included in this product: +The following NPM package may be included in this product: - regenerator-runtime@0.13.7 @@ -150,7 +147,7 @@ SOFTWARE. ----------- -The following npm package may be included in this product: +The following NPM package may be included in this product: - tr46@0.0.3 @@ -160,7 +157,7 @@ This package contains the following license and notice below: ----------- -The following npm package may be included in this product: +The following NPM package may be included in this product: - webidl-conversions@3.0.1 @@ -181,7 +178,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ----------- -The following npm package may be included in this product: +The following NPM package may be included in this product: - whatwg-url@5.0.0 @@ -211,5 +208,4 @@ THE SOFTWARE. ----------- -This file was generated with the generate-license-file npm package! -https://www.npmjs.com/package/generate-license-file +This file was generated with generate-license-file! https://www.npmjs.com/package/generate-license-file diff --git a/package-lock.json b/package-lock.json index b1d8ea65..3d75e1c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "2.0.0-beta.219", + "version": "2.0.0-alpha.221", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "2.0.0-beta.219", + "version": "2.0.0-alpha.221", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", @@ -5810,9 +5810,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true, "engines": { "node": ">=6" @@ -5844,7 +5844,7 @@ "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { "node": ">=0.8" @@ -6176,7 +6176,7 @@ "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", "dev": true, "dependencies": { "clone": "^1.0.2" @@ -6616,9 +6616,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -8611,9 +8611,9 @@ } }, "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -14168,9 +14168,9 @@ } }, "node_modules/rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "dependencies": { "tslib": "^1.9.0" @@ -15439,7 +15439,7 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "node_modules/timsort": { @@ -16056,7 +16056,7 @@ "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "dependencies": { "defaults": "^1.0.3" @@ -20830,9 +20830,9 @@ } }, "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, "cli-width": { @@ -20855,7 +20855,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-deep": { @@ -21127,7 +21127,7 @@ "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", "dev": true, "requires": { "clone": "^1.0.2" @@ -21567,9 +21567,9 @@ } }, "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, "requires": {} }, @@ -22966,9 +22966,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -27256,9 +27256,9 @@ } }, "rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -28270,7 +28270,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "timsort": { @@ -28749,7 +28749,7 @@ "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" diff --git a/package.json b/package.json index dd4672b8..5de4daa9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "2.0.0-beta.219", + "version": "2.0.0-alpha.221", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js", From 5d7e7faf0a7f27cc82897f2389586fcb7a0491f1 Mon Sep 17 00:00:00 2001 From: Yen Truong Date: Tue, 6 Sep 2022 16:16:54 -0400 Subject: [PATCH 23/23] update version to 2.0.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d75e1c1..940ed4b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.221", + "version": "2.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yext/search-core", - "version": "2.0.0-alpha.221", + "version": "2.0.0", "license": "BSD-3-Clause", "dependencies": { "@babel/runtime-corejs3": "^7.12.5", diff --git a/package.json b/package.json index 5de4daa9..476db98c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@yext/search-core", - "version": "2.0.0-alpha.221", + "version": "2.0.0", "description": "Typescript Networking Library for the Yext Search API", "main": "./dist/commonjs/src/index.js", "module": "./dist/esm/src/index.js",