UNPKG

@yext/search-core

Version:

Typescript Networking Library for the Yext Search API

1,426 lines (1,389 loc) 414 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(self, function() { return /******/ (function() { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 6281: /***/ (function(module, exports, __webpack_require__) { "use strict"; var _interopRequireDefault = __webpack_require__(5946); var _symbol = _interopRequireDefault(__webpack_require__(6781)); var _indexOf = _interopRequireDefault(__webpack_require__(4007)); var _iterator = _interopRequireDefault(__webpack_require__(7414)); var _forEach = _interopRequireDefault(__webpack_require__(6226)); var _isArray = _interopRequireDefault(__webpack_require__(6615)); var _getOwnPropertyNames = _interopRequireDefault(__webpack_require__(9493)); var _map = _interopRequireDefault(__webpack_require__(8079)); var _entries = _interopRequireDefault(__webpack_require__(2457)); var _promise = _interopRequireDefault(__webpack_require__(1240)); var _slice = _interopRequireDefault(__webpack_require__(8979)); var _urlSearchParams = _interopRequireDefault(__webpack_require__(6512)); var _trim = _interopRequireDefault(__webpack_require__(1265)); var _create = _interopRequireDefault(__webpack_require__(7681)); var _defineProperty = _interopRequireDefault(__webpack_require__(3930)); var global = typeof self !== 'undefined' ? self : void 0; var __self__ = function () { function F() { this.fetch = false; this.DOMException = global.DOMException; } F.prototype = global; return new F(); }(); (function (self) { var irrelevant = function (exports) { var support = { searchParams: 'URLSearchParams' in self, iterable: 'Symbol' in self && 'iterator' in _symbol.default, blob: 'FileReader' in self && 'Blob' in self && function () { try { new Blob(); return true; } catch (e) { return false; } }(), formData: 'FormData' in self, arrayBuffer: 'ArrayBuffer' in self }; function isDataView(obj) { return obj && DataView.prototype.isPrototypeOf(obj); } if (support.arrayBuffer) { var viewClasses = ['[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]']; var isArrayBufferView = ArrayBuffer.isView || function (obj) { return obj && (0, _indexOf.default)(viewClasses).call(viewClasses, Object.prototype.toString.call(obj)) > -1; }; } function normalizeName(name) { if (typeof name !== 'string') { name = String(name); } if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { throw new TypeError('Invalid character in header field name'); } return name.toLowerCase(); } function normalizeValue(value) { if (typeof value !== 'string') { value = String(value); } return value; } // Build a destructive iterator for the value list function iteratorFor(items) { var iterator = { next: function next() { var value = items.shift(); return { done: value === undefined, value: value }; } }; if (support.iterable) { iterator[_iterator.default] = function () { return iterator; }; } return iterator; } function Headers(headers) { this.map = {}; if (headers instanceof Headers) { (0, _forEach.default)(headers).call(headers, function (value, name) { this.append(name, value); }, this); } else if ((0, _isArray.default)(headers)) { (0, _forEach.default)(headers).call(headers, function (header) { this.append(header[0], header[1]); }, this); } else if (headers) { var _context; (0, _forEach.default)(_context = (0, _getOwnPropertyNames.default)(headers)).call(_context, function (name) { this.append(name, headers[name]); }, this); } } Headers.prototype.append = function (name, value) { name = normalizeName(name); value = normalizeValue(value); var oldValue = (0, _map.default)(this)[name]; (0, _map.default)(this)[name] = oldValue ? oldValue + ', ' + value : value; }; Headers.prototype['delete'] = function (name) { delete (0, _map.default)(this)[normalizeName(name)]; }; Headers.prototype.get = function (name) { name = normalizeName(name); return this.has(name) ? (0, _map.default)(this)[name] : null; }; Headers.prototype.has = function (name) { return (0, _map.default)(this).hasOwnProperty(normalizeName(name)); }; Headers.prototype.set = function (name, value) { (0, _map.default)(this)[normalizeName(name)] = normalizeValue(value); }; Headers.prototype.forEach = function (callback, thisArg) { for (var name in (0, _map.default)(this)) { if ((0, _map.default)(this).hasOwnProperty(name)) { callback.call(thisArg, (0, _map.default)(this)[name], name, this); } } }; Headers.prototype.keys = function () { var _context2; var items = []; (0, _forEach.default)(_context2 = this).call(_context2, function (value, name) { items.push(name); }); return iteratorFor(items); }; Headers.prototype.values = function () { var _context3; var items = []; (0, _forEach.default)(_context3 = this).call(_context3, function (value) { items.push(value); }); return iteratorFor(items); }; Headers.prototype.entries = function () { var _context4; var items = []; (0, _forEach.default)(_context4 = this).call(_context4, function (value, name) { items.push([name, value]); }); return iteratorFor(items); }; if (support.iterable) { Headers.prototype[_iterator.default] = (0, _entries.default)(Headers.prototype); } function consumed(body) { if (body.bodyUsed) { return _promise.default.reject(new TypeError('Already read')); } body.bodyUsed = true; } function fileReaderReady(reader) { return new _promise.default(function (resolve, reject) { reader.onload = function () { resolve(reader.result); }; reader.onerror = function () { reject(reader.error); }; }); } function readBlobAsArrayBuffer(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsArrayBuffer(blob); return promise; } function readBlobAsText(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsText(blob); return promise; } function readArrayBufferAsText(buf) { var view = new Uint8Array(buf); var chars = new Array(view.length); for (var i = 0; i < view.length; i++) { chars[i] = String.fromCharCode(view[i]); } return chars.join(''); } function bufferClone(buf) { if ((0, _slice.default)(buf)) { return (0, _slice.default)(buf).call(buf, 0); } else { var view = new Uint8Array(buf.byteLength); view.set(new Uint8Array(buf)); return view.buffer; } } function Body() { this.bodyUsed = false; this._initBody = function (body) { this._bodyInit = body; if (!body) { this._bodyText = ''; } else if (typeof body === 'string') { this._bodyText = body; } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { this._bodyBlob = body; } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { this._bodyFormData = body; } else if (support.searchParams && _urlSearchParams.default.prototype.isPrototypeOf(body)) { this._bodyText = body.toString(); } else if (support.arrayBuffer && support.blob && isDataView(body)) { this._bodyArrayBuffer = bufferClone(body.buffer); // IE 10-11 can't handle a DataView body. this._bodyInit = new Blob([this._bodyArrayBuffer]); } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { this._bodyArrayBuffer = bufferClone(body); } else { this._bodyText = body = Object.prototype.toString.call(body); } if (!this.headers.get('content-type')) { if (typeof body === 'string') { this.headers.set('content-type', 'text/plain;charset=UTF-8'); } else if (this._bodyBlob && this._bodyBlob.type) { this.headers.set('content-type', this._bodyBlob.type); } else if (support.searchParams && _urlSearchParams.default.prototype.isPrototypeOf(body)) { this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); } } }; if (support.blob) { this.blob = function () { var rejected = consumed(this); if (rejected) { return rejected; } if (this._bodyBlob) { return _promise.default.resolve(this._bodyBlob); } else if (this._bodyArrayBuffer) { return _promise.default.resolve(new Blob([this._bodyArrayBuffer])); } else if (this._bodyFormData) { throw new Error('could not read FormData body as blob'); } else { return _promise.default.resolve(new Blob([this._bodyText])); } }; this.arrayBuffer = function () { if (this._bodyArrayBuffer) { return consumed(this) || _promise.default.resolve(this._bodyArrayBuffer); } else { return this.blob().then(readBlobAsArrayBuffer); } }; } this.text = function () { var rejected = consumed(this); if (rejected) { return rejected; } if (this._bodyBlob) { return readBlobAsText(this._bodyBlob); } else if (this._bodyArrayBuffer) { return _promise.default.resolve(readArrayBufferAsText(this._bodyArrayBuffer)); } else if (this._bodyFormData) { throw new Error('could not read FormData body as text'); } else { return _promise.default.resolve(this._bodyText); } }; if (support.formData) { this.formData = function () { return this.text().then(decode); }; } this.json = function () { return this.text().then(JSON.parse); }; return this; } // HTTP methods whose capitalization should be normalized var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; function normalizeMethod(method) { var upcased = method.toUpperCase(); return (0, _indexOf.default)(methods).call(methods, upcased) > -1 ? upcased : method; } function Request(input, options) { options = options || {}; var body = options.body; if (input instanceof Request) { if (input.bodyUsed) { throw new TypeError('Already read'); } this.url = input.url; this.credentials = input.credentials; if (!options.headers) { this.headers = new Headers(input.headers); } this.method = input.method; this.mode = input.mode; this.signal = input.signal; if (!body && input._bodyInit != null) { body = input._bodyInit; input.bodyUsed = true; } } else { this.url = String(input); } this.credentials = options.credentials || this.credentials || 'same-origin'; if (options.headers || !this.headers) { this.headers = new Headers(options.headers); } this.method = normalizeMethod(options.method || this.method || 'GET'); this.mode = options.mode || this.mode || null; this.signal = options.signal || this.signal; this.referrer = null; if ((this.method === 'GET' || this.method === 'HEAD') && body) { throw new TypeError('Body not allowed for GET or HEAD requests'); } this._initBody(body); } Request.prototype.clone = function () { return new Request(this, { body: this._bodyInit }); }; function decode(body) { var _context5; var form = new FormData(); (0, _forEach.default)(_context5 = (0, _trim.default)(body).call(body).split('&')).call(_context5, function (bytes) { if (bytes) { var split = bytes.split('='); var name = split.shift().replace(/\+/g, ' '); var value = split.join('=').replace(/\+/g, ' '); form.append(decodeURIComponent(name), decodeURIComponent(value)); } }); return form; } function parseHeaders(rawHeaders) { var _context6; var headers = new Headers(); // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space // https://tools.ietf.org/html/rfc7230#section-3.2 var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' '); (0, _forEach.default)(_context6 = preProcessedHeaders.split(/\r?\n/)).call(_context6, function (line) { var _context7; var parts = line.split(':'); var key = (0, _trim.default)(_context7 = parts.shift()).call(_context7); if (key) { var _context8; var value = (0, _trim.default)(_context8 = parts.join(':')).call(_context8); headers.append(key, value); } }); return headers; } Body.call(Request.prototype); function Response(bodyInit, options) { if (!options) { options = {}; } this.type = 'default'; this.status = options.status === undefined ? 200 : options.status; this.ok = this.status >= 200 && this.status < 300; this.statusText = 'statusText' in options ? options.statusText : 'OK'; this.headers = new Headers(options.headers); this.url = options.url || ''; this._initBody(bodyInit); } Body.call(Response.prototype); Response.prototype.clone = function () { return new Response(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new Headers(this.headers), url: this.url }); }; Response.error = function () { var response = new Response(null, { status: 0, statusText: '' }); response.type = 'error'; return response; }; var redirectStatuses = [301, 302, 303, 307, 308]; Response.redirect = function (url, status) { if ((0, _indexOf.default)(redirectStatuses).call(redirectStatuses, status) === -1) { throw new RangeError('Invalid status code'); } return new Response(null, { status: status, headers: { location: url } }); }; exports.DOMException = self.DOMException; try { new exports.DOMException(); } catch (err) { exports.DOMException = function (message, name) { this.message = message; this.name = name; var error = Error(message); this.stack = error.stack; }; exports.DOMException.prototype = (0, _create.default)(Error.prototype); exports.DOMException.prototype.constructor = exports.DOMException; } function fetch(input, init) { return new _promise.default(function (resolve, reject) { var _context9; var request = new Request(input, init); if (request.signal && request.signal.aborted) { return reject(new exports.DOMException('Aborted', 'AbortError')); } var xhr = new XMLHttpRequest(); function abortXhr() { xhr.abort(); } xhr.onload = function () { var options = { status: xhr.status, statusText: xhr.statusText, headers: parseHeaders(xhr.getAllResponseHeaders() || '') }; options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL'); var body = 'response' in xhr ? xhr.response : xhr.responseText; resolve(new Response(body, options)); }; xhr.onerror = function () { reject(new TypeError('Network request failed')); }; xhr.ontimeout = function () { reject(new TypeError('Network request failed')); }; xhr.onabort = function () { reject(new exports.DOMException('Aborted', 'AbortError')); }; xhr.open(request.method, request.url, true); if (request.credentials === 'include') { xhr.withCredentials = true; } else if (request.credentials === 'omit') { xhr.withCredentials = false; } if ('responseType' in xhr && support.blob) { xhr.responseType = 'blob'; } (0, _forEach.default)(_context9 = request.headers).call(_context9, function (value, name) { xhr.setRequestHeader(name, value); }); if (request.signal) { request.signal.addEventListener('abort', abortXhr); xhr.onreadystatechange = function () { // DONE (success or failure) if (xhr.readyState === 4) { request.signal.removeEventListener('abort', abortXhr); } }; } xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit); }); } fetch.polyfill = true; if (!self.fetch) { self.fetch = fetch; self.Headers = Headers; self.Request = Request; self.Response = Response; } exports.Headers = Headers; exports.Request = Request; exports.Response = Response; exports.fetch = fetch; (0, _defineProperty.default)(exports, '__esModule', { value: true }); return exports; }({}); })(__self__); __self__.fetch.ponyfill = true; // Remove "polyfill" property added by whatwg-fetch delete __self__.fetch.polyfill; // Choose between native implementation (global) or custom implementation (__self__) // var ctx = global.fetch ? global : __self__; var ctx = __self__; // this line disable service worker support temporarily exports = ctx.fetch; // To enable: import fetch from 'cross-fetch' exports["default"] = ctx.fetch; // For TypeScript consumers without esModuleInterop. exports.fetch = ctx.fetch; // To enable: import {fetch} from 'cross-fetch' exports.Headers = ctx.Headers; exports.Request = ctx.Request; exports.Response = ctx.Response; module.exports = exports; /***/ }), /***/ 6279: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var _Object$defineProperty = __webpack_require__(3930); _Object$defineProperty(exports, "__esModule", { value: true }); exports.SearchCore = void 0; /** * Provides methods for executing searches, submitting questions, and performing autocompletes. * * @public */ var SearchCore = exports.SearchCore = /** @class */function () { function SearchCore(searchService, questionSubmissionService, autoCompleteService, generativeDirectAnswerService) { this.searchService = searchService; this.questionSubmissionService = questionSubmissionService; this.autoCompleteService = autoCompleteService; this.generativeDirectAnswerService = generativeDirectAnswerService; } /** * Performs a search across all verticals. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Universal search request options */ SearchCore.prototype.universalSearch = function (request) { return this.searchService.universalSearch(request); }; /** * Performs a search for a single vertical. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Vertical search request options */ SearchCore.prototype.verticalSearch = function (request) { return this.searchService.verticalSearch(request); }; /** * Submits a custom question to the Search API. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Question submission request options */ SearchCore.prototype.submitQuestion = function (request) { return this.questionSubmissionService.submitQuestion(request); }; /** * Performs an autocomplete request across all verticals. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Universal autocomplete request options */ SearchCore.prototype.universalAutocomplete = function (request) { return this.autoCompleteService.universalAutocomplete(request); }; /** * Performs an autocomplete request for a single vertical. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Vertical autocomplete request options */ SearchCore.prototype.verticalAutocomplete = function (request) { return this.autoCompleteService.verticalAutocomplete(request); }; /** * Performs a filtersearch request against specified fields within a single vertical. * * @remarks * This differs from the vertical autocomplete because the vertical autocomplete * operates on all entity fields whereas filtersearch operates only on specified fields. * If rejected, the reason will be an {@link SearchError}. * * @example * A site has a 'products' vertical and would like a way to allow the user to narrow down * the results by the product name. The site can add a second search bar powered by filtersearch * which will include only product names as search suggestions. * * @param request - filtersearch request options */ SearchCore.prototype.filterSearch = function (request) { return this.autoCompleteService.filterSearch(request); }; /** * Performs a generative direct answer request. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Generative direct answer request options */ SearchCore.prototype.generativeDirectAnswer = function (request) { return this.generativeDirectAnswerService.generateAnswer(request); }; return SearchCore; }(); /***/ }), /***/ 6294: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var _context, _context2; var _Object$defineProperty = __webpack_require__(3930); var _forEachInstanceProperty = __webpack_require__(6226); var _Object$keys = __webpack_require__(697); _Object$defineProperty(exports, "__esModule", { value: true }); var _exportNames = { SearchCore: true, provideCore: true, SandboxEndpoints: true }; _Object$defineProperty(exports, "SandboxEndpoints", { enumerable: true, get: function get() { return _provideEndpoints.SandboxEndpoints; } }); _Object$defineProperty(exports, "SearchCore", { enumerable: true, get: function get() { return _SearchCore.SearchCore; } }); _Object$defineProperty(exports, "provideCore", { enumerable: true, get: function get() { return _provideCore.provideCore; } }); var _SearchCore = __webpack_require__(6279); var _provideCore = __webpack_require__(1036); var _provideEndpoints = __webpack_require__(6717); var _models = __webpack_require__(2949); _forEachInstanceProperty(_context = _Object$keys(_models)).call(_context, function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _models[key]) return; _Object$defineProperty(exports, key, { enumerable: true, get: function get() { return _models[key]; } }); }); var _services = __webpack_require__(6023); _forEachInstanceProperty(_context2 = _Object$keys(_services)).call(_context2, function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _services[key]) return; _Object$defineProperty(exports, key, { enumerable: true, get: function get() { return _services[key]; } }); }); /***/ }), /***/ 8090: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var _Object$defineProperty = __webpack_require__(3930); var _interopRequireDefault = __webpack_require__(5946); _Object$defineProperty(exports, "__esModule", { value: true }); exports.AutocompleteServiceImpl = void 0; var _assign = _interopRequireDefault(__webpack_require__(9544)); var _promise = _interopRequireDefault(__webpack_require__(1240)); var _symbol = _interopRequireDefault(__webpack_require__(6781)); var _iterator = _interopRequireDefault(__webpack_require__(7414)); var _stringify = _interopRequireDefault(__webpack_require__(5569)); var _createAutocompleteResponse = __webpack_require__(6412); var _provideEndpoints = __webpack_require__(6717); var _getClientSdk = __webpack_require__(7867); var _serializeFilterSearch = __webpack_require__(4632); var __assign = void 0 && (void 0).__assign || function () { __assign = _assign.default || 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); }; var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = _promise.default))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = void 0 && (void 0).__generator || function (thisArg, body) { var _ = { label: 0, sent: function sent() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof _symbol.default === "function" && (g[_iterator.default] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; /** * A service that performs query suggestions. */ var AutocompleteServiceImpl = exports.AutocompleteServiceImpl = /** @class */function () { function AutocompleteServiceImpl(config, httpRequester, apiResponseValidator) { this.config = config; this.httpService = httpRequester; this.apiResponseValidator = apiResponseValidator; this.universalEndpoint = this.config.endpoints.universalAutocomplete; this.verticalEndpoint = this.config.endpoints.verticalAutocomplete; this.filterEndpoint = this.config.endpoints.filterSearch; } AutocompleteServiceImpl.prototype.universalAutocomplete = function (request) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function () { var queryParams, response, _d, validationResult; return __generator(this, function (_e) { switch (_e.label) { case 0: queryParams = __assign(__assign(__assign({ input: request.input, experienceKey: this.config.experienceKey }, 'apiKey' in this.config && { api_key: this.config.apiKey }), { v: _provideEndpoints.defaultApiVersion, version: this.config.experienceVersion, locale: this.config.locale, sessionTrackingEnabled: request.sessionTrackingEnabled, visitorId: (_a = this.config.visitor) === null || _a === void 0 ? void 0 : _a.id, visitorIdMethod: (_b = this.config.visitor) === null || _b === void 0 ? void 0 : _b.idMethod }), (_c = this.config) === null || _c === void 0 ? void 0 : _c.additionalQueryParams); if (!('token' in this.config)) return [3 /*break*/, 2]; return [4 /*yield*/, this.httpService.get(this.universalEndpoint, queryParams, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders), this.config.token)]; case 1: _d = _e.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this.httpService.get(this.universalEndpoint, queryParams, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders))]; case 3: _d = _e.sent(); _e.label = 4; case 4: response = _d; validationResult = this.apiResponseValidator.validate(response); if (validationResult instanceof Error) { return [2 /*return*/, _promise.default.reject(validationResult)]; } return [2 /*return*/, (0, _createAutocompleteResponse.createAutocompleteResponse)(response)]; } }); }); }; AutocompleteServiceImpl.prototype.verticalAutocomplete = function (request) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function () { var queryParams, response, _d, validationResult; return __generator(this, function (_e) { switch (_e.label) { case 0: queryParams = __assign(__assign(__assign({ input: request.input, experienceKey: this.config.experienceKey }, 'apiKey' in this.config && { api_key: this.config.apiKey }), { v: _provideEndpoints.defaultApiVersion, version: this.config.experienceVersion, locale: this.config.locale, verticalKey: request.verticalKey, sessionTrackingEnabled: request.sessionTrackingEnabled, visitorId: (_a = this.config.visitor) === null || _a === void 0 ? void 0 : _a.id, visitorIdMethod: (_b = this.config.visitor) === null || _b === void 0 ? void 0 : _b.idMethod }), (_c = this.config) === null || _c === void 0 ? void 0 : _c.additionalQueryParams); if (!('token' in this.config)) return [3 /*break*/, 2]; return [4 /*yield*/, this.httpService.get(this.verticalEndpoint, queryParams, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders), this.config.token)]; case 1: _d = _e.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this.httpService.get(this.verticalEndpoint, queryParams, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders))]; case 3: _d = _e.sent(); _e.label = 4; case 4: response = _d; validationResult = this.apiResponseValidator.validate(response); if (validationResult instanceof Error) { return [2 /*return*/, _promise.default.reject(validationResult)]; } return [2 /*return*/, (0, _createAutocompleteResponse.createAutocompleteResponse)(response)]; } }); }); }; AutocompleteServiceImpl.prototype.filterSearch = function (request) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function () { var searchParams, queryParams, response, _d, validationResult; return __generator(this, function (_e) { switch (_e.label) { case 0: searchParams = { sectioned: request.sectioned, fields: (0, _serializeFilterSearch.serializeSearchParameterFields)(request.fields) }; queryParams = __assign(__assign(__assign({ input: request.input, experienceKey: this.config.experienceKey }, 'apiKey' in this.config && { api_key: this.config.apiKey }), { v: _provideEndpoints.defaultApiVersion, version: this.config.experienceVersion, locale: this.config.locale, search_parameters: (0, _stringify.default)(searchParams), verticalKey: request.verticalKey, sessionTrackingEnabled: request.sessionTrackingEnabled, visitorId: (_a = this.config.visitor) === null || _a === void 0 ? void 0 : _a.id, visitorIdMethod: (_b = this.config.visitor) === null || _b === void 0 ? void 0 : _b.idMethod, excluded: (0, _stringify.default)((0, _serializeFilterSearch.serializeExcludedFields)(request.excluded)) }), (_c = this.config) === null || _c === void 0 ? void 0 : _c.additionalQueryParams); if (!('token' in this.config)) return [3 /*break*/, 2]; return [4 /*yield*/, this.httpService.get(this.filterEndpoint, queryParams, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders), this.config.token)]; case 1: _d = _e.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this.httpService.get(this.filterEndpoint, queryParams, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders))]; case 3: _d = _e.sent(); _e.label = 4; case 4: response = _d; validationResult = this.apiResponseValidator.validate(response); if (validationResult instanceof Error) { return [2 /*return*/, _promise.default.reject(validationResult)]; } return [2 /*return*/, (0, _createAutocompleteResponse.createFilterSearchResponse)(response)]; } }); }); }; return AutocompleteServiceImpl; }(); /***/ }), /***/ 1109: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var _Object$defineProperty = __webpack_require__(3930); var _interopRequireDefault = __webpack_require__(5946); _Object$defineProperty(exports, "__esModule", { value: true }); exports.GenerativeDirectAnswerServiceImpl = void 0; var _assign = _interopRequireDefault(__webpack_require__(9544)); var _promise = _interopRequireDefault(__webpack_require__(1240)); var _symbol = _interopRequireDefault(__webpack_require__(6781)); var _iterator = _interopRequireDefault(__webpack_require__(7414)); var _provideEndpoints = __webpack_require__(6717); var _getClientSdk = __webpack_require__(7867); var _createGenerativeDirectAnswerResponse = __webpack_require__(2204); var __assign = void 0 && (void 0).__assign || function () { __assign = _assign.default || 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); }; var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = _promise.default))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = void 0 && (void 0).__generator || function (thisArg, body) { var _ = { label: 0, sent: function sent() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof _symbol.default === "function" && (g[_iterator.default] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var GenerativeDirectAnswerServiceImpl = exports.GenerativeDirectAnswerServiceImpl = /** @class */function () { function GenerativeDirectAnswerServiceImpl(config, httpService, apiResponseValidator) { this.config = config; this.httpService = httpService; this.apiResponseValidator = apiResponseValidator; this.endpoint = this.config.endpoints.generativeDirectAnswer; } GenerativeDirectAnswerServiceImpl.prototype.generateAnswer = function (request) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function () { var queryParams, results, body, response, _d, validationResult; return __generator(this, function (_e) { switch (_e.label) { case 0: queryParams = __assign(__assign(__assign({ experienceKey: this.config.experienceKey }, 'apiKey' in this.config && { api_key: this.config.apiKey }), { v: _provideEndpoints.defaultApiVersion, version: this.config.experienceVersion, locale: this.config.locale, visitorId: (_a = this.config.visitor) === null || _a === void 0 ? void 0 : _a.id, visitorIdMethod: (_b = this.config.visitor) === null || _b === void 0 ? void 0 : _b.idMethod }), (_c = this.config) === null || _c === void 0 ? void 0 : _c.additionalQueryParams); results = {}; if (request.results.length === 1) { results = request.results[0]; } else if (request.results.length > 1) { results = { verticals: request.results }; } body = { searchId: request.searchId, searchTerm: request.searchTerm, results: results }; if (!('token' in this.config)) return [3 /*break*/, 2]; return [4 /*yield*/, this.httpService.post(this.endpoint, queryParams, body, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders), this.config.token)]; case 1: _d = _e.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this.httpService.post(this.endpoint, queryParams, body, (0, _getClientSdk.getClientSdk)(request.additionalHttpHeaders))]; case 3: _d = _e.sent(); _e.label = 4; case 4: response = _d; validationResult = this.apiResponseValidator.validate(response); if (validationResult instanceof Error) { return [2 /*return*/, _promise.default.reject(validationResult)]; } return [2 /*return*/, (0, _createGenerativeDirectAnswerResponse.createGenerativeDirectAnswerResponse)(response)]; } }); }); }; return GenerativeDirectAnswerServiceImpl; }(); /***/ }), /***/ 7002: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var _Object$defineProperty = __webpack_require__(3930); var _interopRequireDefault = __webpack_require__(5946); _Object$defineProperty(exports, "__esModule", { value: true }); exports.HttpServiceImpl = void 0; var _assign = _interopRequireDefault(__webpack_require__(9544)); var _stringify = _interopRequireDefault(__webpack_require__(5569)); var _reduce = _interopRequireDefault(__webpack_require__(3363)); var _keys = _interopRequireDefault(__webpack_require__(697)); var _concat = _interopRequireDefault(__webpack_require__(1393)); var _crossFetch = _interopRequireDefault(__webpack_require__(6281)); var _urlutils = __webpack_require__(740); var __assign = void 0 && (void 0).__assign || function () { __assign = _assign.default || 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); }; /** * Available HTTP request methods */ var RequestMethods; (function (RequestMethods) { RequestMethods["GET"] = "get"; RequestMethods["POST"] = "post"; })(RequestMethods || (RequestMethods = {})); /** * HttpServiceImpl is a wrapper around the native implementation of AJAX * related matters. */ var HttpServiceImpl = exports.HttpServiceImpl = /** @class */function () { function HttpServiceImpl() {} /** * Perform a GET request */ HttpServiceImpl.prototype.get = function (url, queryParams, clientSdk, authToken) { return fetch(url, queryParams, { method: RequestMethods.GET, mode: 'cors', credentials: 'include', headers: __assign({ 'Client-SDK': formatAsHttpHeader(clientSdk) }, authToken && { Authorization: "Bearer ".concat(authToken) }) }).then(function (res) { return res.json(); }); }; /** * Perform a POST request */ HttpServiceImpl.prototype.post = function (url, queryParams, body, clientSdk, authToken) { var sanitizedBodyParams = (0, _urlutils.sanitizeQueryParams)(body); return fetch(url, queryParams, __assign(__assign({ method: RequestMethods.POST, body: (0, _stringify.default)(sanitizedBodyParams), mode: 'cors' }, authToken && { credentials: 'include' }), { headers: __assign({ 'Client-SDK': formatAsHttpHeader(clientSdk), 'Content-Type': 'application/json' }, authToken && { Authorization: "Bearer ".concat(authToken) }) })).then(function (res) { return res.json(); }); }; return HttpServiceImpl; }(); /** * Perform a fetch, using the polyfill if needed. */ function fetch(url, queryParams, reqInit) { var urlWithParams = (0, _urlutils.addParamsToURL)(url, queryParams); if (typeof window !== 'undefined' && window.fetch) { return window.fetch(urlWithParams, reqInit); } return (0, _crossFetch.default)(urlWithParams, reqInit); } /** * Converts the JSON representing the Client-SDK agents into the expected HTTP header format. * * @example * Input clientSdk: * \{ * ANSWERS_CORE: '123', * CUSTOM_AGENT: '456' * \} * * Output HTTP header: * 'ANSWERS_CORE=123, CUSTOM_AGENT=456' */ function formatAsHttpHeader(clientSdk) { var _context; return (0, _reduce.default)(_context = (0, _keys.default)(clientSdk)).call(_context, function (combinedHeader, currentKey) { var _context2, _context3; var httpFormattedHeader = (0, _concat.default)(_context2 = "".concat(currentKey, "=")).call(_context2, clientSdk[currentKey]); return combinedHeader ? (0, _concat.default)(_context3 = "".concat(combinedHeader, ", ")).call(_context3, httpFormattedHeader) : httpFormattedHeader; }, ''); } /***/ }), /***/ 2934: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var _Object$defineProperty = __webpack_require__(3930); var _interopRequireDefault = __webpack_require__(5946); _Object$defineProperty(exports, "__esModule", { value: true }); exports.QuestionSubmissionServiceImpl = void 0; var _assign = _interopRequireDefault(__webpack_require__(9544)); var _promise = _interopRequireDefault(__webpack_require__(1240)); var _symbol = _interopRequireDefault(__webpack_require__(6781)); var _iterator = _interopRequireDefault(__webpack_require__(7414)); var _provideEndpoints = __webpack_require__(6717); var _getClientSdk = __webpack_require__(7867); var __assign = void 0 && (void 0).__assign || function () { __assign = _assign.default || 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); }; var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = _promise.default))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = void 0 && (void 0).__generator || function (thisArg, body) { var _ = { label: 0, sent: function sent() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof _symbol.default === "function" && (g[_iterator.default] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {