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,199 @@
1
+ /**
2
+ * Original library: hookified (v1.15.1)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ import { Eventified } from './eventified.ts';
10
+ import type { Hook, HookEntry, HookifiedOptions } from './types.ts';
11
+ export type { Hook, HookEntry, HookifiedOptions };
12
+ export declare class Hookified extends Eventified {
13
+ private readonly _hooks;
14
+ private _throwOnHookError;
15
+ private _enforceBeforeAfter;
16
+ private _deprecatedHooks;
17
+ private _allowDeprecated;
18
+ constructor(options?: HookifiedOptions);
19
+ /**
20
+ * Gets all hooks
21
+ * @returns {Map<string, Hook[]>}
22
+ */
23
+ get hooks(): Map<string, Hook[]>;
24
+ /**
25
+ * Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
26
+ * @returns {boolean}
27
+ * @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
28
+ */
29
+ get throwHookErrors(): boolean;
30
+ /**
31
+ * Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
32
+ * @param {boolean} value
33
+ * @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
34
+ */
35
+ set throwHookErrors(value: boolean);
36
+ /**
37
+ * Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
38
+ * @returns {boolean}
39
+ */
40
+ get throwOnHookError(): boolean;
41
+ /**
42
+ * Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
43
+ * @param {boolean} value
44
+ */
45
+ set throwOnHookError(value: boolean);
46
+ /**
47
+ * Gets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
48
+ * @returns {boolean}
49
+ * @default false
50
+ */
51
+ get enforceBeforeAfter(): boolean;
52
+ /**
53
+ * Sets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
54
+ * @param {boolean} value
55
+ */
56
+ set enforceBeforeAfter(value: boolean);
57
+ /**
58
+ * Gets the map of deprecated hook names to deprecation messages.
59
+ * @returns {Map<string, string>}
60
+ */
61
+ get deprecatedHooks(): Map<string, string>;
62
+ /**
63
+ * Sets the map of deprecated hook names to deprecation messages.
64
+ * @param {Map<string, string>} value
65
+ */
66
+ set deprecatedHooks(value: Map<string, string>);
67
+ /**
68
+ * Gets whether deprecated hooks are allowed to be registered and executed. Default is true.
69
+ * @returns {boolean}
70
+ */
71
+ get allowDeprecated(): boolean;
72
+ /**
73
+ * Sets whether deprecated hooks are allowed to be registered and executed. Default is true.
74
+ * @param {boolean} value
75
+ */
76
+ set allowDeprecated(value: boolean);
77
+ /**
78
+ * Validates hook event name if enforceBeforeAfter is enabled
79
+ * @param {string} event - The event name to validate
80
+ * @throws {Error} If enforceBeforeAfter is true and event doesn't start with 'before' or 'after'
81
+ */
82
+ private validateHookName;
83
+ /**
84
+ * Checks if a hook is deprecated and emits a warning if it is
85
+ * @param {string} event - The event name to check
86
+ * @returns {boolean} - Returns true if the hook should proceed, false if it should be blocked
87
+ */
88
+ private checkDeprecatedHook;
89
+ /**
90
+ * Adds a handler function for a specific event
91
+ * @param {string} event
92
+ * @param {Hook} handler - this can be async or sync
93
+ * @returns {void}
94
+ */
95
+ onHook(event: string, handler: Hook): void;
96
+ /**
97
+ * Adds a handler function for a specific event
98
+ * @param {HookEntry} hookEntry
99
+ * @returns {void}
100
+ */
101
+ onHookEntry(hookEntry: HookEntry): void;
102
+ /**
103
+ * Alias for onHook. This is provided for compatibility with other libraries that use the `addHook` method.
104
+ * @param {string} event
105
+ * @param {Hook} handler - this can be async or sync
106
+ * @returns {void}
107
+ */
108
+ addHook(event: string, handler: Hook): void;
109
+ /**
110
+ * Adds a handler function for a specific event
111
+ * @param {Array<HookEntry>} hooks
112
+ * @returns {void}
113
+ */
114
+ onHooks(hooks: HookEntry[]): void;
115
+ /**
116
+ * Adds a handler function for a specific event that runs before all other handlers
117
+ * @param {string} event
118
+ * @param {Hook} handler - this can be async or sync
119
+ * @returns {void}
120
+ */
121
+ prependHook(event: string, handler: Hook): void;
122
+ /**
123
+ * Adds a handler that only executes once for a specific event before all other handlers
124
+ * @param event
125
+ * @param handler
126
+ */
127
+ prependOnceHook(event: string, handler: Hook): void;
128
+ /**
129
+ * Adds a handler that only executes once for a specific event
130
+ * @param event
131
+ * @param handler
132
+ */
133
+ onceHook(event: string, handler: Hook): void;
134
+ /**
135
+ * Removes a handler function for a specific event
136
+ * @param {string} event
137
+ * @param {Hook} handler
138
+ * @returns {void}
139
+ */
140
+ removeHook(event: string, handler: Hook): void;
141
+ /**
142
+ * Removes all handlers for a specific event
143
+ * @param {Array<HookEntry>} hooks
144
+ * @returns {void}
145
+ */
146
+ removeHooks(hooks: HookEntry[]): void;
147
+ /**
148
+ * Calls all handlers for a specific event
149
+ * @param {string} event
150
+ * @param {T[]} arguments_
151
+ * @returns {Promise<void>}
152
+ */
153
+ hook<T>(event: string, ...arguments_: T[]): Promise<void>;
154
+ /**
155
+ * Calls all synchronous handlers for a specific event.
156
+ * Async handlers (declared with `async` keyword) are silently skipped.
157
+ *
158
+ * Note: The `hook` method is preferred as it executes both sync and async functions.
159
+ * Use `hookSync` only when you specifically need synchronous execution.
160
+ * @param {string} event
161
+ * @param {T[]} arguments_
162
+ * @returns {void}
163
+ */
164
+ hookSync<T>(event: string, ...arguments_: T[]): void;
165
+ /**
166
+ * Prepends the word `before` to your hook. Example is event is `test`, the before hook is `before:test`.
167
+ * @param {string} event - The event name
168
+ * @param {T[]} arguments_ - The arguments to pass to the hook
169
+ */
170
+ beforeHook<T>(event: string, ...arguments_: T[]): Promise<void>;
171
+ /**
172
+ * Prepends the word `after` to your hook. Example is event is `test`, the after hook is `after:test`.
173
+ * @param {string} event - The event name
174
+ * @param {T[]} arguments_ - The arguments to pass to the hook
175
+ */
176
+ afterHook<T>(event: string, ...arguments_: T[]): Promise<void>;
177
+ /**
178
+ * Calls all handlers for a specific event. This is an alias for `hook` and is provided for
179
+ * compatibility with other libraries that use the `callHook` method.
180
+ * @param {string} event
181
+ * @param {T[]} arguments_
182
+ * @returns {Promise<void>}
183
+ */
184
+ callHook<T>(event: string, ...arguments_: T[]): Promise<void>;
185
+ /**
186
+ * Gets all hooks for a specific event
187
+ * @param {string} event
188
+ * @returns {Hook[]}
189
+ */
190
+ getHooks(event: string): Hook[] | undefined;
191
+ /**
192
+ * Removes all hooks
193
+ * @returns {void}
194
+ */
195
+ clearHooks(): void;
196
+ }
197
+ export { Eventified } from './eventified.ts';
198
+ export type { EventEmitterOptions, EventListener, IEventEmitter, Logger } from './types.ts';
199
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/hooks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,383 @@
1
+ /**
2
+ * Original library: hookified (v1.15.1)
3
+ * - Copyright (c) Jared Wray
4
+ *
5
+ * Modified and integrated in "Inray":
6
+ * - Evgeniy Bushin
7
+ */
8
+ /***/
9
+ import { Eventified } from "./eventified.js";
10
+ export class Hookified extends Eventified {
11
+ _hooks;
12
+ _throwOnHookError = false;
13
+ _enforceBeforeAfter = false;
14
+ _deprecatedHooks;
15
+ _allowDeprecated = true;
16
+ constructor(options) {
17
+ super({
18
+ logger: options?.logger,
19
+ throwOnEmitError: options?.throwOnEmitError,
20
+ throwOnEmptyListeners: options?.throwOnEmptyListeners
21
+ });
22
+ this._hooks = new Map();
23
+ this._deprecatedHooks = options?.deprecatedHooks ? new Map(options.deprecatedHooks) : new Map();
24
+ if (options?.throwOnHookError !== undefined) {
25
+ this._throwOnHookError = options.throwOnHookError;
26
+ }
27
+ else if (options?.throwHookErrors !== undefined) {
28
+ this._throwOnHookError = options.throwHookErrors;
29
+ }
30
+ if (options?.enforceBeforeAfter !== undefined) {
31
+ this._enforceBeforeAfter = options.enforceBeforeAfter;
32
+ }
33
+ if (options?.allowDeprecated !== undefined) {
34
+ this._allowDeprecated = options.allowDeprecated;
35
+ }
36
+ }
37
+ /**
38
+ * Gets all hooks
39
+ * @returns {Map<string, Hook[]>}
40
+ */
41
+ get hooks() {
42
+ return this._hooks;
43
+ }
44
+ /**
45
+ * Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
46
+ * @returns {boolean}
47
+ * @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
48
+ */
49
+ get throwHookErrors() {
50
+ return this._throwOnHookError;
51
+ }
52
+ /**
53
+ * Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
54
+ * @param {boolean} value
55
+ * @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
56
+ */
57
+ set throwHookErrors(value) {
58
+ this._throwOnHookError = value;
59
+ }
60
+ /**
61
+ * Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
62
+ * @returns {boolean}
63
+ */
64
+ get throwOnHookError() {
65
+ return this._throwOnHookError;
66
+ }
67
+ /**
68
+ * Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
69
+ * @param {boolean} value
70
+ */
71
+ set throwOnHookError(value) {
72
+ this._throwOnHookError = value;
73
+ }
74
+ /**
75
+ * Gets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
76
+ * @returns {boolean}
77
+ * @default false
78
+ */
79
+ get enforceBeforeAfter() {
80
+ return this._enforceBeforeAfter;
81
+ }
82
+ /**
83
+ * Sets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
84
+ * @param {boolean} value
85
+ */
86
+ set enforceBeforeAfter(value) {
87
+ this._enforceBeforeAfter = value;
88
+ }
89
+ /**
90
+ * Gets the map of deprecated hook names to deprecation messages.
91
+ * @returns {Map<string, string>}
92
+ */
93
+ get deprecatedHooks() {
94
+ return this._deprecatedHooks;
95
+ }
96
+ /**
97
+ * Sets the map of deprecated hook names to deprecation messages.
98
+ * @param {Map<string, string>} value
99
+ */
100
+ set deprecatedHooks(value) {
101
+ this._deprecatedHooks = value;
102
+ }
103
+ /**
104
+ * Gets whether deprecated hooks are allowed to be registered and executed. Default is true.
105
+ * @returns {boolean}
106
+ */
107
+ get allowDeprecated() {
108
+ return this._allowDeprecated;
109
+ }
110
+ /**
111
+ * Sets whether deprecated hooks are allowed to be registered and executed. Default is true.
112
+ * @param {boolean} value
113
+ */
114
+ set allowDeprecated(value) {
115
+ this._allowDeprecated = value;
116
+ }
117
+ /**
118
+ * Validates hook event name if enforceBeforeAfter is enabled
119
+ * @param {string} event - The event name to validate
120
+ * @throws {Error} If enforceBeforeAfter is true and event doesn't start with 'before' or 'after'
121
+ */
122
+ validateHookName(event) {
123
+ if (this._enforceBeforeAfter) {
124
+ const eventValue = event.trim().toLocaleLowerCase();
125
+ if (!eventValue.startsWith('before') && !eventValue.startsWith('after')) {
126
+ throw new Error(`Hook event "${event}" must start with "before" or "after" when enforceBeforeAfter is enabled`);
127
+ }
128
+ }
129
+ }
130
+ /**
131
+ * Checks if a hook is deprecated and emits a warning if it is
132
+ * @param {string} event - The event name to check
133
+ * @returns {boolean} - Returns true if the hook should proceed, false if it should be blocked
134
+ */
135
+ checkDeprecatedHook(event) {
136
+ if (this._deprecatedHooks.has(event)) {
137
+ const message = this._deprecatedHooks.get(event);
138
+ const warningMessage = `Hook "${event}" is deprecated${message ? `: ${message}` : ''}`;
139
+ // Emit deprecation warning event
140
+ this.emit('warn', { hook: event, message: warningMessage });
141
+ // Return false if deprecated hooks are not allowed
142
+ return this._allowDeprecated;
143
+ }
144
+ return true;
145
+ }
146
+ /**
147
+ * Adds a handler function for a specific event
148
+ * @param {string} event
149
+ * @param {Hook} handler - this can be async or sync
150
+ * @returns {void}
151
+ */
152
+ onHook(event, handler) {
153
+ this.onHookEntry({ event, handler });
154
+ }
155
+ /**
156
+ * Adds a handler function for a specific event
157
+ * @param {HookEntry} hookEntry
158
+ * @returns {void}
159
+ */
160
+ onHookEntry(hookEntry) {
161
+ this.validateHookName(hookEntry.event);
162
+ if (!this.checkDeprecatedHook(hookEntry.event)) {
163
+ return; // Skip registration if deprecated hooks are not allowed
164
+ }
165
+ const eventHandlers = this._hooks.get(hookEntry.event);
166
+ if (eventHandlers) {
167
+ eventHandlers.push(hookEntry.handler);
168
+ }
169
+ else {
170
+ this._hooks.set(hookEntry.event, [hookEntry.handler]);
171
+ }
172
+ }
173
+ /**
174
+ * Alias for onHook. This is provided for compatibility with other libraries that use the `addHook` method.
175
+ * @param {string} event
176
+ * @param {Hook} handler - this can be async or sync
177
+ * @returns {void}
178
+ */
179
+ addHook(event, handler) {
180
+ this.onHookEntry({ event, handler });
181
+ }
182
+ /**
183
+ * Adds a handler function for a specific event
184
+ * @param {Array<HookEntry>} hooks
185
+ * @returns {void}
186
+ */
187
+ onHooks(hooks) {
188
+ for (const hook of hooks) {
189
+ this.onHook(hook.event, hook.handler);
190
+ }
191
+ }
192
+ /**
193
+ * Adds a handler function for a specific event that runs before all other handlers
194
+ * @param {string} event
195
+ * @param {Hook} handler - this can be async or sync
196
+ * @returns {void}
197
+ */
198
+ prependHook(event, handler) {
199
+ this.validateHookName(event);
200
+ if (!this.checkDeprecatedHook(event)) {
201
+ return; // Skip registration if deprecated hooks are not allowed
202
+ }
203
+ const eventHandlers = this._hooks.get(event);
204
+ if (eventHandlers) {
205
+ eventHandlers.unshift(handler);
206
+ }
207
+ else {
208
+ this._hooks.set(event, [handler]);
209
+ }
210
+ }
211
+ /**
212
+ * Adds a handler that only executes once for a specific event before all other handlers
213
+ * @param event
214
+ * @param handler
215
+ */
216
+ prependOnceHook(event, handler) {
217
+ this.validateHookName(event);
218
+ if (!this.checkDeprecatedHook(event)) {
219
+ return; // Skip registration if deprecated hooks are not allowed
220
+ }
221
+ // biome-ignore lint/suspicious/noExplicitAny: this is for any parameter compatibility
222
+ const hook = async (...arguments_) => {
223
+ this.removeHook(event, hook);
224
+ return handler(...arguments_);
225
+ };
226
+ this.prependHook(event, hook);
227
+ }
228
+ /**
229
+ * Adds a handler that only executes once for a specific event
230
+ * @param event
231
+ * @param handler
232
+ */
233
+ onceHook(event, handler) {
234
+ this.validateHookName(event);
235
+ if (!this.checkDeprecatedHook(event)) {
236
+ return; // Skip registration if deprecated hooks are not allowed
237
+ }
238
+ // biome-ignore lint/suspicious/noExplicitAny: this is for any parameter compatibility
239
+ const hook = async (...arguments_) => {
240
+ this.removeHook(event, hook);
241
+ return handler(...arguments_);
242
+ };
243
+ this.onHook(event, hook);
244
+ }
245
+ /**
246
+ * Removes a handler function for a specific event
247
+ * @param {string} event
248
+ * @param {Hook} handler
249
+ * @returns {void}
250
+ */
251
+ removeHook(event, handler) {
252
+ this.validateHookName(event);
253
+ if (!this.checkDeprecatedHook(event)) {
254
+ return; // Skip removal if deprecated hooks are not allowed
255
+ }
256
+ const eventHandlers = this._hooks.get(event);
257
+ if (eventHandlers) {
258
+ const index = eventHandlers.indexOf(handler);
259
+ if (index !== -1) {
260
+ eventHandlers.splice(index, 1);
261
+ }
262
+ }
263
+ }
264
+ /**
265
+ * Removes all handlers for a specific event
266
+ * @param {Array<HookEntry>} hooks
267
+ * @returns {void}
268
+ */
269
+ removeHooks(hooks) {
270
+ for (const hook of hooks) {
271
+ this.removeHook(hook.event, hook.handler);
272
+ }
273
+ }
274
+ /**
275
+ * Calls all handlers for a specific event
276
+ * @param {string} event
277
+ * @param {T[]} arguments_
278
+ * @returns {Promise<void>}
279
+ */
280
+ async hook(event, ...arguments_) {
281
+ this.validateHookName(event);
282
+ if (!this.checkDeprecatedHook(event)) {
283
+ return; // Skip execution if deprecated hooks are not allowed
284
+ }
285
+ const eventHandlers = this._hooks.get(event);
286
+ if (eventHandlers) {
287
+ for (const handler of eventHandlers) {
288
+ try {
289
+ await handler(...arguments_);
290
+ }
291
+ catch (error) {
292
+ const message = `${event}: ${error.message}`;
293
+ this.emit('error', new Error(message));
294
+ if (this._throwOnHookError) {
295
+ throw new Error(message);
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
301
+ /**
302
+ * Calls all synchronous handlers for a specific event.
303
+ * Async handlers (declared with `async` keyword) are silently skipped.
304
+ *
305
+ * Note: The `hook` method is preferred as it executes both sync and async functions.
306
+ * Use `hookSync` only when you specifically need synchronous execution.
307
+ * @param {string} event
308
+ * @param {T[]} arguments_
309
+ * @returns {void}
310
+ */
311
+ hookSync(event, ...arguments_) {
312
+ this.validateHookName(event);
313
+ if (!this.checkDeprecatedHook(event)) {
314
+ return;
315
+ }
316
+ const eventHandlers = this._hooks.get(event);
317
+ if (eventHandlers) {
318
+ for (const handler of eventHandlers) {
319
+ // Skip async functions silently
320
+ if (handler.constructor.name === 'AsyncFunction') {
321
+ continue;
322
+ }
323
+ try {
324
+ handler(...arguments_);
325
+ }
326
+ catch (error) {
327
+ const message = `${event}: ${error.message}`;
328
+ this.emit('error', new Error(message));
329
+ if (this._throwOnHookError) {
330
+ throw new Error(message);
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+ /**
337
+ * Prepends the word `before` to your hook. Example is event is `test`, the before hook is `before:test`.
338
+ * @param {string} event - The event name
339
+ * @param {T[]} arguments_ - The arguments to pass to the hook
340
+ */
341
+ async beforeHook(event, ...arguments_) {
342
+ await this.hook(`before:${event}`, ...arguments_);
343
+ }
344
+ /**
345
+ * Prepends the word `after` to your hook. Example is event is `test`, the after hook is `after:test`.
346
+ * @param {string} event - The event name
347
+ * @param {T[]} arguments_ - The arguments to pass to the hook
348
+ */
349
+ async afterHook(event, ...arguments_) {
350
+ await this.hook(`after:${event}`, ...arguments_);
351
+ }
352
+ /**
353
+ * Calls all handlers for a specific event. This is an alias for `hook` and is provided for
354
+ * compatibility with other libraries that use the `callHook` method.
355
+ * @param {string} event
356
+ * @param {T[]} arguments_
357
+ * @returns {Promise<void>}
358
+ */
359
+ async callHook(event, ...arguments_) {
360
+ await this.hook(event, ...arguments_);
361
+ }
362
+ /**
363
+ * Gets all hooks for a specific event
364
+ * @param {string} event
365
+ * @returns {Hook[]}
366
+ */
367
+ getHooks(event) {
368
+ this.validateHookName(event);
369
+ if (!this.checkDeprecatedHook(event)) {
370
+ return undefined; // Return undefined if deprecated hooks are not allowed
371
+ }
372
+ return this._hooks.get(event);
373
+ }
374
+ /**
375
+ * Removes all hooks
376
+ * @returns {void}
377
+ */
378
+ clearHooks() {
379
+ this._hooks.clear();
380
+ }
381
+ }
382
+ export { Eventified } from "./eventified.js";
383
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/hooks/index.ts"],"names":[],"mappings":"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"}