1 |
|
2 | module.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 | };
|