inray 0.0.2 → 0.0.3

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 (155) hide show
  1. package/LICENSE.md +1 -0
  2. package/README.md +132 -32
  3. package/dist/caching/mod.d.ts +2 -0
  4. package/dist/caching/mod.d.ts.map +1 -0
  5. package/dist/caching/mod.js +2 -0
  6. package/dist/caching/mod.js.map +1 -0
  7. package/dist/caching/src/cache.d.ts +89 -0
  8. package/dist/caching/src/cache.d.ts.map +1 -0
  9. package/dist/caching/src/cache.js +309 -0
  10. package/dist/caching/src/cache.js.map +1 -0
  11. package/dist/caching/src/hashing/cache.d.ts +92 -0
  12. package/dist/caching/src/hashing/cache.d.ts.map +1 -0
  13. package/dist/caching/src/hashing/cache.js +119 -0
  14. package/dist/caching/src/hashing/cache.js.map +1 -0
  15. package/dist/caching/src/hashing/hooks/eventified.d.ts +157 -0
  16. package/dist/caching/src/hashing/hooks/eventified.d.ts.map +1 -0
  17. package/dist/caching/src/hashing/hooks/eventified.js +333 -0
  18. package/dist/caching/src/hashing/hooks/eventified.js.map +1 -0
  19. package/dist/caching/src/hashing/hooks/index.d.ts +199 -0
  20. package/dist/caching/src/hashing/hooks/index.d.ts.map +1 -0
  21. package/dist/caching/src/hashing/hooks/index.js +383 -0
  22. package/dist/caching/src/hashing/hooks/index.js.map +1 -0
  23. package/dist/caching/src/hashing/hooks/types.d.ts +217 -0
  24. package/dist/caching/src/hashing/hooks/types.d.ts.map +1 -0
  25. package/dist/caching/src/hashing/hooks/types.js +10 -0
  26. package/dist/caching/src/hashing/hooks/types.js.map +1 -0
  27. package/dist/caching/src/hashing/index.d.ts +236 -0
  28. package/dist/caching/src/hashing/index.d.ts.map +1 -0
  29. package/dist/caching/src/hashing/index.js +447 -0
  30. package/dist/caching/src/hashing/index.js.map +1 -0
  31. package/dist/caching/src/hashing/providers/crc.d.ts +15 -0
  32. package/dist/caching/src/hashing/providers/crc.d.ts.map +1 -0
  33. package/dist/caching/src/hashing/providers/crc.js +49 -0
  34. package/dist/caching/src/hashing/providers/crc.js.map +1 -0
  35. package/dist/caching/src/hashing/providers/crypto.d.ts +19 -0
  36. package/dist/caching/src/hashing/providers/crypto.d.ts.map +1 -0
  37. package/dist/caching/src/hashing/providers/crypto.js +28 -0
  38. package/dist/caching/src/hashing/providers/crypto.js.map +1 -0
  39. package/dist/caching/src/hashing/providers/djb2.d.ts +60 -0
  40. package/dist/caching/src/hashing/providers/djb2.d.ts.map +1 -0
  41. package/dist/caching/src/hashing/providers/djb2.js +92 -0
  42. package/dist/caching/src/hashing/providers/djb2.js.map +1 -0
  43. package/dist/caching/src/hashing/providers/fnv1.d.ts +33 -0
  44. package/dist/caching/src/hashing/providers/fnv1.d.ts.map +1 -0
  45. package/dist/caching/src/hashing/providers/fnv1.js +68 -0
  46. package/dist/caching/src/hashing/providers/fnv1.js.map +1 -0
  47. package/dist/caching/src/hashing/providers/murmur.d.ts +81 -0
  48. package/dist/caching/src/hashing/providers/murmur.d.ts.map +1 -0
  49. package/dist/caching/src/hashing/providers/murmur.js +173 -0
  50. package/dist/caching/src/hashing/providers/murmur.js.map +1 -0
  51. package/dist/caching/src/hashing/providers.d.ts +126 -0
  52. package/dist/caching/src/hashing/providers.d.ts.map +1 -0
  53. package/dist/caching/src/hashing/providers.js +163 -0
  54. package/dist/caching/src/hashing/providers.js.map +1 -0
  55. package/dist/caching/src/hashing/types.d.ts +340 -0
  56. package/dist/caching/src/hashing/types.d.ts.map +1 -0
  57. package/dist/caching/src/hashing/types.js +10 -0
  58. package/dist/caching/src/hashing/types.js.map +1 -0
  59. package/dist/caching/src/keyValue/capabilities.d.ts +161 -0
  60. package/dist/caching/src/keyValue/capabilities.d.ts.map +1 -0
  61. package/dist/caching/src/keyValue/capabilities.js +334 -0
  62. package/dist/caching/src/keyValue/capabilities.js.map +1 -0
  63. package/dist/caching/src/keyValue/event-manager.d.ts +27 -0
  64. package/dist/caching/src/keyValue/event-manager.d.ts.map +1 -0
  65. package/dist/caching/src/keyValue/event-manager.js +88 -0
  66. package/dist/caching/src/keyValue/event-manager.js.map +1 -0
  67. package/dist/caching/src/keyValue/generic-store.d.ts +243 -0
  68. package/dist/caching/src/keyValue/generic-store.d.ts.map +1 -0
  69. package/dist/caching/src/keyValue/generic-store.js +295 -0
  70. package/dist/caching/src/keyValue/generic-store.js.map +1 -0
  71. package/dist/caching/src/keyValue/hooks-manager.d.ts +21 -0
  72. package/dist/caching/src/keyValue/hooks-manager.d.ts.map +1 -0
  73. package/dist/caching/src/keyValue/hooks-manager.js +59 -0
  74. package/dist/caching/src/keyValue/hooks-manager.js.map +1 -0
  75. package/dist/caching/src/keyValue/index.d.ts +334 -0
  76. package/dist/caching/src/keyValue/index.d.ts.map +1 -0
  77. package/dist/caching/src/keyValue/index.js +796 -0
  78. package/dist/caching/src/keyValue/index.js.map +1 -0
  79. package/dist/caching/src/keyValue/serialize/serialize.d.ts +12 -0
  80. package/dist/caching/src/keyValue/serialize/serialize.d.ts.map +1 -0
  81. package/dist/caching/src/keyValue/serialize/serialize.js +64 -0
  82. package/dist/caching/src/keyValue/serialize/serialize.js.map +1 -0
  83. package/dist/caching/src/keyValue/stats-manager.d.ts +27 -0
  84. package/dist/caching/src/keyValue/stats-manager.d.ts.map +1 -0
  85. package/dist/caching/src/keyValue/stats-manager.js +64 -0
  86. package/dist/caching/src/keyValue/stats-manager.js.map +1 -0
  87. package/dist/caching/src/keyValue/types.d.ts +22 -0
  88. package/dist/caching/src/keyValue/types.d.ts.map +1 -0
  89. package/dist/caching/src/keyValue/types.js +11 -0
  90. package/dist/caching/src/keyValue/types.js.map +1 -0
  91. package/dist/caching/src/keyv-adapter.d.ts +40 -0
  92. package/dist/caching/src/keyv-adapter.d.ts.map +1 -0
  93. package/dist/caching/src/keyv-adapter.js +56 -0
  94. package/dist/caching/src/keyv-adapter.js.map +1 -0
  95. package/dist/caching/src/utils/cache-tags.d.ts +275 -0
  96. package/dist/caching/src/utils/cache-tags.d.ts.map +1 -0
  97. package/dist/caching/src/utils/cache-tags.js +407 -0
  98. package/dist/caching/src/utils/cache-tags.js.map +1 -0
  99. package/dist/caching/src/utils/cacheable-item-types.d.ts +35 -0
  100. package/dist/caching/src/utils/cacheable-item-types.d.ts.map +1 -0
  101. package/dist/caching/src/utils/cacheable-item-types.js +10 -0
  102. package/dist/caching/src/utils/cacheable-item-types.js.map +1 -0
  103. package/dist/caching/src/utils/coalesce-async.d.ts +29 -0
  104. package/dist/caching/src/utils/coalesce-async.d.ts.map +1 -0
  105. package/dist/caching/src/utils/coalesce-async.js +88 -0
  106. package/dist/caching/src/utils/coalesce-async.js.map +1 -0
  107. package/dist/caching/src/utils/hash.d.ts +55 -0
  108. package/dist/caching/src/utils/hash.d.ts.map +1 -0
  109. package/dist/caching/src/utils/hash.js +116 -0
  110. package/dist/caching/src/utils/hash.js.map +1 -0
  111. package/dist/caching/src/utils/index.d.ts +24 -0
  112. package/dist/caching/src/utils/index.d.ts.map +1 -0
  113. package/dist/caching/src/utils/index.js +21 -0
  114. package/dist/caching/src/utils/index.js.map +1 -0
  115. package/dist/caching/src/utils/is-keyv-instance.d.ts +10 -0
  116. package/dist/caching/src/utils/is-keyv-instance.d.ts.map +1 -0
  117. package/dist/caching/src/utils/is-keyv-instance.js +37 -0
  118. package/dist/caching/src/utils/is-keyv-instance.js.map +1 -0
  119. package/dist/caching/src/utils/is-object.d.ts +10 -0
  120. package/dist/caching/src/utils/is-object.d.ts.map +1 -0
  121. package/dist/caching/src/utils/is-object.js +13 -0
  122. package/dist/caching/src/utils/is-object.js.map +1 -0
  123. package/dist/caching/src/utils/less-than.d.ts +10 -0
  124. package/dist/caching/src/utils/less-than.d.ts.map +1 -0
  125. package/dist/caching/src/utils/less-than.js +13 -0
  126. package/dist/caching/src/utils/less-than.js.map +1 -0
  127. package/dist/caching/src/utils/memoize.d.ts +107 -0
  128. package/dist/caching/src/utils/memoize.d.ts.map +1 -0
  129. package/dist/caching/src/utils/memoize.js +201 -0
  130. package/dist/caching/src/utils/memoize.js.map +1 -0
  131. package/dist/caching/src/utils/mock-cacheable.d.ts +28 -0
  132. package/dist/caching/src/utils/mock-cacheable.d.ts.map +1 -0
  133. package/dist/caching/src/utils/mock-cacheable.js +87 -0
  134. package/dist/caching/src/utils/mock-cacheable.js.map +1 -0
  135. package/dist/caching/src/utils/run-if-fn.d.ts +12 -0
  136. package/dist/caching/src/utils/run-if-fn.d.ts.map +1 -0
  137. package/dist/caching/src/utils/run-if-fn.js +12 -0
  138. package/dist/caching/src/utils/run-if-fn.js.map +1 -0
  139. package/dist/caching/src/utils/shorthand-time.d.ts +27 -0
  140. package/dist/caching/src/utils/shorthand-time.d.ts.map +1 -0
  141. package/dist/caching/src/utils/shorthand-time.js +96 -0
  142. package/dist/caching/src/utils/shorthand-time.js.map +1 -0
  143. package/dist/caching/src/utils/sleep.d.ts +10 -0
  144. package/dist/caching/src/utils/sleep.d.ts.map +1 -0
  145. package/dist/caching/src/utils/sleep.js +11 -0
  146. package/dist/caching/src/utils/sleep.js.map +1 -0
  147. package/dist/caching/src/utils/stats.d.ts +354 -0
  148. package/dist/caching/src/utils/stats.d.ts.map +1 -0
  149. package/dist/caching/src/utils/stats.js +593 -0
  150. package/dist/caching/src/utils/stats.js.map +1 -0
  151. package/dist/caching/src/utils/ttl.d.ts +58 -0
  152. package/dist/caching/src/utils/ttl.d.ts.map +1 -0
  153. package/dist/caching/src/utils/ttl.js +77 -0
  154. package/dist/caching/src/utils/ttl.js.map +1 -0
  155. package/package.json +11 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-tags.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/cache-tags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ /**
10
+ * CacheableItem
11
+ * @typedef {Object} CacheableItem
12
+ * @property {string} key - The key of the cacheable item
13
+ * @property {any} value - The value of the cacheable item
14
+ * @property {number|string} [ttl] - Time to Live - If you set a number it is miliseconds, if you set a string it is a human-readable
15
+ * format such as `1s` for 1 second or `1h` for 1 hour. Setting undefined means that it will use the default time-to-live. If both are
16
+ * undefined then it will not have a time-to-live.
17
+ */
18
+ export type CacheableItem = {
19
+ key: string;
20
+ value: any;
21
+ ttl?: number | string;
22
+ };
23
+ /**
24
+ * CacheableStoreItem
25
+ * @typedef {Object} CacheableStoreItem
26
+ * @property {string} key - The key of the cacheable store item
27
+ * @property {any} value - The value of the cacheable store item
28
+ * @property {number} [expires] - The expiration time in milliseconds since epoch. If not set, the item does not expire.
29
+ */
30
+ export type CacheableStoreItem = {
31
+ key: string;
32
+ value: any;
33
+ expires?: number;
34
+ };
35
+ //# sourceMappingURL=cacheable-item-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheable-item-types.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/cacheable-item-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ export {};
10
+ //# sourceMappingURL=cacheable-item-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheable-item-types.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/cacheable-item-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ /**
10
+ * Enqueue a promise for the group identified by `key`.
11
+ *
12
+ * All requests received for the same key while a request for that key
13
+ * is already being executed will wait. Once the running request settles
14
+ * then all the waiting requests in the group will settle, too.
15
+ * This minimizes how many times the function itself runs at the same time.
16
+ * This function resolves or rejects according to the given function argument.
17
+ *
18
+ * @url https://github.com/douglascayers/promise-coalesce
19
+ */
20
+ export declare function coalesceAsync<T>(
21
+ /**
22
+ * Any identifier to group requests together.
23
+ */
24
+ key: string,
25
+ /**
26
+ * The function to run.
27
+ */
28
+ fnc: () => T | PromiseLike<T>): Promise<T>;
29
+ //# sourceMappingURL=coalesce-async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coalesce-async.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/coalesce-async.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AA2DL;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,CAAC;AACnC;;GAEG;AACH,GAAG,EAAE,MAAM;AACX;;GAEG;AACH,GAAG,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,CAiBZ"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ const callbacks = new Map();
10
+ function hasKey(key) {
11
+ return callbacks.has(key);
12
+ }
13
+ function addKey(key) {
14
+ callbacks.set(key, []);
15
+ }
16
+ function removeKey(key) {
17
+ callbacks.delete(key);
18
+ }
19
+ function addCallbackToKey(key, callback) {
20
+ const stash = getCallbacksByKey(key);
21
+ stash.push(callback);
22
+ callbacks.set(key, stash);
23
+ }
24
+ function getCallbacksByKey(key) {
25
+ /* v8 ignore next -- @preserve */
26
+ return callbacks.get(key) ?? [];
27
+ }
28
+ async function enqueue(key) {
29
+ return new Promise((resolve, reject) => {
30
+ const callback = { resolve, reject };
31
+ addCallbackToKey(key, callback);
32
+ });
33
+ }
34
+ function dequeue(key) {
35
+ const stash = getCallbacksByKey(key);
36
+ removeKey(key);
37
+ return stash;
38
+ }
39
+ function coalesce(options) {
40
+ const { key, error, result } = options;
41
+ for (const callback of dequeue(key)) {
42
+ /* c8 ignore next 1 */
43
+ if (error) {
44
+ /* c8 ignore next 3 */
45
+ callback.reject(error);
46
+ }
47
+ else {
48
+ callback.resolve(result);
49
+ }
50
+ }
51
+ }
52
+ /**
53
+ * Enqueue a promise for the group identified by `key`.
54
+ *
55
+ * All requests received for the same key while a request for that key
56
+ * is already being executed will wait. Once the running request settles
57
+ * then all the waiting requests in the group will settle, too.
58
+ * This minimizes how many times the function itself runs at the same time.
59
+ * This function resolves or rejects according to the given function argument.
60
+ *
61
+ * @url https://github.com/douglascayers/promise-coalesce
62
+ */
63
+ export async function coalesceAsync(
64
+ /**
65
+ * Any identifier to group requests together.
66
+ */
67
+ key,
68
+ /**
69
+ * The function to run.
70
+ */
71
+ fnc) {
72
+ if (!hasKey(key)) {
73
+ addKey(key);
74
+ try {
75
+ const result = await Promise.resolve(fnc());
76
+ coalesce({ key, result });
77
+ return result;
78
+ /* c8 ignore next 1 */
79
+ }
80
+ catch (error) {
81
+ /* c8 ignore next 5 */
82
+ coalesce({ key, error });
83
+ throw error;
84
+ }
85
+ }
86
+ return enqueue(key);
87
+ }
88
+ //# sourceMappingURL=coalesce-async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coalesce-async.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/coalesce-async.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAOL,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEvD,SAAS,MAAM,CAAC,GAAW;IACzB,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IACzB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAI,GAAW,EAAE,QAA4B;IACpE,MAAM,KAAK,GAAG,iBAAiB,CAAI,GAAG,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAI,GAAW;IACvC,iCAAiC;IACjC,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,OAAO,CAAI,GAAW;IACnC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAuB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACzD,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAI,GAAW;IAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAI,GAAG,CAAC,CAAC;IACxC,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAI,OAAmD;IACtE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEvC,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,sBAAsB;QACtB,IAAI,KAAK,EAAE,CAAC;YACV,sBAAsB;YACtB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;AACjC;;GAEG;AACH,GAAW;AACX;;GAEG;AACH,GAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;YACd,sBAAsB;QACxB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,sBAAsB;YACtB,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAEzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ export type HashAlgorithm = 'SHA-256' | 'SHA-384' | 'SHA-512' | 'djb2' | 'fnv1' | 'murmer' | 'crc32';
10
+ export type HashOptions = {
11
+ algorithm?: HashAlgorithm;
12
+ serialize?: (object: any) => string;
13
+ };
14
+ export type HashToNumberOptions = HashOptions & {
15
+ min?: number;
16
+ max?: number;
17
+ hashLength?: number;
18
+ };
19
+ /**
20
+ * Hashes an object asynchronously using the specified cryptographic algorithm.
21
+ * This method should be used for cryptographic algorithms (SHA-256, SHA-384, SHA-512).
22
+ * For non-cryptographic algorithms, use hashSync() for better performance.
23
+ * @param object The object to hash
24
+ * @param options The hash options to use
25
+ * @returns {Promise<string>} The hash of the object
26
+ */
27
+ export declare function hash(object: any, options?: HashOptions): Promise<string>;
28
+ /**
29
+ * Hashes an object synchronously using the specified non-cryptographic algorithm.
30
+ * This method should be used for non-cryptographic algorithms (DJB2, FNV1, MURMER, CRC32).
31
+ * For cryptographic algorithms, use hash() instead.
32
+ * @param object The object to hash
33
+ * @param options The hash options to use
34
+ * @returns {string} The hash of the object
35
+ */
36
+ export declare function hashSync(object: any, options?: HashOptions): string;
37
+ /**
38
+ * Hashes an object asynchronously and converts it to a number within a specified range.
39
+ * This method should be used for cryptographic algorithms (SHA-256, SHA-384, SHA-512).
40
+ * For non-cryptographic algorithms, use hashToNumberSync() for better performance.
41
+ * @param object The object to hash
42
+ * @param options The hash options to use including min/max range
43
+ * @returns {Promise<number>} A number within the specified range
44
+ */
45
+ export declare function hashToNumber(object: any, options?: HashToNumberOptions): Promise<number>;
46
+ /**
47
+ * Hashes an object synchronously and converts it to a number within a specified range.
48
+ * This method should be used for non-cryptographic algorithms (DJB2, FNV1, MURMER, CRC32).
49
+ * For cryptographic algorithms, use hashToNumber() instead.
50
+ * @param object The object to hash
51
+ * @param options The hash options to use including min/max range
52
+ * @returns {number} A number within the specified range
53
+ */
54
+ export declare function hashToNumberSync(object: any, options?: HashToNumberOptions): number;
55
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/hash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAcL,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErG,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAExB,MAAM,EAAE,GAAG,EACX,OAAO,GAAE,WAGR,GACA,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,GAAG,EACX,OAAO,GAAE,WAGR,GACA,MAAM,CASR;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAEhC,MAAM,EAAE,GAAG,EACX,OAAO,GAAE,mBAKR,GACA,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,GAAG,EACX,OAAO,GAAE,mBAKR,GACA,MAAM,CAqBR"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ import { Hashery } from "../hashing/index.js";
10
+ /**
11
+ * Hashes an object asynchronously using the specified cryptographic algorithm.
12
+ * This method should be used for cryptographic algorithms (SHA-256, SHA-384, SHA-512).
13
+ * For non-cryptographic algorithms, use hashSync() for better performance.
14
+ * @param object The object to hash
15
+ * @param options The hash options to use
16
+ * @returns {Promise<string>} The hash of the object
17
+ */
18
+ export async function hash(
19
+ // biome-ignore lint/suspicious/noExplicitAny: type format
20
+ object, options = {
21
+ algorithm: 'SHA-256',
22
+ serialize: JSON.stringify
23
+ }) {
24
+ const algorithm = options?.algorithm ?? 'SHA-256';
25
+ const serialize = options?.serialize ?? JSON.stringify;
26
+ // Convert the object to a string
27
+ const objectString = serialize(object);
28
+ const hashery = new Hashery();
29
+ return hashery.toHash(objectString, { algorithm });
30
+ }
31
+ /**
32
+ * Hashes an object synchronously using the specified non-cryptographic algorithm.
33
+ * This method should be used for non-cryptographic algorithms (DJB2, FNV1, MURMER, CRC32).
34
+ * For cryptographic algorithms, use hash() instead.
35
+ * @param object The object to hash
36
+ * @param options The hash options to use
37
+ * @returns {string} The hash of the object
38
+ */
39
+ export function hashSync(object, options = {
40
+ algorithm: 'djb2',
41
+ serialize: JSON.stringify
42
+ }) {
43
+ const algorithm = options?.algorithm ?? 'djb2';
44
+ const serialize = options?.serialize ?? JSON.stringify;
45
+ // Convert the object to a string
46
+ const objectString = serialize(object);
47
+ const hashery = new Hashery();
48
+ return hashery.toHashSync(objectString, { algorithm });
49
+ }
50
+ /**
51
+ * Hashes an object asynchronously and converts it to a number within a specified range.
52
+ * This method should be used for cryptographic algorithms (SHA-256, SHA-384, SHA-512).
53
+ * For non-cryptographic algorithms, use hashToNumberSync() for better performance.
54
+ * @param object The object to hash
55
+ * @param options The hash options to use including min/max range
56
+ * @returns {Promise<number>} A number within the specified range
57
+ */
58
+ export async function hashToNumber(
59
+ // biome-ignore lint/suspicious/noExplicitAny: type format
60
+ object, options = {
61
+ min: 0,
62
+ max: 10,
63
+ algorithm: 'SHA-256',
64
+ serialize: JSON.stringify
65
+ }) {
66
+ const min = options?.min ?? 0;
67
+ const max = options?.max ?? 10;
68
+ const algorithm = options?.algorithm ?? 'SHA-256';
69
+ const serialize = options?.serialize ?? JSON.stringify;
70
+ const hashLength = options?.hashLength ?? 16;
71
+ if (min >= max) {
72
+ throw new Error(`Invalid range: min (${min}) must be less than max (${max})`);
73
+ }
74
+ // Convert the object to a string
75
+ const objectString = serialize(object);
76
+ const hashery = new Hashery();
77
+ return hashery.toNumber(objectString, {
78
+ algorithm,
79
+ min,
80
+ max,
81
+ hashLength
82
+ });
83
+ }
84
+ /**
85
+ * Hashes an object synchronously and converts it to a number within a specified range.
86
+ * This method should be used for non-cryptographic algorithms (DJB2, FNV1, MURMER, CRC32).
87
+ * For cryptographic algorithms, use hashToNumber() instead.
88
+ * @param object The object to hash
89
+ * @param options The hash options to use including min/max range
90
+ * @returns {number} A number within the specified range
91
+ */
92
+ export function hashToNumberSync(object, options = {
93
+ min: 0,
94
+ max: 10,
95
+ algorithm: 'djb2',
96
+ serialize: JSON.stringify
97
+ }) {
98
+ const min = options?.min ?? 0;
99
+ const max = options?.max ?? 10;
100
+ const algorithm = options?.algorithm ?? 'djb2';
101
+ const serialize = options?.serialize ?? JSON.stringify;
102
+ const hashLength = options?.hashLength ?? 16;
103
+ if (min >= max) {
104
+ throw new Error(`Invalid range: min (${min}) must be less than max (${max})`);
105
+ }
106
+ // Convert the object to a string
107
+ const objectString = serialize(object);
108
+ const hashery = new Hashery();
109
+ return hashery.toNumberSync(objectString, {
110
+ algorithm,
111
+ min,
112
+ max,
113
+ hashLength
114
+ });
115
+ }
116
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/hash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ export { shorthandToMilliseconds, shorthandToTime } from './shorthand-time.ts';
10
+ export { CacheTags, type CacheTagsOptions, type KeyTagEntry, type RemoveKeysOptions, type SetKeyTagsOptions } from './cache-tags.ts';
11
+ export type { CacheableItem, CacheableStoreItem } from './cacheable-item-types.ts';
12
+ export { coalesceAsync } from './coalesce-async.ts';
13
+ export { type HashAlgorithm, type HashOptions, type HashToNumberOptions, hash, hashSync, hashToNumber, hashToNumberSync } from './hash.ts';
14
+ export { isKeyvInstance } from './is-keyv-instance.ts';
15
+ export { isObject } from './is-object.ts';
16
+ export { lessThan } from './less-than.ts';
17
+ export type { AnyFunction, CacheInstance, CacheSyncInstance, CreateWrapKey, CreateWrapKeyOptions, GetOrSetFunctionOptions, GetOrSetKey, GetOrSetOptions, GetOrSetSyncKey, GetOrSetSyncOptions, WrapFunctionOptions, WrapOptions, WrapSyncOptions } from './memoize.ts';
18
+ export { createWrapKey, getOrSet, getOrSetSync, wrap, wrapSync } from './memoize.ts';
19
+ export { runIfFn } from './run-if-fn.ts';
20
+ export { sleep } from './sleep.ts';
21
+ export { type KeyCounters, type KeyStatField, nodeCacheStatsEventMap, type StatField, Stats, type StatsEmitter, type StatsEventHandler, type StatsEventMap, type StatsKeyEntry, type StatsOptions, type StatsSnapshot } from './stats.ts';
22
+ export type { PerStoreTtl } from './ttl.ts';
23
+ export { calculateTtlFromExpiration, getCascadingTtl, getTtlFromExpires, resolvePerStoreTtl } from './ttl.ts';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,gBAAgB,EACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,sBAAsB,EACtB,KAAK,SAAS,EACd,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ export { shorthandToMilliseconds, shorthandToTime } from "./shorthand-time.js";
10
+ export { CacheTags } from "./cache-tags.js";
11
+ export { coalesceAsync } from "./coalesce-async.js";
12
+ export { hash, hashSync, hashToNumber, hashToNumberSync } from "./hash.js";
13
+ export { isKeyvInstance } from "./is-keyv-instance.js";
14
+ export { isObject } from "./is-object.js";
15
+ export { lessThan } from "./less-than.js";
16
+ export { createWrapKey, getOrSet, getOrSetSync, wrap, wrapSync } from "./memoize.js";
17
+ export { runIfFn } from "./run-if-fn.js";
18
+ export { sleep } from "./sleep.js";
19
+ export { nodeCacheStatsEventMap, Stats } from "./stats.js";
20
+ export { calculateTtlFromExpiration, getCascadingTtl, getTtlFromExpires, resolvePerStoreTtl } from "./ttl.js";
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,SAAS,EAKV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAIL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,gBAAgB,EACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB1C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAGL,sBAAsB,EAEtB,KAAK,EAON,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ export declare function isKeyvInstance(keyv: any): boolean;
10
+ //# sourceMappingURL=is-keyv-instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-keyv-instance.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/is-keyv-instance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CA4BjD"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ import { Keyv } from "../keyValue/index.js";
10
+ export function isKeyvInstance(keyv) {
11
+ // Check if keyv is null or undefined
12
+ if (keyv === null || keyv === undefined) {
13
+ return false;
14
+ }
15
+ // Check if the object is an instance of Keyv
16
+ if (keyv instanceof Keyv) {
17
+ return true;
18
+ }
19
+ // Check if the object has the Keyv methods and properties
20
+ const keyvMethods = [
21
+ 'generateIterator',
22
+ 'get',
23
+ 'getMany',
24
+ 'set',
25
+ 'setMany',
26
+ 'delete',
27
+ 'deleteMany',
28
+ 'has',
29
+ 'hasMany',
30
+ 'clear',
31
+ 'disconnect',
32
+ 'serialize',
33
+ 'deserialize'
34
+ ];
35
+ return keyvMethods.every((method) => typeof keyv[method] === 'function');
36
+ }
37
+ //# sourceMappingURL=is-keyv-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-keyv-instance.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/is-keyv-instance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,MAAM,UAAU,cAAc,CAAC,IAAS;IACtC,qCAAqC;IACrC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6CAA6C;IAC7C,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0DAA0D;IAC1D,MAAM,WAAW,GAAG;QAClB,kBAAkB;QAClB,KAAK;QACL,SAAS;QACT,KAAK;QACL,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,KAAK;QACL,SAAS;QACT,OAAO;QACP,YAAY;QACZ,WAAW;QACX,aAAa;KACd,CAAC;IACF,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ export declare function isObject<T = Record<string, unknown>>(value: unknown): value is T;
10
+ //# sourceMappingURL=is-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/is-object.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL,wBAAgB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAEhF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ // TODO SDK
10
+ export function isObject(value) {
11
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
12
+ }
13
+ //# sourceMappingURL=is-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/is-object.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,WAAW;AAEX,MAAM,UAAU,QAAQ,CAA8B,KAAc;IAClE,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ export declare function lessThan(number1?: number, number2?: number): boolean;
10
+ //# sourceMappingURL=less-than.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"less-than.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/less-than.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,WAE1D"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Original library: @cacheable/utils (v2.4.2)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ // TODO SDK
10
+ export function lessThan(number1, number2) {
11
+ return typeof number1 === 'number' && typeof number2 === 'number' ? number1 < number2 : false;
12
+ }
13
+ //# sourceMappingURL=less-than.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"less-than.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/less-than.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,WAAW;AAEX,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,OAAgB;IACzD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAChG,CAAC"}