typesense
Version:
Javascript Library for Typesense
942 lines (874 loc) • 472 kB
JavaScript
var Typesense;
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./src/Typesense/Alias.ts":
/*!********************************!*\
!*** ./src/Typesense/Alias.ts ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Alias)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _Aliases__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Aliases */ "./src/Typesense/Aliases.ts");
var Alias = /*#__PURE__*/function () {
function Alias(name, apiCall) {
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__["default"])(this, Alias);
this.name = name;
this.apiCall = apiCall;
}
(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__["default"])(Alias, [{
key: "retrieve",
value: function () {
var _retrieve = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee() {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", this.apiCall.get(this.endpointPath()));
case 1:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function retrieve() {
return _retrieve.apply(this, arguments);
}
return retrieve;
}()
}, {
key: "delete",
value: function () {
var _delete2 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee2() {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", this.apiCall.delete(this.endpointPath()));
case 1:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function _delete() {
return _delete2.apply(this, arguments);
}
return _delete;
}()
}, {
key: "endpointPath",
value: function endpointPath() {
return "".concat(_Aliases__WEBPACK_IMPORTED_MODULE_4__["default"].RESOURCEPATH, "/").concat(encodeURIComponent(this.name));
}
}]);
return Alias;
}();
/***/ }),
/***/ "./src/Typesense/Aliases.ts":
/*!**********************************!*\
!*** ./src/Typesense/Aliases.ts ***!
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Aliases)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);
var RESOURCEPATH = "/aliases";
var Aliases = /*#__PURE__*/function () {
function Aliases(apiCall) {
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__["default"])(this, Aliases);
this.apiCall = apiCall;
}
(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__["default"])(Aliases, [{
key: "upsert",
value: function () {
var _upsert = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee(name, mapping) {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", this.apiCall.put(this.endpointPath(name), mapping));
case 1:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function upsert(_x, _x2) {
return _upsert.apply(this, arguments);
}
return upsert;
}()
}, {
key: "retrieve",
value: function () {
var _retrieve = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee2() {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", this.apiCall.get(RESOURCEPATH));
case 1:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function retrieve() {
return _retrieve.apply(this, arguments);
}
return retrieve;
}()
}, {
key: "endpointPath",
value: function endpointPath(aliasName) {
return "".concat(Aliases.RESOURCEPATH, "/").concat(encodeURIComponent(aliasName));
}
}], [{
key: "RESOURCEPATH",
get: function get() {
return RESOURCEPATH;
}
}]);
return Aliases;
}();
/***/ }),
/***/ "./src/Typesense/Analytics.ts":
/*!************************************!*\
!*** ./src/Typesense/Analytics.ts ***!
\************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Analytics)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/esm/defineProperty.js");
/* harmony import */ var _AnalyticsRules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AnalyticsRules */ "./src/Typesense/AnalyticsRules.ts");
/* harmony import */ var _AnalyticsRule__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AnalyticsRule */ "./src/Typesense/AnalyticsRule.ts");
/* harmony import */ var _AnalyticsEvents__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./AnalyticsEvents */ "./src/Typesense/AnalyticsEvents.ts");
var RESOURCEPATH = "/analytics";
var Analytics = /*#__PURE__*/function () {
function Analytics(apiCall) {
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__["default"])(this, Analytics);
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__["default"])(this, "individualAnalyticsRules", {});
this.apiCall = apiCall;
this.apiCall = apiCall;
this._analyticsRules = new _AnalyticsRules__WEBPACK_IMPORTED_MODULE_3__["default"](this.apiCall);
this._analyticsEvents = new _AnalyticsEvents__WEBPACK_IMPORTED_MODULE_5__["default"](this.apiCall);
}
(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__["default"])(Analytics, [{
key: "rules",
value: function rules(id) {
if (id === undefined) {
return this._analyticsRules;
} else {
if (this.individualAnalyticsRules[id] === undefined) {
this.individualAnalyticsRules[id] = new _AnalyticsRule__WEBPACK_IMPORTED_MODULE_4__["default"](id, this.apiCall);
}
return this.individualAnalyticsRules[id];
}
}
}, {
key: "events",
value: function events() {
return this._analyticsEvents;
}
}], [{
key: "RESOURCEPATH",
get: function get() {
return RESOURCEPATH;
}
}]);
return Analytics;
}();
/***/ }),
/***/ "./src/Typesense/AnalyticsEvents.ts":
/*!******************************************!*\
!*** ./src/Typesense/AnalyticsEvents.ts ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AnalyticsEvents)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);
var RESOURCEPATH = "/analytics/events";
var AnalyticsEvents = /*#__PURE__*/function () {
function AnalyticsEvents(apiCall) {
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__["default"])(this, AnalyticsEvents);
this.apiCall = apiCall;
this.apiCall = apiCall;
}
(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__["default"])(AnalyticsEvents, [{
key: "create",
value: function () {
var _create = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee(params) {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", this.apiCall.post(this.endpointPath(), params));
case 1:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function create(_x) {
return _create.apply(this, arguments);
}
return create;
}()
}, {
key: "endpointPath",
value: function endpointPath(operation) {
return "".concat(AnalyticsEvents.RESOURCEPATH).concat(operation === undefined ? "" : "/" + encodeURIComponent(operation));
}
}], [{
key: "RESOURCEPATH",
get: function get() {
return RESOURCEPATH;
}
}]);
return AnalyticsEvents;
}();
/***/ }),
/***/ "./src/Typesense/AnalyticsRule.ts":
/*!****************************************!*\
!*** ./src/Typesense/AnalyticsRule.ts ***!
\****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AnalyticsRule)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _AnalyticsRules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AnalyticsRules */ "./src/Typesense/AnalyticsRules.ts");
var AnalyticsRule = /*#__PURE__*/function () {
function AnalyticsRule(name, apiCall) {
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__["default"])(this, AnalyticsRule);
this.name = name;
this.apiCall = apiCall;
}
(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__["default"])(AnalyticsRule, [{
key: "retrieve",
value: function () {
var _retrieve = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee() {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", this.apiCall.get(this.endpointPath()));
case 1:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function retrieve() {
return _retrieve.apply(this, arguments);
}
return retrieve;
}()
}, {
key: "delete",
value: function () {
var _delete2 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee2() {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", this.apiCall.delete(this.endpointPath()));
case 1:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function _delete() {
return _delete2.apply(this, arguments);
}
return _delete;
}()
}, {
key: "endpointPath",
value: function endpointPath() {
return "".concat(_AnalyticsRules__WEBPACK_IMPORTED_MODULE_4__["default"].RESOURCEPATH, "/").concat(encodeURIComponent(this.name));
}
}]);
return AnalyticsRule;
}();
/***/ }),
/***/ "./src/Typesense/AnalyticsRules.ts":
/*!*****************************************!*\
!*** ./src/Typesense/AnalyticsRules.ts ***!
\*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AnalyticsRules)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);
var RESOURCEPATH = "/analytics/rules";
var AnalyticsRules = /*#__PURE__*/function () {
function AnalyticsRules(apiCall) {
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__["default"])(this, AnalyticsRules);
this.apiCall = apiCall;
this.apiCall = apiCall;
}
(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__["default"])(AnalyticsRules, [{
key: "upsert",
value: function () {
var _upsert = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee(name, params) {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", this.apiCall.put(this.endpointPath(name), params));
case 1:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function upsert(_x, _x2) {
return _upsert.apply(this, arguments);
}
return upsert;
}()
}, {
key: "retrieve",
value: function () {
var _retrieve = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee2() {
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", this.apiCall.get(this.endpointPath()));
case 1:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function retrieve() {
return _retrieve.apply(this, arguments);
}
return retrieve;
}()
}, {
key: "endpointPath",
value: function endpointPath(operation) {
return "".concat(AnalyticsRules.RESOURCEPATH).concat(operation === undefined ? "" : "/" + encodeURIComponent(operation));
}
}], [{
key: "RESOURCEPATH",
get: function get() {
return RESOURCEPATH;
}
}]);
return AnalyticsRules;
}();
/***/ }),
/***/ "./src/Typesense/ApiCall.ts":
/*!**********************************!*\
!*** ./src/Typesense/ApiCall.ts ***!
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ ApiCall)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/esm/typeof.js");
/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/esm/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
/* harmony import */ var http__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! http */ "?e89d");
/* harmony import */ var http__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(http__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var https__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! https */ "?77e4");
/* harmony import */ var https__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(https__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Errors */ "./src/Typesense/Errors/index.ts");
/* harmony import */ var _Errors_TypesenseError__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Errors/TypesenseError */ "./src/Typesense/Errors/TypesenseError.ts");
var APIKEYHEADERNAME = "X-TYPESENSE-API-KEY";
var HEALTHY = true;
var UNHEALTHY = false;
var isNodeJSEnvironment = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
var ApiCall = /*#__PURE__*/function () {
function ApiCall(configuration) {
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__["default"])(this, ApiCall);
this.configuration = configuration;
this.apiKey = this.configuration.apiKey;
this.nodes = this.configuration.nodes == null ? this.configuration.nodes : JSON.parse(JSON.stringify(this.configuration.nodes)); // Make a copy, since we'll be adding additional metadata to the nodes
this.nearestNode = this.configuration.nearestNode == null ? this.configuration.nearestNode : JSON.parse(JSON.stringify(this.configuration.nearestNode));
this.connectionTimeoutSeconds = this.configuration.connectionTimeoutSeconds;
this.healthcheckIntervalSeconds = this.configuration.healthcheckIntervalSeconds;
this.numRetriesPerRequest = this.configuration.numRetries;
this.retryIntervalSeconds = this.configuration.retryIntervalSeconds;
this.sendApiKeyAsQueryParam = this.configuration.sendApiKeyAsQueryParam;
this.additionalUserHeaders = this.configuration.additionalHeaders;
this.logger = this.configuration.logger;
this.initializeMetadataForNodes();
this.currentNodeIndex = -1;
}
(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__["default"])(ApiCall, [{
key: "get",
value: function () {
var _get = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(endpoint) {
var queryParameters,
_ref,
_ref$abortSignal,
abortSignal,
_ref$responseType,
responseType,
_args = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
queryParameters = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
_ref = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}, _ref$abortSignal = _ref.abortSignal, abortSignal = _ref$abortSignal === void 0 ? null : _ref$abortSignal, _ref$responseType = _ref.responseType, responseType = _ref$responseType === void 0 ? undefined : _ref$responseType;
return _context.abrupt("return", this.performRequest("get", endpoint, {
queryParameters: queryParameters,
abortSignal: abortSignal,
responseType: responseType
}));
case 3:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function get(_x) {
return _get.apply(this, arguments);
}
return get;
}()
}, {
key: "delete",
value: function () {
var _delete2 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2(endpoint) {
var queryParameters,
_args2 = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
queryParameters = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
return _context2.abrupt("return", this.performRequest("delete", endpoint, {
queryParameters: queryParameters
}));
case 2:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function _delete(_x2) {
return _delete2.apply(this, arguments);
}
return _delete;
}()
}, {
key: "post",
value: function () {
var _post = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee3(endpoint) {
var bodyParameters,
queryParameters,
additionalHeaders,
_args3 = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
bodyParameters = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
queryParameters = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : {};
additionalHeaders = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
return _context3.abrupt("return", this.performRequest("post", endpoint, {
queryParameters: queryParameters,
bodyParameters: bodyParameters,
additionalHeaders: additionalHeaders
}));
case 4:
case "end":
return _context3.stop();
}
}, _callee3, this);
}));
function post(_x3) {
return _post.apply(this, arguments);
}
return post;
}()
}, {
key: "put",
value: function () {
var _put = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee4(endpoint) {
var bodyParameters,
queryParameters,
_args4 = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
bodyParameters = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
queryParameters = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : {};
return _context4.abrupt("return", this.performRequest("put", endpoint, {
queryParameters: queryParameters,
bodyParameters: bodyParameters
}));
case 3:
case "end":
return _context4.stop();
}
}, _callee4, this);
}));
function put(_x4) {
return _put.apply(this, arguments);
}
return put;
}()
}, {
key: "patch",
value: function () {
var _patch = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee5(endpoint) {
var bodyParameters,
queryParameters,
_args5 = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
bodyParameters = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};
queryParameters = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
return _context5.abrupt("return", this.performRequest("patch", endpoint, {
queryParameters: queryParameters,
bodyParameters: bodyParameters
}));
case 3:
case "end":
return _context5.stop();
}
}, _callee5, this);
}));
function patch(_x5) {
return _patch.apply(this, arguments);
}
return patch;
}()
}, {
key: "getAdapter",
value: function getAdapter() {
if (!this.configuration.axiosAdapter) return undefined;
if (typeof this.configuration.axiosAdapter === "function") return this.configuration.axiosAdapter;
var isCloudflareWorkers = typeof navigator !== "undefined" && navigator.userAgent === "Cloudflare-Workers";
return isCloudflareWorkers ? axios__WEBPACK_IMPORTED_MODULE_9__["default"].getAdapter(this.configuration.axiosAdapter).bind(globalThis) : axios__WEBPACK_IMPORTED_MODULE_9__["default"].getAdapter(this.configuration.axiosAdapter);
}
}, {
key: "performRequest",
value: function () {
var _performRequest = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee6(requestType, endpoint, _ref2) {
var _this = this;
var _ref2$queryParameters, queryParameters, _ref2$bodyParameters, bodyParameters, _ref2$additionalHeade, additionalHeaders, _ref2$abortSignal, abortSignal, _ref2$responseType, responseType, _ref2$skipConnectionT, skipConnectionTimeout, _ref2$enableKeepAlive, enableKeepAlive, requestNumber, lastException, wasAborted, _loop, _ret, numTries;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee6$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
_ref2$queryParameters = _ref2.queryParameters, queryParameters = _ref2$queryParameters === void 0 ? null : _ref2$queryParameters, _ref2$bodyParameters = _ref2.bodyParameters, bodyParameters = _ref2$bodyParameters === void 0 ? null : _ref2$bodyParameters, _ref2$additionalHeade = _ref2.additionalHeaders, additionalHeaders = _ref2$additionalHeade === void 0 ? {} : _ref2$additionalHeade, _ref2$abortSignal = _ref2.abortSignal, abortSignal = _ref2$abortSignal === void 0 ? null : _ref2$abortSignal, _ref2$responseType = _ref2.responseType, responseType = _ref2$responseType === void 0 ? undefined : _ref2$responseType, _ref2$skipConnectionT = _ref2.skipConnectionTimeout, skipConnectionTimeout = _ref2$skipConnectionT === void 0 ? false : _ref2$skipConnectionT, _ref2$enableKeepAlive = _ref2.enableKeepAlive, enableKeepAlive = _ref2$enableKeepAlive === void 0 ? undefined : _ref2$enableKeepAlive;
this.configuration.validate();
requestNumber = Date.now();
wasAborted = false;
this.logger.debug("Request #".concat(requestNumber, ": Performing ").concat(requestType.toUpperCase(), " request: ").concat(endpoint));
_loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _loop() {
var node, abortListener, requestOptions, cancelToken, source, response, _response$data, _response$data2, _error$code, _error$response;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _loop$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
node = _this.getNextNode(requestNumber);
_this.logger.debug("Request #".concat(requestNumber, ": Attempting ").concat(requestType.toUpperCase(), " request Try #").concat(numTries, " to Node ").concat(node.index));
if (!(abortSignal && abortSignal.aborted)) {
_context6.next = 4;
break;
}
return _context6.abrupt("return", {
v: Promise.reject(new Error("Request aborted by caller."))
});
case 4:
_context6.prev = 4;
requestOptions = {
adapter: _this.getAdapter(),
method: requestType,
url: _this.uriFor(endpoint, node),
headers: Object.assign({}, _this.defaultHeaders(), additionalHeaders, _this.additionalUserHeaders),
maxContentLength: Infinity,
maxBodyLength: Infinity,
responseType: responseType,
validateStatus: function validateStatus(status) {
/* Override default validateStatus, which only considers 2xx a success.
In our case, if the server returns any HTTP code, we will handle it below.
We do this to be able to raise custom errors based on response code.
*/
return status > 0;
},
transformResponse: [function (data, headers) {
var transformedData = data;
if (headers !== undefined && typeof data === "string" && headers["content-type"] && headers["content-type"].startsWith("application/json")) {
transformedData = JSON.parse(data);
}
return transformedData;
}]
};
if (skipConnectionTimeout !== true) {
requestOptions.timeout = _this.connectionTimeoutSeconds * 1000;
}
if (queryParameters && Object.keys(queryParameters).length !== 0) {
requestOptions.params = queryParameters;
}
if (_this.sendApiKeyAsQueryParam) {
requestOptions.params = requestOptions.params || {};
requestOptions.params["x-typesense-api-key"] = _this.apiKey;
}
if (_this.configuration.httpAgent) {
_this.logger.debug("Request #".concat(requestNumber, ": Using custom httpAgent"));
requestOptions.httpAgent = _this.configuration.httpAgent;
} else if (enableKeepAlive === true) {
if (!isNodeJSEnvironment) {
_this.logger.warn("Request #".concat(requestNumber, ": Cannot use custom httpAgent in a browser environment to enable keepAlive"));
} else {
_this.logger.debug("Request #".concat(requestNumber, ": Enabling KeepAlive"));
requestOptions.httpAgent = new http__WEBPACK_IMPORTED_MODULE_5__.Agent({
keepAlive: true
});
}
}
if (_this.configuration.httpsAgent) {
_this.logger.debug("Request #".concat(requestNumber, ": Using custom httpsAgent"));
requestOptions.httpsAgent = _this.configuration.httpsAgent;
} else if (enableKeepAlive === true) {
if (!isNodeJSEnvironment) {
_this.logger.warn("Request #".concat(requestNumber, ": Cannot use custom httpAgent in a browser environment to enable keepAlive"));
} else {
_this.logger.debug("Request #".concat(requestNumber, ": Enabling keepAlive"));
requestOptions.httpsAgent = new https__WEBPACK_IMPORTED_MODULE_6__.Agent({
keepAlive: true
});
}
}
if (_this.configuration.paramsSerializer) {
_this.logger.debug("Request #".concat(requestNumber, ": Using custom paramsSerializer"));
requestOptions.paramsSerializer = _this.configuration.paramsSerializer;
}
if (bodyParameters && (typeof bodyParameters === "string" && bodyParameters.length !== 0 || (0,_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__["default"])(bodyParameters) === "object" && Object.keys(bodyParameters).length !== 0)) {
requestOptions.data = bodyParameters;
}
// Translate from user-provided AbortController to the Axios request cancel mechanism.
if (abortSignal) {
cancelToken = axios__WEBPACK_IMPORTED_MODULE_9__["default"].CancelToken;
source = cancelToken.source();
abortListener = function abortListener() {
wasAborted = true;
source.cancel();
};
abortSignal.addEventListener("abort", abortListener);
requestOptions.cancelToken = source.token;
}
_context6.next = 16;
return (0,axios__WEBPACK_IMPORTED_MODULE_9__["default"])(requestOptions);
case 16:
response = _context6.sent;
if (response.status >= 1 && response.status <= 499) {
// Treat any status code > 0 and < 500 to be an indication that node is healthy
// We exclude 0 since some clients return 0 when request fails
_this.setNodeHealthcheck(node, HEALTHY);
}
_this.logger.debug("Request #".concat(requestNumber, ": Request to Node ").concat(node.index, " was made. Response Code was ").concat(response.status, "."));
if (!(response.status >= 200 && response.status < 300)) {
_context6.next = 23;
break;
}
return _context6.abrupt("return", {
v: Promise.resolve(response.data)
});
case 23:
if (!(response.status < 500)) {
_context6.next = 27;
break;
}
return _context6.abrupt("return", {
v: Promise.reject(_this.customErrorForResponse(response, (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.message, requestOptions.data))
});
case 27:
throw _this.customErrorForResponse(response, (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.message, requestOptions.data);
case 28:
_context6.next = 40;
break;
case 30:
_context6.prev = 30;
_context6.t0 = _context6["catch"](4);
// This block handles retries for HTTPStatus > 500 and network layer issues like connection timeouts
if (!wasAborted) {
_this.setNodeHealthcheck(node, UNHEALTHY);
}
lastException = _context6.t0;
_this.logger.warn("Request #".concat(requestNumber, ": Request to Node ").concat(node.index, " failed due to \"").concat((_error$code = _context6.t0 === null || _context6.t0 === void 0 ? void 0 : _context6.t0.code) !== null && _error$code !== void 0 ? _error$code : "", " ").concat(_context6.t0.message).concat(_context6.t0.response == null ? "" : " - " + JSON.stringify((_error$response = _context6.t0.response) === null || _error$response === void 0 ? void 0 : _error$response.data), "\""));
// this.logger.debug(error.stack)
if (!wasAborted) {
_context6.next = 37;
break;
}
return _context6.abrupt("return", {
v: Promise.reject(new Error("Request aborted by caller."))
});
case 37:
if (numTries < _this.numRetriesPerRequest + 1) {
_this.logger.warn("Request #".concat(requestNumber, ": Sleeping for ").concat(_this.retryIntervalSeconds, "s and then retrying request..."));
}
_context6.next = 40;
return _this.timer(_this.retryIntervalSeconds);
case 40:
_context6.prev = 40;
if (abortSignal && abortListener) {
abortSignal.removeEventListener("abort", abortListener);
}
return _context6.finish(40);
case 43:
case "end":
return _context6.stop();
}
}, _loop, null, [[4, 30, 40, 43]]);
});
numTries = 1;
case 7:
if (!(numTries <= this.numRetriesPerRequest + 1)) {
_context7.next = 15;
break;
}
return _context7.delegateYield(_loop(), "t0", 9);
case 9:
_ret = _context7.t0;
if (!_ret) {
_context7.next = 12;
break;
}
return _context7.abrupt("return", _ret.v);
case 12:
numTries++;
_context7.next = 7;
break;
case 15:
this.logger.debug("Request #".concat(requestNumber, ": No retries left. Raising last error"));
return _context7.abrupt("return", Promise.reject(lastException));
case 17:
case "end":
return _context7.stop();
}
}, _callee6, this);
}));
function performRequest(_x6, _x7, _x8) {
return _performRequest.apply(this, arguments);
}
return performRequest;
}() // Attempts to find the next healthy node, looping through the list of nodes once.
// But if no healthy nodes are found, it will just return the next node, even if it's unhealthy
// so we can try the request for good measure, in case that node has become healthy since
}, {
key: "getNextNode",
value: function getNextNode() {
var requestNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
// Check if nearestNode is set and is healthy, if so return it
if (this.nearestNode != null) {
this.logger.debug("Request #".concat(requestNumber, ": Nodes Health: Node ").concat(this.nearestNode.index, " is ").concat(this.nearestNode.isHealthy === true ? "Healthy" : "Unhealthy"));
if (this.nearestNode.isHealthy === true || this.nodeDueForHealthcheck(this.nearestNode, requestNumber)) {
this.logger.debug("Request #".concat(requestNumber, ": Updated current node to Node ").concat(this.nearestNode.index));
return this.nearestNode;
}
this.logger.debug("Request #".concat(requestNumber, ": Falling back to individual nodes"));
}
// Fallback to nodes as usual
this.logger.debug("Request #".concat(requestNumber, ": Nodes Health: ").concat(this.nodes.map(function (node) {
return "Node ".concat(node.index, " is ").concat(node.isHealthy === true ? "Healthy" : "Unhealthy");
}).join(" || ")));
var candidateNode = this.nodes[0];
for (var i = 0; i <= this.nodes.length; i++) {
this.currentNodeIndex = (this.currentNodeIndex + 1) % this.nodes.length;
candidateNode = this.nodes[this.currentNodeIndex];
if (candidateNode.isHealthy === true || this.nodeDueForHealthcheck(candidateNode, requestNumber)) {
this.logger.debug("Request #".concat(requestNumber, ": Updated current node to Node ").concat(candidateNode.index));
return candidateNode;
}
}
// None of the nodes are marked healthy, but some of them could have become healthy since last health check.
// So we will just return the next node.
this.logger.debug("Request #".concat(requestNumber, ": No healthy nodes were found. Returning the next node, Node ").concat(candidateNode.index));
return candidateNode;
}
}, {
key: "nodeDueForHealthcheck",
value: function nodeDueForHealthcheck(node) {
var requestNumber = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var isDueForHealthcheck = Date.now() - node.lastAccessTimestamp > this.healthcheckIntervalSeconds * 1000;
if (isDueForHealthcheck) {
this.logger.debug("Request #".concat(requestNumber, ": Node ").concat(node.index, " has exceeded healtcheckIntervalSeconds of ").concat(this.healthcheckIntervalSeconds, ". Adding it back into rotation."));
}
return isDueForHealthcheck;
}
}, {
key: "initializeMetadataForNodes",
value: function initializeMetadataForNodes() {
var _this2 = this;
if (this.nearestNode != null) {
this.nearestNode.index = "nearestNode";
this.setNodeHealthcheck(this.nearestNode, HEALTHY);
}
this.nodes.forEach(function (node, i) {
node.index = i;
_this2.setNodeHealthcheck(node, HEALTHY);
});
}
}, {
key: "setNodeHealthcheck",
value: function setNodeHealthcheck(node, isHealthy) {
node.isHealthy = isHealthy;
node.lastAccessTimestamp = Date.now();
}
}, {
key: "uriFor",
value: function uriFor(endpoint, node) {
if (node.url != null) {
return "".concat(node.url).concat(endpoint);
}
return "".concat(node.protocol, "://").concat(node.host, ":").concat(node.port).concat(node.path).concat(endpoint);
}
}, {
key: "defaultHeaders",
value: function defaultHeaders() {
var defaultHeaders = {};
if (!this.sendApiKeyAsQueryParam) {
defaultHeaders[APIKEYHEADERNAME] = this.apiKey;
}
defaultHeaders["Content-Type"] = "application/json";
return defaultHeaders;
}
}, {
key: "timer",
value: function () {