"use strict";

Liferay.Loader.define("@frontend-taglib-clay$clayui/provider@3.128.0/lib/LRUCache", ['module', 'exports', 'require'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.LRUCache = void 0;
    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 DEFAULT_MAX_SIZE = 20;
    var LRUCache = exports.LRUCache = /*#__PURE__*/function () {
      function LRUCache() {
        var maxSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MAX_SIZE;
        _classCallCheck(this, LRUCache);
        if (maxSize <= 0) {
          throw new TypeError('LRUCache: max must be a non-negative number');
        }
        this._maxSize = maxSize;
        this._storage = new Map();
      }
      _createClass(LRUCache, [{
        key: "reset",
        value: function reset() {
          this._storage = new Map();
          return this._storage;
        }
      }, {
        key: "has",
        value: function has(key) {
          return this._storage.has(key);
        }
      }, {
        key: "get",
        value: function get(key) {
          if (this._storage.has(key)) {
            var value = this._storage.get(key);
            this._storage.delete(key);
            this._storage.set(key, value);
            return value;
          }
        }
      }, {
        key: "set",
        value: function set(key, value) {
          if (this._storage.size >= this._maxSize) {
            var iterator = this._storage.keys();
            var count = this._maxSize - (this._storage.size - 1);
            while (count) {
              var _iterator$next = iterator.next(),
                  _value = _iterator$next.value;
              this._storage.delete(_value);
              count--;
            }
          }
          this._storage.set(key, value);
        }
      }]);
      return LRUCache;
    }();
  }
});
//# sourceMappingURL=LRUCache.js.map