UNPKG

addsearch-js-client

Version:

AddSearch API JavaScript client

197 lines 6.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("./util"); class SettingsManager { constructor() { this.settings = { keyword: '*', callback: null, throttleTimeMs: 200, fuzzy: 'auto', paging: { page: 1, pageSize: 10, sortBy: 'relevance', sortOrder: 'desc' }, customFieldFilters: [], userToken: null, suggestionsSize: 10, facetFields: [], autocomplete: { size: 10 }, searchOperator: null, enableLogicalOperators: false, cacheResponseTime: null, statsRequestIntercepted: false, apiMethod: 'GET' }; } getSettings() { return this.settings; } setKeyword(keyword) { this.settings.keyword = keyword || '*'; } setCallback(cb) { this.settings.callback = cb; } setThrottleTime(delay) { this.settings.throttleTimeMs = delay; } setSuggestionsPrefix(prefix) { this.settings.suggestionsPrefix = prefix; } setSuggestionsSize(size) { this.settings.suggestionsSize = size; } setAutocompleteSize(size) { this.settings.autocomplete.size = size; } setAutocompleteParams(field, prefix) { this.settings.autocomplete.field = field; this.settings.autocomplete.prefix = prefix; } setLanguage(language) { let languageIntlLocale; if (Intl && Intl.Locale) { try { languageIntlLocale = new Intl.Locale(language).language; } catch (e) { console.debug(e); throw new Error(`Use an accepted language code provided by the ECMAScript Internationalization API (e.g., "en", "en-GB").`); } } else { languageIntlLocale = language; } if (languageIntlLocale && languageIntlLocale.length !== 2) { throw new Error('Use a 2-char/4-char language code (e.g., "en", "en-GB")'); } this.settings.lang = languageIntlLocale; } setFuzzyMatch(fuzzy) { if (fuzzy !== true && fuzzy !== false && fuzzy !== 'auto' && fuzzy !== 'retry') { throw new Error("Fuzzy matching can be true, false, 'auto', or 'retry'"); } this.settings.fuzzy = fuzzy; } enableLogicalOperators(enable) { this.settings.enableLogicalOperators = enable; } setCacheResponseTime(cacheResponseTime) { this.settings.cacheResponseTime = cacheResponseTime; } setPostfixWildcard(wildcard) { this.settings.postfixWildcard = wildcard; } setCollectAnalytics(collectAnalytics) { this.settings.collectAnalytics = collectAnalytics; } setAnalyticsTag(tagName) { this.settings.analyticsTag = tagName; } setCategoryFilters(categories) { this.settings.categories = categories; } setFilterObject(filter) { this.settings.filterObject = filter; } setPriceRangeFilter(minCents, maxCents) { this.settings.priceFromCents = minCents; this.settings.priceToCents = maxCents; } addCustomFieldFilter(fieldName, value) { const filter = encodeURIComponent(`${fieldName}=${value}`); if (!this.settings.customFieldFilters.includes(filter)) { this.settings.customFieldFilters.push(filter); } } removeCustomFieldFilter(fieldName, value) { const removeAll = !value; const filter = encodeURIComponent(`${fieldName}=${value || ''}`); this.settings.customFieldFilters = this.settings.customFieldFilters.filter((v) => { if (removeAll) { return !v.startsWith(filter); } return v !== filter; }); } setDateFilter(dateFrom, dateTo) { this.settings.dateFrom = dateFrom; this.settings.dateTo = dateTo; } setJWT(jwt) { this.settings.jwt = jwt; } setUserToken(token) { this.settings.userToken = token; } setPersonalizationEvents(events) { if (Array.isArray(events)) { this.settings.personalizationEvents = events; } } setResultType(type) { this.settings.resultType = type; } addFacetField(field) { if (!this.settings.facetFields.includes(field)) { this.settings.facetFields.push(field); } } addHierarchicalFacetSetting(setting) { this.settings.hierarchicalFacetSetting = setting; } addRangeFacet(field, ranges) { var _a; var _b; (_a = (_b = this.settings).rangeFacets) !== null && _a !== void 0 ? _a : (_b.rangeFacets = []); this.settings.rangeFacets.push({ field, ranges }); } addStatsField(field) { var _a; var _b; (_a = (_b = this.settings).statsFields) !== null && _a !== void 0 ? _a : (_b.statsFields = []); if (!this.settings.statsFields.includes(field)) { this.settings.statsFields.push(field); } } setNumberOfFacets(numFacets) { this.settings.numFacets = numFacets; } setPaging(page, pageSize, sortBy, sortOrder) { (0, util_1.validateSetPagingParams)(page, pageSize, sortBy, sortOrder); this.settings.paging = { page, pageSize, sortBy, sortOrder }; } setShuffleAndLimitTo(shuffleAndLimitTo) { this.settings.shuffleAndLimitTo = shuffleAndLimitTo; } nextPage() { this.settings.paging.page++; } previousPage() { if (this.settings.paging.page > 0) { this.settings.paging.page--; } } setSearchOperator(operator) { if (operator !== 'and' && operator !== 'or') { throw new Error("Operator must be 'and' or 'or'"); } this.settings.searchOperator = operator; } setStatsRequestIntercepted(isIntercepted) { this.settings.statsRequestIntercepted = isIntercepted; } setApiMethod(method) { if (method !== 'GET' && method !== 'POST') { throw new Error("API method must be 'GET' or 'POST'"); } this.settings.apiMethod = method; } } exports.default = SettingsManager; //# sourceMappingURL=settings.js.map