@daiso-tech/core 0.33.0 → 0.35.0

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 (365) hide show
  1. package/README.md +66 -45
  2. package/dist/async/_module-exports.d.ts +1 -1
  3. package/dist/async/_module-exports.js +1 -1
  4. package/dist/async/_module-exports.js.map +1 -1
  5. package/dist/async/async.errors.d.ts +27 -19
  6. package/dist/async/async.errors.js +33 -20
  7. package/dist/async/async.errors.js.map +1 -1
  8. package/dist/async/backof-policies/_shared.d.ts +6 -2
  9. package/dist/async/backof-policies/_shared.js +1 -0
  10. package/dist/async/backof-policies/_shared.js.map +1 -1
  11. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +2 -2
  12. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js +1 -1
  13. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +2 -2
  14. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js +1 -1
  15. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +2 -2
  16. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js +1 -1
  17. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +2 -2
  18. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js +1 -1
  19. package/dist/async/middlewares/_module.d.ts +8 -0
  20. package/dist/async/middlewares/_module.js +9 -0
  21. package/dist/async/middlewares/_module.js.map +1 -0
  22. package/dist/async/middlewares/_shared.d.ts +10 -0
  23. package/dist/async/middlewares/_shared.js +5 -0
  24. package/dist/async/middlewares/_shared.js.map +1 -0
  25. package/dist/async/middlewares/bulkhead/_module.d.ts +1 -0
  26. package/dist/async/middlewares/bulkhead/_module.js +2 -0
  27. package/dist/async/middlewares/bulkhead/_module.js.map +1 -0
  28. package/dist/async/middlewares/bulkhead/bulkhead.middleware.d.ts +80 -0
  29. package/dist/async/middlewares/bulkhead/bulkhead.middleware.js +46 -0
  30. package/dist/async/middlewares/bulkhead/bulkhead.middleware.js.map +1 -0
  31. package/dist/async/middlewares/dynamic/_module.d.ts +1 -0
  32. package/dist/async/middlewares/dynamic/_module.js +2 -0
  33. package/dist/async/middlewares/dynamic/_module.js.map +1 -0
  34. package/dist/async/middlewares/dynamic/dynamic.middleware.d.ts +34 -0
  35. package/dist/async/middlewares/dynamic/dynamic.middleware.js +36 -0
  36. package/dist/async/middlewares/dynamic/dynamic.middleware.js.map +1 -0
  37. package/dist/async/middlewares/fallback/_module.d.ts +1 -0
  38. package/dist/async/middlewares/fallback/_module.js +2 -0
  39. package/dist/async/middlewares/fallback/_module.js.map +1 -0
  40. package/dist/async/middlewares/fallback/fallback.middleware.d.ts +78 -0
  41. package/dist/async/middlewares/fallback/fallback.middleware.js +52 -0
  42. package/dist/async/middlewares/fallback/fallback.middleware.js.map +1 -0
  43. package/dist/async/middlewares/hedging/_module.d.ts +2 -0
  44. package/dist/async/middlewares/hedging/_module.js +3 -0
  45. package/dist/async/middlewares/hedging/_module.js.map +1 -0
  46. package/dist/async/middlewares/hedging/_shared.d.ts +93 -0
  47. package/dist/async/middlewares/hedging/_shared.js +5 -0
  48. package/dist/async/middlewares/hedging/_shared.js.map +1 -0
  49. package/dist/async/middlewares/hedging/concurrent-hedging/_module.d.ts +1 -0
  50. package/dist/async/middlewares/hedging/concurrent-hedging/_module.js +2 -0
  51. package/dist/async/middlewares/hedging/concurrent-hedging/_module.js.map +1 -0
  52. package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.d.ts +51 -0
  53. package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js +138 -0
  54. package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js.map +1 -0
  55. package/dist/async/middlewares/hedging/sequential-hedging/_module.d.ts +1 -0
  56. package/dist/async/middlewares/hedging/sequential-hedging/_module.js +2 -0
  57. package/dist/async/middlewares/hedging/sequential-hedging/_module.js.map +1 -0
  58. package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.d.ts +51 -0
  59. package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js +104 -0
  60. package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js.map +1 -0
  61. package/dist/async/middlewares/observe/_module.d.ts +1 -0
  62. package/dist/async/middlewares/observe/_module.js +2 -0
  63. package/dist/async/middlewares/observe/_module.js.map +1 -0
  64. package/dist/async/middlewares/observe/observe.middleware.d.ts +130 -0
  65. package/dist/async/middlewares/observe/observe.middleware.js +80 -0
  66. package/dist/async/middlewares/observe/observe.middleware.js.map +1 -0
  67. package/dist/async/middlewares/retry/_module.d.ts +1 -0
  68. package/dist/async/middlewares/retry/_module.js +2 -0
  69. package/dist/async/middlewares/retry/_module.js.map +1 -0
  70. package/dist/async/middlewares/retry/retry.middleware.d.ts +117 -0
  71. package/dist/async/middlewares/retry/retry.middleware.js +82 -0
  72. package/dist/async/middlewares/retry/retry.middleware.js.map +1 -0
  73. package/dist/async/middlewares/timeout/_module.d.ts +1 -0
  74. package/dist/async/middlewares/timeout/_module.js +2 -0
  75. package/dist/async/middlewares/timeout/_module.js.map +1 -0
  76. package/dist/async/middlewares/timeout/timeout.middleware.d.ts +83 -0
  77. package/dist/async/middlewares/timeout/timeout.middleware.js +60 -0
  78. package/dist/async/middlewares/timeout/timeout.middleware.js.map +1 -0
  79. package/dist/async/utilities/_module.d.ts +3 -4
  80. package/dist/async/utilities/_module.js +3 -4
  81. package/dist/async/utilities/_module.js.map +1 -1
  82. package/dist/async/utilities/abort-and-fail/_module.d.ts +1 -0
  83. package/dist/async/utilities/abort-and-fail/_module.js +2 -0
  84. package/dist/async/utilities/abort-and-fail/_module.js.map +1 -0
  85. package/dist/async/utilities/abort-and-fail/abort-and-fail.d.ts +7 -0
  86. package/dist/async/utilities/{abort → abort-and-fail}/abort-and-fail.js +6 -6
  87. package/dist/async/utilities/abort-and-fail/abort-and-fail.js.map +1 -0
  88. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +37 -194
  89. package/dist/async/utilities/lazy-promise/lazy-promise.js +62 -359
  90. package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  91. package/dist/async/utilities/promise-queue/_module.d.ts +1 -0
  92. package/dist/async/utilities/promise-queue/_module.js +2 -0
  93. package/dist/async/utilities/promise-queue/_module.js.map +1 -0
  94. package/dist/async/utilities/promise-queue/promise-queue.d.ts +32 -0
  95. package/dist/async/utilities/promise-queue/promise-queue.js +107 -0
  96. package/dist/async/utilities/promise-queue/promise-queue.js.map +1 -0
  97. package/dist/async/utilities/timeout-and-fail/_module.d.ts +1 -0
  98. package/dist/async/utilities/timeout-and-fail/_module.js +2 -0
  99. package/dist/async/utilities/timeout-and-fail/_module.js.map +1 -0
  100. package/dist/async/utilities/timeout-and-fail/timeout-and-fail.d.ts +7 -0
  101. package/dist/async/utilities/timeout-and-fail/timeout-and-fail.js +19 -0
  102. package/dist/async/utilities/timeout-and-fail/timeout-and-fail.js.map +1 -0
  103. package/dist/cache/contracts/cache-adapter.contract.d.ts +14 -14
  104. package/dist/cache/contracts/cache-factory.contract.d.ts +3 -3
  105. package/dist/cache/contracts/cache.contract.d.ts +73 -73
  106. package/dist/cache/contracts/cache.errors.d.ts +7 -7
  107. package/dist/cache/contracts/cache.errors.js +7 -7
  108. package/dist/cache/contracts/cache.events.d.ts +54 -58
  109. package/dist/cache/contracts/cache.events.js +6 -104
  110. package/dist/cache/contracts/cache.events.js.map +1 -1
  111. package/dist/cache/contracts/database-cache-adapter.contract.d.ts +16 -16
  112. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +3 -3
  113. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +2 -2
  114. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +3 -9
  115. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +3 -9
  116. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  117. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +4 -4
  118. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +3 -3
  119. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +2 -2
  120. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +2 -2
  121. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +3 -3
  122. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +2 -2
  123. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +3 -3
  124. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +2 -2
  125. package/dist/cache/implementations/derivables/cache/cache.d.ts +26 -27
  126. package/dist/cache/implementations/derivables/cache/cache.js +102 -91
  127. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  128. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +5 -4
  129. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js +2 -1
  130. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  131. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.d.ts +3 -3
  132. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js +2 -2
  133. package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +3 -3
  134. package/dist/cache/implementations/test-utilities/cache.test-suite.js +140 -149
  135. package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
  136. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.d.ts +3 -3
  137. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +2 -2
  138. package/dist/collection/contracts/_shared/compartor.type.d.ts +1 -1
  139. package/dist/collection/contracts/_shared/cross-join-result.type.d.ts +1 -1
  140. package/dist/collection/contracts/_shared/ensure-map.type.d.ts +1 -1
  141. package/dist/collection/contracts/_shared/ensure-record.type.d.ts +1 -1
  142. package/dist/collection/contracts/_shared/foreach.type.d.ts +2 -2
  143. package/dist/collection/contracts/_shared/map.type.d.ts +2 -2
  144. package/dist/collection/contracts/_shared/modifier.type.d.ts +2 -2
  145. package/dist/collection/contracts/_shared/predicate.type.d.ts +7 -7
  146. package/dist/collection/contracts/_shared/reduce.type.d.ts +2 -2
  147. package/dist/collection/contracts/_shared/tap.type.d.ts +2 -2
  148. package/dist/collection/contracts/_shared/transform.type.d.ts +2 -2
  149. package/dist/collection/contracts/async-collection.contract.d.ts +109 -198
  150. package/dist/collection/contracts/collection.contract.d.ts +103 -103
  151. package/dist/collection/contracts/collection.errors.d.ts +11 -11
  152. package/dist/collection/contracts/collection.errors.js +11 -11
  153. package/dist/collection/implementations/_shared.d.ts +8 -8
  154. package/dist/collection/implementations/_shared.js +8 -8
  155. package/dist/collection/implementations/async-iterable-collection/_shared/_module.d.ts +0 -4
  156. package/dist/collection/implementations/async-iterable-collection/_shared/_module.js +0 -4
  157. package/dist/collection/implementations/async-iterable-collection/_shared/_module.js.map +1 -1
  158. package/dist/collection/implementations/async-iterable-collection/_shared/async-cross-join-iterable.js +21 -19
  159. package/dist/collection/implementations/async-iterable-collection/_shared/async-cross-join-iterable.js.map +1 -1
  160. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +15 -19
  161. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +15 -30
  162. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  163. package/dist/collection/implementations/iterable-collection/_shared/cross-join-iterable.d.ts +3 -3
  164. package/dist/collection/implementations/iterable-collection/_shared/cross-join-iterable.js +18 -20
  165. package/dist/collection/implementations/iterable-collection/_shared/cross-join-iterable.js.map +1 -1
  166. package/dist/collection/implementations/iterable-collection/iterable-collection.d.ts +11 -12
  167. package/dist/collection/implementations/iterable-collection/iterable-collection.js +11 -12
  168. package/dist/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  169. package/dist/collection/implementations/list-collection/list-collection.d.ts +11 -11
  170. package/dist/collection/implementations/list-collection/list-collection.js +24 -30
  171. package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
  172. package/dist/event-bus/contracts/_module-exports.d.ts +0 -1
  173. package/dist/event-bus/contracts/_module-exports.js +0 -1
  174. package/dist/event-bus/contracts/_module-exports.js.map +1 -1
  175. package/dist/event-bus/contracts/event-bus-adapter.contract.d.ts +13 -8
  176. package/dist/event-bus/contracts/event-bus-factory.contract.d.ts +6 -7
  177. package/dist/event-bus/contracts/event-bus-factory.contract.js.map +1 -1
  178. package/dist/event-bus/contracts/event-bus.contract.d.ts +30 -41
  179. package/dist/event-bus/contracts/event-bus.errors.d.ts +8 -8
  180. package/dist/event-bus/contracts/event-bus.errors.js +8 -8
  181. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +3 -3
  182. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +3 -3
  183. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +2 -2
  184. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +2 -2
  185. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +3 -3
  186. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +2 -2
  187. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +15 -15
  188. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +32 -32
  189. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  190. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +17 -10
  191. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +13 -6
  192. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  193. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.d.ts +3 -5
  194. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +15 -22
  195. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js.map +1 -1
  196. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.d.ts +3 -5
  197. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +189 -209
  198. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  199. package/dist/lock/contracts/database-lock-adapter.contract.d.ts +9 -9
  200. package/dist/lock/contracts/lock-adapter.contract.d.ts +7 -7
  201. package/dist/lock/contracts/lock-provider-factory.contract.d.ts +4 -4
  202. package/dist/lock/contracts/lock-provider.contract.d.ts +14 -14
  203. package/dist/lock/contracts/lock.contract.d.ts +22 -22
  204. package/dist/lock/contracts/lock.errors.d.ts +10 -10
  205. package/dist/lock/contracts/lock.errors.js +10 -10
  206. package/dist/lock/contracts/lock.events.d.ts +45 -54
  207. package/dist/lock/contracts/lock.events.js +9 -91
  208. package/dist/lock/contracts/lock.events.js.map +1 -1
  209. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.d.ts +5 -5
  210. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +4 -4
  211. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +3 -3
  212. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +3 -3
  213. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +5 -5
  214. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +4 -4
  215. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.d.ts +2 -2
  216. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js +2 -2
  217. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +3 -3
  218. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +3 -3
  219. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.d.ts +5 -5
  220. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +4 -4
  221. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +33 -33
  222. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +30 -30
  223. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  224. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +2 -2
  225. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
  226. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +3 -3
  227. package/dist/lock/implementations/derivables/lock-provider/lock.js +77 -58
  228. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  229. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +5 -4
  230. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +2 -1
  231. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  232. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.d.ts +3 -3
  233. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js +2 -2
  234. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.d.ts +3 -3
  235. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js +2 -2
  236. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +3 -3
  237. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +214 -214
  238. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  239. package/dist/serde/contracts/deserializer.contract.d.ts +2 -2
  240. package/dist/serde/contracts/flexible-serde-adapter.contract.d.ts +4 -4
  241. package/dist/serde/contracts/flexible-serde.contract.d.ts +8 -19
  242. package/dist/serde/contracts/serde.contract.d.ts +2 -2
  243. package/dist/serde/contracts/serde.errors.d.ts +4 -4
  244. package/dist/serde/contracts/serde.errors.js +4 -4
  245. package/dist/serde/contracts/serializable.contract.d.ts +2 -2
  246. package/dist/serde/contracts/serializer.contract.d.ts +2 -2
  247. package/dist/serde/implementations/adapters/no-op-serde-adapter/no-op-serde-adapter.d.ts +2 -2
  248. package/dist/serde/implementations/adapters/no-op-serde-adapter/no-op-serde-adapter.js +2 -2
  249. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.d.ts +1 -1
  250. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js +1 -1
  251. package/dist/serde/implementations/derivables/serde.d.ts +4 -35
  252. package/dist/serde/implementations/derivables/serde.js +2 -47
  253. package/dist/serde/implementations/derivables/serde.js.map +1 -1
  254. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.d.ts +3 -3
  255. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.js +2 -2
  256. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.d.ts +3 -3
  257. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js +2 -2
  258. package/dist/utilities/classes/_module.d.ts +1 -1
  259. package/dist/utilities/classes/_module.js +1 -1
  260. package/dist/utilities/classes/_module.js.map +1 -1
  261. package/dist/utilities/classes/hooks/_module.d.ts +3 -0
  262. package/dist/utilities/classes/hooks/_module.js +4 -0
  263. package/dist/utilities/classes/hooks/_module.js.map +1 -0
  264. package/dist/utilities/classes/hooks/async-hooks.d.ts +209 -0
  265. package/dist/utilities/classes/hooks/async-hooks.js +145 -0
  266. package/dist/utilities/classes/hooks/async-hooks.js.map +1 -0
  267. package/dist/utilities/classes/hooks/hooks.d.ts +139 -0
  268. package/dist/utilities/classes/hooks/hooks.js +116 -0
  269. package/dist/utilities/classes/hooks/hooks.js.map +1 -0
  270. package/dist/utilities/classes/hooks/types.d.ts +9 -0
  271. package/dist/utilities/classes/hooks/types.js +5 -0
  272. package/dist/utilities/classes/hooks/types.js.map +1 -0
  273. package/dist/utilities/classes/key-prefixer/key-prefixer.d.ts +3 -3
  274. package/dist/utilities/classes/key-prefixer/key-prefixer.js +4 -4
  275. package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +1 -1
  276. package/dist/utilities/classes/time-span/time-span.d.ts +5 -5
  277. package/dist/utilities/classes/time-span/time-span.js +5 -5
  278. package/dist/utilities/contracts/_module.d.ts +0 -1
  279. package/dist/utilities/contracts/_module.js +0 -1
  280. package/dist/utilities/contracts/_module.js.map +1 -1
  281. package/dist/utilities/contracts/deinitizable.contract.d.ts +1 -1
  282. package/dist/utilities/contracts/initizable.contract.d.ts +1 -1
  283. package/dist/utilities/contracts/prunable.contract.d.ts +1 -1
  284. package/dist/utilities/contracts/serialized-error.contract.d.ts +1 -1
  285. package/dist/utilities/contracts/sqlite-database.contract.d.ts +2 -2
  286. package/dist/utilities/errors.d.ts +5 -5
  287. package/dist/utilities/errors.js +5 -5
  288. package/dist/utilities/functions/factory.js +3 -3
  289. package/dist/utilities/functions/factory.js.map +1 -1
  290. package/dist/utilities/functions/invokable.d.ts +9 -5
  291. package/dist/utilities/functions/invokable.js +12 -2
  292. package/dist/utilities/functions/invokable.js.map +1 -1
  293. package/dist/utilities/functions/lazy.d.ts +5 -0
  294. package/dist/utilities/functions/lazy.js +12 -3
  295. package/dist/utilities/functions/lazy.js.map +1 -1
  296. package/dist/utilities/types/async-iterable-value.type.d.ts +1 -1
  297. package/dist/utilities/types/at-least-one.type.d.ts +1 -1
  298. package/dist/utilities/types/factory.type.d.ts +8 -8
  299. package/dist/utilities/types/invokable.type.d.ts +3 -3
  300. package/dist/utilities/types/items.type.d.ts +1 -1
  301. package/dist/utilities/types/lazy.type.d.ts +5 -5
  302. package/dist/utilities/types/none-func.type.d.ts +1 -1
  303. package/dist/utilities/types/one-or-more.type.d.ts +1 -1
  304. package/dist/utilities/types/promiseable.type.d.ts +1 -1
  305. package/dist/utilities/types/result.type.d.ts +1 -1
  306. package/package.json +22 -2
  307. package/dist/async/async.events.d.ts +0 -105
  308. package/dist/async/async.events.js +0 -82
  309. package/dist/async/async.events.js.map +0 -1
  310. package/dist/async/utilities/abort/_module.d.ts +0 -2
  311. package/dist/async/utilities/abort/_module.js +0 -3
  312. package/dist/async/utilities/abort/_module.js.map +0 -1
  313. package/dist/async/utilities/abort/abort-and-fail.d.ts +0 -4
  314. package/dist/async/utilities/abort/abort-and-fail.js.map +0 -1
  315. package/dist/async/utilities/abort/abort.d.ts +0 -9
  316. package/dist/async/utilities/abort/abort.js +0 -18
  317. package/dist/async/utilities/abort/abort.js.map +0 -1
  318. package/dist/async/utilities/delay/_module.d.ts +0 -1
  319. package/dist/async/utilities/delay/_module.js +0 -2
  320. package/dist/async/utilities/delay/_module.js.map +0 -1
  321. package/dist/async/utilities/delay/delay.d.ts +0 -10
  322. package/dist/async/utilities/delay/delay.js +0 -34
  323. package/dist/async/utilities/delay/delay.js.map +0 -1
  324. package/dist/async/utilities/retry/_module.d.ts +0 -2
  325. package/dist/async/utilities/retry/_module.js +0 -3
  326. package/dist/async/utilities/retry/_module.js.map +0 -1
  327. package/dist/async/utilities/retry/retry-or-fail.d.ts +0 -29
  328. package/dist/async/utilities/retry/retry-or-fail.js +0 -39
  329. package/dist/async/utilities/retry/retry-or-fail.js.map +0 -1
  330. package/dist/async/utilities/retry/retry.d.ts +0 -10
  331. package/dist/async/utilities/retry/retry.js +0 -21
  332. package/dist/async/utilities/retry/retry.js.map +0 -1
  333. package/dist/async/utilities/timeout/_module.d.ts +0 -2
  334. package/dist/async/utilities/timeout/_module.js +0 -3
  335. package/dist/async/utilities/timeout/_module.js.map +0 -1
  336. package/dist/async/utilities/timeout/timeout-and-fail.d.ts +0 -5
  337. package/dist/async/utilities/timeout/timeout-and-fail.js +0 -28
  338. package/dist/async/utilities/timeout/timeout-and-fail.js.map +0 -1
  339. package/dist/async/utilities/timeout/timeout.d.ts +0 -10
  340. package/dist/async/utilities/timeout/timeout.js +0 -21
  341. package/dist/async/utilities/timeout/timeout.js.map +0 -1
  342. package/dist/collection/implementations/async-iterable-collection/_shared/async-delay-iterable.d.ts +0 -13
  343. package/dist/collection/implementations/async-iterable-collection/_shared/async-delay-iterable.js +0 -30
  344. package/dist/collection/implementations/async-iterable-collection/_shared/async-delay-iterable.js.map +0 -1
  345. package/dist/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.d.ts +0 -13
  346. package/dist/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js +0 -36
  347. package/dist/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +0 -1
  348. package/dist/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.d.ts +0 -9
  349. package/dist/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +0 -39
  350. package/dist/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +0 -1
  351. package/dist/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.d.ts +0 -13
  352. package/dist/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +0 -52
  353. package/dist/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +0 -1
  354. package/dist/event-bus/contracts/_shared.d.ts +0 -12
  355. package/dist/event-bus/contracts/_shared.js +0 -15
  356. package/dist/event-bus/contracts/_shared.js.map +0 -1
  357. package/dist/utilities/classes/sync-event-bus/_module.d.ts +0 -1
  358. package/dist/utilities/classes/sync-event-bus/_module.js +0 -2
  359. package/dist/utilities/classes/sync-event-bus/_module.js.map +0 -1
  360. package/dist/utilities/classes/sync-event-bus/sync-event-bus.d.ts +0 -16
  361. package/dist/utilities/classes/sync-event-bus/sync-event-bus.js +0 -53
  362. package/dist/utilities/classes/sync-event-bus/sync-event-bus.js.map +0 -1
  363. package/dist/utilities/contracts/sync-event-bus-listenable.d.ts +0 -13
  364. package/dist/utilities/contracts/sync-event-bus-listenable.js +0 -5
  365. package/dist/utilities/contracts/sync-event-bus-listenable.js.map +0 -1
