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,163 @@
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
+ * Manages a collection of hash providers for the Hashery system.
11
+ * Provides methods to add, remove, and load multiple hash providers.
12
+ */
13
+ export class HashProviders {
14
+ _providers = new Map();
15
+ _getFuzzy = true;
16
+ /**
17
+ * Creates a new HashProviders instance.
18
+ * @param options - Optional configuration including initial providers to load
19
+ * @example
20
+ * ```ts
21
+ * const providers = new HashProviders({
22
+ * providers: [{ name: 'custom', toHash: async (data) => '...' }]
23
+ * });
24
+ * ```
25
+ */
26
+ constructor(options) {
27
+ if (options?.providers) {
28
+ this.loadProviders(options?.providers);
29
+ }
30
+ if (options?.getFuzzy !== undefined) {
31
+ this._getFuzzy = Boolean(options?.getFuzzy);
32
+ }
33
+ }
34
+ /**
35
+ * Loads multiple hash providers at once.
36
+ * Each provider is added to the internal map using its name as the key.
37
+ * @param providers - Array of HashProvider objects to load
38
+ * @example
39
+ * ```ts
40
+ * const providers = new HashProviders();
41
+ * providers.loadProviders([
42
+ * { name: 'md5', toHash: async (data) => '...' },
43
+ * { name: 'sha1', toHash: async (data) => '...' }
44
+ * ]);
45
+ * ```
46
+ */
47
+ loadProviders(providers) {
48
+ for (const provider of providers) {
49
+ this._providers.set(provider.name, provider);
50
+ }
51
+ }
52
+ /**
53
+ * Gets the internal Map of all registered hash providers.
54
+ * @returns Map of provider names to HashProvider objects
55
+ */
56
+ get providers() {
57
+ return this._providers;
58
+ }
59
+ /**
60
+ * Sets the internal Map of hash providers, replacing all existing providers.
61
+ * @param providers - Map of provider names to HashProvider objects
62
+ */
63
+ set providers(providers) {
64
+ this._providers = providers;
65
+ }
66
+ /**
67
+ * Gets an array of all provider names.
68
+ * @returns Array of provider names
69
+ * @example
70
+ * ```ts
71
+ * const providers = new HashProviders();
72
+ * providers.add({ name: 'sha256', toHash: async (data) => '...' });
73
+ * providers.add({ name: 'md5', toHash: async (data) => '...' });
74
+ * console.log(providers.names); // ['sha256', 'md5']
75
+ * ```
76
+ */
77
+ get names() {
78
+ return Array.from(this._providers.keys());
79
+ }
80
+ /**
81
+ * Gets a hash provider by name with optional fuzzy matching.
82
+ *
83
+ * Fuzzy matching (enabled by default) attempts to find providers by:
84
+ * 1. Exact match (after trimming whitespace)
85
+ * 2. Case-insensitive match (lowercase)
86
+ * 3. Dash-removed match (e.g., "SHA-256" matches "sha256")
87
+ *
88
+ * @param name - The name of the provider to retrieve
89
+ * @param options - Optional configuration for the get operation
90
+ * @param options.fuzzy - Enable/disable fuzzy matching (overrides constructor setting)
91
+ * @returns The HashProvider if found, undefined otherwise
92
+ * @example
93
+ * ```ts
94
+ * const providers = new HashProviders();
95
+ * providers.add({ name: 'sha256', toHash: async (data) => '...' });
96
+ *
97
+ * // Exact match
98
+ * const provider = providers.get('sha256');
99
+ *
100
+ * // Fuzzy match (case-insensitive)
101
+ * const provider2 = providers.get('SHA256');
102
+ *
103
+ * // Fuzzy match (with dash)
104
+ * const provider3 = providers.get('SHA-256');
105
+ *
106
+ * // Disable fuzzy matching
107
+ * const provider4 = providers.get('SHA256', { fuzzy: false }); // returns undefined
108
+ * ```
109
+ */
110
+ get(name, options) {
111
+ // set the options
112
+ const getFuzzy = options?.fuzzy ?? this._getFuzzy;
113
+ // do the trim
114
+ name = name.trim();
115
+ let result = this._providers.get(name);
116
+ // try with lower case
117
+ if (result === undefined && getFuzzy === true) {
118
+ name = name.toLowerCase();
119
+ result = this._providers.get(name);
120
+ }
121
+ // try removing dash
122
+ if (result === undefined && getFuzzy === true) {
123
+ name = name.replaceAll('-', '');
124
+ result = this._providers.get(name);
125
+ }
126
+ return result;
127
+ }
128
+ /**
129
+ * Adds a single hash provider to the collection.
130
+ * If a provider with the same name already exists, it will be replaced.
131
+ * @param provider - The HashProvider object to add
132
+ * @example
133
+ * ```ts
134
+ * const providers = new HashProviders();
135
+ * providers.add({
136
+ * name: 'custom-hash',
137
+ * toHash: async (data) => {
138
+ * // Custom hashing logic
139
+ * return 'hash-result';
140
+ * }
141
+ * });
142
+ * ```
143
+ */
144
+ add(provider) {
145
+ this._providers.set(provider.name, provider);
146
+ }
147
+ /**
148
+ * Removes a hash provider from the collection by name.
149
+ * @param name - The name of the provider to remove
150
+ * @returns true if the provider was found and removed, false otherwise
151
+ * @example
152
+ * ```ts
153
+ * const providers = new HashProviders();
154
+ * providers.add({ name: 'custom', toHash: async (data) => '...' });
155
+ * const removed = providers.remove('custom'); // returns true
156
+ * const removed2 = providers.remove('nonexistent'); // returns false
157
+ * ```
158
+ */
159
+ remove(name) {
160
+ return this._providers.delete(name);
161
+ }
162
+ }
163
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../../src/caching/src/hashing/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,UAAU,GAA8B,IAAI,GAAG,EAAE,CAAC;IAClD,SAAS,GAAG,IAAI,CAAC;IAEzB;;;;;;;;;OASG;IACH,YAAY,OAA8B;QACxC,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,aAAa,CAAC,SAA8B;QACjD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAW,SAAS,CAAC,SAAoC;QACvD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAW,KAAK;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,GAAG,CAAC,IAAY,EAAE,OAAiC;QACxD,kBAAkB;QAClB,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;QAElD,cAAc;QACd,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEnB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvC,sBAAsB;QACtB,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,oBAAoB;QACpB,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,GAAG,CAAC,QAAsB;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,340 @@
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
+ import type { HookifiedOptions } from './hooks/index.ts';
10
+ import type { CacheOptions } from './cache.ts';
11
+ /**
12
+ * Configuration options for Hashery instances.
13
+ * Extends HookifiedOptions to include parse and stringify functionality.
14
+ */
15
+ export type HasheryOptions = {
16
+ /**
17
+ * Custom parse function to deserialize string data.
18
+ * Defaults to JSON.parse if not provided.
19
+ * @example
20
+ * ```ts
21
+ * import superjson from 'superjson';
22
+ *
23
+ * const hashery = new Hashery({
24
+ * parse: (data) => superjson.parse(data)
25
+ * });
26
+ * ```
27
+ */
28
+ parse?: ParseFn;
29
+ /**
30
+ * Custom stringify function to serialize data to string format.
31
+ * Defaults to JSON.stringify if not provided.
32
+ * @example
33
+ * ```ts
34
+ * import superjson from 'superjson';
35
+ *
36
+ * const hashery = new Hashery({
37
+ * stringify: (data) => superjson.stringify(data)
38
+ * });
39
+ * ```
40
+ */
41
+ stringify?: StringifyFn;
42
+ /**
43
+ * Array of hash providers to add to base providers
44
+ * Providers implement the HashProvider interface and enable custom hashing algorithms.
45
+ * @example
46
+ * ```ts
47
+ * const customProvider = {
48
+ * name: 'custom-hash',
49
+ * toHash: async (data) => {
50
+ * // Custom hash implementation
51
+ * return 'hash-value';
52
+ * }
53
+ * };
54
+ *
55
+ * const hashery = new Hashery({
56
+ * providers: [customProvider]
57
+ * });
58
+ * ```
59
+ */
60
+ providers?: Array<HashProvider>;
61
+ /**
62
+ * Whether to include base WebCrypto providers (SHA-256, SHA-384, SHA-512).
63
+ * Defaults to true.
64
+ * @example
65
+ * ```ts
66
+ * // Create instance without base providers
67
+ * const hashery = new Hashery({
68
+ * includeBase: false,
69
+ * providers: [customProvider]
70
+ * });
71
+ * ```
72
+ */
73
+ includeBase?: boolean;
74
+ /**
75
+ * Default hash algorithm to use when none is specified.
76
+ * Defaults to 'SHA-256'.
77
+ * @example
78
+ * ```ts
79
+ * const hashery = new Hashery({
80
+ * defaultAlgorithm: 'SHA-512'
81
+ * });
82
+ *
83
+ * // This will use SHA-512 instead of SHA-256
84
+ * const hash = await hashery.toHash({ data: 'example' });
85
+ * ```
86
+ */
87
+ defaultAlgorithm?: HashAlgorithm | (string & {});
88
+ /**
89
+ * Default synchronous hash algorithm to use when none is specified.
90
+ * Defaults to 'djb2'.
91
+ * @example
92
+ * ```ts
93
+ * const hashery = new Hashery({
94
+ * defaultAlgorithmSync: 'fnv1'
95
+ * });
96
+ *
97
+ * // This will use fnv1 for synchronous operations by default
98
+ * ```
99
+ */
100
+ defaultAlgorithmSync?: HashAlgorithm | (string & {});
101
+ /**
102
+ * Cache configuration options.
103
+ * Pass { enabled: true } to enable caching of hash results.
104
+ * @example
105
+ * ```ts
106
+ * const hashery = new Hashery({
107
+ * cache: { enabled: true, maxSize: 500 }
108
+ * });
109
+ *
110
+ * // Hashes will be cached and reused for identical inputs
111
+ * ```
112
+ */
113
+ cache?: CacheOptions;
114
+ } & HookifiedOptions;
115
+ /**
116
+ * Options for the toHash method.
117
+ * @example
118
+ * ```ts
119
+ * const hashery = new Hashery();
120
+ *
121
+ * // Using a specific algorithm
122
+ * const hash = await hashery.toHash({ data: 'example' }, { algorithm: 'SHA-512' });
123
+ *
124
+ * // Truncating the hash output
125
+ * const shortHash = await hashery.toHash(
126
+ * { data: 'example' },
127
+ * { algorithm: 'SHA-256', maxLength: 16 }
128
+ * );
129
+ * ```
130
+ */
131
+ export type HasheryToHashOptions = {
132
+ /**
133
+ * The hash algorithm to use.
134
+ * Defaults to 'SHA-256' if not specified.
135
+ * Supported algorithms include: 'SHA-256', 'SHA-384', 'SHA-512', 'djb2', 'fnv1', 'murmur', 'crc32'
136
+ */
137
+ algorithm?: HashAlgorithm | (string & {});
138
+ /**
139
+ * Maximum length for the hash output.
140
+ * If specified, the hash will be truncated to this length.
141
+ * @example
142
+ * ```ts
143
+ * // Get a 16-character hash instead of the full 64-character SHA-256 hash
144
+ * const hash = await hashery.toHash({ data: 'example' }, { maxLength: 16 });
145
+ * ```
146
+ */
147
+ maxLength?: number;
148
+ };
149
+ /**
150
+ * Options for the toNumber method.
151
+ * @example
152
+ * ```ts
153
+ * const hashery = new Hashery();
154
+ *
155
+ * // Using default range (0-100)
156
+ * const num = await hashery.toNumber({ user: 'john' });
157
+ *
158
+ * // Using custom range
159
+ * const slot = await hashery.toNumber({ user: 'john' }, { min: 0, max: 9 });
160
+ *
161
+ * // Using different algorithm
162
+ * const num512 = await hashery.toNumber(
163
+ * { user: 'john' },
164
+ * { min: 0, max: 255, algorithm: 'SHA-512' }
165
+ * );
166
+ * ```
167
+ */
168
+ export type HasheryToNumberOptions = {
169
+ /**
170
+ * The hash algorithm to use.
171
+ * Defaults to 'SHA-256' if not specified.
172
+ * Supported algorithms include: 'SHA-256', 'SHA-384', 'SHA-512', 'djb2', 'fnv1', 'murmur', 'crc32'
173
+ */
174
+ algorithm?: HashAlgorithm | (string & {});
175
+ /**
176
+ * The minimum value of the range (inclusive).
177
+ * Defaults to 0 if not specified.
178
+ * @example
179
+ * ```ts
180
+ * // Generate number between 1 and 100
181
+ * const num = await hashery.toNumber({ data: 'example' }, { min: 1, max: 100 });
182
+ * ```
183
+ */
184
+ min?: number;
185
+ /**
186
+ * The maximum value of the range (inclusive).
187
+ * Defaults to 100 if not specified.
188
+ * @example
189
+ * ```ts
190
+ * // Generate number between 0 and 1000
191
+ * const num = await hashery.toNumber({ data: 'example' }, { min: 0, max: 1000 });
192
+ * ```
193
+ */
194
+ max?: number;
195
+ /**
196
+ * Number of characters from the hash to use for conversion.
197
+ * Defaults to 16 if not specified.
198
+ * This provides good distribution while avoiding precision issues with JavaScript numbers.
199
+ * @example
200
+ * ```ts
201
+ * // Use more hash characters for better distribution
202
+ * const num = await hashery.toNumber({ data: 'example' }, { hashLength: 32 });
203
+ * ```
204
+ */
205
+ hashLength?: number;
206
+ };
207
+ /**
208
+ * Options for the toHashSync method.
209
+ * @example
210
+ * ```ts
211
+ * const hashery = new Hashery();
212
+ *
213
+ * // Using a specific algorithm
214
+ * const hash = hashery.toHashSync({ data: 'example' }, { algorithm: 'fnv1' });
215
+ *
216
+ * // Truncating the hash output
217
+ * const shortHash = hashery.toHashSync(
218
+ * { data: 'example' },
219
+ * { algorithm: 'djb2', maxLength: 16 }
220
+ * );
221
+ * ```
222
+ */
223
+ export type HasheryToHashSyncOptions = {
224
+ /**
225
+ * The hash algorithm to use.
226
+ * Defaults to 'djb2' if not specified.
227
+ * Supported synchronous algorithms include: 'djb2', 'fnv1', 'murmur', 'crc32'
228
+ * Note: WebCrypto algorithms (SHA-256, SHA-384, SHA-512) are not supported in sync mode.
229
+ */
230
+ algorithm?: HashAlgorithm | (string & {});
231
+ /**
232
+ * Maximum length for the hash output.
233
+ * If specified, the hash will be truncated to this length.
234
+ * @example
235
+ * ```ts
236
+ * // Get a 16-character hash
237
+ * const hash = hashery.toHashSync({ data: 'example' }, { maxLength: 16 });
238
+ * ```
239
+ */
240
+ maxLength?: number;
241
+ };
242
+ /**
243
+ * Options for the toNumberSync method.
244
+ * @example
245
+ * ```ts
246
+ * const hashery = new Hashery();
247
+ *
248
+ * // Using default range (0-100)
249
+ * const num = hashery.toNumberSync({ user: 'john' });
250
+ *
251
+ * // Using custom range
252
+ * const slot = hashery.toNumberSync({ user: 'john' }, { min: 0, max: 9 });
253
+ *
254
+ * // Using different algorithm
255
+ * const num = hashery.toNumberSync(
256
+ * { user: 'john' },
257
+ * { min: 0, max: 255, algorithm: 'fnv1' }
258
+ * );
259
+ * ```
260
+ */
261
+ export type HasheryToNumberSyncOptions = {
262
+ /**
263
+ * The hash algorithm to use.
264
+ * Defaults to 'djb2' if not specified.
265
+ * Supported synchronous algorithms include: 'djb2', 'fnv1', 'murmur', 'crc32'
266
+ * Note: WebCrypto algorithms (SHA-256, SHA-384, SHA-512) are not supported in sync mode.
267
+ */
268
+ algorithm?: HashAlgorithm | (string & {});
269
+ /**
270
+ * The minimum value of the range (inclusive).
271
+ * Defaults to 0 if not specified.
272
+ * @example
273
+ * ```ts
274
+ * // Generate number between 1 and 100
275
+ * const num = hashery.toNumberSync({ data: 'example' }, { min: 1, max: 100 });
276
+ * ```
277
+ */
278
+ min?: number;
279
+ /**
280
+ * The maximum value of the range (inclusive).
281
+ * Defaults to 100 if not specified.
282
+ * @example
283
+ * ```ts
284
+ * // Generate number between 0 and 1000
285
+ * const num = hashery.toNumberSync({ data: 'example' }, { min: 0, max: 1000 });
286
+ * ```
287
+ */
288
+ max?: number;
289
+ /**
290
+ * Number of characters from the hash to use for conversion.
291
+ * Defaults to 16 if not specified.
292
+ * This provides good distribution while avoiding precision issues with JavaScript numbers.
293
+ * @example
294
+ * ```ts
295
+ * // Use more hash characters for better distribution
296
+ * const num = hashery.toNumberSync({ data: 'example' }, { hashLength: 32 });
297
+ * ```
298
+ */
299
+ hashLength?: number;
300
+ };
301
+ /**
302
+ * Function type for serializing data to a string.
303
+ * @param data - The data to stringify
304
+ * @returns The stringified representation
305
+ */
306
+ export type StringifyFn = (data: unknown) => string;
307
+ /**
308
+ * Function type for parsing string data.
309
+ * @param data - The string data to parse
310
+ * @returns The parsed data
311
+ */
312
+ export type ParseFn = (data: string) => unknown;
313
+ /**
314
+ * Supported hash algorithms for the Web Crypto API.
315
+ * - SHA-256: Recommended algorithm (256-bit) - good balance of security and performance
316
+ * - SHA-384: High security algorithm (384-bit)
317
+ * - SHA-512: Highest security algorithm (512-bit)
318
+ */
319
+ export type WebCryptoHashAlgorithm = 'SHA-256' | 'SHA-384' | 'SHA-512';
320
+ /**
321
+ * All built-in hash algorithm names supported by Hashery.
322
+ * Includes both WebCrypto (async-only) and non-cryptographic (sync & async) algorithms.
323
+ */
324
+ export type HashAlgorithm = 'SHA-256' | 'SHA-384' | 'SHA-512' | 'djb2' | 'fnv1' | 'murmur' | 'crc32';
325
+ export type HashProvider = {
326
+ name: string;
327
+ toHash(data: BufferSource): Promise<string>;
328
+ toHashSync?(data: BufferSource): string;
329
+ };
330
+ export type HashProvidersOptions = {
331
+ providers?: Array<HashProvider>;
332
+ getFuzzy?: boolean;
333
+ };
334
+ export type HashProvidersGetOptions = {
335
+ fuzzy?: boolean;
336
+ };
337
+ export type HasheryLoadProviderOptions = {
338
+ includeBase?: boolean;
339
+ };
340
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/hashing/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/caching/src/hashing/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK"}
@@ -0,0 +1,161 @@
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
+ export type IsKeyvResult = {
11
+ keyv: boolean;
12
+ get: boolean;
13
+ set: boolean;
14
+ delete: boolean;
15
+ clear: boolean;
16
+ has: boolean;
17
+ getMany: boolean;
18
+ setMany: boolean;
19
+ deleteMany: boolean;
20
+ hasMany: boolean;
21
+ disconnect: boolean;
22
+ getRaw: boolean;
23
+ getManyRaw: boolean;
24
+ hooks: boolean;
25
+ stats: boolean;
26
+ iterator: boolean;
27
+ };
28
+ export type IsKeyvStorageResult = {
29
+ keyvStorage: boolean;
30
+ get: boolean;
31
+ set: boolean;
32
+ delete: boolean;
33
+ clear: boolean;
34
+ has: boolean;
35
+ getMany: boolean;
36
+ setMany: boolean;
37
+ deleteMany: boolean;
38
+ hasMany: boolean;
39
+ disconnect: boolean;
40
+ iterator: boolean;
41
+ namespace: boolean;
42
+ };
43
+ export type IsKeyvCompressionResult = {
44
+ keyvCompression: boolean;
45
+ compress: boolean;
46
+ decompress: boolean;
47
+ };
48
+ export type IsKeyvSerializationResult = {
49
+ keyvSerialization: boolean;
50
+ stringify: boolean;
51
+ parse: boolean;
52
+ };
53
+ export type IsKeyvEncryptionResult = {
54
+ keyvEncryption: boolean;
55
+ encrypt: boolean;
56
+ decrypt: boolean;
57
+ };
58
+ /**
59
+ * Check if an object is a Keyv instance or has Keyv-like capabilities
60
+ * @param obj - The object to check
61
+ * @returns An object with boolean properties for each Keyv method/property
62
+ * @example
63
+ * ```typescript
64
+ * import { isKeyv } from 'keyv';
65
+ *
66
+ * isKeyv(new Map());
67
+ * // { keyv: false, get: true, set: true, delete: true, clear: true, has: true,
68
+ * // getMany: false, setMany: false, deleteMany: false, hasMany: false,
69
+ * // disconnect: false, getRaw: false, getManyRaw: false, hooks: false,
70
+ * // stats: false, iterator: false }
71
+ *
72
+ * isKeyv(new Keyv());
73
+ * // { keyv: true, get: true, set: true, delete: true, clear: true, has: true,
74
+ * // getMany: true, setMany: true, deleteMany: true, hasMany: true,
75
+ * // disconnect: true, getRaw: true, getManyRaw: true, hooks: true,
76
+ * // stats: true, iterator: false }
77
+ * ```
78
+ */
79
+ export declare function isKeyv(obj: unknown): IsKeyvResult;
80
+ /**
81
+ * Check if an object is a Keyv storage adapter or has storage adapter-like capabilities
82
+ * @param obj - The object to check
83
+ * @returns An object with boolean properties for each storage adapter method/property
84
+ * @example
85
+ * ```typescript
86
+ * import { isKeyvStorage } from 'keyv';
87
+ *
88
+ * isKeyvStorage(new Map());
89
+ * // { keyvStorage: false, get: true, set: true, delete: true, clear: true, has: true,
90
+ * // getMany: false, setMany: false, deleteMany: false, hasMany: false,
91
+ * // disconnect: false, iterator: false, namespace: false }
92
+ *
93
+ * const adapter = new KeyvRedis();
94
+ * isKeyvStorage(adapter);
95
+ * // { keyvStorage: true, get: true, set: true, delete: true, clear: true, has: true,
96
+ * // getMany: true, setMany: true, deleteMany: true, hasMany: true,
97
+ * // disconnect: true, iterator: true, namespace: true }
98
+ * ```
99
+ */
100
+ export declare function isKeyvStorage(obj: unknown): IsKeyvStorageResult;
101
+ /**
102
+ * Check if an object is a Keyv compression adapter or has compression capabilities
103
+ * @param obj - The object to check
104
+ * @returns An object with boolean properties for each compression method
105
+ * @example
106
+ * ```typescript
107
+ * import { isKeyvCompression } from 'keyv';
108
+ *
109
+ * const gzip = {
110
+ * compress: (data) => compressSync(data),
111
+ * decompress: (data) => decompressSync(data)
112
+ * };
113
+ * isKeyvCompression(gzip);
114
+ * // { keyvCompression: true, compress: true, decompress: true }
115
+ *
116
+ * isKeyvCompression({});
117
+ * // { keyvCompression: false, compress: false, decompress: false }
118
+ * ```
119
+ */
120
+ export declare function isKeyvCompression(obj: unknown): IsKeyvCompressionResult;
121
+ /**
122
+ * Check if an object is a Keyv serialization adapter or has serialization capabilities
123
+ * @param obj - The object to check
124
+ * @returns An object with boolean properties for each serialization method
125
+ * @example
126
+ * ```typescript
127
+ * import { isKeyvSerialization } from 'keyv';
128
+ *
129
+ * const json = {
130
+ * stringify: (obj) => JSON.stringify(obj),
131
+ * parse: (str) => JSON.parse(str)
132
+ * };
133
+ * isKeyvSerialization(json);
134
+ * // { keyvSerialization: true, stringify: true, parse: true }
135
+ *
136
+ * isKeyvSerialization({});
137
+ * // { keyvSerialization: false, stringify: false, parse: false }
138
+ * ```
139
+ */
140
+ export declare function isKeyvSerialization(obj: unknown): IsKeyvSerializationResult;
141
+ /**
142
+ * Check if an object is a Keyv encryption adapter or has encryption capabilities
143
+ * @param obj - The object to check
144
+ * @returns An object with boolean properties for each encryption method
145
+ * @example
146
+ * ```typescript
147
+ * import { isKeyvEncryption } from 'keyv';
148
+ *
149
+ * const aes = {
150
+ * encrypt: (data) => encryptAES(data),
151
+ * decrypt: (data) => decryptAES(data)
152
+ * };
153
+ * isKeyvEncryption(aes);
154
+ * // { keyvEncryption: true, encrypt: true, decrypt: true }
155
+ *
156
+ * isKeyvEncryption({});
157
+ * // { keyvEncryption: false, encrypt: false, decrypt: false }
158
+ * ```
159
+ */
160
+ export declare function isKeyvEncryption(obj: unknown): IsKeyvEncryptionResult;
161
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/keyValue/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,KAAK;AAEL,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAoFjD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CA0E/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,uBAAuB,CA8BvE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,yBAAyB,CA8B3E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CA8BrE"}