@alterior/common 3.0.0-rc.4 → 3.0.0-rc.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base64.d.ts +12 -7
- package/dist/base64.d.ts.map +1 -1
- package/dist/base64.js +24 -21
- package/dist/base64.js.map +1 -1
- package/dist/cache.d.ts +36 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +110 -103
- package/dist/cache.js.map +1 -1
- package/dist/cache.test.js.map +1 -1
- package/dist/clone.d.ts +19 -0
- package/dist/clone.d.ts.map +1 -1
- package/dist/clone.js +29 -4
- package/dist/clone.js.map +1 -1
- package/dist/clone.test.js.map +1 -1
- package/dist/coalesce.d.ts +1 -1
- package/dist/coalesce.js +6 -22
- package/dist/coalesce.js.map +1 -1
- package/dist/coalesce.test.js.map +1 -1
- package/dist/colors.d.ts +3 -0
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +8 -5
- package/dist/colors.js.map +1 -1
- package/dist/console.js +17 -43
- package/dist/console.js.map +1 -1
- package/dist/constructor.d.ts +3 -0
- package/dist/constructor.d.ts.map +1 -1
- package/dist/decorators.d.ts +0 -4
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +1 -5
- package/dist/decorators.js.map +1 -1
- package/dist/environment.js +16 -21
- package/dist/environment.js.map +1 -1
- package/dist/errors.d.ts +1 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +90 -143
- package/dist/errors.js.map +1 -1
- package/dist/errors.test.js.map +1 -1
- package/dist/get-param-names.d.ts +5 -1
- package/dist/get-param-names.d.ts.map +1 -1
- package/dist/get-param-names.js +29 -7
- package/dist/get-param-names.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lazy-promise.js +18 -23
- package/dist/lazy-promise.js.map +1 -1
- package/dist/lazy-subject.js +6 -6
- package/dist/lazy-subject.js.map +1 -1
- package/dist/locks.d.ts +9 -0
- package/dist/locks.d.ts.map +1 -1
- package/dist/locks.js +50 -77
- package/dist/locks.js.map +1 -1
- package/dist/locks.test.js.map +1 -1
- package/dist/presentation.js +65 -106
- package/dist/presentation.js.map +1 -1
- package/dist/presentation.test.js.map +1 -1
- package/dist/serializer.d.ts +7 -0
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +12 -12
- package/dist/serializer.js.map +1 -1
- package/dist/test.js.map +1 -1
- package/dist/time.js +11 -14
- package/dist/time.js.map +1 -1
- package/dist/timeout.d.ts +11 -1
- package/dist/timeout.d.ts.map +1 -1
- package/dist/timeout.js +19 -9
- package/dist/timeout.js.map +1 -1
- package/dist/zones.d.ts +5 -0
- package/dist/zones.d.ts.map +1 -1
- package/dist/zones.js +63 -84
- package/dist/zones.js.map +1 -1
- package/dist.esm/base64.d.ts +12 -7
- package/dist.esm/base64.d.ts.map +1 -1
- package/dist.esm/base64.js +13 -7
- package/dist.esm/base64.js.map +1 -1
- package/dist.esm/cache.d.ts +36 -2
- package/dist.esm/cache.d.ts.map +1 -1
- package/dist.esm/cache.js +36 -0
- package/dist.esm/cache.js.map +1 -1
- package/dist.esm/clone.d.ts +19 -0
- package/dist.esm/clone.d.ts.map +1 -1
- package/dist.esm/clone.js +27 -2
- package/dist.esm/clone.js.map +1 -1
- package/dist.esm/coalesce.d.ts +1 -1
- package/dist.esm/coalesce.js +1 -1
- package/dist.esm/colors.d.ts +3 -0
- package/dist.esm/colors.d.ts.map +1 -1
- package/dist.esm/colors.js +3 -0
- package/dist.esm/colors.js.map +1 -1
- package/dist.esm/constructor.d.ts +3 -0
- package/dist.esm/constructor.d.ts.map +1 -1
- package/dist.esm/decorators.d.ts +0 -4
- package/dist.esm/decorators.d.ts.map +1 -1
- package/dist.esm/decorators.js +0 -4
- package/dist.esm/decorators.js.map +1 -1
- package/dist.esm/errors.d.ts +1 -0
- package/dist.esm/errors.d.ts.map +1 -1
- package/dist.esm/errors.js +1 -0
- package/dist.esm/errors.js.map +1 -1
- package/dist.esm/get-param-names.d.ts +5 -1
- package/dist.esm/get-param-names.d.ts.map +1 -1
- package/dist.esm/get-param-names.js +22 -0
- package/dist.esm/get-param-names.js.map +1 -1
- package/dist.esm/locks.d.ts +9 -0
- package/dist.esm/locks.d.ts.map +1 -1
- package/dist.esm/locks.js +9 -0
- package/dist.esm/locks.js.map +1 -1
- package/dist.esm/serializer.d.ts +7 -0
- package/dist.esm/serializer.d.ts.map +1 -1
- package/dist.esm/serializer.js +10 -10
- package/dist.esm/serializer.js.map +1 -1
- package/dist.esm/timeout.d.ts +11 -1
- package/dist.esm/timeout.d.ts.map +1 -1
- package/dist.esm/timeout.js +15 -4
- package/dist.esm/timeout.js.map +1 -1
- package/dist.esm/zones.d.ts +5 -0
- package/dist.esm/zones.d.ts.map +1 -1
- package/dist.esm/zones.js +5 -0
- package/dist.esm/zones.js.map +1 -1
- package/package.json +2 -2
- package/src/base64.ts +15 -9
- package/src/cache.ts +40 -3
- package/src/clone.ts +31 -3
- package/src/coalesce.ts +1 -1
- package/src/colors.ts +3 -0
- package/src/constructor.ts +3 -0
- package/src/decorators.ts +0 -4
- package/src/errors.ts +3 -0
- package/src/get-param-names.ts +23 -1
- package/src/locks.ts +9 -0
- package/src/serializer.ts +10 -13
- package/src/timeout.ts +16 -6
- package/src/zones.ts +5 -0
package/dist/base64.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
* http://www.webtoolkit.info/
|
|
5
|
-
*
|
|
6
|
-
**/
|
|
2
|
+
* Lightweight base64 encode / decode
|
|
3
|
+
*/
|
|
7
4
|
export declare class Base64 {
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Encode a string using base64.
|
|
7
|
+
* @param input The string to encode
|
|
8
|
+
*/
|
|
9
|
+
static encode(input: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Decode a base64 encoded string to raw format.
|
|
12
|
+
* @param input The base64 encoded string
|
|
13
|
+
*/
|
|
14
|
+
static decode(input: string): string;
|
|
10
15
|
private static _utf8_encode;
|
|
11
16
|
private static _utf8_decode;
|
|
12
17
|
}
|
package/dist/base64.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,qBAAa,MAAM;IAClB;;;OAGG;WACW,MAAM,CAAC,KAAK,EAAG,MAAM,GAAG,MAAM;IAoC5C;;;OAGG;WACW,MAAM,CAAC,KAAK,EAAG,MAAM,GAAG,MAAM;IAqC5C,OAAO,CAAC,MAAM,CAAC,YAAY;IA2B3B,OAAO,CAAC,MAAM,CAAC,YAAY;CAgC3B"}
|
package/dist/base64.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Base64 = void 0;
|
|
4
|
-
var BASE64_KEY = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
7
|
+
const BASE64_KEY = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
8
|
+
/**
|
|
9
|
+
* Lightweight base64 encode / decode
|
|
10
|
+
*/
|
|
11
|
+
class Base64 {
|
|
12
|
+
/**
|
|
13
|
+
* Encode a string using base64.
|
|
14
|
+
* @param input The string to encode
|
|
15
|
+
*/
|
|
16
|
+
static encode(input) {
|
|
16
17
|
input = input.replace(/ /g, ' ');
|
|
17
18
|
var output = "";
|
|
18
19
|
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
|
@@ -37,9 +38,12 @@ var Base64 = /** @class */ (function () {
|
|
|
37
38
|
BASE64_KEY.charAt(enc3) + BASE64_KEY.charAt(enc4);
|
|
38
39
|
}
|
|
39
40
|
return output;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Decode a base64 encoded string to raw format.
|
|
44
|
+
* @param input The base64 encoded string
|
|
45
|
+
*/
|
|
46
|
+
static decode(input) {
|
|
43
47
|
var output = "";
|
|
44
48
|
var chr1, chr2, chr3;
|
|
45
49
|
var enc1, enc2, enc3, enc4;
|
|
@@ -63,9 +67,9 @@ var Base64 = /** @class */ (function () {
|
|
|
63
67
|
}
|
|
64
68
|
output = Base64._utf8_decode(output);
|
|
65
69
|
return output;
|
|
66
|
-
}
|
|
70
|
+
}
|
|
67
71
|
// private method for UTF-8 encoding
|
|
68
|
-
|
|
72
|
+
static _utf8_encode(string) {
|
|
69
73
|
string = string.replace(/\r\n/g, "\n");
|
|
70
74
|
var utftext = "";
|
|
71
75
|
for (var n = 0; n < string.length; n++) {
|
|
@@ -84,9 +88,9 @@ var Base64 = /** @class */ (function () {
|
|
|
84
88
|
}
|
|
85
89
|
}
|
|
86
90
|
return utftext;
|
|
87
|
-
}
|
|
91
|
+
}
|
|
88
92
|
// private method for UTF-8 decoding
|
|
89
|
-
|
|
93
|
+
static _utf8_decode(utftext) {
|
|
90
94
|
var string = "";
|
|
91
95
|
var i = 0;
|
|
92
96
|
var c = 0;
|
|
@@ -112,8 +116,7 @@ var Base64 = /** @class */ (function () {
|
|
|
112
116
|
}
|
|
113
117
|
}
|
|
114
118
|
return string;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
}());
|
|
119
|
+
}
|
|
120
|
+
}
|
|
118
121
|
exports.Base64 = Base64;
|
|
119
122
|
//# sourceMappingURL=base64.js.map
|
package/dist/base64.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ interface FetchOptions {
|
|
|
15
15
|
timeToLive?: number;
|
|
16
16
|
/**
|
|
17
17
|
* What kind of cache miss strategy should be used here.
|
|
18
|
-
* - "fulfill":
|
|
18
|
+
* - "fulfill" [default]:
|
|
19
19
|
* If the cache misses for any reason, wait until the new value is fetched and return it.
|
|
20
20
|
* - "stale-revalidate":
|
|
21
21
|
* If the cache misses due to an expired value, return the expired (stale) value
|
|
@@ -41,10 +41,44 @@ export declare class Cache<T> {
|
|
|
41
41
|
*/
|
|
42
42
|
private sliceCleanup;
|
|
43
43
|
getOldestEntry(): CacheEntry<T>;
|
|
44
|
+
/**
|
|
45
|
+
* Insert the specified item into the cache under the given key,
|
|
46
|
+
* optionally specifying a custom time-to-live. If no time-to-live
|
|
47
|
+
* is specified, the class-wide default is used.
|
|
48
|
+
*
|
|
49
|
+
* @param key The key for the cache entry
|
|
50
|
+
* @param value The value to cache
|
|
51
|
+
* @param timeToLive How long the value should remain valid for before revalidation
|
|
52
|
+
*/
|
|
44
53
|
insertItem(key: string, value: T, timeToLive?: number): void;
|
|
45
54
|
private outstandingFetches;
|
|
46
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Get the value present in the cache for the given key regardless
|
|
57
|
+
* of the cache entry's expiration status.
|
|
58
|
+
*
|
|
59
|
+
* @param key The key to get
|
|
60
|
+
*/
|
|
61
|
+
get(key: string): T;
|
|
62
|
+
/**
|
|
63
|
+
* Get the cache entry for the given key.
|
|
64
|
+
* @param key The key to get
|
|
65
|
+
*/
|
|
47
66
|
getEntry(key: string): CacheEntry<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Fetch a value from the cache, calling the given function to
|
|
69
|
+
* generate the value if it is not present or it is expired.
|
|
70
|
+
* The result of the function is then cached for future calls.
|
|
71
|
+
*
|
|
72
|
+
* Use `options.missStrategy` to control the revalidation behavior. The default value ("fulfill") will
|
|
73
|
+
* wait until the fetch operation completes to return a value in the case where a cache miss occurs,
|
|
74
|
+
* even if an expired cache value is present. The "stale-revalidate" option will instead return the
|
|
75
|
+
* value found in the cache even when expired, executing the fetch operation if the value is expired
|
|
76
|
+
* and saving the resulting value back into the cache for future calls.
|
|
77
|
+
*
|
|
78
|
+
* @param key The key to fetch
|
|
79
|
+
* @param fetcher A function to define the value of the key if a cache miss occurs
|
|
80
|
+
* @param options Options for doing the caching.
|
|
81
|
+
*/
|
|
48
82
|
fetch(key: string, fetcher?: CacheFetcher<T>, options?: FetchOptions): Promise<T>;
|
|
49
83
|
}
|
|
50
84
|
export {};
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU,CAAC,CAAC;IAClB,GAAG,EAAG,MAAM,CAAC;IACb,IAAI,EAAG,MAAM,CAAC;IACd,SAAS,EAAG,MAAM,CAAC;IACnB,WAAW,EAAG,MAAM,CAAC;IACrB,KAAK,EAAG,CAAC,CAAC;CACb;AAMD,UAAU,YAAY,CAAC,CAAC;IACpB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CAClB;AAED,UAAU,YAAY;IAClB;;OAEG;IACH,UAAU,CAAC,EAAG,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAG,SAAS,GAAG,kBAAkB,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC;IAMG,OAAO,CAAC,UAAU;IAAW,OAAO,CAAC,QAAQ;IALhE;;;;OAIG;gBACwB,UAAU,EAAG,MAAM,EAAU,QAAQ,EAAG,MAAM;IAGzE,OAAO,CAAC,OAAO,CAAoB;IAEnC;;OAEG;YACW,YAAY;IAuBnB,cAAc;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU,CAAC,CAAC;IAClB,GAAG,EAAG,MAAM,CAAC;IACb,IAAI,EAAG,MAAM,CAAC;IACd,SAAS,EAAG,MAAM,CAAC;IACnB,WAAW,EAAG,MAAM,CAAC;IACrB,KAAK,EAAG,CAAC,CAAC;CACb;AAMD,UAAU,YAAY,CAAC,CAAC;IACpB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CAClB;AAED,UAAU,YAAY;IAClB;;OAEG;IACH,UAAU,CAAC,EAAG,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAG,SAAS,GAAG,kBAAkB,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC;IAMG,OAAO,CAAC,UAAU;IAAW,OAAO,CAAC,QAAQ;IALhE;;;;OAIG;gBACwB,UAAU,EAAG,MAAM,EAAU,QAAQ,EAAG,MAAM;IAGzE,OAAO,CAAC,OAAO,CAAoB;IAEnC;;OAEG;YACW,YAAY;IAuBnB,cAAc;IAYrB;;;;;;;;OAQG;IACI,UAAU,CAAC,GAAG,EAAG,MAAM,EAAE,KAAK,EAAG,CAAC,EAAE,UAAU,CAAC,EAAG,MAAM;IAiB/D,OAAO,CAAC,kBAAkB,CAAmC;IAE7D;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAG,MAAM,GAAG,CAAC;IAK3B;;;OAGG;IACI,QAAQ,CAAC,GAAG,EAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAI5C;;;;;;;;;;;;;;OAcG;IACU,KAAK,CAAC,GAAG,EAAG,MAAM,EAAE,OAAO,CAAC,EAAG,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,YAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;CAgDxG"}
|
package/dist/cache.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Cache = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const clone_1 = require("./clone");
|
|
6
6
|
/**
|
|
7
7
|
* Provides a generic caching mechanism useful for a number of cases
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
class Cache {
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
12
12
|
* @param timeToLive Time a cached item should live before expiring, in milliseconds
|
|
13
13
|
* @param maxItems Amount of items that can be held in the cache maximum.
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
constructor(timeToLive, maxItems) {
|
|
16
16
|
this.timeToLive = timeToLive;
|
|
17
17
|
this.maxItems = maxItems;
|
|
18
18
|
this.entries = {};
|
|
@@ -21,122 +21,129 @@ var Cache = /** @class */ (function () {
|
|
|
21
21
|
/**
|
|
22
22
|
* Cache cleanup routine run whenever a value is stored in the cache
|
|
23
23
|
*/
|
|
24
|
-
|
|
25
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
sliceCleanup() {
|
|
25
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
26
|
+
let keys = Object.keys(this.entries);
|
|
27
|
+
if (keys.length < this.maxItems)
|
|
28
|
+
return;
|
|
29
|
+
setTimeout(() => {
|
|
30
|
+
// Refresh the current count, and trim the
|
|
31
|
+
// cache to the right size, evicting last-fetched item
|
|
32
|
+
// first.
|
|
29
33
|
keys = Object.keys(this.entries);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var itemCount = keys.length;
|
|
38
|
-
while (itemCount > _this.maxItems) {
|
|
39
|
-
var entry = _this.getOldestEntry();
|
|
40
|
-
delete _this.entries[entry.key];
|
|
41
|
-
--itemCount;
|
|
42
|
-
}
|
|
43
|
-
}, 100);
|
|
44
|
-
return [2 /*return*/];
|
|
45
|
-
});
|
|
34
|
+
let itemCount = keys.length;
|
|
35
|
+
while (itemCount > this.maxItems) {
|
|
36
|
+
let entry = this.getOldestEntry();
|
|
37
|
+
delete this.entries[entry.key];
|
|
38
|
+
--itemCount;
|
|
39
|
+
}
|
|
40
|
+
}, 100);
|
|
46
41
|
});
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
for (
|
|
51
|
-
|
|
42
|
+
}
|
|
43
|
+
getOldestEntry() {
|
|
44
|
+
let selectedEntry = null;
|
|
45
|
+
for (let key in this.entries) {
|
|
46
|
+
let entry = this.entries[key];
|
|
52
47
|
if (!selectedEntry || selectedEntry.time > entry.time)
|
|
53
48
|
selectedEntry = entry;
|
|
54
49
|
}
|
|
55
50
|
return selectedEntry;
|
|
56
|
-
}
|
|
57
|
-
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Insert the specified item into the cache under the given key,
|
|
54
|
+
* optionally specifying a custom time-to-live. If no time-to-live
|
|
55
|
+
* is specified, the class-wide default is used.
|
|
56
|
+
*
|
|
57
|
+
* @param key The key for the cache entry
|
|
58
|
+
* @param value The value to cache
|
|
59
|
+
* @param timeToLive How long the value should remain valid for before revalidation
|
|
60
|
+
*/
|
|
61
|
+
insertItem(key, value, timeToLive) {
|
|
58
62
|
if (timeToLive === undefined)
|
|
59
63
|
timeToLive = this.timeToLive;
|
|
60
64
|
// Compute the value
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
key
|
|
65
|
+
let now = new Date().getTime();
|
|
66
|
+
let entry = this.entries[key] = {
|
|
67
|
+
key,
|
|
64
68
|
time: now,
|
|
65
69
|
expiresAt: now + timeToLive,
|
|
66
70
|
lastFetched: now,
|
|
67
71
|
value: (0, clone_1.deepClone)(value)
|
|
68
72
|
};
|
|
69
73
|
this.sliceCleanup();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the value present in the cache for the given key regardless
|
|
77
|
+
* of the cache entry's expiration status.
|
|
78
|
+
*
|
|
79
|
+
* @param key The key to get
|
|
80
|
+
*/
|
|
81
|
+
get(key) {
|
|
82
|
+
let entry = this.entries[key];
|
|
73
83
|
return entry ? (0, clone_1.deepClone)(entry.value) : undefined;
|
|
74
|
-
}
|
|
75
|
-
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get the cache entry for the given key.
|
|
87
|
+
* @param key The key to get
|
|
88
|
+
*/
|
|
89
|
+
getEntry(key) {
|
|
76
90
|
return this.entries[key];
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
case 4:
|
|
132
|
-
_a = _b.sent();
|
|
133
|
-
_b.label = 5;
|
|
134
|
-
case 5: return [2 /*return*/, _a];
|
|
135
|
-
}
|
|
136
|
-
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Fetch a value from the cache, calling the given function to
|
|
94
|
+
* generate the value if it is not present or it is expired.
|
|
95
|
+
* The result of the function is then cached for future calls.
|
|
96
|
+
*
|
|
97
|
+
* Use `options.missStrategy` to control the revalidation behavior. The default value ("fulfill") will
|
|
98
|
+
* wait until the fetch operation completes to return a value in the case where a cache miss occurs,
|
|
99
|
+
* even if an expired cache value is present. The "stale-revalidate" option will instead return the
|
|
100
|
+
* value found in the cache even when expired, executing the fetch operation if the value is expired
|
|
101
|
+
* and saving the resulting value back into the cache for future calls.
|
|
102
|
+
*
|
|
103
|
+
* @param key The key to fetch
|
|
104
|
+
* @param fetcher A function to define the value of the key if a cache miss occurs
|
|
105
|
+
* @param options Options for doing the caching.
|
|
106
|
+
*/
|
|
107
|
+
fetch(key, fetcher, options = {}) {
|
|
108
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
109
|
+
let existingFetch = this.outstandingFetches.get(key);
|
|
110
|
+
if (existingFetch)
|
|
111
|
+
return yield existingFetch;
|
|
112
|
+
let entry;
|
|
113
|
+
let now = Date.now();
|
|
114
|
+
let stale = true;
|
|
115
|
+
if (key in this.entries) {
|
|
116
|
+
entry = this.entries[key];
|
|
117
|
+
stale = entry.expiresAt < now;
|
|
118
|
+
}
|
|
119
|
+
if (!options.missStrategy)
|
|
120
|
+
options.missStrategy = 'fulfill';
|
|
121
|
+
if (options.missStrategy === 'fulfill')
|
|
122
|
+
entry = stale ? undefined : entry;
|
|
123
|
+
let fetchOperation;
|
|
124
|
+
if (stale && fetcher) {
|
|
125
|
+
fetchOperation = new Promise((resolve, reject) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
|
|
126
|
+
// Fetch!
|
|
127
|
+
let value;
|
|
128
|
+
try {
|
|
129
|
+
value = yield fetcher();
|
|
130
|
+
if (value !== undefined)
|
|
131
|
+
this.insertItem(key, value, options.timeToLive);
|
|
132
|
+
resolve(value);
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
console.error(`Failed to fetch item ${key}:`);
|
|
136
|
+
console.error(e);
|
|
137
|
+
debugger;
|
|
138
|
+
resolve(entry ? (0, clone_1.deepClone)(entry.value) : undefined);
|
|
139
|
+
}
|
|
140
|
+
}));
|
|
141
|
+
fetchOperation.finally(() => this.outstandingFetches.delete(key));
|
|
142
|
+
this.outstandingFetches.set(key, fetchOperation);
|
|
143
|
+
}
|
|
144
|
+
return entry ? (0, clone_1.deepClone)(entry.value) : yield fetchOperation;
|
|
137
145
|
});
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
}());
|
|
146
|
+
}
|
|
147
|
+
}
|
|
141
148
|
exports.Cache = Cache;
|
|
142
149
|
//# sourceMappingURL=cache.js.map
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../src/cache.test.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../src/cache.test.ts"],"names":[],"mappings":"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"}
|
package/dist/clone.d.ts
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perform a shallow clone of the object, producing one that has the
|
|
3
|
+
* same constructor chain and prototype as the passed object.
|
|
4
|
+
* @param obj
|
|
5
|
+
*/
|
|
1
6
|
export declare function shallowClone(obj: Object): any;
|
|
7
|
+
/**
|
|
8
|
+
* Perform a standard clone using serialization (see cloneBySerialization)
|
|
9
|
+
* @param obj
|
|
10
|
+
*/
|
|
2
11
|
export declare function clone<T = any>(obj: T): T;
|
|
12
|
+
/**
|
|
13
|
+
* Deeply clone the given value. If the value is an object, all subobjects
|
|
14
|
+
* are deeply cloned as well.
|
|
15
|
+
*
|
|
16
|
+
* @param o
|
|
17
|
+
*/
|
|
3
18
|
export declare function deepClone(o: any): any;
|
|
19
|
+
/**
|
|
20
|
+
* Clone the value by serializing it to JSON and back.
|
|
21
|
+
* @param obj
|
|
22
|
+
*/
|
|
4
23
|
export declare function cloneBySerialization(obj: any): any;
|
|
5
24
|
//# sourceMappingURL=clone.d.ts.map
|
package/dist/clone.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAAC,GAAG,EAAG,MAAM,OAOxC;AAED,wBAAgB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAG,CAAC,GAAG,CAAC,CAEzC;AAED,wBAAgB,SAAS,CAAC,CAAC,KAAA,
|
|
1
|
+
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAG,MAAM,OAOxC;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAG,CAAC,GAAG,CAAC,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,KAAA,OAE1B;AAuBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,KAAA,OAEvC"}
|
package/dist/clone.js
CHANGED
|
@@ -1,32 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cloneBySerialization = exports.deepClone = exports.clone = exports.shallowClone = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Perform a shallow clone of the object, producing one that has the
|
|
6
|
+
* same constructor chain and prototype as the passed object.
|
|
7
|
+
* @param obj
|
|
8
|
+
*/
|
|
4
9
|
function shallowClone(obj) {
|
|
5
10
|
if (typeof obj !== 'object')
|
|
6
11
|
return obj;
|
|
7
|
-
|
|
12
|
+
let clone = Object.create(obj.constructor.prototype);
|
|
8
13
|
Object.assign(clone, obj);
|
|
9
14
|
return clone;
|
|
10
15
|
}
|
|
11
16
|
exports.shallowClone = shallowClone;
|
|
17
|
+
/**
|
|
18
|
+
* Perform a standard clone using serialization (see cloneBySerialization)
|
|
19
|
+
* @param obj
|
|
20
|
+
*/
|
|
12
21
|
function clone(obj) {
|
|
13
22
|
return cloneBySerialization(obj);
|
|
14
23
|
}
|
|
15
24
|
exports.clone = clone;
|
|
25
|
+
/**
|
|
26
|
+
* Deeply clone the given value. If the value is an object, all subobjects
|
|
27
|
+
* are deeply cloned as well.
|
|
28
|
+
*
|
|
29
|
+
* @param o
|
|
30
|
+
*/
|
|
16
31
|
function deepClone(o) {
|
|
32
|
+
return deepCloneWithMemoization(o, new WeakMap());
|
|
33
|
+
}
|
|
34
|
+
exports.deepClone = deepClone;
|
|
35
|
+
function deepCloneWithMemoization(o, memo) {
|
|
17
36
|
if (o === null)
|
|
18
37
|
return null;
|
|
19
38
|
if (!Array.isArray(o) && typeof o !== 'object')
|
|
20
39
|
return o;
|
|
21
|
-
|
|
40
|
+
if (memo.has(o))
|
|
41
|
+
return memo.get(o);
|
|
42
|
+
let output, v, key;
|
|
22
43
|
output = Array.isArray(o) ? [] : {};
|
|
44
|
+
memo.set(o, output);
|
|
23
45
|
for (key in o) {
|
|
24
46
|
v = o[key];
|
|
25
|
-
output[key] = (typeof v === 'object') ?
|
|
47
|
+
output[key] = (typeof v === 'object') ? deepCloneWithMemoization(v, memo) : v;
|
|
26
48
|
}
|
|
27
49
|
return output;
|
|
28
50
|
}
|
|
29
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Clone the value by serializing it to JSON and back.
|
|
53
|
+
* @param obj
|
|
54
|
+
*/
|
|
30
55
|
function cloneBySerialization(obj) {
|
|
31
56
|
return JSON.parse(JSON.stringify(obj));
|
|
32
57
|
}
|
package/dist/clone.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":";;;AACA,SAAgB,YAAY,CAAC,GAAY;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAC1B,OAAO,GAAG,CAAC;IAEZ,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC;AACd,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAU,GAAO;IACrC,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAFD,sBAEC;AAED,SAAgB,SAAS,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI;QACb,OAAO,IAAI,CAAC;IACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAC7C,OAAO,CAAC,CAAC;IAEV,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;IACnB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":";;;AACA;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAY;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAC1B,OAAO,GAAG,CAAC;IAEZ,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC;AACd,CAAC;AAPD,oCAOC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAU,GAAO;IACrC,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAFD,sBAEC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,CAAC;IAC1B,OAAO,wBAAwB,CAAC,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAFD,8BAEC;AAED,SAAS,wBAAwB,CAAC,CAAC,EAAE,IAAwB;IAC5D,IAAI,CAAC,KAAK,IAAI;QACb,OAAO,IAAI,CAAC;IACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAC7C,OAAO,CAAC,CAAC;IAEV,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEpB,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;IACnB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAEpB,KAAK,GAAG,IAAI,CAAC,EAAE;QACd,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9E;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AACD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,GAAG;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC;AAFD,oDAEC"}
|
package/dist/clone.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.test.js","sourceRoot":"","sources":["../src/clone.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clone.test.js","sourceRoot":"","sources":["../src/clone.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,mCAAoC;AACpC,mCAAkC;AAElC,IAAA,iBAAQ,EAAC,WAAW,EAAE,EAAE,CAAC,EAAE;IAEvB,SAAS,cAAc,CAAC,KAA0B;QAC9C,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,EAAE,CAAC,aAAa,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,SAAS,YAAY,CAAC,KAAmD;QACrE,KAAK,IAAI,CAAE,GAAG,EAAE,CAAE,KAAK,EAAE,OAAO,CAAE,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACzD,EAAE,CAAC,aAAa,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,OAAO,CAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAED,cAAc,CAAC;QACX,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,CAAC;KACT,CAAC,CAAC;IAEH,YAAY,CAAC;QACT,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/coalesce.d.ts
CHANGED