@@ -2,10 +2,10 @@
2
2
  * @module Serde
3
3
  */
4
4
  import type { OneOrMore } from "../../../utilities/_module-exports.js";
5
- import type { IFlexibleSerde, IFlexibleSerdeAdapter, ISerdeTransformer, SerializableClass, SerializableEventClass } from "../../../serde/contracts/_module-exports.js";
5
+ import type { IFlexibleSerde, IFlexibleSerdeAdapter, ISerdeTransformer, SerializableClass } from "../../../serde/contracts/_module-exports.js";
6
6
  /**
7
7
  *
8
- * IMPORT_PATH: ```"@daiso-tech/core/serde/deriavables"```
8
+ * IMPORT_PATH: `"@daiso-tech/core/serde/deriavables"`
9
9
  * @group Derivables
10
10
  */
11
11
  export type SerdeSettings = {
@@ -99,9 +99,9 @@ export type SerdeSettings = {
99
99
  shouldHandleURLSearchParams?: boolean;
100
100
  };
101
101
  /**
102
- * <i>Serde</i> class can be derived from any <i>{@link IFlexibleSerdeAdapter}</i>.
102
+ * `Serde` class can be derived from any {@link IFlexibleSerdeAdapter | `IFlexibleSerdeAdapter`}.
103
103
  *
104
- * IMPORT_PATH: ```"@daiso-tech/core/serde/deriavables"```
104
+ * IMPORT_PATH: `"@daiso-tech/core/serde/deriavables"`
105
105
  * @group Derivables
106
106
  */
107
107
  export declare class Serde<TSerializedValue> implements IFlexibleSerde<TSerializedValue> {
@@ -154,37 +154,6 @@ export declare class Serde<TSerializedValue> implements IFlexibleSerde<TSerializ
154
154
  * ```
155
155
  */
156
156
  deserialize<TValue>(serializedValue: TSerializedValue): TValue;
157
- /**
158
- * @example
159
- * ```ts
160
- * import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
161
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
162
- * import { Serde } from "@daiso-tech/core/serde";
163
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
164
- *
165
- * const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
166
- *
167
- * class AddEvent extends BaseEvent<{ a: number; b: number }> {}
168
- *
169
- * serde.registerEvent(AddEvent);
170
- *
171
- * const event = new AddEvent({ a: 1, b: 2 });
172
- * const deserializedEvent = serde.deserialize<AddEvent>(serde.serialize(event));
173
- *
174
- * // Will print 1
175
- * console.log(deserializedEvent.fields.a);
176
- *
177
- * // Will print 2
178
- * console.log(deserializedEvent.fields.b);
179
- *
180
- * // Will print true
181
- * console.log(deserializedEvent instanceof AddEvent);
182
- *
183
- * // Will print false
184
- * console.log(event === deserializedEvent);
185
- * ```
186
- */
187
- registerEvent<TFields extends Record<string, unknown>>(eventClass: SerializableEventClass<TFields>, prefix?: OneOrMore<string>): this;
188
157
  /**
189
158
  * @example
190
159
  * ```ts
@@ -2,12 +2,11 @@
2
2
  * @module Serde
3
3
  */
4
4
  import { getConstructorName, resolveOneOrMoreStr, } from "../../../utilities/_module-exports.js";
5
- import { BaseEvent } from "../../../event-bus/contracts/_module-exports.js";
6
5
  import { ArrayBufferSerdeTransformer, BufferSerdeTransformer, Uint8ArraySerdeTransformer, Int8ArraySerdeTransformer, Uint16ArraySerdeTransformer, Int16ArraySerdeTransformer, Uint32ArraySerdeTransformer, Int32ArraySerdeTransformer, BigUint64ArraySerdeTransformer, BigInt64ArraySerdeTransformer, Float32ArraySerdeTransformer, Float64ArraySerdeTransformer, MapSerdeTransformer, SetSerdeTransformer, BigIntSerdeTransformer, NaNSerdeTransformer, InfinitySerdeTransformer, UndefinedSerdeTransformer, RegExpSerdeTransformer, DateSerdeTransformer, URLSerdeTransformer, URLSearchParamsSerdeTransformer, } from "../../../serde/implementations/derivables/serde-transformers.js";
7
6
  /**
8
- * <i>Serde</i> class can be derived from any <i>{@link IFlexibleSerdeAdapter}</i>.
7
+ * `Serde` class can be derived from any {@link IFlexibleSerdeAdapter | `IFlexibleSerdeAdapter`}.
9
8
  *
10
- * IMPORT_PATH: ```"@daiso-tech/core/serde/deriavables"```
9
+ * IMPORT_PATH: `"@daiso-tech/core/serde/deriavables"`
11
10
  * @group Derivables
12
11
  */
13
12
  export class Serde {
@@ -133,50 +132,6 @@ export class Serde {
133
132
  deserialize(serializedValue) {
134
133
  return this.serdeAdapter.deserialize(serializedValue);
135
134
  }
136
- /**
137
- * @example
138
- * ```ts
139
- * import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
140
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
141
- * import { Serde } from "@daiso-tech/core/serde";
142
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
143
- *
144
- * const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
145
- *
146
- * class AddEvent extends BaseEvent<{ a: number; b: number }> {}
147
- *
148
- * serde.registerEvent(AddEvent);
149
- *
150
- * const event = new AddEvent({ a: 1, b: 2 });
151
- * const deserializedEvent = serde.deserialize<AddEvent>(serde.serialize(event));
152
- *
153
- * // Will print 1
154
- * console.log(deserializedEvent.fields.a);
155
- *
156
- * // Will print 2
157
- * console.log(deserializedEvent.fields.b);
158
- *
159
- * // Will print true
160
- * console.log(deserializedEvent instanceof AddEvent);
161
- *
162
- * // Will print false
163
- * console.log(event === deserializedEvent);
164
- * ```
165
- */
166
- registerEvent(eventClass, prefix) {
167
- return this.registerCustom({
168
- name: eventClass.name,
169
- isApplicable(value) {
170
- return value instanceof BaseEvent;
171
- },
172
- serialize(deserializedValue) {
173
- return deserializedValue.fields;
174
- },
175
- deserialize(serializedValue) {
176
- return new eventClass(serializedValue);
177
- },
178
- }, prefix);
179
- }
180
135
  /**
181
136
  * @example
182
137
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"serde.js","sourceRoot":"","sources":["../../../../src/serde/implementations/derivables/serde.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serde.js","sourceRoot":"","sources":["../../../../src/serde/implementations/derivables/serde.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { type TestAPI, type ExpectStatic } from "vitest";
5
5
  import type { IFlexibleSerdeAdapter } from "../../../serde/contracts/_module-exports.js";
6
6
  /**
7
7
  *
8
- * IMPORT_PATH: ```"@daiso-tech/core/serde/test-utilities"```
8
+ * IMPORT_PATH: `"@daiso-tech/core/serde/test-utilities"`
9
9
  * @group TestUtilities
10
10
  */
11
11
  export type FlexibleSerdeAdapterSuiteSettings = {
@@ -14,9 +14,9 @@ export type FlexibleSerdeAdapterSuiteSettings = {
14
14
  createAdapter: () => IFlexibleSerdeAdapter;
15
15
  };
16
16
  /**
17
- * The <i>flexibleSerdeAdapterTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IFlexibleSerdeAdapter}</i> with <i>vitest</i>.
17
+ * The `flexibleSerdeAdapterTestSuite` function simplifies the process of testing your custom implementation of {@link IFlexibleSerdeAdapter | `IFlexibleSerdeAdapter`} with `vitest`.
18
18
  *
19
- * IMPORT_PATH: ```"@daiso-tech/core/serde/test-utilities"```
19
+ * IMPORT_PATH: `"@daiso-tech/core/serde/test-utilities"`
20
20
  * @group TestUtilities
21
21
  * @example
22
22
  * ```ts
@@ -3,9 +3,9 @@
3
3
  */
4
4
  import { beforeEach } from "vitest";
5
5
  /**
6
- * The <i>flexibleSerdeAdapterTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IFlexibleSerdeAdapter}</i> with <i>vitest</i>.
6
+ * The `flexibleSerdeAdapterTestSuite` function simplifies the process of testing your custom implementation of {@link IFlexibleSerdeAdapter | `IFlexibleSerdeAdapter`} with `vitest`.
7
7
  *
8
- * IMPORT_PATH: ```"@daiso-tech/core/serde/test-utilities"```
8
+ * IMPORT_PATH: `"@daiso-tech/core/serde/test-utilities"`
9
9
  * @group TestUtilities
10
10
  * @example
11
11
  * ```ts
@@ -5,7 +5,7 @@ import { type TestAPI, type ExpectStatic } from "vitest";
5
5
  import type { IFlexibleSerde } from "../../../serde/contracts/_module-exports.js";
6
6
  /**
7
7
  *
8
- * IMPORT_PATH: ```"@daiso-tech/core/serde/test-utilities"```
8
+ * IMPORT_PATH: `"@daiso-tech/core/serde/test-utilities"`
9
9
  * @group TestUtilities
10
10
  */
11
11
  export type FlexibleSerdeSuiteSettings = {
@@ -14,9 +14,9 @@ export type FlexibleSerdeSuiteSettings = {
14
14
  createSerde: () => IFlexibleSerde;
15
15
  };
16
16
  /**
17
- * The <i>flexibleSerdeTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IFlexibleSerde}</i> with <i>vitest</i>.
17
+ * The `flexibleSerdeTestSuite` function simplifies the process of testing your custom implementation of {@link IFlexibleSerde | `IFlexibleSerde`} with `vitest`.
18
18
  *
19
- * IMPORT_PATH: ```"@daiso-tech/core/serde/test-utilities"```
19
+ * IMPORT_PATH: `"@daiso-tech/core/serde/test-utilities"`
20
20
  * @group TestUtilities
21
21
  * @example
22
22
  * ```ts
@@ -3,9 +3,9 @@
3
3
  */
4
4
  import { beforeEach } from "vitest";
5
5
  /**
6
- * The <i>flexibleSerdeTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IFlexibleSerde}</i> with <i>vitest</i>.
6
+ * The `flexibleSerdeTestSuite` function simplifies the process of testing your custom implementation of {@link IFlexibleSerde | `IFlexibleSerde`} with `vitest`.
7
7
  *
8
- * IMPORT_PATH: ```"@daiso-tech/core/serde/test-utilities"```
8
+ * IMPORT_PATH: `"@daiso-tech/core/serde/test-utilities"`
9
9
  * @group TestUtilities
10
10
  * @example
11
11
  * ```ts
@@ -1,4 +1,4 @@
1
1
  export * from "../../utilities/classes/key-prefixer/_module.js";
2
2
  export * from "../../utilities/classes/kysely-table-name-transformer-plugin/_module.js";
3
- export * from "../../utilities/classes/sync-event-bus/_module.js";
3
+ export * from "../../utilities/classes/hooks/_module.js";
4
4
  export * from "../../utilities/classes/time-span/_module.js";
@@ -1,5 +1,5 @@
1
1
  export * from "../../utilities/classes/key-prefixer/_module.js";
2
2
  export * from "../../utilities/classes/kysely-table-name-transformer-plugin/_module.js";
3
- export * from "../../utilities/classes/sync-event-bus/_module.js";
3
+ export * from "../../utilities/classes/hooks/_module.js";
4
4
  export * from "../../utilities/classes/time-span/_module.js";
5
5
  //# sourceMappingURL=_module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_module.js","sourceRoot":"","sources":["../../../src/utilities/classes/_module.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qEAAqE,CAAC;AACpF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0CAA0C,CAAC"}
1
+ {"version":3,"file":"_module.js","sourceRoot":"","sources":["../../../src/utilities/classes/_module.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qEAAqE,CAAC;AACpF,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "../../../utilities/classes/hooks/async-hooks.js";
2
+ export * from "../../../utilities/classes/hooks/hooks.js";
3
+ export * from "../../../utilities/classes/hooks/types.js";
@@ -0,0 +1,4 @@
1
+ export * from "../../../utilities/classes/hooks/async-hooks.js";
2
+ export * from "../../../utilities/classes/hooks/hooks.js";
3
+ export * from "../../../utilities/classes/hooks/types.js";
4
+ //# sourceMappingURL=_module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_module.js","sourceRoot":"","sources":["../../../../src/utilities/classes/hooks/_module.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * @module Utilities
3
+ */
4
+ import { type IInvokableObject, type Invokable, type InvokableFn, type OneOrMore, type Promisable } from "../../../utilities/_module-exports.js";
5
+ import type { HookContext } from "../../../utilities/classes/hooks/types.js";
6
+ /**
7
+ *
8
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
9
+ * @group Hooks
10
+ */
11
+ export type GetSignal<TParameters extends unknown[] = unknown[]> = Invokable<[
12
+ arguments_: TParameters
13
+ ], AbortSignal | undefined>;
14
+ /**
15
+ *
16
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
17
+ * @group Hooks
18
+ */
19
+ export type ForwardSignal<TParameters> = Invokable<[
20
+ arguments_: TParameters,
21
+ signal: AbortSignal
22
+ ], void>;
23
+ /**
24
+ * With {@link AbortSignalBinder | `AbortSignalBinder`}, you can bind an {@link AbortSignal | `AbortSignal`} to the middleware, enabling two-way abortion control.
25
+ * This means the middleware can abort the function, or the function can abort the middleware if the input function supports an {@link AbortSignal | `AbortSignal`}.
26
+ *
27
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
28
+ * @group Hooks
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { AsyncHooks } from "@daiso-tech/core/utilities";
33
+ *
34
+ * const abortController = new AbortController();
35
+ *
36
+ * // You can abort the function based on by your on criteria
37
+ * abortController.abort("Aborted") // Remove this code if you want the function to aborted after 2 seconds by the middleware.
38
+ *
39
+ * const data = await new AsyncHooks(async (url: string, signal?: AbortSignal): Promise<unknown> => {
40
+ * const response = await fetch(url, { signal });
41
+ * return await response.json();
42
+ * }, [
43
+ * (args, next, { abort, signal }) => {
44
+ * // We abort the function when it execdes 2 seconds.
45
+ * const id = setTimeout(() => abort("Timed out"), 2000);
46
+ * // We remove the timeout if function is aborted before it execdes 2 seconds.
47
+ * signal.addEventListener("abort", () => clearTimeout(id), { once: true });
48
+ * return next(...args);
49
+ * }
50
+ * ], {
51
+ * signalBinder: {
52
+ * getSignal: (args) => args[1],
53
+ * forwardSignal: (args, signal) => {
54
+ * args[1] = signal;
55
+ * }
56
+ * }
57
+ * })
58
+ * .invoke("url", abortController.signal);
59
+ *
60
+ * console.log("DATA:", data)
61
+ * ```
62
+ */
63
+ export type AbortSignalBinder<TParameters extends unknown[] = unknown[]> = {
64
+ getSignal: GetSignal<TParameters>;
65
+ forwardSignal: ForwardSignal<TParameters>;
66
+ };
67
+ /**
68
+ *
69
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
70
+ * @group Hooks
71
+ */
72
+ export type AsyncNextFunc<TParameters extends unknown[] = unknown[], TReturn = unknown> = InvokableFn<TParameters, PromiseLike<TReturn>>;
73
+ /**
74
+ *
75
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
76
+ * @group Hooks
77
+ */
78
+ export type AsyncContext<TContext extends HookContext = HookContext> = {
79
+ name: string;
80
+ context: TContext;
81
+ abort: (error: unknown) => void;
82
+ signal: AbortSignal;
83
+ };
84
+ /**
85
+ *
86
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
87
+ * @group Hooks
88
+ */
89
+ export type AsyncMiddlewareFn<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = InvokableFn<[
90
+ arguments_: TParameters,
91
+ next: AsyncNextFunc<TParameters, TReturn>,
92
+ settings: AsyncContext<TContext>
93
+ ], Promisable<TReturn>>;
94
+ /**
95
+ *
96
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
97
+ * @group Hooks
98
+ */
99
+ export type IAsyncMiddlewareObject<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = IInvokableObject<[
100
+ arguments_: TParameters,
101
+ next: AsyncNextFunc<TParameters, TReturn>,
102
+ settings: AsyncContext<TContext>
103
+ ], Promisable<TReturn>>;
104
+ /**
105
+ *
106
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
107
+ * @group Hooks
108
+ */
109
+ export type AsyncMiddleware<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = IAsyncMiddlewareObject<TParameters, TReturn, TContext> | AsyncMiddlewareFn<TParameters, TReturn, TContext>;
110
+ /**
111
+ *
112
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
113
+ * @group Hooks
114
+ */
115
+ export type AsyncHooksSettings<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
116
+ /**
117
+ * The name of the function which can be used for logging inside the middleware.
118
+ * By default, it takes the function or method name. If an anonymous function is provided, the name defaults to "func".
119
+ */
120
+ name?: string;
121
+ /**
122
+ * If the input function accepts an {@link AbortSignal | `AbortSignal`}, you can bind it to the middleware by providing an {@link AbortSignalBinder | `AbortSignalBinder`}.
123
+ * This enables two-way abortion control: you can either abort the function from within the middleware, or abort the middleware from the function itself.
124
+ */
125
+ signalBinder?: AbortSignalBinder<TParameters>;
126
+ /**
127
+ * You can provide addtional context that can be used in the middleware.
128
+ */
129
+ context?: TContext;
130
+ };
131
+ /**
132
+ * The `AsyncHooks` class provides a convenient way to change and inspect arguments and return value of both async and sync functions.
133
+ * For example `AsyncHooks` class can be used to log function arguments and return values. Note this class will always return promise and is immutable.
134
+ *
135
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
136
+ * @group Hooks
137
+ */
138
+ export declare class AsyncHooks<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> implements IInvokableObject<TParameters, Promise<TReturn>> {
139
+ private readonly invokable;
140
+ private readonly middlewares;
141
+ private readonly settings;
142
+ private static defaultAbortSignalBinder;
143
+ private static resolveSignalBinder;
144
+ private static init;
145
+ private readonly func;
146
+ /**
147
+ * @example
148
+ * ```ts
149
+ * import { AsyncHooks, type AsyncMiddlewareFn } from "@daiso-tech/core/utilities";
150
+ *
151
+ * function log<TParameters extends unknown[], TReturn>(): AsyncMiddlewareFn<TParameters, TReturn> {
152
+ * return async (args, next, { name: funcName }) => {
153
+ * console.log("FUNCTION_NAME:", funcName);
154
+ * console.log("ARGUMENTS:", args);
155
+ * const value = await next(...args);
156
+ * console.log("RETURN:", value);
157
+ * return value;
158
+ * }
159
+ * }
160
+ *
161
+ * function time<TParameters extends unknown[], TReturn>(): AsyncMiddlewareFn<TParameters, TReturn> {
162
+ * return async (args, next) => {
163
+ * const start = performance.now();
164
+ * const value = await next(...args);
165
+ * const end = performance.now();
166
+ * const time = end - start;
167
+ * console.log("TIME:", `${String(time)}ms`);
168
+ * return value;
169
+ * }
170
+ * }
171
+ *
172
+ * function add(a: number, b: number): number {
173
+ * return a + b;
174
+ * }
175
+ *
176
+ * const enhancedAdd = new AsyncHooks(add, [
177
+ * log(),
178
+ * time()
179
+ * ], {
180
+ * // You can provide addtional data to be used the middleware.
181
+ * context: {},
182
+ * });
183
+ *
184
+ * // Will log the function name, arguments and return value.
185
+ * // Will also log the execution time.
186
+ * const result = await enhancedAdd.invoke(1, 2);
187
+ *
188
+ * // Will be 3.
189
+ * console.log(result);
190
+ * ```
191
+ */
192
+ constructor(invokable: Invokable<TParameters, Promisable<TReturn>>, middlewares: NoInfer<OneOrMore<AsyncMiddleware<TParameters, TReturn, TContext>>>, settings?: AsyncHooksSettings<TParameters, TContext>);
193
+ /**
194
+ * The `pipe` method returns a new `AsyncHooks` instance with the additional `middlewares` applied.
195
+ */
196
+ pipe(middlewares: OneOrMore<AsyncMiddleware<TParameters, TReturn, TContext>>): AsyncHooks<TParameters, TReturn, TContext>;
197
+ /**
198
+ * The `pipeWhen` method conditionally applies additional `middlewares`, returning a new `AsyncHooks` instance only if the specified condition is met.
199
+ */
200
+ pipeWhen(condition: boolean, middlewares: OneOrMore<AsyncMiddleware<TParameters, TReturn, TContext>>): AsyncHooks<TParameters, TReturn, TContext>;
201
+ /**
202
+ * The `toFunc` will return the function with all middlewares applied.
203
+ */
204
+ toFunc(): InvokableFn<TParameters, PromiseLike<TReturn>>;
205
+ /**
206
+ * The `invoke` method executes the constructor's input function, applying all middlewares.
207
+ */
208
+ invoke(...arguments_: TParameters): Promise<TReturn>;
209
+ }
@@ -0,0 +1,145 @@
1
+ /**
2
+ * @module Utilities
3
+ */
4
+ import { callInvokable, getInvokableName, resolveInvokable, resolveOneOrMore, } from "../../../utilities/_module-exports.js";
5
+ /**
6
+ * The `AsyncHooks` class provides a convenient way to change and inspect arguments and return value of both async and sync functions.
7
+ * For example `AsyncHooks` class can be used to log function arguments and return values. Note this class will always return promise and is immutable.
8
+ *
9
+ * IMPORT_PATH: `"@daiso-tech/core/utilities"`
10
+ * @group Hooks
11
+ */
12
+ export class AsyncHooks {
13
+ invokable;
14
+ middlewares;
15
+ settings;
16
+ static defaultAbortSignalBinder() {
17
+ return {
18
+ forwardSignal: (args) => args,
19
+ getSignal: () => new AbortController().signal,
20
+ };
21
+ }
22
+ static resolveSignalBinder(signalBinder, args) {
23
+ const outerSignal = callInvokable(signalBinder.getSignal, args) ??
24
+ new AbortController().signal;
25
+ const abortController = new AbortController();
26
+ const abort = (reason) => {
27
+ abortController.abort(reason);
28
+ };
29
+ const mergedSignal = AbortSignal.any([
30
+ outerSignal,
31
+ abortController.signal,
32
+ ]);
33
+ callInvokable(signalBinder.forwardSignal, args, mergedSignal);
34
+ return {
35
+ abort,
36
+ changedArgs: args,
37
+ signal: mergedSignal,
38
+ };
39
+ }
40
+ static init(invokable, middlewares, { name = getInvokableName(invokable), signalBinder = AsyncHooks.defaultAbortSignalBinder(), context = {}, }) {
41
+ let func = resolveInvokable(invokable);
42
+ for (const hook of resolveOneOrMore(middlewares)
43
+ .map(resolveInvokable)
44
+ .reverse()) {
45
+ const prevFunc = func;
46
+ const next = async (...arguments_) => await prevFunc(...arguments_);
47
+ func = async (...arguments_) => {
48
+ const resolvedSignalBinder = AsyncHooks.resolveSignalBinder(signalBinder, arguments_);
49
+ return await hook(resolvedSignalBinder.changedArgs, next, {
50
+ name,
51
+ abort: (error) => {
52
+ resolvedSignalBinder.abort(error);
53
+ },
54
+ signal: resolvedSignalBinder.signal,
55
+ context,
56
+ });
57
+ };
58
+ }
59
+ return func;
60
+ }
61
+ func;
62
+ /**
63
+ * @example
64
+ * ```ts
65
+ * import { AsyncHooks, type AsyncMiddlewareFn } from "@daiso-tech/core/utilities";
66
+ *
67
+ * function log<TParameters extends unknown[], TReturn>(): AsyncMiddlewareFn<TParameters, TReturn> {
68
+ * return async (args, next, { name: funcName }) => {
69
+ * console.log("FUNCTION_NAME:", funcName);
70
+ * console.log("ARGUMENTS:", args);
71
+ * const value = await next(...args);
72
+ * console.log("RETURN:", value);
73
+ * return value;
74
+ * }
75
+ * }
76
+ *
77
+ * function time<TParameters extends unknown[], TReturn>(): AsyncMiddlewareFn<TParameters, TReturn> {
78
+ * return async (args, next) => {
79
+ * const start = performance.now();
80
+ * const value = await next(...args);
81
+ * const end = performance.now();
82
+ * const time = end - start;
83
+ * console.log("TIME:", `${String(time)}ms`);
84
+ * return value;
85
+ * }
86
+ * }
87
+ *
88
+ * function add(a: number, b: number): number {
89
+ * return a + b;
90
+ * }
91
+ *
92
+ * const enhancedAdd = new AsyncHooks(add, [
93
+ * log(),
94
+ * time()
95
+ * ], {
96
+ * // You can provide addtional data to be used the middleware.
97
+ * context: {},
98
+ * });
99
+ *
100
+ * // Will log the function name, arguments and return value.
101
+ * // Will also log the execution time.
102
+ * const result = await enhancedAdd.invoke(1, 2);
103
+ *
104
+ * // Will be 3.
105
+ * console.log(result);
106
+ * ```
107
+ */
108
+ constructor(invokable, middlewares, settings = {}) {
109
+ this.invokable = invokable;
110
+ this.middlewares = middlewares;
111
+ this.settings = settings;
112
+ this.func = AsyncHooks.init(invokable, middlewares, this.settings);
113
+ }
114
+ /**
115
+ * The `pipe` method returns a new `AsyncHooks` instance with the additional `middlewares` applied.
116
+ */
117
+ pipe(middlewares) {
118
+ return new AsyncHooks(this.invokable, [
119
+ ...resolveOneOrMore(this.middlewares),
120
+ ...resolveOneOrMore(middlewares),
121
+ ], this.settings);
122
+ }
123
+ /**
124
+ * The `pipeWhen` method conditionally applies additional `middlewares`, returning a new `AsyncHooks` instance only if the specified condition is met.
125
+ */
126
+ pipeWhen(condition, middlewares) {
127
+ if (condition) {
128
+ return this.pipe(middlewares);
129
+ }
130
+ return this;
131
+ }
132
+ /**
133
+ * The `toFunc` will return the function with all middlewares applied.
134
+ */
135
+ toFunc() {
136
+ return (...args) => this.invoke(...args);
137
+ }
138
+ /**
139
+ * The `invoke` method executes the constructor's input function, applying all middlewares.
140
+ */
141
+ async invoke(...arguments_) {
142
+ return await this.func(...arguments_);
143
+ }
144
+ }
145
+ //# sourceMappingURL=async-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-hooks.js","sourceRoot":"","sources":["../../../../src/utilities/classes/hooks/async-hooks.ts"],"names":[],"mappings":"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"}