@daiso-tech/core 0.16.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) 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.errors.js +19 -0
  10. package/dist/cjs/cache/contracts/cache.errors.js.map +1 -1
  11. package/dist/cjs/cache/contracts/cache.events.js +156 -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.map +1 -1
  16. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  17. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +7 -5
  18. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  19. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js +2 -1
  20. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  21. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +56 -0
  22. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
  23. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +18 -14
  24. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  25. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js +1 -0
  26. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  27. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +26 -0
  28. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
  29. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +11 -3
  30. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  31. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js +2 -1
  32. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  33. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +44 -0
  34. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
  35. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +21 -8
  36. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  37. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js +1 -0
  38. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  39. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +32 -0
  40. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
  41. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +27 -20
  42. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  43. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js +1 -0
  44. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  45. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +56 -0
  46. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
  47. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +19 -15
  48. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  49. package/dist/cjs/cache/implementations/derivables/_module.js +3 -1
  50. package/dist/cjs/cache/implementations/derivables/_module.js.map +1 -1
  51. package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js +83 -0
  52. package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
  53. package/dist/cjs/cache/implementations/derivables/cache-factory.js +52 -18
  54. package/dist/cjs/cache/implementations/derivables/cache-factory.js.map +1 -1
  55. package/dist/cjs/cache/implementations/derivables/cache-settings.js +74 -0
  56. package/dist/cjs/cache/implementations/derivables/cache-settings.js.map +1 -0
  57. package/dist/cjs/cache/implementations/derivables/cache.js +167 -93
  58. package/dist/cjs/cache/implementations/derivables/cache.js.map +1 -1
  59. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js +1 -1
  60. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
  61. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
  62. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
  63. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
  64. package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
  65. package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js +20 -11
  66. package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  67. package/dist/cjs/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  68. package/dist/cjs/collection/implementations/list-collection/list-collection.js.map +1 -1
  69. package/dist/cjs/event-bus/contracts/_module.js +2 -2
  70. package/dist/cjs/event-bus/contracts/_module.js.map +1 -1
  71. package/dist/cjs/event-bus/contracts/_shared.js +7 -0
  72. package/dist/cjs/event-bus/contracts/_shared.js.map +1 -1
  73. package/dist/cjs/event-bus/contracts/event-bus.errors.js +19 -0
  74. package/dist/cjs/event-bus/contracts/event-bus.errors.js.map +1 -1
  75. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +52 -36
  76. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  77. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js +156 -120
  78. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  79. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +2 -1
  80. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  81. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +26 -0
  82. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
  83. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +17 -9
  84. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  85. package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +3 -3
  86. package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  87. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +2 -1
  88. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  89. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +38 -0
  90. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
  91. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +9 -5
  92. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  93. package/dist/cjs/event-bus/implementations/derivables/_module.js +3 -1
  94. package/dist/cjs/event-bus/implementations/derivables/_module.js.map +1 -1
  95. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js +71 -0
  96. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
  97. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js +47 -18
  98. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  99. package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js +68 -0
  100. package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
  101. package/dist/cjs/event-bus/implementations/derivables/event-bus.js +102 -62
  102. package/dist/cjs/event-bus/implementations/derivables/event-bus.js.map +1 -1
  103. package/dist/cjs/serde/contracts/_module.js +4 -0
  104. package/dist/cjs/serde/contracts/_module.js.map +1 -1
  105. package/dist/cjs/serde/contracts/deserializer.contract.js +3 -0
  106. package/dist/cjs/serde/contracts/deserializer.contract.js.map +1 -0
  107. package/dist/cjs/serde/contracts/flexible-serde.contract.js +3 -0
  108. package/dist/cjs/serde/contracts/flexible-serde.contract.js.map +1 -0
  109. package/dist/cjs/serde/contracts/serializable.contract.js +3 -0
  110. package/dist/cjs/serde/contracts/serializable.contract.js.map +1 -0
  111. package/dist/cjs/serde/contracts/serializer.contract.js +3 -0
  112. package/dist/cjs/serde/contracts/serializer.contract.js.map +1 -0
  113. package/dist/cjs/serde/implementations/_module.js +1 -0
  114. package/dist/cjs/serde/implementations/_module.js.map +1 -1
  115. package/dist/cjs/serde/implementations/_shared/test-utilities/_module.js +1 -0
  116. package/dist/cjs/serde/implementations/_shared/test-utilities/_module.js.map +1 -1
  117. package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +69 -0
  118. package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
  119. package/dist/cjs/serde/implementations/_shared/test-utilities/serde.test-suite.js +35 -60
  120. package/dist/cjs/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -1
  121. package/dist/cjs/serde/implementations/no-op-serde/_module.js +18 -0
  122. package/dist/cjs/serde/implementations/no-op-serde/_module.js.map +1 -0
  123. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js +19 -0
  124. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js.map +1 -0
  125. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js +57 -111
  126. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  127. package/dist/cjs/utilities/contracts/_module.js +2 -0
  128. package/dist/cjs/utilities/contracts/_module.js.map +1 -1
  129. package/dist/cjs/utilities/contracts/buildable.contract.js +3 -0
  130. package/dist/cjs/utilities/contracts/buildable.contract.js.map +1 -0
  131. package/dist/cjs/utilities/contracts/serialized-error.contract.js +3 -0
  132. package/dist/cjs/utilities/contracts/serialized-error.contract.js.map +1 -0
  133. package/dist/cjs/utilities/errors.js +10 -10
  134. package/dist/cjs/utilities/errors.js.map +1 -1
  135. package/dist/cjs/utilities/functions.js +4 -0
  136. package/dist/cjs/utilities/functions.js.map +1 -1
  137. package/dist/cjs/utilities/time-span/time-span.js.map +1 -1
  138. package/dist/esm/async/_module.js +1 -1
  139. package/dist/esm/async/_module.js.map +1 -1
  140. package/dist/esm/async/backof-policies/_module.js +1 -0
  141. package/dist/esm/async/backof-policies/_module.js.map +1 -1
  142. package/dist/esm/async/utilities/_module.js +3 -0
  143. package/dist/esm/async/utilities/_module.js.map +1 -1
  144. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +16 -22
  145. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  146. package/dist/esm/cache/contracts/cache.errors.js +19 -0
  147. package/dist/esm/cache/contracts/cache.errors.js.map +1 -1
  148. package/dist/esm/cache/contracts/cache.events.js +147 -0
  149. package/dist/esm/cache/contracts/cache.events.js.map +1 -1
  150. package/dist/esm/cache/implementations/_shared/_module.js +1 -0
  151. package/dist/esm/cache/implementations/_shared/_module.js.map +1 -1
  152. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  153. package/dist/esm/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  154. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +7 -5
  155. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  156. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js +2 -1
  157. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  158. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +52 -0
  159. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
  160. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +17 -13
  161. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  162. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js +1 -0
  163. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  164. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +22 -0
  165. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
  166. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +11 -3
  167. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  168. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js +2 -1
  169. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  170. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +40 -0
  171. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
  172. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +21 -8
  173. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  174. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js +1 -0
  175. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  176. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +28 -0
  177. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
  178. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +28 -21
  179. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  180. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js +1 -0
  181. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  182. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +52 -0
  183. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
  184. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +17 -13
  185. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  186. package/dist/esm/cache/implementations/derivables/_module.js +3 -1
  187. package/dist/esm/cache/implementations/derivables/_module.js.map +1 -1
  188. package/dist/esm/cache/implementations/derivables/cache-factory-settings.js +79 -0
  189. package/dist/esm/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
  190. package/dist/esm/cache/implementations/derivables/cache-factory.js +53 -19
  191. package/dist/esm/cache/implementations/derivables/cache-factory.js.map +1 -1
  192. package/dist/esm/cache/implementations/derivables/cache-settings.js +70 -0
  193. package/dist/esm/cache/implementations/derivables/cache-settings.js.map +1 -0
  194. package/dist/esm/cache/implementations/derivables/cache.js +146 -72
  195. package/dist/esm/cache/implementations/derivables/cache.js.map +1 -1
  196. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js +1 -1
  197. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
  198. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
  199. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
  200. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
  201. package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
  202. package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js +20 -11
  203. package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  204. package/dist/esm/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  205. package/dist/esm/collection/implementations/list-collection/list-collection.js.map +1 -1
  206. package/dist/esm/event-bus/contracts/_module.js +2 -2
  207. package/dist/esm/event-bus/contracts/_module.js.map +1 -1
  208. package/dist/esm/event-bus/contracts/_shared.js +5 -0
  209. package/dist/esm/event-bus/contracts/_shared.js.map +1 -1
  210. package/dist/esm/event-bus/contracts/event-bus.errors.js +19 -0
  211. package/dist/esm/event-bus/contracts/event-bus.errors.js.map +1 -1
  212. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +45 -29
  213. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  214. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js +143 -107
  215. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  216. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +2 -1
  217. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  218. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +22 -0
  219. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
  220. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +17 -9
  221. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  222. package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +3 -3
  223. package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  224. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +2 -1
  225. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  226. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +34 -0
  227. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
  228. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +10 -6
  229. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  230. package/dist/esm/event-bus/implementations/derivables/_module.js +3 -1
  231. package/dist/esm/event-bus/implementations/derivables/_module.js.map +1 -1
  232. package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js +67 -0
  233. package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
  234. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js +48 -19
  235. package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
  236. package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js +64 -0
  237. package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
  238. package/dist/esm/event-bus/implementations/derivables/event-bus.js +104 -64
  239. package/dist/esm/event-bus/implementations/derivables/event-bus.js.map +1 -1
  240. package/dist/esm/serde/contracts/_module.js +4 -0
  241. package/dist/esm/serde/contracts/_module.js.map +1 -1
  242. package/dist/esm/serde/contracts/deserializer.contract.js +1 -0
  243. package/dist/esm/serde/contracts/deserializer.contract.js.map +1 -0
  244. package/dist/esm/serde/contracts/flexible-serde.contract.js +1 -0
  245. package/dist/esm/serde/contracts/flexible-serde.contract.js.map +1 -0
  246. package/dist/esm/serde/contracts/serializable.contract.js +1 -0
  247. package/dist/esm/serde/contracts/serializable.contract.js.map +1 -0
  248. package/dist/esm/serde/contracts/serializer.contract.js +1 -0
  249. package/dist/esm/serde/contracts/serializer.contract.js.map +1 -0
  250. package/dist/esm/serde/implementations/_module.js +1 -0
  251. package/dist/esm/serde/implementations/_module.js.map +1 -1
  252. package/dist/esm/serde/implementations/_shared/test-utilities/_module.js +1 -0
  253. package/dist/esm/serde/implementations/_shared/test-utilities/_module.js.map +1 -1
  254. package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +66 -0
  255. package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
  256. package/dist/esm/serde/implementations/_shared/test-utilities/serde.test-suite.js +35 -60
  257. package/dist/esm/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -1
  258. package/dist/esm/serde/implementations/no-op-serde/_module.js +2 -0
  259. package/dist/esm/serde/implementations/no-op-serde/_module.js.map +1 -0
  260. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js +15 -0
  261. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js.map +1 -0
  262. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js +57 -111
  263. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  264. package/dist/esm/utilities/contracts/_module.js +2 -0
  265. package/dist/esm/utilities/contracts/_module.js.map +1 -1
  266. package/dist/esm/utilities/contracts/buildable.contract.js +1 -0
  267. package/dist/esm/utilities/contracts/buildable.contract.js.map +1 -0
  268. package/dist/esm/utilities/contracts/serialized-error.contract.js +1 -0
  269. package/dist/esm/utilities/contracts/serialized-error.contract.js.map +1 -0
  270. package/dist/esm/utilities/errors.js +7 -7
  271. package/dist/esm/utilities/errors.js.map +1 -1
  272. package/dist/esm/utilities/functions.js +3 -0
  273. package/dist/esm/utilities/functions.js.map +1 -1
  274. package/dist/esm/utilities/time-span/time-span.js.map +1 -1
  275. package/dist/types/async/_module.d.ts +1 -1
  276. package/dist/types/async/backof-policies/_module.d.ts +1 -1
  277. package/dist/types/async/utilities/_module.d.ts +3 -0
  278. package/dist/types/async/utilities/lazy-promise/lazy-promise.d.ts +36 -46
  279. package/dist/types/cache/contracts/cache-factory.contract.d.ts +10 -23
  280. package/dist/types/cache/contracts/cache.contract.d.ts +365 -8
  281. package/dist/types/cache/contracts/cache.errors.d.ts +11 -4
  282. package/dist/types/cache/contracts/cache.events.d.ts +150 -38
  283. package/dist/types/cache/implementations/_shared/_module.d.ts +1 -0
  284. package/dist/types/cache/implementations/_shared/cache-adapter.test-suite.d.ts +10 -8
  285. package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +15 -9
  286. package/dist/types/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +4 -3
  287. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/_module.d.ts +2 -1
  288. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.d.ts +48 -0
  289. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +49 -37
  290. package/dist/types/cache/implementations/adapters/memory-cache-adapter/_module.d.ts +1 -0
  291. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.d.ts +27 -0
  292. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +41 -17
  293. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/_module.d.ts +2 -1
  294. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.d.ts +51 -0
  295. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +59 -45
  296. package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +1 -1
  297. package/dist/types/cache/implementations/adapters/redis-cache-adapter/_module.d.ts +1 -0
  298. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.d.ts +32 -0
  299. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +41 -26
  300. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/_module.d.ts +1 -0
  301. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.d.ts +48 -0
  302. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +49 -37
  303. package/dist/types/cache/implementations/derivables/_module.d.ts +3 -1
  304. package/dist/types/cache/implementations/derivables/cache-factory-settings.d.ts +108 -0
  305. package/dist/types/cache/implementations/derivables/cache-factory.d.ts +67 -39
  306. package/dist/types/cache/implementations/derivables/cache-settings.d.ts +100 -0
  307. package/dist/types/cache/implementations/derivables/cache.d.ts +95 -36
  308. package/dist/types/collection/contracts/async-collection.contract.d.ts +1247 -666
  309. package/dist/types/collection/contracts/collection.contract.d.ts +1195 -638
  310. package/dist/types/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.d.ts +1 -1
  311. package/dist/types/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +190 -4
  312. package/dist/types/collection/implementations/iterable-collection/iterable-collection.d.ts +138 -1
  313. package/dist/types/collection/implementations/list-collection/list-collection.d.ts +138 -1
  314. package/dist/types/event-bus/contracts/_module.d.ts +2 -2
  315. package/dist/types/event-bus/contracts/_shared.d.ts +11 -0
  316. package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +4 -6
  317. package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +37 -31
  318. package/dist/types/event-bus/contracts/event-bus.contract.d.ts +24 -32
  319. package/dist/types/event-bus/contracts/event-bus.errors.d.ts +8 -1
  320. package/dist/types/event-bus/implementations/_shared/event-bus-adapter.test-suite.d.ts +6 -3
  321. package/dist/types/event-bus/implementations/_shared/event-bus.test-suite.d.ts +10 -7
  322. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/_module.d.ts +2 -1
  323. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.d.ts +28 -0
  324. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +48 -22
  325. package/dist/types/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +4 -4
  326. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.d.ts +2 -1
  327. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.d.ts +36 -0
  328. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +43 -31
  329. package/dist/types/event-bus/implementations/derivables/_module.d.ts +3 -1
  330. package/dist/types/event-bus/implementations/derivables/event-bus-factory-settings.d.ts +92 -0
  331. package/dist/types/event-bus/implementations/derivables/event-bus-factory.d.ts +43 -22
  332. package/dist/types/event-bus/implementations/derivables/event-bus-settings.d.ts +80 -0
  333. package/dist/types/event-bus/implementations/derivables/event-bus.d.ts +46 -22
  334. package/dist/types/serde/contracts/_module.d.ts +4 -0
  335. package/dist/types/serde/contracts/deserializer.contract.d.ts +13 -0
  336. package/dist/types/serde/contracts/flexible-serde.contract.d.ts +120 -0
  337. package/dist/types/serde/contracts/serde.contract.d.ts +5 -36
  338. package/dist/types/serde/contracts/serializable.contract.d.ts +10 -0
  339. package/dist/types/serde/contracts/serializer.contract.d.ts +10 -0
  340. package/dist/types/serde/implementations/_module.d.ts +1 -0
  341. package/dist/types/serde/implementations/_shared/test-utilities/_module.d.ts +1 -0
  342. package/dist/types/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.d.ts +17 -0
  343. package/dist/types/serde/implementations/_shared/test-utilities/serde.test-suite.d.ts +2 -3
  344. package/dist/types/serde/implementations/no-op-serde/_module.d.ts +1 -0
  345. package/dist/types/serde/implementations/no-op-serde/no-op-serde.d.ts +14 -0
  346. package/dist/types/serde/implementations/super-json-serde/super-json-serde.d.ts +23 -2
  347. package/dist/types/utilities/contracts/_module.d.ts +2 -0
  348. package/dist/types/utilities/contracts/buildable.contract.d.ts +9 -0
  349. package/dist/types/utilities/contracts/serialized-error.contract.d.ts +11 -0
  350. package/dist/types/utilities/errors.d.ts +3 -3
  351. package/dist/types/utilities/functions.d.ts +4 -0
  352. package/dist/types/utilities/time-span/time-span.d.ts +2 -2
  353. package/dist/types/utilities/types.d.ts +1 -2
  354. package/package.json +1 -1
