@daiso-tech/core 0.15.0 → 0.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/dist/cjs/_module.js +2 -2
  2. package/dist/cjs/_module.js.map +1 -1
  3. package/dist/cjs/async/_module.js +1 -1
  4. package/dist/cjs/async/_module.js.map +1 -1
  5. package/dist/cjs/async/backof-policies/_module.js +1 -0
  6. package/dist/cjs/async/backof-policies/_module.js.map +1 -1
  7. package/dist/cjs/async/utilities/_module.js +3 -0
  8. package/dist/cjs/async/utilities/_module.js.map +1 -1
  9. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js +21 -12
  10. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  11. package/dist/cjs/cache/contracts/cache.events.js +168 -0
  12. package/dist/cjs/cache/contracts/cache.events.js.map +1 -1
  13. package/dist/cjs/cache/implementations/_shared/_module.js +1 -0
  14. package/dist/cjs/cache/implementations/_shared/_module.js.map +1 -1
  15. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js +256 -177
  16. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  17. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js +23 -2
  18. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  19. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +63 -20
  20. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  21. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js +2 -1
  22. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  23. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +56 -0
  24. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
  25. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +30 -16
  26. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  27. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js +1 -0
  28. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  29. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +26 -0
  30. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
  31. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +66 -39
  32. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  33. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js +2 -1
  34. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  35. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +44 -0
  36. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
  37. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +78 -28
  38. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  39. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +10 -1
  40. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  41. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js +1 -0
  42. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  43. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +32 -0
  44. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
  45. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +55 -23
  46. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  47. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js +1 -0
  48. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  49. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +56 -0
  50. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
  51. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +31 -17
  52. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  53. package/dist/cjs/cache/implementations/derivables/_module.js +3 -2
  54. package/dist/cjs/cache/implementations/derivables/_module.js.map +1 -1
  55. package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js +65 -0
  56. package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
  57. package/dist/cjs/cache/implementations/derivables/cache-factory.js +29 -18
  58. package/dist/cjs/cache/implementations/derivables/cache-factory.js.map +1 -1
  59. package/dist/cjs/cache/implementations/derivables/cache-settings.js +56 -0
  60. package/dist/cjs/cache/implementations/derivables/cache-settings.js.map +1 -0
  61. package/dist/cjs/cache/implementations/derivables/cache.js +334 -79
  62. package/dist/cjs/cache/implementations/derivables/cache.js.map +1 -1
  63. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js +14 -7
  64. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js.map +1 -1
  65. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js +1 -1
  66. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
  67. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
  68. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
  69. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
  70. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
  71. package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js +62 -41
  72. package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  73. package/dist/cjs/collection/implementations/iterable-collection/_shared/merge-iterable.js +6 -7
  74. package/dist/cjs/collection/implementations/iterable-collection/_shared/merge-iterable.js.map +1 -1
  75. package/dist/cjs/collection/implementations/iterable-collection/iterable-collection.js +11 -2
  76. package/dist/cjs/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  77. package/dist/cjs/collection/implementations/list-collection/list-collection.js +13 -0
  78. package/dist/cjs/collection/implementations/list-collection/list-collection.js.map +1 -1
  79. package/dist/cjs/event-bus/contracts/_module.js +2 -2
  80. package/dist/cjs/event-bus/contracts/_module.js.map +1 -1
  81. package/dist/cjs/event-bus/contracts/_shared.js +7 -0
  82. package/dist/cjs/event-bus/contracts/_shared.js.map +1 -1
  83. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +98 -38
  84. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  85. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js +197 -125
  86. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  87. package/dist/cjs/event-bus/implementations/adapters/_module.js +1 -1
  88. package/dist/cjs/event-bus/implementations/adapters/_module.js.map +1 -1
  89. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +2 -1
  90. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  91. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +26 -0
  92. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
  93. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +29 -11
  94. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  95. package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +9 -3
  96. package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  97. package/dist/cjs/{serializer/implementations/_shared/test-utilities → event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter}/_module.js +2 -1
  98. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -0
  99. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +38 -0
  100. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
  101. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +56 -0
  102. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -0
  103. package/dist/cjs/event-bus/implementations/derivables/_module.js +3 -1
  104. package/dist/cjs/event-bus/implementations/derivables/_module.js.map +1 -1
  105. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js +59 -0
  106. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
  107. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js +28 -17
  108. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  109. package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js +56 -0
  110. package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
  111. package/dist/cjs/event-bus/implementations/derivables/event-bus.js +106 -37
  112. package/dist/cjs/event-bus/implementations/derivables/event-bus.js.map +1 -1
  113. package/dist/cjs/serde/contracts/_module.js +23 -0
  114. package/dist/cjs/serde/contracts/_module.js.map +1 -0
  115. package/dist/cjs/serde/contracts/deserializer.contract.js +3 -0
  116. package/dist/cjs/serde/contracts/deserializer.contract.js.map +1 -0
  117. package/dist/cjs/serde/contracts/flexible-serde.contract.js +3 -0
  118. package/dist/cjs/serde/contracts/flexible-serde.contract.js.map +1 -0
  119. package/dist/cjs/serde/contracts/serde.contract.js +3 -0
  120. package/dist/cjs/serde/contracts/serde.contract.js.map +1 -0
  121. package/dist/cjs/{serializer/contracts/serializer.errors.js → serde/contracts/serde.errors.js} +7 -7
  122. package/dist/cjs/serde/contracts/serde.errors.js.map +1 -0
  123. package/dist/cjs/serde/contracts/serializable.contract.js +3 -0
  124. package/dist/cjs/serde/contracts/serializable.contract.js.map +1 -0
  125. package/dist/cjs/serde/contracts/serializer.contract.js.map +1 -0
  126. package/dist/cjs/{serializer → serde}/implementations/_module.js +6 -5
  127. package/dist/cjs/serde/implementations/_module.js.map +1 -0
  128. package/dist/cjs/{serializer/contracts → serde/implementations/_shared/test-utilities}/_module.js +2 -2
  129. package/dist/cjs/serde/implementations/_shared/test-utilities/_module.js.map +1 -0
  130. package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +53 -0
  131. package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
  132. package/dist/cjs/{serializer/implementations/_shared/test-utilities/serializer.test-suite.js → serde/implementations/_shared/test-utilities/serde.test-suite.js} +68 -93
  133. package/dist/cjs/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -0
  134. package/dist/cjs/{serializer/implementations/sql-serializer → serde/implementations/mongodb-serde}/_module.js +1 -1
  135. package/dist/cjs/serde/implementations/mongodb-serde/_module.js.map +1 -0
  136. package/dist/cjs/serde/implementations/mongodb-serde/mongodb-serde.js +36 -0
  137. package/dist/cjs/serde/implementations/mongodb-serde/mongodb-serde.js.map +1 -0
  138. package/dist/cjs/{serializer/implementations/redis-serializer → serde/implementations/no-op-serde}/_module.js +1 -1
  139. package/dist/cjs/serde/implementations/no-op-serde/_module.js.map +1 -0
  140. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js +16 -0
  141. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js.map +1 -0
  142. package/dist/cjs/{serializer/implementations/mongodb-serializer → serde/implementations/redis-serde}/_module.js +1 -1
  143. package/dist/cjs/serde/implementations/redis-serde/_module.js.map +1 -0
  144. package/dist/cjs/serde/implementations/redis-serde/redis-serde.js +37 -0
  145. package/dist/cjs/serde/implementations/redis-serde/redis-serde.js.map +1 -0
  146. package/dist/cjs/{event-bus/implementations/adapters/redis-event-bus-adapter → serde/implementations/sql-serde}/_module.js +1 -1
  147. package/dist/cjs/serde/implementations/sql-serde/_module.js.map +1 -0
  148. package/dist/cjs/serde/implementations/sql-serde/sql-serde.js +37 -0
  149. package/dist/cjs/serde/implementations/sql-serde/sql-serde.js.map +1 -0
  150. package/dist/cjs/serde/implementations/super-json-serde/_module.js +18 -0
  151. package/dist/cjs/serde/implementations/super-json-serde/_module.js.map +1 -0
  152. package/dist/cjs/{serializer/implementations/super-json-serializer/super-json-serializer.js → serde/implementations/super-json-serde/super-json-serde.js} +77 -100
  153. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js.map +1 -0
  154. package/dist/cjs/utilities/contracts/_module.js +1 -0
  155. package/dist/cjs/utilities/contracts/_module.js.map +1 -1
  156. package/dist/cjs/utilities/contracts/buildable.contract.js +3 -0
  157. package/dist/cjs/utilities/contracts/buildable.contract.js.map +1 -0
  158. package/dist/cjs/utilities/errors.js +10 -10
  159. package/dist/cjs/utilities/errors.js.map +1 -1
  160. package/dist/cjs/utilities/functions.js +9 -5
  161. package/dist/cjs/utilities/functions.js.map +1 -1
  162. package/dist/cjs/utilities/time-span/time-span.js +8 -0
  163. package/dist/cjs/utilities/time-span/time-span.js.map +1 -1
  164. package/dist/esm/_module.js +2 -2
  165. package/dist/esm/_module.js.map +1 -1
  166. package/dist/esm/async/_module.js +1 -1
  167. package/dist/esm/async/_module.js.map +1 -1
  168. package/dist/esm/async/backof-policies/_module.js +1 -0
  169. package/dist/esm/async/backof-policies/_module.js.map +1 -1
  170. package/dist/esm/async/utilities/_module.js +3 -0
  171. package/dist/esm/async/utilities/_module.js.map +1 -1
  172. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +21 -12
  173. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  174. package/dist/esm/cache/contracts/cache.events.js +158 -0
  175. package/dist/esm/cache/contracts/cache.events.js.map +1 -1
  176. package/dist/esm/cache/implementations/_shared/_module.js +1 -0
  177. package/dist/esm/cache/implementations/_shared/_module.js.map +1 -1
  178. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js +256 -177
  179. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  180. package/dist/esm/cache/implementations/_shared/cache.test-suite.js +23 -2
  181. package/dist/esm/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  182. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +64 -21
  183. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  184. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js +2 -1
  185. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  186. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +52 -0
  187. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
  188. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +29 -15
  189. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  190. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js +1 -0
  191. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  192. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +22 -0
  193. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
  194. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +66 -39
  195. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  196. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js +2 -1
  197. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  198. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +40 -0
  199. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
  200. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +78 -25
  201. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  202. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +10 -1
  203. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  204. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js +1 -0
  205. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  206. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +28 -0
  207. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
  208. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +55 -23
  209. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  210. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js +1 -0
  211. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  212. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +52 -0
  213. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
  214. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +29 -15
  215. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  216. package/dist/esm/cache/implementations/derivables/_module.js +3 -2
  217. package/dist/esm/cache/implementations/derivables/_module.js.map +1 -1
  218. package/dist/esm/cache/implementations/derivables/cache-factory-settings.js +61 -0
  219. package/dist/esm/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
  220. package/dist/esm/cache/implementations/derivables/cache-factory.js +30 -19
  221. package/dist/esm/cache/implementations/derivables/cache-factory.js.map +1 -1
  222. package/dist/esm/cache/implementations/derivables/cache-settings.js +52 -0
  223. package/dist/esm/cache/implementations/derivables/cache-settings.js.map +1 -0
  224. package/dist/esm/cache/implementations/derivables/cache.js +333 -78
  225. package/dist/esm/cache/implementations/derivables/cache.js.map +1 -1
  226. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js +14 -7
  227. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js.map +1 -1
  228. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js +1 -1
  229. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
  230. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
  231. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
  232. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
  233. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
  234. package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js +62 -41
  235. package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  236. package/dist/esm/collection/implementations/iterable-collection/_shared/merge-iterable.js +6 -7
  237. package/dist/esm/collection/implementations/iterable-collection/_shared/merge-iterable.js.map +1 -1
  238. package/dist/esm/collection/implementations/iterable-collection/iterable-collection.js +11 -2
  239. package/dist/esm/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  240. package/dist/esm/collection/implementations/list-collection/list-collection.js +13 -0
  241. package/dist/esm/collection/implementations/list-collection/list-collection.js.map +1 -1
  242. package/dist/esm/event-bus/contracts/_module.js +2 -2
  243. package/dist/esm/event-bus/contracts/_module.js.map +1 -1
  244. package/dist/esm/event-bus/contracts/_shared.js +5 -0
  245. package/dist/esm/event-bus/contracts/_shared.js.map +1 -1
  246. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +96 -36
  247. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  248. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js +195 -123
  249. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  250. package/dist/esm/event-bus/implementations/adapters/_module.js +1 -1
  251. package/dist/esm/event-bus/implementations/adapters/_module.js.map +1 -1
  252. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +2 -1
  253. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  254. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +22 -0
  255. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
  256. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +29 -11
  257. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  258. package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +9 -3
  259. package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  260. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +3 -0
  261. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -0
  262. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +34 -0
  263. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
  264. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +52 -0
  265. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -0
  266. package/dist/esm/event-bus/implementations/derivables/_module.js +3 -1
  267. package/dist/esm/event-bus/implementations/derivables/_module.js.map +1 -1
  268. package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js +55 -0
  269. package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
  270. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js +29 -18
  271. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  272. package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js +52 -0
  273. package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
  274. package/dist/esm/event-bus/implementations/derivables/event-bus.js +108 -39
  275. package/dist/esm/event-bus/implementations/derivables/event-bus.js.map +1 -1
  276. package/dist/esm/serde/contracts/_module.js +7 -0
  277. package/dist/esm/serde/contracts/_module.js.map +1 -0
  278. package/dist/esm/serde/contracts/deserializer.contract.js +1 -0
  279. package/dist/esm/serde/contracts/deserializer.contract.js.map +1 -0
  280. package/dist/esm/serde/contracts/flexible-serde.contract.js +1 -0
  281. package/dist/esm/serde/contracts/flexible-serde.contract.js.map +1 -0
  282. package/dist/esm/serde/contracts/serde.contract.js +1 -0
  283. package/dist/esm/serde/contracts/serde.contract.js.map +1 -0
  284. package/dist/esm/{serializer/contracts/serializer.errors.js → serde/contracts/serde.errors.js} +5 -5
  285. package/dist/esm/serde/contracts/serde.errors.js.map +1 -0
  286. package/dist/esm/serde/contracts/serializable.contract.js +1 -0
  287. package/dist/esm/serde/contracts/serializable.contract.js.map +1 -0
  288. package/dist/esm/serde/contracts/serializer.contract.js.map +1 -0
  289. package/dist/esm/serde/implementations/_module.js +7 -0
  290. package/dist/esm/serde/implementations/_module.js.map +1 -0
  291. package/dist/esm/serde/implementations/_shared/test-utilities/_module.js +3 -0
  292. package/dist/esm/serde/implementations/_shared/test-utilities/_module.js.map +1 -0
  293. package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +50 -0
  294. package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
  295. package/dist/esm/{serializer/implementations/_shared/test-utilities/serializer.test-suite.js → serde/implementations/_shared/test-utilities/serde.test-suite.js} +67 -92
  296. package/dist/esm/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -0
  297. package/dist/esm/serde/implementations/mongodb-serde/_module.js +2 -0
  298. package/dist/esm/serde/implementations/mongodb-serde/_module.js.map +1 -0
  299. package/dist/esm/{serializer/implementations/mongodb-serializer/mongodb-serializer.js → serde/implementations/mongodb-serde/mongodb-serde.js} +10 -10
  300. package/dist/esm/serde/implementations/mongodb-serde/mongodb-serde.js.map +1 -0
  301. package/dist/esm/serde/implementations/no-op-serde/_module.js +2 -0
  302. package/dist/esm/serde/implementations/no-op-serde/_module.js.map +1 -0
  303. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js +12 -0
  304. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js.map +1 -0
  305. package/dist/esm/serde/implementations/redis-serde/_module.js +2 -0
  306. package/dist/esm/serde/implementations/redis-serde/_module.js.map +1 -0
  307. package/dist/esm/{serializer/implementations/sql-serializer/sql-serializer.js → serde/implementations/redis-serde/redis-serde.js} +10 -10
  308. package/dist/esm/serde/implementations/redis-serde/redis-serde.js.map +1 -0
  309. package/dist/esm/serde/implementations/sql-serde/_module.js +2 -0
  310. package/dist/esm/serde/implementations/sql-serde/_module.js.map +1 -0
  311. package/dist/esm/{serializer/implementations/redis-serializer/redis-serializer.js → serde/implementations/sql-serde/sql-serde.js} +10 -10
  312. package/dist/esm/serde/implementations/sql-serde/sql-serde.js.map +1 -0
  313. package/dist/esm/serde/implementations/super-json-serde/_module.js +2 -0
  314. package/dist/esm/serde/implementations/super-json-serde/_module.js.map +1 -0
  315. package/dist/esm/{serializer/implementations/super-json-serializer/super-json-serializer.js → serde/implementations/super-json-serde/super-json-serde.js} +55 -55
  316. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js.map +1 -0
  317. package/dist/esm/utilities/contracts/_module.js +1 -0
  318. package/dist/esm/utilities/contracts/_module.js.map +1 -1
  319. package/dist/esm/utilities/contracts/buildable.contract.js +1 -0
  320. package/dist/esm/utilities/contracts/buildable.contract.js.map +1 -0
  321. package/dist/esm/utilities/errors.js +7 -7
  322. package/dist/esm/utilities/errors.js.map +1 -1
  323. package/dist/esm/utilities/functions.js +7 -4
  324. package/dist/esm/utilities/functions.js.map +1 -1
  325. package/dist/esm/utilities/time-span/time-span.js +8 -0
  326. package/dist/esm/utilities/time-span/time-span.js.map +1 -1
  327. package/dist/types/_module.d.ts +2 -2
  328. package/dist/types/async/_module.d.ts +1 -1
  329. package/dist/types/async/backof-policies/_module.d.ts +1 -1
  330. package/dist/types/async/utilities/_module.d.ts +3 -0
  331. package/dist/types/async/utilities/lazy-promise/lazy-promise.d.ts +66 -39
  332. package/dist/types/cache/contracts/cache-adapter.contract.d.ts +20 -6
  333. package/dist/types/cache/contracts/cache-factory.contract.d.ts +12 -25
  334. package/dist/types/cache/contracts/cache.contract.d.ts +382 -22
  335. package/dist/types/cache/contracts/cache.events.d.ts +156 -42
  336. package/dist/types/cache/implementations/_shared/_module.d.ts +1 -0
  337. package/dist/types/cache/implementations/_shared/cache-adapter.test-suite.d.ts +21 -12
  338. package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +21 -15
  339. package/dist/types/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +15 -8
  340. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/_module.d.ts +2 -1
  341. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.d.ts +48 -0
  342. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +54 -36
  343. package/dist/types/cache/implementations/adapters/memory-cache-adapter/_module.d.ts +1 -0
  344. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.d.ts +27 -0
  345. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +50 -20
  346. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/_module.d.ts +2 -1
  347. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.d.ts +51 -0
  348. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +66 -41
  349. package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +6 -3
  350. package/dist/types/cache/implementations/adapters/redis-cache-adapter/_module.d.ts +1 -0
  351. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.d.ts +32 -0
  352. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +51 -29
  353. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/_module.d.ts +1 -0
  354. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.d.ts +48 -0
  355. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +54 -34
  356. package/dist/types/cache/implementations/derivables/_module.d.ts +3 -2
  357. package/dist/types/cache/implementations/derivables/cache-factory-settings.d.ts +77 -0
  358. package/dist/types/cache/implementations/derivables/cache-factory.d.ts +59 -45
  359. package/dist/types/cache/implementations/derivables/cache-settings.d.ts +68 -0
  360. package/dist/types/cache/implementations/derivables/cache.d.ts +83 -62
  361. package/dist/types/collection/contracts/async-collection.contract.d.ts +1247 -666
  362. package/dist/types/collection/contracts/collection.contract.d.ts +1195 -638
  363. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.d.ts +4 -5
  364. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.d.ts +1 -1
  365. package/dist/types/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +194 -3
  366. package/dist/types/collection/implementations/iterable-collection/_shared/merge-iterable.d.ts +4 -5
  367. package/dist/types/collection/implementations/iterable-collection/iterable-collection.d.ts +141 -1
  368. package/dist/types/collection/implementations/list-collection/list-collection.d.ts +141 -1
  369. package/dist/types/event-bus/contracts/_module.d.ts +2 -2
  370. package/dist/types/event-bus/contracts/_shared.d.ts +11 -0
  371. package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +9 -8
  372. package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +38 -32
  373. package/dist/types/event-bus/contracts/event-bus.contract.d.ts +52 -37
  374. package/dist/types/event-bus/implementations/_shared/event-bus-adapter.test-suite.d.ts +22 -10
  375. package/dist/types/event-bus/implementations/_shared/event-bus.test-suite.d.ts +16 -13
  376. package/dist/types/event-bus/implementations/adapters/_module.d.ts +1 -1
  377. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/_module.d.ts +2 -1
  378. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.d.ts +28 -0
  379. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +53 -22
  380. package/dist/types/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +7 -4
  381. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.d.ts +2 -0
  382. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.d.ts +36 -0
  383. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +62 -0
  384. package/dist/types/event-bus/implementations/derivables/_module.d.ts +3 -1
  385. package/dist/types/event-bus/implementations/derivables/event-bus-factory-settings.d.ts +70 -0
  386. package/dist/types/event-bus/implementations/derivables/event-bus-factory.d.ts +40 -24
  387. package/dist/types/event-bus/implementations/derivables/event-bus-settings.d.ts +58 -0
  388. package/dist/types/event-bus/implementations/derivables/event-bus.d.ts +31 -45
  389. package/dist/types/serde/contracts/_module.d.ts +6 -0
  390. package/dist/types/serde/contracts/deserializer.contract.d.ts +13 -0
  391. package/dist/types/serde/contracts/flexible-serde.contract.d.ts +56 -0
  392. package/dist/types/serde/contracts/serde.contract.d.ts +10 -0
  393. package/dist/types/{serializer/contracts/serializer.errors.d.ts → serde/contracts/serde.errors.d.ts} +4 -4
  394. package/dist/types/serde/contracts/serializable.contract.d.ts +10 -0
  395. package/dist/types/serde/contracts/serializer.contract.d.ts +10 -0
  396. package/dist/types/serde/implementations/_module.d.ts +6 -0
  397. package/dist/types/serde/implementations/_shared/test-utilities/_module.d.ts +2 -0
  398. package/dist/types/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.d.ts +17 -0
  399. package/dist/types/serde/implementations/_shared/test-utilities/serde.test-suite.d.ts +17 -0
  400. package/dist/types/serde/implementations/mongodb-serde/_module.d.ts +1 -0
  401. package/dist/types/serde/implementations/mongodb-serde/mongodb-serde.d.ts +13 -0
  402. package/dist/types/serde/implementations/no-op-serde/_module.d.ts +1 -0
  403. package/dist/types/serde/implementations/no-op-serde/no-op-serde.d.ts +13 -0
  404. package/dist/types/serde/implementations/redis-serde/_module.d.ts +1 -0
  405. package/dist/types/serde/implementations/redis-serde/redis-serde.d.ts +13 -0
  406. package/dist/types/serde/implementations/sql-serde/_module.d.ts +1 -0
  407. package/dist/types/serde/implementations/sql-serde/sql-serde.d.ts +13 -0
  408. package/dist/types/serde/implementations/super-json-serde/_module.d.ts +1 -0
  409. package/dist/types/serde/implementations/super-json-serde/super-json-serde.d.ts +25 -0
  410. package/dist/types/utilities/contracts/_module.d.ts +1 -0
  411. package/dist/types/utilities/contracts/buildable.contract.d.ts +9 -0
  412. package/dist/types/utilities/errors.d.ts +3 -3
  413. package/dist/types/utilities/functions.d.ts +5 -1
  414. package/dist/types/utilities/time-span/time-span.d.ts +10 -1
  415. package/dist/types/utilities/types.d.ts +0 -1
  416. package/package.json +3 -9
  417. package/dist/cjs/cache/implementations/derivables/base-cache.js +0 -270
  418. package/dist/cjs/cache/implementations/derivables/base-cache.js.map +0 -1
  419. package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/_module.js.map +0 -1
  420. package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js +0 -44
  421. package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js.map +0 -1
  422. package/dist/cjs/event-bus/implementations/derivables/base-event-bus.js +0 -47
  423. package/dist/cjs/event-bus/implementations/derivables/base-event-bus.js.map +0 -1
  424. package/dist/cjs/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js +0 -42
  425. package/dist/cjs/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js.map +0 -1
  426. package/dist/cjs/serializer/contracts/_module.js.map +0 -1
  427. package/dist/cjs/serializer/contracts/serializer.contract.js.map +0 -1
  428. package/dist/cjs/serializer/contracts/serializer.errors.js.map +0 -1
  429. package/dist/cjs/serializer/implementations/_module.js.map +0 -1
  430. package/dist/cjs/serializer/implementations/_shared/test-utilities/_module.js.map +0 -1
  431. package/dist/cjs/serializer/implementations/_shared/test-utilities/serializer.test-suite.js.map +0 -1
  432. package/dist/cjs/serializer/implementations/mongodb-serializer/_module.js.map +0 -1
  433. package/dist/cjs/serializer/implementations/mongodb-serializer/mongodb-serializer.js +0 -36
  434. package/dist/cjs/serializer/implementations/mongodb-serializer/mongodb-serializer.js.map +0 -1
  435. package/dist/cjs/serializer/implementations/redis-serializer/_module.js.map +0 -1
  436. package/dist/cjs/serializer/implementations/redis-serializer/redis-serializer.js +0 -37
  437. package/dist/cjs/serializer/implementations/redis-serializer/redis-serializer.js.map +0 -1
  438. package/dist/cjs/serializer/implementations/sql-serializer/_module.js.map +0 -1
  439. package/dist/cjs/serializer/implementations/sql-serializer/sql-serializer.js +0 -37
  440. package/dist/cjs/serializer/implementations/sql-serializer/sql-serializer.js.map +0 -1
  441. package/dist/cjs/serializer/implementations/super-json-serializer/_module.js +0 -18
  442. package/dist/cjs/serializer/implementations/super-json-serializer/_module.js.map +0 -1
  443. package/dist/cjs/serializer/implementations/super-json-serializer/super-json-serializer.js.map +0 -1
  444. package/dist/esm/cache/implementations/derivables/base-cache.js +0 -266
  445. package/dist/esm/cache/implementations/derivables/base-cache.js.map +0 -1
  446. package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/_module.js +0 -2
  447. package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/_module.js.map +0 -1
  448. package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js +0 -40
  449. package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js.map +0 -1
  450. package/dist/esm/event-bus/implementations/derivables/base-event-bus.js +0 -43
  451. package/dist/esm/event-bus/implementations/derivables/base-event-bus.js.map +0 -1
  452. package/dist/esm/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js +0 -38
  453. package/dist/esm/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js.map +0 -1
  454. package/dist/esm/serializer/contracts/_module.js +0 -3
  455. package/dist/esm/serializer/contracts/_module.js.map +0 -1
  456. package/dist/esm/serializer/contracts/serializer.contract.js.map +0 -1
  457. package/dist/esm/serializer/contracts/serializer.errors.js.map +0 -1
  458. package/dist/esm/serializer/implementations/_module.js +0 -6
  459. package/dist/esm/serializer/implementations/_module.js.map +0 -1
  460. package/dist/esm/serializer/implementations/_shared/test-utilities/_module.js +0 -2
  461. package/dist/esm/serializer/implementations/_shared/test-utilities/_module.js.map +0 -1
  462. package/dist/esm/serializer/implementations/_shared/test-utilities/serializer.test-suite.js.map +0 -1
  463. package/dist/esm/serializer/implementations/mongodb-serializer/_module.js +0 -2
  464. package/dist/esm/serializer/implementations/mongodb-serializer/_module.js.map +0 -1
  465. package/dist/esm/serializer/implementations/mongodb-serializer/mongodb-serializer.js.map +0 -1
  466. package/dist/esm/serializer/implementations/redis-serializer/_module.js +0 -2
  467. package/dist/esm/serializer/implementations/redis-serializer/_module.js.map +0 -1
  468. package/dist/esm/serializer/implementations/redis-serializer/redis-serializer.js.map +0 -1
  469. package/dist/esm/serializer/implementations/sql-serializer/_module.js +0 -2
  470. package/dist/esm/serializer/implementations/sql-serializer/_module.js.map +0 -1
  471. package/dist/esm/serializer/implementations/sql-serializer/sql-serializer.js.map +0 -1
  472. package/dist/esm/serializer/implementations/super-json-serializer/_module.js +0 -2
  473. package/dist/esm/serializer/implementations/super-json-serializer/_module.js.map +0 -1
  474. package/dist/esm/serializer/implementations/super-json-serializer/super-json-serializer.js.map +0 -1
  475. package/dist/types/cache/implementations/derivables/base-cache.d.ts +0 -58
  476. package/dist/types/event-bus/implementations/adapters/redis-event-bus-adapter/_module.d.ts +0 -1
  477. package/dist/types/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.d.ts +0 -43
  478. package/dist/types/event-bus/implementations/derivables/base-event-bus.d.ts +0 -23
  479. package/dist/types/event-bus/implementations/derivables/with-namespace-event-bus-adapter.d.ts +0 -16
  480. package/dist/types/serializer/contracts/_module.d.ts +0 -2
  481. package/dist/types/serializer/contracts/serializer.contract.d.ts +0 -16
  482. package/dist/types/serializer/implementations/_module.d.ts +0 -5
  483. package/dist/types/serializer/implementations/_shared/test-utilities/_module.d.ts +0 -1
  484. package/dist/types/serializer/implementations/_shared/test-utilities/serializer.test-suite.d.ts +0 -18
  485. package/dist/types/serializer/implementations/mongodb-serializer/_module.d.ts +0 -1
  486. package/dist/types/serializer/implementations/mongodb-serializer/mongodb-serializer.d.ts +0 -13
  487. package/dist/types/serializer/implementations/redis-serializer/_module.d.ts +0 -1
  488. package/dist/types/serializer/implementations/redis-serializer/redis-serializer.d.ts +0 -13
  489. package/dist/types/serializer/implementations/sql-serializer/_module.d.ts +0 -1
  490. package/dist/types/serializer/implementations/sql-serializer/sql-serializer.d.ts +0 -13
  491. package/dist/types/serializer/implementations/super-json-serializer/_module.d.ts +0 -1
  492. package/dist/types/serializer/implementations/super-json-serializer/super-json-serializer.d.ts +0 -37
  493. /package/dist/cjs/{serializer → serde}/contracts/serializer.contract.js +0 -0
  494. /package/dist/esm/{serializer → serde}/contracts/serializer.contract.js +0 -0
