inray 0.0.2 → 0.0.4

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 (257) hide show
  1. package/LICENSE.md +1 -0
  2. package/README.md +220 -36
  3. package/dist/async/abortable.d.ts +2 -2
  4. package/dist/async/abortable.d.ts.map +1 -1
  5. package/dist/async/abortable.js.map +1 -1
  6. package/dist/caching/mod.d.ts +2 -0
  7. package/dist/caching/mod.d.ts.map +1 -0
  8. package/dist/caching/mod.js +2 -0
  9. package/dist/caching/mod.js.map +1 -0
  10. package/dist/caching/src/cache.d.ts +89 -0
  11. package/dist/caching/src/cache.d.ts.map +1 -0
  12. package/dist/caching/src/cache.js +309 -0
  13. package/dist/caching/src/cache.js.map +1 -0
  14. package/dist/caching/src/hashing/cache.d.ts +92 -0
  15. package/dist/caching/src/hashing/cache.d.ts.map +1 -0
  16. package/dist/caching/src/hashing/cache.js +119 -0
  17. package/dist/caching/src/hashing/cache.js.map +1 -0
  18. package/dist/caching/src/hashing/hooks/eventified.d.ts +157 -0
  19. package/dist/caching/src/hashing/hooks/eventified.d.ts.map +1 -0
  20. package/dist/caching/src/hashing/hooks/eventified.js +333 -0
  21. package/dist/caching/src/hashing/hooks/eventified.js.map +1 -0
  22. package/dist/caching/src/hashing/hooks/index.d.ts +199 -0
  23. package/dist/caching/src/hashing/hooks/index.d.ts.map +1 -0
  24. package/dist/caching/src/hashing/hooks/index.js +383 -0
  25. package/dist/caching/src/hashing/hooks/index.js.map +1 -0
  26. package/dist/caching/src/hashing/hooks/types.d.ts +217 -0
  27. package/dist/caching/src/hashing/hooks/types.d.ts.map +1 -0
  28. package/dist/caching/src/hashing/hooks/types.js +10 -0
  29. package/dist/caching/src/hashing/hooks/types.js.map +1 -0
  30. package/dist/caching/src/hashing/index.d.ts +236 -0
  31. package/dist/caching/src/hashing/index.d.ts.map +1 -0
  32. package/dist/caching/src/hashing/index.js +447 -0
  33. package/dist/caching/src/hashing/index.js.map +1 -0
  34. package/dist/caching/src/hashing/providers/crc.d.ts +15 -0
  35. package/dist/caching/src/hashing/providers/crc.d.ts.map +1 -0
  36. package/dist/caching/src/hashing/providers/crc.js +49 -0
  37. package/dist/caching/src/hashing/providers/crc.js.map +1 -0
  38. package/dist/caching/src/hashing/providers/crypto.d.ts +19 -0
  39. package/dist/caching/src/hashing/providers/crypto.d.ts.map +1 -0
  40. package/dist/caching/src/hashing/providers/crypto.js +28 -0
  41. package/dist/caching/src/hashing/providers/crypto.js.map +1 -0
  42. package/dist/caching/src/hashing/providers/djb2.d.ts +60 -0
  43. package/dist/caching/src/hashing/providers/djb2.d.ts.map +1 -0
  44. package/dist/caching/src/hashing/providers/djb2.js +92 -0
  45. package/dist/caching/src/hashing/providers/djb2.js.map +1 -0
  46. package/dist/caching/src/hashing/providers/fnv1.d.ts +33 -0
  47. package/dist/caching/src/hashing/providers/fnv1.d.ts.map +1 -0
  48. package/dist/caching/src/hashing/providers/fnv1.js +68 -0
  49. package/dist/caching/src/hashing/providers/fnv1.js.map +1 -0
  50. package/dist/caching/src/hashing/providers/murmur.d.ts +81 -0
  51. package/dist/caching/src/hashing/providers/murmur.d.ts.map +1 -0
  52. package/dist/caching/src/hashing/providers/murmur.js +173 -0
  53. package/dist/caching/src/hashing/providers/murmur.js.map +1 -0
  54. package/dist/caching/src/hashing/providers.d.ts +126 -0
  55. package/dist/caching/src/hashing/providers.d.ts.map +1 -0
  56. package/dist/caching/src/hashing/providers.js +163 -0
  57. package/dist/caching/src/hashing/providers.js.map +1 -0
  58. package/dist/caching/src/hashing/types.d.ts +340 -0
  59. package/dist/caching/src/hashing/types.d.ts.map +1 -0
  60. package/dist/caching/src/hashing/types.js +10 -0
  61. package/dist/caching/src/hashing/types.js.map +1 -0
  62. package/dist/caching/src/keyValue/capabilities.d.ts +161 -0
  63. package/dist/caching/src/keyValue/capabilities.d.ts.map +1 -0
  64. package/dist/caching/src/keyValue/capabilities.js +334 -0
  65. package/dist/caching/src/keyValue/capabilities.js.map +1 -0
  66. package/dist/caching/src/keyValue/event-manager.d.ts +27 -0
  67. package/dist/caching/src/keyValue/event-manager.d.ts.map +1 -0
  68. package/dist/caching/src/keyValue/event-manager.js +88 -0
  69. package/dist/caching/src/keyValue/event-manager.js.map +1 -0
  70. package/dist/caching/src/keyValue/generic-store.d.ts +243 -0
  71. package/dist/caching/src/keyValue/generic-store.d.ts.map +1 -0
  72. package/dist/caching/src/keyValue/generic-store.js +295 -0
  73. package/dist/caching/src/keyValue/generic-store.js.map +1 -0
  74. package/dist/caching/src/keyValue/hooks-manager.d.ts +21 -0
  75. package/dist/caching/src/keyValue/hooks-manager.d.ts.map +1 -0
  76. package/dist/caching/src/keyValue/hooks-manager.js +59 -0
  77. package/dist/caching/src/keyValue/hooks-manager.js.map +1 -0
  78. package/dist/caching/src/keyValue/index.d.ts +334 -0
  79. package/dist/caching/src/keyValue/index.d.ts.map +1 -0
  80. package/dist/caching/src/keyValue/index.js +796 -0
  81. package/dist/caching/src/keyValue/index.js.map +1 -0
  82. package/dist/caching/src/keyValue/serialize/serialize.d.ts +12 -0
  83. package/dist/caching/src/keyValue/serialize/serialize.d.ts.map +1 -0
  84. package/dist/caching/src/keyValue/serialize/serialize.js +64 -0
  85. package/dist/caching/src/keyValue/serialize/serialize.js.map +1 -0
  86. package/dist/caching/src/keyValue/stats-manager.d.ts +27 -0
  87. package/dist/caching/src/keyValue/stats-manager.d.ts.map +1 -0
  88. package/dist/caching/src/keyValue/stats-manager.js +64 -0
  89. package/dist/caching/src/keyValue/stats-manager.js.map +1 -0
  90. package/dist/caching/src/keyValue/types.d.ts +22 -0
  91. package/dist/caching/src/keyValue/types.d.ts.map +1 -0
  92. package/dist/caching/src/keyValue/types.js +11 -0
  93. package/dist/caching/src/keyValue/types.js.map +1 -0
  94. package/dist/caching/src/keyv-adapter.d.ts +40 -0
  95. package/dist/caching/src/keyv-adapter.d.ts.map +1 -0
  96. package/dist/caching/src/keyv-adapter.js +56 -0
  97. package/dist/caching/src/keyv-adapter.js.map +1 -0
  98. package/dist/caching/src/utils/cache-tags.d.ts +275 -0
  99. package/dist/caching/src/utils/cache-tags.d.ts.map +1 -0
  100. package/dist/caching/src/utils/cache-tags.js +407 -0
  101. package/dist/caching/src/utils/cache-tags.js.map +1 -0
  102. package/dist/caching/src/utils/cacheable-item-types.d.ts +35 -0
  103. package/dist/caching/src/utils/cacheable-item-types.d.ts.map +1 -0
  104. package/dist/caching/src/utils/cacheable-item-types.js +10 -0
  105. package/dist/caching/src/utils/cacheable-item-types.js.map +1 -0
  106. package/dist/caching/src/utils/coalesce-async.d.ts +29 -0
  107. package/dist/caching/src/utils/coalesce-async.d.ts.map +1 -0
  108. package/dist/caching/src/utils/coalesce-async.js +88 -0
  109. package/dist/caching/src/utils/coalesce-async.js.map +1 -0
  110. package/dist/caching/src/utils/hash.d.ts +55 -0
  111. package/dist/caching/src/utils/hash.d.ts.map +1 -0
  112. package/dist/caching/src/utils/hash.js +116 -0
  113. package/dist/caching/src/utils/hash.js.map +1 -0
  114. package/dist/caching/src/utils/index.d.ts +24 -0
  115. package/dist/caching/src/utils/index.d.ts.map +1 -0
  116. package/dist/caching/src/utils/index.js +21 -0
  117. package/dist/caching/src/utils/index.js.map +1 -0
  118. package/dist/caching/src/utils/is-keyv-instance.d.ts +10 -0
  119. package/dist/caching/src/utils/is-keyv-instance.d.ts.map +1 -0
  120. package/dist/caching/src/utils/is-keyv-instance.js +37 -0
  121. package/dist/caching/src/utils/is-keyv-instance.js.map +1 -0
  122. package/dist/caching/src/utils/is-object.d.ts +10 -0
  123. package/dist/caching/src/utils/is-object.d.ts.map +1 -0
  124. package/dist/caching/src/utils/is-object.js +13 -0
  125. package/dist/caching/src/utils/is-object.js.map +1 -0
  126. package/dist/caching/src/utils/less-than.d.ts +10 -0
  127. package/dist/caching/src/utils/less-than.d.ts.map +1 -0
  128. package/dist/caching/src/utils/less-than.js +13 -0
  129. package/dist/caching/src/utils/less-than.js.map +1 -0
  130. package/dist/caching/src/utils/memoize.d.ts +107 -0
  131. package/dist/caching/src/utils/memoize.d.ts.map +1 -0
  132. package/dist/caching/src/utils/memoize.js +201 -0
  133. package/dist/caching/src/utils/memoize.js.map +1 -0
  134. package/dist/caching/src/utils/mock-cacheable.d.ts +28 -0
  135. package/dist/caching/src/utils/mock-cacheable.d.ts.map +1 -0
  136. package/dist/caching/src/utils/mock-cacheable.js +87 -0
  137. package/dist/caching/src/utils/mock-cacheable.js.map +1 -0
  138. package/dist/caching/src/utils/run-if-fn.d.ts +12 -0
  139. package/dist/caching/src/utils/run-if-fn.d.ts.map +1 -0
  140. package/dist/caching/src/utils/run-if-fn.js +12 -0
  141. package/dist/caching/src/utils/run-if-fn.js.map +1 -0
  142. package/dist/caching/src/utils/shorthand-time.d.ts +27 -0
  143. package/dist/caching/src/utils/shorthand-time.d.ts.map +1 -0
  144. package/dist/caching/src/utils/shorthand-time.js +96 -0
  145. package/dist/caching/src/utils/shorthand-time.js.map +1 -0
  146. package/dist/caching/src/utils/sleep.d.ts +10 -0
  147. package/dist/caching/src/utils/sleep.d.ts.map +1 -0
  148. package/dist/caching/src/utils/sleep.js +11 -0
  149. package/dist/caching/src/utils/sleep.js.map +1 -0
  150. package/dist/caching/src/utils/stats.d.ts +354 -0
  151. package/dist/caching/src/utils/stats.d.ts.map +1 -0
  152. package/dist/caching/src/utils/stats.js +593 -0
  153. package/dist/caching/src/utils/stats.js.map +1 -0
  154. package/dist/caching/src/utils/ttl.d.ts +58 -0
  155. package/dist/caching/src/utils/ttl.d.ts.map +1 -0
  156. package/dist/caching/src/utils/ttl.js +77 -0
  157. package/dist/caching/src/utils/ttl.js.map +1 -0
  158. package/dist/logtape/logtape/level.d.ts +1 -2
  159. package/dist/logtape/logtape/level.d.ts.map +1 -1
  160. package/dist/logtape/logtape/level.js +1 -1
  161. package/dist/logtape/logtape/level.js.map +1 -1
  162. package/dist/logtape/logtape/mod.d.ts +1 -1
  163. package/dist/logtape/logtape/mod.d.ts.map +1 -1
  164. package/dist/logtape/logtape/mod.js +1 -1
  165. package/dist/logtape/logtape/mod.js.map +1 -1
  166. package/dist/utils/mod.d.ts +1 -1
  167. package/dist/utils/mod.d.ts.map +1 -1
  168. package/dist/utils/mod.js.map +1 -1
  169. package/dist/utils/validation/inRangeOfMaxInt32.d.ts +2 -0
  170. package/dist/utils/validation/inRangeOfMaxInt32.d.ts.map +1 -0
  171. package/dist/utils/validation/inRangeOfMaxInt32.js +4 -0
  172. package/dist/utils/validation/inRangeOfMaxInt32.js.map +1 -0
  173. package/dist/utils/validation/isEmail.d.ts +2 -0
  174. package/dist/utils/validation/isEmail.d.ts.map +1 -0
  175. package/dist/utils/validation/isEmail.js +7 -0
  176. package/dist/utils/validation/isEmail.js.map +1 -0
  177. package/dist/utils/validation/isEmptyObject.d.ts +9 -0
  178. package/dist/utils/validation/isEmptyObject.d.ts.map +1 -0
  179. package/dist/utils/validation/isEmptyObject.js +16 -0
  180. package/dist/utils/validation/isEmptyObject.js.map +1 -0
  181. package/dist/utils/validation/isNotEmptyString.d.ts +7 -0
  182. package/dist/utils/validation/isNotEmptyString.d.ts.map +1 -0
  183. package/dist/utils/validation/isNotEmptyString.js +17 -0
  184. package/dist/utils/validation/isNotEmptyString.js.map +1 -0
  185. package/dist/utils/validation/isPositiveInteger.d.ts +2 -0
  186. package/dist/utils/validation/isPositiveInteger.d.ts.map +1 -0
  187. package/dist/utils/validation/isPositiveInteger.js +7 -0
  188. package/dist/utils/validation/isPositiveInteger.js.map +1 -0
  189. package/dist/utils/validation/isUuid.d.ts +2 -0
  190. package/dist/utils/validation/isUuid.d.ts.map +1 -0
  191. package/dist/utils/validation/isUuid.js +7 -0
  192. package/dist/utils/validation/isUuid.js.map +1 -0
  193. package/dist/utils/validation/isUuidArray.d.ts +2 -0
  194. package/dist/utils/validation/isUuidArray.d.ts.map +1 -0
  195. package/dist/utils/validation/isUuidArray.js +7 -0
  196. package/dist/utils/validation/isUuidArray.js.map +1 -0
  197. package/dist/utils/validation/isValidFileName.d.ts +2 -0
  198. package/dist/utils/validation/isValidFileName.d.ts.map +1 -0
  199. package/dist/utils/validation/isValidFileName.js +33 -0
  200. package/dist/utils/validation/isValidFileName.js.map +1 -0
  201. package/dist/utils/validation/isValidUrlLike.d.ts +6 -0
  202. package/dist/utils/validation/isValidUrlLike.d.ts.map +1 -0
  203. package/dist/utils/validation/isValidUrlLike.js +8 -0
  204. package/dist/utils/validation/isValidUrlLike.js.map +1 -0
  205. package/dist/utils/validation/mod.d.ts +21 -0
  206. package/dist/utils/validation/mod.d.ts.map +1 -0
  207. package/dist/utils/validation/mod.js +21 -0
  208. package/dist/utils/validation/mod.js.map +1 -0
  209. package/dist/utils/validation/vEnvBoolean.d.ts +3 -0
  210. package/dist/utils/validation/vEnvBoolean.d.ts.map +1 -0
  211. package/dist/utils/validation/vEnvBoolean.js +5 -0
  212. package/dist/utils/validation/vEnvBoolean.js.map +1 -0
  213. package/dist/utils/validation/vEnvBooleanOrUndefined.d.ts +3 -0
  214. package/dist/utils/validation/vEnvBooleanOrUndefined.d.ts.map +1 -0
  215. package/dist/utils/validation/vEnvBooleanOrUndefined.js +5 -0
  216. package/dist/utils/validation/vEnvBooleanOrUndefined.js.map +1 -0
  217. package/dist/utils/validation/vEnvLogLevel.d.ts +4 -0
  218. package/dist/utils/validation/vEnvLogLevel.d.ts.map +1 -0
  219. package/dist/utils/validation/vEnvLogLevel.js +6 -0
  220. package/dist/utils/validation/vEnvLogLevel.js.map +1 -0
  221. package/dist/utils/validation/vFileName.d.ts +4 -0
  222. package/dist/utils/validation/vFileName.d.ts.map +1 -0
  223. package/dist/utils/validation/vFileName.js +21 -0
  224. package/dist/utils/validation/vFileName.js.map +1 -0
  225. package/dist/utils/validation/vISO8601DateTime.d.ts +5 -0
  226. package/dist/utils/validation/vISO8601DateTime.d.ts.map +1 -0
  227. package/dist/utils/validation/vISO8601DateTime.js +37 -0
  228. package/dist/utils/validation/vISO8601DateTime.js.map +1 -0
  229. package/dist/utils/validation/vLatinInput.d.ts +3 -0
  230. package/dist/utils/validation/vLatinInput.d.ts.map +1 -0
  231. package/dist/utils/validation/vLatinInput.js +3 -0
  232. package/dist/utils/validation/vLatinInput.js.map +1 -0
  233. package/dist/utils/validation/vOmniBoolean.d.ts +3 -0
  234. package/dist/utils/validation/vOmniBoolean.d.ts.map +1 -0
  235. package/dist/utils/validation/vOmniBoolean.js +10 -0
  236. package/dist/utils/validation/vOmniBoolean.js.map +1 -0
  237. package/dist/utils/validation/vQueryBoolean.d.ts +3 -0
  238. package/dist/utils/validation/vQueryBoolean.d.ts.map +1 -0
  239. package/dist/utils/validation/vQueryBoolean.js +7 -0
  240. package/dist/utils/validation/vQueryBoolean.js.map +1 -0
  241. package/dist/utils/validation/vQueryEmailArray.d.ts +9 -0
  242. package/dist/utils/validation/vQueryEmailArray.d.ts.map +1 -0
  243. package/dist/utils/validation/vQueryEmailArray.js +29 -0
  244. package/dist/utils/validation/vQueryEmailArray.js.map +1 -0
  245. package/dist/utils/validation/vQueryNumberArray.d.ts +10 -0
  246. package/dist/utils/validation/vQueryNumberArray.d.ts.map +1 -0
  247. package/dist/utils/validation/vQueryNumberArray.js +32 -0
  248. package/dist/utils/validation/vQueryNumberArray.js.map +1 -0
  249. package/dist/utils/validation/vQueryStringifiedEnumArray.d.ts +3 -0
  250. package/dist/utils/validation/vQueryStringifiedEnumArray.d.ts.map +1 -0
  251. package/dist/utils/validation/vQueryStringifiedEnumArray.js +25 -0
  252. package/dist/utils/validation/vQueryStringifiedEnumArray.js.map +1 -0
  253. package/dist/utils/validation/vQueryUuidArray.d.ts +9 -0
  254. package/dist/utils/validation/vQueryUuidArray.d.ts.map +1 -0
  255. package/dist/utils/validation/vQueryUuidArray.js +27 -0
  256. package/dist/utils/validation/vQueryUuidArray.js.map +1 -0
  257. package/package.json +19 -3
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Original library: cache-manager (v7.2.9)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ import EventEmitter from 'node:events';
10
+ import { coalesceAsync, isObject, lessThan as lt, runIfFn } from "./utils/index.js";
11
+ import { Keyv } from "./keyValue/index.js";
12
+ const _storeLabel = (i) => (i === 0 ? 'primary' : `secondary:${i - 1}`);
13
+ export const createCache = (options) => {
14
+ const eventEmitter = new EventEmitter();
15
+ const keyv = new Keyv();
16
+ keyv.serialize = undefined;
17
+ keyv.deserialize = undefined;
18
+ const stores = options?.stores?.length ? options.stores : [keyv];
19
+ const nonBlocking = options?.nonBlocking ?? false;
20
+ const _cacheId = options?.cacheId ?? Math.random().toString(36).slice(2);
21
+ const get = async (key) => {
22
+ // biome-ignore lint/suspicious/noImplicitAnyLet: need to fix
23
+ let result;
24
+ if (nonBlocking) {
25
+ try {
26
+ result = await Promise.race(stores.map(async (store) => store.get(key)));
27
+ if (result === undefined) {
28
+ return undefined;
29
+ }
30
+ }
31
+ catch (error) {
32
+ eventEmitter.emit('get', { key, error });
33
+ }
34
+ }
35
+ else {
36
+ for (let i = 0; i < stores.length; i++) {
37
+ const store = stores[i];
38
+ try {
39
+ const cacheValue = await store.get(key);
40
+ if (cacheValue !== undefined) {
41
+ result = cacheValue;
42
+ eventEmitter.emit('get', {
43
+ key,
44
+ value: result,
45
+ store: _storeLabel(i)
46
+ });
47
+ break;
48
+ }
49
+ }
50
+ catch (error) {
51
+ eventEmitter.emit('get', { key, error, store: _storeLabel(i) });
52
+ }
53
+ }
54
+ }
55
+ return result;
56
+ };
57
+ const mget = async (keys) => {
58
+ let result = keys.map(() => undefined);
59
+ if (nonBlocking) {
60
+ try {
61
+ result = await Promise.race(stores.map(async (store) => store.getMany(keys)));
62
+ }
63
+ catch (error) {
64
+ eventEmitter.emit('mget', { keys, error });
65
+ }
66
+ }
67
+ else {
68
+ for (const store of stores) {
69
+ try {
70
+ const missingValues = result
71
+ .map((value, index) => (value === undefined ? { originalIndex: index, key: keys[index] } : undefined))
72
+ .filter((v) => v !== undefined);
73
+ if (missingValues.length === 0) {
74
+ break;
75
+ }
76
+ const missingKeys = missingValues.map((v) => v.key);
77
+ const cacheValue = await store.getMany(missingKeys);
78
+ for (const [index, value] of cacheValue.entries()) {
79
+ if (value === undefined) {
80
+ continue;
81
+ }
82
+ const { originalIndex } = missingValues[index];
83
+ result[originalIndex] = value;
84
+ }
85
+ }
86
+ catch (error) {
87
+ eventEmitter.emit('mget', { keys, error });
88
+ }
89
+ }
90
+ }
91
+ eventEmitter.emit('mget', { keys, values: result });
92
+ return result;
93
+ };
94
+ const ttl = async (key) => {
95
+ // biome-ignore lint/suspicious/noImplicitAnyLet: need to fix
96
+ let result;
97
+ if (nonBlocking) {
98
+ try {
99
+ result = await Promise.race(stores.map(async (store) => store.get(key, { raw: true })));
100
+ if (result === undefined) {
101
+ return undefined;
102
+ }
103
+ }
104
+ catch (error) {
105
+ eventEmitter.emit('ttl', { key, error });
106
+ }
107
+ }
108
+ else {
109
+ for (const store of stores) {
110
+ try {
111
+ const cacheValue = await store.get(key, { raw: true });
112
+ if (cacheValue !== undefined) {
113
+ result = cacheValue;
114
+ eventEmitter.emit('ttl', { key, value: result });
115
+ break;
116
+ }
117
+ }
118
+ catch (error) {
119
+ eventEmitter.emit('ttl', { key, error });
120
+ }
121
+ }
122
+ }
123
+ if (result?.expires) {
124
+ return result.expires;
125
+ }
126
+ return undefined;
127
+ };
128
+ const set = async (stores, key, value, ttl) => {
129
+ try {
130
+ const promises = stores.map(async (store, i) => {
131
+ await store.set(key, value, ttl ?? options?.ttl);
132
+ eventEmitter.emit('set', { key, value, store: _storeLabel(i) });
133
+ });
134
+ if (nonBlocking) {
135
+ Promise.all(promises);
136
+ eventEmitter.emit('set', { key, value });
137
+ return value;
138
+ }
139
+ await Promise.all(promises);
140
+ eventEmitter.emit('set', { key, value });
141
+ return value;
142
+ }
143
+ catch (error) {
144
+ eventEmitter.emit('set', { key, value, error });
145
+ return Promise.reject(error);
146
+ }
147
+ };
148
+ const mset = async (stores, rawList) => {
149
+ const list = rawList.map(({ key, value, ttl }) => ({
150
+ key,
151
+ value,
152
+ ttl: ttl ?? options?.ttl
153
+ }));
154
+ try {
155
+ const promises = stores.map(async (store) => store.setMany(list));
156
+ if (nonBlocking) {
157
+ Promise.all(promises);
158
+ eventEmitter.emit('mset', { list });
159
+ return list;
160
+ }
161
+ await Promise.all(promises);
162
+ eventEmitter.emit('mset', { list });
163
+ return list;
164
+ }
165
+ catch (error) {
166
+ /* v8 ignore next -- @preserve */
167
+ eventEmitter.emit('mset', { list, error });
168
+ /* v8 ignore next -- @preserve */
169
+ return Promise.reject(error);
170
+ }
171
+ };
172
+ const del = async (key) => {
173
+ try {
174
+ if (nonBlocking) {
175
+ Promise.all(stores.map(async (store) => store.delete(key)));
176
+ eventEmitter.emit('del', { key });
177
+ return true;
178
+ }
179
+ await Promise.all(stores.map(async (store) => store.delete(key)));
180
+ eventEmitter.emit('del', { key });
181
+ return true;
182
+ }
183
+ catch (error) {
184
+ eventEmitter.emit('del', { key, error });
185
+ return Promise.reject(error);
186
+ }
187
+ };
188
+ const mdel = async (keys) => {
189
+ try {
190
+ const promises = [];
191
+ for (const key of keys) {
192
+ promises.push(...stores.map(async (store) => store.delete(key)));
193
+ }
194
+ if (nonBlocking) {
195
+ Promise.all(promises);
196
+ eventEmitter.emit('mdel', { keys });
197
+ return true;
198
+ }
199
+ await Promise.all(promises);
200
+ eventEmitter.emit('mdel', { keys });
201
+ return true;
202
+ }
203
+ catch (error) {
204
+ /* v8 ignore next -- @preserve */
205
+ eventEmitter.emit('mdel', { keys, error });
206
+ /* v8 ignore next -- @preserve */
207
+ return Promise.reject(error);
208
+ }
209
+ };
210
+ const clear = async () => {
211
+ try {
212
+ if (nonBlocking) {
213
+ Promise.all(stores.map(async (store) => store.clear()));
214
+ eventEmitter.emit('clear');
215
+ return true;
216
+ }
217
+ await Promise.all(stores.map(async (store) => store.clear()));
218
+ eventEmitter.emit('clear');
219
+ return true;
220
+ }
221
+ catch (error) {
222
+ eventEmitter.emit('clear', error);
223
+ return Promise.reject(error);
224
+ }
225
+ };
226
+ const wrap = async (key, fnc, ttlOrOptions, refreshThresholdParameter) => coalesceAsync(`${_cacheId}::${key}`, async () => {
227
+ let value;
228
+ let rawData;
229
+ let i = 0;
230
+ let remainingTtl;
231
+ const { ttl, refreshThreshold, raw } = isObject(ttlOrOptions)
232
+ ? ttlOrOptions
233
+ : { ttl: ttlOrOptions, refreshThreshold: refreshThresholdParameter };
234
+ const resolveTtl = (result) => runIfFn(ttl, result) ?? options?.ttl;
235
+ for (; i < stores.length; i++) {
236
+ try {
237
+ const data = await stores[i].get(key, { raw: true });
238
+ if (data !== undefined) {
239
+ value = data.value;
240
+ rawData = data;
241
+ if (typeof data.expires === 'number') {
242
+ remainingTtl = Math.max(0, data.expires - Date.now());
243
+ }
244
+ break;
245
+ }
246
+ }
247
+ catch {
248
+ //
249
+ }
250
+ }
251
+ if (value === undefined) {
252
+ const result = await fnc();
253
+ // biome-ignore lint/style/noNonNullAssertion: need to fix
254
+ const ttl = resolveTtl(result);
255
+ await set(stores, key, result, ttl);
256
+ return raw ? { value: result, expires: Date.now() + ttl } : result;
257
+ }
258
+ const shouldRefresh = lt(remainingTtl, runIfFn(refreshThreshold, value) ?? options?.refreshThreshold);
259
+ if (shouldRefresh) {
260
+ coalesceAsync(`+++${_cacheId}__${key}`, fnc)
261
+ .then(async (result) => {
262
+ try {
263
+ await set(options?.refreshAllStores ? stores : stores.slice(0, i + 1), key, result, resolveTtl(result));
264
+ eventEmitter.emit('refresh', { key, value: result });
265
+ }
266
+ catch (error) {
267
+ eventEmitter.emit('refresh', { key, value, error });
268
+ }
269
+ })
270
+ .catch((error) => {
271
+ eventEmitter.emit('refresh', { key, value, error });
272
+ });
273
+ }
274
+ if (!shouldRefresh && i > 0) {
275
+ await set(stores.slice(0, i), key, value, resolveTtl(value));
276
+ }
277
+ return raw ? rawData : value;
278
+ });
279
+ const on = (event, listener) => eventEmitter.addListener(event, listener);
280
+ /* v8 ignore next -- @preserve */
281
+ const off = (event, listener) => eventEmitter.removeListener(event, listener);
282
+ const disconnect = async () => {
283
+ try {
284
+ await Promise.all(stores.map(async (store) => store.disconnect()));
285
+ }
286
+ catch (error) {
287
+ return Promise.reject(error);
288
+ }
289
+ };
290
+ const cacheId = () => _cacheId;
291
+ return {
292
+ get,
293
+ mget,
294
+ ttl,
295
+ set: async (key, value, ttl) => set(stores, key, value, ttl),
296
+ mset: async (list) => mset(stores, list),
297
+ del,
298
+ mdel,
299
+ clear,
300
+ wrap,
301
+ on,
302
+ off,
303
+ disconnect,
304
+ cacheId,
305
+ stores
306
+ };
307
+ };
308
+ export { KeyvAdapter } from './keyv-adapter.js';
309
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/caching/src/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Original library: hashery (v1.5.1)
3
+ * - Copyright (c) 2025 Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ /**
10
+ * Configuration options for the Cache class.
11
+ */
12
+ export type CacheOptions = {
13
+ /**
14
+ * Enable or disable the cache.
15
+ * Defaults to true (enabled).
16
+ */
17
+ enabled?: boolean;
18
+ /**
19
+ * Maximum number of items to store in the cache.
20
+ * Defaults to 4000. When limit is reached, oldest entries are evicted (FIFO).
21
+ *
22
+ * Note: JavaScript Map can hold up to 2^24 (~16.7 million) entries in most
23
+ * environments, but practical limits depend on available memory and key/value sizes.
24
+ * For hash caching, 4000-10000 entries is typically sufficient for most use cases.
25
+ */
26
+ maxSize?: number;
27
+ };
28
+ /**
29
+ * A simple FIFO (First In, First Out) cache for storing hash values.
30
+ * When the cache reaches its maximum size, the oldest entries are evicted.
31
+ *
32
+ * The cache uses a JavaScript Map internally, which can theoretically hold up to
33
+ * 2^24 (~16.7 million) entries. However, practical limits depend on available memory
34
+ * and the size of cached keys/values. The default maxSize of 4000 provides a good
35
+ * balance between performance and memory usage for typical hash caching scenarios.
36
+ */
37
+ export declare class Cache {
38
+ private _enabled;
39
+ private _maxSize;
40
+ private _store;
41
+ private _keys;
42
+ constructor(options?: CacheOptions);
43
+ /**
44
+ * Gets whether the cache is enabled.
45
+ */
46
+ get enabled(): boolean;
47
+ /**
48
+ * Sets whether the cache is enabled.
49
+ */
50
+ set enabled(value: boolean);
51
+ /**
52
+ * Gets the maximum number of items the cache can hold.
53
+ */
54
+ get maxSize(): number;
55
+ /**
56
+ * Sets the maximum number of items the cache can hold.
57
+ */
58
+ set maxSize(value: number);
59
+ /**
60
+ * Gets the underlying Map store.
61
+ */
62
+ get store(): Map<string, string>;
63
+ /**
64
+ * Gets the current number of items in the cache.
65
+ */
66
+ get size(): number;
67
+ /**
68
+ * Gets a value from the cache.
69
+ * @param key - The cache key
70
+ * @returns The cached value, or undefined if not found
71
+ */
72
+ get(key: string): string | undefined;
73
+ /**
74
+ * Sets a value in the cache with FIFO eviction.
75
+ * If the cache is disabled, this method does nothing.
76
+ * If the cache is at capacity, the oldest entry is removed before adding the new one.
77
+ * @param key - The cache key
78
+ * @param value - The value to cache
79
+ */
80
+ set(key: string, value: string): void;
81
+ /**
82
+ * Checks if a key exists in the cache.
83
+ * @param key - The cache key
84
+ * @returns True if the key exists, false otherwise
85
+ */
86
+ has(key: string): boolean;
87
+ /**
88
+ * Clears all entries from the cache.
89
+ */
90
+ clear(): void;
91
+ }
92
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/hashing/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAAgB;gBAEjB,OAAO,CAAC,EAAE,YAAY;IAUlC;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAEtC;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C;;;;;;OAMG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAyB5C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACI,KAAK,IAAI,IAAI;CAIrB"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Original library: hashery (v1.5.1)
3
+ * - Copyright (c) 2025 Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ /**
10
+ * A simple FIFO (First In, First Out) cache for storing hash values.
11
+ * When the cache reaches its maximum size, the oldest entries are evicted.
12
+ *
13
+ * The cache uses a JavaScript Map internally, which can theoretically hold up to
14
+ * 2^24 (~16.7 million) entries. However, practical limits depend on available memory
15
+ * and the size of cached keys/values. The default maxSize of 4000 provides a good
16
+ * balance between performance and memory usage for typical hash caching scenarios.
17
+ */
18
+ export class Cache {
19
+ _enabled = true;
20
+ _maxSize = 4000;
21
+ _store = new Map();
22
+ _keys = [];
23
+ constructor(options) {
24
+ if (options?.enabled !== undefined) {
25
+ this._enabled = options.enabled;
26
+ }
27
+ if (options?.maxSize !== undefined) {
28
+ this._maxSize = options.maxSize;
29
+ }
30
+ }
31
+ /**
32
+ * Gets whether the cache is enabled.
33
+ */
34
+ get enabled() {
35
+ return this._enabled;
36
+ }
37
+ /**
38
+ * Sets whether the cache is enabled.
39
+ */
40
+ set enabled(value) {
41
+ this._enabled = value;
42
+ }
43
+ /**
44
+ * Gets the maximum number of items the cache can hold.
45
+ */
46
+ get maxSize() {
47
+ return this._maxSize;
48
+ }
49
+ /**
50
+ * Sets the maximum number of items the cache can hold.
51
+ */
52
+ set maxSize(value) {
53
+ this._maxSize = value;
54
+ }
55
+ /**
56
+ * Gets the underlying Map store.
57
+ */
58
+ get store() {
59
+ return this._store;
60
+ }
61
+ /**
62
+ * Gets the current number of items in the cache.
63
+ */
64
+ get size() {
65
+ return this._store.size;
66
+ }
67
+ /**
68
+ * Gets a value from the cache.
69
+ * @param key - The cache key
70
+ * @returns The cached value, or undefined if not found
71
+ */
72
+ get(key) {
73
+ return this._store.get(key);
74
+ }
75
+ /**
76
+ * Sets a value in the cache with FIFO eviction.
77
+ * If the cache is disabled, this method does nothing.
78
+ * If the cache is at capacity, the oldest entry is removed before adding the new one.
79
+ * @param key - The cache key
80
+ * @param value - The value to cache
81
+ */
82
+ set(key, value) {
83
+ if (!this._enabled) {
84
+ return;
85
+ }
86
+ // If key already exists, just update the value
87
+ if (this._store.has(key)) {
88
+ this._store.set(key, value);
89
+ return;
90
+ }
91
+ // If at capacity, remove oldest (FIFO)
92
+ if (this._store.size >= this._maxSize) {
93
+ const oldestKey = this._keys.shift();
94
+ /* v8 ignore next -- @preserve */
95
+ if (oldestKey) {
96
+ this._store.delete(oldestKey);
97
+ }
98
+ }
99
+ // Add new entry
100
+ this._keys.push(key);
101
+ this._store.set(key, value);
102
+ }
103
+ /**
104
+ * Checks if a key exists in the cache.
105
+ * @param key - The cache key
106
+ * @returns True if the key exists, false otherwise
107
+ */
108
+ has(key) {
109
+ return this._store.has(key);
110
+ }
111
+ /**
112
+ * Clears all entries from the cache.
113
+ */
114
+ clear() {
115
+ this._store.clear();
116
+ this._keys = [];
117
+ }
118
+ }
119
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/caching/src/hashing/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAuBL;;;;;;;;GAQG;AACH,MAAM,OAAO,KAAK;IACR,QAAQ,GAAG,IAAI,CAAC;IAChB,QAAQ,GAAG,IAAI,CAAC;IAChB,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnC,KAAK,GAAa,EAAE,CAAC;IAE7B,YAAY,OAAsB;QAChC,IAAI,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAClC,CAAC;QAED,IAAI,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAc;QAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAa;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACI,GAAG,CAAC,GAAW,EAAE,KAAa;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrC,iCAAiC;YACjC,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF"}