dc-management-sdk-js
Version:
Amplience Dynamic Content Management SDK
168 lines • 15.2 kB
JavaScript
import { HalResource } from '../hal/models/HalResource';
import { AssignedContentType, AssignedContentTypePage, } from './AssignedContentType';
import { Page } from './Page';
import { SearchIndexKey } from './SearchIndexKey';
import { SearchIndexSettings } from './SearchIndexSettings';
import { SearchIndexStatistics } from './SearchIndexStatistics';
import { SearchIndexTopHitsCollection } from './SearchIndexTopHits';
import { SearchIndexTopSearchesCollection, } from './SearchIndexTopSearches';
import { SearchIndexSearchesWithNoResultsCollection } from './SearchIndexSearchesWithNoResults';
import { SearchIndexTopFiltersNoResultSearchCollection } from './SearchIndexTopFiltersNoResultSearch';
import { SearchIndexUsersCount } from './SearchIndexUsersCount';
import { SearchIndexSearchesCount } from './SearchIndexSearchesCount';
import { SearchIndexNoResultsRate } from './SearchIndexNoResultsRate';
import { Hub } from './Hub';
import { retry } from '../utils/Retryer';
import isEqual from '../utils/isEqual';
export const SEARCH_INDEX_RETRY_OPTIONS = {
timeout: 3 * 60 * 1000,
};
/**
* Class representing an Algolia Search Index.
*/
export class SearchIndex extends HalResource {
constructor() {
super(...arguments);
/**
* Resources and actions related to a Search Index.
*/
this.related = {
/**
* Retrieves the Hub this search index is stored in
*/
hub: () => this.fetchLinkedResource('hub', {}, Hub),
clear: () => this.performActionThatReturnsResource('clear', {}, {}, SearchIndex),
delete: () => this.deleteResource(),
update: (resource) => this.updateResource(resource, SearchIndex),
assignedContentTypes: {
create: (resource) => this.createLinkedResource('create-assigned-content-types', {}, resource, AssignedContentType),
get: (id) => this.client.fetchResource(
// tslint:disable-next-line:no-string-literal
`${this._links['self'].href}/assigned-content-types/${id}`, AssignedContentType),
list: (options) => this.fetchLinkedResource('assigned-content-types', { options }, AssignedContentTypePage),
},
indexObject: {
delete: (id) =>
// tslint:disable-next-line:no-string-literal
this.client.deleteResource(`${this._links['self'].href}/objects/${id}`),
},
keys: {
get: () => this.fetchLinkedResource('hub-search-key', {}, SearchIndexKey),
},
replicas: {
list: (projection, options) => this.fetchLinkedResource('list-replicas', { projection, options }, SearchIndexesPage),
},
settings: {
get: () => retry(() => this.fetchLinkedResource('settings', {}, SearchIndexSettings), SEARCH_INDEX_RETRY_OPTIONS),
update: async (resource, forwardToReplicas, options) => {
const updatedResource = await this.updateLinkedResource('update-settings', { forwardToReplicas }, resource, SearchIndexSettings);
if (!options || !options.waitUntilApplied) {
return updatedResource;
}
const entriesToCheckFor = Object.entries(resource.toJSON()).filter((entry) => {
if (Array.isArray(options.waitUntilApplied)) {
// include the entries that are supplied
return options.waitUntilApplied.includes(entry[0]);
}
if (options.waitUntilApplied == true) {
// include entry
return true;
}
// unknown value
return false;
});
const checkForUpdate = async () => {
const savedSettings = (await this.fetchLinkedResource('settings', {}, SearchIndexSettings)).toJSON();
const areTheSame = entriesToCheckFor.findIndex((entry) => !isEqual(savedSettings[entry[0]], entry[1])) === -1;
if (!areTheSame) {
throw new Error('Settings are not the same');
}
return updatedResource;
};
return retry(checkForUpdate, SEARCH_INDEX_RETRY_OPTIONS);
},
},
stats: {
get: (period) => this.fetchLinkedResource('stats', { period }, SearchIndexStatistics),
},
'top-searches': {
get: ({ clickAnalytics = false, orderBy, direction, startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('top-searches', {
clickAnalytics,
direction,
endDate,
limit,
offset,
orderBy,
startDate,
tags,
includeReplicas,
}, SearchIndexTopSearchesCollection),
},
'top-hits': {
get: ({ search, startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('top-hits', {
endDate,
limit,
offset,
search,
startDate,
tags,
includeReplicas,
}, SearchIndexTopHitsCollection),
},
'searches-with-no-results': {
get: ({ startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('searches-with-no-results', {
endDate,
limit,
offset,
startDate,
tags,
includeReplicas,
}, SearchIndexSearchesWithNoResultsCollection),
},
'top-filters-no-result-search': {
get: ({ search, startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('top-filters-no-result-search', {
endDate,
limit,
offset,
search,
startDate,
tags,
includeReplicas,
}, SearchIndexTopFiltersNoResultSearchCollection),
},
'users-count': {
get: ({ startDate, endDate, tags, includeReplicas, }) => this.fetchLinkedResource('users-count', {
startDate,
endDate,
tags,
includeReplicas,
}, SearchIndexUsersCount),
},
'searches-count': {
get: ({ startDate, endDate, tags, includeReplicas, }) => this.fetchLinkedResource('searches-count', {
startDate,
endDate,
tags,
includeReplicas,
}, SearchIndexSearchesCount),
},
'no-results-rate': {
get: ({ startDate, endDate, tags, includeReplicas, }) => this.fetchLinkedResource('no-results-rate', {
startDate,
endDate,
tags,
includeReplicas,
}, SearchIndexNoResultsRate),
},
};
}
}
/**
* @hidden
*/
export class SearchIndexesPage extends Page {
constructor(data) {
super('indexes', SearchIndex, data);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VhcmNoSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVsL1NlYXJjaEluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixHQUN4QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFFTCxnQ0FBZ0MsR0FDakMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRyxPQUFPLEVBQUUsNkNBQTZDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVCLE9BQU8sRUFBRSxLQUFLLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQWlCO0lBQ3RELE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7Q0FDdkIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBQTVDOztRQThDRTs7V0FFRztRQUNhLFlBQU8sR0FBRztZQUN4Qjs7ZUFFRztZQUNILEdBQUcsRUFBRSxHQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO1lBRWpFLEtBQUssRUFBRSxHQUF5QixFQUFFLENBQ2hDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUM7WUFFckUsTUFBTSxFQUFFLEdBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBRWxELE1BQU0sRUFBRSxDQUFDLFFBQXFCLEVBQXdCLEVBQUUsQ0FDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDO1lBRTVDLG9CQUFvQixFQUFFO2dCQUNwQixNQUFNLEVBQUUsQ0FBQyxRQUE2QixFQUFnQyxFQUFFLENBQ3RFLElBQUksQ0FBQyxvQkFBb0IsQ0FDdkIsK0JBQStCLEVBQy9CLEVBQUUsRUFDRixRQUFRLEVBQ1IsbUJBQW1CLENBQ3BCO2dCQUVILEdBQUcsRUFBRSxDQUFDLEVBQVUsRUFBZ0MsRUFBRSxDQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWE7Z0JBQ3ZCLDZDQUE2QztnQkFDN0MsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksMkJBQTJCLEVBQUUsRUFBRSxFQUMxRCxtQkFBbUIsQ0FDcEI7Z0JBRUgsSUFBSSxFQUFFLENBQ0osT0FBNkIsRUFDTyxFQUFFLENBQ3RDLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsd0JBQXdCLEVBQ3hCLEVBQUUsT0FBTyxFQUFFLEVBQ1gsdUJBQXVCLENBQ3hCO2FBQ0o7WUFFRCxXQUFXLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLENBQUMsRUFBVSxFQUFpQixFQUFFO2dCQUNwQyw2Q0FBNkM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLFlBQVksRUFBRSxFQUFFLENBQUM7YUFDMUU7WUFFRCxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLEdBQTRCLEVBQUUsQ0FDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxjQUFjLENBQUM7YUFDakU7WUFFRCxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLENBQ0osVUFBbUIsRUFDbkIsT0FBNkIsRUFDRCxFQUFFLENBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsZUFBZSxFQUNmLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUN2QixpQkFBaUIsQ0FDbEI7YUFDSjtZQUVELFFBQVEsRUFBRTtnQkFDUixHQUFHLEVBQUUsR0FBaUMsRUFBRSxDQUN0QyxLQUFLLENBQ0gsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLENBQUMsRUFDbkUsMEJBQTBCLENBQzNCO2dCQUVILE1BQU0sRUFBRSxLQUFLLEVBQ1gsUUFBNkIsRUFDN0IsaUJBQTJCLEVBQzNCLE9BQWtELEVBQ3BCLEVBQUU7b0JBQ2hDLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUNyRCxpQkFBaUIsRUFDakIsRUFBRSxpQkFBaUIsRUFBRSxFQUNyQixRQUFRLEVBQ1IsbUJBQW1CLENBQ3BCLENBQUM7b0JBRUYsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3dCQUMxQyxPQUFPLGVBQWUsQ0FBQztvQkFDekIsQ0FBQztvQkFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNoRSxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUNSLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDOzRCQUM1Qyx3Q0FBd0M7NEJBQ3hDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckQsQ0FBQzt3QkFDRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQzs0QkFDckMsZ0JBQWdCOzRCQUNoQixPQUFPLElBQUksQ0FBQzt3QkFDZCxDQUFDO3dCQUNELGdCQUFnQjt3QkFDaEIsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQyxDQUNGLENBQUM7b0JBRUYsTUFBTSxjQUFjLEdBQUcsS0FBSyxJQUFJLEVBQUU7d0JBQ2hDLE1BQU0sYUFBYSxHQUFHLENBQ3BCLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FDcEUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDWCxNQUFNLFVBQVUsR0FDZCxpQkFBaUIsQ0FBQyxTQUFTLENBQ3pCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZELEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ1gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDOzRCQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7d0JBQy9DLENBQUM7d0JBQ0QsT0FBTyxlQUFlLENBQUM7b0JBQ3pCLENBQUMsQ0FBQztvQkFDRixPQUFPLEtBQUssQ0FBQyxjQUFjLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztnQkFDM0QsQ0FBQzthQUNGO1lBRUQsS0FBSyxFQUFFO2dCQUNMLEdBQUcsRUFBRSxDQUFDLE1BQWUsRUFBa0MsRUFBRSxDQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUscUJBQXFCLENBQUM7YUFDdkU7WUFFRCxjQUFjLEVBQUU7Z0JBQ2QsR0FBRyxFQUFFLENBQUMsRUFDSixjQUFjLEdBQUcsS0FBSyxFQUN0QixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEVBQ0osZUFBZSxHQVdoQixFQUE2QyxFQUFFLENBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsY0FBYyxFQUNkO29CQUNFLGNBQWM7b0JBQ2QsU0FBUztvQkFDVCxPQUFPO29CQUNQLEtBQUs7b0JBQ0wsTUFBTTtvQkFDTixPQUFPO29CQUNQLFNBQVM7b0JBQ1QsSUFBSTtvQkFDSixlQUFlO2lCQUNoQixFQUNELGdDQUFnQyxDQUNqQzthQUNKO1lBRUQsVUFBVSxFQUFFO2dCQUNWLEdBQUcsRUFBRSxDQUFDLEVBQ0osTUFBTSxFQUNOLFNBQVMsRUFDVCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEVBQ0osZUFBZSxHQVNoQixFQUF5QyxFQUFFLENBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsVUFBVSxFQUNWO29CQUNFLE9BQU87b0JBQ1AsS0FBSztvQkFDTCxNQUFNO29CQUNOLE1BQU07b0JBQ04sU0FBUztvQkFDVCxJQUFJO29CQUNKLGVBQWU7aUJBQ2hCLEVBQ0QsNEJBQTRCLENBQzdCO2FBQ0o7WUFFRCwwQkFBMEIsRUFBRTtnQkFDMUIsR0FBRyxFQUFFLENBQUMsRUFDSixTQUFTLEVBQ1QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxFQUNKLGVBQWUsR0FRaEIsRUFBdUQsRUFBRSxDQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLDBCQUEwQixFQUMxQjtvQkFDRSxPQUFPO29CQUNQLEtBQUs7b0JBQ0wsTUFBTTtvQkFDTixTQUFTO29CQUNULElBQUk7b0JBQ0osZUFBZTtpQkFDaEIsRUFDRCwwQ0FBMEMsQ0FDM0M7YUFDSjtZQUNELDhCQUE4QixFQUFFO2dCQUM5QixHQUFHLEVBQUUsQ0FBQyxFQUNKLE1BQU0sRUFDTixTQUFTLEVBQ1QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxFQUNKLGVBQWUsR0FTaEIsRUFBMEQsRUFBRSxDQUMzRCxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLDhCQUE4QixFQUM5QjtvQkFDRSxPQUFPO29CQUNQLEtBQUs7b0JBQ0wsTUFBTTtvQkFDTixNQUFNO29CQUNOLFNBQVM7b0JBQ1QsSUFBSTtvQkFDSixlQUFlO2lCQUNoQixFQUNELDZDQUE2QyxDQUM5QzthQUNKO1lBQ0QsYUFBYSxFQUFFO2dCQUNiLEdBQUcsRUFBRSxDQUFDLEVBQ0osU0FBUyxFQUNULE9BQU8sRUFDUCxJQUFJLEVBQ0osZUFBZSxHQU1oQixFQUFrQyxFQUFFLENBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsYUFBYSxFQUNiO29CQUNFLFNBQVM7b0JBQ1QsT0FBTztvQkFDUCxJQUFJO29CQUNKLGVBQWU7aUJBQ2hCLEVBQ0QscUJBQXFCLENBQ3RCO2FBQ0o7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsR0FBRyxFQUFFLENBQUMsRUFDSixTQUFTLEVBQ1QsT0FBTyxFQUNQLElBQUksRUFDSixlQUFlLEdBTWhCLEVBQXFDLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUN0QixnQkFBZ0IsRUFDaEI7b0JBQ0UsU0FBUztvQkFDVCxPQUFPO29CQUNQLElBQUk7b0JBQ0osZUFBZTtpQkFDaEIsRUFDRCx3QkFBd0IsQ0FDekI7YUFDSjtZQUNELGlCQUFpQixFQUFFO2dCQUNqQixHQUFHLEVBQUUsQ0FBQyxFQUNKLFNBQVMsRUFDVCxPQUFPLEVBQ1AsSUFBSSxFQUNKLGVBQWUsR0FNaEIsRUFBcUMsRUFBRSxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLGlCQUFpQixFQUNqQjtvQkFDRSxTQUFTO29CQUNULE9BQU87b0JBQ1AsSUFBSTtvQkFDSixlQUFlO2lCQUNoQixFQUNELHdCQUF3QixDQUN6QjthQUNKO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFrQixTQUFRLElBQWlCO0lBQ3RELFlBQVksSUFBVTtRQUNwQixLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0YifQ==