@@ -1,53 +1,59 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { BaseEvents, INamespacedEventBus } from "../../event-bus/contracts/event-bus.contract";
4
+ import type { IGroupableEventBus } from "../../event-bus/contracts/event-bus.contract";
5
+ import type { BaseEvent } from "../../event-bus/contracts/_shared";
5
6
  /**
6
- * The <i>IEventBusFactory</i> contract makes it easy to configure and switch between different <i>{@link INamespacedEventBus}</i> dynamically.
7
+ * The <i>IEventBusFactory</i> contract makes it easy to configure and switch between different <i>{@link IGroupableEventBus}</i> dynamically.
7
8
  * @group Contracts
8
9
  */
9
- export type IEventBusFactory<TDrivers extends string = string, TEvents extends BaseEvents = BaseEvents> = {
10
+ export type IEventBusFactory<TAdapters extends string = string> = {
10
11
  /**
11
- * The <i>use</i> method will throw an error if you provide it unregisted driver.
12
- * If no default driver is defined an error will be thrown by <i>use</i> method.
13
- * @throws {UnregisteredDriverError} {@link UnregisteredDriverError}
14
- * @throws {DefaultDriverNotDefinedError} {@link DefaultDriverNotDefinedError}
12
+ * The <i>use</i> method will throw an error if you provide it unregisted adapter.
13
+ * If no default adapter is defined an error will be thrown by <i>use</i> method.
14
+ * @throws {UnregisteredAdapterError} {@link UnregisteredAdapterError}
15
+ * @throws {DefaultAdapterNotDefinedError} {@link DefaultAdapterNotDefinedError}
15
16
  * @example
16
17
  * ```ts
17
18
  * import { type IEventBusFactory } from "@daiso-tech/core";
18
19
  *
20
+ * type SerializedAddEvent = {
21
+ * a: number;
22
+ * b: number;
23
+ * };
24
+ *
25
+ * class AddEvent extends BaseEvent<SerializedAddEvent> {
26
+ * // This needed for adapters that need to deserialize like the redis dapter.
27
+ * static override deserialize({ a, b }: SerializedAddEvent): AddEvent {
28
+ * return new AddEvent(a, b);
29
+ * }
30
+ *
31
+ * constructor(public readonly a: number, public readonly b: number) {
32
+ * super();
33
+ * }
34
+ *
35
+ * // This needed for adapters that need to serialize like the redis adapter.
36
+ * override serialize(): SerializedAddEvent {
37
+ * return {
38
+ * a: this.a,
39
+ * b: this.b
40
+ * };
41
+ * }
42
+ * }
43
+ *
44
+ * // Asume the inputed eventFactory has registered both a memory and Redis IEventBusAdapter.
45
+ * // The memory IEventBusAdapter adapter is the default.
19
46
  * async function main(eventFactory: IEventBusFactory): Promise<void> {
20
- * // Will dispatch envent using the default driver
47
+ * // Will dispatch envent using the default adapter
21
48
  * await eventBusFactory
22
49
  * .use()
23
- * .dispatch({ type: "add", a: 1, b: 2 });
50
+ * .dispatch(new AddEvent(1, 2));
24
51
  * // Will dispatch envent using the redis addapter
25
52
  * await eventBusFactory
26
53
  * .use("redis")
27
- * .dispatch({ type: "add", a: 1, b: 2 });
28
- * }
29
- * ```
30
- */
31
- use(driverName?: TDrivers): INamespacedEventBus<TEvents>;
32
- /**
33
- * The <i>withTypes</i> method is used to set the event types of the <i>{@link IEventBus}</i>.
34
- * @example
35
- * ```ts
36
- * import { type IEventBusFactory } from "@daiso-tech/core";
37
- *
38
- * async function main(eventBusFactory: IEventBusFactory): Promise<void> {
39
- * type AddEvent = {
40
- * type: "add";
41
- * a: number;
42
- * b: number;
43
- * };
44
- * await eventBusFactory
45
- * .withTypes<AddEvent>()
46
- * .use()
47
- * // You will se an typescript error
48
- * .dispatch({ type: "add" });
54
+ * .dispatch(new AddEvent(1, 2));
49
55
  * }
50
56
  * ```
51
57
  */
52
- withType<TOutput extends TEvents = TEvents>(): IEventBusFactory<TDrivers, TOutput>;
58
+ use<TEvents extends BaseEvent = BaseEvent>(adapterName?: TAdapters): IGroupableEventBus<TEvents>;
53
59
  };
@@ -1,119 +1,134 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { OneOrMore, Values } from "../../utilities/_module";
4
+ import type { OneOrMore } from "../../utilities/_module";
5
5
  import type { LazyPromise } from "../../async/_module";
6
- import type { Listener } from "../../event-bus/contracts/_shared";
7
- export type BaseEvents = Record<string, Record<string, unknown>>;
8
- export type AllEvents<TEvents extends BaseEvents> = Values<{
9
- [TEventName in keyof TEvents]: TEvents[TEventName] & {
10
- type: TEventName;
11
- };
12
- }>;
13
- export type SelectEvent<TEvents extends BaseEvents, TEventName extends keyof TEvents> = {
14
- [TEventName in keyof TEvents]: TEvents[TEventName] & {
15
- type: TEventName;
16
- };
17
- }[TEventName];
6
+ import type { BaseEvent, Listener } from "../../event-bus/contracts/_shared";
7
+ /**
8
+ * @group Contracts
9
+ */
10
+ export type EventClass<TEvents extends BaseEvent> = {
11
+ new (...arguments_: any[]): TEvents;
12
+ };
13
+ /**
14
+ * @group Contracts
15
+ */
16
+ export type EventInstance<TEventClass extends EventClass<BaseEvent>> = TEventClass extends {
17
+ new (...arguments_: any[]): infer TInstance;
18
+ } ? TInstance : never;
19
+ /**
20
+ * @group Contracts
21
+ */
18
22
  export type Unsubscribe = () => LazyPromise<void>;
19
23
  /**
20
- * The <i>IListenable</i> contract defines a way listening to events independent of underlying technology
24
+ * The <i>IEventListener</i> contract defines a way listening to events independent of underlying technology
21
25
  * @group Contracts
22
26
  */
23
- export type IListenable<TEvents extends BaseEvents = BaseEvents> = {
27
+ export type IEventListener<TEvents extends BaseEvent = BaseEvent> = {
24
28
  /**
25
29
  * The <i>addListener</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
26
30
  * 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.
27
31
  * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
28
32
  */
29
- addListener<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
33
+ addListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
30
34
  /**
31
35
  * The <i>addListenerMany</i> method is used for adding multiple <i>{@link Listener | listeners}</i> for certain <i>events</i>.
32
36
  * 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.
33
37
  * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
34
38
  */
35
- addListenerMany<TEventName extends keyof TEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
39
+ addListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
36
40
  /**
37
41
  * The <i>removeListener</i> method is used for removing <i>{@link Listener | listener}</i> for certain <i>event</i>.
38
42
  * Removing unadded listener will have no effect and nothing will occur.
39
43
  * @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
40
44
  */
41
- removeListener<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
45
+ removeListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
42
46
  /**
43
47
  * The <i>removeListener</i> method is used for removing multiple <i>{@link Listener | listeners}</i> for certain <i>event</i>.
44
48
  * Removing unadded listener will have no effect and nothing will occur.
45
49
  * @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
46
50
  */
47
- removeListenerMany<TEventName extends keyof TEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
51
+ removeListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
52
+ /**
53
+ * The <i>listenOnce</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i> that is trigged only once.
54
+ * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
55
+ */
56
+ listenOnce<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
48
57
  /**
49
58
  * The <i>subscribe</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
50
59
  * 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.
51
60
  */
52
- subscribe<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<Unsubscribe>;
61
+ subscribe<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
53
62
  /**
54
63
  * The <i>subscribeMany</i> method is used for adding <i>{@link Listener | listener}</i> for multiple <i>events</i>.
55
64
  * 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.
56
65
  */
57
- subscribeMany<TEventName extends keyof TEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<Unsubscribe>;
66
+ subscribeMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
58
67
  };
59
68
  /**
60
- * The <i>IDispatcher</i> contract defines a way for dispatching to events independent of underlying technology.
69
+ * The <i>IEventDispatcher</i> contract defines a way for dispatching to events independent of underlying technology.
61
70
  * @group Contracts
62
71
  */
63
- export type IDispatcher<TEvents extends BaseEvents = BaseEvents> = {
72
+ export type IEventDispatcher<TEvents extends BaseEvent = BaseEvent> = {
73
+ /**
74
+ * The <i>dispatch</i> method is used for dispatching a <i>event</i>.
75
+
76
+ * @throws {DispatchEventBusError} {@link DispatchEventBusError}
77
+ */
78
+ dispatch(event: TEvents): LazyPromise<void>;
64
79
  /**
65
- * The <i>dispatch</i> method is used for dispatching one or multiple <i>events</i>.
80
+ * The <i>dispatchMany</i> method is used for dispatching multiple <i>event</i>.
66
81
 
67
82
  * @throws {DispatchEventBusError} {@link DispatchEventBusError}
68
83
  */
69
- dispatch(events: OneOrMore<AllEvents<TEvents>>): LazyPromise<void>;
84
+ dispatchMany(events: TEvents[]): LazyPromise<void>;
70
85
  };
71
86
  /**
72
87
  * The <i>IEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
73
88
  * It commes with more convient methods compared to <i>IEventBusAdapter</i>.
74
89
  * @group Contracts
75
90
  */
76
- export type IEventBus<TEvents extends BaseEvents = BaseEvents> = IListenable<TEvents> & IDispatcher<TEvents> & {
91
+ export type IEventBus<TEvents extends BaseEvent = BaseEvent> = IEventListener<TEvents> & IEventDispatcher<TEvents> & {
77
92
  /**
78
- * The <i>getNamespace</i> method returns the complete namespace.
93
+ * The <i>getGroup</i> method returns the complete group.
79
94
  * @example
80
95
  * ```ts
81
96
  * import { type IEventBus } from "@daiso-tech/core";
82
97
  *
83
98
  * async function main(eventBus: IEventBus): Promise<void> {
84
99
  * // Will be "@root"
85
- * console.log(eventBus.getNamespace())
100
+ * console.log(eventBus.getGroup())
86
101
  *
87
- * const eventBusA = eventBus.withNamespace("a");
102
+ * const eventBusA = eventBus.withGroup("a");
88
103
  *
89
104
  * // Will be "@root/a"
90
- * console.log(eventBusA.getNamespace())
105
+ * console.log(eventBusA.getGroup())
91
106
  * }
92
107
  * ```
93
108
  */
94
- getNamespace(): string;
109
+ getGroup(): string;
95
110
  };
96
111
  /**
97
- * The <i>INamespacedEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
112
+ * The <i>IGroupableEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
98
113
  * It commes with one extra method which is useful for multitennat applications compared to <i>IEventBus</i>.
99
114
  * @group Contracts
100
115
  */
101
- export type INamespacedEventBus<TEvents extends BaseEvents = BaseEvents> = IEventBus<TEvents> & {
116
+ export type IGroupableEventBus<TEvents extends BaseEvent = BaseEvent> = IEventBus<TEvents> & {
102
117
  /**
103
- * 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>.
118
+ * The <i>withGroup</i> method returns new instance of <i>{@link IEventBus}</i> where all the events names will be prefixed with a given <i>group</i>.
104
119
  * This useful for multitennat applications.
105
120
  * @example
106
121
  * ```ts
107
122
  * import { type IEventBus } from "@daiso-tech/core";
108
123
  *
109
124
  * async function main(eventBus: IEventBus): Promise<void> {
110
- * const eventBusA = eventBus.withNamespace("a");
125
+ * const eventBusA = eventBus.withGroup("a");
111
126
  * await eventBusA.subscribe("add", (event) => {
112
127
  * // This will be logged
113
128
  * console.log("eventBusA:", event);
114
129
  * });
115
130
  *
116
- * const eventBusB = eventBus.withNamespace("b");
131
+ * const eventBusB = eventBus.withGroup("b");
117
132
  * await eventBusB.subscribe("add", (event) => {
118
133
  * // This will never be logged
119
134
  * console.log("eventBusB:", event);
@@ -127,5 +142,5 @@ export type INamespacedEventBus<TEvents extends BaseEvents = BaseEvents> = IEven
127
142
  * }
128
143
  * ```
129
144
  */
130
- withNamespace(namespace: OneOrMore<string>): IEventBus<TEvents>;
145
+ withGroup(group: OneOrMore<string>): IEventBus<TEvents>;
131
146
  };
@@ -4,15 +4,18 @@
4
4
  import { type TestAPI, type SuiteAPI, type ExpectStatic, type beforeEach } from "vitest";
5
5
  import type { IEventBusAdapter } from "../../../event-bus/contracts/_module";
6
6
  import { type Promisable } from "../../../utilities/_module";
7
+ import type { IFlexibleSerde } from "../../../serde/contracts/_module";
7
8
  /**
8
9
  * @group Utilities
9
10
  */
10
11
  export type EventBusAdapterTestSuiteSettings = {
11
12
  expect: ExpectStatic;
13
+ serde?: IFlexibleSerde;
12
14
  test: TestAPI;
13
15
  describe: SuiteAPI;
14
16
  beforeEach: typeof beforeEach;
15
- createAdapter: () => Promisable<IEventBusAdapter>;
17
+ createAdapterA: () => Promisable<IEventBusAdapter>;
18
+ createAdapterB: () => Promisable<IEventBusAdapter>;
16
19
  };
17
20
  /**
18
21
  * The <i>eventBusAdapterTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IEventBusAdapter}</i> with vitest.
@@ -23,31 +26,40 @@ export type EventBusAdapterTestSuiteSettings = {
23
26
  * import type { StartedRedisContainer } from "@testcontainers/redis";
24
27
  * import { RedisContainer } from "@testcontainers/redis";
25
28
  * import Redis from "ioredis";
26
- * import { SuperJsonSerializer, TimeSpan, RedisEventBusAdapter, eventBusAdapterTestSuite } from "@daiso-tech/core";
29
+ * import { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, eventBusAdapterTestSuite } from "@daiso-tech/core";
27
30
  *
28
- * const timeout = TimeSpan.fromMinutes(2);
29
- * describe("class: RedisEventBusAdapter", () => {
31
+ * const TIMEOUT = TimeSpan.fromMinutes(2);
32
+ * describe("class: RedisPubSubEventBusAdapter", () => {
30
33
  * let dispatcherClient: Redis;
31
34
  * let listenerClient: Redis;
32
35
  * let startedContainer: StartedRedisContainer;
33
- * const serializer = new SuperJsonSerializer();
36
+ * const serde = new SuperJsonSerde();
34
37
  * beforeEach(async () => {
35
38
  * startedContainer = await new RedisContainer().start();
36
39
  * dispatcherClient = new Redis(startedContainer.getConnectionUrl());
37
40
  * listenerClient = new Redis(startedContainer.getConnectionUrl());
38
- * }, timeout.toMilliseconds());
41
+ * }, TIMEOUT.toMilliseconds());
39
42
  * afterEach(async () => {
40
43
  * await dispatcherClient.quit();
41
44
  * await listenerClient.quit();
42
45
  * await startedContainer.stop();
43
- * }, timeout.toMilliseconds());
46
+ * }, TIMEOUT.toMilliseconds());
44
47
  * eventBusAdapterTestSuite({
45
- * createAdapter: () =>
46
- * new RedisEventBusAdapter({
48
+ * createAdapterA: () =>
49
+ * new RedisPubSubEventBusAdapter({
47
50
  * dispatcherClient,
48
51
  * listenerClient,
49
- * serializer,
52
+ * serde,
53
+ * rootGroup: "@global"
50
54
  * }),
55
+ * createAdapterB: () =>
56
+ * new RedisPubSubEventBusAdapter({
57
+ * dispatcherClient,
58
+ * listenerClient,
59
+ * serde,
60
+ * rootGroup: "@global"
61
+ * }),
62
+ * serde,
51
63
  * test,
52
64
  * beforeEach,
53
65
  * expect,
@@ -2,13 +2,15 @@
2
2
  * @module EventBus
3
3
  */
4
4
  import { type TestAPI, type SuiteAPI, type ExpectStatic, type beforeEach } from "vitest";
5
- import type { IEventBus } from "../../../event-bus/contracts/_module";
5
+ import { type IEventBus } from "../../../event-bus/contracts/_module";
6
6
  import { type Promisable } from "../../../utilities/_module";
7
+ import type { IFlexibleSerde } from "../../../serde/contracts/_module";
7
8
  /**
8
9
  * @group Utilities
9
10
  */
10
11
  export type EventBusTestSuiteSettings = {
11
12
  expect: ExpectStatic;
13
+ serde?: IFlexibleSerde;
12
14
  test: TestAPI;
13
15
  describe: SuiteAPI;
14
16
  beforeEach: typeof beforeEach;
@@ -24,43 +26,44 @@ export type EventBusTestSuiteSettings = {
24
26
  * import type { StartedRedisContainer } from "@testcontainers/redis";
25
27
  * import { RedisContainer } from "@testcontainers/redis";
26
28
  * import Redis from "ioredis";
27
- * import { SuperJsonSerializer, TimeSpan, RedisEventBusAdapter, eventBusTestSuite } from "@daiso-tech/core";
29
+ * import { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, eventBusTestSuite, serde } from "@daiso-tech/core";
28
30
  *
29
- * const timeout = TimeSpan.fromMinutes(2);
31
+ * const TIMEOUT = TimeSpan.fromMinutes(2);
30
32
  * describe("class: EventBus", () => {
31
33
  * let dispatcherClient: Redis;
32
34
  * let listenerClient: Redis;
33
35
  * let startedContainer: StartedRedisContainer;
34
- * const serializer = new SuperJsonSerializer();
36
+ * const serde = new SuperJsonSerde();
35
37
  * beforeEach(async () => {
36
38
  * startedContainer = await new RedisContainer().start();
37
39
  * dispatcherClient = new Redis(startedContainer.getConnectionUrl());
38
40
  * listenerClient = new Redis(startedContainer.getConnectionUrl());
39
- * }, timeout.toMilliseconds());
41
+ * }, TIMEOUT.toMilliseconds());
40
42
  * afterEach(async () => {
41
43
  * await dispatcherClient.quit();
42
44
  * await listenerClient.quit();
43
45
  * await startedContainer.stop();
44
- * }, timeout.toMilliseconds());
46
+ * }, TIMEOUT.toMilliseconds());
45
47
  * eventBusTestSuite({
46
48
  * createEventBusA: () =>
47
49
  * new EventBus(
48
- * new RedisEventBusAdapter({
50
+ * new RedisPubSubEventBusAdapter({
49
51
  * dispatcherClient,
50
52
  * listenerClient,
51
- * serializer,
52
- * }),
53
- * { rootNamespace: "@a" }
53
+ * serde,
54
+ * rootGroup: "@global"
55
+ * })
54
56
  * ),
55
57
  * createEventBusB: () =>
56
58
  * new EventBus(
57
- * new RedisEventBusAdapter({
59
+ * new RedisPubSubEventBusAdapter({
58
60
  * dispatcherClient,
59
61
  * listenerClient,
60
- * serializer,
62
+ * serde,
63
+ * rootGroup: "@global"
61
64
  * }),
62
- * { rootNamespace: "@b" }
63
65
  * ),
66
+ * serde,
64
67
  * test,
65
68
  * beforeEach,
66
69
  * expect,
@@ -1,3 +1,3 @@
1
1
  export * from "../../../event-bus/implementations/adapters/memory-event-bus-adapter/_module";
2
2
  export * from "../../../event-bus/implementations/adapters/no-op-event-bus-adapter/_module";
3
- export * from "../../../event-bus/implementations/adapters/redis-event-bus-adapter/_module";
3
+ export * from "../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module";
@@ -1 +1,2 @@
1
- export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/_module";
1
+ export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
2
+ export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter";
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { IBuildable } from "../../../../utilities/_module";
5
+ import type { OneOrMore } from "../../../../utilities/_module";
6
+ import type { EventEmitter } from "node:events";
7
+ /**
8
+ * @group Adapters
9
+ */
10
+ export type MemoryEventBusAdapterSettings = {
11
+ rootGroup: OneOrMore<string>;
12
+ eventEmitter?: EventEmitter;
13
+ };
14
+ /**
15
+ * The <i>MemoryEventBusAdapterSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
16
+ * @group Adapters
17
+ */
18
+ export declare class MemoryEventBusAdapterSettingsBuilder<TSettings extends Partial<MemoryEventBusAdapterSettings>> implements IBuildable<MemoryEventBusAdapterSettings> {
19
+ private readonly settings;
20
+ constructor(settings?: TSettings);
21
+ setEventEmitter(eventEmitter: EventEmitter): MemoryEventBusAdapterSettingsBuilder<TSettings & {
22
+ eventEmitter: EventEmitter<[never]>;
23
+ }>;
24
+ setRootGroup(group: OneOrMore<string>): MemoryEventBusAdapterSettingsBuilder<TSettings & {
25
+ rootGroup: OneOrMore<string>;
26
+ }>;
27
+ build(this: MemoryEventBusAdapterSettingsBuilder<MemoryEventBusAdapterSettings>): MemoryEventBusAdapterSettings;
28
+ }
@@ -1,31 +1,62 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
5
- import { EventEmitter } from "node:events";
4
+ import { type OneOrMore } from "../../../../utilities/_module";
5
+ import type { BaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
6
+ import type { MemoryEventBusAdapterSettings } from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
7
+ import { MemoryEventBusAdapterSettingsBuilder } from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
6
8
  /**
7
9
  * To utilize the <i>MemoryEventBusAdapter</i>, you must create instance of it.
8
10
  * @group Adapters
9
- * @example
10
- * ```ts
11
- * import { MemoryEventBusAdapter } from "@daiso-tech/core";
12
- *
13
- * const eventBusAdapter = new MemoryEventBusAdapter(client);
14
- * ```
15
- * You can also provide an <i>EVentEmitter</i>.
16
- * @example
17
- * ```ts
18
- * import { MemoryCacheAdapter } from "@daiso-tech/core";
19
- * import { EventEmitter } from "node:events";
20
- *
21
- * const eventEmitter = new EventEmitter();
22
- * const eventBusAdapter = new MemoryCacheAdapter(eventEmitter);
23
- * ```
24
11
  */
25
12
  export declare class MemoryEventBusAdapter implements IEventBusAdapter {
26
- private readonly eventEmiter;
27
- constructor(eventEmiter?: EventEmitter<[never]>);
28
- addListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
29
- removeListener(event: string, listener: Listener<IBaseEvent>): Promise<void>;
30
- dispatch(events: IBaseEvent[]): Promise<void>;
13
+ /**
14
+ * @example
15
+ * ```ts
16
+ * import { MemoryEventBusAdapter, SuperJsonSerde } from "@daiso-tech/core";
17
+ * import { EventEmitter } from "node:events";
18
+ *
19
+ * const cacheAdapter = new MemoryEventBusAdapter(
20
+ * MemoryEventBusAdapter
21
+ * .settings()
22
+ * .setEventEmitter(new EventEmitter())
23
+ * .setRootGroup("@global")
24
+ * .build()
25
+ * );
26
+ * ```
27
+ */
28
+ static settings<TSettings extends Partial<MemoryEventBusAdapterSettings>>(): MemoryEventBusAdapterSettingsBuilder<TSettings>;
29
+ private readonly group;
30
+ private readonly eventEmitter;
31
+ /**
32
+ * @example
33
+ * ```ts
34
+ * import { MemoryEventBusAdapter } from "@daiso-tech/core";
35
+ * import { EventEmitter } from "node:events";
36
+ *
37
+ * const eventEmitter = new EventEmitter();
38
+ * const eventBusAdapter = new MemoryEventBusAdapter({
39
+ * eventEmitter
40
+ * });
41
+ * ```
42
+ * You can also provide an <i>EVentEmitter</i>.
43
+ * @example
44
+ * ```ts
45
+ * import { MemoryCacheAdapter } from "@daiso-tech/core";
46
+ * import { EventEmitter } from "node:events";
47
+ *
48
+ * const eventEmitter = new EventEmitter();
49
+ * const eventBusAdapter = new MemoryEventBusAdapter({
50
+ * rootGroup: "@global",
51
+ * eventEmitter
52
+ * });
53
+ * ```
54
+ */
55
+ constructor(settings: MemoryEventBusAdapterSettings);
56
+ getGroup(): string;
57
+ withGroup(group: OneOrMore<string>): IEventBusAdapter;
58
+ private withPrefix;
59
+ addListener(eventName: string, listener: Listener<BaseEvent>): Promise<void>;
60
+ removeListener(eventName: string, listener: Listener<BaseEvent>): Promise<void>;
61
+ dispatch(eventName: string, eventData: BaseEvent): Promise<void>;
31
62
  }
@@ -1,14 +1,17 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { Listener, IBaseEvent } from "../../../../event-bus/contracts/_module";
4
+ import type { OneOrMore } from "../../../../utilities/_module";
5
+ import type { BaseEvent, Listener } from "../../../../event-bus/contracts/_module";
5
6
  import type { IEventBusAdapter } from "../../../../event-bus/contracts/_module";
6
7
  /**
7
8
  * This <i>NoOpEventBusAdapter</i> will do nothing and is used for easily mocking {@link IEventBus} for testing.
8
9
  * @group Adapters
9
10
  */
10
11
  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>;
12
+ getGroup(): string;
13
+ withGroup(_group: OneOrMore<string>): IEventBusAdapter;
14
+ addListener(_eventName: string, _listener: Listener<BaseEvent>): PromiseLike<void>;
15
+ removeListener(_eventName: string, _listener: Listener<BaseEvent>): PromiseLike<void>;
16
+ dispatch(_eventName: string, _eventData: BaseEvent): PromiseLike<void>;
14
17
  }
@@ -0,0 +1,2 @@
1
+ export * from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings";
2
+ export * from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter";
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { type ISerde } from "../../../../serde/contracts/_module";
5
+ import type Redis from "ioredis";
6
+ import type { IBuildable, OneOrMore } from "../../../../utilities/_module";
7
+ /**
8
+ * @group Adapters
9
+ */
10
+ export type RedisPubSubEventBusAdapterSettings = {
11
+ dispatcherClient: Redis;
12
+ listenerClient: Redis;
13
+ serde: ISerde<string>;
14
+ rootGroup: OneOrMore<string>;
15
+ };
16
+ /**
17
+ * The <i>RedisPubSubEventBusAdapterSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
18
+ * @group Adapters
19
+ */
20
+ export declare class RedisPubSubEventBusAdapterSettingsBuilder<TSettings extends Partial<RedisPubSubEventBusAdapterSettings>> implements IBuildable<RedisPubSubEventBusAdapterSettings> {
21
+ private readonly settings;
22
+ constructor(settings?: TSettings);
23
+ setDispatcherClient(client: Redis): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
24
+ dispatcherClient: Redis;
25
+ }>;
26
+ setListenerClient(client: Redis): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
27
+ listenerClient: Redis;
28
+ }>;
29
+ setSerde(serde: ISerde<string>): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
30
+ serde: ISerde<string>;
31
+ }>;
32
+ setRootGroup(group: OneOrMore<string>): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
33
+ rootGroup: OneOrMore<string>;
34
+ }>;
35
+ build(this: RedisPubSubEventBusAdapterSettingsBuilder<RedisPubSubEventBusAdapterSettings>): RedisPubSubEventBusAdapterSettings;
36
+ }