156 lines
7.9 KiB
JavaScript
156 lines
7.9 KiB
JavaScript
'use strict';
|
|
|
|
var cacheCommon = require('@algolia/cache-common');
|
|
var cacheInMemory = require('@algolia/cache-in-memory');
|
|
var clientAnalytics = require('@algolia/client-analytics');
|
|
var clientCommon = require('@algolia/client-common');
|
|
var clientPersonalization = require('@algolia/client-personalization');
|
|
var clientSearch = require('@algolia/client-search');
|
|
var loggerCommon = require('@algolia/logger-common');
|
|
var requesterNodeHttp = require('@algolia/requester-node-http');
|
|
var transporter = require('@algolia/transporter');
|
|
|
|
function algoliasearch(appId, apiKey, options) {
|
|
const commonOptions = {
|
|
appId,
|
|
apiKey,
|
|
timeouts: {
|
|
connect: 2,
|
|
read: 5,
|
|
write: 30,
|
|
},
|
|
requester: requesterNodeHttp.createNodeHttpRequester(),
|
|
logger: loggerCommon.createNullLogger(),
|
|
responsesCache: cacheCommon.createNullCache(),
|
|
requestsCache: cacheCommon.createNullCache(),
|
|
hostsCache: cacheInMemory.createInMemoryCache(),
|
|
userAgent: transporter.createUserAgent(clientCommon.version).add({
|
|
segment: 'Node.js',
|
|
version: process.versions.node,
|
|
}),
|
|
};
|
|
const searchClientOptions = { ...commonOptions, ...options };
|
|
const initPersonalization = () => (clientOptions) => {
|
|
return clientPersonalization.createPersonalizationClient({
|
|
...commonOptions,
|
|
...clientOptions,
|
|
methods: {
|
|
getPersonalizationStrategy: clientPersonalization.getPersonalizationStrategy,
|
|
setPersonalizationStrategy: clientPersonalization.setPersonalizationStrategy,
|
|
},
|
|
});
|
|
};
|
|
return clientSearch.createSearchClient({
|
|
...searchClientOptions,
|
|
methods: {
|
|
search: clientSearch.multipleQueries,
|
|
searchForFacetValues: clientSearch.multipleSearchForFacetValues,
|
|
multipleBatch: clientSearch.multipleBatch,
|
|
multipleGetObjects: clientSearch.multipleGetObjects,
|
|
multipleQueries: clientSearch.multipleQueries,
|
|
copyIndex: clientSearch.copyIndex,
|
|
copySettings: clientSearch.copySettings,
|
|
copyRules: clientSearch.copyRules,
|
|
copySynonyms: clientSearch.copySynonyms,
|
|
moveIndex: clientSearch.moveIndex,
|
|
listIndices: clientSearch.listIndices,
|
|
getLogs: clientSearch.getLogs,
|
|
listClusters: clientSearch.listClusters,
|
|
multipleSearchForFacetValues: clientSearch.multipleSearchForFacetValues,
|
|
getApiKey: clientSearch.getApiKey,
|
|
addApiKey: clientSearch.addApiKey,
|
|
listApiKeys: clientSearch.listApiKeys,
|
|
updateApiKey: clientSearch.updateApiKey,
|
|
deleteApiKey: clientSearch.deleteApiKey,
|
|
restoreApiKey: clientSearch.restoreApiKey,
|
|
assignUserID: clientSearch.assignUserID,
|
|
assignUserIDs: clientSearch.assignUserIDs,
|
|
getUserID: clientSearch.getUserID,
|
|
searchUserIDs: clientSearch.searchUserIDs,
|
|
listUserIDs: clientSearch.listUserIDs,
|
|
getTopUserIDs: clientSearch.getTopUserIDs,
|
|
removeUserID: clientSearch.removeUserID,
|
|
hasPendingMappings: clientSearch.hasPendingMappings,
|
|
generateSecuredApiKey: clientSearch.generateSecuredApiKey,
|
|
getSecuredApiKeyRemainingValidity: clientSearch.getSecuredApiKeyRemainingValidity,
|
|
destroy: clientCommon.destroy,
|
|
clearDictionaryEntries: clientSearch.clearDictionaryEntries,
|
|
deleteDictionaryEntries: clientSearch.deleteDictionaryEntries,
|
|
getDictionarySettings: clientSearch.getDictionarySettings,
|
|
getAppTask: clientSearch.getAppTask,
|
|
replaceDictionaryEntries: clientSearch.replaceDictionaryEntries,
|
|
saveDictionaryEntries: clientSearch.saveDictionaryEntries,
|
|
searchDictionaryEntries: clientSearch.searchDictionaryEntries,
|
|
setDictionarySettings: clientSearch.setDictionarySettings,
|
|
waitAppTask: clientSearch.waitAppTask,
|
|
customRequest: clientSearch.customRequest,
|
|
initIndex: base => (indexName) => {
|
|
return clientSearch.initIndex(base)(indexName, {
|
|
methods: {
|
|
batch: clientSearch.batch,
|
|
delete: clientSearch.deleteIndex,
|
|
findAnswers: clientSearch.findAnswers,
|
|
getObject: clientSearch.getObject,
|
|
getObjects: clientSearch.getObjects,
|
|
saveObject: clientSearch.saveObject,
|
|
saveObjects: clientSearch.saveObjects,
|
|
search: clientSearch.search,
|
|
searchForFacetValues: clientSearch.searchForFacetValues,
|
|
waitTask: clientSearch.waitTask,
|
|
setSettings: clientSearch.setSettings,
|
|
getSettings: clientSearch.getSettings,
|
|
partialUpdateObject: clientSearch.partialUpdateObject,
|
|
partialUpdateObjects: clientSearch.partialUpdateObjects,
|
|
deleteObject: clientSearch.deleteObject,
|
|
deleteObjects: clientSearch.deleteObjects,
|
|
deleteBy: clientSearch.deleteBy,
|
|
clearObjects: clientSearch.clearObjects,
|
|
browseObjects: clientSearch.browseObjects,
|
|
getObjectPosition: clientSearch.getObjectPosition,
|
|
findObject: clientSearch.findObject,
|
|
exists: clientSearch.exists,
|
|
saveSynonym: clientSearch.saveSynonym,
|
|
saveSynonyms: clientSearch.saveSynonyms,
|
|
getSynonym: clientSearch.getSynonym,
|
|
searchSynonyms: clientSearch.searchSynonyms,
|
|
browseSynonyms: clientSearch.browseSynonyms,
|
|
deleteSynonym: clientSearch.deleteSynonym,
|
|
clearSynonyms: clientSearch.clearSynonyms,
|
|
replaceAllObjects: clientSearch.replaceAllObjects,
|
|
replaceAllSynonyms: clientSearch.replaceAllSynonyms,
|
|
searchRules: clientSearch.searchRules,
|
|
getRule: clientSearch.getRule,
|
|
deleteRule: clientSearch.deleteRule,
|
|
saveRule: clientSearch.saveRule,
|
|
saveRules: clientSearch.saveRules,
|
|
replaceAllRules: clientSearch.replaceAllRules,
|
|
browseRules: clientSearch.browseRules,
|
|
clearRules: clientSearch.clearRules,
|
|
},
|
|
});
|
|
},
|
|
initAnalytics: () => (clientOptions) => {
|
|
return clientAnalytics.createAnalyticsClient({
|
|
...commonOptions,
|
|
...clientOptions,
|
|
methods: {
|
|
addABTest: clientAnalytics.addABTest,
|
|
getABTest: clientAnalytics.getABTest,
|
|
getABTests: clientAnalytics.getABTests,
|
|
stopABTest: clientAnalytics.stopABTest,
|
|
deleteABTest: clientAnalytics.deleteABTest,
|
|
},
|
|
});
|
|
},
|
|
initPersonalization,
|
|
initRecommendation: () => (clientOptions) => {
|
|
searchClientOptions.logger.info('The `initRecommendation` method is deprecated. Use `initPersonalization` instead.');
|
|
return initPersonalization()(clientOptions);
|
|
},
|
|
},
|
|
});
|
|
}
|
|
// eslint-disable-next-line functional/immutable-data
|
|
algoliasearch.version = clientCommon.version;
|
|
|
|
module.exports = algoliasearch;
|