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,92 @@
1
+ /**
2
+ * DJB2 hash algorithm implementation.
3
+ *
4
+ * DJB2 is a non-cryptographic hash function created by Daniel J. Bernstein.
5
+ * It produces a 32-bit hash value, making it suitable for hash tables and checksums,
6
+ * but NOT for cryptographic purposes.
7
+ *
8
+ * Algorithm: hash = hash * 33 + c (where c is each byte)
9
+ * Initial value: 5381
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { Hashery } from 'hashery';
14
+ * import { DJB2 } from 'hashery/providers/djb2';
15
+ *
16
+ * const hashery = new Hashery();
17
+ * hashery.providers.add(new DJB2());
18
+ *
19
+ * const hash = await hashery.toHash({ data: 'hello' }, 'djb2');
20
+ * console.log(hash); // "7c9df5ea"
21
+ * ```
22
+ */
23
+ export class DJB2 {
24
+ /**
25
+ * The name identifier for this hash provider.
26
+ */
27
+ get name() {
28
+ return 'djb2';
29
+ }
30
+ /**
31
+ * Computes the DJB2 hash of the provided data synchronously.
32
+ *
33
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
34
+ * @returns An 8-character lowercase hexadecimal string
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const djb2 = new DJB2();
39
+ * const data = new TextEncoder().encode('hello');
40
+ * const hash = djb2.toHashSync(data);
41
+ * console.log(hash); // "7c9df5ea"
42
+ * ```
43
+ */
44
+ toHashSync(data) {
45
+ // Convert BufferSource to Uint8Array for consistent processing
46
+ let bytes;
47
+ if (data instanceof Uint8Array) {
48
+ bytes = data;
49
+ }
50
+ else if (data instanceof ArrayBuffer) {
51
+ bytes = new Uint8Array(data);
52
+ }
53
+ else if (data instanceof DataView) {
54
+ bytes = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
55
+ }
56
+ else {
57
+ // Fallback for other ArrayBufferView types (e.g., Int8Array, Uint16Array, etc.)
58
+ const view = data;
59
+ bytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
60
+ }
61
+ // DJB2 algorithm
62
+ // Initial hash value: 5381
63
+ let hash = 5381;
64
+ // Process each byte: hash = hash * 33 + byte
65
+ for (let i = 0; i < bytes.length; i++) {
66
+ hash = (hash << 5) + hash + bytes[i]; // hash * 33 + c
67
+ // Keep it as a 32-bit unsigned integer
68
+ hash = hash >>> 0;
69
+ }
70
+ // Convert to 8-character lowercase hexadecimal string
71
+ const hashHex = hash.toString(16).padStart(8, '0');
72
+ return hashHex;
73
+ }
74
+ /**
75
+ * Computes the DJB2 hash of the provided data.
76
+ *
77
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
78
+ * @returns A Promise resolving to an 8-character lowercase hexadecimal string
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const djb2 = new DJB2();
83
+ * const data = new TextEncoder().encode('hello');
84
+ * const hash = await djb2.toHash(data);
85
+ * console.log(hash); // "7c9df5ea"
86
+ * ```
87
+ */
88
+ async toHash(data) {
89
+ return this.toHashSync(data);
90
+ }
91
+ }
92
+ //# sourceMappingURL=djb2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"djb2.js","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/providers/djb2.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,IAAI;IACf;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,UAAU,CAAC,IAAkB;QAClC,+DAA+D;QAC/D,IAAI,KAAiB,CAAC;QAEtB,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;YACvC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;YACpC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,gFAAgF;YAChF,MAAM,IAAI,GAAG,IAAuB,CAAC;YACrC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;QAED,iBAAiB;QACjB,2BAA2B;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,6CAA6C;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;YACtD,uCAAuC;YACvC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,sDAAsD;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,KAAK,CAAC,MAAM,CAAC,IAAkB;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ import type { HashProvider } from '../types.ts';
2
+ /**
3
+ * FNV-1 (Fowler-Noll-Vo) hash algorithm implementation.
4
+ *
5
+ * FNV-1 is a non-cryptographic hash function created by Glenn Fowler, Landon Curt Noll,
6
+ * and Kiem-Phong Vo. It produces a 32-bit hash value, making it suitable for hash tables
7
+ * and checksums, but NOT for cryptographic purposes.
8
+ *
9
+ * Algorithm: hash = (hash * FNV_prime) XOR octet_of_data
10
+ * FNV-1 32-bit offset basis: 2166136261
11
+ * FNV-1 32-bit prime: 16777619
12
+ */
13
+ export declare class FNV1 implements HashProvider {
14
+ /**
15
+ * The name identifier for this hash provider.
16
+ */
17
+ get name(): string;
18
+ /**
19
+ * Computes the FNV-1 hash of the provided data synchronously.
20
+ *
21
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
22
+ * @returns An 8-character lowercase hexadecimal string
23
+ */
24
+ toHashSync(data: BufferSource): string;
25
+ /**
26
+ * Computes the FNV-1 hash of the provided data.
27
+ *
28
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
29
+ * @returns A Promise resolving to an 8-character lowercase hexadecimal string
30
+ */
31
+ toHash(data: BufferSource): Promise<string>;
32
+ }
33
+ //# sourceMappingURL=fnv1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fnv1.d.ts","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/providers/fnv1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,qBAAa,IAAK,YAAW,YAAY;IACvC;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAqC7C;;;;;OAKG;IACU,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;CAGzD"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * FNV-1 (Fowler-Noll-Vo) hash algorithm implementation.
3
+ *
4
+ * FNV-1 is a non-cryptographic hash function created by Glenn Fowler, Landon Curt Noll,
5
+ * and Kiem-Phong Vo. It produces a 32-bit hash value, making it suitable for hash tables
6
+ * and checksums, but NOT for cryptographic purposes.
7
+ *
8
+ * Algorithm: hash = (hash * FNV_prime) XOR octet_of_data
9
+ * FNV-1 32-bit offset basis: 2166136261
10
+ * FNV-1 32-bit prime: 16777619
11
+ */
12
+ export class FNV1 {
13
+ /**
14
+ * The name identifier for this hash provider.
15
+ */
16
+ get name() {
17
+ return 'fnv1';
18
+ }
19
+ /**
20
+ * Computes the FNV-1 hash of the provided data synchronously.
21
+ *
22
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
23
+ * @returns An 8-character lowercase hexadecimal string
24
+ */
25
+ toHashSync(data) {
26
+ // Convert BufferSource to Uint8Array for consistent processing
27
+ let bytes;
28
+ if (data instanceof Uint8Array) {
29
+ bytes = data;
30
+ }
31
+ else if (data instanceof ArrayBuffer) {
32
+ bytes = new Uint8Array(data);
33
+ }
34
+ else if (data instanceof DataView) {
35
+ bytes = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
36
+ }
37
+ else {
38
+ // Fallback for other ArrayBufferView types (e.g., Int8Array, Uint16Array, etc.)
39
+ const view = data;
40
+ bytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
41
+ }
42
+ // FNV-1 algorithm constants
43
+ const FNV_OFFSET_BASIS = 2166136261; // 32-bit offset basis
44
+ const FNV_PRIME = 16777619; // 32-bit FNV prime
45
+ // Initialize hash with FNV offset basis
46
+ let hash = FNV_OFFSET_BASIS;
47
+ // Process each byte: hash = (hash * FNV_prime) XOR byte
48
+ for (let i = 0; i < bytes.length; i++) {
49
+ hash = hash * FNV_PRIME;
50
+ hash = hash ^ bytes[i];
51
+ // Keep it as a 32-bit unsigned integer
52
+ hash = hash >>> 0;
53
+ }
54
+ // Convert to 8-character lowercase hexadecimal string
55
+ const hashHex = hash.toString(16).padStart(8, '0');
56
+ return hashHex;
57
+ }
58
+ /**
59
+ * Computes the FNV-1 hash of the provided data.
60
+ *
61
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
62
+ * @returns A Promise resolving to an 8-character lowercase hexadecimal string
63
+ */
64
+ async toHash(data) {
65
+ return this.toHashSync(data);
66
+ }
67
+ }
68
+ //# sourceMappingURL=fnv1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fnv1.js","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/providers/fnv1.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,IAAI;IACf;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,IAAkB;QAClC,+DAA+D;QAC/D,IAAI,KAAiB,CAAC;QAEtB,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;YACvC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;YACpC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,gFAAgF;YAChF,MAAM,IAAI,GAAG,IAAuB,CAAC;YACrC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;QAED,4BAA4B;QAC5B,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,sBAAsB;QAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,mBAAmB;QAE/C,wCAAwC;QACxC,IAAI,IAAI,GAAG,gBAAgB,CAAC;QAE5B,wDAAwD;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;YACxB,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,uCAAuC;YACvC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,sDAAsD;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,IAAkB;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,81 @@
1
+ import type { HashProvider } from '../types.ts';
2
+ /**
3
+ * Murmur 32-bit hash algorithm implementation.
4
+ *
5
+ * Murmur is a non-cryptographic hash function based on MurmurHash3 by Austin Appleby.
6
+ * It produces a 32-bit hash value with excellent distribution and performance,
7
+ * making it suitable for hash tables, bloom filters, and checksums,
8
+ * but NOT for cryptographic purposes.
9
+ *
10
+ * This implementation uses the MurmurHash3_x86_32 variant.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { Hashery } from 'hashery';
15
+ * import { Murmur } from 'hashery/providers/murmur';
16
+ *
17
+ * const hashery = new Hashery();
18
+ * hashery.providers.add(new Murmur());
19
+ *
20
+ * const hash = await hashery.toHash({ data: 'hello' }, 'murmur');
21
+ * console.log(hash); // "248bfa47"
22
+ * ```
23
+ */
24
+ export declare class Murmur implements HashProvider {
25
+ private _seed;
26
+ /**
27
+ * Creates a new Murmur instance.
28
+ *
29
+ * @param seed - Optional seed value for the hash (default: 0)
30
+ */
31
+ constructor(seed?: number);
32
+ /**
33
+ * The name identifier for this hash provider.
34
+ */
35
+ get name(): string;
36
+ /**
37
+ * Gets the current seed value used for hashing.
38
+ */
39
+ get seed(): number;
40
+ /**
41
+ * Computes the Murmur 32-bit hash of the provided data synchronously.
42
+ *
43
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
44
+ * @returns An 8-character lowercase hexadecimal string
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const murmur = new Murmur();
49
+ * const data = new TextEncoder().encode('hello');
50
+ * const hash = murmur.toHashSync(data);
51
+ * console.log(hash); // "248bfa47"
52
+ * ```
53
+ */
54
+ toHashSync(data: BufferSource): string;
55
+ /**
56
+ * Computes the Murmur 32-bit hash of the provided data.
57
+ *
58
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
59
+ * @returns A Promise resolving to an 8-character lowercase hexadecimal string
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const murmur = new Murmur();
64
+ * const data = new TextEncoder().encode('hello');
65
+ * const hash = await murmur.toHash(data);
66
+ * console.log(hash); // "248bfa47"
67
+ * ```
68
+ */
69
+ toHash(data: BufferSource): Promise<string>;
70
+ /**
71
+ * 32-bit integer multiplication with proper overflow handling.
72
+ * @private
73
+ */
74
+ private _imul;
75
+ /**
76
+ * Left rotate a 32-bit integer.
77
+ * @private
78
+ */
79
+ private _rotl32;
80
+ }
81
+ //# sourceMappingURL=murmur.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"murmur.d.ts","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/providers/murmur.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,MAAO,YAAW,YAAY;IACzC,OAAO,CAAC,KAAK,CAAS;IAEtB;;;;OAIG;gBACS,IAAI,GAAE,MAAU;IAI5B;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;;;;;;;;;OAaG;IACI,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IA+E7C;;;;;;;;;;;;;OAaG;IACU,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD;;;OAGG;IACH,OAAO,CAAC,KAAK;IAqBb;;;OAGG;IACH,OAAO,CAAC,OAAO;CAGhB"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Murmur 32-bit hash algorithm implementation.
3
+ *
4
+ * Murmur is a non-cryptographic hash function based on MurmurHash3 by Austin Appleby.
5
+ * It produces a 32-bit hash value with excellent distribution and performance,
6
+ * making it suitable for hash tables, bloom filters, and checksums,
7
+ * but NOT for cryptographic purposes.
8
+ *
9
+ * This implementation uses the MurmurHash3_x86_32 variant.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { Hashery } from 'hashery';
14
+ * import { Murmur } from 'hashery/providers/murmur';
15
+ *
16
+ * const hashery = new Hashery();
17
+ * hashery.providers.add(new Murmur());
18
+ *
19
+ * const hash = await hashery.toHash({ data: 'hello' }, 'murmur');
20
+ * console.log(hash); // "248bfa47"
21
+ * ```
22
+ */
23
+ export class Murmur {
24
+ _seed;
25
+ /**
26
+ * Creates a new Murmur instance.
27
+ *
28
+ * @param seed - Optional seed value for the hash (default: 0)
29
+ */
30
+ constructor(seed = 0) {
31
+ this._seed = seed >>> 0; // Ensure it's a 32-bit unsigned integer
32
+ }
33
+ /**
34
+ * The name identifier for this hash provider.
35
+ */
36
+ get name() {
37
+ return 'murmur';
38
+ }
39
+ /**
40
+ * Gets the current seed value used for hashing.
41
+ */
42
+ get seed() {
43
+ return this._seed;
44
+ }
45
+ /**
46
+ * Computes the Murmur 32-bit hash of the provided data synchronously.
47
+ *
48
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
49
+ * @returns An 8-character lowercase hexadecimal string
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const murmur = new Murmur();
54
+ * const data = new TextEncoder().encode('hello');
55
+ * const hash = murmur.toHashSync(data);
56
+ * console.log(hash); // "248bfa47"
57
+ * ```
58
+ */
59
+ toHashSync(data) {
60
+ // Convert BufferSource to Uint8Array for consistent processing
61
+ let bytes;
62
+ if (data instanceof Uint8Array) {
63
+ bytes = data;
64
+ }
65
+ else if (data instanceof ArrayBuffer) {
66
+ bytes = new Uint8Array(data);
67
+ }
68
+ else if (data instanceof DataView) {
69
+ bytes = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
70
+ }
71
+ else {
72
+ // Fallback for other ArrayBufferView types (e.g., Int8Array, Uint16Array, etc.)
73
+ const view = data;
74
+ bytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
75
+ }
76
+ // MurmurHash3_x86_32 algorithm
77
+ const c1 = 0xcc9e2d51;
78
+ const c2 = 0x1b873593;
79
+ const length = bytes.length;
80
+ const nblocks = Math.floor(length / 4);
81
+ let h1 = this._seed;
82
+ // Process 4-byte blocks
83
+ for (let i = 0; i < nblocks; i++) {
84
+ const index = i * 4;
85
+ let k1 = (bytes[index] & 0xff) |
86
+ ((bytes[index + 1] & 0xff) << 8) |
87
+ ((bytes[index + 2] & 0xff) << 16) |
88
+ ((bytes[index + 3] & 0xff) << 24);
89
+ k1 = this._imul(k1, c1);
90
+ k1 = this._rotl32(k1, 15);
91
+ k1 = this._imul(k1, c2);
92
+ h1 ^= k1;
93
+ h1 = this._rotl32(h1, 13);
94
+ h1 = this._imul(h1, 5) + 0xe6546b64;
95
+ }
96
+ // Process remaining bytes
97
+ const tail = nblocks * 4;
98
+ let k1 = 0;
99
+ switch (length & 3) {
100
+ case 3:
101
+ k1 ^= (bytes[tail + 2] & 0xff) << 16;
102
+ // fallthrough
103
+ case 2:
104
+ k1 ^= (bytes[tail + 1] & 0xff) << 8;
105
+ // fallthrough
106
+ case 1:
107
+ k1 ^= bytes[tail] & 0xff;
108
+ k1 = this._imul(k1, c1);
109
+ k1 = this._rotl32(k1, 15);
110
+ k1 = this._imul(k1, c2);
111
+ h1 ^= k1;
112
+ }
113
+ // Finalization
114
+ h1 ^= length;
115
+ h1 ^= h1 >>> 16;
116
+ h1 = this._imul(h1, 0x85ebca6b);
117
+ h1 ^= h1 >>> 13;
118
+ h1 = this._imul(h1, 0xc2b2ae35);
119
+ h1 ^= h1 >>> 16;
120
+ // Convert to unsigned 32-bit integer
121
+ h1 = h1 >>> 0;
122
+ // Convert to 8-character lowercase hexadecimal string
123
+ const hashHex = h1.toString(16).padStart(8, '0');
124
+ return hashHex;
125
+ }
126
+ /**
127
+ * Computes the Murmur 32-bit hash of the provided data.
128
+ *
129
+ * @param data - The data to hash (Uint8Array, ArrayBuffer, or DataView)
130
+ * @returns A Promise resolving to an 8-character lowercase hexadecimal string
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const murmur = new Murmur();
135
+ * const data = new TextEncoder().encode('hello');
136
+ * const hash = await murmur.toHash(data);
137
+ * console.log(hash); // "248bfa47"
138
+ * ```
139
+ */
140
+ async toHash(data) {
141
+ return this.toHashSync(data);
142
+ }
143
+ /**
144
+ * 32-bit integer multiplication with proper overflow handling.
145
+ * @private
146
+ */
147
+ _imul(a, b) {
148
+ // Use Math.imul if available, otherwise fallback to manual implementation
149
+ /* v8 ignore next -- @preserve */
150
+ if (Math.imul) {
151
+ return Math.imul(a, b);
152
+ }
153
+ // Manual 32-bit multiplication
154
+ /* v8 ignore next -- @preserve */
155
+ const ah = (a >>> 16) & 0xffff;
156
+ /* v8 ignore next -- @preserve */
157
+ const al = a & 0xffff;
158
+ /* v8 ignore next -- @preserve */
159
+ const bh = (b >>> 16) & 0xffff;
160
+ /* v8 ignore next -- @preserve */
161
+ const bl = b & 0xffff;
162
+ /* v8 ignore next -- @preserve */
163
+ return (al * bl + (((ah * bl + al * bh) << 16) >>> 0)) | 0;
164
+ }
165
+ /**
166
+ * Left rotate a 32-bit integer.
167
+ * @private
168
+ */
169
+ _rotl32(x, r) {
170
+ return (x << r) | (x >>> (32 - r));
171
+ }
172
+ }
173
+ //# sourceMappingURL=murmur.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"murmur.js","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/providers/murmur.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,MAAM;IACT,KAAK,CAAS;IAEtB;;;;OAIG;IACH,YAAY,OAAe,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,wCAAwC;IACnE,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,UAAU,CAAC,IAAkB;QAClC,+DAA+D;QAC/D,IAAI,KAAiB,CAAC;QAEtB,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;YACvC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;YACpC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,gFAAgF;YAChF,MAAM,IAAI,GAAG,IAAuB,CAAC;YACrC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;QAED,+BAA+B;QAC/B,MAAM,EAAE,GAAG,UAAU,CAAC;QACtB,MAAM,EAAE,GAAG,UAAU,CAAC;QACtB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEpB,wBAAwB;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,EAAE,GACJ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBACrB,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEpC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAExB,EAAE,IAAI,EAAE,CAAC;YACT,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;QACtC,CAAC;QAED,0BAA0B;QAC1B,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,IAAI,EAAE,GAAG,CAAC,CAAC;QAEX,QAAQ,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC;gBACJ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,cAAc;YACd,KAAK,CAAC;gBACJ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,cAAc;YACd,KAAK,CAAC;gBACJ,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACzB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,EAAE,IAAI,EAAE,CAAC;QACb,CAAC;QAED,eAAe;QACf,EAAE,IAAI,MAAM,CAAC;QAEb,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAChC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAChC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAEhB,qCAAqC;QACrC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAEd,sDAAsD;QACtD,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,KAAK,CAAC,MAAM,CAAC,IAAkB;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,CAAS,EAAE,CAAS;QAChC,0EAA0E;QAC1E,iCAAiC;QACjC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,+BAA+B;QAC/B,iCAAiC;QACjC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;QAC/B,iCAAiC;QACjC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;QACtB,iCAAiC;QACjC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;QAC/B,iCAAiC;QACjC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;QAEtB,iCAAiC;QACjC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,CAAS,EAAE,CAAS;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,126 @@
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 { HashProvider, HashProvidersGetOptions, HashProvidersOptions } from './types.ts';
10
+ /**
11
+ * Manages a collection of hash providers for the Hashery system.
12
+ * Provides methods to add, remove, and load multiple hash providers.
13
+ */
14
+ export declare class HashProviders {
15
+ private _providers;
16
+ private _getFuzzy;
17
+ /**
18
+ * Creates a new HashProviders instance.
19
+ * @param options - Optional configuration including initial providers to load
20
+ * @example
21
+ * ```ts
22
+ * const providers = new HashProviders({
23
+ * providers: [{ name: 'custom', toHash: async (data) => '...' }]
24
+ * });
25
+ * ```
26
+ */
27
+ constructor(options?: HashProvidersOptions);
28
+ /**
29
+ * Loads multiple hash providers at once.
30
+ * Each provider is added to the internal map using its name as the key.
31
+ * @param providers - Array of HashProvider objects to load
32
+ * @example
33
+ * ```ts
34
+ * const providers = new HashProviders();
35
+ * providers.loadProviders([
36
+ * { name: 'md5', toHash: async (data) => '...' },
37
+ * { name: 'sha1', toHash: async (data) => '...' }
38
+ * ]);
39
+ * ```
40
+ */
41
+ loadProviders(providers: Array<HashProvider>): void;
42
+ /**
43
+ * Gets the internal Map of all registered hash providers.
44
+ * @returns Map of provider names to HashProvider objects
45
+ */
46
+ get providers(): Map<string, HashProvider>;
47
+ /**
48
+ * Sets the internal Map of hash providers, replacing all existing providers.
49
+ * @param providers - Map of provider names to HashProvider objects
50
+ */
51
+ set providers(providers: Map<string, HashProvider>);
52
+ /**
53
+ * Gets an array of all provider names.
54
+ * @returns Array of provider names
55
+ * @example
56
+ * ```ts
57
+ * const providers = new HashProviders();
58
+ * providers.add({ name: 'sha256', toHash: async (data) => '...' });
59
+ * providers.add({ name: 'md5', toHash: async (data) => '...' });
60
+ * console.log(providers.names); // ['sha256', 'md5']
61
+ * ```
62
+ */
63
+ get names(): Array<string>;
64
+ /**
65
+ * Gets a hash provider by name with optional fuzzy matching.
66
+ *
67
+ * Fuzzy matching (enabled by default) attempts to find providers by:
68
+ * 1. Exact match (after trimming whitespace)
69
+ * 2. Case-insensitive match (lowercase)
70
+ * 3. Dash-removed match (e.g., "SHA-256" matches "sha256")
71
+ *
72
+ * @param name - The name of the provider to retrieve
73
+ * @param options - Optional configuration for the get operation
74
+ * @param options.fuzzy - Enable/disable fuzzy matching (overrides constructor setting)
75
+ * @returns The HashProvider if found, undefined otherwise
76
+ * @example
77
+ * ```ts
78
+ * const providers = new HashProviders();
79
+ * providers.add({ name: 'sha256', toHash: async (data) => '...' });
80
+ *
81
+ * // Exact match
82
+ * const provider = providers.get('sha256');
83
+ *
84
+ * // Fuzzy match (case-insensitive)
85
+ * const provider2 = providers.get('SHA256');
86
+ *
87
+ * // Fuzzy match (with dash)
88
+ * const provider3 = providers.get('SHA-256');
89
+ *
90
+ * // Disable fuzzy matching
91
+ * const provider4 = providers.get('SHA256', { fuzzy: false }); // returns undefined
92
+ * ```
93
+ */
94
+ get(name: string, options?: HashProvidersGetOptions): HashProvider | undefined;
95
+ /**
96
+ * Adds a single hash provider to the collection.
97
+ * If a provider with the same name already exists, it will be replaced.
98
+ * @param provider - The HashProvider object to add
99
+ * @example
100
+ * ```ts
101
+ * const providers = new HashProviders();
102
+ * providers.add({
103
+ * name: 'custom-hash',
104
+ * toHash: async (data) => {
105
+ * // Custom hashing logic
106
+ * return 'hash-result';
107
+ * }
108
+ * });
109
+ * ```
110
+ */
111
+ add(provider: HashProvider): void;
112
+ /**
113
+ * Removes a hash provider from the collection by name.
114
+ * @param name - The name of the provider to remove
115
+ * @returns true if the provider was found and removed, false otherwise
116
+ * @example
117
+ * ```ts
118
+ * const providers = new HashProviders();
119
+ * providers.add({ name: 'custom', toHash: async (data) => '...' });
120
+ * const removed = providers.remove('custom'); // returns true
121
+ * const removed2 = providers.remove('nonexistent'); // returns false
122
+ * ```
123
+ */
124
+ remove(name: string): boolean;
125
+ }
126
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/hashing/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAEL,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE9F;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,SAAS,CAAQ;IAEzB;;;;;;;;;OASG;gBACS,OAAO,CAAC,EAAE,oBAAoB;IAU1C;;;;;;;;;;;;OAYG;IACI,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;IAMnD;;;OAGG;IACH,IAAW,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAEhD;IAED;;;OAGG;IACH,IAAW,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAExD;IAED;;;;;;;;;;OAUG;IACH,IAAW,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAEhC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,YAAY,GAAG,SAAS;IAwBrF;;;;;;;;;;;;;;;OAeG;IACI,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIxC;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGrC"}