@@ -0,0 +1,92 @@
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 { IFlexibleSerde } from "../../../serde/contracts/_module";
7
+ import type { OneOrMore, TimeSpan } from "../../../utilities/_module";
8
+ /**
9
+ * @group Derivables
10
+ */
11
+ export type EventBusAdapters<TAdapters extends string = string> = Partial<Record<TAdapters, IEventBusAdapter>>;
12
+ /**
13
+ * The <i>EventBusFactorySettings</i> is an immutable builder class, meaning that each method invocation creates a new instance.
14
+ * @group Derivables
15
+ */
16
+ export type EventBusFactorySettings<TAdapters extends string = string> = {
17
+ /**
18
+ * You can pass one or more <i>{@link IFlexibleSerde}</i> that will be used to register all <i>{@link IGroupableEventBus}</i> related errors.
19
+ * @default {true}
20
+ */
21
+ serde: OneOrMore<IFlexibleSerde>;
22
+ /**
23
+ * If set to true, all <i>{@link IGroupableEventBus}</i> related errors will be registered with the specified <i>IFlexibleSerde</i> during constructor initialization.
24
+ * This ensures that all <i>{@link IGroupableEventBus}</i> related errors will be serialized correctly.
25
+ * @default {true}
26
+ */
27
+ shouldRegisterErrors?: boolean;
28
+ adapters: EventBusAdapters<TAdapters>;
29
+ defaultAdapter?: NoInfer<TAdapters>;
30
+ /**
31
+ * In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
32
+ */
33
+ eventBus?: IGroupableEventBus<any>;
34
+ /**
35
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
36
+ * @default {null}
37
+ */
38
+ retryAttempts?: number | null;
39
+ /**
40
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
41
+ * @default {null}
42
+ */
43
+ backoffPolicy?: BackoffPolicy | null;
44
+ /**
45
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
46
+ * @default {null}
47
+ */
48
+ retryPolicy?: RetryPolicy | null;
49
+ /**
50
+ * The default timeout to use in the returned <i>LazyPromise</i>.
51
+ * @default {null}
52
+ */
53
+ timeout?: TimeSpan | null;
54
+ };
55
+ /**
56
+ * The <i>EventBusFactorySettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
57
+ * @group Derivables
58
+ */
59
+ export declare class EventBusFactorySettingsBuilder<TSettings extends EventBusFactorySettings> {
60
+ private readonly settings;
61
+ constructor(settings?: TSettings);
62
+ setShouldRegisterErrors(shouldRegisterErrors: boolean): EventBusFactorySettingsBuilder<TSettings & {
63
+ shouldRegisterErrors: boolean;
64
+ }>;
65
+ setSerde(serde: OneOrMore<IFlexibleSerde>): EventBusFactorySettingsBuilder<TSettings & {
66
+ serde: OneOrMore<IFlexibleSerde>;
67
+ }>;
68
+ setEventBus(eventBus: IGroupableEventBus<any>): EventBusFactorySettingsBuilder<TSettings & {
69
+ eventBus: IGroupableEventBus<any>;
70
+ }>;
71
+ setRetryAttempts(attempts: number | null): EventBusFactorySettingsBuilder<TSettings & {
72
+ retryAttempts: number | null;
73
+ }>;
74
+ setBackoffPolicy(policy: BackoffPolicy | null): EventBusFactorySettingsBuilder<TSettings & {
75
+ backoffPolicy: BackoffPolicy | null;
76
+ }>;
77
+ setRetryPolicy(policy: RetryPolicy | null): EventBusFactorySettingsBuilder<TSettings & {
78
+ retryPolicy: RetryPolicy | null;
79
+ }>;
80
+ setTimeout(time: TimeSpan | null): EventBusFactorySettingsBuilder<TSettings & {
81
+ timeout: TimeSpan | null;
82
+ }>;
83
+ setAdapter<TName extends string>(name: TName, adapter: IEventBusAdapter): EventBusFactorySettingsBuilder<TSettings & {
84
+ adapters: {
85
+ readonly [x: string]: IEventBusAdapter | undefined;
86
+ };
87
+ }>;
88
+ setDefaultAdapter(adapter: string): EventBusFactorySettingsBuilder<TSettings & {
89
+ defaultAdapter: string;
90
+ }>;
91
+ build(this: EventBusFactorySettingsBuilder<EventBusFactorySettings>): EventBusFactorySettings;
92
+ }
@@ -1,19 +1,8 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { IGroupableEventBus, IEventBusAdapter, IEventBusFactory, BaseEvents } from "../../../event-bus/contracts/_module";
5
- /**
6
- * @group Derivables
7
- */
8
- export type EventBusDrivers<TAdapters extends string = string> = Partial<Record<TAdapters, IEventBusAdapter>>;
9
- /**
10
- * @group Derivables
11
- */
12
- export type EventBusFactorySettings<TAdapters extends string = string> = {
13
- drivers: EventBusDrivers<TAdapters>;
14
- defaultDriver?: NoInfer<TAdapters>;
15
- rootGroup?: string;
16
- };
4
+ import type { IGroupableEventBus, IEventBusFactory, BaseEvent } from "../../../event-bus/contracts/_module";
5
+ import { type EventBusFactorySettings, EventBusFactorySettingsBuilder } from "../../../event-bus/implementations/derivables/event-bus-factory-settings";
17
6
  /**
18
7
  * @group Derivables
19
8
  * @example
@@ -22,22 +11,54 @@ export type EventBusFactorySettings<TAdapters extends string = string> = {
22
11
  * import Redis from "ioredis"
23
12
  *
24
13
  * const eventBusFactory = new EventBusFactory({
25
- * drivers: {
26
- * memory: new MemoryEventBusAdapter(),
14
+ * adapters: {
15
+ * memory: new MemoryEventBusAdapter({ rootGroup: "@global" }),
27
16
  * redis: new RedisPubSubEventBusAdapter({
28
17
  * dispatcherClient: new Redis(),
29
18
  * listenerClient: new Redis(),
19
+ * serde: new SuperJsonSerde(),
20
+ * rootGroup: "@global"
30
21
  * }),
31
22
  * },
32
- * defaultDriver: "memory",
23
+ * defaultAdapter: "memory",
33
24
  * });
34
25
  * ```
35
26
  */
