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,334 @@
1
+ /**
2
+ * Original library: keyv (v5.6.0)
3
+ * - Copyright (c) 2017-2021 Luke Childs
4
+ * - Copyright (c) 2021-2022 Jared Wray
5
+ *
6
+ * Modified and integrated in "Inray":
7
+ * - Evgeniy Bushin
8
+ */
9
+ /***/
10
+ /**
11
+ * Check if an object is a Keyv instance or has Keyv-like capabilities
12
+ * @param obj - The object to check
13
+ * @returns An object with boolean properties for each Keyv method/property
14
+ * @example
15
+ * ```typescript
16
+ * import { isKeyv } from 'keyv';
17
+ *
18
+ * isKeyv(new Map());
19
+ * // { keyv: false, get: true, set: true, delete: true, clear: true, has: true,
20
+ * // getMany: false, setMany: false, deleteMany: false, hasMany: false,
21
+ * // disconnect: false, getRaw: false, getManyRaw: false, hooks: false,
22
+ * // stats: false, iterator: false }
23
+ *
24
+ * isKeyv(new Keyv());
25
+ * // { keyv: true, get: true, set: true, delete: true, clear: true, has: true,
26
+ * // getMany: true, setMany: true, deleteMany: true, hasMany: true,
27
+ * // disconnect: true, getRaw: true, getManyRaw: true, hooks: true,
28
+ * // stats: true, iterator: false }
29
+ * ```
30
+ */
31
+ export function isKeyv(obj) {
32
+ if (obj === null || obj === undefined) {
33
+ return {
34
+ keyv: false,
35
+ get: false,
36
+ set: false,
37
+ delete: false,
38
+ clear: false,
39
+ has: false,
40
+ getMany: false,
41
+ setMany: false,
42
+ deleteMany: false,
43
+ hasMany: false,
44
+ disconnect: false,
45
+ getRaw: false,
46
+ getManyRaw: false,
47
+ hooks: false,
48
+ stats: false,
49
+ iterator: false
50
+ };
51
+ }
52
+ if (typeof obj !== 'object') {
53
+ return {
54
+ keyv: false,
55
+ get: false,
56
+ set: false,
57
+ delete: false,
58
+ clear: false,
59
+ has: false,
60
+ getMany: false,
61
+ setMany: false,
62
+ deleteMany: false,
63
+ hasMany: false,
64
+ disconnect: false,
65
+ getRaw: false,
66
+ getManyRaw: false,
67
+ hooks: false,
68
+ stats: false,
69
+ iterator: false
70
+ };
71
+ }
72
+ // Check for each method/property
73
+ const hasGet = 'get' in obj && typeof obj.get === 'function';
74
+ const hasSet = 'set' in obj && typeof obj.set === 'function';
75
+ const hasDelete = 'delete' in obj && typeof obj.delete === 'function';
76
+ const hasClear = 'clear' in obj && typeof obj.clear === 'function';
77
+ const hasHas = 'has' in obj && typeof obj.has === 'function';
78
+ const hasGetMany = 'getMany' in obj && typeof obj.getMany === 'function';
79
+ const hasSetMany = 'setMany' in obj && typeof obj.setMany === 'function';
80
+ const hasDeleteMany = 'deleteMany' in obj && typeof obj.deleteMany === 'function';
81
+ const hasHasMany = 'hasMany' in obj && typeof obj.hasMany === 'function';
82
+ const hasDisconnect = 'disconnect' in obj && typeof obj.disconnect === 'function';
83
+ const hasGetRaw = 'getRaw' in obj && typeof obj.getRaw === 'function';
84
+ const hasGetManyRaw = 'getManyRaw' in obj && typeof obj.getManyRaw === 'function';
85
+ const hasHooks = 'hooks' in obj;
86
+ const hasStats = 'stats' in obj;
87
+ const hasIterator = 'iterator' in obj;
88
+ // Determine if it's a Keyv instance based on core methods and properties
89
+ const isKeyvInstance = hasGet && hasSet && hasDelete && hasClear && hasHooks && hasStats;
90
+ return {
91
+ keyv: isKeyvInstance,
92
+ get: hasGet,
93
+ set: hasSet,
94
+ delete: hasDelete,
95
+ clear: hasClear,
96
+ has: hasHas,
97
+ getMany: hasGetMany,
98
+ setMany: hasSetMany,
99
+ deleteMany: hasDeleteMany,
100
+ hasMany: hasHasMany,
101
+ disconnect: hasDisconnect,
102
+ getRaw: hasGetRaw,
103
+ getManyRaw: hasGetManyRaw,
104
+ hooks: hasHooks,
105
+ stats: hasStats,
106
+ iterator: hasIterator
107
+ };
108
+ }
109
+ /**
110
+ * Check if an object is a Keyv storage adapter or has storage adapter-like capabilities
111
+ * @param obj - The object to check
112
+ * @returns An object with boolean properties for each storage adapter method/property
113
+ * @example
114
+ * ```typescript
115
+ * import { isKeyvStorage } from 'keyv';
116
+ *
117
+ * isKeyvStorage(new Map());
118
+ * // { keyvStorage: false, get: true, set: true, delete: true, clear: true, has: true,
119
+ * // getMany: false, setMany: false, deleteMany: false, hasMany: false,
120
+ * // disconnect: false, iterator: false, namespace: false }
121
+ *
122
+ * const adapter = new KeyvRedis();
123
+ * isKeyvStorage(adapter);
124
+ * // { keyvStorage: true, get: true, set: true, delete: true, clear: true, has: true,
125
+ * // getMany: true, setMany: true, deleteMany: true, hasMany: true,
126
+ * // disconnect: true, iterator: true, namespace: true }
127
+ * ```
128
+ */
129
+ export function isKeyvStorage(obj) {
130
+ if (obj === null || obj === undefined) {
131
+ return {
132
+ keyvStorage: false,
133
+ get: false,
134
+ set: false,
135
+ delete: false,
136
+ clear: false,
137
+ has: false,
138
+ getMany: false,
139
+ setMany: false,
140
+ deleteMany: false,
141
+ hasMany: false,
142
+ disconnect: false,
143
+ iterator: false,
144
+ namespace: false
145
+ };
146
+ }
147
+ if (typeof obj !== 'object') {
148
+ return {
149
+ keyvStorage: false,
150
+ get: false,
151
+ set: false,
152
+ delete: false,
153
+ clear: false,
154
+ has: false,
155
+ getMany: false,
156
+ setMany: false,
157
+ deleteMany: false,
158
+ hasMany: false,
159
+ disconnect: false,
160
+ iterator: false,
161
+ namespace: false
162
+ };
163
+ }
164
+ // Check for each method/property
165
+ const hasGet = 'get' in obj && typeof obj.get === 'function';
166
+ const hasSet = 'set' in obj && typeof obj.set === 'function';
167
+ const hasDelete = 'delete' in obj && typeof obj.delete === 'function';
168
+ const hasClear = 'clear' in obj && typeof obj.clear === 'function';
169
+ const hasHas = 'has' in obj && typeof obj.has === 'function';
170
+ const hasGetMany = 'getMany' in obj && typeof obj.getMany === 'function';
171
+ const hasSetMany = 'setMany' in obj && typeof obj.setMany === 'function';
172
+ const hasDeleteMany = 'deleteMany' in obj && typeof obj.deleteMany === 'function';
173
+ const hasHasMany = 'hasMany' in obj && typeof obj.hasMany === 'function';
174
+ const hasDisconnect = 'disconnect' in obj && typeof obj.disconnect === 'function';
175
+ const hasIterator = 'iterator' in obj && typeof obj.iterator === 'function';
176
+ const hasNamespace = 'namespace' in obj;
177
+ // Determine if it's a Keyv storage adapter based on core methods
178
+ // Must have: get, set, delete, clear (core required methods)
179
+ const isKeyvStorageAdapter = hasGet && hasSet && hasDelete && hasClear;
180
+ return {
181
+ keyvStorage: isKeyvStorageAdapter,
182
+ get: hasGet,
183
+ set: hasSet,
184
+ delete: hasDelete,
185
+ clear: hasClear,
186
+ has: hasHas,
187
+ getMany: hasGetMany,
188
+ setMany: hasSetMany,
189
+ deleteMany: hasDeleteMany,
190
+ hasMany: hasHasMany,
191
+ disconnect: hasDisconnect,
192
+ iterator: hasIterator,
193
+ namespace: hasNamespace
194
+ };
195
+ }
196
+ /**
197
+ * Check if an object is a Keyv compression adapter or has compression capabilities
198
+ * @param obj - The object to check
199
+ * @returns An object with boolean properties for each compression method
200
+ * @example
201
+ * ```typescript
202
+ * import { isKeyvCompression } from 'keyv';
203
+ *
204
+ * const gzip = {
205
+ * compress: (data) => compressSync(data),
206
+ * decompress: (data) => decompressSync(data)
207
+ * };
208
+ * isKeyvCompression(gzip);
209
+ * // { keyvCompression: true, compress: true, decompress: true }
210
+ *
211
+ * isKeyvCompression({});
212
+ * // { keyvCompression: false, compress: false, decompress: false }
213
+ * ```
214
+ */
215
+ export function isKeyvCompression(obj) {
216
+ if (obj === null || obj === undefined) {
217
+ return {
218
+ keyvCompression: false,
219
+ compress: false,
220
+ decompress: false
221
+ };
222
+ }
223
+ if (typeof obj !== 'object') {
224
+ return {
225
+ keyvCompression: false,
226
+ compress: false,
227
+ decompress: false
228
+ };
229
+ }
230
+ // Check for compress and decompress methods
231
+ const hasCompress = 'compress' in obj && typeof obj.compress === 'function';
232
+ const hasDecompress = 'decompress' in obj && typeof obj.decompress === 'function';
233
+ // Determine if it's a Keyv compression adapter
234
+ // Must have both compress and decompress methods
235
+ const isKeyvCompressionAdapter = hasCompress && hasDecompress;
236
+ return {
237
+ keyvCompression: isKeyvCompressionAdapter,
238
+ compress: hasCompress,
239
+ decompress: hasDecompress
240
+ };
241
+ }
242
+ /**
243
+ * Check if an object is a Keyv serialization adapter or has serialization capabilities
244
+ * @param obj - The object to check
245
+ * @returns An object with boolean properties for each serialization method
246
+ * @example
247
+ * ```typescript
248
+ * import { isKeyvSerialization } from 'keyv';
249
+ *
250
+ * const json = {
251
+ * stringify: (obj) => JSON.stringify(obj),
252
+ * parse: (str) => JSON.parse(str)
253
+ * };
254
+ * isKeyvSerialization(json);
255
+ * // { keyvSerialization: true, stringify: true, parse: true }
256
+ *
257
+ * isKeyvSerialization({});
258
+ * // { keyvSerialization: false, stringify: false, parse: false }
259
+ * ```
260
+ */
261
+ export function isKeyvSerialization(obj) {
262
+ if (obj === null || obj === undefined) {
263
+ return {
264
+ keyvSerialization: false,
265
+ stringify: false,
266
+ parse: false
267
+ };
268
+ }
269
+ if (typeof obj !== 'object') {
270
+ return {
271
+ keyvSerialization: false,
272
+ stringify: false,
273
+ parse: false
274
+ };
275
+ }
276
+ // Check for stringify and parse methods
277
+ const hasStringify = 'stringify' in obj && typeof obj.stringify === 'function';
278
+ const hasParse = 'parse' in obj && typeof obj.parse === 'function';
279
+ // Determine if it's a Keyv serialization adapter
280
+ // Must have both stringify and parse methods
281
+ const isKeyvSerializationAdapter = hasStringify && hasParse;
282
+ return {
283
+ keyvSerialization: isKeyvSerializationAdapter,
284
+ stringify: hasStringify,
285
+ parse: hasParse
286
+ };
287
+ }
288
+ /**
289
+ * Check if an object is a Keyv encryption adapter or has encryption capabilities
290
+ * @param obj - The object to check
291
+ * @returns An object with boolean properties for each encryption method
292
+ * @example
293
+ * ```typescript
294
+ * import { isKeyvEncryption } from 'keyv';
295
+ *
296
+ * const aes = {
297
+ * encrypt: (data) => encryptAES(data),
298
+ * decrypt: (data) => decryptAES(data)
299
+ * };
300
+ * isKeyvEncryption(aes);
301
+ * // { keyvEncryption: true, encrypt: true, decrypt: true }
302
+ *
303
+ * isKeyvEncryption({});
304
+ * // { keyvEncryption: false, encrypt: false, decrypt: false }
305
+ * ```
306
+ */
307
+ export function isKeyvEncryption(obj) {
308
+ if (obj === null || obj === undefined) {
309
+ return {
310
+ keyvEncryption: false,
311
+ encrypt: false,
312
+ decrypt: false
313
+ };
314
+ }
315
+ if (typeof obj !== 'object') {
316
+ return {
317
+ keyvEncryption: false,
318
+ encrypt: false,
319
+ decrypt: false
320
+ };
321
+ }
322
+ // Check for encrypt and decrypt methods
323
+ const hasEncrypt = 'encrypt' in obj && typeof obj.encrypt === 'function';
324
+ const hasDecrypt = 'decrypt' in obj && typeof obj.decrypt === 'function';
325
+ // Determine if it's a Keyv encryption adapter
326
+ // Must have both encrypt and decrypt methods
327
+ const isKeyvEncryptionAdapter = hasEncrypt && hasDecrypt;
328
+ return {
329
+ keyvEncryption: isKeyvEncryptionAdapter,
330
+ encrypt: hasEncrypt,
331
+ decrypt: hasDecrypt
332
+ };
333
+ }
334
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../src/caching/src/keyValue/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Original library: keyv (v5.6.0)
3
+ * - Copyright (c) 2017-2021 Luke Childs
4
+ * - Copyright (c) 2021-2022 Jared Wray
5
+ *
6
+ * Modified and integrated in "Inray":
7
+ * - Evgeniy Bushin
8
+ */
9
+ /***/
10
+ type EventListener = (...arguments_: any[]) => void;
11
+ declare class EventManager {
12
+ _eventListeners: Map<string, EventListener[]>;
13
+ _maxListeners: number;
14
+ constructor();
15
+ maxListeners(): number;
16
+ addListener(event: string, listener: EventListener): void;
17
+ on(event: string, listener: EventListener): this;
18
+ removeListener(event: string, listener: EventListener): void;
19
+ off(event: string, listener: EventListener): void;
20
+ once(event: string, listener: EventListener): void;
21
+ emit(event: string, ...arguments_: any[]): void;
22
+ listeners(event: string): EventListener[];
23
+ removeAllListeners(event?: string): void;
24
+ setMaxListeners(n: number): void;
25
+ }
26
+ export default EventManager;
27
+ //# sourceMappingURL=event-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-manager.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/keyValue/event-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,KAAK;AAEL,KAAK,aAAa,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAEpD,cAAM,YAAY;IAChB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC;;IAOf,YAAY,IAAI,MAAM;IAKtB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIzD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAsBhD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI5D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAYjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAWlD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;IAW/C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE;IAKzC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IASxC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;CAGxC;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Original library: keyv (v5.6.0)
3
+ * - Copyright (c) 2017-2021 Luke Childs
4
+ * - Copyright (c) 2021-2022 Jared Wray
5
+ *
6
+ * Modified and integrated in "Inray":
7
+ * - Evgeniy Bushin
8
+ */
9
+ /***/
10
+ class EventManager {
11
+ _eventListeners;
12
+ _maxListeners;
13
+ constructor() {
14
+ this._eventListeners = new Map();
15
+ this._maxListeners = 100; // Default maximum number of listeners
16
+ }
17
+ maxListeners() {
18
+ return this._maxListeners;
19
+ }
20
+ // Add an event listener
21
+ addListener(event, listener) {
22
+ this.on(event, listener);
23
+ }
24
+ on(event, listener) {
25
+ if (!this._eventListeners.has(event)) {
26
+ this._eventListeners.set(event, []);
27
+ }
28
+ const listeners = this._eventListeners.get(event);
29
+ /* v8 ignore next -- @preserve */
30
+ if (listeners) {
31
+ if (listeners.length >= this._maxListeners) {
32
+ console.warn(`MaxListenersExceededWarning: Possible event memory leak detected. ${listeners.length + 1} ${event} listeners added. Use setMaxListeners() to increase limit.`);
33
+ }
34
+ listeners.push(listener);
35
+ }
36
+ return this;
37
+ }
38
+ // Remove an event listener
39
+ removeListener(event, listener) {
40
+ this.off(event, listener);
41
+ }
42
+ off(event, listener) {
43
+ const listeners = this._eventListeners.get(event) ?? [];
44
+ const index = listeners.indexOf(listener);
45
+ if (index !== -1) {
46
+ listeners.splice(index, 1);
47
+ }
48
+ if (listeners.length === 0) {
49
+ this._eventListeners.delete(event);
50
+ }
51
+ }
52
+ once(event, listener) {
53
+ // biome-ignore lint/suspicious/noExplicitAny: type format
54
+ const onceListener = (...arguments_) => {
55
+ listener(...arguments_);
56
+ this.off(event, onceListener);
57
+ };
58
+ this.on(event, onceListener);
59
+ }
60
+ // Emit an event
61
+ emit(event, ...arguments_) {
62
+ const listeners = this._eventListeners.get(event);
63
+ if (listeners && listeners.length > 0) {
64
+ for (const listener of listeners) {
65
+ listener(...arguments_);
66
+ }
67
+ }
68
+ }
69
+ // Get all listeners for a specific event
70
+ listeners(event) {
71
+ return this._eventListeners.get(event) ?? [];
72
+ }
73
+ // Remove all listeners for a specific event
74
+ removeAllListeners(event) {
75
+ if (event) {
76
+ this._eventListeners.delete(event);
77
+ }
78
+ else {
79
+ this._eventListeners.clear();
80
+ }
81
+ }
82
+ // Set the maximum number of listeners for a single event
83
+ setMaxListeners(n) {
84
+ this._maxListeners = n;
85
+ }
86
+ }
87
+ export default EventManager;
88
+ //# sourceMappingURL=event-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../../../src/caching/src/keyValue/event-manager.ts"],"names":[],"mappings":"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"}