{"version":3,"file":"appbase-js.umd.min.js","sources":["../node_modules/url-parser-lite/index.js","../src/utils/index.js","../src/utils/schema/index.js","../src/utils/schema/mongodb.js","../src/utils/schema/elasticsearch.js","../src/core/index.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/cross-fetch/dist/browser-ponyfill.js","../src/core/request/fetch.js","../src/core/api/index.js","../src/core/api/get.js","../src/core/api/update.js","../src/core/api/delete.js","../src/core/api/bulk.js","../src/core/api/search.js","../src/core/api/msearch.js","../src/core/api/reactiveSearchApi.js","../src/core/api/reactiveSearchv3Api.js","../src/core/api/getMappings.js","../src/core/api/getSuggestionsv3Api.js","../src/index.js"],"sourcesContent":["function URL(url) {\n var pattern = RegExp(\"^(([^:/?#]*)?://)?(((.*)?@)?([^/?#]*)?)([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\n var matches = url.match(pattern);\n\n return {\n protocol: matches[2],\n auth: matches[5],\n host: matches[6],\n path: matches[7],\n query: matches[9],\n hash: matches[11]\n };\n}\n\nmodule.exports = URL;\n","export function contains(string, substring) {\n return string.indexOf(substring) !== -1;\n}\nexport function isAppbase(url) {\n return contains(url, 'scalr.api.appbase.io');\n}\nexport function btoa(input = '') {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n const str = input;\n let output = '';\n\n // eslint-disable-next-line\n for (\n let block = 0, charCode, i = 0, map = chars;\n str.charAt(i | 0) || ((map = '='), i % 1); // eslint-disable-line no-bitwise\n output += map.charAt(63 & (block >> (8 - (i % 1) * 8))) // eslint-disable-line no-bitwise\n ) {\n charCode = str.charCodeAt((i += 3 / 4));\n\n if (charCode > 0xff) {\n throw new Error(\n '\"btoa\" failed: The string to be encoded contains characters outside of the Latin1 range.',\n );\n }\n\n block = (block << 8) | charCode; // eslint-disable-line no-bitwise\n }\n\n return output;\n}\nexport function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0; // eslint-disable-line no-bitwise\n\n const v = c === 'x' ? r : (r & 0x3) | 0x8; // eslint-disable-line no-bitwise\n return v.toString(16);\n });\n}\n\nexport function validateRSQuery(query) {\n if (query && Object.prototype.toString.call(query) === '[object Array]') {\n for (let i = 0; i < query.length; i += 1) {\n const q = query[i];\n if (q) {\n if (!q.id) {\n return new Error(\"'id' field must be present in query object\");\n }\n } else {\n return new Error('query object can not have an empty value');\n }\n }\n return true;\n }\n return new Error(\"invalid query value, 'query' value must be an array\");\n}\n\nexport function validate(object, fields) {\n const invalid = [];\n const emptyFor = {\n object: null,\n string: '',\n number: 0,\n };\n const keys = Object.keys(fields);\n keys.forEach((key) => {\n const types = fields[key].split('|');\n const matchedType = types.find(\n type =>\n // eslint-disable-next-line\n typeof object[key] === type\n );\n if (!matchedType || object[key] === emptyFor[matchedType]) {\n invalid.push(key);\n }\n });\n let missing = '';\n for (let i = 0; i < invalid.length; i += 1) {\n missing += `${invalid[i]}, `;\n }\n if (invalid.length > 0) {\n return new Error(`fields missing: ${missing}`);\n }\n\n return true;\n}\n\nexport function removeUndefined(value = {}) {\n if (\n value\n || !(Object.keys(value).length === 0 && value.constructor === Object)\n ) {\n return JSON.parse(JSON.stringify(value));\n }\n return null;\n}\n\n/**\n * Send only when a connection is opened\n * @param {Object} socket\n * @param {Function} callback\n */\nexport function waitForSocketConnection(socket, callback) {\n setTimeout(() => {\n if (socket.readyState === 1) {\n if (callback != null) {\n callback();\n }\n } else {\n waitForSocketConnection(socket, callback);\n }\n }, 5); // wait 5 ms for the connection...\n}\n\nexport function encodeHeaders(headers = {}, shouldEncode = true) {\n // Encode headers\n let encodedHeaders = {};\n if (shouldEncode) {\n Object.keys(headers).forEach((header) => {\n encodedHeaders[header] = encodeURI(headers[header]);\n });\n } else {\n encodedHeaders = headers;\n }\n return encodedHeaders;\n}\nexport function getMongoRequest(app, mongo) {\n const mongodb = {};\n if (app) {\n mongodb.index = app;\n }\n if (mongo) {\n if (mongo.db) {\n mongodb.db = mongo.db;\n }\n if (mongo.collection) {\n mongodb.collection = mongo.collection;\n }\n }\n return mongodb;\n }\n\nexport function getTelemetryHeaders(enableTelemetry, shouldSetHeaders) {\n const headers = {};\n if (!shouldSetHeaders) {\n return headers;\n }\n Object.assign(headers, {\n 'X-Search-Client': 'Appbase JS',\n });\n\n if (enableTelemetry === false) {\n Object.assign(headers, {\n 'X-Enable-Telemetry': enableTelemetry,\n });\n }\n\n return headers;\n}\n\n\nexport const backendAlias = {\n MONGODB: 'mongodb', // mongodb\n ELASTICSEARCH: 'elasticsearch', // elasticsearch\n};\nexport const dataTypes = {\n ARRAY: 'array',\n FUNCTION: 'function',\n OBJECT: 'object',\n NUMBER: 'number',\n BOOLEAN: 'boolean',\n STRING: 'string',\n};\nconst checkDataType = (temp) => {\n // eslint-disable-next-line\n if (typeof temp === dataTypes.OBJECT) {\n if (Array.isArray(temp)) {\n return dataTypes.ARRAY;\n }\n\n return dataTypes.OBJECT;\n }\n return typeof temp;\n};\n\nexport function validateSchema(\n passedProperties = {},\n schema = {},\n backendName = '',\n) {\n const passedPropertiesKeys = Object.keys(passedProperties).filter(\n propertyKey => !!passedProperties[propertyKey],\n );\n const acceptedProperties = Object.keys(schema);\n const requiredProperties = [];\n // fetch required properties\n acceptedProperties.forEach((propName) => {\n const currentProperty = schema[propName];\n if (currentProperty.required) {\n requiredProperties.push(propName);\n }\n });\n // check for required properties\n requiredProperties.forEach((requiredProperty) => {\n if (!passedPropertiesKeys.includes(requiredProperty)) {\n throw new Error(\n `${requiredProperty} is required when using the ${backendName} Search backend.`,\n );\n }\n });\n\n // check for accepted properties\n passedPropertiesKeys.forEach((passedPropertyKey) => {\n if (!acceptedProperties.includes(passedPropertyKey)) {\n throw new Error(\n `${passedPropertyKey} property isn't accepted property by ${backendName} backend.`,\n );\n }\n\n const acceptedTypes = Array.isArray(schema[passedPropertyKey].type)\n ? schema[passedPropertyKey].type\n : [...schema[passedPropertyKey].type];\n const receivedPropertyType = checkDataType(\n passedProperties[passedPropertyKey],\n );\n if (!acceptedTypes.includes(receivedPropertyType)) {\n throw new Error(\n `The property ${passedPropertyKey} is expected with type(s) [${acceptedTypes.join(\n ', ',\n )}], but type was set as ${receivedPropertyType}.`,\n );\n }\n });\n}\n","import mongodb from './mongodb';\nimport elasticsearch from './elasticsearch';\n\nexport default { mongodb, elasticsearch };\n","import { dataTypes } from '../index';\n\nexport default {\n url: {\n type: dataTypes.STRING,\n required: true,\n },\n app: {\n type: dataTypes.STRING,\n required: false,\n },\n credentials: {\n type: dataTypes.STRING,\n required: false,\n },\n enableTelemetry: {\n type: dataTypes.BOOLEAN,\n required: false,\n },\n mongodb: {\n type: dataTypes.OBJECT,\n required: true,\n },\n username: {\n type: dataTypes.STRING,\n required: false,\n },\n password: {\n type: dataTypes.STRING,\n required: false,\n },\n};\n","import { dataTypes } from '../index';\n\nexport default {\n url: {\n type: dataTypes.STRING,\n required: true,\n },\n app: {\n type: dataTypes.STRING,\n required: true,\n },\n credentials: {\n type: dataTypes.STRING,\n required: false,\n },\n enableTelemetry: {\n type: dataTypes.BOOLEAN,\n required: false,\n },\n username: {\n type: dataTypes.STRING,\n required: false,\n },\n password: {\n type: dataTypes.STRING,\n required: false,\n },\n};\n","import URL from 'url-parser-lite';\nimport { backendAlias, isAppbase, validateSchema } from '../utils/index';\nimport SCHEMA from '../utils/schema/index';\n/**\n * Returns an instance of Appbase client\n * @param {Object} config To configure properties\n * @param {String} config.url\n * @param {String} config.app\n * @param {String} config.credentials\n * @param {String} config.username\n * @param {String} config.password\n * @param {Boolean} config.enableTelemetry\n * @param {Object} config.mongodb\n * A callback function which will be invoked before a fetch request made\n */\nfunction AppBase(config) {\n const {\n auth = null,\n host = '',\n path = '',\n protocol = '',\n } = URL(config.url || '');\n let { url } = config;\n url = host + path;\n // Parse url\n if (url.slice(-1) === '/') {\n url = url.slice(0, -1);\n }\n const backendName = backendAlias[config.mongodb ? 'MONGODB' : 'ELASTICSEARCH'];\n // eslint-disable-next-line\n const schema = SCHEMA[backendName];\n validateSchema(\n {\n url: config.url,\n app: config.app,\n credentials: config.credentials,\n username: config.username,\n password: config.password,\n enableTelemetry: config.enableTelemetry,\n mongodb: config.mongodb,\n },\n schema,\n backendName,\n );\n\n if (typeof protocol !== 'string' || protocol === '') {\n throw new Error(\n 'Protocol is not present in url. URL should be of the form https://appbase-demo-ansible-abxiydt-arc.searchbase.io',\n );\n }\n\n let credentials = auth || null;\n if (!config.mongodb) {\n if (isAppbase(url) && credentials === null) {\n throw new Error(\n 'Authentication information is not present. Did you add credentials?',\n );\n }\n }\n /**\n * Credentials can be provided as a part of the URL,\n * as username, password args or as a credentials argument directly */\n if (typeof config.credentials === 'string' && config.credentials !== '') {\n // eslint-disable-next-line\n credentials = config.credentials;\n } else if (\n typeof config.username === 'string'\n && config.username !== ''\n && typeof config.password === 'string'\n && config.password !== ''\n ) {\n credentials = `${config.username}:${config.password}`;\n }\n\n this.url = url;\n this.protocol = protocol;\n this.app = config.app;\n this.credentials = credentials;\n if (config.mongodb) {\n this.mongodb = config.mongodb;\n }\n\n if (typeof config.enableTelemetry === 'boolean') {\n this.enableTelemetry = config.enableTelemetry;\n }\n}\nexport default AppBase;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","var __root__ = (function (root) {\nfunction F() { this.fetch = false; }\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\n(function(self) {\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n };\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue+','+value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) { items.push(name); });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) { items.push(value); });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) { items.push([name, value]); });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'omit';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n };\n\n function decode(body) {\n var form = new FormData();\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n };\n self.fetch.polyfill = true;\n})(typeof self !== 'undefined' ? self : this);\n}).call(__root__, void(0));\nvar fetch = __root__.fetch;\nvar Response = fetch.Response = __root__.Response;\nvar Request = fetch.Request = __root__.Request;\nvar Headers = fetch.Headers = __root__.Headers;\nif (typeof module === 'object' && module.exports) {\nmodule.exports = fetch;\n// Needed for TypeScript consumers without esModuleInterop.\nmodule.exports.default = fetch;\n}\n","import querystring from 'querystring';\nimport fetch from 'cross-fetch';\nimport { btoa, removeUndefined } from '../../utils/index';\n\n/**\n * To perform fetch request\n * @param {Object} args\n * @param {String} args.method\n * @param {String} args.path\n * @param {Object} args.params\n * @param {Object} args.body\n * @param {Object} args.headers\n * @param {boolean} args.isSuggestionsAPI\n */\nfunction fetchRequest(args) {\n return new Promise((resolve, reject) => {\n const parsedArgs = removeUndefined(args);\n try {\n const {\n method,\n path,\n params,\n body,\n isRSAPI,\n isSuggestionsAPI,\n isMongoRequest = false,\n } = parsedArgs;\n const app = isSuggestionsAPI ? '.suggestions' : this.app;\n let bodyCopy = body;\n const contentType = path.endsWith('msearch') || path.endsWith('bulk')\n ? 'application/x-ndjson'\n : 'application/json';\n const headers = Object.assign(\n {},\n {\n Accept: 'application/json',\n 'Content-Type': contentType,\n },\n args.headers,\n this.headers,\n );\n const timestamp = Date.now();\n if (this.credentials) {\n headers.Authorization = `Basic ${btoa(this.credentials)}`;\n }\n const requestOptions = {\n method,\n headers,\n };\n if (Array.isArray(bodyCopy)) {\n let arrayBody = '';\n bodyCopy.forEach((item) => {\n arrayBody += JSON.stringify(item);\n arrayBody += '\\n';\n });\n\n bodyCopy = arrayBody;\n } else {\n bodyCopy = JSON.stringify(bodyCopy) || {};\n }\n\n if (Object.keys(bodyCopy).length !== 0) {\n requestOptions.body = bodyCopy;\n }\n\n const handleTransformRequest = (res) => {\n if (\n this.transformRequest\n && typeof this.transformRequest === 'function'\n ) {\n const tarnsformRequestPromise = this.transformRequest(res);\n return tarnsformRequestPromise instanceof Promise\n ? tarnsformRequestPromise\n : Promise.resolve(tarnsformRequestPromise);\n }\n return Promise.resolve(res);\n };\n\n let responseHeaders = {};\n\n let paramsString = '';\n if (params) {\n paramsString = `?${querystring.stringify(params)}`;\n }\n const finalURL = this.mongodb\n ? `${this.protocol}://${this.url}`\n : `${this.protocol}://${this.url}/${app}/${path}${paramsString}`;\n console.log('finalURL', finalURL);\n return handleTransformRequest(\n Object.assign(\n {},\n {\n url: finalURL,\n },\n requestOptions,\n ),\n )\n .then((ts) => {\n const transformedRequest = Object.assign({}, ts);\n const { url } = transformedRequest;\n delete transformedRequest.url;\n console.log('{ url } = transformedRequest', url);\n return fetch(\n url || finalURL,\n Object.assign({}, transformedRequest, {\n // apply timestamp header for RS API\n headers:\n isRSAPI && !isMongoRequest\n ? Object.assign({}, transformedRequest.headers, {\n 'x-timestamp': new Date().getTime(),\n })\n : transformedRequest.headers,\n }),\n )\n .then((res) => {\n if (res.status >= 500) {\n return reject(res);\n }\n responseHeaders = res.headers;\n return res\n .json()\n .then((data) => {\n if (res.status >= 400) {\n return reject(res);\n }\n if (data && data.error) {\n return reject(data);\n }\n // Handle error from RS API RESPONSE\n if (\n isRSAPI\n && data\n && Object.prototype.toString.call(data) === '[object Object]'\n ) {\n if (body && body.query && body.query instanceof Array) {\n let errorResponses = 0;\n const allResponses = body.query.filter(\n q => q.execute || q.execute === undefined,\n ).length;\n if (data) {\n Object.keys(data).forEach((key) => {\n if (\n data[key]\n && Object.prototype.hasOwnProperty.call(\n data[key],\n 'error',\n )\n ) {\n errorResponses += 1;\n }\n });\n }\n // reject only when all responses has error\n if (\n errorResponses > 0\n && allResponses === errorResponses\n ) {\n return reject(data);\n }\n }\n }\n\n // Handle error from _msearch response\n if (data && data.responses instanceof Array) {\n const allResponses = data.responses.length;\n const errorResponses = data.responses.filter(entry => Object.prototype.hasOwnProperty.call(entry, 'error')).length;\n // reject only when all responses has error\n if (allResponses === errorResponses) {\n return reject(data);\n }\n }\n const response = Object.assign({}, data, {\n _timestamp: timestamp,\n _headers: responseHeaders,\n });\n return resolve(response);\n })\n .catch(e => reject(e));\n })\n .catch(e => reject(e));\n })\n .catch(err => reject(err));\n } catch (e) {\n return reject(e);\n }\n });\n}\nexport default fetchRequest;\n","import { removeUndefined, validate } from '../../utils/index';\n\n/**\n * Index Service\n * @param {Object} args\n * @param {String} args.type\n * @param {Object} args.body\n * @param {String} args.id\n */\nfunction indexApi(args) {\n const parsedArgs = removeUndefined(args);\n // Validate arguments\n const valid = validate(parsedArgs, {\n body: 'object',\n });\n if (valid !== true) {\n throw valid;\n }\n const { type = '_doc', id, body } = parsedArgs;\n\n delete parsedArgs.type;\n delete parsedArgs.body;\n delete parsedArgs.id;\n\n let path;\n if (id) {\n path = type ? `${type}/${encodeURIComponent(id)}` : encodeURIComponent(id);\n } else {\n path = type;\n }\n return this.performFetchRequest({\n method: 'POST',\n path,\n params: parsedArgs,\n body,\n });\n}\nexport default indexApi;\n","import { removeUndefined, validate } from '../../utils/index';\n\n/**\n * Get Service\n * @param {Object} args\n * @param {String} args.type\n * @param {String} args.id\n */\nfunction getApi(args) {\n const parsedArgs = removeUndefined(args);\n // Validate arguments\n const valid = validate(parsedArgs, {\n id: 'string|number',\n });\n\n if (valid !== true) {\n throw valid;\n }\n\n const { type = '_doc', id } = parsedArgs;\n\n delete parsedArgs.type;\n delete parsedArgs.id;\n\n const path = `${type}/${encodeURIComponent(id)}`;\n\n return this.performFetchRequest({\n method: 'GET',\n path,\n params: parsedArgs,\n });\n}\nexport default getApi;\n","import { removeUndefined, validate } from '../../utils/index';\n\n/**\n * Update Service\n * @param {Object} args\n * @param {String} args.type\n * @param {Object} args.body\n * @param {String} args.id\n */\nfunction updateApi(args) {\n const parsedArgs = removeUndefined(args);\n // Validate arguments\n const valid = validate(parsedArgs, {\n id: 'string|number',\n body: 'object',\n });\n if (valid !== true) {\n throw valid;\n }\n\n const { type = '_doc', id, body } = parsedArgs;\n delete parsedArgs.type;\n delete parsedArgs.id;\n delete parsedArgs.body;\n const path = `${type}/${encodeURIComponent(id)}/_update`;\n\n return this.performFetchRequest({\n method: 'POST',\n path,\n params: parsedArgs,\n body,\n });\n}\nexport default updateApi;\n","import { removeUndefined, validate } from '../../utils/index';\n\n/**\n * Delete Service\n * @param {Object} args\n * @param {String} args.type\n * @param {String} args.id\n */\nfunction deleteApi(args) {\n const parsedArgs = removeUndefined(args);\n // Validate arguments\n const valid = validate(parsedArgs, {\n id: 'string|number',\n });\n if (valid !== true) {\n throw valid;\n }\n\n const { type = '_doc', id } = parsedArgs;\n delete parsedArgs.type;\n delete parsedArgs.id;\n\n const path = `${type}/${encodeURIComponent(id)}`;\n\n return this.performFetchRequest({\n method: 'DELETE',\n path,\n params: parsedArgs,\n });\n}\nexport default deleteApi;\n","import { removeUndefined, validate } from '../../utils/index';\n\n/**\n * Bulk Service\n * @param {Object} args\n * @param {String} args.type\n * @param {Object} args.body\n */\nfunction bulkApi(args) {\n const parsedArgs = removeUndefined(args);\n // Validate arguments\n const valid = validate(parsedArgs, {\n body: 'object',\n });\n if (valid !== true) {\n throw valid;\n }\n\n const { type, body } = parsedArgs;\n\n delete parsedArgs.type;\n delete parsedArgs.body;\n\n let path;\n if (type) {\n path = `${type}/_bulk`;\n } else {\n path = '_bulk';\n }\n\n return this.performFetchRequest({\n method: 'POST',\n path,\n params: parsedArgs,\n body,\n });\n}\nexport default bulkApi;\n","import { removeUndefined, validate } from '../../utils/index';\n\n/**\n * Search Service\n * @param {Object} args\n * @param {String} args.type\n * @param {Object} args.body\n */\nfunction searchApi(args) {\n const parsedArgs = removeUndefined(args);\n // Validate arguments\n const valid = validate(parsedArgs, {\n body: 'object',\n });\n if (valid !== true) {\n throw valid;\n }\n\n let type;\n if (Array.isArray(parsedArgs.type)) {\n type = parsedArgs.type.join();\n } else {\n // eslint-disable-next-line\n type = parsedArgs.type;\n }\n\n const { body } = parsedArgs;\n\n delete parsedArgs.type;\n delete parsedArgs.body;\n\n let path;\n if (type) {\n path = `${type}/_search`;\n } else {\n path = '_search';\n }\n\n return this.performFetchRequest({\n method: 'POST',\n path,\n params: parsedArgs,\n body,\n });\n}\nexport default searchApi;\n","import { removeUndefined, validate } from '../../utils/index';\n\n/**\n * Msearch Service\n * @param {Object} args\n * @param {String} args.type\n * @param {Object} args.body\n */\nfunction msearchApi(args) {\n const parsedArgs = removeUndefined(args);\n // Validate arguments\n const valid = validate(parsedArgs, {\n body: 'object',\n });\n if (valid !== true) {\n throw valid;\n }\n\n let type;\n if (Array.isArray(parsedArgs.type)) {\n type = parsedArgs.type.join();\n } else {\n ({ type } = parsedArgs);\n }\n\n const { body } = parsedArgs;\n\n delete parsedArgs.type;\n delete parsedArgs.body;\n\n let path;\n if (type) {\n path = `${type}/_msearch`;\n } else {\n path = '_msearch';\n }\n\n return this.performFetchRequest({\n method: 'POST',\n path,\n params: parsedArgs,\n body,\n });\n}\nexport default msearchApi;\n","import {\n getTelemetryHeaders, getMongoRequest, removeUndefined, validateRSQuery,\n} from '../../utils/index';\n\n/**\n * ReactiveSearch API Service for v3\n * @param {Array} query\n * @param {Object} settings\n * @param {boolean} settings.recordAnalytics\n * @param {boolean} settings.userId\n * @param {boolean} settings.enableQueryRules\n * @param {boolean} settings.customEvents\n */\nfunction reactiveSearchApi(query, settings) {\n const parsedSettings = removeUndefined(settings);\n\n // Validate query\n const valid = validateRSQuery(query);\n\n if (valid !== true) {\n throw valid;\n }\n\n const body = {\n settings: parsedSettings,\n query,\n };\n\n if (this.mongodb) {\n Object.assign(body, { mongodb: getMongoRequest(this.app, this.mongodb) });\n }\n\n return this.performFetchRequest({\n method: 'POST',\n path: '_reactivesearch',\n body,\n headers: getTelemetryHeaders(this.enableTelemetry, !this.mongodb),\n isRSAPI: true,\n isMongoRequest: !!this.mongodb,\n });\n}\nexport default reactiveSearchApi;\n","import {\n removeUndefined, validateRSQuery, getMongoRequest, getTelemetryHeaders,\n} from '../../utils/index';\n\n/**\n * ReactiveSearch API Service for v3\n * @param {Array} query\n * @param {Object} settings\n * @param {boolean} settings.recordAnalytics\n * @param {boolean} settings.userId\n * @param {boolean} settings.enableQueryRules\n * @param {boolean} settings.customEvents\n */\nfunction reactiveSearchv3Api(query, settings) {\n const parsedSettings = removeUndefined(settings);\n\n // Validate query\n const valid = validateRSQuery(query);\n\n if (valid !== true) {\n throw valid;\n }\n\n const body = {\n settings: parsedSettings,\n query,\n };\n if (this.mongodb) {\n Object.assign(body, { mongodb: getMongoRequest(this.app, this.mongodb) });\n }\n return this.performFetchRequest({\n method: 'POST',\n path: '_reactivesearch.v3',\n body,\n headers: getTelemetryHeaders(this.enableTelemetry, !this.mongodb),\n isRSAPI: !this.mongodb,\n isMongoRequest: !!this.mongodb,\n });\n}\nexport default reactiveSearchv3Api;\n","/**\n * To get mappings\n */\nfunction getMappings() {\n return this.performFetchRequest({\n method: 'GET',\n path: '_mapping',\n });\n}\nexport default getMappings;\n","import {\n getTelemetryHeaders,\n removeUndefined,\n validateRSQuery,\n} from '../../utils/index';\n\n/**\n * ReactiveSearch suggestions API for v3\n * @param {Array} query\n * @param {Object} settings\n * @param {boolean} settings.recordAnalytics\n * @param {boolean} settings.userId\n * @param {boolean} settings.enableQueryRules\n * @param {boolean} settings.customEvents\n */\nfunction getSuggestionsv3Api(query, settings) {\n const parsedSettings = removeUndefined(settings);\n\n // Validate query\n const valid = validateRSQuery(query);\n\n if (valid !== true) {\n throw valid;\n }\n\n const body = {\n settings: parsedSettings,\n query,\n };\n\n return this.performFetchRequest({\n method: 'POST',\n path: '_reactivesearch.v3',\n body,\n headers: getTelemetryHeaders(this.enableTelemetry),\n isRSAPI: true,\n isSuggestionsAPI: true,\n });\n}\n\nexport default getSuggestionsv3Api;\n","import AppBaseClient from './core/index';\nimport fetchRequest from './core/request/fetch';\nimport indexApi from './core/api/index';\nimport getApi from './core/api/get';\nimport updateApi from './core/api/update';\nimport deleteApi from './core/api/delete';\nimport bulkApi from './core/api/bulk';\nimport searchApi from './core/api/search';\nimport msearchApi from './core/api/msearch';\nimport reactiveSearchApi from './core/api/reactiveSearchApi';\nimport reactiveSearchv3Api from './core/api/reactiveSearchv3Api';\nimport getMappingsApi from './core/api/getMappings';\nimport { encodeHeaders } from './utils/index';\nimport getSuggestionsv3Api from './core/api/getSuggestionsv3Api';\n\nexport default function appbasejs(config) {\n const client = new AppBaseClient(config);\n\n AppBaseClient.prototype.performFetchRequest = fetchRequest;\n\n AppBaseClient.prototype.index = indexApi;\n\n AppBaseClient.prototype.get = getApi;\n\n AppBaseClient.prototype.update = updateApi;\n\n AppBaseClient.prototype.delete = deleteApi;\n\n AppBaseClient.prototype.bulk = bulkApi;\n\n AppBaseClient.prototype.search = searchApi;\n\n AppBaseClient.prototype.msearch = msearchApi;\n\n AppBaseClient.prototype.reactiveSearch = reactiveSearchApi;\n\n AppBaseClient.prototype.reactiveSearchv3 = reactiveSearchv3Api;\n\n AppBaseClient.prototype.getQuerySuggestions = getSuggestionsv3Api;\n\n AppBaseClient.prototype.getMappings = getMappingsApi;\n\n AppBaseClient.prototype.setHeaders = function setHeaders(\n headers = {},\n shouldEncode = false,\n ) {\n // Encode headers\n if (shouldEncode) {\n this.headers = encodeHeaders(headers);\n } else {\n this.headers = headers;\n }\n };\n\n if (typeof window !== 'undefined') {\n window.Appbase = client;\n }\n return client;\n}\n"],"names":["url","pattern","RegExp","matches","match","protocol","auth","host","path","query","hash","validateRSQuery","Object","prototype","toString","call","i","length","q","Error","id","validate","object","fields","invalid","emptyFor","keys","forEach","key","matchedType","split","find","type","push","missing","removeUndefined","value","constructor","JSON","parse","stringify","getMongoRequest","app","mongo","mongodb","index","db","collection","getTelemetryHeaders","enableTelemetry","shouldSetHeaders","headers","assign","backendAlias","dataTypes","checkDataType","temp","Array","isArray","elasticsearch","AppBase","config","URL","slice","backendName","schema","SCHEMA","passedProperties","passedPropertiesKeys","filter","propertyKey","acceptedProperties","requiredProperties","propName","required","requiredProperty","includes","passedPropertyKey","acceptedTypes","receivedPropertyType","join","credentials","username","password","substring","indexOf","isAppbase","hasOwnProperty","obj","prop","qs","sep","eq","options","regexp","maxKeys","len","kstr","vstr","k","v","x","replace","idx","substr","decodeURIComponent","stringifyPrimitive","isFinite","name","undefined","map","ks","encodeURIComponent","exports","require$$0","require$$1","__root__","root","F","this","fetch","self","support","searchParams","iterable","Symbol","blob","Blob","e","formData","arrayBuffer","viewClasses","isDataView","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","Headers","append","normalizeName","normalizeValue","oldValue","get","has","set","callback","thisArg","items","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","error","response","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","rawHeaders","getAllResponseHeaders","line","parts","shift","trim","responseURL","responseText","onerror","TypeError","ontimeout","open","method","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","result","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","rejected","then","text","readAsText","chars","fromCharCode","readArrayBufferAsText","decode","json","upcased","mode","toUpperCase","referrer","form","bytes","bodyInit","ok","module","fetchRequest","args","parsedArgs","params","isRSAPI","isSuggestionsAPI","isMongoRequest","_this","bodyCopy","contentType","endsWith","timestamp","Date","now","Authorization","charCode","str","output","block","charAt","charCodeAt","btoa","requestOptions","arrayBody","item","responseHeaders","paramsString","querystring","finalURL","log","res","transformRequest","tarnsformRequestPromise","handleTransformRequest","ts","transformedRequest","getTime","data","errorResponses","allResponses","execute","responses","entry","catch","err","indexApi","valid","performFetchRequest","getApi","updateApi","deleteApi","bulkApi","searchApi","msearchApi","reactiveSearchApi","settings","parsedSettings","reactiveSearchv3Api","getMappings","getSuggestionsv3Api","client","AppBaseClient","update","delete","bulk","search","msearch","reactiveSearch","reactiveSearchv3","getQuerySuggestions","getMappingsApi","setHeaders","shouldEncode","encodedHeaders","encodeURI","encodeHeaders","window","Appbase"],"mappings":"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"}