@extra-memoize/memory-cache 0.1.0 → 0.2.0

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.
Files changed (71) hide show
  1. package/dist/es2015/index.min.mjs +1 -1
  2. package/dist/es2015/index.min.mjs.map +1 -1
  3. package/dist/es2015/index.mjs +4794 -2395
  4. package/dist/es2015/index.mjs.map +1 -1
  5. package/dist/es2015/index.umd.js +4794 -2395
  6. package/dist/es2015/index.umd.js.map +1 -1
  7. package/dist/es2015/index.umd.min.js +1 -1
  8. package/dist/es2015/index.umd.min.js.map +1 -1
  9. package/dist/es2018/index.min.mjs +1 -1
  10. package/dist/es2018/index.min.mjs.map +1 -1
  11. package/dist/es2018/index.mjs +4794 -2395
  12. package/dist/es2018/index.mjs.map +1 -1
  13. package/dist/es2018/index.umd.js +4794 -2395
  14. package/dist/es2018/index.umd.js.map +1 -1
  15. package/dist/es2018/index.umd.min.js +1 -1
  16. package/dist/es2018/index.umd.min.js.map +1 -1
  17. package/lib/es2015/caches/expirable-cache-with-stale-if-error.d.ts +1 -1
  18. package/lib/es2015/caches/expirable-cache-with-stale-if-error.js +13 -11
  19. package/lib/es2015/caches/expirable-cache-with-stale-if-error.js.map +1 -1
  20. package/lib/es2015/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.d.ts +4 -1
  21. package/lib/es2015/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.js +16 -14
  22. package/lib/es2015/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.js.map +1 -1
  23. package/lib/es2015/caches/expirable-cache-with-stale-while-revalidate.d.ts +3 -3
  24. package/lib/es2015/caches/expirable-cache-with-stale-while-revalidate.js +14 -7
  25. package/lib/es2015/caches/expirable-cache-with-stale-while-revalidate.js.map +1 -1
  26. package/lib/es2015/caches/expirable-cache.d.ts +2 -2
  27. package/lib/es2015/caches/expirable-cache.js +7 -1
  28. package/lib/es2015/caches/expirable-cache.js.map +1 -1
  29. package/lib/es2015/caches/lru-cache.d.ts +2 -2
  30. package/lib/es2015/caches/lru-cache.js +7 -1
  31. package/lib/es2015/caches/lru-cache.js.map +1 -1
  32. package/lib/es2015/caches/tlru-cache-with-stale-if-error.d.ts +1 -1
  33. package/lib/es2015/caches/tlru-cache-with-stale-if-error.js +13 -11
  34. package/lib/es2015/caches/tlru-cache-with-stale-if-error.js.map +1 -1
  35. package/lib/es2015/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.d.ts +4 -1
  36. package/lib/es2015/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.js +16 -14
  37. package/lib/es2015/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.js.map +1 -1
  38. package/lib/es2015/caches/tlru-cache-with-stale-while-revalidate.d.ts +8 -3
  39. package/lib/es2015/caches/tlru-cache-with-stale-while-revalidate.js +14 -7
  40. package/lib/es2015/caches/tlru-cache-with-stale-while-revalidate.js.map +1 -1
  41. package/lib/es2015/caches/tlru-cache.d.ts +2 -2
  42. package/lib/es2015/caches/tlru-cache.js +7 -1
  43. package/lib/es2015/caches/tlru-cache.js.map +1 -1
  44. package/lib/es2018/caches/expirable-cache-with-stale-if-error.d.ts +1 -1
  45. package/lib/es2018/caches/expirable-cache-with-stale-if-error.js +13 -11
  46. package/lib/es2018/caches/expirable-cache-with-stale-if-error.js.map +1 -1
  47. package/lib/es2018/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.d.ts +4 -1
  48. package/lib/es2018/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.js +16 -14
  49. package/lib/es2018/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.js.map +1 -1
  50. package/lib/es2018/caches/expirable-cache-with-stale-while-revalidate.d.ts +3 -3
  51. package/lib/es2018/caches/expirable-cache-with-stale-while-revalidate.js +14 -7
  52. package/lib/es2018/caches/expirable-cache-with-stale-while-revalidate.js.map +1 -1
  53. package/lib/es2018/caches/expirable-cache.d.ts +2 -2
  54. package/lib/es2018/caches/expirable-cache.js +7 -1
  55. package/lib/es2018/caches/expirable-cache.js.map +1 -1
  56. package/lib/es2018/caches/lru-cache.d.ts +2 -2
  57. package/lib/es2018/caches/lru-cache.js +7 -1
  58. package/lib/es2018/caches/lru-cache.js.map +1 -1
  59. package/lib/es2018/caches/tlru-cache-with-stale-if-error.d.ts +1 -1
  60. package/lib/es2018/caches/tlru-cache-with-stale-if-error.js +13 -11
  61. package/lib/es2018/caches/tlru-cache-with-stale-if-error.js.map +1 -1
  62. package/lib/es2018/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.d.ts +4 -1
  63. package/lib/es2018/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.js +16 -14
  64. package/lib/es2018/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.js.map +1 -1
  65. package/lib/es2018/caches/tlru-cache-with-stale-while-revalidate.d.ts +8 -3
  66. package/lib/es2018/caches/tlru-cache-with-stale-while-revalidate.js +14 -7
  67. package/lib/es2018/caches/tlru-cache-with-stale-while-revalidate.js.map +1 -1
  68. package/lib/es2018/caches/tlru-cache.d.ts +2 -2
  69. package/lib/es2018/caches/tlru-cache.js +7 -1
  70. package/lib/es2018/caches/tlru-cache.js.map +1 -1
  71. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"expirable-cache-with-stale-while-revalidate-and-stale-if-error.js","sourceRoot":"","sources":["../../../src/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAClD,iDAAgF;AAChF,iDAAiD;AAOjD,MAAa,qDAAqD;IAGhE,YACU,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB;QAFpB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QAE5B,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAc,CAAC,UAAU,GAAG,oBAAoB,GAAG,YAAY,CAAC,CAAA;IACnF,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QAEb,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,IAAA,qBAAW,EAAC,MAAM,CAAC;YAAE,OAAO,CAAC,qBAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;QAC7C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;YAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SACjC;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;YACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SAClD;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;YACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SAC1C;aAAM;YAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;SAC/B;IACH,CAAC;CACF;AAnCD,sHAmCC"}
