@extra-memoize/extra-disk-cache 0.5.1 → 0.6.2

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 (38) hide show
  1. package/README.md +13 -13
  2. package/lib/es2015/disk-cache.d.ts +9 -0
  3. package/lib/es2015/disk-cache.js +32 -0
  4. package/lib/es2015/disk-cache.js.map +1 -0
  5. package/lib/es2015/index.d.ts +1 -1
  6. package/lib/es2015/index.js +1 -1
  7. package/lib/es2015/index.js.map +1 -1
  8. package/lib/es2015/stale-if-error-async-disk-cache.d.ts +6 -8
  9. package/lib/es2015/stale-if-error-async-disk-cache.js +25 -34
  10. package/lib/es2015/stale-if-error-async-disk-cache.js.map +1 -1
  11. package/lib/es2015/stale-while-revalidate-and-stale-if-error-async-disk-cache.d.ts +6 -8
  12. package/lib/es2015/stale-while-revalidate-and-stale-if-error-async-disk-cache.js +28 -37
  13. package/lib/es2015/stale-while-revalidate-and-stale-if-error-async-disk-cache.js.map +1 -1
  14. package/lib/es2015/stale-while-revalidate-async-disk-cache.d.ts +6 -8
  15. package/lib/es2015/stale-while-revalidate-async-disk-cache.js +25 -38
  16. package/lib/es2015/stale-while-revalidate-async-disk-cache.js.map +1 -1
  17. package/lib/es2018/disk-cache.d.ts +9 -0
  18. package/lib/es2018/disk-cache.js +32 -0
  19. package/lib/es2018/disk-cache.js.map +1 -0
  20. package/lib/es2018/index.d.ts +1 -1
  21. package/lib/es2018/index.js +1 -1
  22. package/lib/es2018/index.js.map +1 -1
  23. package/lib/es2018/stale-if-error-async-disk-cache.d.ts +6 -8
  24. package/lib/es2018/stale-if-error-async-disk-cache.js +19 -15
  25. package/lib/es2018/stale-if-error-async-disk-cache.js.map +1 -1
  26. package/lib/es2018/stale-while-revalidate-and-stale-if-error-async-disk-cache.d.ts +6 -8
  27. package/lib/es2018/stale-while-revalidate-and-stale-if-error-async-disk-cache.js +20 -16
  28. package/lib/es2018/stale-while-revalidate-and-stale-if-error-async-disk-cache.js.map +1 -1
  29. package/lib/es2018/stale-while-revalidate-async-disk-cache.d.ts +6 -8
  30. package/lib/es2018/stale-while-revalidate-async-disk-cache.js +21 -19
  31. package/lib/es2018/stale-while-revalidate-async-disk-cache.js.map +1 -1
  32. package/package.json +9 -9
  33. package/lib/es2015/async-disk-cache.d.ts +0 -11
  34. package/lib/es2015/async-disk-cache.js +0 -40
  35. package/lib/es2015/async-disk-cache.js.map +0 -1
  36. package/lib/es2018/async-disk-cache.d.ts +0 -11
  37. package/lib/es2018/async-disk-cache.js +0 -27
  38. package/lib/es2018/async-disk-cache.js.map +0 -1
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @extra-memoize/extra-disk-cache
2
2
  The adapter for [extra-disk-cache].
3
3
 
4
- [extra-disk-cache]: https://www.npmjs.com/package/BlackGlory/extra-disk-cache
4
+ [extra-disk-cache]: https://www.npmjs.com/package/extra-disk-cache
5
5
 
6
6
  ## Install
7
7
  ```sh
@@ -11,22 +11,22 @@ yarn add @extra-memoize/extra-disk-cache
11
11
  ```
12
12
 
13
13
  ### API
14
- #### AsyncDiskCache
14
+ #### DiskCache
15
15
  ```ts
16
- class AsyncDiskCache<T> implements IAsyncCache<T> {
16
+ class DiskCache<T> implements ICache<T> {
17
17
  constructor(
18
- cache: DiskCache
18
+ cache: ExtraDiskCache
19
19
  , toBuffer?: (value: T) => Buffer
20
20
  , fromBuffer?: (buffer: Buffer) => T
21
21
  )
22
22
  }
23
23
  ```
24
24
 
25
- #### StaleWhileRevalidateAsyncDiskCache
25
+ #### StaleWhileRevalidateDiskCache
26
26
  ```ts
27
- class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhileRevalidateAsyncCache<T> {
27
+ class StaleWhileRevalidateDiskCache<T> implements IStaleWhileRevalidateCache<T> {
28
28
  constructor(
29
- cache: DiskCache
29
+ cache: ExtraDiskCache
30
30
  , timeToLive: number
31
31
  , staleWhileRevalidate: number
32
32
  , toBuffer?: (value: T) => Buffer
@@ -35,11 +35,11 @@ class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhileRevalidateAsyn
35
35
  }
36
36
  ```
37
37
 
38
- #### StaleIfErrorAsyncDiskCache
38
+ #### StaleIfErrorDiskCache
39
39
  ```ts
40
- class StaleIfErrorAsyncDiskCache<T> implements IStaleIfErrorAsyncCache<T> {
40
+ class StaleIfErrorDiskCache<T> implements IStaleIfErrorCache<T> {
41
41
  constructor(
42
- cache: DiskCache
42
+ cache: ExtraDiskCache
43
43
  , timeToLive: number
44
44
  , staleIfError: number
45
45
  , toBuffer?: (value: T) => Buffer
@@ -48,11 +48,11 @@ class StaleIfErrorAsyncDiskCache<T> implements IStaleIfErrorAsyncCache<T> {
48
48
  }
49
49
  ```
50
50
 
