"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = exports.InMemoryCache = void 0;
const DEFAULT_CACHE_TTL = 5 * 1000;
class InMemoryCache {
  constructor({
    ttl = DEFAULT_CACHE_TTL
  }) {
    this.ttl = ttl;
    this.cache = Object.create(null);
  }
  get(key) {
    const record = this.cache[key];
    if (record == null) {
      return null;
    }

    // Has Record and isnt expired
    if (isNaN(record.expire) || record.expire >= Date.now()) {
      return record.value;
    }

    // Record has expired
    delete this.cache[key];
    return null;
  }
  put(key, value, ttl = this.ttl) {
    if (ttl < 0 || isNaN(ttl)) {
      ttl = NaN;
    }
    var record = {
      value: value,
      expire: ttl + Date.now()
    };
    if (!isNaN(record.expire)) {
      record.timeout = setTimeout(() => {
        this.del(key);
      }, ttl);
    }
    this.cache[key] = record;
  }
  del(key) {
    var record = this.cache[key];
    if (record == null) {
      return;
    }
    if (record.timeout) {
      clearTimeout(record.timeout);
    }
    delete this.cache[key];
  }
  clear() {
    this.cache = Object.create(null);
  }
}
exports.InMemoryCache = InMemoryCache;
var _default = exports.default = InMemoryCache;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0NBQ0hFX1RUTCIsIkluTWVtb3J5Q2FjaGUiLCJjb25zdHJ1Y3RvciIsInR0bCIsImNhY2hlIiwiT2JqZWN0IiwiY3JlYXRlIiwiZ2V0Iiwia2V5IiwicmVjb3JkIiwiaXNOYU4iLCJleHBpcmUiLCJEYXRlIiwibm93IiwidmFsdWUiLCJwdXQiLCJOYU4iLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImRlbCIsImNsZWFyVGltZW91dCIsImNsZWFyIiwiZXhwb3J0cyIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9DYWNoZS9Jbk1lbW9yeUNhY2hlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERFRkFVTFRfQ0FDSEVfVFRMID0gNSAqIDEwMDA7XG5cbmV4cG9ydCBjbGFzcyBJbk1lbW9yeUNhY2hlIHtcbiAgY29uc3RydWN0b3IoeyB0dGwgPSBERUZBVUxUX0NBQ0hFX1RUTCB9KSB7XG4gICAgdGhpcy50dGwgPSB0dGw7XG4gICAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBnZXQoa2V5KSB7XG4gICAgY29uc3QgcmVjb3JkID0gdGhpcy5jYWNoZVtrZXldO1xuICAgIGlmIChyZWNvcmQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gSGFzIFJlY29yZCBhbmQgaXNudCBleHBpcmVkXG4gICAgaWYgKGlzTmFOKHJlY29yZC5leHBpcmUpIHx8IHJlY29yZC5leHBpcmUgPj0gRGF0ZS5ub3coKSkge1xuICAgICAgcmV0dXJuIHJlY29yZC52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBSZWNvcmQgaGFzIGV4cGlyZWRcbiAgICBkZWxldGUgdGhpcy5jYWNoZVtrZXldO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHV0KGtleSwgdmFsdWUsIHR0bCA9IHRoaXMudHRsKSB7XG4gICAgaWYgKHR0bCA8IDAgfHwgaXNOYU4odHRsKSkge1xuICAgICAgdHRsID0gTmFOO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBleHBpcmU6IHR0bCArIERhdGUubm93KCksXG4gICAgfTtcblxuICAgIGlmICghaXNOYU4ocmVjb3JkLmV4cGlyZSkpIHtcbiAgICAgIHJlY29yZC50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVsKGtleSk7XG4gICAgICB9LCB0dGwpO1xuICAgIH1cblxuICAgIHRoaXMuY2FjaGVba2V5XSA9IHJlY29yZDtcbiAgfVxuXG4gIGRlbChrZXkpIHtcbiAgICB2YXIgcmVjb3JkID0gdGhpcy5jYWNoZVtrZXldO1xuICAgIGlmIChyZWNvcmQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChyZWNvcmQudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHJlY29yZC50aW1lb3V0KTtcbiAgICB9XG4gICAgZGVsZXRlIHRoaXMuY2FjaGVba2V5XTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEluTWVtb3J5Q2FjaGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLGlCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJO0FBRTNCLE1BQU1DLGFBQWEsQ0FBQztFQUN6QkMsV0FBV0EsQ0FBQztJQUFFQyxHQUFHLEdBQUdIO0VBQWtCLENBQUMsRUFBRTtJQUN2QyxJQUFJLENBQUNHLEdBQUcsR0FBR0EsR0FBRztJQUNkLElBQUksQ0FBQ0MsS0FBSyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDbEM7RUFFQUMsR0FBR0EsQ0FBQ0MsR0FBRyxFQUFFO0lBQ1AsTUFBTUMsTUFBTSxHQUFHLElBQUksQ0FBQ0wsS0FBSyxDQUFDSSxHQUFHLENBQUM7SUFDOUIsSUFBSUMsTUFBTSxJQUFJLElBQUksRUFBRTtNQUNsQixPQUFPLElBQUk7SUFDYjs7SUFFQTtJQUNBLElBQUlDLEtBQUssQ0FBQ0QsTUFBTSxDQUFDRSxNQUFNLENBQUMsSUFBSUYsTUFBTSxDQUFDRSxNQUFNLElBQUlDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUN2RCxPQUFPSixNQUFNLENBQUNLLEtBQUs7SUFDckI7O0lBRUE7SUFDQSxPQUFPLElBQUksQ0FBQ1YsS0FBSyxDQUFDSSxHQUFHLENBQUM7SUFDdEIsT0FBTyxJQUFJO0VBQ2I7RUFFQU8sR0FBR0EsQ0FBQ1AsR0FBRyxFQUFFTSxLQUFLLEVBQUVYLEdBQUcsR0FBRyxJQUFJLENBQUNBLEdBQUcsRUFBRTtJQUM5QixJQUFJQSxHQUFHLEdBQUcsQ0FBQyxJQUFJTyxLQUFLLENBQUNQLEdBQUcsQ0FBQyxFQUFFO01BQ3pCQSxHQUFHLEdBQUdhLEdBQUc7SUFDWDtJQUVBLElBQUlQLE1BQU0sR0FBRztNQUNYSyxLQUFLLEVBQUVBLEtBQUs7TUFDWkgsTUFBTSxFQUFFUixHQUFHLEdBQUdTLElBQUksQ0FBQ0MsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLENBQUNILEtBQUssQ0FBQ0QsTUFBTSxDQUFDRSxNQUFNLENBQUMsRUFBRTtNQUN6QkYsTUFBTSxDQUFDUSxPQUFPLEdBQUdDLFVBQVUsQ0FBQyxNQUFNO1FBQ2hDLElBQUksQ0FBQ0MsR0FBRyxDQUFDWCxHQUFHLENBQUM7TUFDZixDQUFDLEVBQUVMLEdBQUcsQ0FBQztJQUNUO0lBRUEsSUFBSSxDQUFDQyxLQUFLLENBQUNJLEdBQUcsQ0FBQyxHQUFHQyxNQUFNO0VBQzFCO0VBRUFVLEdBQUdBLENBQUNYLEdBQUcsRUFBRTtJQUNQLElBQUlDLE1BQU0sR0FBRyxJQUFJLENBQUNMLEtBQUssQ0FBQ0ksR0FBRyxDQUFDO0lBQzVCLElBQUlDLE1BQU0sSUFBSSxJQUFJLEVBQUU7TUFDbEI7SUFDRjtJQUVBLElBQUlBLE1BQU0sQ0FBQ1EsT0FBTyxFQUFFO01BQ2xCRyxZQUFZLENBQUNYLE1BQU0sQ0FBQ1EsT0FBTyxDQUFDO0lBQzlCO0lBQ0EsT0FBTyxJQUFJLENBQUNiLEtBQUssQ0FBQ0ksR0FBRyxDQUFDO0VBQ3hCO0VBRUFhLEtBQUtBLENBQUEsRUFBRztJQUNOLElBQUksQ0FBQ2pCLEtBQUssR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDO0VBQ2xDO0FBQ0Y7QUFBQ2dCLE9BQUEsQ0FBQXJCLGFBQUEsR0FBQUEsYUFBQTtBQUFBLElBQUFzQixRQUFBLEdBQUFELE9BQUEsQ0FBQUUsT0FBQSxHQUVjdkIsYUFBYSIsImlnbm9yZUxpc3QiOltdfQ==