LruMap.js 780 B

123456789101112131415161718192021222324252627282930
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.LruMap = void 0;
  4. class LruMap extends Map {
  5. constructor(
  6. // 2^30 - 1 (a SMI in V8, for 32-bit platforms)
  7. limit = 1073741823) {
  8. super();
  9. this.limit = limit;
  10. }
  11. set(key, value) {
  12. super.delete(key);
  13. super.set(key, value);
  14. if (super.size > this.limit)
  15. super.delete(super.keys().next().value);
  16. return this;
  17. }
  18. get(key) {
  19. const value = super.get(key);
  20. if (value === void 0) {
  21. if (super.delete(key))
  22. super.set(key, value);
  23. return value;
  24. }
  25. super.delete(key);
  26. super.set(key, value);
  27. return value;
  28. }
  29. }
  30. exports.LruMap = LruMap;