@daiso-tech/core 0.7.0 → 0.8.1

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 (559) hide show
  1. package/dist/cjs/_module.js +2 -0
  2. package/dist/cjs/_module.js.map +1 -1
  3. package/dist/cjs/_shared/utilities.js +9 -0
  4. package/dist/cjs/_shared/utilities.js.map +1 -1
  5. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-chunk-iterable.js.map +1 -1
  6. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-chunk-while-iterable.js.map +1 -1
  7. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-collapse-iterable.js.map +1 -1
  8. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-count-by-iterable.js.map +1 -1
  9. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-cross-join-iterable.js.map +1 -1
  10. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-entries-iterable.js.map +1 -1
  11. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-error-handler-iterable.js.map +1 -1
  12. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-filter-iterable.js.map +1 -1
  13. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-flat-map-iterable.js.map +1 -1
  14. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-group-by-iterable.js.map +1 -1
  15. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-insert-after-iterable.js.map +1 -1
  16. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-insert-before-iterable.js.map +1 -1
  17. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-map-iterable.js.map +1 -1
  18. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js.map +1 -1
  19. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-pad-end-iterable.js.map +1 -1
  20. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-pad-start-iterable.js.map +1 -1
  21. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-partion-iterable.js.map +1 -1
  22. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-repeat-iterable.js.map +1 -1
  23. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-reverse-iterable.js.map +1 -1
  24. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-shuffle-iterable.js.map +1 -1
  25. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-skip-iterable.js.map +1 -1
  26. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-skip-until-iterable.js.map +1 -1
  27. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-slice-iterable.js.map +1 -1
  28. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-sliding-iterable.js.map +1 -1
  29. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-sort-iterable.js.map +1 -1
  30. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js.map +1 -1
  31. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-iterable.js.map +1 -1
  32. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-iterable.js.map +1 -1
  33. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-tap-iterable.js.map +1 -1
  34. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-unique-iterable.js.map +1 -1
  35. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-update-iterable.js.map +1 -1
  36. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-when-iterable.js.map +1 -1
  37. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-zip-iterable.js.map +1 -1
  38. package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  39. package/dist/cjs/collection/implementations/iterable-collection/_shared/chunk-iterable.js.map +1 -1
  40. package/dist/cjs/collection/implementations/iterable-collection/_shared/chunk-while-iterable.js.map +1 -1
  41. package/dist/cjs/collection/implementations/iterable-collection/_shared/collapse-iterable.js.map +1 -1
  42. package/dist/cjs/collection/implementations/iterable-collection/_shared/count-by-iterable.js.map +1 -1
  43. package/dist/cjs/collection/implementations/iterable-collection/_shared/cross-join-iterable.js.map +1 -1
  44. package/dist/cjs/collection/implementations/iterable-collection/_shared/entries-iterable.js.map +1 -1
  45. package/dist/cjs/collection/implementations/iterable-collection/_shared/filter-iterable.js.map +1 -1
  46. package/dist/cjs/collection/implementations/iterable-collection/_shared/flat-map-iterable.js.map +1 -1
  47. package/dist/cjs/collection/implementations/iterable-collection/_shared/group-by-iterable.js.map +1 -1
  48. package/dist/cjs/collection/implementations/iterable-collection/_shared/insert-after-iterable.js.map +1 -1
  49. package/dist/cjs/collection/implementations/iterable-collection/_shared/insert-before-iterable.js.map +1 -1
  50. package/dist/cjs/collection/implementations/iterable-collection/_shared/map-iterable.js.map +1 -1
  51. package/dist/cjs/collection/implementations/iterable-collection/_shared/merge-iterable.js.map +1 -1
  52. package/dist/cjs/collection/implementations/iterable-collection/_shared/pad-end-iterable.js.map +1 -1
  53. package/dist/cjs/collection/implementations/iterable-collection/_shared/pad-start-iterable.js.map +1 -1
  54. package/dist/cjs/collection/implementations/iterable-collection/_shared/partion-iterable.js.map +1 -1
  55. package/dist/cjs/collection/implementations/iterable-collection/_shared/repeat-iterable.js.map +1 -1
  56. package/dist/cjs/collection/implementations/iterable-collection/_shared/reverse-iterable.js.map +1 -1
  57. package/dist/cjs/collection/implementations/iterable-collection/_shared/shuffle-iterable.js.map +1 -1
  58. package/dist/cjs/collection/implementations/iterable-collection/_shared/skip-iterable.js.map +1 -1
  59. package/dist/cjs/collection/implementations/iterable-collection/_shared/skip-until-iterable.js.map +1 -1
  60. package/dist/cjs/collection/implementations/iterable-collection/_shared/slice-iterable.js.map +1 -1
  61. package/dist/cjs/collection/implementations/iterable-collection/_shared/sliding-iterable.js.map +1 -1
  62. package/dist/cjs/collection/implementations/iterable-collection/_shared/sort-iterable.js.map +1 -1
  63. package/dist/cjs/collection/implementations/iterable-collection/_shared/split-iterable.js.map +1 -1
  64. package/dist/cjs/collection/implementations/iterable-collection/_shared/take-iterable.js.map +1 -1
  65. package/dist/cjs/collection/implementations/iterable-collection/_shared/take-until-iterable.js.map +1 -1
  66. package/dist/cjs/collection/implementations/iterable-collection/_shared/tap-iterable.js.map +1 -1
  67. package/dist/cjs/collection/implementations/iterable-collection/_shared/unique-iterable.js.map +1 -1
  68. package/dist/cjs/collection/implementations/iterable-collection/_shared/update-iterable.js.map +1 -1
  69. package/dist/cjs/collection/implementations/iterable-collection/_shared/when-iterable.js.map +1 -1
  70. package/dist/cjs/collection/implementations/iterable-collection/_shared/zip-iterable.js.map +1 -1
  71. package/dist/cjs/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  72. package/dist/cjs/collection/implementations/list-collection/list-collection.js +2 -1
  73. package/dist/cjs/collection/implementations/list-collection/list-collection.js.map +1 -1
  74. package/dist/cjs/{utilities/async/backof-policies/exponential-backoff-policy → event-bus/contracts}/_module.js +4 -1
  75. package/dist/cjs/event-bus/contracts/_module.js.map +1 -0
  76. package/dist/cjs/event-bus/contracts/_shared.js +39 -0
  77. package/dist/cjs/event-bus/contracts/_shared.js.map +1 -0
  78. package/dist/cjs/event-bus/contracts/event-bus-adapter.contract.js +3 -0
  79. package/dist/cjs/event-bus/contracts/event-bus-adapter.contract.js.map +1 -0
  80. package/dist/cjs/event-bus/contracts/event-bus-manager.contract.js +3 -0
  81. package/dist/cjs/event-bus/contracts/event-bus-manager.contract.js.map +1 -0
  82. package/dist/cjs/event-bus/contracts/event-bus.contract.js +3 -0
  83. package/dist/cjs/event-bus/contracts/event-bus.contract.js.map +1 -0
  84. package/dist/cjs/{serializer → event-bus/implementations}/_module.js +5 -5
  85. package/dist/cjs/event-bus/implementations/_module.js.map +1 -0
  86. package/dist/cjs/event-bus/implementations/_shared/test-utilities/_module.js +18 -0
  87. package/dist/cjs/event-bus/implementations/_shared/test-utilities/_module.js.map +1 -0
  88. package/dist/cjs/event-bus/implementations/_shared/test-utilities/event-bus-adapter.test-suite.js +51 -0
  89. package/dist/cjs/event-bus/implementations/_shared/test-utilities/event-bus-adapter.test-suite.js.map +1 -0
  90. package/dist/cjs/event-bus/implementations/event-bus/_module.js +19 -0
  91. package/dist/cjs/event-bus/implementations/event-bus/_module.js.map +1 -0
  92. package/dist/cjs/event-bus/implementations/event-bus/event-bus-manager.js +31 -0
  93. package/dist/cjs/event-bus/implementations/event-bus/event-bus-manager.js.map +1 -0
  94. package/dist/cjs/event-bus/implementations/event-bus/event-bus.js +104 -0
  95. package/dist/cjs/event-bus/implementations/event-bus/event-bus.js.map +1 -0
  96. package/dist/cjs/event-bus/implementations/event-bus/with-namespace-event-bus-adapter.js +41 -0
  97. package/dist/cjs/event-bus/implementations/event-bus/with-namespace-event-bus-adapter.js.map +1 -0
  98. package/dist/cjs/event-bus/implementations/event-bus/with-validation-event-bus-adapter.js +35 -0
  99. package/dist/cjs/event-bus/implementations/event-bus/with-validation-event-bus-adapter.js.map +1 -0
  100. package/dist/cjs/{utilities/async-iterable/timeout-iterable → event-bus/implementations/memory-event-bus-adapter}/_module.js +1 -1
  101. package/dist/cjs/event-bus/implementations/memory-event-bus-adapter/_module.js.map +1 -0
  102. package/dist/cjs/event-bus/implementations/memory-event-bus-adapter/memory-event-bus-adapter.js +23 -0
  103. package/dist/cjs/event-bus/implementations/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -0
  104. package/dist/cjs/event-bus/implementations/no-op-event-bus-adapter/_module.js +18 -0
  105. package/dist/cjs/event-bus/implementations/no-op-event-bus-adapter/_module.js.map +1 -0
  106. package/dist/cjs/event-bus/implementations/no-op-event-bus-adapter/no-op-event-bus-adapter.js +16 -0
  107. package/dist/cjs/event-bus/implementations/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -0
  108. package/dist/cjs/{utilities/async-iterable/abortable-iterable → event-bus/implementations/redis-event-bus-adapter}/_module.js +1 -1
  109. package/dist/cjs/event-bus/implementations/redis-event-bus-adapter/_module.js.map +1 -0
  110. package/dist/cjs/event-bus/implementations/redis-event-bus-adapter/redis-event-bus-adapter.js +45 -0
  111. package/dist/cjs/event-bus/implementations/redis-event-bus-adapter/redis-event-bus-adapter.js.map +1 -0
  112. package/dist/cjs/storage/contracts/_module.js +2 -0
  113. package/dist/cjs/storage/contracts/_module.js.map +1 -1
  114. package/dist/cjs/storage/contracts/storage-events.contract.js +14 -0
  115. package/dist/cjs/storage/contracts/storage-events.contract.js.map +1 -0
  116. package/dist/cjs/storage/contracts/storage-manager.contract.js +3 -0
  117. package/dist/cjs/storage/contracts/storage-manager.contract.js.map +1 -0
  118. package/dist/cjs/storage/implementations/_shared/test-utilities/storage-adapter.test-suite.js +294 -6
  119. package/dist/cjs/storage/implementations/_shared/test-utilities/storage-adapter.test-suite.js.map +1 -1
  120. package/dist/cjs/storage/implementations/storage/_module.js +1 -0
  121. package/dist/cjs/storage/implementations/storage/_module.js.map +1 -1
  122. package/dist/cjs/storage/implementations/storage/storage-manager.js +34 -0
  123. package/dist/cjs/storage/implementations/storage/storage-manager.js.map +1 -0
  124. package/dist/cjs/storage/implementations/storage/storage.js +67 -21
  125. package/dist/cjs/storage/implementations/storage/storage.js.map +1 -1
  126. package/dist/cjs/storage/implementations/storage/with-event-storage-adapter.js +255 -0
  127. package/dist/cjs/storage/implementations/storage/with-event-storage-adapter.js.map +1 -0
  128. package/dist/cjs/storage/implementations/storage/with-namespace-storage-adapter.js +0 -3
  129. package/dist/cjs/storage/implementations/storage/with-namespace-storage-adapter.js.map +1 -1
  130. package/dist/cjs/storage/implementations/storage/with-validation-storage-adapter.js.map +1 -1
  131. package/dist/cjs/utilities/_module.js +1 -2
  132. package/dist/cjs/utilities/_module.js.map +1 -1
  133. package/dist/cjs/utilities/async/_module.js +6 -1
  134. package/dist/cjs/utilities/async/_module.js.map +1 -1
  135. package/dist/cjs/utilities/{async-iterable/retry-iterable → async/abortable-iterable}/_module.js +1 -1
  136. package/dist/cjs/utilities/async/abortable-iterable/_module.js.map +1 -0
  137. package/dist/cjs/utilities/async/abortable-iterable/abortable-iterable.js.map +1 -0
  138. package/dist/cjs/utilities/{async-iterable → async}/delay-iterable/_module.js +1 -1
  139. package/dist/cjs/utilities/async/delay-iterable/_module.js.map +1 -0
  140. package/dist/cjs/utilities/async/delay-iterable/delay-iterable.js.map +1 -0
  141. package/dist/cjs/utilities/async/retry/retry.js +1 -1
  142. package/dist/cjs/utilities/async/retry/retry.js.map +1 -1
  143. package/dist/cjs/utilities/async/retry-iterable/_module.js +18 -0
  144. package/dist/cjs/utilities/async/retry-iterable/_module.js.map +1 -0
  145. package/dist/cjs/utilities/async/retry-iterable/retry-iterable.js.map +1 -0
  146. package/dist/cjs/utilities/async/timeout-iterable/_module.js +18 -0
  147. package/dist/cjs/utilities/async/timeout-iterable/_module.js.map +1 -0
  148. package/dist/cjs/utilities/{async-iterable → async}/timeout-iterable/timeout-iterable.js +1 -1
  149. package/dist/cjs/utilities/async/timeout-iterable/timeout-iterable.js.map +1 -0
  150. package/dist/cjs/utilities/backof-policies/_module.js +21 -0
  151. package/dist/cjs/utilities/backof-policies/_module.js.map +1 -0
  152. package/dist/cjs/utilities/backof-policies/_shared.js.map +1 -0
  153. package/dist/cjs/utilities/backof-policies/constant-backoff-policy/_module.js +18 -0
  154. package/dist/cjs/utilities/backof-policies/constant-backoff-policy/_module.js.map +1 -0
  155. package/dist/cjs/utilities/{async/backof-policies → backof-policies}/constant-backoff-policy/constant-backoff-policy.js +2 -2
  156. package/dist/cjs/utilities/backof-policies/constant-backoff-policy/constant-backoff-policy.js.map +1 -0
  157. package/dist/cjs/utilities/backof-policies/exponential-backoff-policy/_module.js +18 -0
  158. package/dist/cjs/utilities/backof-policies/exponential-backoff-policy/_module.js.map +1 -0
  159. package/dist/cjs/utilities/{async/backof-policies → backof-policies}/exponential-backoff-policy/exponential-backoff-policy.js +2 -2
  160. package/dist/cjs/utilities/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js.map +1 -0
  161. package/dist/cjs/utilities/backof-policies/linear-backoff-policy/_module.js +18 -0
  162. package/dist/cjs/utilities/backof-policies/linear-backoff-policy/_module.js.map +1 -0
  163. package/dist/cjs/utilities/{async/backof-policies → backof-policies}/linear-backoff-policy/linear-backoff-policy.js +2 -2
  164. package/dist/cjs/utilities/backof-policies/linear-backoff-policy/linear-backoff-policy.js.map +1 -0
  165. package/dist/cjs/utilities/backof-policies/polynomial-backoff-policy/_module.js +18 -0
  166. package/dist/cjs/utilities/backof-policies/polynomial-backoff-policy/_module.js.map +1 -0
  167. package/dist/cjs/utilities/{async/backof-policies → backof-policies}/polynomial-backoff-policy/polynomial-backoff-policy.js +2 -2
  168. package/dist/cjs/utilities/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js.map +1 -0
  169. package/dist/cjs/utilities/time-span/time-span.js.map +1 -1
  170. package/dist/cjs/utilities/validation/_module.js.map +1 -1
  171. package/dist/esm/_module.js +2 -0
  172. package/dist/esm/_module.js.map +1 -1
  173. package/dist/esm/_shared/utilities.js +7 -0
  174. package/dist/esm/_shared/utilities.js.map +1 -1
  175. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-chunk-iterable.js.map +1 -1
  176. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-chunk-while-iterable.js.map +1 -1
  177. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-collapse-iterable.js.map +1 -1
  178. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-count-by-iterable.js.map +1 -1
  179. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-cross-join-iterable.js.map +1 -1
  180. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-entries-iterable.js.map +1 -1
  181. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-error-handler-iterable.js.map +1 -1
  182. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-filter-iterable.js.map +1 -1
  183. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-flat-map-iterable.js.map +1 -1
  184. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-group-by-iterable.js.map +1 -1
  185. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-insert-after-iterable.js.map +1 -1
  186. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-insert-before-iterable.js.map +1 -1
  187. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-map-iterable.js.map +1 -1
  188. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js.map +1 -1
  189. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-pad-end-iterable.js.map +1 -1
  190. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-pad-start-iterable.js.map +1 -1
  191. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-partion-iterable.js.map +1 -1
  192. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-repeat-iterable.js.map +1 -1
  193. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-reverse-iterable.js.map +1 -1
  194. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-shuffle-iterable.js.map +1 -1
  195. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-skip-iterable.js.map +1 -1
  196. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-skip-until-iterable.js.map +1 -1
  197. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-slice-iterable.js.map +1 -1
  198. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-sliding-iterable.js.map +1 -1
  199. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-sort-iterable.js.map +1 -1
  200. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js.map +1 -1
  201. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-iterable.js.map +1 -1
  202. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-iterable.js.map +1 -1
  203. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-tap-iterable.js.map +1 -1
  204. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-unique-iterable.js.map +1 -1
  205. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-update-iterable.js.map +1 -1
  206. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-when-iterable.js.map +1 -1
  207. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-zip-iterable.js.map +1 -1
  208. package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  209. package/dist/esm/collection/implementations/iterable-collection/_shared/chunk-iterable.js.map +1 -1
  210. package/dist/esm/collection/implementations/iterable-collection/_shared/chunk-while-iterable.js.map +1 -1
  211. package/dist/esm/collection/implementations/iterable-collection/_shared/collapse-iterable.js.map +1 -1
  212. package/dist/esm/collection/implementations/iterable-collection/_shared/count-by-iterable.js.map +1 -1
  213. package/dist/esm/collection/implementations/iterable-collection/_shared/cross-join-iterable.js.map +1 -1
  214. package/dist/esm/collection/implementations/iterable-collection/_shared/entries-iterable.js.map +1 -1
  215. package/dist/esm/collection/implementations/iterable-collection/_shared/filter-iterable.js.map +1 -1
  216. package/dist/esm/collection/implementations/iterable-collection/_shared/flat-map-iterable.js.map +1 -1
  217. package/dist/esm/collection/implementations/iterable-collection/_shared/group-by-iterable.js.map +1 -1
  218. package/dist/esm/collection/implementations/iterable-collection/_shared/insert-after-iterable.js.map +1 -1
  219. package/dist/esm/collection/implementations/iterable-collection/_shared/insert-before-iterable.js.map +1 -1
  220. package/dist/esm/collection/implementations/iterable-collection/_shared/map-iterable.js.map +1 -1
  221. package/dist/esm/collection/implementations/iterable-collection/_shared/merge-iterable.js.map +1 -1
  222. package/dist/esm/collection/implementations/iterable-collection/_shared/pad-end-iterable.js.map +1 -1
  223. package/dist/esm/collection/implementations/iterable-collection/_shared/pad-start-iterable.js.map +1 -1
  224. package/dist/esm/collection/implementations/iterable-collection/_shared/partion-iterable.js.map +1 -1
  225. package/dist/esm/collection/implementations/iterable-collection/_shared/repeat-iterable.js.map +1 -1
  226. package/dist/esm/collection/implementations/iterable-collection/_shared/reverse-iterable.js.map +1 -1
  227. package/dist/esm/collection/implementations/iterable-collection/_shared/shuffle-iterable.js.map +1 -1
  228. package/dist/esm/collection/implementations/iterable-collection/_shared/skip-iterable.js.map +1 -1
  229. package/dist/esm/collection/implementations/iterable-collection/_shared/skip-until-iterable.js.map +1 -1
  230. package/dist/esm/collection/implementations/iterable-collection/_shared/slice-iterable.js.map +1 -1
  231. package/dist/esm/collection/implementations/iterable-collection/_shared/sliding-iterable.js.map +1 -1
  232. package/dist/esm/collection/implementations/iterable-collection/_shared/sort-iterable.js.map +1 -1
  233. package/dist/esm/collection/implementations/iterable-collection/_shared/split-iterable.js.map +1 -1
  234. package/dist/esm/collection/implementations/iterable-collection/_shared/take-iterable.js.map +1 -1
  235. package/dist/esm/collection/implementations/iterable-collection/_shared/take-until-iterable.js.map +1 -1
  236. package/dist/esm/collection/implementations/iterable-collection/_shared/tap-iterable.js.map +1 -1
  237. package/dist/esm/collection/implementations/iterable-collection/_shared/unique-iterable.js.map +1 -1
  238. package/dist/esm/collection/implementations/iterable-collection/_shared/update-iterable.js.map +1 -1
  239. package/dist/esm/collection/implementations/iterable-collection/_shared/when-iterable.js.map +1 -1
  240. package/dist/esm/collection/implementations/iterable-collection/_shared/zip-iterable.js.map +1 -1
  241. package/dist/esm/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  242. package/dist/esm/collection/implementations/list-collection/list-collection.js +2 -1
  243. package/dist/esm/collection/implementations/list-collection/list-collection.js.map +1 -1
  244. package/dist/esm/event-bus/contracts/_module.js +5 -0
  245. package/dist/esm/event-bus/contracts/_module.js.map +1 -0
  246. package/dist/esm/event-bus/contracts/_shared.js +31 -0
  247. package/dist/esm/event-bus/contracts/_shared.js.map +1 -0
  248. package/dist/esm/event-bus/contracts/event-bus-adapter.contract.js +1 -0
  249. package/dist/esm/event-bus/contracts/event-bus-adapter.contract.js.map +1 -0
  250. package/dist/esm/event-bus/contracts/event-bus-manager.contract.js +1 -0
  251. package/dist/esm/event-bus/contracts/event-bus-manager.contract.js.map +1 -0
  252. package/dist/esm/event-bus/contracts/event-bus.contract.js +1 -0
  253. package/dist/esm/event-bus/contracts/event-bus.contract.js.map +1 -0
  254. package/dist/esm/event-bus/implementations/_module.js +6 -0
  255. package/dist/esm/event-bus/implementations/_module.js.map +1 -0
  256. package/dist/esm/event-bus/implementations/_shared/test-utilities/_module.js +2 -0
  257. package/dist/esm/event-bus/implementations/_shared/test-utilities/_module.js.map +1 -0
  258. package/dist/esm/event-bus/implementations/_shared/test-utilities/event-bus-adapter.test-suite.js +48 -0
  259. package/dist/esm/event-bus/implementations/_shared/test-utilities/event-bus-adapter.test-suite.js.map +1 -0
  260. package/dist/esm/event-bus/implementations/event-bus/_module.js +3 -0
  261. package/dist/esm/event-bus/implementations/event-bus/_module.js.map +1 -0
  262. package/dist/esm/event-bus/implementations/event-bus/event-bus-manager.js +27 -0
  263. package/dist/esm/event-bus/implementations/event-bus/event-bus-manager.js.map +1 -0
  264. package/dist/esm/event-bus/implementations/event-bus/event-bus.js +100 -0
  265. package/dist/esm/event-bus/implementations/event-bus/event-bus.js.map +1 -0
  266. package/dist/esm/event-bus/implementations/event-bus/with-namespace-event-bus-adapter.js +37 -0
  267. package/dist/esm/event-bus/implementations/event-bus/with-namespace-event-bus-adapter.js.map +1 -0
  268. package/dist/esm/event-bus/implementations/event-bus/with-validation-event-bus-adapter.js +31 -0
  269. package/dist/esm/event-bus/implementations/event-bus/with-validation-event-bus-adapter.js.map +1 -0
  270. package/dist/esm/event-bus/implementations/memory-event-bus-adapter/_module.js +2 -0
  271. package/dist/esm/event-bus/implementations/memory-event-bus-adapter/_module.js.map +1 -0
  272. package/dist/esm/event-bus/implementations/memory-event-bus-adapter/memory-event-bus-adapter.js +19 -0
  273. package/dist/esm/event-bus/implementations/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -0
  274. package/dist/esm/event-bus/implementations/no-op-event-bus-adapter/_module.js +2 -0
  275. package/dist/esm/event-bus/implementations/no-op-event-bus-adapter/_module.js.map +1 -0
  276. package/dist/esm/event-bus/implementations/no-op-event-bus-adapter/no-op-event-bus-adapter.js +12 -0
  277. package/dist/esm/event-bus/implementations/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -0
  278. package/dist/esm/event-bus/implementations/redis-event-bus-adapter/_module.js +2 -0
  279. package/dist/esm/event-bus/implementations/redis-event-bus-adapter/_module.js.map +1 -0
  280. package/dist/esm/event-bus/implementations/redis-event-bus-adapter/redis-event-bus-adapter.js +41 -0
  281. package/dist/esm/event-bus/implementations/redis-event-bus-adapter/redis-event-bus-adapter.js.map +1 -0
  282. package/dist/esm/storage/contracts/_module.js +2 -0
  283. package/dist/esm/storage/contracts/_module.js.map +1 -1
  284. package/dist/esm/storage/contracts/storage-events.contract.js +11 -0
  285. package/dist/esm/storage/contracts/storage-events.contract.js.map +1 -0
  286. package/dist/esm/storage/contracts/storage-manager.contract.js +1 -0
  287. package/dist/esm/storage/contracts/storage-manager.contract.js.map +1 -0
  288. package/dist/esm/storage/implementations/_shared/test-utilities/storage-adapter.test-suite.js +293 -5
  289. package/dist/esm/storage/implementations/_shared/test-utilities/storage-adapter.test-suite.js.map +1 -1
  290. package/dist/esm/storage/implementations/storage/_module.js +1 -0
  291. package/dist/esm/storage/implementations/storage/_module.js.map +1 -1
  292. package/dist/esm/storage/implementations/storage/storage-manager.js +30 -0
  293. package/dist/esm/storage/implementations/storage/storage-manager.js.map +1 -0
  294. package/dist/esm/storage/implementations/storage/storage.js +69 -23
  295. package/dist/esm/storage/implementations/storage/storage.js.map +1 -1
  296. package/dist/esm/storage/implementations/storage/with-event-storage-adapter.js +251 -0
  297. package/dist/esm/storage/implementations/storage/with-event-storage-adapter.js.map +1 -0
  298. package/dist/esm/storage/implementations/storage/with-namespace-storage-adapter.js +0 -3
  299. package/dist/esm/storage/implementations/storage/with-namespace-storage-adapter.js.map +1 -1
  300. package/dist/esm/storage/implementations/storage/with-validation-storage-adapter.js.map +1 -1
  301. package/dist/esm/utilities/_module.js +1 -2
  302. package/dist/esm/utilities/_module.js.map +1 -1
  303. package/dist/esm/utilities/async/_module.js +4 -1
  304. package/dist/esm/utilities/async/_module.js.map +1 -1
  305. package/dist/esm/utilities/async/abortable-iterable/_module.js +2 -0
  306. package/dist/esm/utilities/async/abortable-iterable/_module.js.map +1 -0
  307. package/dist/esm/utilities/async/abortable-iterable/abortable-iterable.js.map +1 -0
  308. package/dist/esm/utilities/async/delay-iterable/_module.js +2 -0
  309. package/dist/esm/utilities/async/delay-iterable/_module.js.map +1 -0
  310. package/dist/esm/utilities/async/delay-iterable/delay-iterable.js.map +1 -0
  311. package/dist/esm/utilities/async/retry/retry.js +1 -1
  312. package/dist/esm/utilities/async/retry/retry.js.map +1 -1
  313. package/dist/esm/utilities/async/retry-iterable/_module.js +2 -0
  314. package/dist/esm/utilities/async/retry-iterable/_module.js.map +1 -0
  315. package/dist/esm/utilities/async/retry-iterable/retry-iterable.js.map +1 -0
  316. package/dist/esm/utilities/async/timeout-iterable/_module.js +2 -0
  317. package/dist/esm/utilities/async/timeout-iterable/_module.js.map +1 -0
  318. package/dist/esm/utilities/{async-iterable → async}/timeout-iterable/timeout-iterable.js +1 -1
  319. package/dist/esm/utilities/async/timeout-iterable/timeout-iterable.js.map +1 -0
  320. package/dist/esm/utilities/backof-policies/_module.js +5 -0
  321. package/dist/esm/utilities/backof-policies/_module.js.map +1 -0
  322. package/dist/esm/utilities/backof-policies/_shared.js.map +1 -0
  323. package/dist/esm/utilities/backof-policies/constant-backoff-policy/_module.js +2 -0
  324. package/dist/esm/utilities/backof-policies/constant-backoff-policy/_module.js.map +1 -0
  325. package/dist/esm/utilities/{async/backof-policies → backof-policies}/constant-backoff-policy/constant-backoff-policy.js +2 -2
  326. package/dist/esm/utilities/backof-policies/constant-backoff-policy/constant-backoff-policy.js.map +1 -0
  327. package/dist/esm/utilities/backof-policies/exponential-backoff-policy/_module.js +2 -0
  328. package/dist/esm/utilities/backof-policies/exponential-backoff-policy/_module.js.map +1 -0
  329. package/dist/esm/utilities/{async/backof-policies → backof-policies}/exponential-backoff-policy/exponential-backoff-policy.js +2 -2
  330. package/dist/esm/utilities/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js.map +1 -0
  331. package/dist/esm/utilities/backof-policies/linear-backoff-policy/_module.js +2 -0
  332. package/dist/esm/utilities/backof-policies/linear-backoff-policy/_module.js.map +1 -0
  333. package/dist/esm/utilities/{async/backof-policies → backof-policies}/linear-backoff-policy/linear-backoff-policy.js +2 -2
  334. package/dist/esm/utilities/backof-policies/linear-backoff-policy/linear-backoff-policy.js.map +1 -0
  335. package/dist/esm/utilities/backof-policies/polynomial-backoff-policy/_module.js +2 -0
  336. package/dist/esm/utilities/backof-policies/polynomial-backoff-policy/_module.js.map +1 -0
  337. package/dist/esm/utilities/{async/backof-policies → backof-policies}/polynomial-backoff-policy/polynomial-backoff-policy.js +2 -2
  338. package/dist/esm/utilities/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js.map +1 -0
  339. package/dist/esm/utilities/time-span/time-span.js.map +1 -1
  340. package/dist/esm/utilities/validation/_module.js.map +1 -1
  341. package/dist/types/_module.d.ts +2 -0
  342. package/dist/types/_shared/types.d.ts +1 -1
  343. package/dist/types/_shared/utilities.d.ts +8 -0
  344. package/dist/types/collection/contracts/async-collection.contract.d.ts +236 -43
  345. package/dist/types/collection/contracts/collection.contract.d.ts +229 -42
  346. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-chunk-iterable.d.ts +3 -0
  347. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-chunk-while-iterable.d.ts +3 -0
  348. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-collapse-iterable.d.ts +3 -0
  349. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-count-by-iterable.d.ts +3 -0
  350. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-cross-join-iterable.d.ts +3 -0
  351. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-entries-iterable.d.ts +3 -0
  352. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-error-handler-iterable.d.ts +3 -0
  353. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-filter-iterable.d.ts +3 -0
  354. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-flat-map-iterable.d.ts +3 -0
  355. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-group-by-iterable.d.ts +3 -0
  356. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-insert-after-iterable.d.ts +3 -0
  357. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-insert-before-iterable.d.ts +3 -0
  358. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-map-iterable.d.ts +3 -0
  359. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.d.ts +3 -0
  360. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-pad-end-iterable.d.ts +3 -0
  361. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-pad-start-iterable.d.ts +3 -0
  362. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-partion-iterable.d.ts +3 -0
  363. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-repeat-iterable.d.ts +3 -0
  364. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-reverse-iterable.d.ts +3 -0
  365. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-shuffle-iterable.d.ts +3 -0
  366. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-skip-iterable.d.ts +3 -0
  367. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-skip-until-iterable.d.ts +3 -0
  368. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-slice-iterable.d.ts +3 -0
  369. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-sliding-iterable.d.ts +3 -0
  370. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-sort-iterable.d.ts +3 -0
  371. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-split-iterable.d.ts +3 -0
  372. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-take-iterable.d.ts +3 -0
  373. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-take-until-iterable.d.ts +3 -0
  374. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-tap-iterable.d.ts +3 -0
  375. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-unique-iterable.d.ts +3 -0
  376. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-update-iterable.d.ts +3 -0
  377. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-when-iterable.d.ts +3 -0
  378. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-zip-iterable.d.ts +3 -0
  379. package/dist/types/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +10 -9
  380. package/dist/types/collection/implementations/iterable-collection/_shared/chunk-iterable.d.ts +3 -0
  381. package/dist/types/collection/implementations/iterable-collection/_shared/chunk-while-iterable.d.ts +3 -0
  382. package/dist/types/collection/implementations/iterable-collection/_shared/collapse-iterable.d.ts +3 -0
  383. package/dist/types/collection/implementations/iterable-collection/_shared/count-by-iterable.d.ts +3 -0
  384. package/dist/types/collection/implementations/iterable-collection/_shared/cross-join-iterable.d.ts +3 -0
  385. package/dist/types/collection/implementations/iterable-collection/_shared/entries-iterable.d.ts +3 -0
  386. package/dist/types/collection/implementations/iterable-collection/_shared/filter-iterable.d.ts +3 -0
  387. package/dist/types/collection/implementations/iterable-collection/_shared/flat-map-iterable.d.ts +3 -0
  388. package/dist/types/collection/implementations/iterable-collection/_shared/group-by-iterable.d.ts +3 -0
  389. package/dist/types/collection/implementations/iterable-collection/_shared/insert-after-iterable.d.ts +3 -0
  390. package/dist/types/collection/implementations/iterable-collection/_shared/insert-before-iterable.d.ts +3 -0
  391. package/dist/types/collection/implementations/iterable-collection/_shared/map-iterable.d.ts +3 -0
  392. package/dist/types/collection/implementations/iterable-collection/_shared/merge-iterable.d.ts +3 -0
  393. package/dist/types/collection/implementations/iterable-collection/_shared/pad-end-iterable.d.ts +3 -0
  394. package/dist/types/collection/implementations/iterable-collection/_shared/pad-start-iterable.d.ts +3 -0
  395. package/dist/types/collection/implementations/iterable-collection/_shared/partion-iterable.d.ts +3 -0
  396. package/dist/types/collection/implementations/iterable-collection/_shared/repeat-iterable.d.ts +3 -0
  397. package/dist/types/collection/implementations/iterable-collection/_shared/reverse-iterable.d.ts +3 -0
  398. package/dist/types/collection/implementations/iterable-collection/_shared/shuffle-iterable.d.ts +3 -0
  399. package/dist/types/collection/implementations/iterable-collection/_shared/skip-iterable.d.ts +3 -0
  400. package/dist/types/collection/implementations/iterable-collection/_shared/skip-until-iterable.d.ts +3 -0
  401. package/dist/types/collection/implementations/iterable-collection/_shared/slice-iterable.d.ts +3 -0
  402. package/dist/types/collection/implementations/iterable-collection/_shared/sliding-iterable.d.ts +3 -0
  403. package/dist/types/collection/implementations/iterable-collection/_shared/sort-iterable.d.ts +3 -0
  404. package/dist/types/collection/implementations/iterable-collection/_shared/split-iterable.d.ts +3 -0
  405. package/dist/types/collection/implementations/iterable-collection/_shared/take-iterable.d.ts +3 -0
  406. package/dist/types/collection/implementations/iterable-collection/_shared/take-until-iterable.d.ts +3 -0
  407. package/dist/types/collection/implementations/iterable-collection/_shared/tap-iterable.d.ts +3 -0
  408. package/dist/types/collection/implementations/iterable-collection/_shared/unique-iterable.d.ts +3 -0
  409. package/dist/types/collection/implementations/iterable-collection/_shared/update-iterable.d.ts +3 -0
  410. package/dist/types/collection/implementations/iterable-collection/_shared/when-iterable.d.ts +3 -0
  411. package/dist/types/collection/implementations/iterable-collection/_shared/zip-iterable.d.ts +3 -0
  412. package/dist/types/collection/implementations/iterable-collection/iterable-collection.d.ts +7 -7
  413. package/dist/types/collection/implementations/list-collection/list-collection.d.ts +7 -7
  414. package/dist/types/event-bus/contracts/_module.d.ts +4 -0
  415. package/dist/types/event-bus/contracts/_shared.d.ts +38 -0
  416. package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +23 -0
  417. package/dist/types/event-bus/contracts/event-bus-manager.contract.d.ts +120 -0
  418. package/dist/types/event-bus/contracts/event-bus.contract.d.ts +119 -0
  419. package/dist/types/event-bus/implementations/_module.d.ts +5 -0
  420. package/dist/types/event-bus/implementations/_shared/test-utilities/_module.d.ts +1 -0
  421. package/dist/types/event-bus/implementations/_shared/test-utilities/event-bus-adapter.test-suite.d.ts +36 -0
  422. package/dist/types/event-bus/implementations/event-bus/_module.d.ts +2 -0
  423. package/dist/types/event-bus/implementations/event-bus/event-bus-manager.d.ts +26 -0
  424. package/dist/types/event-bus/implementations/event-bus/event-bus.d.ts +102 -0
  425. package/dist/types/event-bus/implementations/event-bus/with-namespace-event-bus-adapter.d.ts +16 -0
  426. package/dist/types/event-bus/implementations/event-bus/with-validation-event-bus-adapter.d.ts +17 -0
  427. package/dist/types/event-bus/implementations/memory-event-bus-adapter/_module.d.ts +1 -0
  428. package/dist/types/event-bus/implementations/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +15 -0
  429. package/dist/types/event-bus/implementations/no-op-event-bus-adapter/_module.d.ts +1 -0
  430. package/dist/types/event-bus/implementations/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +14 -0
  431. package/dist/types/event-bus/implementations/redis-event-bus-adapter/_module.d.ts +1 -0
  432. package/dist/types/event-bus/implementations/redis-event-bus-adapter/redis-event-bus-adapter.d.ts +28 -0
  433. package/dist/types/serializer/contracts/serializer.contract.d.ts +0 -3
  434. package/dist/types/storage/contracts/_module.d.ts +2 -0
  435. package/dist/types/storage/contracts/storage-adapter.contract.d.ts +12 -24
  436. package/dist/types/storage/contracts/storage-events.contract.d.ts +91 -0
  437. package/dist/types/storage/contracts/storage-manager.contract.d.ts +100 -0
  438. package/dist/types/storage/contracts/storage.contract.d.ts +84 -51
  439. package/dist/types/storage/implementations/_shared/test-utilities/storage-adapter.test-suite.d.ts +18 -2
  440. package/dist/types/storage/implementations/storage/_module.d.ts +1 -0
  441. package/dist/types/storage/implementations/storage/storage-manager.d.ts +29 -0
  442. package/dist/types/storage/implementations/storage/storage.d.ts +81 -8
  443. package/dist/types/storage/implementations/storage/with-event-storage-adapter.d.ts +31 -0
  444. package/dist/types/storage/implementations/storage/with-namespace-storage-adapter.d.ts +0 -1
  445. package/dist/types/storage/implementations/storage/with-validation-storage-adapter.d.ts +3 -0
  446. package/dist/types/utilities/_module.d.ts +1 -2
  447. package/dist/types/utilities/async/_module.d.ts +4 -1
  448. package/dist/types/utilities/async/_shared.d.ts +6 -6
  449. package/dist/types/utilities/async/abortable/abortable.d.ts +2 -2
  450. package/dist/types/utilities/async/abortable-iterable/_module.d.ts +1 -0
  451. package/dist/types/utilities/{async-iterable → async}/abortable-iterable/abortable-iterable.d.ts +2 -2
  452. package/dist/types/utilities/async/delay/delay.d.ts +2 -2
  453. package/dist/types/utilities/async/delay-iterable/_module.d.ts +1 -0
  454. package/dist/types/utilities/{async-iterable → async}/delay-iterable/delay-iterable.d.ts +2 -2
  455. package/dist/types/utilities/async/lazy-promise/lazy-promise.d.ts +3 -3
  456. package/dist/types/utilities/async/retry/retry.d.ts +7 -4
  457. package/dist/types/utilities/async/retry-iterable/_module.d.ts +1 -0
  458. package/dist/types/utilities/{async-iterable → async}/retry-iterable/retry-iterable.d.ts +1 -1
  459. package/dist/types/utilities/async/timeout/timeout.d.ts +2 -2
  460. package/dist/types/utilities/async/timeout-iterable/_module.d.ts +1 -0
  461. package/dist/types/utilities/{async-iterable → async}/timeout-iterable/timeout-iterable.d.ts +2 -2
  462. package/dist/types/utilities/backof-policies/_module.d.ts +5 -0
  463. package/dist/types/utilities/{async/backof-policies → backof-policies}/_shared.d.ts +2 -2
  464. package/dist/types/utilities/backof-policies/constant-backoff-policy/_module.d.ts +1 -0
  465. package/dist/types/utilities/{async/backof-policies → backof-policies}/constant-backoff-policy/constant-backoff-policy.d.ts +3 -3
  466. package/dist/types/utilities/backof-policies/exponential-backoff-policy/_module.d.ts +1 -0
  467. package/dist/types/utilities/{async/backof-policies → backof-policies}/exponential-backoff-policy/exponential-backoff-policy.d.ts +3 -3
  468. package/dist/types/utilities/backof-policies/linear-backoff-policy/_module.d.ts +1 -0
  469. package/dist/types/utilities/{async/backof-policies → backof-policies}/linear-backoff-policy/linear-backoff-policy.d.ts +3 -3
  470. package/dist/types/utilities/backof-policies/polynomial-backoff-policy/_module.d.ts +1 -0
  471. package/dist/types/utilities/{async/backof-policies → backof-policies}/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +3 -3
  472. package/dist/types/utilities/time-span/time-span.d.ts +2 -1
  473. package/dist/types/utilities/validation/_module.d.ts +21 -1
  474. package/package.json +1 -1
  475. package/dist/cjs/serializer/_module.js.map +0 -1
  476. package/dist/cjs/storage/implementations/_shared/test-utilities/storage-adapter-api.test-suite.js +0 -300
  477. package/dist/cjs/storage/implementations/_shared/test-utilities/storage-adapter-api.test-suite.js.map +0 -1
  478. package/dist/cjs/storage/implementations/_shared/test-utilities/storage-adapter-value.test-suite.js +0 -1208
  479. package/dist/cjs/storage/implementations/_shared/test-utilities/storage-adapter-value.test-suite.js.map +0 -1
  480. package/dist/cjs/utilities/async/backof-policies/_module.js +0 -21
  481. package/dist/cjs/utilities/async/backof-policies/_module.js.map +0 -1
  482. package/dist/cjs/utilities/async/backof-policies/_shared.js.map +0 -1
  483. package/dist/cjs/utilities/async/backof-policies/constant-backoff-policy/_module.js +0 -18
  484. package/dist/cjs/utilities/async/backof-policies/constant-backoff-policy/_module.js.map +0 -1
  485. package/dist/cjs/utilities/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js.map +0 -1
  486. package/dist/cjs/utilities/async/backof-policies/exponential-backoff-policy/_module.js.map +0 -1
  487. package/dist/cjs/utilities/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js.map +0 -1
  488. package/dist/cjs/utilities/async/backof-policies/linear-backoff-policy/_module.js +0 -18
  489. package/dist/cjs/utilities/async/backof-policies/linear-backoff-policy/_module.js.map +0 -1
  490. package/dist/cjs/utilities/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js.map +0 -1
  491. package/dist/cjs/utilities/async/backof-policies/polynomial-backoff-policy/_module.js +0 -18
  492. package/dist/cjs/utilities/async/backof-policies/polynomial-backoff-policy/_module.js.map +0 -1
  493. package/dist/cjs/utilities/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js.map +0 -1
  494. package/dist/cjs/utilities/async-iterable/_module.js +0 -23
  495. package/dist/cjs/utilities/async-iterable/_module.js.map +0 -1
  496. package/dist/cjs/utilities/async-iterable/abortable-iterable/_module.js.map +0 -1
  497. package/dist/cjs/utilities/async-iterable/abortable-iterable/abortable-iterable.js.map +0 -1
  498. package/dist/cjs/utilities/async-iterable/delay-iterable/_module.js.map +0 -1
  499. package/dist/cjs/utilities/async-iterable/delay-iterable/delay-iterable.js.map +0 -1
  500. package/dist/cjs/utilities/async-iterable/retry-iterable/_module.js.map +0 -1
  501. package/dist/cjs/utilities/async-iterable/retry-iterable/retry-iterable.js.map +0 -1
  502. package/dist/cjs/utilities/async-iterable/timeout-iterable/_module.js.map +0 -1
  503. package/dist/cjs/utilities/async-iterable/timeout-iterable/timeout-iterable.js.map +0 -1
  504. package/dist/esm/serializer/_module.js +0 -6
  505. package/dist/esm/serializer/_module.js.map +0 -1
  506. package/dist/esm/storage/implementations/_shared/test-utilities/storage-adapter-api.test-suite.js +0 -297
  507. package/dist/esm/storage/implementations/_shared/test-utilities/storage-adapter-api.test-suite.js.map +0 -1
  508. package/dist/esm/storage/implementations/_shared/test-utilities/storage-adapter-value.test-suite.js +0 -1205
  509. package/dist/esm/storage/implementations/_shared/test-utilities/storage-adapter-value.test-suite.js.map +0 -1
  510. package/dist/esm/utilities/async/backof-policies/_module.js +0 -5
  511. package/dist/esm/utilities/async/backof-policies/_module.js.map +0 -1
  512. package/dist/esm/utilities/async/backof-policies/_shared.js.map +0 -1
  513. package/dist/esm/utilities/async/backof-policies/constant-backoff-policy/_module.js +0 -2
  514. package/dist/esm/utilities/async/backof-policies/constant-backoff-policy/_module.js.map +0 -1
  515. package/dist/esm/utilities/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js.map +0 -1
  516. package/dist/esm/utilities/async/backof-policies/exponential-backoff-policy/_module.js +0 -2
  517. package/dist/esm/utilities/async/backof-policies/exponential-backoff-policy/_module.js.map +0 -1
  518. package/dist/esm/utilities/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js.map +0 -1
  519. package/dist/esm/utilities/async/backof-policies/linear-backoff-policy/_module.js +0 -2
  520. package/dist/esm/utilities/async/backof-policies/linear-backoff-policy/_module.js.map +0 -1
  521. package/dist/esm/utilities/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js.map +0 -1
  522. package/dist/esm/utilities/async/backof-policies/polynomial-backoff-policy/_module.js +0 -2
  523. package/dist/esm/utilities/async/backof-policies/polynomial-backoff-policy/_module.js.map +0 -1
  524. package/dist/esm/utilities/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js.map +0 -1
  525. package/dist/esm/utilities/async-iterable/_module.js +0 -5
  526. package/dist/esm/utilities/async-iterable/_module.js.map +0 -1
  527. package/dist/esm/utilities/async-iterable/abortable-iterable/_module.js +0 -2
  528. package/dist/esm/utilities/async-iterable/abortable-iterable/_module.js.map +0 -1
  529. package/dist/esm/utilities/async-iterable/abortable-iterable/abortable-iterable.js.map +0 -1
  530. package/dist/esm/utilities/async-iterable/delay-iterable/_module.js +0 -2
  531. package/dist/esm/utilities/async-iterable/delay-iterable/_module.js.map +0 -1
  532. package/dist/esm/utilities/async-iterable/delay-iterable/delay-iterable.js.map +0 -1
  533. package/dist/esm/utilities/async-iterable/retry-iterable/_module.js +0 -2
  534. package/dist/esm/utilities/async-iterable/retry-iterable/_module.js.map +0 -1
  535. package/dist/esm/utilities/async-iterable/retry-iterable/retry-iterable.js.map +0 -1
  536. package/dist/esm/utilities/async-iterable/timeout-iterable/_module.js +0 -2
  537. package/dist/esm/utilities/async-iterable/timeout-iterable/_module.js.map +0 -1
  538. package/dist/esm/utilities/async-iterable/timeout-iterable/timeout-iterable.js.map +0 -1
  539. package/dist/types/serializer/_module.d.ts +0 -5
  540. package/dist/types/storage/implementations/_shared/test-utilities/storage-adapter-api.test-suite.d.ts +0 -20
  541. package/dist/types/storage/implementations/_shared/test-utilities/storage-adapter-value.test-suite.d.ts +0 -20
  542. package/dist/types/utilities/async/backof-policies/_module.d.ts +0 -5
  543. package/dist/types/utilities/async/backof-policies/constant-backoff-policy/_module.d.ts +0 -1
  544. package/dist/types/utilities/async/backof-policies/exponential-backoff-policy/_module.d.ts +0 -1
  545. package/dist/types/utilities/async/backof-policies/linear-backoff-policy/_module.d.ts +0 -1
  546. package/dist/types/utilities/async/backof-policies/polynomial-backoff-policy/_module.d.ts +0 -1
  547. package/dist/types/utilities/async-iterable/_module.d.ts +0 -4
  548. package/dist/types/utilities/async-iterable/abortable-iterable/_module.d.ts +0 -1
  549. package/dist/types/utilities/async-iterable/delay-iterable/_module.d.ts +0 -1
  550. package/dist/types/utilities/async-iterable/retry-iterable/_module.d.ts +0 -1
  551. package/dist/types/utilities/async-iterable/timeout-iterable/_module.d.ts +0 -1
  552. /package/dist/cjs/utilities/{async-iterable → async}/abortable-iterable/abortable-iterable.js +0 -0
  553. /package/dist/cjs/utilities/{async-iterable → async}/delay-iterable/delay-iterable.js +0 -0
  554. /package/dist/cjs/utilities/{async-iterable → async}/retry-iterable/retry-iterable.js +0 -0
  555. /package/dist/cjs/utilities/{async/backof-policies → backof-policies}/_shared.js +0 -0
  556. /package/dist/esm/utilities/{async-iterable → async}/abortable-iterable/abortable-iterable.js +0 -0
  557. /package/dist/esm/utilities/{async-iterable → async}/delay-iterable/delay-iterable.js +0 -0
  558. /package/dist/esm/utilities/{async-iterable → async}/retry-iterable/retry-iterable.js +0 -0
  559. /package/dist/esm/utilities/{async/backof-policies → backof-policies}/_shared.js +0 -0
