UNPKG

603 BJavaScriptView Raw
1// A cache that expires.
2module.exports = class Cache extends Map {
3 constructor() {
4 super();
5 this.timeout = 1000;
6 }
7 set(key, value) {
8 super.set(key, {
9 tid: setTimeout(this.delete.bind(this, key), this.timeout),
10 value,
11 });
12 }
13 get(key) {
14 let entry = super.get(key);
15 if (entry) {
16 return entry.value;
17 }
18 }
19 delete(key) {
20 let entry = super.get(key);
21 if (entry) {
22 clearTimeout(entry.tid);
23 super.delete(key);
24 }
25 }
26 clear() {
27 for (let entry of this.values()) {
28 clearTimeout(entry.tid);
29 }
30 super.clear();
31 }
32};