51
- #### StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache
51
+ #### StaleWhileRevalidateAndStaleIfErrorDiskCache
52
52
  ```ts
53
- class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache<T> implements IStaleWhileRevalidateAndStaleIfErrorAsyncCache<T> {
53
+ class StaleWhileRevalidateAndStaleIfErrorDiskCache<T> implements IStaleWhileRevalidateAndStaleIfErrorCache<T> {
54
54
  constructor(
55
- cache: DiskCache
55
+ cache: ExtratDiskCache
56
56
  , timeToLive: number
57
57
  , staleWhileRevalidate: number
58
58
  , staleIfError: number
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { ICache, State } from 'extra-memoize';
3
+ import { DiskCache as ExtraDiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class DiskCache<T> implements ICache<T> {
5
+ cache: DiskCacheView<string, T>;
6
+ constructor(cache: ExtraDiskCache, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
7
+ get(key: string): [State.Miss] | [State.Hit, T];
8
+ set(key: string, value: T): void;
9
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiskCache = void 0;
4
+ const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
6
+ const prelude_1 = require("@blackglory/prelude");
7
+ const utils_1 = require("./utils");
8
+ class DiskCache {
9
+ constructor(cache, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
10
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
11
+ toString: x => x,
12
+ fromString: x => x
13
+ }, {
14
+ toBuffer,
15
+ fromBuffer
16
+ });
17
+ }
18
+ get(key) {
19
+ const item = this.cache.get(key);
20
+ if ((0, prelude_1.isUndefined)(item)) {
21
+ return [extra_memoize_1.State.Miss];
22
+ }
23
+ else {
24
+ return [extra_memoize_1.State.Hit, item.value];
25
+ }
26
+ }
27
+ set(key, value) {
28
+ this.cache.set(key, value, Date.now());
29
+ }
30
+ }
31
+ exports.DiskCache = DiskCache;
32
+ //# sourceMappingURL=disk-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disk-cache.js","sourceRoot":"","sources":["../../src/disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C,uDAA6E;AAC7E,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,SAAS;IAGpB,YACE,KAAqB,EACrB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAErD,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;SAC/B;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACxC,CAAC;CACF;AAnCD,8BAmCC"}
@@ -1,4 +1,4 @@
1
- export * from './async-disk-cache';
1
+ export * from './disk-cache';
2
2
  export * from './stale-while-revalidate-async-disk-cache';
3
3
  export * from './stale-if-error-async-disk-cache';
4
4
  export * from './stale-while-revalidate-and-stale-if-error-async-disk-cache';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./async-disk-cache"), exports);
17
+ __exportStar(require("./disk-cache"), exports);
18
18
  __exportStar(require("./stale-while-revalidate-async-disk-cache"), exports);
19
19
  __exportStar(require("./stale-if-error-async-disk-cache"), exports);
20
20
  __exportStar(require("./stale-while-revalidate-and-stale-if-error-async-disk-cache"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,4EAAyD;AACzD,oEAAiD;AACjD,+FAA4E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,4EAAyD;AACzD,oEAAiD;AACjD,+FAA4E"}
@@ -1,13 +1,11 @@
1
1
  /// <reference types="node" />
2
- import { IStaleIfErrorAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class StaleIfErrorAsyncDiskCache<T> implements IStaleIfErrorAsyncCache<T> {
5
- private cache;
2
+ import { IStaleIfErrorCache, State } from 'extra-memoize';
3
+ import { DiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class StaleIfErrorDiskCache<T> implements IStaleIfErrorCache<T> {
6
5
  private timeToLive;
7
6
  private staleIfError;
8
- private toBuffer;
9
- private fromBuffer;
7
+ cache: DiskCacheView<string, T>;
10
8
  constructor(cache: DiskCache, timeToLive: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
11
- get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleIfError, T]>;
12
- set(key: string, value: T): Promise<void>;
9
+ get(key: string): [State.Miss] | [State.Hit | State.StaleIfError, T];
10
+ set(key: string, value: T): void;
13
11
  }
@@ -1,52 +1,43 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.StaleIfErrorAsyncDiskCache = void 0;
3
+ exports.StaleIfErrorDiskCache = void 0;
13
4
  const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
14
6
  const prelude_1 = require("@blackglory/prelude");
15
7
  const utils_1 = require("./utils");
16
- class StaleIfErrorAsyncDiskCache {
8
+ class StaleIfErrorDiskCache {
17
9
  constructor(cache, timeToLive, staleIfError, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
18
- this.cache = cache;
19
10
  this.timeToLive = timeToLive;
20
11
  this.staleIfError = staleIfError;
21
- this.toBuffer = toBuffer;
22
- this.fromBuffer = fromBuffer;
12
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
13
+ toString: x => x,
14
+ fromString: x => x
15
+ }, {
16
+ toBuffer,
17
+ fromBuffer
18
+ });
23
19
  }
24
20
  get(key) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const value = yield this.cache.getData(key);
27
- const metadata = this.cache.getMetadata(key);
28
- if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
29
- return [extra_memoize_1.State.Miss];
21
+ const item = this.cache.get(key);
22
+ if ((0, prelude_1.isUndefined)(item)) {
23
+ return [extra_memoize_1.State.Miss];
24
+ }
25
+ else {
26
+ const elapsed = Date.now() - item.updatedAt;
27
+ if (elapsed <= this.timeToLive) {
28
+ return [extra_memoize_1.State.Hit, item.value];
29
+ }
30
+ else if (elapsed <= this.timeToLive + this.staleIfError) {
31
+ return [extra_memoize_1.State.StaleIfError, item.value];
30
32
  }
31
33
  else {
32
- const elapsed = Date.now() - metadata.updatedAt;
33
- if (elapsed <= this.timeToLive) {
34
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
35
- }
36
- else if (elapsed <= this.timeToLive + this.staleIfError) {
37
- return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
38
- }
39
- else {
40
- return [extra_memoize_1.State.Miss];
41
- }
34
+ return [extra_memoize_1.State.Miss];
42
35
  }
43
- });
36
+ }
44
37
  }
45
38
  set(key, value) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- yield this.cache.set(key, this.toBuffer(value), Date.now(), this.timeToLive, this.staleIfError);
48
- });
39
+ this.cache.set(key, value, Date.now(), this.timeToLive + this.staleIfError);
49
40
  }
50
41
  }
51
- exports.StaleIfErrorAsyncDiskCache = StaleIfErrorAsyncDiskCache;
42
+ exports.StaleIfErrorDiskCache = StaleIfErrorDiskCache;
52
43
  //# sourceMappingURL=stale-if-error-async-disk-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8D;AAE9D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,0BAA0B;IACrC,YACU,KAAgB,EAChB,UAAkB,EAClB,YAAoB,EACpB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAJrD,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEE,GAAG,CAAC,GAAW;;YAInB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,IAAI,IAAA,qBAAW,EAAC,QAAQ,CAAC,EAAE;gBAC/C,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAA;gBAC/C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;iBAC3C;qBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;oBACzD,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;iBACpD;qBAAM;oBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;iBACpB;aACF;QACH,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW,EAAE,KAAQ;;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,CAClB,CAAA;QACH,CAAC;KAAA;CACF;AAvCD,gEAuCC"}
1
+ {"version":3,"file":"stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAyD;AACzD,uDAA2D;AAC3D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,qBAAqB;IAGhC,YACE,KAAgB,EACR,UAAkB,EAClB,YAAoB,EAC5B,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAH7C,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QAI5B,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;YAC3C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAC/B;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;gBACzD,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aACxC;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,GAAG,EACH,KAAK,EACL,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CACpC,CAAA;IACH,CAAC;CACF;AAlDD,sDAkDC"}
@@ -1,14 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { IStaleWhileRevalidateAndStaleIfErrorAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache<T> implements IStaleWhileRevalidateAndStaleIfErrorAsyncCache<T> {
5
- private cache;
2
+ import { IStaleWhileRevalidateAndStaleIfErrorCache, State } from 'extra-memoize';
3
+ import { DiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class StaleWhileRevalidateAndStaleIfErrorDiskCache<T> implements IStaleWhileRevalidateAndStaleIfErrorCache<T> {
6
5
  private timeToLive;
7
6
  private staleWhileRevalidate;
8
7
  private staleIfError;
9
- private toBuffer;
10
- private fromBuffer;
8
+ cache: DiskCacheView<string, T>;
11
9
  constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
12
- get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate | State.StaleIfError, T]>;
13
- set(key: string, value: T): Promise<void>;
10
+ get(key: string): [State.Miss] | [State.Hit | State.StaleWhileRevalidate | State.StaleIfError, T];
11
+ set(key: string, value: T): void;
14
12
  }
@@ -1,56 +1,47 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache = void 0;
3
+ exports.StaleWhileRevalidateAndStaleIfErrorDiskCache = void 0;
13
4
  const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
14
6
  const prelude_1 = require("@blackglory/prelude");
15
7
  const utils_1 = require("./utils");
16
- class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache {
8
+ class StaleWhileRevalidateAndStaleIfErrorDiskCache {
17
9
  constructor(cache, timeToLive, staleWhileRevalidate, staleIfError, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
18
- this.cache = cache;
19
10
  this.timeToLive = timeToLive;
20
11
  this.staleWhileRevalidate = staleWhileRevalidate;
21
12
  this.staleIfError = staleIfError;
22
- this.toBuffer = toBuffer;
23
- this.fromBuffer = fromBuffer;
13
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
14
+ toString: x => x,
15
+ fromString: x => x
16
+ }, {
17
+ toBuffer,
18
+ fromBuffer
19
+ });
24
20
  }
25
21
  get(key) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- const value = yield this.cache.getData(key);
28
- const metadata = this.cache.getMetadata(key);
29
- if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
30
- return [extra_memoize_1.State.Miss];
22
+ const item = this.cache.get(key);
23
+ if ((0, prelude_1.isUndefined)(item)) {
24
+ return [extra_memoize_1.State.Miss];
25
+ }
26
+ else {
27
+ const elapsed = Date.now() - item.updatedAt;
28
+ if (elapsed <= this.timeToLive) {
29
+ return [extra_memoize_1.State.Hit, item.value];
30
+ }
31
+ else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
32
+ return [extra_memoize_1.State.StaleWhileRevalidate, item.value];
33
+ }
34
+ else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
35
+ return [extra_memoize_1.State.StaleIfError, item.value];
31
36
  }
32
37
  else {
33
- const elapsed = Date.now() - metadata.updatedAt;
34
- if (elapsed <= this.timeToLive) {
35
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
36
- }
37
- else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
38
- return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
39
- }
40
- else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
41
- return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
42
- }
43
- else {
44
- return [extra_memoize_1.State.Miss];
45
- }
38
+ return [extra_memoize_1.State.Miss];
46
39
  }
47
- });
40
+ }
48
41
  }
49
42
  set(key, value) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- yield this.cache.set(key, this.toBuffer(value), Date.now(), this.timeToLive, this.staleWhileRevalidate + this.staleIfError);
52
- });
43
+ this.cache.set(key, value, Date.now(), this.timeToLive + this.staleWhileRevalidate + this.staleIfError);
53
44
  }
54
45
  }
55
- exports.StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache = StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache;
46
+ exports.StaleWhileRevalidateAndStaleIfErrorDiskCache = StaleWhileRevalidateAndStaleIfErrorDiskCache;
56
47
  //# sourceMappingURL=stale-while-revalidate-and-stale-if-error-async-disk-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stale-while-revalidate-and-stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-and-stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAqF;AAErF,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,iDAAiD;IAC5D,YACU,KAAgB,EAChB,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB,EACpB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QALrD,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QACpB,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEE,GAAG,CAAC,GAAW;;YAInB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,IAAI,IAAA,qBAAW,EAAC,QAAQ,CAAC,EAAE;gBAC/C,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAA;gBAC/C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;iBAC3C;qBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;oBACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;iBAC5D;qBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;oBACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;iBACpD;qBAAM;oBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;iBACpB;aACF;QACH,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW,EAAE,KAAQ;;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAC9C,CAAA;QACH,CAAC;KAAA;CACF;AA1CD,8GA0CC"}
1
+ {"version":3,"file":"stale-while-revalidate-and-stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-and-stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAgF;AAChF,uDAA2D;AAC3D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,4CAA4C;IAGvD,YACE,KAAgB,EACR,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB,EAC5B,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAJ7C,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QAI5B,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;YAC3C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAC/B;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;gBACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAChD;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;gBACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aACxC;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,GAAG,EACH,KAAK,EACL,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAChE,CAAA;IACH,CAAC;CACF;AArDD,oGAqDC"}
@@ -1,14 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { IStaleWhileRevalidateAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhileRevalidateAsyncCache<T> {
5
- private cache;
2
+ import { IStaleWhileRevalidateCache, State } from 'extra-memoize';
3
+ import { DiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class StaleWhileRevalidateDiskCache<T> implements IStaleWhileRevalidateCache<T> {
6
5
  private timeToLive;
7
6
  private staleWhileRevalidate;
8
- private toBuffer;
9
- private fromBuffer;
7
+ cache: DiskCacheView<string, T>;
10
8
  constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
11
- get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate, T]>;
12
- set(key: string, value: T): Promise<void>;
9
+ get(key: string): [State.Miss] | [State.Hit | State.StaleWhileRevalidate, T];
10
+ set(key: string, value: T): void;
13
11
  private isStaleWhileRevalidate;
14
12
  }
@@ -1,57 +1,44 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.StaleWhileRevalidateAsyncDiskCache = void 0;
3
+ exports.StaleWhileRevalidateDiskCache = void 0;
13
4
  const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
14
6
  const prelude_1 = require("@blackglory/prelude");
15
7
  const utils_1 = require("./utils");
16
- class StaleWhileRevalidateAsyncDiskCache {
8
+ class StaleWhileRevalidateDiskCache {
17
9
  constructor(cache, timeToLive, staleWhileRevalidate, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
18
- this.cache = cache;
19
10
  this.timeToLive = timeToLive;
20
11
  this.staleWhileRevalidate = staleWhileRevalidate;
21
- this.toBuffer = toBuffer;
22
- this.fromBuffer = fromBuffer;
12
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
13
+ toString: x => x,
14
+ fromString: x => x
15
+ }, {
16
+ toBuffer,
17
+ fromBuffer
18
+ });
23
19
  }
24
20
  get(key) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const value = yield this.cache.getData(key);
27
- if ((0, prelude_1.isUndefined)(value)) {
28
- return [extra_memoize_1.State.Miss];
21
+ const item = this.cache.get(key);
22
+ if ((0, prelude_1.isUndefined)(item)) {
23
+ return [extra_memoize_1.State.Miss];
24
+ }
25
+ else {
26
+ if (this.isStaleWhileRevalidate(item.updatedAt)) {
27
+ return [extra_memoize_1.State.StaleWhileRevalidate, item.value];
29
28
  }
30
29
  else {
31
- if (yield this.isStaleWhileRevalidate(key)) {
32
- return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
33
- }
34
- else {
35
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
36
- }
30
+ return [extra_memoize_1.State.Hit, item.value];
37
31
  }
38
- });
32
+ }
39
33
  }
40
34
  set(key, value) {
41
- return __awaiter(this, void 0, void 0, function* () {
42
- yield this.cache.set(key, this.toBuffer(value), Date.now(), this.timeToLive, this.staleWhileRevalidate);
43
- });
35
+ this.cache.set(key, value, Date.now(), this.timeToLive + this.staleWhileRevalidate);
44
36
  }
45
- isStaleWhileRevalidate(key) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- const metadata = this.cache.getMetadata(key);
48
- if ((0, prelude_1.isUndefined)(metadata))
49
- return false;
50
- const elapsed = Date.now() - metadata.updatedAt;
51
- return elapsed > this.timeToLive
52
- && elapsed < this.timeToLive + this.staleWhileRevalidate;
53
- });
37
+ isStaleWhileRevalidate(updatedAt) {
38
+ const elapsed = Date.now() - updatedAt;
39
+ return elapsed > this.timeToLive
40
+ && elapsed < this.timeToLive + this.staleWhileRevalidate;
54
41
  }
55
42
  }
56
- exports.StaleWhileRevalidateAsyncDiskCache = StaleWhileRevalidateAsyncDiskCache;
43
+ exports.StaleWhileRevalidateDiskCache = StaleWhileRevalidateDiskCache;
57
44
  //# sourceMappingURL=stale-while-revalidate-async-disk-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stale-while-revalidate-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-async-disk-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAsE;AAEtE,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,kCAAkC;IAC7C,YACU,KAAgB,EAChB,UAAkB,EAClB,oBAA4B,EAC5B,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAJrD,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEE,GAAG,CAAC,GAAW;;YACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;iBAAM;gBACL,IAAI,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE;oBAC1C,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;iBAC5D;qBAAM;oBACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;iBAC3C;aACF;QACH,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW,EAAE,KAAQ;;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,oBAAoB,CAC1B,CAAA;QACH,CAAC;KAAA;IAEa,sBAAsB,CAAC,GAAW;;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,IAAA,qBAAW,EAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAA;YAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAA;YAC/C,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU;mBACzB,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;QAC9D,CAAC;KAAA;CACF;AAxCD,gFAwCC"}
1
+ {"version":3,"file":"stale-while-revalidate-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAiE;AACjE,uDAA2D;AAC3D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,6BAA6B;IAGxC,YACE,KAAgB,EACR,UAAkB,EAClB,oBAA4B,EACpC,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAH7C,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAIpC,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC/C,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAChD;iBAAM;gBACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAC/B;SACF;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,GAAG,EACH,KAAK,EACL,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAC5C,CAAA;IACH,CAAC;IAEO,sBAAsB,CAAC,SAAiB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACtC,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU;eACzB,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;IAC9D,CAAC;CACF;AApDD,sEAoDC"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { ICache, State } from 'extra-memoize';
3
+ import { DiskCache as ExtraDiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class DiskCache<T> implements ICache<T> {
5
+ cache: DiskCacheView<string, T>;
6
+ constructor(cache: ExtraDiskCache, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
7
+ get(key: string): [State.Miss] | [State.Hit, T];
8
+ set(key: string, value: T): void;
9
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiskCache = void 0;
4
+ const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
6
+ const prelude_1 = require("@blackglory/prelude");
7
+ const utils_1 = require("./utils");
8
+ class DiskCache {
9
+ constructor(cache, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
10
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
11
+ toString: x => x,
12
+ fromString: x => x
13
+ }, {
14
+ toBuffer,
15
+ fromBuffer
16
+ });
17
+ }
18
+ get(key) {
19
+ const item = this.cache.get(key);
20
+ if ((0, prelude_1.isUndefined)(item)) {
21
+ return [extra_memoize_1.State.Miss];
22
+ }
23
+ else {
24
+ return [extra_memoize_1.State.Hit, item.value];
25
+ }
26
+ }
27
+ set(key, value) {
28
+ this.cache.set(key, value, Date.now());
29
+ }
30
+ }
31
+ exports.DiskCache = DiskCache;
32
+ //# sourceMappingURL=disk-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disk-cache.js","sourceRoot":"","sources":["../../src/disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C,uDAA6E;AAC7E,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,SAAS;IAGpB,YACE,KAAqB,EACrB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAErD,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;SAC/B;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACxC,CAAC;CACF;AAnCD,8BAmCC"}
@@ -1,4 +1,4 @@
1
- export * from './async-disk-cache';
1
+ export * from './disk-cache';
2
2
  export * from './stale-while-revalidate-async-disk-cache';
3
3
  export * from './stale-if-error-async-disk-cache';
4
4
  export * from './stale-while-revalidate-and-stale-if-error-async-disk-cache';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./async-disk-cache"), exports);
17
+ __exportStar(require("./disk-cache"), exports);
18
18
  __exportStar(require("./stale-while-revalidate-async-disk-cache"), exports);
19
19
  __exportStar(require("./stale-if-error-async-disk-cache"), exports);
20
20
  __exportStar(require("./stale-while-revalidate-and-stale-if-error-async-disk-cache"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,4EAAyD;AACzD,oEAAiD;AACjD,+FAA4E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,4EAAyD;AACzD,oEAAiD;AACjD,+FAA4E"}
@@ -1,13 +1,11 @@
1
1
  /// <reference types="node" />
2
- import { IStaleIfErrorAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class StaleIfErrorAsyncDiskCache<T> implements IStaleIfErrorAsyncCache<T> {
5
- private cache;
2
+ import { IStaleIfErrorCache, State } from 'extra-memoize';
3
+ import { DiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class StaleIfErrorDiskCache<T> implements IStaleIfErrorCache<T> {
6
5
  private timeToLive;
7
6
  private staleIfError;
8
- private toBuffer;
9
- private fromBuffer;
7
+ cache: DiskCacheView<string, T>;
10
8
  constructor(cache: DiskCache, timeToLive: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
11
- get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleIfError, T]>;
12
- set(key: string, value: T): Promise<void>;
9
+ get(key: string): [State.Miss] | [State.Hit | State.StaleIfError, T];
10
+ set(key: string, value: T): void;
13
11
  }
@@ -1,39 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StaleIfErrorAsyncDiskCache = void 0;
3
+ exports.StaleIfErrorDiskCache = void 0;
4
4
  const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
5
6
  const prelude_1 = require("@blackglory/prelude");
6
7
  const utils_1 = require("./utils");
7
- class StaleIfErrorAsyncDiskCache {
8
+ class StaleIfErrorDiskCache {
8
9
  constructor(cache, timeToLive, staleIfError, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
9
- this.cache = cache;
10
10
  this.timeToLive = timeToLive;
11
11
  this.staleIfError = staleIfError;
12
- this.toBuffer = toBuffer;
13
- this.fromBuffer = fromBuffer;
12
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
13
+ toString: x => x,
14
+ fromString: x => x
15
+ }, {
16
+ toBuffer,
17
+ fromBuffer
18
+ });
14
19
  }
15
- async get(key) {
16
- const value = await this.cache.getData(key);
17
- const metadata = this.cache.getMetadata(key);
18
- if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
20
+ get(key) {
21
+ const item = this.cache.get(key);
22
+ if ((0, prelude_1.isUndefined)(item)) {
19
23
  return [extra_memoize_1.State.Miss];
20
24
  }
21
25
  else {
22
- const elapsed = Date.now() - metadata.updatedAt;
26
+ const elapsed = Date.now() - item.updatedAt;
23
27
  if (elapsed <= this.timeToLive) {
24
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
28
+ return [extra_memoize_1.State.Hit, item.value];
25
29
  }
26
30
  else if (elapsed <= this.timeToLive + this.staleIfError) {
27
- return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
31
+ return [extra_memoize_1.State.StaleIfError, item.value];
28
32
  }
29
33
  else {
30
34
  return [extra_memoize_1.State.Miss];
31
35
  }
32
36
  }
33
37
  }
34
- async set(key, value) {
35
- await this.cache.set(key, this.toBuffer(value), Date.now(), this.timeToLive, this.staleIfError);
38
+ set(key, value) {
39
+ this.cache.set(key, value, Date.now(), this.timeToLive + this.staleIfError);
36
40
  }
37
41
  }
38
- exports.StaleIfErrorAsyncDiskCache = StaleIfErrorAsyncDiskCache;
42
+ exports.StaleIfErrorDiskCache = StaleIfErrorDiskCache;
39
43
  //# sourceMappingURL=stale-if-error-async-disk-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAA8D;AAE9D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,0BAA0B;IACrC,YACU,KAAgB,EAChB,UAAkB,EAClB,YAAoB,EACpB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAJrD,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW;QAInB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC5C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,IAAI,IAAA,qBAAW,EAAC,QAAQ,CAAC,EAAE;YAC/C,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAA;YAC/C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aAC3C;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;gBACzD,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aACpD;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,CAClB,CAAA;IACH,CAAC;CACF;AAvCD,gEAuCC"}
1
+ {"version":3,"file":"stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAyD;AACzD,uDAA2D;AAC3D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,qBAAqB;IAGhC,YACE,KAAgB,EACR,UAAkB,EAClB,YAAoB,EAC5B,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAH7C,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QAI5B,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;YAC3C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAC/B;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;gBACzD,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aACxC;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,GAAG,EACH,KAAK,EACL,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CACpC,CAAA;IACH,CAAC;CACF;AAlDD,sDAkDC"}
@@ -1,14 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { IStaleWhileRevalidateAndStaleIfErrorAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache<T> implements IStaleWhileRevalidateAndStaleIfErrorAsyncCache<T> {
5
- private cache;
2
+ import { IStaleWhileRevalidateAndStaleIfErrorCache, State } from 'extra-memoize';
3
+ import { DiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class StaleWhileRevalidateAndStaleIfErrorDiskCache<T> implements IStaleWhileRevalidateAndStaleIfErrorCache<T> {
6
5
  private timeToLive;
7
6
  private staleWhileRevalidate;
8
7
  private staleIfError;
9
- private toBuffer;
10
- private fromBuffer;
8
+ cache: DiskCacheView<string, T>;
11
9
  constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
12
- get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate | State.StaleIfError, T]>;
13
- set(key: string, value: T): Promise<void>;
10
+ get(key: string): [State.Miss] | [State.Hit | State.StaleWhileRevalidate | State.StaleIfError, T];
11
+ set(key: string, value: T): void;
14
12
  }
@@ -1,43 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache = void 0;
3
+ exports.StaleWhileRevalidateAndStaleIfErrorDiskCache = void 0;
4
4
  const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
5
6
  const prelude_1 = require("@blackglory/prelude");
6
7
  const utils_1 = require("./utils");
7
- class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache {
8
+ class StaleWhileRevalidateAndStaleIfErrorDiskCache {
8
9
  constructor(cache, timeToLive, staleWhileRevalidate, staleIfError, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
9
- this.cache = cache;
10
10
  this.timeToLive = timeToLive;
11
11
  this.staleWhileRevalidate = staleWhileRevalidate;
12
12
  this.staleIfError = staleIfError;
13
- this.toBuffer = toBuffer;
14
- this.fromBuffer = fromBuffer;
13
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
14
+ toString: x => x,
15
+ fromString: x => x
16
+ }, {
17
+ toBuffer,
18
+ fromBuffer
19
+ });
15
20
  }
16
- async get(key) {
17
- const value = await this.cache.getData(key);
18
- const metadata = this.cache.getMetadata(key);
19
- if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
21
+ get(key) {
22
+ const item = this.cache.get(key);
23
+ if ((0, prelude_1.isUndefined)(item)) {
20
24
  return [extra_memoize_1.State.Miss];
21
25
  }
22
26
  else {
23
- const elapsed = Date.now() - metadata.updatedAt;
27
+ const elapsed = Date.now() - item.updatedAt;
24
28
  if (elapsed <= this.timeToLive) {
25
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
29
+ return [extra_memoize_1.State.Hit, item.value];
26
30
  }
27
31
  else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
28
- return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
32
+ return [extra_memoize_1.State.StaleWhileRevalidate, item.value];
29
33
  }
30
34
  else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
31
- return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
35
+ return [extra_memoize_1.State.StaleIfError, item.value];
32
36
  }
33
37
  else {
34
38
  return [extra_memoize_1.State.Miss];
35
39
  }
36
40
  }
37
41
  }
38
- async set(key, value) {
39
- await this.cache.set(key, this.toBuffer(value), Date.now(), this.timeToLive, this.staleWhileRevalidate + this.staleIfError);
42
+ set(key, value) {
43
+ this.cache.set(key, value, Date.now(), this.timeToLive + this.staleWhileRevalidate + this.staleIfError);
40
44
  }
41
45
  }
42
- exports.StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache = StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache;
46
+ exports.StaleWhileRevalidateAndStaleIfErrorDiskCache = StaleWhileRevalidateAndStaleIfErrorDiskCache;
43
47
  //# sourceMappingURL=stale-while-revalidate-and-stale-if-error-async-disk-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stale-while-revalidate-and-stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-and-stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAqF;AAErF,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,iDAAiD;IAC5D,YACU,KAAgB,EAChB,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB,EACpB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QALrD,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QACpB,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW;QAInB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC5C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,IAAI,IAAA,qBAAW,EAAC,QAAQ,CAAC,EAAE;YAC/C,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAA;YAC/C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aAC3C;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;gBACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aAC5D;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;gBACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aACpD;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAC9C,CAAA;IACH,CAAC;CACF;AA1CD,8GA0CC"}
1
+ {"version":3,"file":"stale-while-revalidate-and-stale-if-error-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-and-stale-if-error-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAgF;AAChF,uDAA2D;AAC3D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,4CAA4C;IAGvD,YACE,KAAgB,EACR,UAAkB,EAClB,oBAA4B,EAC5B,YAAoB,EAC5B,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAJ7C,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,iBAAY,GAAZ,YAAY,CAAQ;QAI5B,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;YAC3C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9B,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAC/B;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;gBACjE,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAChD;iBAAM,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE;gBACrF,OAAO,CAAC,qBAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aACxC;iBAAM;gBAEL,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;SACF;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,GAAG,EACH,KAAK,EACL,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAChE,CAAA;IACH,CAAC;CACF;AArDD,oGAqDC"}
@@ -1,14 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { IStaleWhileRevalidateAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhileRevalidateAsyncCache<T> {
5
- private cache;
2
+ import { IStaleWhileRevalidateCache, State } from 'extra-memoize';
3
+ import { DiskCache, DiskCacheView } from 'extra-disk-cache';
4
+ export declare class StaleWhileRevalidateDiskCache<T> implements IStaleWhileRevalidateCache<T> {
6
5
  private timeToLive;
7
6
  private staleWhileRevalidate;
8
- private toBuffer;
9
- private fromBuffer;
7
+ cache: DiskCacheView<string, T>;
10
8
  constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
11
- get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate, T]>;
12
- set(key: string, value: T): Promise<void>;
9
+ get(key: string): [State.Miss] | [State.Hit | State.StaleWhileRevalidate, T];
10
+ set(key: string, value: T): void;
13
11
  private isStaleWhileRevalidate;
14
12
  }
@@ -1,42 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StaleWhileRevalidateAsyncDiskCache = void 0;
3
+ exports.StaleWhileRevalidateDiskCache = void 0;
4
4
  const extra_memoize_1 = require("extra-memoize");
5
+ const extra_disk_cache_1 = require("extra-disk-cache");
5
6
  const prelude_1 = require("@blackglory/prelude");
6
7
  const utils_1 = require("./utils");
7
- class StaleWhileRevalidateAsyncDiskCache {
8
+ class StaleWhileRevalidateDiskCache {
8
9
  constructor(cache, timeToLive, staleWhileRevalidate, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
9
- this.cache = cache;
10
10
  this.timeToLive = timeToLive;
11
11
  this.staleWhileRevalidate = staleWhileRevalidate;
12
- this.toBuffer = toBuffer;
13
- this.fromBuffer = fromBuffer;
12
+ this.cache = new extra_disk_cache_1.DiskCacheView(cache, {
13
+ toString: x => x,
14
+ fromString: x => x
15
+ }, {
16
+ toBuffer,
17
+ fromBuffer
18
+ });
14
19
  }
15
- async get(key) {
16
- const value = await this.cache.getData(key);
17
- if ((0, prelude_1.isUndefined)(value)) {
20
+ get(key) {
21
+ const item = this.cache.get(key);
22
+ if ((0, prelude_1.isUndefined)(item)) {
18
23
  return [extra_memoize_1.State.Miss];
19
24
  }
20
25
  else {
21
- if (await this.isStaleWhileRevalidate(key)) {
22
- return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
26
+ if (this.isStaleWhileRevalidate(item.updatedAt)) {
27
+ return [extra_memoize_1.State.StaleWhileRevalidate, item.value];
23
28
  }
24
29
  else {
25
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
30
+ return [extra_memoize_1.State.Hit, item.value];
26
31
  }
27
32
  }
28
33
  }
29
- async set(key, value) {
30
- await this.cache.set(key, this.toBuffer(value), Date.now(), this.timeToLive, this.staleWhileRevalidate);
34
+ set(key, value) {
35
+ this.cache.set(key, value, Date.now(), this.timeToLive + this.staleWhileRevalidate);
31
36
  }
32
- async isStaleWhileRevalidate(key) {
33
- const metadata = this.cache.getMetadata(key);
34
- if ((0, prelude_1.isUndefined)(metadata))
35
- return false;
36
- const elapsed = Date.now() - metadata.updatedAt;
37
+ isStaleWhileRevalidate(updatedAt) {
38
+ const elapsed = Date.now() - updatedAt;
37
39
  return elapsed > this.timeToLive
38
40
  && elapsed < this.timeToLive + this.staleWhileRevalidate;
39
41
  }
40
42
  }
41
- exports.StaleWhileRevalidateAsyncDiskCache = StaleWhileRevalidateAsyncDiskCache;
43
+ exports.StaleWhileRevalidateDiskCache = StaleWhileRevalidateDiskCache;
42
44
  //# sourceMappingURL=stale-while-revalidate-async-disk-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stale-while-revalidate-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAsE;AAEtE,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,kCAAkC;IAC7C,YACU,KAAgB,EAChB,UAAkB,EAClB,oBAA4B,EAC5B,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAJrD,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAC5B,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,IAAI,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE;gBAC1C,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aAC5D;iBAAM;gBACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aAC3C;SACF;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,oBAAoB,CAC1B,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,GAAW;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC5C,IAAI,IAAA,qBAAW,EAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAA;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAA;QAC/C,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU;eACzB,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;IAC9D,CAAC;CACF;AAxCD,gFAwCC"}
1
+ {"version":3,"file":"stale-while-revalidate-async-disk-cache.js","sourceRoot":"","sources":["../../src/stale-while-revalidate-async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAiE;AACjE,uDAA2D;AAC3D,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,6BAA6B;IAGxC,YACE,KAAgB,EACR,UAAkB,EAClB,oBAA4B,EACpC,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAH7C,eAAU,GAAV,UAAU,CAAQ;QAClB,yBAAoB,GAApB,oBAAoB,CAAQ;QAIpC,IAAI,CAAC,KAAK,GAAG,IAAI,gCAAa,CAC5B,KAAK,EACL;YACE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnB,EACD;YACE,QAAQ;YACR,UAAU;SACX,CACF,CAAA;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QAGb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC/C,OAAO,CAAC,qBAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAChD;iBAAM;gBACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;aAC/B;SACF;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,GAAG,EACH,KAAK,EACL,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAC5C,CAAA;IACH,CAAC;IAEO,sBAAsB,CAAC,SAAiB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACtC,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU;eACzB,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAA;IAC9D,CAAC;CACF;AApDD,sEAoDC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@extra-memoize/extra-disk-cache",
3
- "version": "0.5.1",
3
+ "version": "0.6.2",
4
4
  "description": "",
5
5
  "files": [
6
6
  "lib"
@@ -39,27 +39,27 @@
39
39
  "@commitlint/cli": "^17.0.3",
40
40
  "@commitlint/config-conventional": "^17.0.3",
41
41
  "@types/jest": "^27.5.1",
42
- "@typescript-eslint/eslint-plugin": "^5.29.0",
43
- "@typescript-eslint/parser": "^5.29.0",
44
- "eslint": "^8.18.0",
45
- "extra-disk-cache": "^0.6.0",
42
+ "@typescript-eslint/eslint-plugin": "^5.32.0",
43
+ "@typescript-eslint/parser": "^5.32.0",
44
+ "eslint": "^8.21.0",
45
+ "extra-disk-cache": "^0.8.0",
46
46
  "extra-memoize": "^0.7.0",
47
47
  "husky": "^4.3.8",
48
- "jest": "^28.1.1",
48
+ "jest": "^28.1.3",
49
49
  "npm-run-all": "^4.1.5",
50
50
  "return-style": "^1.0.0",
51
51
  "rimraf": "^3.0.2",
52
52
  "standard-version": "^9.5.0",
53
- "ts-jest": "^28.0.5",
53
+ "ts-jest": "^28.0.7",
54
54
  "tscpaths": "^0.0.9",
55
55
  "tslib": "^2.3.1",
56
56
  "typescript": "^4.7.4"
57
57
  },
58
58
  "dependencies": {
59
- "@blackglory/prelude": "^0.1.2"
59
+ "@blackglory/prelude": "^0.1.3"
60
60
  },
61
61
  "peerDependencies": {
62
- "extra-disk-cache": "^0.6.0",
62
+ "extra-disk-cache": "^0.7.0 || ^0.8.0",
63
63
  "extra-memoize": "^0.6.0 || ^0.7.0"
64
64
  }
65
65
  }
@@ -1,11 +0,0 @@
1
- /// <reference types="node" />
2
- import { IAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class AsyncDiskCache<T> implements IAsyncCache<T> {
5
- private cache;
6
- private toBuffer;
7
- private fromBuffer;
8
- constructor(cache: DiskCache, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
9
- get(key: string): Promise<[State.Miss] | [State.Hit, T]>;
10
- set(key: string, value: T): Promise<void>;
11
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AsyncDiskCache = void 0;
13
- const extra_memoize_1 = require("extra-memoize");
14
- const prelude_1 = require("@blackglory/prelude");
15
- const utils_1 = require("./utils");
16
- class AsyncDiskCache {
17
- constructor(cache, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
18
- this.cache = cache;
19
- this.toBuffer = toBuffer;
20
- this.fromBuffer = fromBuffer;
21
- }
22
- get(key) {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- const value = yield this.cache.getData(key);
25
- if ((0, prelude_1.isUndefined)(value)) {
26
- return [extra_memoize_1.State.Miss];
27
- }
28
- else {
29
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
30
- }
31
- });
32
- }
33
- set(key, value) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- yield this.cache.setData(key, this.toBuffer(value));
36
- });
37
- }
38
- }
39
- exports.AsyncDiskCache = AsyncDiskCache;
40
- //# sourceMappingURL=async-disk-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-disk-cache.js","sourceRoot":"","sources":["../../src/async-disk-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAkD;AAElD,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,cAAc;IACzB,YACU,KAAgB,EAChB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAFrD,UAAK,GAAL,KAAK,CAAW;QAChB,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEE,GAAG,CAAC,GAAW;;YACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;aACpB;iBAAM;gBACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;aAC3C;QACH,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW,EAAE,KAAQ;;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QACrD,CAAC;KAAA;CACF;AAnBD,wCAmBC"}
@@ -1,11 +0,0 @@
1
- /// <reference types="node" />
2
- import { IAsyncCache, State } from 'extra-memoize';
3
- import { DiskCache } from 'extra-disk-cache';
4
- export declare class AsyncDiskCache<T> implements IAsyncCache<T> {
5
- private cache;
6
- private toBuffer;
7
- private fromBuffer;
8
- constructor(cache: DiskCache, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
9
- get(key: string): Promise<[State.Miss] | [State.Hit, T]>;
10
- set(key: string, value: T): Promise<void>;
11
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AsyncDiskCache = void 0;
4
- const extra_memoize_1 = require("extra-memoize");
5
- const prelude_1 = require("@blackglory/prelude");
6
- const utils_1 = require("./utils");
7
- class AsyncDiskCache {
8
- constructor(cache, toBuffer = utils_1.defaultToBuffer, fromBuffer = utils_1.defaultFromBuffer) {
9
- this.cache = cache;
10
- this.toBuffer = toBuffer;
11
- this.fromBuffer = fromBuffer;
12
- }
13
- async get(key) {
14
- const value = await this.cache.getData(key);
15
- if ((0, prelude_1.isUndefined)(value)) {
16
- return [extra_memoize_1.State.Miss];
17
- }
18
- else {
19
- return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
20
- }
21
- }
22
- async set(key, value) {
23
- await this.cache.setData(key, this.toBuffer(value));
24
- }
25
- }
26
- exports.AsyncDiskCache = AsyncDiskCache;
27
- //# sourceMappingURL=async-disk-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-disk-cache.js","sourceRoot":"","sources":["../../src/async-disk-cache.ts"],"names":[],"mappings":";;;AAAA,iDAAkD;AAElD,iDAAiD;AACjD,mCAA4D;AAE5D,MAAa,cAAc;IACzB,YACU,KAAgB,EAChB,WAAiC,uBAAe,EAChD,aAAoC,yBAAiB;QAFrD,UAAK,GAAL,KAAK,CAAW;QAChB,aAAQ,GAAR,QAAQ,CAAwC;QAChD,eAAU,GAAV,UAAU,CAA2C;IAC5D,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,IAAA,qBAAW,EAAC,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,qBAAK,CAAC,IAAI,CAAC,CAAA;SACpB;aAAM;YACL,OAAO,CAAC,qBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;SAC3C;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,CAAC;CACF;AAnBD,wCAmBC"}