"use strict";

Liferay.Loader.define("@frontend-taglib-clay$clayui/provider@3.128.0/lib/DataClient", ['module', 'exports', 'require', './LRUCache'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.DataClient = void 0;
    var _LRUCache = require("./LRUCache");
    function _typeof(o) {
      "@babel/helpers - typeof";
      return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
        return typeof o;
      } : function (o) {
        return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
      }, _typeof(o);
    }
    function _classCallCheck(a, n) {
      if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
    }
    function _defineProperties(e, r) {
      for (var t = 0; t < r.length; t++) {
        var o = r[t];o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
      }
    }
    function _createClass(e, r, t) {
      return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e;
    }
    function _toPropertyKey(t) {
      var i = _toPrimitive(t, "string");return "symbol" == _typeof(i) ? i : i + "";
    }
    function _toPrimitive(t, r) {
      if ("object" != _typeof(t) || !t) return t;var e = t[Symbol.toPrimitive];if (void 0 !== e) {
        var i = e.call(t, r || "default");if ("object" != _typeof(i)) return i;throw new TypeError("@@toPrimitive must return a primitive value.");
      }return ("string" === r ? String : Number)(t);
    } /**
      * SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
      * SPDX-License-Identifier: BSD-3-Clause
      */
    var DataClient = exports.DataClient = /*#__PURE__*/function () {
      function DataClient() {
        var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
            storageMaxSize = _ref.storageMaxSize;
        _classCallCheck(this, DataClient);
        this.cache = new _LRUCache.LRUCache(storageMaxSize);
        this.currentPromises = {};
        this.cursors = {};
      }
      _createClass(DataClient, [{
        key: "read",
        value: function read(key) {
          if (!key) {
            return null;
          }
          return this.cache.get(key);
        }
      }, {
        key: "update",
        value: function update(key, value) {
          if (!key) {
            return null;
          }
          if (value instanceof Promise || value instanceof Error) {
            this.currentPromises[key] = value;
          } else {
            this.cache.set(key, value);
          }
        }
      }, {
        key: "isFetching",
        value: function isFetching(key) {
          if (!key) {
            return;
          }
          return this.currentPromises[key];
        }
      }, {
        key: "getCursor",
        value: function getCursor(key) {
          if (!key) {
            return null;
          }
          return this.cursors[key];
        }
      }, {
        key: "setCursor",
        value: function setCursor(key, value) {
          if (!key) {
            return null;
          }
          this.cursors[key] = value;
        }
      }]);
      return DataClient;
    }();
  }
});
//# sourceMappingURL=DataClient.js.map