@extra-memoize/extra-disk-cache 0.2.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/es2015/async-disk-cache.d.ts +2 -2
- package/lib/es2015/async-disk-cache.js +7 -3
- package/lib/es2015/async-disk-cache.js.map +1 -1
- package/lib/es2015/stale-if-error-async-disk-cache.d.ts +1 -1
- package/lib/es2015/stale-if-error-async-disk-cache.js +12 -9
- package/lib/es2015/stale-if-error-async-disk-cache.js.map +1 -1
- package/lib/es2015/stale-while-revalidate-and-stale-if-error-async-disk-cache.d.ts +1 -1
- package/lib/es2015/stale-while-revalidate-and-stale-if-error-async-disk-cache.js +15 -12
- package/lib/es2015/stale-while-revalidate-and-stale-if-error-async-disk-cache.js.map +1 -1
- package/lib/es2015/stale-while-revalidate-async-disk-cache.d.ts +3 -3
- package/lib/es2015/stale-while-revalidate-async-disk-cache.js +12 -3
- package/lib/es2015/stale-while-revalidate-async-disk-cache.js.map +1 -1
- package/lib/es2018/async-disk-cache.d.ts +2 -2
- package/lib/es2018/async-disk-cache.js +7 -3
- package/lib/es2018/async-disk-cache.js.map +1 -1
- package/lib/es2018/stale-if-error-async-disk-cache.d.ts +1 -1
- package/lib/es2018/stale-if-error-async-disk-cache.js +12 -9
- package/lib/es2018/stale-if-error-async-disk-cache.js.map +1 -1
- package/lib/es2018/stale-while-revalidate-and-stale-if-error-async-disk-cache.d.ts +1 -1
- package/lib/es2018/stale-while-revalidate-and-stale-if-error-async-disk-cache.js +15 -12
- package/lib/es2018/stale-while-revalidate-and-stale-if-error-async-disk-cache.js.map +1 -1
- package/lib/es2018/stale-while-revalidate-async-disk-cache.d.ts +3 -3
- package/lib/es2018/stale-while-revalidate-async-disk-cache.js +12 -3
- package/lib/es2018/stale-while-revalidate-async-disk-cache.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { IAsyncCache } from 'extra-memoize';
|
|
2
|
+
import { IAsyncCache, State } from 'extra-memoize';
|
|
3
3
|
import { DiskCache } from 'extra-disk-cache';
|
|
4
4
|
export declare class AsyncDiskCache<T> implements IAsyncCache<T> {
|
|
5
5
|
private cache;
|
|
6
6
|
private toBuffer;
|
|
7
7
|
private fromBuffer;
|
|
8
8
|
constructor(cache: DiskCache, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
9
|
-
get(key: string): Promise<
|
|
9
|
+
get(key: string): Promise<[State.Miss] | [State.Hit, T]>;
|
|
10
10
|
set(key: string, value: T): Promise<void>;
|
|
11
11
|
}
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AsyncDiskCache = void 0;
|
|
13
|
+
const extra_memoize_1 = require("extra-memoize");
|
|
13
14
|
const prelude_1 = require("@blackglory/prelude");
|
|
14
15
|
const utils_1 = require("./utils");
|
|
15
16
|
class AsyncDiskCache {
|
|
@@ -21,9 +22,12 @@ class AsyncDiskCache {
|
|
|
21
22
|
get(key) {
|
|
22
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
24
|
const value = yield this.cache.getData(key);
|
|
24
|
-
if ((0, prelude_1.isUndefined)(value))
|
|
25
|
-
return
|
|
26
|
-
|
|
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
|
+
}
|
|
27
31
|
});
|
|
28
32
|
}
|
|
29
33
|
set(key, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-disk-cache.js","sourceRoot":"","sources":["../../src/async-disk-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
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"}
|
|
@@ -8,6 +8,6 @@ export declare class StaleIfErrorAsyncDiskCache<T> implements IStaleIfErrorAsync
|
|
|
8
8
|
private toBuffer;
|
|
9
9
|
private fromBuffer;
|
|
10
10
|
constructor(cache: DiskCache, timeToLive: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
11
|
-
get(key: string): Promise<[State.Miss
|
|
11
|
+
get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleIfError, T]>;
|
|
12
12
|
set(key: string, value: T): Promise<void>;
|
|
13
13
|
}
|
|
@@ -25,17 +25,20 @@ class StaleIfErrorAsyncDiskCache {
|
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
const value = yield this.cache.getData(key);
|
|
27
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
|
|
30
|
-
const elapsed = Date.now() - metadata.updatedAt;
|
|
31
|
-
if (elapsed <= this.timeToLive) {
|
|
32
|
-
return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
|
|
33
|
-
}
|
|
34
|
-
else if (elapsed <= this.timeToLive + this.staleIfError) {
|
|
35
|
-
return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
|
|
28
|
+
if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
|
|
29
|
+
return [extra_memoize_1.State.Miss];
|
|
36
30
|
}
|
|
37
31
|
else {
|
|
38
|
-
|
|
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
|
+
}
|
|
39
42
|
}
|
|
40
43
|
});
|
|
41
44
|
}
|
|
@@ -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;
|
|
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"}
|
|
@@ -9,6 +9,6 @@ export declare class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache<T> implem
|
|
|
9
9
|
private toBuffer;
|
|
10
10
|
private fromBuffer;
|
|
11
11
|
constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
12
|
-
get(key: string): Promise<[State.Miss
|
|
12
|
+
get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate | State.StaleIfError, T]>;
|
|
13
13
|
set(key: string, value: T): Promise<void>;
|
|
14
14
|
}
|
|
@@ -26,20 +26,23 @@ class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache {
|
|
|
26
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27
27
|
const value = yield this.cache.getData(key);
|
|
28
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
|
|
31
|
-
const elapsed = Date.now() - metadata.updatedAt;
|
|
32
|
-
if (elapsed <= this.timeToLive) {
|
|
33
|
-
return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
|
|
34
|
-
}
|
|
35
|
-
else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
|
|
36
|
-
return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
|
|
37
|
-
}
|
|
38
|
-
else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
|
|
39
|
-
return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
|
|
29
|
+
if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
|
|
30
|
+
return [extra_memoize_1.State.Miss];
|
|
40
31
|
}
|
|
41
32
|
else {
|
|
42
|
-
|
|
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
|
+
}
|
|
43
46
|
}
|
|
44
47
|
});
|
|
45
48
|
}
|
|
@@ -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;
|
|
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,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { IStaleWhileRevalidateAsyncCache } from 'extra-memoize';
|
|
2
|
+
import { IStaleWhileRevalidateAsyncCache, State } from 'extra-memoize';
|
|
3
3
|
import { DiskCache } from 'extra-disk-cache';
|
|
4
4
|
export declare class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhileRevalidateAsyncCache<T> {
|
|
5
5
|
private cache;
|
|
@@ -8,7 +8,7 @@ export declare class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhil
|
|
|
8
8
|
private toBuffer;
|
|
9
9
|
private fromBuffer;
|
|
10
10
|
constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
11
|
-
get(key: string): Promise<
|
|
11
|
+
get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate, T]>;
|
|
12
12
|
set(key: string, value: T): Promise<void>;
|
|
13
|
-
isStaleWhileRevalidate
|
|
13
|
+
private isStaleWhileRevalidate;
|
|
14
14
|
}
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.StaleWhileRevalidateAsyncDiskCache = void 0;
|
|
13
|
+
const extra_memoize_1 = require("extra-memoize");
|
|
13
14
|
const prelude_1 = require("@blackglory/prelude");
|
|
14
15
|
const utils_1 = require("./utils");
|
|
15
16
|
class StaleWhileRevalidateAsyncDiskCache {
|
|
@@ -23,9 +24,17 @@ class StaleWhileRevalidateAsyncDiskCache {
|
|
|
23
24
|
get(key) {
|
|
24
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
26
|
const value = yield this.cache.getData(key);
|
|
26
|
-
if ((0, prelude_1.isUndefined)(value))
|
|
27
|
-
return
|
|
28
|
-
|
|
27
|
+
if ((0, prelude_1.isUndefined)(value)) {
|
|
28
|
+
return [extra_memoize_1.State.Miss];
|
|
29
|
+
}
|
|
30
|
+
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
|
+
}
|
|
37
|
+
}
|
|
29
38
|
});
|
|
30
39
|
}
|
|
31
40
|
set(key, value) {
|
|
@@ -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":";;;;;;;;;;;;
|
|
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,11 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { IAsyncCache } from 'extra-memoize';
|
|
2
|
+
import { IAsyncCache, State } from 'extra-memoize';
|
|
3
3
|
import { DiskCache } from 'extra-disk-cache';
|
|
4
4
|
export declare class AsyncDiskCache<T> implements IAsyncCache<T> {
|
|
5
5
|
private cache;
|
|
6
6
|
private toBuffer;
|
|
7
7
|
private fromBuffer;
|
|
8
8
|
constructor(cache: DiskCache, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
9
|
-
get(key: string): Promise<
|
|
9
|
+
get(key: string): Promise<[State.Miss] | [State.Hit, T]>;
|
|
10
10
|
set(key: string, value: T): Promise<void>;
|
|
11
11
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AsyncDiskCache = void 0;
|
|
4
|
+
const extra_memoize_1 = require("extra-memoize");
|
|
4
5
|
const prelude_1 = require("@blackglory/prelude");
|
|
5
6
|
const utils_1 = require("./utils");
|
|
6
7
|
class AsyncDiskCache {
|
|
@@ -11,9 +12,12 @@ class AsyncDiskCache {
|
|
|
11
12
|
}
|
|
12
13
|
async get(key) {
|
|
13
14
|
const value = await this.cache.getData(key);
|
|
14
|
-
if ((0, prelude_1.isUndefined)(value))
|
|
15
|
-
return
|
|
16
|
-
|
|
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
|
+
}
|
|
17
21
|
}
|
|
18
22
|
async set(key, value) {
|
|
19
23
|
await this.cache.setData(key, this.toBuffer(value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-disk-cache.js","sourceRoot":"","sources":["../../src/async-disk-cache.ts"],"names":[],"mappings":";;;
|
|
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"}
|
|
@@ -8,6 +8,6 @@ export declare class StaleIfErrorAsyncDiskCache<T> implements IStaleIfErrorAsync
|
|
|
8
8
|
private toBuffer;
|
|
9
9
|
private fromBuffer;
|
|
10
10
|
constructor(cache: DiskCache, timeToLive: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
11
|
-
get(key: string): Promise<[State.Miss
|
|
11
|
+
get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleIfError, T]>;
|
|
12
12
|
set(key: string, value: T): Promise<void>;
|
|
13
13
|
}
|
|
@@ -15,17 +15,20 @@ class StaleIfErrorAsyncDiskCache {
|
|
|
15
15
|
async get(key) {
|
|
16
16
|
const value = await this.cache.getData(key);
|
|
17
17
|
const metadata = this.cache.getMetadata(key);
|
|
18
|
-
if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata))
|
|
19
|
-
return [extra_memoize_1.State.Miss
|
|
20
|
-
const elapsed = Date.now() - metadata.updatedAt;
|
|
21
|
-
if (elapsed <= this.timeToLive) {
|
|
22
|
-
return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
|
|
23
|
-
}
|
|
24
|
-
else if (elapsed <= this.timeToLive + this.staleIfError) {
|
|
25
|
-
return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
|
|
18
|
+
if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
|
|
19
|
+
return [extra_memoize_1.State.Miss];
|
|
26
20
|
}
|
|
27
21
|
else {
|
|
28
|
-
|
|
22
|
+
const elapsed = Date.now() - metadata.updatedAt;
|
|
23
|
+
if (elapsed <= this.timeToLive) {
|
|
24
|
+
return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
|
|
25
|
+
}
|
|
26
|
+
else if (elapsed <= this.timeToLive + this.staleIfError) {
|
|
27
|
+
return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return [extra_memoize_1.State.Miss];
|
|
31
|
+
}
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
async set(key, value) {
|
|
@@ -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;
|
|
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"}
|
|
@@ -9,6 +9,6 @@ export declare class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache<T> implem
|
|
|
9
9
|
private toBuffer;
|
|
10
10
|
private fromBuffer;
|
|
11
11
|
constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, staleIfError: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
12
|
-
get(key: string): Promise<[State.Miss
|
|
12
|
+
get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate | State.StaleIfError, T]>;
|
|
13
13
|
set(key: string, value: T): Promise<void>;
|
|
14
14
|
}
|
|
@@ -16,20 +16,23 @@ class StaleWhileRevalidateAndStaleIfErrorAsyncDiskCache {
|
|
|
16
16
|
async get(key) {
|
|
17
17
|
const value = await this.cache.getData(key);
|
|
18
18
|
const metadata = this.cache.getMetadata(key);
|
|
19
|
-
if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata))
|
|
20
|
-
return [extra_memoize_1.State.Miss
|
|
21
|
-
const elapsed = Date.now() - metadata.updatedAt;
|
|
22
|
-
if (elapsed <= this.timeToLive) {
|
|
23
|
-
return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
|
|
24
|
-
}
|
|
25
|
-
else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
|
|
26
|
-
return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
|
|
27
|
-
}
|
|
28
|
-
else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
|
|
29
|
-
return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
|
|
19
|
+
if ((0, prelude_1.isUndefined)(value) || (0, prelude_1.isUndefined)(metadata)) {
|
|
20
|
+
return [extra_memoize_1.State.Miss];
|
|
30
21
|
}
|
|
31
22
|
else {
|
|
32
|
-
|
|
23
|
+
const elapsed = Date.now() - metadata.updatedAt;
|
|
24
|
+
if (elapsed <= this.timeToLive) {
|
|
25
|
+
return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
|
|
26
|
+
}
|
|
27
|
+
else if (elapsed <= this.timeToLive + this.staleWhileRevalidate) {
|
|
28
|
+
return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
|
|
29
|
+
}
|
|
30
|
+
else if (elapsed <= this.timeToLive + this.staleWhileRevalidate + this.staleIfError) {
|
|
31
|
+
return [extra_memoize_1.State.StaleIfError, this.fromBuffer(value)];
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return [extra_memoize_1.State.Miss];
|
|
35
|
+
}
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
async set(key, value) {
|
|
@@ -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;
|
|
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,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { IStaleWhileRevalidateAsyncCache } from 'extra-memoize';
|
|
2
|
+
import { IStaleWhileRevalidateAsyncCache, State } from 'extra-memoize';
|
|
3
3
|
import { DiskCache } from 'extra-disk-cache';
|
|
4
4
|
export declare class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhileRevalidateAsyncCache<T> {
|
|
5
5
|
private cache;
|
|
@@ -8,7 +8,7 @@ export declare class StaleWhileRevalidateAsyncDiskCache<T> implements IStaleWhil
|
|
|
8
8
|
private toBuffer;
|
|
9
9
|
private fromBuffer;
|
|
10
10
|
constructor(cache: DiskCache, timeToLive: number, staleWhileRevalidate: number, toBuffer?: (value: T) => Buffer, fromBuffer?: (buffer: Buffer) => T);
|
|
11
|
-
get(key: string): Promise<
|
|
11
|
+
get(key: string): Promise<[State.Miss] | [State.Hit | State.StaleWhileRevalidate, T]>;
|
|
12
12
|
set(key: string, value: T): Promise<void>;
|
|
13
|
-
isStaleWhileRevalidate
|
|
13
|
+
private isStaleWhileRevalidate;
|
|
14
14
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StaleWhileRevalidateAsyncDiskCache = void 0;
|
|
4
|
+
const extra_memoize_1 = require("extra-memoize");
|
|
4
5
|
const prelude_1 = require("@blackglory/prelude");
|
|
5
6
|
const utils_1 = require("./utils");
|
|
6
7
|
class StaleWhileRevalidateAsyncDiskCache {
|
|
@@ -13,9 +14,17 @@ class StaleWhileRevalidateAsyncDiskCache {
|
|
|
13
14
|
}
|
|
14
15
|
async get(key) {
|
|
15
16
|
const value = await this.cache.getData(key);
|
|
16
|
-
if ((0, prelude_1.isUndefined)(value))
|
|
17
|
-
return
|
|
18
|
-
|
|
17
|
+
if ((0, prelude_1.isUndefined)(value)) {
|
|
18
|
+
return [extra_memoize_1.State.Miss];
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
if (await this.isStaleWhileRevalidate(key)) {
|
|
22
|
+
return [extra_memoize_1.State.StaleWhileRevalidate, this.fromBuffer(value)];
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return [extra_memoize_1.State.Hit, this.fromBuffer(value)];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
19
28
|
}
|
|
20
29
|
async set(key, value) {
|
|
21
30
|
await this.cache.set(key, this.toBuffer(value), Date.now(), this.timeToLive, this.staleWhileRevalidate);
|
|
@@ -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":";;;
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@extra-memoize/extra-disk-cache",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"files": [
|
|
6
6
|
"lib"
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"@commitlint/cli": "^16.2.3",
|
|
40
40
|
"@commitlint/config-conventional": "^16.2.1",
|
|
41
41
|
"@types/jest": "^27.4.1",
|
|
42
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
43
|
-
"@typescript-eslint/parser": "^5.
|
|
44
|
-
"eslint": "^8.
|
|
45
|
-
"extra-disk-cache": "^0.5.
|
|
46
|
-
"extra-memoize": "^0.
|
|
42
|
+
"@typescript-eslint/eslint-plugin": "^5.19.0",
|
|
43
|
+
"@typescript-eslint/parser": "^5.19.0",
|
|
44
|
+
"eslint": "^8.13.0",
|
|
45
|
+
"extra-disk-cache": "^0.5.1",
|
|
46
|
+
"extra-memoize": "^0.6.0",
|
|
47
47
|
"husky": "^4.3.8",
|
|
48
48
|
"jest": "^27.5.1",
|
|
49
49
|
"npm-run-all": "^4.1.5",
|
|
@@ -60,6 +60,6 @@
|
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"extra-disk-cache": "^0.5.0",
|
|
63
|
-
"extra-memoize": "^0.
|
|
63
|
+
"extra-memoize": "^0.6.0"
|
|
64
64
|
}
|
|
65
65
|
}
|