@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.
Files changed (131) hide show
  1. package/dist/base64.d.ts +12 -7
  2. package/dist/base64.d.ts.map +1 -1
  3. package/dist/base64.js +24 -21
  4. package/dist/base64.js.map +1 -1
  5. package/dist/cache.d.ts +36 -2
  6. package/dist/cache.d.ts.map +1 -1
  7. package/dist/cache.js +110 -103
  8. package/dist/cache.js.map +1 -1
  9. package/dist/cache.test.js.map +1 -1
  10. package/dist/clone.d.ts +19 -0
  11. package/dist/clone.d.ts.map +1 -1
  12. package/dist/clone.js +29 -4
  13. package/dist/clone.js.map +1 -1
  14. package/dist/clone.test.js.map +1 -1
  15. package/dist/coalesce.d.ts +1 -1
  16. package/dist/coalesce.js +6 -22
  17. package/dist/coalesce.js.map +1 -1
  18. package/dist/coalesce.test.js.map +1 -1
  19. package/dist/colors.d.ts +3 -0
  20. package/dist/colors.d.ts.map +1 -1
  21. package/dist/colors.js +8 -5
  22. package/dist/colors.js.map +1 -1
  23. package/dist/console.js +17 -43
  24. package/dist/console.js.map +1 -1
  25. package/dist/constructor.d.ts +3 -0
  26. package/dist/constructor.d.ts.map +1 -1
  27. package/dist/decorators.d.ts +0 -4
  28. package/dist/decorators.d.ts.map +1 -1
  29. package/dist/decorators.js +1 -5
  30. package/dist/decorators.js.map +1 -1
  31. package/dist/environment.js +16 -21
  32. package/dist/environment.js.map +1 -1
  33. package/dist/errors.d.ts +1 -0
  34. package/dist/errors.d.ts.map +1 -1
  35. package/dist/errors.js +90 -143
  36. package/dist/errors.js.map +1 -1
  37. package/dist/errors.test.js.map +1 -1
  38. package/dist/get-param-names.d.ts +5 -1
  39. package/dist/get-param-names.d.ts.map +1 -1
  40. package/dist/get-param-names.js +29 -7
  41. package/dist/get-param-names.js.map +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/lazy-promise.js +18 -23
  44. package/dist/lazy-promise.js.map +1 -1
  45. package/dist/lazy-subject.js +6 -6
  46. package/dist/lazy-subject.js.map +1 -1
  47. package/dist/locks.d.ts +9 -0
  48. package/dist/locks.d.ts.map +1 -1
  49. package/dist/locks.js +50 -77
  50. package/dist/locks.js.map +1 -1
  51. package/dist/locks.test.js.map +1 -1
  52. package/dist/presentation.js +65 -106
  53. package/dist/presentation.js.map +1 -1
  54. package/dist/presentation.test.js.map +1 -1
  55. package/dist/serializer.d.ts +7 -0
  56. package/dist/serializer.d.ts.map +1 -1
  57. package/dist/serializer.js +12 -12
  58. package/dist/serializer.js.map +1 -1
  59. package/dist/test.js.map +1 -1
  60. package/dist/time.js +11 -14
  61. package/dist/time.js.map +1 -1
  62. package/dist/timeout.d.ts +11 -1
  63. package/dist/timeout.d.ts.map +1 -1
  64. package/dist/timeout.js +19 -9
  65. package/dist/timeout.js.map +1 -1
  66. package/dist/zones.d.ts +5 -0
  67. package/dist/zones.d.ts.map +1 -1
  68. package/dist/zones.js +63 -84
  69. package/dist/zones.js.map +1 -1
  70. package/dist.esm/base64.d.ts +12 -7
  71. package/dist.esm/base64.d.ts.map +1 -1
  72. package/dist.esm/base64.js +13 -7
  73. package/dist.esm/base64.js.map +1 -1
  74. package/dist.esm/cache.d.ts +36 -2
  75. package/dist.esm/cache.d.ts.map +1 -1
  76. package/dist.esm/cache.js +36 -0
  77. package/dist.esm/cache.js.map +1 -1
  78. package/dist.esm/clone.d.ts +19 -0
  79. package/dist.esm/clone.d.ts.map +1 -1
  80. package/dist.esm/clone.js +27 -2
  81. package/dist.esm/clone.js.map +1 -1
  82. package/dist.esm/coalesce.d.ts +1 -1
  83. package/dist.esm/coalesce.js +1 -1
  84. package/dist.esm/colors.d.ts +3 -0
  85. package/dist.esm/colors.d.ts.map +1 -1
  86. package/dist.esm/colors.js +3 -0
  87. package/dist.esm/colors.js.map +1 -1
  88. package/dist.esm/constructor.d.ts +3 -0
  89. package/dist.esm/constructor.d.ts.map +1 -1
  90. package/dist.esm/decorators.d.ts +0 -4
  91. package/dist.esm/decorators.d.ts.map +1 -1
  92. package/dist.esm/decorators.js +0 -4
  93. package/dist.esm/decorators.js.map +1 -1
  94. package/dist.esm/errors.d.ts +1 -0
  95. package/dist.esm/errors.d.ts.map +1 -1
  96. package/dist.esm/errors.js +1 -0
  97. package/dist.esm/errors.js.map +1 -1
  98. package/dist.esm/get-param-names.d.ts +5 -1
  99. package/dist.esm/get-param-names.d.ts.map +1 -1
  100. package/dist.esm/get-param-names.js +22 -0
  101. package/dist.esm/get-param-names.js.map +1 -1
  102. package/dist.esm/locks.d.ts +9 -0
  103. package/dist.esm/locks.d.ts.map +1 -1
  104. package/dist.esm/locks.js +9 -0
  105. package/dist.esm/locks.js.map +1 -1
  106. package/dist.esm/serializer.d.ts +7 -0
  107. package/dist.esm/serializer.d.ts.map +1 -1
  108. package/dist.esm/serializer.js +10 -10
  109. package/dist.esm/serializer.js.map +1 -1
  110. package/dist.esm/timeout.d.ts +11 -1
  111. package/dist.esm/timeout.d.ts.map +1 -1
  112. package/dist.esm/timeout.js +15 -4
  113. package/dist.esm/timeout.js.map +1 -1
  114. package/dist.esm/zones.d.ts +5 -0
  115. package/dist.esm/zones.d.ts.map +1 -1
  116. package/dist.esm/zones.js +5 -0
  117. package/dist.esm/zones.js.map +1 -1
  118. package/package.json +2 -2
  119. package/src/base64.ts +15 -9
  120. package/src/cache.ts +40 -3
  121. package/src/clone.ts +31 -3
  122. package/src/coalesce.ts +1 -1
  123. package/src/colors.ts +3 -0
  124. package/src/constructor.ts +3 -0
  125. package/src/decorators.ts +0 -4
  126. package/src/errors.ts +3 -0
  127. package/src/get-param-names.ts +23 -1
  128. package/src/locks.ts +9 -0
  129. package/src/serializer.ts +10 -13
  130. package/src/timeout.ts +16 -6
  131. package/src/zones.ts +5 -0
