backendless
Version:
Backendless JavaScript SDK for Node.js and the browser
126 lines (125 loc) • 6.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.KeyValueStore = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _constants = require("../constants");
var _baseStore = require("./base-store");
var _utils = _interopRequireDefault(require("../../utils"));
var _utils2 = require("../utils");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var KeyValueStore = /*#__PURE__*/function (_HiveStore) {
(0, _inherits2["default"])(KeyValueStore, _HiveStore);
var _super = _createSuper(KeyValueStore);
function KeyValueStore() {
(0, _classCallCheck2["default"])(this, KeyValueStore);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(KeyValueStore, [{
key: "get",
value: function get() {
return this.app.request.get({
url: this.getBaseURL()
});
}
}, {
key: "set",
value: function set(value, options) {
return this.constructor.set.apply(_objectSpread(_objectSpread({}, this), this.constructor), [this.storeKey, value, options]);
}
}, {
key: "increment",
value: function increment(value) {
if (isNaN(value) || typeof value !== 'number') {
throw new Error('Value must be provided and must be a number.');
}
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/increment"),
query: {
value: value
}
});
}
}, {
key: "decrement",
value: function decrement(value) {
if (isNaN(value) || typeof value !== 'number') {
throw new Error('Value must be provided and must be a number.');
}
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/decrement"),
query: {
value: value
}
});
}
}], [{
key: "get",
value: function get(keys) {
if (!Array.isArray(keys)) {
throw new Error('Keys must be provided and must be a list of strings.');
}
return this.app.request.post({
url: this.app.urls.hiveStore(this.hiveName, this.TYPE),
data: keys
});
}
}, {
key: "set",
value: function set(key, value, options) {
if (_utils["default"].isObject(key)) {
if (!Object.keys(key).length) {
throw new Error('Provided object must have at least 1 key.');
}
return this.app.request.put({
url: this.app.urls.hiveStore(this.hiveName, this.TYPE),
data: key
});
}
if (!key || typeof key !== 'string') {
throw new Error('Key must be provided and must be a string.');
}
if (options !== undefined) {
if (!_utils["default"].isObject(options)) {
throw new Error('Options must be an object.');
}
var ttl = options.ttl,
expireAt = options.expireAt,
condition = options.condition;
if (ttl !== undefined && (isNaN(ttl) || typeof ttl !== 'number')) {
throw new Error('TTL in seconds must be a number.');
}
if (expireAt !== undefined && (isNaN(expireAt) || typeof expireAt !== 'number')) {
throw new Error('ExpireAt timestamp must be a number.');
}
if (condition !== undefined && !['IfExists', 'IfNotExists', 'Always'].includes(condition)) {
throw new Error('Condition must be one of this values: [IfExists, IfNotExists, Always].');
}
}
if (!(0, _utils2.isHiveValueValid)(value)) {
throw new Error('Value must be provided and must be one of types: string, number, boolean, object, array.');
}
return this.app.request.put({
url: "".concat(this.app.urls.hiveStore(this.hiveName, this.TYPE), "/").concat(key),
data: _objectSpread({
value: value
}, options)
});
}
}]);
return KeyValueStore;
}(_baseStore.HiveStore);
exports.KeyValueStore = KeyValueStore;
(0, _defineProperty2["default"])(KeyValueStore, "TYPE", _constants.HiveTypes.KEY_VALUE);
(0, _defineProperty2["default"])(KeyValueStore, "STATIC_METHODS", [].concat((0, _toConsumableArray2["default"])(_baseStore.HiveStore.STATIC_METHODS), ['get', 'set']));