UNPKG

@yext/search-core

Version:

Typescript Networking Library for the Yext Search API

108 lines 3.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResultsFactory = void 0; const Source_1 = require("../../models/searchservice/response/Source"); /** * A factory which creates results from different sources */ class ResultsFactory { static create(results, source) { if (!results) { return []; } return results.map((result, index) => { const resultIndex = index + 1; switch (source) { case Source_1.Source.KnowledgeManager: return this.fromKnowledgeManager(result, resultIndex); case Source_1.Source.Google: return this.fromGoogleCustomSearchEngine(result, resultIndex); case Source_1.Source.DocumentVertical: return this.fromDocumentVertical(result, resultIndex); case Source_1.Source.FunctionVertical: return this.fromFunctionVertical(result, resultIndex); default: return this.fromCustomSource(result, resultIndex); } }); } static fromKnowledgeManager(result, index) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: Source_1.Source.KnowledgeManager, index: index, name: rawData.name, description: rawData.description, link: rawData.website, id: rawData.id, distance: result.distance, distanceFromFilter: result.distanceFromFilter, highlightedFields: result.highlightedFields, entityType: rawData.type }; } static fromDocumentVertical(result, index) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: Source_1.Source.DocumentVertical, name: rawData.name, description: rawData.description, link: rawData.website, id: rawData.id, index: index, segment: result.segment, document: result.document, documents: result.documents }; } static fromGoogleCustomSearchEngine(result, index) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: Source_1.Source.Google, index: index, name: rawData.htmlTitle.replace(/(<([^>]+)>)/ig, ''), description: rawData.htmlSnippet, link: rawData.link }; } static fromCustomSource(result, index) { return this.fromCustomDataHelper(result, index, Source_1.Source.Custom); } static fromFunctionVertical(result, index) { return this.fromCustomDataHelper(result, index, Source_1.Source.FunctionVertical); } static fromCustomDataHelper(result, index, source) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: source, index: index, name: rawData.name, description: rawData.description, link: rawData.website, id: rawData.id }; } static fromDirectAnswer(result) { var _a; const rawData = (_a = result.fieldValues) !== null && _a !== void 0 ? _a : {}; return { rawData: rawData, source: Source_1.Source.KnowledgeManager, name: rawData.name, description: rawData.description, link: result.website, id: result.id, entityType: result.type, }; } } exports.ResultsFactory = ResultsFactory; //# sourceMappingURL=ResultsFactory.js.map