From b69f8e5b3f5f6fa465cb0d0bd7afacad10c23041 Mon Sep 17 00:00:00 2001 From: Oliver Shi Date: Tue, 16 Aug 2022 11:32:05 -0400 Subject: [PATCH] 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 +}