LruTtlMap.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.LruTtlMap = void 0;
  4. const LruMap_1 = require("./LruMap");
  5. class LruTtlMap extends LruMap_1.LruMap {
  6. constructor() {
  7. super(...arguments);
  8. this.expiry = new Map();
  9. }
  10. clear() {
  11. this.expiry.clear();
  12. super.clear();
  13. }
  14. delete(key) {
  15. this.expiry.delete(key);
  16. return super.delete(key);
  17. }
  18. has(key, now = 0) {
  19. if (!super.has(key))
  20. return false;
  21. const expiry = this.expiry.get(key) || 0;
  22. const expired = now > expiry;
  23. if (expired)
  24. this.delete(key);
  25. return !expired;
  26. }
  27. get(key, now) {
  28. if (!this.has(key, now))
  29. return undefined;
  30. const value = super.get(key);
  31. super.set(key, value);
  32. return value;
  33. }
  34. set(key, value, expiry = Infinity) {
  35. super.set(key, value);
  36. this.expiry.set(key, expiry);
  37. return this;
  38. }
  39. }
  40. exports.LruTtlMap = LruTtlMap;