@yext/search-core
Version:
Typescript Networking Library for the Yext Search API
43 lines • 2.2 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 { SearchServiceImpl } from './infra/SearchServiceImpl';
import { QuestionSubmissionServiceImpl } from './infra/QuestionSubmissionServiceImpl';
import { HttpServiceImpl } from './infra/HttpServiceImpl';
import { AutocompleteServiceImpl } from './infra/AutocompleteServiceImpl';
import { ApiResponseValidator } from './validation/ApiResponseValidator';
import { SearchCore } from './SearchCore';
import { EndpointsFactory } from './provideEndpoints';
import { GenerativeDirectAnswerServiceImpl } from './infra/GenerativeDirectAnswerServiceImpl';
/**
* The entrypoint to the search-core library.
*
* @remarks
* Returns an {@link SearchCore} instance.
*
* @param config - The search-core config
*
* @public
*/
export 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');
}
var defaultedConfig = __assign(__assign({}, config), { endpoints: __assign(__assign({}, new EndpointsFactory(config).getEndpoints()), config.endpoints) });
var httpService = new HttpServiceImpl();
var apiResponseValidator = new ApiResponseValidator();
var searchService = new SearchServiceImpl(defaultedConfig, httpService, apiResponseValidator);
var questionSubmissionService = new QuestionSubmissionServiceImpl(defaultedConfig, httpService, apiResponseValidator);
var autoCompleteService = new AutocompleteServiceImpl(defaultedConfig, httpService, apiResponseValidator);
var generativeDirectAnswerService = new GenerativeDirectAnswerServiceImpl(defaultedConfig, httpService, apiResponseValidator);
return new SearchCore(searchService, questionSubmissionService, autoCompleteService, generativeDirectAnswerService);
}
//# sourceMappingURL=provideCore.js.map