1
+ {"version":3,"file":"expirable-cache-with-stale-while-revalidate-and-stale-if-error.js","sourceRoot":"","sources":["../../../src/caches/expirable-cache-with-stale-while-revalidate-and-stale-if-error.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAClD,iDAAgF;AAOhF,MAAa,qDAAqD;IAGhE,YACU,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB;QAFpB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QAE5B,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAc,CAAC,UAAU,GAAG,oBAAoB,GAAG,YAAY,CAAC,CAAA;IACnF,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QAOb,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,qBAAK,CAAC,IAAI,EAAE;YACxB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;YAC7C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aACjC;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;gBACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAClD;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;gBACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAC1C;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;CACF;AA1CD,sHA0CC"}
@@ -1,10 +1,10 @@
1
- import { IStaleWhileRevalidateCache } from 'extra-memoize';
1
+ import { IStaleWhileRevalidateCache, State } from 'extra-memoize';
2
2
  export declare class ExpirableCacheWithStaleWhileRevalidate<T = any> implements IStaleWhileRevalidateCache<T> {
3
3
  private timeToLive;
4
4
  private staleWhileRevalidate;
5
5
  private cache;
6
6
  constructor(timeToLive: number, staleWhileRevalidate: number);
7
7
  set(key: string, value: T): void;
8
- get(key: string): T | undefined;
9
- isStaleWhileRevalidate(key: string): boolean;
8
+ get(key: string): [State.Miss] | [State.Hit | State.StaleWhileRevalidate, T];
9
+ private isStaleWhileRevalidate;
10
10
  }
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExpirableCacheWithStaleWhileRevalidate = void 0;
4
4
  const expirable_cache_1 = require("./expirable-cache");
5
- const prelude_1 = require("@blackglory/prelude");
5
+ const extra_memoize_1 = require("extra-memoize");
6
6
  class ExpirableCacheWithStaleWhileRevalidate {
7
7
  constructor(timeToLive, staleWhileRevalidate) {
8
8
  this.timeToLive = timeToLive;
@@ -16,13 +16,20 @@ class ExpirableCacheWithStaleWhileRevalidate {
16
16
  });
17
17
  }
18
18
  get(key) {
19
- var _a;
20
- return (_a = this.cache.get(key)) === null || _a === void 0 ? void 0 : _a.value;
19
+ const [state, record] = this.cache.get(key);
20
+ if (state === extra_memoize_1.State.Miss) {
21
+ return [extra_memoize_1.State.Miss];
22
+ }
23
+ else {
24
+ if (this.isStaleWhileRevalidate(record)) {
25
+ return [extra_memoize_1.State.StaleWhileRevalidate, record.value];
26
+ }
27
+ else {
28
+ return [extra_memoize_1.State.Hit, record.value];
29
+ }
30
+ }
21
31
  }
22
- isStaleWhileRevalidate(key) {
23
- const record = this.cache.get(key);
24
- if ((0, prelude_1.isUndefined)(record))
25
- return false;
32
+ isStaleWhileRevalidate(record) {
26
33
  return Date.now() - record.updatedAt > this.timeToLive
27
34
  && Date.now() - record.updatedAt <= this.timeToLive + this.staleWhileRevalidate;
28
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"expirable-cache-with-stale-while-revalidate.js","sourceRoot":"","sources":["../../../src/caches/expirable-cache-with-stale-while-revalidate.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAElD,iDAAiD;AAOjD,MAAa,sCAAsC;IAGjD,YAAoB,UAAkB,EAAU,oBAA4B;QAAxD,eAAU,GAAV,UAAU,CAAQ;QAAU,yBAAoB,GAApB,oBAAoB,CAAQ;QAC1E,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAc,CAAC,UAAU,GAAG,oBAAoB,CAAC,CAAA;IACpE,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;;QACb,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAA;IACnC,CAAC;IAED,sBAAsB,CAAC,GAAW;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,IAAA,qBAAW,EAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAA;QAErC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;eAC/C,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;IACrF,CAAC;CACF;AAzBD,wFAyBC"}
1
+ {"version":3,"file":"expirable-cache-with-stale-while-revalidate.js","sourceRoot":"","sources":["../../../src/caches/expirable-cache-with-stale-while-revalidate.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAClD,iDAAiE;AAOjE,MAAa,sCAAsC;IAGjD,YAAoB,UAAkB,EAAU,oBAA4B;QAAxD,eAAU,GAAV,UAAU,CAAQ;QAAU,yBAAoB,GAApB,oBAAoB,CAAQ;QAC1E,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAc,CAAC,UAAU,GAAG,oBAAoB,CAAC,CAAA;IACpE,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,qBAAK,CAAC,IAAI,EAAE;YACxB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE;gBACvC,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAClD;iBAAM;gBACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aACjC;SACF;IACH,CAAC;IAEO,sBAAsB,CAAC,MAAkB;QAC/C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;eAC/C,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;IACrF,CAAC;CACF;AA/BD,wFA+BC"}
@@ -1,9 +1,9 @@
1
- import { ICache } from 'extra-memoize';
1
+ import { ICache, State } from 'extra-memoize';
2
2
  export declare class ExpirableCache<T = any> implements ICache<T> {
3
3
  private timeToLive;
4
4
  private map;
5
5
  constructor(timeToLive: number);
6
- get(key: string): T | undefined;
6
+ get(key: string): [State.Miss] | [State.Hit, T];
7
7
  set(key: string, value: T): void;
8
8
  clear(): void;
9
9
  }
@@ -2,13 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExpirableCache = void 0;
4
4
  const structures_1 = require("@blackglory/structures");
5
+ const extra_memoize_1 = require("extra-memoize");
5
6
  class ExpirableCache {
6
7
  constructor(timeToLive) {
7
8
  this.timeToLive = timeToLive;
8
9
  this.map = new structures_1.ExpirableMap();
9
10
  }
10
11
  get(key) {
11
- return this.map.get(key);
12
+ if (this.map.has(key)) {
13
+ return [extra_memoize_1.State.Hit, this.map.get(key)];
14
+ }
15
+ else {
16
+ return [extra_memoize_1.State.Miss];
17
+ }
12
18
  }
13
19
  set(key, value) {
14
20
  this.map.set(key, value, this.timeToLive);
@@ -1 +1 @@
1
- {"version":3,"file":"expirable-cache.js","sourceRoot":"","sources":["../../../src/caches/expirable-cache.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAGrD,MAAa,cAAc;IAGzB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QACpC,IAAI,CAAC,GAAG,GAAG,IAAI,yBAAY,EAAE,CAAA;IAC/B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACF;AAlBD,wCAkBC"}
1
+ {"version":3,"file":"expirable-cache.js","sourceRoot":"","sources":["../../../src/caches/expirable-cache.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AACrD,iDAA6C;AAE7C,MAAa,cAAc;IAGzB,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QACpC,IAAI,CAAC,GAAG,GAAG,IAAI,yBAAY,EAAE,CAAA;IAC/B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAA;SACvC;aAAM;YACL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACF;AAtBD,wCAsBC"}
@@ -1,8 +1,8 @@
1
- import { ICache } from 'extra-memoize';
1
+ import { ICache, State } from 'extra-memoize';
2
2
  export declare class LRUCache<T = any> implements ICache<T> {
3
3
  private map;
4
4
  constructor(limit: number);
5
5
  set(key: string, value: T): void;
6
- get(key: string): T | undefined;
6
+ get(key: string): [State.Miss] | [State.Hit, T];
7
7
  clear(): void;
8
8
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LRUCache = void 0;
4
4
  const structures_1 = require("@blackglory/structures");
5
+ const extra_memoize_1 = require("extra-memoize");
5
6
  class LRUCache {
6
7
  constructor(limit) {
7
8
  this.map = new structures_1.LRUMap(limit);
@@ -10,7 +11,12 @@ class LRUCache {
10
11
  this.map.set(key, value);
11
12
  }
12
13
  get(key) {
13
- return this.map.get(key);
14
+ if (this.map.has(key)) {
15
+ return [extra_memoize_1.State.Hit, this.map.get(key)];
16
+ }
17
+ else {
18
+ return [extra_memoize_1.State.Miss];
19
+ }
14
20
  }
15
21
  clear() {
16
22
  this.map.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"lru-cache.js","sourceRoot":"","sources":["../../../src/caches/lru-cache.ts"],"names":[],"mappings":";;;AAAA,uDAA+C;AAG/C,MAAa,QAAQ;IAGnB,YAAY,KAAa;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACF;AAlBD,4BAkBC"}
1
+ {"version":3,"file":"lru-cache.js","sourceRoot":"","sources":["../../../src/caches/lru-cache.ts"],"names":[],"mappings":";;;AAAA,uDAA+C;AAC/C,iDAA6C;AAE7C,MAAa,QAAQ;IAGnB,YAAY,KAAa;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAA;SACvC;aAAM;YACL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACF;AAtBD,4BAsBC"}
@@ -5,5 +5,5 @@ export declare class TLRUCacheWithStaleIfError<T = any> implements IStaleIfError
5
5
  private cache;
6
6
  constructor(limit: number, timeToLive: number, staleIfError: number);
7
7
  set(key: string, value: T): void;
8
- get(key: string): [State.Miss, undefined] | [State.Hit | State.StaleIfError, T];
8
+ get(key: string): [State.Miss] | [State.Hit | State.StaleIfError, T];
9
9
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TLRUCacheWithStaleIfError = void 0;
4
4
  const tlru_cache_1 = require("./tlru-cache");
5
5
  const extra_memoize_1 = require("extra-memoize");
6
- const prelude_1 = require("@blackglory/prelude");
7
6
  class TLRUCacheWithStaleIfError {
8
7
  constructor(limit, timeToLive, staleIfError) {
9
8
  this.timeToLive = timeToLive;
@@ -17,18 +16,21 @@ class TLRUCacheWithStaleIfError {
17
16
  });
18
17
  }
19
18
  get(key) {
20
- const record = this.cache.get(key);
21
- if ((0, prelude_1.isUndefined)(record))
22
- return [extra_memoize_1.State.Miss, undefined];
23
- const elapsed = Date.now() - record.updatedAt;
24
- if (elapsed <= this.timeToLive) {
25
- return [extra_memoize_1.State.Hit, record.value];
26
- }
27
- else if (elapsed <= this.timeToLive + this.staleIfError) {
28
- return [extra_memoize_1.State.StaleIfError, record.value];
19
+ const [state, record] = this.cache.get(key);
20
+ if (state === extra_memoize_1.State.Miss) {
21
+ return [extra_memoize_1.State.Miss];
29
22
  }
30
23
  else {
31
- return [extra_memoize_1.State.Miss, undefined];
24
+ const elapsed = Date.now() - record.updatedAt;
25
+ if (elapsed <= this.timeToLive) {
26
+ return [extra_memoize_1.State.Hit, record.value];
27
+ }
28
+ else if (elapsed <= this.timeToLive + this.staleIfError) {
29
+ return [extra_memoize_1.State.StaleIfError, record.value];
30
+ }
31
+ else {
32
+ return [extra_memoize_1.State.Miss];
33
+ }
32
34
  }
33
35
  }
34
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tlru-cache-with-stale-if-error.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache-with-stale-if-error.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AACxC,iDAAyD;AACzD,iDAAiD;AAOjD,MAAa,yBAAyB;IAGpC,YACE,KAAa,EACL,UAAkB,EAClB,YAAoB;QADpB,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QAE5B,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAS,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAAC,CAAA;IAC9D,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,IAAA,qBAAW,EAAC,MAAM,CAAC;YAAE,OAAO,CAAC,qBAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;QAC7C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;YAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SACjC;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;YACzD,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SAC1C;aAAM;YAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;SAC/B;IACH,CAAC;CACF;AAhCD,8DAgCC"}
1
+ {"version":3,"file":"tlru-cache-with-stale-if-error.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache-with-stale-if-error.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AACxC,iDAAyD;AAOzD,MAAa,yBAAyB;IAGpC,YACE,KAAa,EACL,UAAkB,EAClB,YAAoB;QADpB,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QAE5B,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAS,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAAC,CAAA;IAC9D,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,qBAAK,CAAC,IAAI,EAAE;YACxB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;YAC7C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aACjC;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;gBACzD,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAC1C;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;CACF;AAlCD,8DAkCC"}
@@ -6,5 +6,8 @@ export declare class TLRUCacheWithStaleWhileRevalidateAndStaleIfError<T = any> i
6
6
  private cache;
7
7
  constructor(limit: number, timeToLive: number, staleWhileRevalidate: number, staleIfError: number);
8
8
  set(key: string, value: T): void;
9
- get(key: string): [State.Miss, undefined] | [State.Hit | State.StaleWhileRevalidate | State.StaleIfError, T];
9
+ get(key: string): [State.Miss] | [
10
+ State.Hit | State.StaleWhileRevalidate | State.StaleIfError,
11
+ T
12
+ ];
10
13
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TLRUCacheWithStaleWhileRevalidateAndStaleIfError = void 0;
4
4
  const tlru_cache_1 = require("./tlru-cache");
5
5
  const extra_memoize_1 = require("extra-memoize");
6
- const prelude_1 = require("@blackglory/prelude");
7
6
  class TLRUCacheWithStaleWhileRevalidateAndStaleIfError {
8
7
  constructor(limit, timeToLive, staleWhileRevalidate, staleIfError) {
9
8
  this.timeToLive = timeToLive;
@@ -18,21 +17,24 @@ class TLRUCacheWithStaleWhileRevalidateAndStaleIfError {
18
17
  });
19
18
  }
20
19
  get(key) {
21
- const record = this.cache.get(key);
22
- if ((0, prelude_1.isUndefined)(record))
23
- return [extra_memoize_1.State.Miss, undefined];
24
- const elapsed = Date.now() - record.updatedAt;
25
- if (elapsed <= this.timeToLive) {
26
- return [extra_memoize_1.State.Hit, record.value];
27
- }
28
- else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
29
- return [extra_memoize_1.State.StaleWhileRevalidate, record.value];
30
- }
31
- else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
32
- return [extra_memoize_1.State.StaleIfError, record.value];
20
+ const [state, record] = this.cache.get(key);
21
+ if (state === extra_memoize_1.State.Miss) {
22
+ return [extra_memoize_1.State.Miss];
33
23
  }
34
24
  else {
35
- return [extra_memoize_1.State.Miss, undefined];
25
+ const elapsed = Date.now() - record.updatedAt;
26
+ if (elapsed <= this.timeToLive) {
27
+ return [extra_memoize_1.State.Hit, record.value];
28
+ }
29
+ else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
30
+ return [extra_memoize_1.State.StaleWhileRevalidate, record.value];
31
+ }
32
+ else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
33
+ return [extra_memoize_1.State.StaleIfError, record.value];
34
+ }
35
+ else {
36
+ return [extra_memoize_1.State.Miss];
37
+ }
36
38
  }
37
39
  }
38
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tlru-cache-with-stale-while-revalidate-and-stale-if-error.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AACxC,iDAAgF;AAChF,iDAAiD;AAOjD,MAAa,gDAAgD;IAG3D,YACE,KAAa,EACL,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB;QAFpB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QAE5B,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAS,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,GAAG,YAAY,CAAC,CAAA;IACrF,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QAEb,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,IAAA,qBAAW,EAAC,MAAM,CAAC;YAAE,OAAO,CAAC,qBAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;QAC7C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;YAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SACjC;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;YACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SAClD;aAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;YACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SAC1C;aAAM;YAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;SAC/B;IACH,CAAC;CACF;AApCD,4GAoCC"}
1
+ {"version":3,"file":"tlru-cache-with-stale-while-revalidate-and-stale-if-error.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache-with-stale-while-revalidate-and-stale-if-error.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AACxC,iDAAgF;AAOhF,MAAa,gDAAgD;IAG3D,YACE,KAAa,EACL,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB;QAFpB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QAE5B,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAS,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,GAAG,YAAY,CAAC,CAAA;IACrF,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QAOb,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,qBAAK,CAAC,IAAI,EAAE;YACxB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;YAC7C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aACjC;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;gBACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAClD;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;gBACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAC1C;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;CACF;AA3CD,4GA2CC"}
@@ -1,10 +1,15 @@
1
- import { IStaleWhileRevalidateCache } from 'extra-memoize';
1
+ import { IStaleWhileRevalidateCache, State } from 'extra-memoize';
2
+ interface IRecord<T> {
3
+ updatedAt: number;
4
+ value: T;
5
+ }
2
6
  export declare class TLRUCacheWithStaleWhileRevalidate<T = any> implements IStaleWhileRevalidateCache<T> {
3
7
  private timeToLive;
4
8
  private staleWhileRevalidate;
5
9
  private cache;
6
10
  constructor(limit: number, timeToLive: number, staleWhileRevalidate: number);
7
11
  set(key: string, value: T): void;
8
- get(key: string): T | undefined;
9
- isStaleWhileRevalidate(key: string): boolean;
12
+ get(key: string): [State.Miss] | [State.Hit | State.StaleWhileRevalidate, T];
13
+ isStaleWhileRevalidate(record: IRecord<T>): boolean;
10
14
  }
15
+ export {};
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TLRUCacheWithStaleWhileRevalidate = void 0;
4
4
  const tlru_cache_1 = require("./tlru-cache");
5
- const prelude_1 = require("@blackglory/prelude");
5
+ const extra_memoize_1 = require("extra-memoize");
6
6
  class TLRUCacheWithStaleWhileRevalidate {
7
7
  constructor(limit, timeToLive, staleWhileRevalidate) {
8
8
  this.timeToLive = timeToLive;
@@ -16,13 +16,20 @@ class TLRUCacheWithStaleWhileRevalidate {
16
16
  });
17
17
  }
18
18
  get(key) {
19
- var _a;
20
- return (_a = this.cache.get(key)) === null || _a === void 0 ? void 0 : _a.value;
19
+ const [state, record] = this.cache.get(key);
20
+ if (state === extra_memoize_1.State.Miss) {
21
+ return [extra_memoize_1.State.Miss];
22
+ }
23
+ else {
24
+ if (this.isStaleWhileRevalidate(record)) {
25
+ return [extra_memoize_1.State.StaleWhileRevalidate, record.value];
26
+ }
27
+ else {
28
+ return [extra_memoize_1.State.Hit, record.value];
29
+ }
30
+ }
21
31
  }
22
- isStaleWhileRevalidate(key) {
23
- const record = this.cache.get(key);
24
- if ((0, prelude_1.isUndefined)(record))
25
- return false;
32
+ isStaleWhileRevalidate(record) {
26
33
  return Date.now() - record.updatedAt > this.timeToLive
27
34
  && Date.now() - record.updatedAt <= this.timeToLive + this.staleWhileRevalidate;
28
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tlru-cache-with-stale-while-revalidate.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache-with-stale-while-revalidate.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AAExC,iDAAiD;AAOjD,MAAa,iCAAiC;IAG5C,YACE,KAAa,EACL,UAAkB,EAClB,oBAA4B;QAD5B,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAEpC,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAS,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,CAAC,CAAA;IACtE,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;;QACb,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAA;IACnC,CAAC;IAED,sBAAsB,CAAC,GAAW;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,IAAA,qBAAW,EAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAA;QAErC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;eAC/C,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;IACrF,CAAC;CACF;AA7BD,8EA6BC"}
1
+ {"version":3,"file":"tlru-cache-with-stale-while-revalidate.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache-with-stale-while-revalidate.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AACxC,iDAAiE;AAOjE,MAAa,iCAAiC;IAG5C,YACE,KAAa,EACL,UAAkB,EAClB,oBAA4B;QAD5B,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAEpC,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAS,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,CAAC,CAAA;IACtE,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,qBAAK,CAAC,IAAI,EAAE;YACxB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE;gBACvC,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAClD;iBAAM;gBACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aACjC;SACF;IACH,CAAC;IAED,sBAAsB,CAAC,MAAkB;QACvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;eAC/C,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;IACrF,CAAC;CACF;AAnCD,8EAmCC"}
@@ -1,9 +1,9 @@
1
- import { ICache } from 'extra-memoize';
1
+ import { ICache, State } from 'extra-memoize';
2
2
  export declare class TLRUCache<T = any> implements ICache<T> {
3
3
  private timeToLive;
4
4
  private map;
5
5
  constructor(limit: number, timeToLive: number);
6
6
  set(key: string, value: T): void;
7
- get(key: string): T | undefined;
7
+ get(key: string): [State.Miss] | [State.Hit, T];
8
8
  clear(): void;
9
9
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TLRUCache = void 0;
4
4
  const structures_1 = require("@blackglory/structures");
5
+ const extra_memoize_1 = require("extra-memoize");
5
6
  class TLRUCache {
6
7
  constructor(limit, timeToLive) {
7
8
  this.timeToLive = timeToLive;
@@ -11,7 +12,12 @@ class TLRUCache {
11
12
  this.map.set(key, value, this.timeToLive);
12
13
  }
13
14
  get(key) {
14
- return this.map.get(key);
15
+ if (this.map.has(key)) {
16
+ return [extra_memoize_1.State.Hit, this.map.get(key)];
17
+ }
18
+ else {
19
+ return [extra_memoize_1.State.Miss];
20
+ }
15
21
  }
16
22
  clear() {
17
23
  this.map.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"tlru-cache.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache.ts"],"names":[],"mappings":";;;AAAA,uDAAgD;AAGhD,MAAa,SAAS;IAGpB,YAAY,KAAa,EAAU,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QACnD,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACF;AAlBD,8BAkBC"}
1
+ {"version":3,"file":"tlru-cache.js","sourceRoot":"","sources":["../../../src/caches/tlru-cache.ts"],"names":[],"mappings":";;;AAAA,uDAAgD;AAChD,iDAA6C;AAE7C,MAAa,SAAS;IAGpB,YAAY,KAAa,EAAU,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QACnD,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAA;SACvC;aAAM;YACL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACF;AAtBD,8BAsBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@extra-memoize/memory-cache",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
@@ -40,38 +40,38 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@blackglory/jest-matchers": "^0.3.1",
43
- "@commitlint/cli": "^16.2.3",
44
- "@commitlint/config-conventional": "^16.2.1",
45
- "@rollup/plugin-commonjs": "^21.0.3",
43
+ "@commitlint/cli": "^16.2.4",
44
+ "@commitlint/config-conventional": "^16.2.4",
45
+ "@rollup/plugin-commonjs": "^22.0.0",
46
46
  "@rollup/plugin-json": "^4.1.0",
47
- "@rollup/plugin-node-resolve": "^13.1.3",
47
+ "@rollup/plugin-node-resolve": "^13.3.0",
48
48
  "@rollup/plugin-replace": "^4.0.0",
49
- "@rollup/plugin-typescript": "^8.3.1",
50
- "@types/jest": "^27.4.1",
51
- "@typescript-eslint/eslint-plugin": "^5.18.0",
52
- "@typescript-eslint/parser": "^5.18.0",
53
- "eslint": "^8.12.0",
54
- "extra-memoize": "^0.5.0",
49
+ "@rollup/plugin-typescript": "^8.3.2",
50
+ "@types/jest": "^27.5.0",
51
+ "@typescript-eslint/eslint-plugin": "^5.23.0",
52
+ "@typescript-eslint/parser": "^5.23.0",
53
+ "eslint": "^8.15.0",
54
+ "extra-memoize": "^0.6.0",
55
55
  "extra-promise": "^1.0.2",
56
56
  "husky": "^4.3.8",
57
57
  "jest": "^27.5.1",
58
58
  "npm-run-all": "^4.1.5",
59
59
  "return-style": "^1.0.0",
60
60
  "rimraf": "^3.0.2",
61
- "rollup": "^2.70.1",
61
+ "rollup": "^2.72.1",
62
62
  "rollup-plugin-analyzer": "^4.0.0",
63
63
  "rollup-plugin-terser": "^7.0.2",
64
64
  "standard-version": "^9.3.2",
65
65
  "ts-jest": "^27.1.4",
66
66
  "tscpaths": "^0.0.9",
67
- "tslib": "^2.3.1",
68
- "typescript": "^4.6.3"
67
+ "tslib": "^2.4.0",
68
+ "typescript": "^4.6.4"
69
69
  },
70
70
  "dependencies": {
71
71
  "@blackglory/prelude": "^0.1.1",
72
- "@blackglory/structures": "^0.3.5"
72
+ "@blackglory/structures": "^0.4.0"
73
73
  },
74
74
  "peerDependencies": {
75
- "extra-memoize": "^0.5.0"
75
+ "extra-memoize": "^0.6.0"
76
76
  }
77
77
  }