package/dist/base64.d.ts CHANGED
@@ -1,12 +1,17 @@
1
1
  /**
2
- *
3
- * Base64 encode / decode
4
- * http://www.webtoolkit.info/
5
- *
6
- **/
2
+ * Lightweight base64 encode / decode
3
+ */
7
4
  export declare class Base64 {
8
- static encode(input: any): string;
9
- static decode(input: any): string;
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"AAGA;;;;;IAKI;AACJ,qBAAa,MAAM;WAEJ,MAAM,CAAC,KAAK,KAAA;WAqCZ,MAAM,CAAC,KAAK,KAAA;IAqC1B,OAAO,CAAC,MAAM,CAAC,YAAY;IA2B3B,OAAO,CAAC,MAAM,CAAC,YAAY;CAgC3B"}
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
- * Base64 encode / decode
8
- * http://www.webtoolkit.info/
9
- *
10
- **/
11
- var Base64 = /** @class */ (function () {
12
- function Base64() {
13
- }
14
- // public method for encoding
15
- Base64.encode = function (input) {
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
- // public method for decoding
42
- Base64.decode = function (input) {
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
- Base64._utf8_encode = function (string) {
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
- Base64._utf8_decode = function (utftext) {
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
- return Base64;
117
- }());
119
+ }
120
+ }
118
121
  exports.Base64 = Base64;
119
122
  //# sourceMappingURL=base64.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base64.js","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"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"}
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
- get(key: string): any;
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 {};
@@ -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;IAYd,UAAU,CAAC,GAAG,EAAG,MAAM,EAAE,KAAK,EAAG,CAAC,EAAE,UAAU,CAAC,EAAG,MAAM;IAiB/D,OAAO,CAAC,kBAAkB,CAAmC;IAEtD,GAAG,CAAC,GAAG,EAAG,MAAM;IAKhB,QAAQ,CAAC,GAAG,EAAG,MAAM;IAIf,KAAK,CAAC,GAAG,EAAG,MAAM,EAAE,OAAO,CAAC,EAAG,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,YAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;CA6CxG"}
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
- var tslib_1 = require("tslib");
5
- var clone_1 = require("./clone");
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
- var Cache = /** @class */ (function () {
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
- function Cache(timeToLive, maxItems) {
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
- Cache.prototype.sliceCleanup = function () {
25
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
26
- var keys;
27
- var _this = this;
28
- return (0, tslib_1.__generator)(this, function (_a) {
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
- if (keys.length < this.maxItems)
31
- return [2 /*return*/];
32
- setTimeout(function () {
33
- // Refresh the current count, and trim the
34
- // cache to the right size, evicting last-fetched item
35
- // first.
36
- keys = Object.keys(_this.entries);
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
- Cache.prototype.getOldestEntry = function () {
49
- var selectedEntry = null;
50
- for (var key in this.entries) {
51
- var entry = this.entries[key];
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
- Cache.prototype.insertItem = function (key, value, timeToLive) {
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
- var now = new Date().getTime();
62
- var entry = this.entries[key] = {
63
- key: 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
- Cache.prototype.get = function (key) {
72
- var entry = this.entries[key];
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
- Cache.prototype.getEntry = function (key) {
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
- Cache.prototype.fetch = function (key, fetcher, options) {
79
- if (options === void 0) { options = {}; }
80
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
81
- var existingFetch, entry, now, stale, fetchOperation, _a;
82
- var _this = this;
83
- return (0, tslib_1.__generator)(this, function (_b) {
84
- switch (_b.label) {
85
- case 0:
86
- existingFetch = this.outstandingFetches.get(key);
87
- if (!existingFetch) return [3 /*break*/, 2];
88
- return [4 /*yield*/, existingFetch];
89
- case 1: return [2 /*return*/, _b.sent()];
90
- case 2:
91
- now = Date.now();
92
- stale = true;
93
- if (key in this.entries) {
94
- entry = this.entries[key];
95
- stale = entry.expiresAt < now;
96
- }
97
- if (options.missStrategy === 'fulfill')
98
- entry = stale ? undefined : entry;
99
- if (stale && fetcher) {
100
- fetchOperation = new Promise(function (resolve, reject) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
101
- var value, e_1;
102
- return (0, tslib_1.__generator)(this, function (_a) {
103
- switch (_a.label) {
104
- case 0:
105
- _a.trys.push([0, 2, , 3]);
106
- return [4 /*yield*/, fetcher()];
107
- case 1:
108
- value = _a.sent();
109
- if (value !== undefined)
110
- this.insertItem(key, value, options.timeToLive);
111
- resolve(value);
112
- return [3 /*break*/, 3];
113
- case 2:
114
- e_1 = _a.sent();
115
- console.error("Failed to fetch item " + key + ":");
116
- console.error(e_1);
117
- debugger;
118
- resolve(entry ? (0, clone_1.deepClone)(entry.value) : undefined);
119
- return [3 /*break*/, 3];
120
- case 3: return [2 /*return*/];
121
- }
122
- });
123
- }); });
124
- fetchOperation.finally(function () { return _this.outstandingFetches.delete(key); });
125
- this.outstandingFetches.set(key, fetchOperation);
126
- }
127
- if (!entry) return [3 /*break*/, 3];
128
- _a = (0, clone_1.deepClone)(entry.value);
129
- return [3 /*break*/, 5];
130
- case 3: return [4 /*yield*/, fetchOperation];
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
- return Cache;
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":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../src/cache.test.ts"],"names":[],"mappings":"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"}
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
@@ -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,OAc1B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,KAAA,OAEvC"}
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
- var clone = Object.create(obj.constructor.prototype);
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
- var output, v, key;
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') ? deepClone(v) : v;
47
+ output[key] = (typeof v === 'object') ? deepCloneWithMemoization(v, memo) : v;
26
48
  }
27
49
  return output;
28
50
  }
29
- exports.deepClone = deepClone;
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;IACpC,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,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzD;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAdD,8BAcC;AAED,SAAgB,oBAAoB,CAAC,GAAG;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC;AAFD,oDAEC"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"clone.test.js","sourceRoot":"","sources":["../src/clone.test.ts"],"names":[],"mappings":";;;AAAA,6BAA8B;AAC9B,iCAAoC;AACpC,iCAAkC;AAElC,IAAA,iBAAQ,EAAC,WAAW,EAAE,UAAA,EAAE;IAEpB,SAAS,cAAc,CAAC,KAA0B;;gCACrC,GAAG;YACR,EAAE,CAAC,eAAa,GAAK,EAAE,cAAM,OAAA,IAAA,aAAM,EAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAlD,CAAkD,CAAC,CAAC;;;YADrF,KAAgB,IAAA,KAAA,sBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,gBAAA;gBAA7B,IAAI,GAAG,WAAA;wBAAH,GAAG;aACyE;;;;;;;;;IACzF,CAAC;IAED,SAAS,YAAY,CAAC,KAAmD;;gCAC1D,GAAG,EAAI,KAAK,EAAE,OAAO;YAC5B,EAAE,CAAC,eAAa,GAAK,EAAE,cAAM,OAAA,IAAA,aAAM,EAAC,OAAO,CAAC,IAAA,iBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAA5C,CAA4C,CAAC,CAAC;;;YAD/E,KAAwC,IAAA,KAAA,sBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,gBAAA;gBAApD,IAAA,KAAA,gCAA2B,EAAzB,GAAG,QAAA,EAAE,KAAA,6BAAkB,EAAhB,KAAK,QAAA,EAAE,OAAO,QAAA;wBAArB,GAAG,EAAI,KAAK,EAAE,OAAO;aAC+C;;;;;;;;;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,UAAA,CAAC,IAAI,OAAA,KAAK,CAAC,CAAC,CAAC,EAAR,CAAQ,CAAC;KAC5B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Return the first defined value out of the passed parameters.
2
+ * Return the first value that is not undefined of the passed parameters.
3
3
  * @param values
4
4
  */
5
5
  export declare function coalesce(...values: any[]): any;