@@ -2,7 +2,7 @@
2
2
  * @module Collection
3
3
  */
4
4
  import { type Collapse, type Comparator, type Predicate, type ICollection, type Map, type Modifier, type Tap, type Transform, type ChangendItem, type Reduce, type ForEach, type CrossJoinResult } from "../../../collection/contracts/_module";
5
- import { type EnsureType, type Lazyable } from "../../../_shared/types";
5
+ import { type Lazyable } from "../../../_shared/types";
6
6
  import { type RecordItem } from "../../../_shared/types";
7
7
  /**
8
8
  * All methods in <i>ListCollection</i> are executed eagerly.
@@ -25,16 +25,16 @@ export declare class ListCollection<TInput> implements ICollection<TInput> {
25
25
  reduce(reduceFn: Reduce<TInput, ICollection<TInput>, TInput>): TInput;
26
26
  reduce(reduceFn: Reduce<TInput, ICollection<TInput>, TInput>, initialValue: TInput): TInput;
27
27
  reduce<TOutput>(reduceFn: Reduce<TInput, ICollection<TInput>, TOutput>, initialValue: TOutput): TOutput;
28
- join(separator?: string): EnsureType<TInput, string>;
28
+ join(separator?: string): Extract<TInput, string>;
29
29
  collapse(): ICollection<Collapse<TInput>>;
30
30
  flatMap<TOutput>(mapFn: Map<TInput, ICollection<TInput>, Iterable<TOutput>>): ICollection<TOutput>;
31
31
  change<TFilterOutput extends TInput, TMapOutput>(predicateFn: Predicate<TInput, ICollection<TInput>, TFilterOutput>, mapFn: Map<TFilterOutput, ICollection<TInput>, TMapOutput>): ICollection<ChangendItem<TInput, TFilterOutput, TMapOutput>>;
32
32
  page(page: number, pageSize: number): ICollection<TInput>;
33
- sum(): EnsureType<TInput, number>;
34
- average(): EnsureType<TInput, number>;
35
- median(): EnsureType<TInput, number>;
36
- min(): EnsureType<TInput, number>;
37
- max(): EnsureType<TInput, number>;
33
+ sum(): Extract<TInput, number>;
34
+ average(): Extract<TInput, number>;
35
+ median(): Extract<TInput, number>;
36
+ min(): Extract<TInput, number>;
37
+ max(): Extract<TInput, number>;
38
38
  percentage(predicateFn: Predicate<TInput, ICollection<TInput>>): number;
39
39
  some<TOutput extends TInput>(predicateFn: Predicate<TInput, ICollection<TInput>, TOutput>): boolean;
40
40
  every<TOutput extends TInput>(predicateFn: Predicate<TInput, ICollection<TInput>, TOutput>): boolean;
@@ -0,0 +1,4 @@
1
+ export * from "../../event-bus/contracts/_shared";
2
+ export * from "../../event-bus/contracts/event-bus.contract";
3
+ export * from "../../event-bus/contracts/event-bus-adapter.contract";
4
+ export * from "../../event-bus/contracts/event-bus-manager.contract";
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { Promisable } from "../../_shared/types";
5
+ export type IBaseEvent = {
6
+ type: string;
7
+ };
8
+ export type Listener<TEvent extends IBaseEvent> = (event: TEvent) => Promisable<void>;
9
+ /**
10
+ * @group Errors
11
+ */
12
+ export declare class EventBusError extends Error {
13
+ constructor(message: string, cause?: unknown);
14
+ }
15
+ /**
16
+ * @group Errors
17
+ */
18
+ export declare class UnexpectedEventBusError extends EventBusError {
19
+ constructor(message: string, cause?: unknown);
20
+ }
21
+ /**
22
+ * @group Errors
23
+ */
24
+ export declare class RemoveListenerEventBusError extends Error {
25
+ constructor(message: string, cause?: unknown);
26
+ }
27
+ /**
28
+ * @group Errors
29
+ */
30
+ export declare class AddListenerEventBusError extends Error {
31
+ constructor(message: string, cause?: unknown);
32
+ }
33
+ /**
34
+ * @group Errors
35
+ */
36
+ export declare class DispatchEventBusError extends Error {
37
+ constructor(message: string, cause?: unknown);
38
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { IBaseEvent, Listener } from "../../event-bus/contracts/_shared";
5
+ /**
6
+ * The <i>IEventBusAdapter</i> contract defines a way for dispatching and listening to events independent of underlying technology.
7
+ * This interface is not meant to be used directly, instead you should use <i>IEventBus</i>
8
+ * @group Contracts
9
+ */
10
+ export type IEventBusAdapter = {
11
+ /**
12
+ * The <i>addListener</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
13
+ */
14
+ addListener(event: string, listener: Listener<IBaseEvent>): PromiseLike<void>;
15
+ /**
16
+ * The <i>removeListener</i> method is used for removing <i>{@link Listener | listener}</i> for certain <i>event</i>.
17
+ */
18
+ removeListener(event: string, listener: Listener<IBaseEvent>): PromiseLike<void>;
19
+ /**
20
+ * The <i>dispatch</i> method is used for dispatching one or multiple <i>events</i>.
21
+ */
22
+ dispatch(events: IBaseEvent[]): PromiseLike<void>;
23
+ };
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { type Validator } from "../../utilities/_module";
5
+ import type { INamespacedEventBus } from "../../event-bus/contracts/event-bus.contract";
6
+ import type { IBaseEvent } from "../../event-bus/contracts/_shared";
7
+ /**
8
+ * The <i>IEventBusFactory</i> contract makes it easy to switch between different <i>{@link IEventBusAdapter | event adapters}</i> dynamically.
9
+ * @group Contracts
10
+ */
11
+ export type IEventBusFactory<TAdapters extends string = string, TEvents extends IBaseEvent = IBaseEvent> = {
12
+ /**
13
+ * @example
14
+ * ```ts
15
+ * import { EventBusManager, MemoryEventBusAdapter, RedisEventBusAdapter } from "@daiso-tech/core";
16
+ * import Redis from "ioredis";
17
+ *
18
+ * const eventBusManager = new EventBusManager({
19
+ * adapters: {
20
+ * memory: new MemoryEventBusAdapter(),
21
+ * redis: new RedisEventBusAdapter({
22
+ * dispatcherClient: new Redis();
23
+ * listenerClient: new Redis();
24
+ * }),
25
+ * },
26
+ * defaultAdapter: "memory",
27
+ * rootNamespace: "@storage/"
28
+ * });
29
+ *
30
+ * (async () => {
31
+ * // Will dispatch envent using the default adapter which is the memory addapter
32
+ * await eventBusManager
33
+ * .use()
34
+ * .dispatch({ type: "add", a: 1, b: 2 });
35
+ * // Will dispatch envent using the redis addapter
36
+ * await eventBusManager
37
+ * .use("redis")
38
+ * .dispatch({ type: "add", a: 1, b: 2 });
39
+ * })();
40
+ * ```
41
+ */
42
+ use(adapter?: TAdapters): INamespacedEventBus<TEvents>;
43
+ };
44
+ /**
45
+ * The <i>IEventBusManager</i> contract makes it easy to configure and switch between different <i>{@link IEventBusAdapter | event adapters}</i> dynamically.
46
+ * @group Contracts
47
+ */
48
+ export type IEventBusManager<TAdapters extends string = string, TEvents extends IBaseEvent = IBaseEvent> = IEventBusFactory<TAdapters, TEvents> & {
49
+ /**
50
+ * The <i>withValidation</i> method is used to set a <i>validator</i>, which validates the event during runtime.
51
+ * The type is inferred from the provided <i>validator</i>.
52
+ * @example
53
+ * ```ts
54
+ * import { EventBusManager, MemoryEventBusAdapter, RedisEventBusAdapter, zodValidator } from "@daiso-tech/core";
55
+ * import Redis from "ioredis";
56
+ * import { z } from "zod"
57
+ *
58
+ * const eventBusManager = new EventBusManager({
59
+ * adapters: {
60
+ * memory: new MemoryEventBusAdapter(),
61
+ * redis: new RedisEventBusAdapter({
62
+ * dispatcherClient: new Redis();
63
+ * listenerClient: new Redis();
64
+ * }),
65
+ * },
66
+ * defaultAdapter: "memory",
67
+ * rootNamespace: "@storage/"
68
+ * });
69
+ *
70
+ * (async () => {
71
+ * const addEventSchema = z.zod({
72
+ * type: z.literal("add"),
73
+ * a: z.number(),
74
+ * b: z.number(),
75
+ * });
76
+ * await eventBusManager
77
+ * .withValidation(zodValidator(addEventSchema))
78
+ * .use()
79
+ * // You will se an typescript error and get runtime erorr
80
+ * .dispatch({ type: "add" });
81
+ * })();
82
+ * ```
83
+ */
84
+ withValidation<TOutput extends TEvents = TEvents>(validator: Validator<TOutput>): IEventBusFactory<TAdapters, TOutput>;
85
+ /**
86
+ * The <i>withTypes</i> method is used to set the event types of the <i>{@link IEventBus}</i>.
87
+ * @example
88
+ * ```ts
89
+ * import { EventBusManager, MemoryEventBusAdapter, RedisEventBusAdapter, zodValidator } from "@daiso-tech/core";
90
+ * import Redis from "ioredis";
91
+ * import { z } from "zod"
92
+ *
93
+ * const eventBusManager = new EventBusManager({
94
+ * adapters: {
95
+ * memory: new MemoryEventBusAdapter(),
96
+ * redis: new RedisEventBusAdapter({
97
+ * dispatcherClient: new Redis();
98
+ * listenerClient: new Redis();
99
+ * }),
100
+ * },
101
+ * defaultAdapter: "memory",
102
+ * rootNamespace: "@storage/"
103
+ * });
104
+ *
105
+ * (async () => {
106
+ * type AddEvent = {
107
+ * type: "add";
108
+ * a: number;
109
+ * b: number;
110
+ * };
111
+ * await eventBusManager
112
+ * .withTypes<AddEvent>()
113
+ * .use()
114
+ * // You will se an typescript error
115
+ * .dispatch({ type: "add" });
116
+ * })();
117
+ * ```
118
+ */
119
+ withType<TOutput extends TEvents = TEvents>(): IEventBusFactory<TAdapters, TOutput>;
120
+ };
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { OneOrMore } from "../../_shared/types";
5
+ import type { IBaseEvent, Listener } from "../../event-bus/contracts/_shared";
6
+ export type SelectEvent<TEvents extends IBaseEvent, TEventType extends TEvents["type"]> = Extract<TEvents, {
7
+ type: IBaseEvent extends TEvents ? string : TEventType;
8
+ }>;
9
+ export type Unsubscribe = () => PromiseLike<void>;
10
+ /**
11
+ * The <i>IListenable</i> contract defines a way listening to events independent of underlying technology
12
+ * @group Contracts
13
+ */
14
+ export type IListenable<TEvents extends IBaseEvent = IBaseEvent> = {
15
+ /**
16
+ * The <i>addListener</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
17
+ * A listener can only be added once for a specific event. Adding the same listener multiple times will have no effect and nothing will occur.
18
+ * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
19
+ */
20
+ addListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<void>;
21
+ /**
22
+ * The <i>addListenerMany</i> method is used for adding multiple <i>{@link Listener | listeners}</i> for certain <i>events</i>.
23
+ * A listener can only be added once for a specific event. Adding the same listener multiple times will have no effect and nothing will occur.
24
+ * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
25
+ */
26
+ addListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<void>;
27
+ /**
28
+ * The <i>removeListener</i> method is used for removing <i>{@link Listener | listener}</i> for certain <i>event</i>.
29
+ * Removing unadded listener will have no effect and nothing will occur.
30
+ * @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
31
+ */
32
+ removeListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<void>;
33
+ /**
34
+ * The <i>removeListener</i> method is used for removing multiple <i>{@link Listener | listeners}</i> for certain <i>event</i>.
35
+ * Removing unadded listener will have no effect and nothing will occur.
36
+ * @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
37
+ */
38
+ removeListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<void>;
39
+ /**
40
+ * The <i>subscribe</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
41
+ * A listener can only be added once for a specific event. Adding the same listener multiple times will have no effect and nothing will occur.
42
+ */
43
+ subscribe<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<Unsubscribe>;
44
+ /**
45
+ * The <i>subscribeMany</i> method is used for adding <i>{@link Listener | listener}</i> for multiple <i>events</i>.
46
+ * A listener can only be added once for a specific event. Adding the same listener multiple times will have no effect and nothing will occur.
47
+ */
48
+ subscribeMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<Unsubscribe>;
49
+ };
50
+ /**
51
+ * The <i>IEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
52
+ * It commes with more convient methods compared to <i>IEventBusAdapter</i>.
53
+ * @group Contracts
54
+ */
55
+ export type IEventBus<TEvents extends IBaseEvent = IBaseEvent> = IListenable<TEvents> & {
56
+ /**
57
+ * The <i>dispatch</i> method is used for dispatching one or multiple <i>events</i>.
58
+
59
+ * @throws {DispatchEventBusError} {@link DispatchEventBusError}
60
+ */
61
+ dispatch(events: OneOrMore<TEvents>): PromiseLike<void>;
62
+ /**
63
+ * The <i>getNamespace</i> method return the complete namespace.
64
+ * @example
65
+ * ```ts
66
+ * const eventBus = new EventBus(new MemoryEventBusAdapter(), {
67
+ * rootNamespace: "@root/"
68
+ * });
69
+ *
70
+ * // Will be "@root/"
71
+ * console.log(eventBus.getNamespace())
72
+ *
73
+ * const eventBusA = eventBus.withNamespace("a/");
74
+ *
75
+ * // Will be "@root/a/"
76
+ * console.log(eventBusA.getNamespace())
77
+ * ```
78
+ */
79
+ getNamespace(): string;
80
+ };
81
+ /**
82
+ * The <i>INamespacedEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
83
+ * It commes with one extra method which is useful for multitennat applications compared to <i>IEventBus</i>.
84
+ * @group Contracts
85
+ */
86
+ export type INamespacedEventBus<TEvents extends IBaseEvent = IBaseEvent> = IEventBus<TEvents> & {
87
+ /**
88
+ * The <i>withNamespace</i> method returns new instance of <i>{@link IEventBus}</i> where all the events names will be prefixed with a given <i>namespace</i>.
89
+ * This useful for multitennat applications.
90
+ * @example
91
+ * ```ts
92
+ * import { EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
93
+ *
94
+ * (async () => {
95
+ * const eventBus = new EventBus(new MemoryEventBusAdapter());
96
+ *
97
+ * const eventBusA = eventBus.withNamespace("a");
98
+ * await eventBusA.subscribe("add", (event) => {
99
+ * // This will be logged
100
+ * console.log("eventBusA:", event);
101
+ * });
102
+ *
103
+ * const eventBusB = eventBus.withNamespace("b");
104
+ * await eventBusB.subscribe("add", (event) => {
105
+ * // This will never be logged
106
+ * console.log("eventBusB:", event);
107
+ * });
108
+ *
109
+ * await eventBusA.dispatch({
110
+ * type: "add",
111
+ * a: 1,
112
+ * b: 2
113
+ * })
114
+ * })();
115
+ *
116
+ * ```
117
+ */
118
+ withNamespace(namespace: string): IEventBus<TEvents>;
119
+ };
@@ -0,0 +1,5 @@
1
+ export * from "../../event-bus/implementations/_shared/test-utilities/_module";
2
+ export * from "../../event-bus/implementations/event-bus/_module";
3
+ export * from "../../event-bus/implementations/memory-event-bus-adapter/_module";
4
+ export * from "../../event-bus/implementations/redis-event-bus-adapter/_module";
5
+ export * from "../../event-bus/implementations/no-op-event-bus-adapter/_module";
@@ -0,0 +1 @@
1
+ export * from "../../../../event-bus/implementations/_shared/test-utilities/event-bus-adapter.test-suite";
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { type TestAPI, type SuiteAPI, type ExpectStatic, type beforeEach } from "vitest";
5
+ import type { IEventBusAdapter } from "../../../../event-bus/contracts/_module";
6
+ import { type Promisable } from "../../../../_shared/types";
7
+ /**
8
+ * @group Utilities
9
+ */
10
+ export type EventBusTestSuiteSettings = {
11
+ expect: ExpectStatic;
12
+ test: TestAPI;
13
+ describe: SuiteAPI;
14
+ beforeEach: typeof beforeEach;
15
+ createAdapter: () => Promisable<IEventBusAdapter>;
16
+ };
17
+ /**
18
+ * The <i>eventBusAdapterTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IEventBusAdapter}</i> with vitest.
19
+ * @example
20
+ * ```ts
21
+ * import { eventBusAdapterTestSuite, MemoryEventBusAdapter } from "@daiso-tech/core";
22
+ * import { expext, test, describe, beforeEach } from "vitest";
23
+ *
24
+ * describe("class: MemoryEventBusAdapter", () => {
25
+ * eventBusAdapterTestSuite({
26
+ * createAdapter: () => new MemoryEventBusAdapter(),
27
+ * test,
28
+ * beforeEach,
29
+ * expect,
30
+ * describe,
31
+ * });
32
+ * });
33
+ * ```
34
+ * @group Utilities
35
+ */
36
+ export declare function eventBusAdapterTestSuite(settings: EventBusTestSuiteSettings): void;
@@ -0,0 +1,2 @@
1
+ export * from "../../../event-bus/implementations/event-bus/event-bus";
2
+ export * from "../../../event-bus/implementations/event-bus/event-bus-manager";
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { type Validator } from "../../../utilities/_module";
5
+ import type { INamespacedEventBus, IEventBusAdapter, IEventBusManager, IBaseEvent, IEventBusFactory } from "../../../event-bus/contracts/_module";
6
+ /**
7
+ * @group Derivables
8
+ */
9
+ export type EventBusManagerSettings<TAdapters extends string = string> = {
10
+ adapters: Record<TAdapters, IEventBusAdapter>;
11
+ defaultAdapter: NoInfer<TAdapters>;
12
+ rootNamespace: string;
13
+ };
14
+ /**
15
+ * @group Derivables
16
+ */
17
+ export declare class EventBusManager<TAdapters extends string = string, TEvent extends IBaseEvent = IBaseEvent> implements IEventBusManager<TAdapters> {
18
+ private readonly adapters;
19
+ private readonly defaultAdapter;
20
+ private readonly rootNamespace;
21
+ private validator;
22
+ constructor(settings: EventBusManagerSettings<TAdapters>);
23
+ use(adapter?: TAdapters): INamespacedEventBus<TEvent>;
24
+ withValidation<TOutput extends IBaseEvent = IBaseEvent>(validator: Validator<TOutput>): IEventBusFactory<TAdapters, TOutput>;
25
+ withType<TOutput extends IBaseEvent = IBaseEvent>(): IEventBusFactory<TAdapters, TOutput>;
26
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { Validator } from "../../../utilities/_module";
5
+ import { LazyPromise } from "../../../utilities/_module";
6
+ import type { SelectEvent, Unsubscribe } from "../../../event-bus/contracts/_module";
7
+ import { type IEventBus, type INamespacedEventBus, type IEventBusAdapter, type Listener, type IBaseEvent } from "../../../event-bus/contracts/_module";
8
+ import type { OneOrMore } from "../../../_shared/types";
9
+ /**
10
+ * @group Derivables
11
+ */
12
+ export type EventBusSettings<TEvents extends IBaseEvent> = {
13
+ /**
14
+ * You can prefix all keys with a given <i>namespace</i>.
15
+ * This useful if you want to add multitenancy but still use the same database.
16
+ * @default {""}
17
+ * @example
18
+ * ```ts
19
+ * import { EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
20
+ *
21
+ * const eventBusA = new EventBus(new MemoryEventBusAdapter(), {
22
+ * rootNamespace: "@a/"
23
+ * });
24
+ * const eventBusB = new EventBus(new MemoryEventBusAdapter(), {
25
+ * rootNamespace: "@b/"
26
+ * });
27
+ *
28
+ * (async () => {
29
+ * eventBusB.addListener("add", event => {
30
+ * // This will never be logged because eventBusB has different namespace
31
+ * console.log("eventBusB:", event);
32
+ * });
33
+ *
34
+ * eventBusB.addListener("add", event => {
35
+ * // This will be logged
36
+ * console.log("eventBusB:", event);
37
+ * });
38
+ *
39
+ * await eventBusA.dispatch([
40
+ * { type: "add", a: 1, b: 2 }
41
+ * ]);
42
+ * })();
43
+ * ```
44
+ */
45
+ rootNamespace?: string;
46
+ /**
47
+ * You can pass a custom <i>{@link Validator}</i> to validate, transform and sanitize your data.
48
+ * You could also use <i>{@link zodValidator}</i> which enables you to use zod for validating, transforming, and sanitizing.
49
+ * @example
50
+ * ```ts
51
+ * import { EventBus, MemoryEventBusAdapter, zodValidator } from "@daiso-tech/core";
52
+ * import { z } from "zod";
53
+ *
54
+ * const addEventSchema = z.object({
55
+ * type: z.literal("add"),
56
+ * a: z.number(),
57
+ * b: z.number(),
58
+ * });
59
+ *
60
+ * const subEventSchema = z.object({
61
+ * type: z.literal("sub"),
62
+ * c: z.number(),
63
+ * d: z.number(),
64
+ * });
65
+ *
66
+ * const eventBus = new EventBus(new MemoryEventBusAdapter(), {
67
+ * // Event type will be infered from validator
68
+ * validator: zodValidator(addEventSchema.or(subEventSchema))
69
+ * });
70
+ *
71
+ * (async () => {
72
+ * // An Typescript error will be seen and ValidationError will be thrown during runtime.
73
+ * await eventBus.dispatch([
74
+ * {
75
+ * type: "none existing",
76
+ * noneExistingField: 20
77
+ * }
78
+ * ]);
79
+ * })();
80
+ * ```
81
+ */
82
+ validator?: Validator<TEvents>;
83
+ };
84
+ /**
85
+ * <i>EventBus</i> class can be derived from any <i>{@link IEventBusAdapter}</i>.
86
+ * @group Derivables
87
+ */
88
+ export declare class EventBus<TEvents extends IBaseEvent = IBaseEvent> implements INamespacedEventBus<TEvents> {
89
+ private readonly eventBusAdapter;
90
+ private readonly namespace_;
91
+ private readonly validator;
92
+ constructor(eventBusAdapter: IEventBusAdapter, settings?: EventBusSettings<TEvents>);
93
+ withNamespace(namespace: string): IEventBus<TEvents>;
94
+ getNamespace(): string;
95
+ addListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
96
+ addListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
97
+ removeListener<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
98
+ removeListenerMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): LazyPromise<void>;
99
+ subscribe<TEventType extends TEvents["type"]>(event: TEventType, listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<Unsubscribe>;
100
+ subscribeMany<TEventType extends TEvents["type"]>(events: TEventType[], listener: Listener<SelectEvent<TEvents, TEventType>>): PromiseLike<Unsubscribe>;
101
+ dispatch(events: OneOrMore<TEvents>): LazyPromise<void>;
102
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../event-bus/contracts/_module";
5
+ /**
6
+ * @internal
7
+ */
8
+ export declare class WithNamespaceEventBusAdapter implements IEventBusAdapter {
9
+ private readonly eventBusAdapter;
10
+ private readonly namespace;
11
+ private readonly listenerMap;
12
+ constructor(eventBusAdapter: IEventBusAdapter, namespace: string);
13
+ addListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
14
+ removeListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
15
+ dispatch(events: IBaseEvent[]): Promise<void>;
16
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { Validator } from "../../../utilities/_module";
5
+ import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../event-bus/contracts/_module";
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare class WithValidationEventBusAdapter implements IEventBusAdapter {
10
+ private readonly eventBusAdapter;
11
+ private readonly validator;
12
+ private readonly listenerMap;
13
+ constructor(eventBusAdapter: IEventBusAdapter, validator: Validator<IBaseEvent>);
14
+ addListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
15
+ removeListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
16
+ dispatch(events: IBaseEvent[]): Promise<void>;
17
+ }
@@ -0,0 +1 @@
1
+ export * from "../../../event-bus/implementations/memory-event-bus-adapter/_module";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../event-bus/contracts/_module";
5
+ import { EventEmitter } from "node:events";
6
+ /**
7
+ * @group Adapters
8
+ */
9
+ export declare class MemoryEventBusAdapter implements IEventBusAdapter {
10
+ private readonly eventEmiter;
11
+ constructor(eventEmiter?: EventEmitter<[never]>);
12
+ addListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
13
+ removeListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
14
+ dispatch(events: IBaseEvent[]): Promise<void>;
15
+ }
@@ -0,0 +1 @@
1
+ export * from "../../../event-bus/implementations/no-op-event-bus-adapter/no-op-event-bus-adapter";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { Listener, IBaseEvent } from "../../../_module";
5
+ import type { IEventBusAdapter } from "../../../event-bus/contracts/event-bus-adapter.contract";
6
+ /**
7
+ * This <i>NoOpEventBusAdapter</i> will do nothing and is used for easily mocking IEventBus for testing.
8
+ * @group Adapters
9
+ */
10
+ export declare class NoOpEventBusAdapter implements IEventBusAdapter {
11
+ addListener(_event: string, _listener: Listener<IBaseEvent>): Promise<void>;
12
+ removeListener(_event: string, _listener: Listener<IBaseEvent>): Promise<void>;
13
+ dispatch(_events: IBaseEvent[]): Promise<void>;
14
+ }
@@ -0,0 +1 @@
1
+ export * from "../../../event-bus/implementations/memory-event-bus-adapter/_module";
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { type ISerializer } from "../../../serializer/contracts/_module";
5
+ import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../event-bus/contracts/_module";
6
+ import type Redis from "ioredis";
7
+ /**
8
+ * @group Adapters
9
+ */
10
+ export type RedisEventBusAdapterSettings = {
11
+ dispatcherClient: Redis;
12
+ listenerClient: Redis;
13
+ serializer?: ISerializer<string>;
14
+ };
15
+ /**
16
+ * @group Adapters
17
+ */
18
+ export declare class RedisEventBusAdapter implements IEventBusAdapter {
19
+ private readonly serializer;
20
+ private readonly dispatcherClient;
21
+ private readonly listenerClient;
22
+ private readonly eventEmitter;
23
+ constructor({ dispatcherClient, listenerClient, serializer, }: RedisEventBusAdapterSettings);
24
+ private redisListener;
25
+ addListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
26
+ removeListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
27
+ dispatch(events: IBaseEvent[]): Promise<void>;
28
+ }
@@ -21,9 +21,6 @@ export declare class DeserializationError extends SerializerError {
21
21
  }
22
22
  /**
23
23
  * @group Contracts
24
- * @throws {SerializerError} {@link SerializerError}
25
- * @throws {SerializationError} {@link SerializationError}
26
- * @throws {DeserializationError} {@link DeserializationError}
27
24
  */
28
25
  export type ISerializer<TSerialized = unknown> = {
29
26
  /**
@@ -1,3 +1,5 @@
1
1
  export * from "../../storage/contracts/_shared";
2
2
  export * from "../../storage/contracts/storage.contract";
3
3
  export * from "../../storage/contracts/storage-adapter.contract";
4
+ export * from "../../storage/contracts/storage-events.contract";
5
+ export * from "../../storage/contracts/storage-manager.contract";