@peerbit/cache 2.0.6-efee9d3 → 2.1.0-3a75d6e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/package.json +5 -4
- package/src/index.ts +14 -6
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AACD,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACpC,qBAAa,KAAK,CAAC,CAAC,GAAG,SAAS;IAC/B,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,IAAI,CAAe;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAEpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;gBACD,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;IASlD,GAAG,CAAC,GAAG,EAAE,GAAG;IAQZ,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAEhC;IAED,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;IAQnC,IAAI,CAAC,IAAI,SAAc;IAyBvB,GAAG,CAAC,GAAG,EAAE,GAAG;IAUZ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,SAAI;IAWjC,KAAK;IAOL,IAAI,IAAI,WAEP;CACD"}
|
package/dist/src/index.js
CHANGED
|
@@ -36,9 +36,12 @@ export class Cache {
|
|
|
36
36
|
trim(time = +new Date()) {
|
|
37
37
|
for (;;) {
|
|
38
38
|
const headKey = this.list.head;
|
|
39
|
-
if (headKey?.value
|
|
39
|
+
if (headKey?.value != null) {
|
|
40
40
|
const cacheValue = this._map.get(headKey.value);
|
|
41
|
-
|
|
41
|
+
if (!cacheValue) {
|
|
42
|
+
throw new Error("Cache value not found");
|
|
43
|
+
}
|
|
44
|
+
const outOfDate = this.ttl != null && cacheValue.time < time - this.ttl;
|
|
42
45
|
if (outOfDate || this.currentSize > this.max) {
|
|
43
46
|
this.list.shift();
|
|
44
47
|
this._map.delete(headKey.value);
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/cache",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0-3a75d6e",
|
|
4
4
|
"description": "Simple cache",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"eslintConfig": {
|
|
36
|
-
"extends": "
|
|
36
|
+
"extends": "peerbit",
|
|
37
37
|
"parserOptions": {
|
|
38
38
|
"project": true,
|
|
39
39
|
"sourceType": "module"
|
|
@@ -56,11 +56,12 @@
|
|
|
56
56
|
"scripts": {
|
|
57
57
|
"clean": "aegir clean",
|
|
58
58
|
"build": "aegir build --no-bundle",
|
|
59
|
-
"test": "aegir test"
|
|
59
|
+
"test": "aegir test",
|
|
60
|
+
"lint": "aegir lint"
|
|
60
61
|
},
|
|
61
62
|
"license": "MIT",
|
|
62
63
|
"devDependencies": {
|
|
63
|
-
"@peerbit/time": "2.0.
|
|
64
|
+
"@peerbit/time": "2.0.7-3a75d6e",
|
|
64
65
|
"@types/yallist": "^4.0.4"
|
|
65
66
|
},
|
|
66
67
|
"dependencies": {
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
// Fifo
|
|
2
2
|
import yallist from "yallist";
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export interface CacheData<T> {
|
|
5
|
+
value?: T | null;
|
|
6
|
+
time: number;
|
|
7
|
+
size: number;
|
|
8
|
+
}
|
|
5
9
|
type Key = string | bigint | number;
|
|
6
10
|
export class Cache<T = undefined> {
|
|
7
11
|
private _map: Map<Key, CacheData<T>>;
|
|
@@ -20,6 +24,7 @@ export class Cache<T = undefined> {
|
|
|
20
24
|
this.ttl = options.ttl;
|
|
21
25
|
this.clear();
|
|
22
26
|
}
|
|
27
|
+
|
|
23
28
|
has(key: Key) {
|
|
24
29
|
this.trim();
|
|
25
30
|
if (this.deleted.has(key)) {
|
|
@@ -43,10 +48,12 @@ export class Cache<T = undefined> {
|
|
|
43
48
|
trim(time = +new Date()) {
|
|
44
49
|
for (;;) {
|
|
45
50
|
const headKey = this.list.head;
|
|
46
|
-
if (headKey?.value
|
|
47
|
-
const cacheValue = this._map.get(headKey.value)
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
if (headKey?.value != null) {
|
|
52
|
+
const cacheValue = this._map.get(headKey.value);
|
|
53
|
+
if (!cacheValue) {
|
|
54
|
+
throw new Error("Cache value not found");
|
|
55
|
+
}
|
|
56
|
+
const outOfDate = this.ttl != null && cacheValue.time < time - this.ttl;
|
|
50
57
|
if (outOfDate || this.currentSize > this.max) {
|
|
51
58
|
this.list.shift();
|
|
52
59
|
this._map.delete(headKey.value);
|
|
@@ -64,7 +71,7 @@ export class Cache<T = undefined> {
|
|
|
64
71
|
}
|
|
65
72
|
|
|
66
73
|
del(key: Key) {
|
|
67
|
-
const cacheValue = this._map.get(key)
|
|
74
|
+
const cacheValue = this._map.get(key);
|
|
68
75
|
if (cacheValue && !this.deleted.has(key)) {
|
|
69
76
|
this.deleted.add(key);
|
|
70
77
|
this.currentSize -= cacheValue.size;
|
|
@@ -83,6 +90,7 @@ export class Cache<T = undefined> {
|
|
|
83
90
|
this._map.set(key, { time, value: value ?? null, size });
|
|
84
91
|
this.trim(time);
|
|
85
92
|
}
|
|
93
|
+
|
|
86
94
|
clear() {
|
|
87
95
|
this.list = yallist.create();
|
|
88
96
|
this._map = new Map();
|