@yext/search-core
Version:
Typescript Networking Library for the Yext Search API
46 lines • 2.37 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import { DirectAnswerType } from '../../models/searchservice/response/directanswer/DirectAnswerType';
import { ResultsFactory } from './ResultsFactory';
import { BuiltInFieldType } from '../../models/searchservice/response/directanswer/BuiltInFieldType';
var supportedFieldTypes = [
BuiltInFieldType.MultiLineText,
BuiltInFieldType.RichText,
BuiltInFieldType.RichText_v2,
BuiltInFieldType.Markdown,
BuiltInFieldType.Html
];
export function createDirectAnswer(data) {
var isFieldValueDirectAnswer = (data === null || data === void 0 ? void 0 : data.type) === DirectAnswerType.FieldValue;
var isFeaturedSnippetDirectAnswer = (data === null || data === void 0 ? void 0 : data.type) === DirectAnswerType.FeaturedSnippet;
var commonDirectAnswerData = {
value: data.answer.value,
relatedResult: ResultsFactory.fromDirectAnswer(data.relatedItem.data),
verticalKey: data.relatedItem.verticalConfigId,
fieldType: Object.values(BuiltInFieldType).includes(data.answer.fieldType) ? data.answer.fieldType : 'unknown'
};
if (isFieldValueDirectAnswer) {
return __assign(__assign({ type: DirectAnswerType.FieldValue }, commonDirectAnswerData), { entityName: data.answer.entityName, fieldName: data.answer.fieldName, fieldApiName: data.answer.fieldApiName });
}
else if (isFeaturedSnippetDirectAnswer) {
var fieldType = commonDirectAnswerData.fieldType;
if (!supportedFieldTypes.includes(fieldType)) {
console.warn("Unexpected fieldType for featured snippet direct answer: ".concat(fieldType));
return undefined;
}
return __assign(__assign({ type: DirectAnswerType.FeaturedSnippet }, commonDirectAnswerData), { snippet: data.answer.snippet });
}
else {
throw new Error("The Search API returned an unknown direct answer type: ".concat(data === null || data === void 0 ? void 0 : data.type));
}
}
//# sourceMappingURL=createDirectAnswer.js.map