UNPKG

@yext/search-core

Version:

Typescript Networking Library for the Yext Search API

39 lines 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createDirectAnswer = void 0; const DirectAnswerType_1 = require("../../models/searchservice/response/directanswer/DirectAnswerType"); const ResultsFactory_1 = require("./ResultsFactory"); const BuiltInFieldType_1 = require("../../models/searchservice/response/directanswer/BuiltInFieldType"); const supportedFieldTypes = [ BuiltInFieldType_1.BuiltInFieldType.MultiLineText, BuiltInFieldType_1.BuiltInFieldType.RichText, BuiltInFieldType_1.BuiltInFieldType.RichText_v2, BuiltInFieldType_1.BuiltInFieldType.Markdown, BuiltInFieldType_1.BuiltInFieldType.Html ]; function createDirectAnswer(data) { const isFieldValueDirectAnswer = (data === null || data === void 0 ? void 0 : data.type) === DirectAnswerType_1.DirectAnswerType.FieldValue; const isFeaturedSnippetDirectAnswer = (data === null || data === void 0 ? void 0 : data.type) === DirectAnswerType_1.DirectAnswerType.FeaturedSnippet; const commonDirectAnswerData = { value: data.answer.value, relatedResult: ResultsFactory_1.ResultsFactory.fromDirectAnswer(data.relatedItem.data), verticalKey: data.relatedItem.verticalConfigId, fieldType: Object.values(BuiltInFieldType_1.BuiltInFieldType).includes(data.answer.fieldType) ? data.answer.fieldType : 'unknown' }; if (isFieldValueDirectAnswer) { return Object.assign(Object.assign({ type: DirectAnswerType_1.DirectAnswerType.FieldValue }, commonDirectAnswerData), { entityName: data.answer.entityName, fieldName: data.answer.fieldName, fieldApiName: data.answer.fieldApiName }); } else if (isFeaturedSnippetDirectAnswer) { const fieldType = commonDirectAnswerData.fieldType; if (!supportedFieldTypes.includes(fieldType)) { console.warn(`Unexpected fieldType for featured snippet direct answer: ${fieldType}`); return undefined; } return Object.assign(Object.assign({ type: DirectAnswerType_1.DirectAnswerType.FeaturedSnippet }, commonDirectAnswerData), { snippet: data.answer.snippet }); } else { throw new Error(`The Search API returned an unknown direct answer type: ${data === null || data === void 0 ? void 0 : data.type}`); } } exports.createDirectAnswer = createDirectAnswer; //# sourceMappingURL=createDirectAnswer.js.map