36
- export declare class EventBusFactory<TAdapters extends string = string, TEvents extends BaseEvents = BaseEvents> implements IEventBusFactory<TAdapters, TEvents> {
37
- private readonly drivers;
38
- private readonly defaultDriver?;
39
- private readonly lazyPromiseSettings?;
27
+ export declare class EventBusFactory<TAdapters extends string = string> implements IEventBusFactory<TAdapters> {
28
+ /**
29
+ * @example
30
+ * ```ts
31
+ * import { EventBusFactory, SuperJsonSerde. MemoryEventBusAdapter, RedisPubSubEventBusAdapter, EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
32
+ * import Redis from "ioredis";
33
+ *
34
+ * const cacheFactory = new EventBusFactory(
35
+ * EventBusFactory
36
+ * .settings()
37
+ * .setAdapter("memory", new MemoryEventBusAdapter({
38
+ * rootGroup: "@global"
39
+ * }))
40
+ * .setAdapter("redis", new RedisPubSubEventBusAdapter({
41
+ * dispatcherClient: new Redis("YOUR_REDIS_CONNECTION"),
42
+ * listenerClient: new Redis("YOUR_REDIS_CONNECTION")
43
+ * serde: new SuperJsonSerde(),
44
+ * rootGroup: "@global"
45
+ * }))
46
+ * .setDefaultAdapter("memory")
47
+ * .build()
48
+ * );
49
+ * ```
50
+ */
51
+ static settings<TAdapters extends string, TSettings extends EventBusFactorySettings<TAdapters>>(): EventBusFactorySettingsBuilder<TSettings>;
52
+ private readonly eventBuses;
53
+ private readonly serde;
54
+ private readonly adapters;
55
+ private readonly defaultAdapter?;
56
+ private readonly retryAttempts?;
57
+ private readonly backoffPolicy?;
58
+ private readonly retryPolicy?;
59
+ private readonly timeout?;
60
+ private readonly shouldRegisterErrors?;
40
61
  constructor(settings: EventBusFactorySettings<TAdapters>);
41
- use(driverName?: TAdapters | undefined): IGroupableEventBus<TEvents>;
42
- withType<TOutput extends BaseEvents = TEvents>(): IEventBusFactory<TAdapters, TOutput>;
62
+ private initCaches;
63
+ use<TEvents extends BaseEvent = BaseEvent>(adapterName?: TAdapters | undefined): IGroupableEventBus<TEvents>;
43
64
  }
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { BackoffPolicy, RetryPolicy } from "../../../async/_module";
5
+ import { type IGroupableEventBus, type IEventBusAdapter } from "../../../event-bus/contracts/_module";
6
+ import type { IFlexibleSerde } from "../../../serde/contracts/_module";
7
+ import type { IBuildable, OneOrMore, TimeSpan } from "../../../utilities/_module";
8
+ /**
9
+ * @group Derivables
10
+ */
11
+ export type EventBusSettings = {
12
+ /**
13
+ * You can pass one or more <i>{@link IFlexibleSerde}</i> that will be used to register all <i>{@link IGroupableEventBus}</i> related errors.
14
+ * @default {true}
15
+ */
16
+ serde: OneOrMore<IFlexibleSerde>;
17
+ /**
18
+ * If set to true, all <i>{@link IGroupableEventBus}</i> related errors will be registered with the specified <i>IFlexibleSerde</i> during constructor initialization.
19
+ * This ensures that all <i>{@link IGroupableEventBus}</i> related errors will be serialized correctly.
20
+ * @default {true}
21
+ */
22
+ shouldRegisterErrors?: boolean;
23
+ adapter: IEventBusAdapter;
24
+ /**
25
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
26
+ * @default {null}
27
+ */
28
+ retryAttempts?: number | null;
29
+ /**
30
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
31
+ * @default {null}
32
+ */
33
+ backoffPolicy?: BackoffPolicy | null;
34
+ /**
35
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
36
+ * @default {null}
37
+ */
38
+ retryPolicy?: RetryPolicy | null;
39
+ /**
40
+ * The default timeout to use in the returned <i>LazyPromise</i>.
41
+ * @default {null}
42
+ */
43
+ timeout?: TimeSpan | null;
44
+ };
45
+ /**
46
+ * The <i>EventBusSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
47
+ * @group Derivables
48
+ */
49
+ export declare class EventBusSettingsBuilder<TSettings extends Partial<EventBusSettings>> implements IBuildable<EventBusSettings> {
50
+ private readonly settings;
51
+ constructor(settings?: TSettings);
52
+ setShouldRegisterErrors(shouldRegisterErrors: boolean): EventBusSettingsBuilder<TSettings & {
53
+ shouldRegisterErrors: boolean;
54
+ }>;
55
+ setSerde(serde: OneOrMore<IFlexibleSerde>): EventBusSettingsBuilder<TSettings & {
56
+ serde: OneOrMore<IFlexibleSerde>;
57
+ }>;
58
+ setAdapter(adapter: IEventBusAdapter): EventBusSettingsBuilder<TSettings & {
59
+ adapter: IEventBusAdapter;
60
+ }>;
61
+ setEventBus(eventBus: IGroupableEventBus<any>): EventBusSettingsBuilder<TSettings & {
62
+ eventBus: IGroupableEventBus<any>;
63
+ }>;
64
+ setDefultTtl(time: TimeSpan): EventBusSettingsBuilder<TSettings & {
65
+ defaultTtl: TimeSpan;
66
+ }>;
67
+ setRetryAttempts(attempts: number | null): EventBusSettingsBuilder<TSettings & {
68
+ retryAttempts: number | null;
69
+ }>;
70
+ setBackoffPolicy(policy: BackoffPolicy | null): EventBusSettingsBuilder<TSettings & {
71
+ backoffPolicy: BackoffPolicy | null;
72
+ }>;
73
+ setRetryPolicy(policy: RetryPolicy | null): EventBusSettingsBuilder<TSettings & {
74
+ retryPolicy: RetryPolicy | null;
75
+ }>;
76
+ setTimeout(time: TimeSpan | null): EventBusSettingsBuilder<TSettings & {
77
+ timeout: TimeSpan | null;
78
+ }>;
79
+ build(this: EventBusSettingsBuilder<EventBusSettings>): EventBusSettings;
80
+ }
@@ -1,35 +1,59 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import type { LazyPromiseSettings } from "../../../async/_module";
5
4
  import { LazyPromise } from "../../../async/_module";
6
- import type { SelectEvent, AllEvents, BaseEvents, Unsubscribe } from "../../../event-bus/contracts/_module";
7
- import { type IEventBus, type IGroupableEventBus, type IEventBusAdapter, type Listener } from "../../../event-bus/contracts/_module";
5
+ import type { EventClass, EventInstance, Unsubscribe } from "../../../event-bus/contracts/_module";
6
+ import { type IEventBus, type IGroupableEventBus, type Listener, type BaseEvent, RemoveListenerEventBusError, AddListenerEventBusError, UnexpectedEventBusError, EventBusError } from "../../../event-bus/contracts/_module";
8
7
  import type { OneOrMore } from "../../../utilities/_module";
9
- /**
10
- * @group Derivables
11
- */
12
- export type EventBusSettings = {
13
- lazyPromiseSettings?: LazyPromiseSettings;
14
- };
8
+ import type { EventBusSettings } from "../../../event-bus/implementations/derivables/event-bus-settings";
9
+ import { EventBusSettingsBuilder } from "../../../event-bus/implementations/derivables/event-bus-settings";
15
10
  /**
16
11
  * <i>EventBus</i> class can be derived from any <i>{@link IEventBusAdapter}</i>.
17
12
  * @group Derivables
18
13
  */
19
- export declare class EventBus<TEvents extends BaseEvents = BaseEvents> implements IGroupableEventBus<TEvents> {
20
- private readonly eventBusAdapter;
21
- private readonly lazyPromiseSettings?;
22
- constructor(eventBusAdapter: IEventBusAdapter, settings?: EventBusSettings);
14
+ export declare class EventBus<TEvents extends BaseEvent = BaseEvent> implements IGroupableEventBus<TEvents> {
15
+ static readonly errors: {
16
+ readonly Error: typeof EventBusError;
17
+ readonly Unexpected: typeof UnexpectedEventBusError;
18
+ readonly RemoveListener: typeof RemoveListenerEventBusError;
19
+ readonly AddListener: typeof AddListenerEventBusError;
20
+ };
21
+ /**
22
+ * @example
23
+ * ```ts
24
+ * import { EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
25
+ *
26
+ * const cache = new EventBus(
27
+ * EventBus
28
+ * .settings()
29
+ * .setAdapter(new MemoryEventBusAdapter({ rootGroup: "@global" }))
30
+ * .build()
31
+ * );
32
+ * ```
33
+ */
34
+ static settings<TSettings extends Partial<EventBusSettings>>(): EventBusSettingsBuilder<TSettings>;
35
+ private readonly serde;
36
+ private readonly adapter;
37
+ private readonly retryAttempts;
38
+ private readonly backoffPolicy;
39
+ private readonly retryPolicy;
40
+ private readonly timeout;
41
+ private readonly shouldRegisterErrors;
42
+ constructor(settings: EventBusSettings);
43
+ /**
44
+ * Registers all event bus related error within the given <i>IFlexibleSerde</i> contract.
45
+ */
46
+ private registerErrors;
23
47
  private createLayPromise;
24
48
  withGroup(group: OneOrMore<string>): IEventBus<TEvents>;
25
49
  getGroup(): string;
26
- addListener<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
27
- removeListener<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
28
- dispatchMany(events: AllEvents<TEvents>[]): LazyPromise<void>;
29
- dispatch(event: AllEvents<TEvents>): LazyPromise<void>;
30
- addListenerMany<TEventName extends keyof TEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
31
- removeListenerMany<TEventName extends keyof TEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
32
- listenOnce<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
33
- subscribe<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<Unsubscribe>;
34
- subscribeMany<TEventName extends keyof TEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<Unsubscribe>;
50
+ addListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
51
+ removeListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
52
+ addListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
53
+ removeListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
54
+ listenOnce<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
55
+ subscribe<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
56
+ subscribeMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
57
+ dispatchMany(events: TEvents[]): LazyPromise<void>;
58
+ dispatch(event: TEvents): LazyPromise<void>;
35
59
  }
@@ -1,2 +1,6 @@
1
+ export * from "../../serde/contracts/deserializer.contract";
2
+ export * from "../../serde/contracts/flexible-serde.contract";
1
3
  export * from "../../serde/contracts/serde.contract";
2
4
  export * from "../../serde/contracts/serde.errors";
5
+ export * from "../../serde/contracts/serializable.contract";
6
+ export * from "../../serde/contracts/serializer.contract";
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @module Serde
3
+ */
4
+ /**
5
+ * The <i>IDeserializer</i> contract defines a standard way to deserialize plain data, excluding support for custom classes.
6
+ * @group Contracts
7
+ */
8
+ export type IDeserializer<TSerializedValue = unknown> = {
9
+ /**
10
+ * @throws {DeserializationError} {@link DeserializationError}
11
+ */
12
+ deserialize<TValue>(serializedValue: TSerializedValue): TValue;
13
+ };
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @module Serde
3
+ */
4
+ import type { ISerializable } from "../../serde/contracts/serializable.contract";
5
+ import type { ISerde } from "../../serde/contracts/serde.contract";
6
+ /**
7
+ * The <i>SerializableClass</i> contract defines standard way to make a class instance serializable and deserializable.
8
+ * @group Contracts
9
+ */
10
+ export type SerializableClass<TSerializedValue> = {
11
+ new (...arguments_: any[]): ISerializable<TSerializedValue>;
12
+ deserialize(serializedValue: TSerializedValue): ISerializable<TSerializedValue>;
13
+ };
14
+ /**
15
+ * The <i>SerializableClass</i> contract defines standard way to make a error class instance serializable and deserializable.
16
+ * @group Contracts
17
+ */
18
+ export type ErrorClass = new (...args: any[]) => Error;
19
+ /**
20
+ * @group Contracts
21
+ */
22
+ export type ISerdeTransformer<TDeserializedValue, TSerializedValue> = {
23
+ name: string;
24
+ isApplicable(value: unknown): value is TDeserializedValue;
25
+ deserialize(serializedValue: TSerializedValue): TDeserializedValue;
26
+ serialize(deserializedValue: TDeserializedValue): TSerializedValue;
27
+ };
28
+ /**
29
+ * The <i>IFlexibleSerde</i> contract defines a standard way to serialize and deserialize both plain data and custom classes.
30
+ * @group Contracts
31
+ */
32
+ export type IFlexibleSerde<TSerializedValue = unknown> = ISerde<TSerializedValue> & {
33
+ /**
34
+ * The <i>registerClass</i> method is used for registering custom class for serialization and deserialization.
35
+ * The <i>class_</i> parameter must be of type <i>{@link SerializableClass}</i>.
36
+ * @example
37
+ * ```ts
38
+ * import type { IFlexibleSerde } from "@daiso-tech/core";
39
+ *
40
+ * type SerializedUser = {
41
+ * name: string;
42
+ * age: number;
43
+ * };
44
+ *
45
+ * class User implements ISerializable<SerializedUser> {
46
+ * static deserialize(serializedUser: SerializedUser): User {
47
+ * return new User(serializedUser.name, serializedUser.age);
48
+ * }
49
+ *
50
+ * constructor(public readonly name: string, public readonly age: number) {}
51
+ *
52
+ * getInfo(): string {
53
+ * return `name: ${this.name}, age: ${this.age}`;
54
+ * }
55
+ * }
56
+ *
57
+ * function main(serde: IFlexibleSerde) {
58
+ * // You must register the class before trying to serialize or deserialize it.
59
+ * serde.registerClass(User);
60
+ *
61
+ * const user = serde.deserialize(serde.serialize(new User("Jacob", 50)));
62
+ *
63
+ * console.log(user.getInfo());
64
+ * // "name: Jacob, age: 50"
65
+ * }
66
+ * ```
67
+ */
68
+ registerClass<TSerializedClassInstance>(class_: SerializableClass<TSerializedClassInstance>): IFlexibleSerde<TSerializedValue>;
69
+ /**
70
+ * The <i>registerCustom</i> method is used for registering custom values for serialization and deserialization.
71
+ * @example
72
+ * ```ts
73
+ * import type { IFlexibleSerde, ISerdeTransformer } from "@daiso-tech/core";
74
+ *
75
+ * type SerializedUser = {
76
+ * name: string;
77
+ * age: number;
78
+ * };
79
+ *
80
+ * class User implements ISerializable<SerializedUser> {
81
+ * static deserialize(serializedUser: SerializedUser): User {
82
+ * return new User(serializedUser.name, serializedUser.age);
83
+ * }
84
+ *
85
+ * constructor(public readonly name: string, public readonly age: number) {}
86
+ *
87
+ * getInfo(): string {
88
+ * return `name: ${this.name}, age: ${this.age}`;
89
+ * }
90
+ * }
91
+ *
92
+ * const transformer: ISerdeTransformer<User, SerializedUser> = {
93
+ * name: User.name,
94
+ * isApplicable(value): value is User {
95
+ * return (
96
+ * value instanceof User &&
97
+ * value.constructor.name === User.name
98
+ * );
99
+ * },
100
+ * deserialize(serializedValue) {
101
+ * return User.deserialize(serializedValue);
102
+ * },
103
+ * serialize(deserializedValue) {
104
+ * return deserializedValue.serialize();
105
+ * }
106
+ * }
107
+ *
108
+ * function main(serde: IFlexibleSerde) {
109
+ * // You must register the transformer is it will get applied.
110
+ * serde.registerCustom(transformer);
111
+ *
112
+ * const user = serde.deserialize(serde.serialize(new User("Jacob", 50)));
113
+ *
114
+ * console.log(user.getInfo());
115
+ * // "name: Jacob, age: 50"
116
+ * }
117
+ * ```
118
+ */
119
+ registerCustom<TCustomSerialized, TCustomDeserialized>(transformer: ISerdeTransformer<TCustomSerialized, TCustomDeserialized>): IFlexibleSerde<TSerializedValue>;
120
+ };
@@ -1,41 +1,10 @@
1
1
  /**
2
- * @group Contracts
3
- */
4
- export type ISerializer<TSerializedValue = unknown> = {
5
- /**
6
- * @throws {SerializationError} {@link SerializationError}
7
- */
8
- serialize<TValue>(value: TValue): TSerializedValue;
9
- };
10
- /**
11
- * @group Contracts
12
- */
13
- export type IDeserde<TSerializedValue = unknown> = {
14
- /**
15
- * @throws {DeserializationError} {@link DeserializationError}
16
- */
17
- deserialize<TValue>(serializedValue: TSerializedValue): TValue;
18
- };
19
- /**
20
- * @group Contracts
21
- */
22
- export type ISerde<TSerializedValue = unknown> = ISerializer<TSerializedValue> & IDeserde<TSerializedValue>;
23
- /**
24
- * @group Contracts
25
- */
26
- export type ISerializable<TSerializedValue> = {
27
- serialize(): TSerializedValue;
28
- };
29
- /**
30
- * @group Contracts
2
+ * @module Serde
31
3
  */
32
- export type SerializableClass<TSerializedValue> = {
33
- new (...arguments_: any[]): ISerializable<TSerializedValue>;
34
- deserialize(serializedValue: TSerializedValue): ISerializable<TSerializedValue>;
35
- };
4
+ import type { ISerializer } from "../../serde/contracts/serializer.contract";
5
+ import type { IDeserializer } from "../../serde/contracts/deserializer.contract";
36
6
  /**
7
+ * The <i>ISerde</i> contract defines a standard way to serialize and deserialize plain data, excluding support for custom classes.
37
8
  * @group Contracts
38
9
  */
39
- export type IFlexibleSerde<TSerializedValue = unknown> = ISerde<TSerializedValue> & {
40
- registerClass<TSerializedValue>(class_: SerializableClass<TSerializedValue>): void;
41
- };
10
+ export type ISerde<TSerializedValue = unknown> = ISerializer<TSerializedValue> & IDeserializer<TSerializedValue>;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @module Serde
3
+ */
4
+ /**
5
+ * The <i>ISerializable</i> contract defines standard way to make a class instance serializable.
6
+ * @group Contracts
7
+ */
8
+ export type ISerializable<TSerializedValue> = {
9
+ serialize(): TSerializedValue;
10
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The <i>ISerializer</i> contract defines a standard way to serialize plain data, excluding support for custom classes.
3
+ * @group Contracts
4
+ */
5
+ export type ISerializer<TSerializedValue = unknown> = {
6
+ /**
7
+ * @throws {SerializationError} {@link SerializationError}
8
+ */
9
+ serialize<TValue>(value: TValue): TSerializedValue;
10
+ };
@@ -3,3 +3,4 @@ export * from "../../serde/implementations/mongodb-serde/_module";
3
3
  export * from "../../serde/implementations/redis-serde/_module";
4
4
  export * from "../../serde/implementations/sql-serde/_module";
5
5
  export * from "../../serde/implementations/super-json-serde/_module";
6
+ export * from "../../serde/implementations/no-op-serde/_module";
@@ -1 +1,2 @@
1
1
  export * from "../../../../serde/implementations/_shared/test-utilities/serde.test-suite";
2
+ export * from "../../../../serde/implementations/_shared/test-utilities/flexible-serde.test-suite";
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @module Serde
3
+ */
4
+ import { type TestAPI, type ExpectStatic } from "vitest";
5
+ import type { IFlexibleSerde } from "../../../../serde/contracts/_module";
6
+ /**
7
+ * @group Utilities
8
+ */
9
+ export type FlexibleSerdeSuiteSettings = {
10
+ expect: ExpectStatic;
11
+ test: TestAPI;
12
+ createAdapter: () => IFlexibleSerde;
13
+ };
14
+ /**
15
+ * @group Utilities
16
+ */
17
+ export declare function flexibleSerdeTestSuite(settings: FlexibleSerdeSuiteSettings): void;
@@ -2,15 +2,14 @@
2
2
  * @module Serde
3
3
  */
4
4
  import { type TestAPI, type ExpectStatic } from "vitest";
5
- import { type ISerde } from "../../../../serde/contracts/_module";
6
- import { type Promisable } from "../../../../utilities/_module";
5
+ import type { ISerde } from "../../../../serde/contracts/_module";
7
6
  /**
8
7
  * @group Utilities
9
8
  */
10
9
  export type SerdeSuiteSettings = {
11
10
  expect: ExpectStatic;
12
11
  test: TestAPI;
13
- createAdapter: () => Promisable<ISerde>;
12
+ createAdapter: () => ISerde;
14
13
  };
15
14
  /**
16
15
  * @group Utilities
@@ -0,0 +1 @@
1
+ export * from "../../../serde/implementations/no-op-serde/no-op-serde";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { IFlexibleSerde, ISerdeTransformer, SerializableClass } from "../../../serde/contracts/_module";
5
+ /**
6
+ * This <i>NoOpSerde</i> will do nothing and is used for easily mocking {@link IFlexibleSerde} or {@link ISerde} for testing.
7
+ * @group Adapters
8
+ */
9
+ export declare class NoOpSerde<TSerializedValue> implements IFlexibleSerde<TSerializedValue> {
10
+ serialize<TValue>(value: TValue): TSerializedValue;
11
+ deserialize<TValue>(serializedValue: TSerializedValue): TValue;
12
+ registerClass<TSerializedClassInstance>(_class: SerializableClass<TSerializedClassInstance>): IFlexibleSerde<TSerializedValue>;
13
+ registerCustom<TCustomSerialized, TCustomDeserialized>(_transformer: ISerdeTransformer<TCustomSerialized, TCustomDeserialized>): IFlexibleSerde<TSerializedValue>;
14
+ }