@yext/search-core
Version:
Typescript Networking Library for the Yext Search API
36 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.provideCore = void 0;
const SearchServiceImpl_1 = require("./infra/SearchServiceImpl");
const QuestionSubmissionServiceImpl_1 = require("./infra/QuestionSubmissionServiceImpl");
const HttpServiceImpl_1 = require("./infra/HttpServiceImpl");
const AutocompleteServiceImpl_1 = require("./infra/AutocompleteServiceImpl");
const ApiResponseValidator_1 = require("./validation/ApiResponseValidator");
const SearchCore_1 = require("./SearchCore");
const provideEndpoints_1 = require("./provideEndpoints");
const GenerativeDirectAnswerServiceImpl_1 = require("./infra/GenerativeDirectAnswerServiceImpl");
/**
* The entrypoint to the search-core library.
*
* @remarks
* Returns an {@link SearchCore} instance.
*
* @param config - The search-core config
*
* @public
*/
function provideCore(config) {
if ('apiKey' in config && 'token' in config) {
throw new Error('Both apiKey and token are present. Only one authentication method should be provided');
}
const defaultedConfig = Object.assign(Object.assign({}, config), { endpoints: Object.assign(Object.assign({}, new provideEndpoints_1.EndpointsFactory(config).getEndpoints()), config.endpoints) });
const httpService = new HttpServiceImpl_1.HttpServiceImpl();
const apiResponseValidator = new ApiResponseValidator_1.ApiResponseValidator();
const searchService = new SearchServiceImpl_1.SearchServiceImpl(defaultedConfig, httpService, apiResponseValidator);
const questionSubmissionService = new QuestionSubmissionServiceImpl_1.QuestionSubmissionServiceImpl(defaultedConfig, httpService, apiResponseValidator);
const autoCompleteService = new AutocompleteServiceImpl_1.AutocompleteServiceImpl(defaultedConfig, httpService, apiResponseValidator);
const generativeDirectAnswerService = new GenerativeDirectAnswerServiceImpl_1.GenerativeDirectAnswerServiceImpl(defaultedConfig, httpService, apiResponseValidator);
return new SearchCore_1.SearchCore(searchService, questionSubmissionService, autoCompleteService, generativeDirectAnswerService);
}
exports.provideCore = provideCore;
//# sourceMappingURL=provideCore.js.map