@yext/search-core
Version:
Typescript Networking Library for the Yext Search API
108 lines • 3.96 kB
JavaScript
;
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