@daiso-tech/core 0.16.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 (339) hide show
  1. package/dist/cjs/async/_module.js +1 -1
  2. package/dist/cjs/async/_module.js.map +1 -1
  3. package/dist/cjs/async/backof-policies/_module.js +1 -0
  4. package/dist/cjs/async/backof-policies/_module.js.map +1 -1
  5. package/dist/cjs/async/utilities/_module.js +3 -0
  6. package/dist/cjs/async/utilities/_module.js.map +1 -1
  7. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js +16 -22
  8. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  9. package/dist/cjs/cache/contracts/cache.events.js +168 -0
  10. package/dist/cjs/cache/contracts/cache.events.js.map +1 -1
  11. package/dist/cjs/cache/implementations/_shared/_module.js +1 -0
  12. package/dist/cjs/cache/implementations/_shared/_module.js.map +1 -1
  13. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  14. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  15. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +7 -5
  16. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  17. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js +2 -1
  18. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  19. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +56 -0
  20. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
  21. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +18 -14
  22. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  23. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js +1 -0
  24. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  25. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +26 -0
  26. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
  27. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +11 -3
  28. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  29. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js +2 -1
  30. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  31. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +44 -0
  32. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
  33. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +21 -8
  34. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  35. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js +1 -0
  36. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  37. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +32 -0
  38. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
  39. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +27 -20
  40. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  41. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js +1 -0
  42. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  43. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +56 -0
  44. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
  45. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +19 -15
  46. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  47. package/dist/cjs/cache/implementations/derivables/_module.js +3 -1
  48. package/dist/cjs/cache/implementations/derivables/_module.js.map +1 -1
  49. package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js +65 -0
  50. package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
  51. package/dist/cjs/cache/implementations/derivables/cache-factory.js +29 -15
  52. package/dist/cjs/cache/implementations/derivables/cache-factory.js.map +1 -1
  53. package/dist/cjs/cache/implementations/derivables/cache-settings.js +56 -0
  54. package/dist/cjs/cache/implementations/derivables/cache-settings.js.map +1 -0
  55. package/dist/cjs/cache/implementations/derivables/cache.js +104 -93
  56. package/dist/cjs/cache/implementations/derivables/cache.js.map +1 -1
  57. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js +1 -1
  58. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
  59. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
  60. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
  61. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
  62. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
  63. package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js +20 -11
  64. package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  65. package/dist/cjs/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  66. package/dist/cjs/collection/implementations/list-collection/list-collection.js.map +1 -1
  67. package/dist/cjs/event-bus/contracts/_module.js +2 -2
  68. package/dist/cjs/event-bus/contracts/_module.js.map +1 -1
  69. package/dist/cjs/event-bus/contracts/_shared.js +7 -0
  70. package/dist/cjs/event-bus/contracts/_shared.js.map +1 -1
  71. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +52 -36
  72. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  73. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js +156 -120
  74. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  75. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +2 -1
  76. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  77. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +26 -0
  78. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
  79. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +17 -9
  80. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  81. package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +3 -3
  82. package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  83. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +2 -1
  84. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  85. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +38 -0
  86. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
  87. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +9 -5
  88. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  89. package/dist/cjs/event-bus/implementations/derivables/_module.js +3 -1
  90. package/dist/cjs/event-bus/implementations/derivables/_module.js.map +1 -1
  91. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js +59 -0
  92. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
  93. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js +28 -16
  94. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  95. package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js +56 -0
  96. package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
  97. package/dist/cjs/event-bus/implementations/derivables/event-bus.js +74 -62
  98. package/dist/cjs/event-bus/implementations/derivables/event-bus.js.map +1 -1
  99. package/dist/cjs/serde/contracts/_module.js +4 -0
  100. package/dist/cjs/serde/contracts/_module.js.map +1 -1
  101. package/dist/cjs/serde/contracts/deserializer.contract.js +3 -0
  102. package/dist/cjs/serde/contracts/deserializer.contract.js.map +1 -0
  103. package/dist/cjs/serde/contracts/flexible-serde.contract.js +3 -0
  104. package/dist/cjs/serde/contracts/flexible-serde.contract.js.map +1 -0
  105. package/dist/cjs/serde/contracts/serializable.contract.js +3 -0
  106. package/dist/cjs/serde/contracts/serializable.contract.js.map +1 -0
  107. package/dist/cjs/serde/contracts/serializer.contract.js +3 -0
  108. package/dist/cjs/serde/contracts/serializer.contract.js.map +1 -0
  109. package/dist/cjs/serde/implementations/_module.js +1 -0
  110. package/dist/cjs/serde/implementations/_module.js.map +1 -1
  111. package/dist/cjs/serde/implementations/_shared/test-utilities/_module.js +1 -0
  112. package/dist/cjs/serde/implementations/_shared/test-utilities/_module.js.map +1 -1
  113. package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +53 -0
  114. package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
  115. package/dist/cjs/serde/implementations/_shared/test-utilities/serde.test-suite.js +35 -60
  116. package/dist/cjs/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -1
  117. package/dist/cjs/serde/implementations/no-op-serde/_module.js +18 -0
  118. package/dist/cjs/serde/implementations/no-op-serde/_module.js.map +1 -0
  119. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js +16 -0
  120. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js.map +1 -0
  121. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js +5 -2
  122. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  123. package/dist/cjs/utilities/contracts/_module.js +1 -0
  124. package/dist/cjs/utilities/contracts/_module.js.map +1 -1
  125. package/dist/cjs/utilities/contracts/buildable.contract.js +3 -0
  126. package/dist/cjs/utilities/contracts/buildable.contract.js.map +1 -0
  127. package/dist/cjs/utilities/errors.js +10 -10
  128. package/dist/cjs/utilities/errors.js.map +1 -1
  129. package/dist/cjs/utilities/functions.js +4 -0
  130. package/dist/cjs/utilities/functions.js.map +1 -1
  131. package/dist/cjs/utilities/time-span/time-span.js.map +1 -1
  132. package/dist/esm/async/_module.js +1 -1
  133. package/dist/esm/async/_module.js.map +1 -1
  134. package/dist/esm/async/backof-policies/_module.js +1 -0
  135. package/dist/esm/async/backof-policies/_module.js.map +1 -1
  136. package/dist/esm/async/utilities/_module.js +3 -0
  137. package/dist/esm/async/utilities/_module.js.map +1 -1
  138. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +16 -22
  139. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  140. package/dist/esm/cache/contracts/cache.events.js +158 -0
  141. package/dist/esm/cache/contracts/cache.events.js.map +1 -1
  142. package/dist/esm/cache/implementations/_shared/_module.js +1 -0
  143. package/dist/esm/cache/implementations/_shared/_module.js.map +1 -1
  144. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  145. package/dist/esm/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  146. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +7 -5
  147. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  148. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js +2 -1
  149. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  150. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +52 -0
  151. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
  152. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +17 -13
  153. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  154. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js +1 -0
  155. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  156. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +22 -0
  157. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
  158. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +11 -3
  159. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  160. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js +2 -1
  161. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  162. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +40 -0
  163. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
  164. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +21 -8
  165. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  166. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js +1 -0
  167. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  168. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +28 -0
  169. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
  170. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +28 -21
  171. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  172. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js +1 -0
  173. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  174. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +52 -0
  175. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
  176. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +17 -13
  177. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  178. package/dist/esm/cache/implementations/derivables/_module.js +3 -1
  179. package/dist/esm/cache/implementations/derivables/_module.js.map +1 -1
  180. package/dist/esm/cache/implementations/derivables/cache-factory-settings.js +61 -0
  181. package/dist/esm/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
  182. package/dist/esm/cache/implementations/derivables/cache-factory.js +30 -16
  183. package/dist/esm/cache/implementations/derivables/cache-factory.js.map +1 -1
  184. package/dist/esm/cache/implementations/derivables/cache-settings.js +52 -0
  185. package/dist/esm/cache/implementations/derivables/cache-settings.js.map +1 -0
  186. package/dist/esm/cache/implementations/derivables/cache.js +82 -71
  187. package/dist/esm/cache/implementations/derivables/cache.js.map +1 -1
  188. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js +1 -1
  189. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
  190. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
  191. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
  192. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
  193. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
  194. package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js +20 -11
  195. package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  196. package/dist/esm/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  197. package/dist/esm/collection/implementations/list-collection/list-collection.js.map +1 -1
  198. package/dist/esm/event-bus/contracts/_module.js +2 -2
  199. package/dist/esm/event-bus/contracts/_module.js.map +1 -1
  200. package/dist/esm/event-bus/contracts/_shared.js +5 -0
  201. package/dist/esm/event-bus/contracts/_shared.js.map +1 -1
  202. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +45 -29
  203. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  204. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js +143 -107
  205. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  206. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +2 -1
  207. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  208. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +22 -0
  209. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
  210. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +17 -9
  211. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  212. package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +3 -3
  213. package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  214. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +2 -1
  215. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  216. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +34 -0
  217. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
  218. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +10 -6
  219. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  220. package/dist/esm/event-bus/implementations/derivables/_module.js +3 -1
  221. package/dist/esm/event-bus/implementations/derivables/_module.js.map +1 -1
  222. package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js +55 -0
  223. package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
  224. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js +29 -17
  225. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  226. package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js +52 -0
  227. package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
  228. package/dist/esm/event-bus/implementations/derivables/event-bus.js +76 -64
  229. package/dist/esm/event-bus/implementations/derivables/event-bus.js.map +1 -1
  230. package/dist/esm/serde/contracts/_module.js +4 -0
  231. package/dist/esm/serde/contracts/_module.js.map +1 -1
  232. package/dist/esm/serde/contracts/deserializer.contract.js +1 -0
  233. package/dist/esm/serde/contracts/deserializer.contract.js.map +1 -0
  234. package/dist/esm/serde/contracts/flexible-serde.contract.js +1 -0
  235. package/dist/esm/serde/contracts/flexible-serde.contract.js.map +1 -0
  236. package/dist/esm/serde/contracts/serializable.contract.js +1 -0
  237. package/dist/esm/serde/contracts/serializable.contract.js.map +1 -0
  238. package/dist/esm/serde/contracts/serializer.contract.js +1 -0
  239. package/dist/esm/serde/contracts/serializer.contract.js.map +1 -0
  240. package/dist/esm/serde/implementations/_module.js +1 -0
  241. package/dist/esm/serde/implementations/_module.js.map +1 -1
  242. package/dist/esm/serde/implementations/_shared/test-utilities/_module.js +1 -0
  243. package/dist/esm/serde/implementations/_shared/test-utilities/_module.js.map +1 -1
  244. package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +50 -0
  245. package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
  246. package/dist/esm/serde/implementations/_shared/test-utilities/serde.test-suite.js +35 -60
  247. package/dist/esm/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -1
  248. package/dist/esm/serde/implementations/no-op-serde/_module.js +2 -0
  249. package/dist/esm/serde/implementations/no-op-serde/_module.js.map +1 -0
  250. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js +12 -0
  251. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js.map +1 -0
  252. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js +5 -2
  253. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  254. package/dist/esm/utilities/contracts/_module.js +1 -0
  255. package/dist/esm/utilities/contracts/_module.js.map +1 -1
  256. package/dist/esm/utilities/contracts/buildable.contract.js +1 -0
  257. package/dist/esm/utilities/contracts/buildable.contract.js.map +1 -0
  258. package/dist/esm/utilities/errors.js +7 -7
  259. package/dist/esm/utilities/errors.js.map +1 -1
  260. package/dist/esm/utilities/functions.js +3 -0
  261. package/dist/esm/utilities/functions.js.map +1 -1
  262. package/dist/esm/utilities/time-span/time-span.js.map +1 -1
  263. package/dist/types/async/_module.d.ts +1 -1
  264. package/dist/types/async/backof-policies/_module.d.ts +1 -1
  265. package/dist/types/async/utilities/_module.d.ts +3 -0
  266. package/dist/types/async/utilities/lazy-promise/lazy-promise.d.ts +36 -46
  267. package/dist/types/cache/contracts/cache-factory.contract.d.ts +10 -23
  268. package/dist/types/cache/contracts/cache.contract.d.ts +365 -8
  269. package/dist/types/cache/contracts/cache.events.d.ts +156 -38
  270. package/dist/types/cache/implementations/_shared/_module.d.ts +1 -0
  271. package/dist/types/cache/implementations/_shared/cache-adapter.test-suite.d.ts +10 -8
  272. package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +15 -9
  273. package/dist/types/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +4 -3
  274. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/_module.d.ts +2 -1
  275. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.d.ts +48 -0
  276. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +49 -37
  277. package/dist/types/cache/implementations/adapters/memory-cache-adapter/_module.d.ts +1 -0
  278. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.d.ts +27 -0
  279. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +41 -17
  280. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/_module.d.ts +2 -1
  281. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.d.ts +51 -0
  282. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +59 -45
  283. package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +1 -1
  284. package/dist/types/cache/implementations/adapters/redis-cache-adapter/_module.d.ts +1 -0
  285. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.d.ts +32 -0
  286. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +41 -26
  287. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/_module.d.ts +1 -0
  288. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.d.ts +48 -0
  289. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +49 -37
  290. package/dist/types/cache/implementations/derivables/_module.d.ts +3 -1
  291. package/dist/types/cache/implementations/derivables/cache-factory-settings.d.ts +77 -0
  292. package/dist/types/cache/implementations/derivables/cache-factory.d.ts +59 -39
  293. package/dist/types/cache/implementations/derivables/cache-settings.d.ts +68 -0
  294. package/dist/types/cache/implementations/derivables/cache.d.ts +65 -36
  295. package/dist/types/collection/contracts/async-collection.contract.d.ts +1247 -666
  296. package/dist/types/collection/contracts/collection.contract.d.ts +1195 -638
  297. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.d.ts +1 -1
  298. package/dist/types/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +190 -4
  299. package/dist/types/collection/implementations/iterable-collection/iterable-collection.d.ts +138 -1
  300. package/dist/types/collection/implementations/list-collection/list-collection.d.ts +138 -1
  301. package/dist/types/event-bus/contracts/_module.d.ts +2 -2
  302. package/dist/types/event-bus/contracts/_shared.d.ts +11 -0
  303. package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +4 -6
  304. package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +37 -31
  305. package/dist/types/event-bus/contracts/event-bus.contract.d.ts +24 -32
  306. package/dist/types/event-bus/implementations/_shared/event-bus-adapter.test-suite.d.ts +6 -3
  307. package/dist/types/event-bus/implementations/_shared/event-bus.test-suite.d.ts +10 -7
  308. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/_module.d.ts +2 -1
  309. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.d.ts +28 -0
  310. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +48 -22
  311. package/dist/types/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +4 -4
  312. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.d.ts +2 -1
  313. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.d.ts +36 -0
  314. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +43 -31
  315. package/dist/types/event-bus/implementations/derivables/_module.d.ts +3 -1
  316. package/dist/types/event-bus/implementations/derivables/event-bus-factory-settings.d.ts +70 -0
  317. package/dist/types/event-bus/implementations/derivables/event-bus-factory.d.ts +39 -22
  318. package/dist/types/event-bus/implementations/derivables/event-bus-settings.d.ts +58 -0
  319. package/dist/types/event-bus/implementations/derivables/event-bus.d.ts +34 -22
  320. package/dist/types/serde/contracts/_module.d.ts +4 -0
  321. package/dist/types/serde/contracts/deserializer.contract.d.ts +13 -0
  322. package/dist/types/serde/contracts/flexible-serde.contract.d.ts +56 -0
  323. package/dist/types/serde/contracts/serde.contract.d.ts +5 -36
  324. package/dist/types/serde/contracts/serializable.contract.d.ts +10 -0
  325. package/dist/types/serde/contracts/serializer.contract.d.ts +10 -0
  326. package/dist/types/serde/implementations/_module.d.ts +1 -0
  327. package/dist/types/serde/implementations/_shared/test-utilities/_module.d.ts +1 -0
  328. package/dist/types/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.d.ts +17 -0
  329. package/dist/types/serde/implementations/_shared/test-utilities/serde.test-suite.d.ts +2 -3
  330. package/dist/types/serde/implementations/no-op-serde/_module.d.ts +1 -0
  331. package/dist/types/serde/implementations/no-op-serde/no-op-serde.d.ts +13 -0
  332. package/dist/types/serde/implementations/super-json-serde/super-json-serde.d.ts +1 -1
  333. package/dist/types/utilities/contracts/_module.d.ts +1 -0
  334. package/dist/types/utilities/contracts/buildable.contract.d.ts +9 -0
  335. package/dist/types/utilities/errors.d.ts +3 -3
  336. package/dist/types/utilities/functions.d.ts +4 -0
  337. package/dist/types/utilities/time-span/time-span.d.ts +2 -2
  338. package/dist/types/utilities/types.d.ts +0 -1
  339. package/package.json +1 -1
