@yext/search-core
Version:
Typescript Networking Library for the Yext Search API
1,426 lines (1,389 loc) • 414 kB
JavaScript
(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)) {