@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.
@@ -1,8 +1,8 @@
1
- export type CacheData<T> = {
1
+ export interface CacheData<T> {
2
2
  value?: T | null;
3
3
  time: number;
4
4
  size: number;
5
- };
5
+ }
6
6
  type Key = string | bigint | number;
7
7
  export declare class Cache<T = undefined> {
8
8
  private _map;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5E,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;IAQlD,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;IAuBvB,GAAG,CAAC,GAAG,EAAE,GAAG;IAUZ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,SAAI;IAUjC,KAAK;IAOL,IAAI,IAAI,WAEP;CACD"}
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 !== undefined) {
39
+ if (headKey?.value != null) {
40
40
  const cacheValue = this._map.get(headKey.value);
41
- const outOfDate = this.ttl !== undefined && cacheValue.time < time - this.ttl;
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);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
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.6-efee9d3",
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": "ipfs",
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.6-efee9d3",
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 type CacheData<T> = { value?: T | null; time: number; size: number };
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 !== undefined) {
47
- const cacheValue = this._map.get(headKey.value)!;
48
- const outOfDate =
49
- this.ttl !== undefined && cacheValue.time < time - this.ttl;
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();