@@ -1,102 +1,94 @@
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
- }>;
6
+ import type { BaseEvent, Listener } from "../../event-bus/contracts/_shared";
13
7
  /**
14
8
  * @group Contracts
15
9
  */
16
- export type SelectEvent<TEvents extends BaseEvents, TEventName extends keyof TEvents> = {
17
- [TEventName in keyof TEvents]: TEvents[TEventName] & {
18
- type: TEventName;
19
- };
20
- }[TEventName];
10
+ export type EventClass<TEvents extends BaseEvent> = {
11
+ new (...arguments_: any[]): TEvents;
12
+ };
21
13
  /**
22
14
  * @group Contracts
23
15
  */
24
- export type Unsubscribe = () => LazyPromise<void>;
16
+ export type EventInstance<TEventClass extends EventClass<BaseEvent>> = TEventClass extends {
17
+ new (...arguments_: any[]): infer TInstance;
18
+ } ? TInstance : never;
25
19
  /**
26
20
  * @group Contracts
27
21
  */
28
- export type AddListenerSettings = {
29
- signal?: AbortSignal;
30
- };
22
+ export type Unsubscribe = () => LazyPromise<void>;
31
23
  /**
32
- * 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
33
25
  * @group Contracts
34
26
  */
35
- export type IListenable<TEvents extends BaseEvents = BaseEvents> = {
27
+ export type IEventListener<TEvents extends BaseEvent = BaseEvent> = {
36
28
  /**
37
29
  * The <i>addListener</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
38
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.
39
31
  * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
40
32
  */
41
- 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>;
42
34
  /**
43
35
  * The <i>addListenerMany</i> method is used for adding multiple <i>{@link Listener | listeners}</i> for certain <i>events</i>.
44
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.
45
37
  * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
46
38
  */
47
- 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>;
48
40
  /**
49
41
  * The <i>removeListener</i> method is used for removing <i>{@link Listener | listener}</i> for certain <i>event</i>.
50
42
  * Removing unadded listener will have no effect and nothing will occur.
51
43
  * @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
52
44
  */
53
- 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>;
54
46
  /**
55
47
  * The <i>removeListener</i> method is used for removing multiple <i>{@link Listener | listeners}</i> for certain <i>event</i>.
56
48
  * Removing unadded listener will have no effect and nothing will occur.
57
49
  * @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
58
50
  */
59
- 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>;
60
52
  /**
61
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.
62
54
  * @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
63
55
  */
64
- listenOnce<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
56
+ listenOnce<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
65
57
  /**
66
58
  * The <i>subscribe</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
67
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.
68
60
  */
69
- 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>;
70
62
  /**
71
63
  * The <i>subscribeMany</i> method is used for adding <i>{@link Listener | listener}</i> for multiple <i>events</i>.
72
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.
73
65
  */
74
- 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>;
75
67
  };
76
68
  /**
77
- * 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.
78
70
  * @group Contracts
79
71
  */
80
- export type IDispatcher<TEvents extends BaseEvents = BaseEvents> = {
72
+ export type IEventDispatcher<TEvents extends BaseEvent = BaseEvent> = {
81
73
  /**
82
74
  * The <i>dispatch</i> method is used for dispatching a <i>event</i>.
83
75
 
84
76
  * @throws {DispatchEventBusError} {@link DispatchEventBusError}
85
77
  */
86
- dispatch(event: AllEvents<TEvents>): LazyPromise<void>;
78
+ dispatch(event: TEvents): LazyPromise<void>;
87
79
  /**
88
80
  * The <i>dispatchMany</i> method is used for dispatching multiple <i>event</i>.
89
81
 
90
82
  * @throws {DispatchEventBusError} {@link DispatchEventBusError}
91
83
  */
92
- dispatchMany(events: AllEvents<TEvents>[]): LazyPromise<void>;
84
+ dispatchMany(events: TEvents[]): LazyPromise<void>;
93
85
  };
94
86
  /**
95
87
  * The <i>IEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
96
88
  * It commes with more convient methods compared to <i>IEventBusAdapter</i>.
97
89
  * @group Contracts
98
90
  */
99
- export type IEventBus<TEvents extends BaseEvents = BaseEvents> = IListenable<TEvents> & IDispatcher<TEvents> & {
91
+ export type IEventBus<TEvents extends BaseEvent = BaseEvent> = IEventListener<TEvents> & IEventDispatcher<TEvents> & {
100
92
  /**
101
93
  * The <i>getGroup</i> method returns the complete group.
102
94
  * @example
@@ -121,7 +113,7 @@ export type IEventBus<TEvents extends BaseEvents = BaseEvents> = IListenable<TEv
121
113
  * It commes with one extra method which is useful for multitennat applications compared to <i>IEventBus</i>.
122
114
  * @group Contracts
123
115
  */
124
- export type IGroupableEventBus<TEvents extends BaseEvents = BaseEvents> = IEventBus<TEvents> & {
116
+ export type IGroupableEventBus<TEvents extends BaseEvent = BaseEvent> = IEventBus<TEvents> & {
125
117
  /**
126
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>.
127
119
  * This useful for multitennat applications.
@@ -4,11 +4,13 @@
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;
@@ -26,7 +28,7 @@ export type EventBusAdapterTestSuiteSettings = {
26
28
  * import Redis from "ioredis";
27
29
  * import { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, eventBusAdapterTestSuite } from "@daiso-tech/core";
28
30
  *
29
- * const timeout = TimeSpan.fromMinutes(2);
31
+ * const TIMEOUT = TimeSpan.fromMinutes(2);
30
32
  * describe("class: RedisPubSubEventBusAdapter", () => {
31
33
  * let dispatcherClient: Redis;
32
34
  * let listenerClient: Redis;
@@ -36,12 +38,12 @@ export type EventBusAdapterTestSuiteSettings = {
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
  * eventBusAdapterTestSuite({
46
48
  * createAdapterA: () =>
47
49
  * new RedisPubSubEventBusAdapter({
@@ -57,6 +59,7 @@ export type EventBusAdapterTestSuiteSettings = {
57
59
  * serde,
58
60
  * rootGroup: "@global"
59
61
  * }),
62
+ * serde,
60
63
  * test,
61
64
  * beforeEach,
62
65
  * expect,
@@ -4,11 +4,13 @@
4
4
  import { type TestAPI, type SuiteAPI, type ExpectStatic, type beforeEach } from "vitest";
5
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,9 +26,9 @@ 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 { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, 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;
@@ -36,12 +38,12 @@ export type EventBusTestSuiteSettings = {
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(
@@ -49,8 +51,8 @@ export type EventBusTestSuiteSettings = {
49
51
  * dispatcherClient,
50
52
  * listenerClient,
51
53
  * serde,
52
- * }),
53
- * { rootGroup: "@a" }
54
+ * rootGroup: "@global"
55
+ * })
54
56
  * ),
55
57
  * createEventBusB: () =>
56
58
  * new EventBus(
@@ -58,9 +60,10 @@ export type EventBusTestSuiteSettings = {
58
60
  * dispatcherClient,
59
61
  * listenerClient,
60
62
  * serde,
63
+ * rootGroup: "@global"
61
64
  * }),
62
- * { rootGroup: "@b" }
63
65
  * ),
66
+ * serde,
64
67
  * test,
65
68
  * beforeEach,
66
69
  * expect,
@@ -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
+ }
@@ -2,35 +2,61 @@
2
2
  * @module EventBus
3
3
  */
4
4
  import { type OneOrMore } from "../../../../utilities/_module";
5
- import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
6
- import { EventEmitter } from "node:events";
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";
7
8
  /**
8
9
  * To utilize the <i>MemoryEventBusAdapter</i>, you must create instance of it.
9
10
  * @group Adapters
10
- * @example
11
- * ```ts
12
- * import { MemoryEventBusAdapter } from "@daiso-tech/core";
13
- *
14
- * const eventBusAdapter = new MemoryEventBusAdapter(client);
15
- * ```
16
- * You can also provide an <i>EVentEmitter</i>.
17
- * @example
18
- * ```ts
19
- * import { MemoryCacheAdapter } from "@daiso-tech/core";
20
- * import { EventEmitter } from "node:events";
21
- *
22
- * const eventEmitter = new EventEmitter();
23
- * const eventBusAdapter = new MemoryCacheAdapter("@global", eventEmitter);
24
- * ```
25
11
  */
26
12
  export declare class MemoryEventBusAdapter implements IEventBusAdapter {
27
- private readonly eventEmiter;
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>;
28
29
  private readonly group;
29
- constructor(defaultGroup: OneOrMore<string>, eventEmiter?: EventEmitter<[never]>);
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);
30
56
  getGroup(): string;
31
57
  withGroup(group: OneOrMore<string>): IEventBusAdapter;
32
58
  private withPrefix;
33
- addListener(eventName: string, listener: Listener<IBaseEvent>): Promise<void>;
34
- removeListener(eventName: string, listener: Listener<IBaseEvent>): Promise<void>;
35
- dispatch(event: IBaseEvent): Promise<void>;
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>;
36
62
  }
@@ -2,7 +2,7 @@
2
2
  * @module EventBus
3
3
  */
4
4
  import type { OneOrMore } from "../../../../utilities/_module";
5
- import type { Listener, IBaseEvent } from "../../../../event-bus/contracts/_module";
5
+ import type { BaseEvent, Listener } from "../../../../event-bus/contracts/_module";
6
6
  import type { IEventBusAdapter } from "../../../../event-bus/contracts/_module";
7
7
  /**
8
8
  * This <i>NoOpEventBusAdapter</i> will do nothing and is used for easily mocking {@link IEventBus} for testing.
@@ -11,7 +11,7 @@ import type { IEventBusAdapter } from "../../../../event-bus/contracts/_module";
11
11
  export declare class NoOpEventBusAdapter implements IEventBusAdapter {
12
12
  getGroup(): string;
13
13
  withGroup(_group: OneOrMore<string>): IEventBusAdapter;
14
- addListener(_event: string, _listener: Listener<IBaseEvent>): Promise<void>;
15
- removeListener(_event: string, _listener: Listener<IBaseEvent>): Promise<void>;
16
- dispatch(_event: IBaseEvent): Promise<void>;
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>;
17
17
  }
@@ -1 +1,2 @@
1
- export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/_module";
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
+ }
@@ -1,50 +1,62 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import { type ISerde } from "../../../../serde/contracts/_module";
5
- import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
6
- import type Redis from "ioredis";
4
+ import type { BaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
7
5
  import type { OneOrMore } from "../../../../utilities/_module";
6
+ import type { RedisPubSubEventBusAdapterSettings } from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings";
7
+ import { RedisPubSubEventBusAdapterSettingsBuilder } from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings";
8
8
  /**
9
+ * To utilize the <i>RedisPubSubEventBusAdapter</i>, you must install the <i>"ioredis"</i> package and supply a <i>{@link ISerde | ISerde<string> }</i>, such as <i>{@link SuperJsonSerde}</i>.
9
10
  * @group Adapters
10
11
  */
11
- export type RedisPubSubEventBusAdapterSettings = {
12
- dispatcherClient: Redis;
13
- listenerClient: Redis;
14
- serde: ISerde<string>;
15
- rootGroup: OneOrMore<string>;
16
- };
17
- /**
18
- * To utilize the <i>RedisPubSubEventBusAdapter</i>, you must install the <i>"ioredis"</i> package and supply a <i>{@link ISerde | string serde}</i>, such as <i>{@link SuperJsonSerde}</i>.
19
- * @group Adapters
20
- * @example
21
- * ```ts
22
- * import { RedisPubSubEventBusAdapter, SuperJsonSerde } from "@daiso-tech/core";
23
- * import Redis from "ioredis";
24
- *
25
- * const dispatcherClient = new Redis("YOUR_REDIS_CONNECTION_STRING");
26
- * const listenerClient = new Redis("YOUR_REDIS_CONNECTION_STRING");
27
- * const serde = new SuperJsonSerde();
28
- * const eventBusAdapter = new RedisPubSubEventBusAdapter({
29
- * dispatcherClient,
30
- * listenerClient,
31
- * serde,
32
- * });
33
- * ```
34
- */
35
12
  export declare class RedisPubSubEventBusAdapter implements IEventBusAdapter {
13
+ /**
14
+ * @example
15
+ * ```ts
16
+ * import { RedisPubSubEventBusAdapter, SuperJsonSerde } from "@daiso-tech/core";
17
+ * import Redis from "ioredis";
18
+ *
19
+ * const cacheAdapter = new RedisPubSubEventBusAdapter(
20
+ * RedisPubSubEventBusAdapter
21
+ * .settings()
22
+ * .setDispatcherClient(new Redis("YOUR REDIS CONNECTION"))
23
+ * .setListenerClient(new Redis("YOUR REDIS CONNECTION"))
24
+ * .setSerde(new SuperJsonSerde())
25
+ * .setRootGroup("@global")
26
+ * .build()
27
+ * );
28
+ * ```
29
+ */
30
+ static settings<TSettings extends Partial<RedisPubSubEventBusAdapterSettings>>(): RedisPubSubEventBusAdapterSettingsBuilder<TSettings>;
36
31
  private readonly group;
37
- private readonly serde;
32
+ private readonly baseSerde;
38
33
  private readonly redisSerde;
39
34
  private readonly dispatcherClient;
40
35
  private readonly listenerClient;
41
36
  private readonly eventEmitter;
37
+ /**
38
+ * @example
39
+ * ```ts
40
+ * import { RedisPubSubEventBusAdapter, SuperJsonSerde } from "@daiso-tech/core";
41
+ * import Redis from "ioredis";
42
+ *
43
+ * const dispatcherClient = new Redis("YOUR_REDIS_CONNECTION_STRING");
44
+ * const listenerClient = new Redis("YOUR_REDIS_CONNECTION_STRING");
45
+ * const serde = new SuperJsonSerde();
46
+ * const eventBusAdapter = new RedisPubSubEventBusAdapter({
47
+ * dispatcherClient,
48
+ * listenerClient,
49
+ * serde,
50
+ * rootGroup: "@global"
51
+ * });
52
+ * ```
53
+ */
42
54
  constructor({ dispatcherClient, listenerClient, serde, rootGroup, }: RedisPubSubEventBusAdapterSettings);
43
55
  getGroup(): string;
44
56
  withGroup(group: OneOrMore<string>): IEventBusAdapter;
45
57
  private withPrefix;
46
58
  private redisListener;
47
- addListener(eventName: string, listener: Listener<IBaseEvent>): Promise<void>;
48
- removeListener(eventName: string, listener: Listener<IBaseEvent>): Promise<void>;
49
- dispatch(event: IBaseEvent): Promise<void>;
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>;
50
62
  }
@@ -1,2 +1,4 @@
1
- export * from "../../../event-bus/implementations/derivables/event-bus";
1
+ export * from "../../../event-bus/implementations/derivables/event-bus-factory-settings";
2
2
  export * from "../../../event-bus/implementations/derivables/event-bus-factory";
3
+ export * from "../../../event-bus/implementations/derivables/event-bus-settings";
4
+ export * from "../../../event-bus/implementations/derivables/event-bus";
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { BackoffPolicy, RetryPolicy } from "../../../async/_module";
5
+ import type { IGroupableEventBus, IEventBusAdapter } from "../../../event-bus/contracts/_module";
6
+ import type { TimeSpan } from "../../../utilities/_module";
7
+ /**
8
+ * @group Derivables
9
+ */
10
+ export type EventBusAdapters<TAdapters extends string = string> = Partial<Record<TAdapters, IEventBusAdapter>>;
11
+ /**
12
+ * The <i>EventBusFactorySettings</i> is an immutable builder class, meaning that each method invocation creates a new instance.
13
+ * @group Derivables
14
+ */
15
+ export type EventBusFactorySettings<TAdapters extends string = string> = {
16
+ adapters: EventBusAdapters<TAdapters>;
17
+ defaultAdapter?: NoInfer<TAdapters>;
18
+ /**
19
+ * In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
20
+ */
21
+ eventBus?: IGroupableEventBus<any>;
22
+ /**
23
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
24
+ */
25
+ retryAttempts?: number | null;
26
+ /**
27
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
28
+ */
29
+ backoffPolicy?: BackoffPolicy | null;
30
+ /**
31
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
32
+ */
33
+ retryPolicy?: RetryPolicy | null;
34
+ /**
35
+ * The default timeout to use in the returned <i>LazyPromise</i>.
36
+ */
37
+ timeout?: TimeSpan | null;
38
+ };
39
+ /**
40
+ * The <i>EventBusFactorySettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
41
+ * @group Derivables
42
+ */
43
+ export declare class EventBusFactorySettingsBuilder<TSettings extends EventBusFactorySettings> {
44
+ private readonly settings;
45
+ constructor(settings?: TSettings);
46
+ setEventBus(eventBus: IGroupableEventBus<any>): EventBusFactorySettingsBuilder<TSettings & {
47
+ eventBus: IGroupableEventBus<any>;
48
+ }>;
49
+ setRetryAttempts(attempts: number | null): EventBusFactorySettingsBuilder<TSettings & {
50
+ retryAttempts: number | null;
51
+ }>;
52
+ setBackoffPolicy(policy: BackoffPolicy | null): EventBusFactorySettingsBuilder<TSettings & {
53
+ backoffPolicy: BackoffPolicy | null;
54
+ }>;
55
+ setRetryPolicy(policy: RetryPolicy | null): EventBusFactorySettingsBuilder<TSettings & {
56
+ retryPolicy: RetryPolicy | null;
57
+ }>;
58
+ setTimeout(time: TimeSpan | null): EventBusFactorySettingsBuilder<TSettings & {
59
+ timeout: TimeSpan | null;
60
+ }>;
61
+ setAdapter<TName extends string>(name: TName, adapter: IEventBusAdapter): EventBusFactorySettingsBuilder<TSettings & {
62
+ adapters: {
63
+ readonly [x: string]: IEventBusAdapter | undefined;
64
+ };
65
+ }>;
66
+ setDefaultAdapter(adapter: string): EventBusFactorySettingsBuilder<TSettings & {
67
+ defaultAdapter: string;
68
+ }>;
69
+ build(this: EventBusFactorySettingsBuilder<EventBusFactorySettings>): EventBusFactorySettings;
70
+ }