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.fieldtype.md b/docs/search-core.basefieldvaluedirectanswer.fieldtype.md new file mode 100644 index 00000000..a5f67900 --- /dev/null +++ b/docs/search-core.basefieldvaluedirectanswer.fieldtype.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [fieldType](./search-core.basefieldvaluedirectanswer.fieldtype.md) + +## BaseFieldValueDirectAnswer.fieldType property + +The field type of the direct answer. + +Signature: + +```typescript +fieldType: EnumOrLiteral | 'unknown'; +``` diff --git a/docs/search-core.basefieldvaluedirectanswer.md b/docs/search-core.basefieldvaluedirectanswer.md new file mode 100644 index 00000000..892b6578 --- /dev/null +++ b/docs/search-core.basefieldvaluedirectanswer.md @@ -0,0 +1,28 @@ + + +[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. | +| [fieldType](./search-core.basefieldvaluedirectanswer.fieldtype.md) | [EnumOrLiteral](./search-core.enumorliteral.md)<[BuiltInFieldType](./search-core.builtinfieldtype.md)> \| 'unknown' | The field type of the direct answer. | +| [relatedResult](./search-core.basefieldvaluedirectanswer.relatedresult.md) | [Result](./search-core.result.md) | The entity associated with 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. | +| [verticalKey](./search-core.basefieldvaluedirectanswer.verticalkey.md) | string | The vertical key of the direct answer. | + diff --git a/docs/search-core.fieldvaluedirectanswer.relatedresult.md b/docs/search-core.basefieldvaluedirectanswer.relatedresult.md similarity index 53% rename from docs/search-core.fieldvaluedirectanswer.relatedresult.md rename to docs/search-core.basefieldvaluedirectanswer.relatedresult.md index fe294b19..f0ba3c81 100644 --- a/docs/search-core.fieldvaluedirectanswer.relatedresult.md +++ b/docs/search-core.basefieldvaluedirectanswer.relatedresult.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [relatedResult](./search-core.fieldvaluedirectanswer.relatedresult.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [relatedResult](./search-core.basefieldvaluedirectanswer.relatedresult.md) -## FieldValueDirectAnswer.relatedResult property +## BaseFieldValueDirectAnswer.relatedResult property The entity associated with 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.fieldvaluedirectanswer.value.md b/docs/search-core.basefieldvaluedirectanswer.value.md similarity index 63% rename from docs/search-core.fieldvaluedirectanswer.value.md rename to docs/search-core.basefieldvaluedirectanswer.value.md index 7ea836d8..6dfb597d 100644 --- a/docs/search-core.fieldvaluedirectanswer.value.md +++ b/docs/search-core.basefieldvaluedirectanswer.value.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [value](./search-core.fieldvaluedirectanswer.value.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [value](./search-core.basefieldvaluedirectanswer.value.md) -## FieldValueDirectAnswer.value property +## BaseFieldValueDirectAnswer.value property The result of the direct answer. diff --git a/docs/search-core.fieldvaluedirectanswer.verticalkey.md b/docs/search-core.basefieldvaluedirectanswer.verticalkey.md similarity index 53% rename from docs/search-core.fieldvaluedirectanswer.verticalkey.md rename to docs/search-core.basefieldvaluedirectanswer.verticalkey.md index 5f9197cc..ddd7ae49 100644 --- a/docs/search-core.fieldvaluedirectanswer.verticalkey.md +++ b/docs/search-core.basefieldvaluedirectanswer.verticalkey.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [@yext/search-core](./search-core.md) > [FieldValueDirectAnswer](./search-core.fieldvaluedirectanswer.md) > [verticalKey](./search-core.fieldvaluedirectanswer.verticalkey.md) +[Home](./index.md) > [@yext/search-core](./search-core.md) > [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) > [verticalKey](./search-core.basefieldvaluedirectanswer.verticalkey.md) -## FieldValueDirectAnswer.verticalKey property +## BaseFieldValueDirectAnswer.verticalKey property The vertical key of the direct answer. diff --git a/docs/search-core.builtinfieldtype.md b/docs/search-core.builtinfieldtype.md index 85a39da5..60e7601f 100644 --- a/docs/search-core.builtinfieldtype.md +++ b/docs/search-core.builtinfieldtype.md @@ -16,5 +16,6 @@ export declare enum BuiltInFieldType | Member | Value | Description | | --- | --- | --- | -| Address | "address" | | +| MultiLineText | "multi_line_text" | | +| Phone | "phone" | | diff --git a/docs/search-core.customfieldvalueda.fieldtype.md b/docs/search-core.customfieldvalueda.fieldtype.md new file mode 100644 index 00000000..9430b7e9 --- /dev/null +++ b/docs/search-core.customfieldvalueda.fieldtype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [CustomFieldValueDA](./search-core.customfieldvalueda.md) > [fieldType](./search-core.customfieldvalueda.fieldtype.md) + +## CustomFieldValueDA.fieldType property + +Signature: + +```typescript +fieldType: 'unknown'; +``` diff --git a/docs/search-core.customfieldvalueda.md b/docs/search-core.customfieldvalueda.md new file mode 100644 index 00000000..bb6f8637 --- /dev/null +++ b/docs/search-core.customfieldvalueda.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@yext/search-core](./search-core.md) > [CustomFieldValueDA](./search-core.customfieldvalueda.md) + +## CustomFieldValueDA interface + +A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) with a field type outside of [BuiltInFieldType](./search-core.builtinfieldtype.md). + +Signature: + +```typescript +export interface CustomFieldValueDA extends BaseFieldValueDirectAnswer +``` +Extends: [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md)<T> + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldType](./search-core.customfieldvalueda.fieldtype.md) | 'unknown' | | + 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..9092439a 100644 --- a/docs/search-core.directanswer.md +++ b/docs/search-core.directanswer.md @@ -16,7 +16,7 @@ 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. | 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..9088419c 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: EnumOrLiteral | 'unknown'; ``` diff --git a/docs/search-core.featuredsnippetdirectanswer.md b/docs/search-core.featuredsnippetdirectanswer.md index b1727936..6440d3ab 100644 --- a/docs/search-core.featuredsnippetdirectanswer.md +++ b/docs/search-core.featuredsnippetdirectanswer.md @@ -17,7 +17,7 @@ export interface FeaturedSnippetDirectAnswer extends DirectAnswer<[BuiltInFieldType](./search-core.builtinfieldtype.md)> \| 'unknown' | 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. | 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..c9adb87a 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 = CustomFieldValueDA; ``` -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: [CustomFieldValueDA](./search-core.customfieldvalueda.md) diff --git a/docs/search-core.md b/docs/search-core.md index 0c117f68..cfee31a7 100644 --- a/docs/search-core.md +++ b/docs/search-core.md @@ -51,8 +51,10 @@ | [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. | +| [CustomFieldValueDA](./search-core.customfieldvalueda.md) | A [BaseFieldValueDirectAnswer](./search-core.basefieldvaluedirectanswer.md) with a field type outside of [BuiltInFieldType](./search-core.builtinfieldtype.md). | | [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. | @@ -61,7 +63,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. | | [FilterSearchRequest](./search-core.filtersearchrequest.md) | Options for a filtersearch request. | | [FilterSearchResponse](./search-core.filtersearchresponse.md) | The response of a filtersearch request. | @@ -109,6 +110,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/etc/search-core.api.md b/etc/search-core.api.md index b6c1b135..44bc3195 100644 --- a/etc/search-core.api.md +++ b/etc/search-core.api.md @@ -80,6 +80,18 @@ export interface AutocompleteService { export interface BaseAnswersConfig extends BaseSearchConfig { } +// @public +export interface BaseFieldValueDirectAnswer extends DirectAnswer { + entityName: string; + fieldApiName: string; + fieldName: string; + fieldType: EnumOrLiteral | 'unknown'; + relatedResult: Result; + type: DirectAnswerType.FieldValue; + value: T; + verticalKey: string; +} + // @public export interface BaseSearchConfig { // @alpha @@ -96,7 +108,9 @@ export interface BaseSearchConfig { // @public export enum BuiltInFieldType { // (undocumented) - Address = "address" + MultiLineText = "multi_line_text", + // (undocumented) + Phone = "phone" } // @public @@ -108,9 +122,15 @@ export interface ClientSDKHeaderValues { // @public export type Context = any; +// @public +export interface CustomFieldValueDA extends BaseFieldValueDirectAnswer { + // (undocumented) + fieldType: 'unknown'; +} + // @public export interface DirectAnswer { - fieldType: BuiltInFieldType | string; + fieldType: EnumOrLiteral | 'unknown'; relatedResult: Result; type: DirectAnswerType; value?: T; @@ -160,6 +180,9 @@ export interface Endpoints { verticalSearch?: string; } +// @public +export type EnumOrLiteral = T | `${T}`; + // @public export enum ErrorType { BackendError = "BACKEND_ERROR", @@ -192,7 +215,7 @@ export interface FailedVertical { // @public export interface FeaturedSnippetDirectAnswer extends DirectAnswer { - fieldType: BuiltInFieldType | string; + fieldType: EnumOrLiteral | 'unknown'; relatedResult: Result; snippet: Snippet; type: DirectAnswerType.FeaturedSnippet; @@ -201,16 +224,7 @@ export interface FeaturedSnippetDirectAnswer extends DirectAnswer extends DirectAnswer { - entityName: string; - fieldApiName: string; - fieldName: string; - fieldType: BuiltInFieldType | string; - relatedResult: Result; - type: DirectAnswerType.FieldValue; - value: T; - verticalKey: string; -} +export type FieldValueDirectAnswer = CustomFieldValueDA; // @public export interface FieldValueFilter { diff --git a/src/models/index.ts b/src/models/index.ts index 8e18e9e0..16f0e0ad 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -51,10 +51,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 { CustomFieldValueDA } from './searchservice/response/directanswer/CustomFieldValueDA'; +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'; @@ -70,7 +73,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'; @@ -79,3 +81,6 @@ export { LowerNumberRangeLimit, UpperNumberRangeLimit } from './searchservice/common/NumberRangeValue'; + +// Utils +export { EnumOrLiteral } from './utils/EnumOrLiteral'; 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 77% rename from src/models/searchservice/response/FieldValueDirectAnswer.ts rename to src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts index 5b5846c7..e192bffd 100644 --- a/src/models/searchservice/response/FieldValueDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/BaseFieldValueDirectAnswer.ts @@ -1,14 +1,15 @@ import { DirectAnswer } from './DirectAnswer'; import { DirectAnswerType } from './DirectAnswerType'; import { BuiltInFieldType } from './BuiltInFieldType'; -import { Result } from './Result'; +import { Result } from '../Result'; +import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; /** * 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} */ @@ -18,11 +19,11 @@ export interface FieldValueDirectAnswer extends DirectAnswer { /** {@inheritDoc DirectAnswer.verticalKey} */ verticalKey: string, /** {@inheritDoc DirectAnswer.fieldType} */ - fieldType: BuiltInFieldType | string, + fieldType: EnumOrLiteral | 'unknown', /** 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 85% rename from src/models/searchservice/response/BuiltInFieldType.ts rename to src/models/searchservice/response/directanswer/BuiltInFieldType.ts index 0741f8e2..0dd81397 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', // 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/CustomFieldValueDA.ts b/src/models/searchservice/response/directanswer/CustomFieldValueDA.ts new file mode 100644 index 00000000..59d3c758 --- /dev/null +++ b/src/models/searchservice/response/directanswer/CustomFieldValueDA.ts @@ -0,0 +1,10 @@ +import { BaseFieldValueDirectAnswer } from './BaseFieldValueDirectAnswer'; + +/** + * A {@link BaseFieldValueDirectAnswer} with a field type outside of {@link BuiltInFieldType}. + * + * @public + */ +export interface CustomFieldValueDA extends BaseFieldValueDirectAnswer{ + fieldType: 'unknown' +} diff --git a/src/models/searchservice/response/DirectAnswer.ts b/src/models/searchservice/response/directanswer/DirectAnswer.ts similarity index 80% rename from src/models/searchservice/response/DirectAnswer.ts rename to src/models/searchservice/response/directanswer/DirectAnswer.ts index 055d743d..86ae77ca 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. @@ -22,5 +23,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 78% rename from src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts rename to src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts index 4bf565d2..c6f3f310 100644 --- a/src/models/searchservice/response/FeaturedSnippetDirectAnswer.ts +++ b/src/models/searchservice/response/directanswer/FeaturedSnippetDirectAnswer.ts @@ -1,8 +1,9 @@ import { DirectAnswer } from './DirectAnswer'; import { DirectAnswerType } from './DirectAnswerType'; import { BuiltInFieldType } from './BuiltInFieldType'; -import { Result } from './Result'; -import { Snippet } from './Snippet'; +import { Result } from '../Result'; +import { Snippet } from '../Snippet'; +import { EnumOrLiteral } from '../../../utils/EnumOrLiteral'; /** * A direct answer which was found within a document. @@ -19,7 +20,7 @@ export interface FeaturedSnippetDirectAnswer extends DirectAnswer | 'unknown', /** 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..de951a5d --- /dev/null +++ b/src/models/searchservice/response/directanswer/FieldValueDirectAnswer.ts @@ -0,0 +1,9 @@ +import { CustomFieldValueDA } from './CustomFieldValueDA'; + +/** + * Possible built-in and custom {@link BaseFieldValueDirectAnswer} interfaces + * + * @public + */ +//add other builtin field value direct answer interfaces here +export type FieldValueDirectAnswer = CustomFieldValueDA; \ No newline at end of file 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..4b5dafd1 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) { diff --git a/tests/transformers/searchservice/createDirectAnswer.ts b/tests/transformers/searchservice/createDirectAnswer.ts index eb1d54fa..10a74b6a 100644 --- a/tests/transformers/searchservice/createDirectAnswer.ts +++ b/tests/transformers/searchservice/createDirectAnswer.ts @@ -1,5 +1,7 @@ import { createDirectAnswer } from '../../../src/transformers/searchservice/createDirectAnswer'; -import { DirectAnswerType } from '../../../src/models/searchservice/response/DirectAnswerType'; +import { DirectAnswerType } from '../../../src/models/searchservice/response/directanswer/DirectAnswerType'; +import { CustomFieldValueDA } from '../../../src/models/searchservice/response/directanswer/CustomFieldValueDA'; +import { Source } from '../../../src/models/searchservice/response/Source'; it('can create a FeaturedSnippetDirectAnswer', () => { const apiFeaturedSnippetDirectAnswer = { @@ -59,4 +61,36 @@ it('can create a FieldValueDirectAnswer', () => { fieldType: 'phone' }; expect(actualDirectAnswer).toMatchObject(expectedDirectAnswer); +}); + +it('can create a custom FieldValueDirectAnswer', () => { + const apiFieldValueDirectAnswer = { + type: 'FIELD_VALUE', + answer: { + value: '18888888888', + entityName: 'Barack Obama', + fieldName: 'Phone Number', + fieldApiName: 'mainPhone', + fieldType: 'c010101.specialtype' + }, + relatedItem: { + verticalConfigId: 'people', + data: {} + } + }; + const actualDirectAnswer = createDirectAnswer(apiFieldValueDirectAnswer); + const expectedDirectAnswer: CustomFieldValueDA = { + type: DirectAnswerType.FieldValue, + value: '18888888888', + relatedResult: { + rawData: {}, + source: Source.KnowledgeManager + }, + verticalKey: 'people', + entityName: 'Barack Obama', + fieldName: 'Phone Number', + fieldApiName: 'mainPhone', + fieldType: 'unknown' + }; + expect(actualDirectAnswer).toMatchObject(expectedDirectAnswer); }); \ No newline at end of file