@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,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,50 @@ 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 adapters;
53
+ private readonly defaultAdapter?;
54
+ private readonly retryAttempts?;
55
+ private readonly backoffPolicy?;
56
+ private readonly retryPolicy?;
57
+ private readonly timeout?;
40
58
  constructor(settings: EventBusFactorySettings<TAdapters>);
41
- use(driverName?: TAdapters | undefined): IGroupableEventBus<TEvents>;
42
- withType<TOutput extends BaseEvents = TEvents>(): IEventBusFactory<TAdapters, TOutput>;
59
+ use<TEvents extends BaseEvent = BaseEvent>(adapterName?: TAdapters | undefined): IGroupableEventBus<TEvents>;
43
60
  }
@@ -0,0 +1,58 @@
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 { IBuildable, TimeSpan } from "../../../utilities/_module";
7
+ /**
8
+ * @group Derivables
9
+ */
10
+ export type EventBusSettings = {
11
+ adapter: IEventBusAdapter;
12
+ /**
13
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
14
+ */
15
+ retryAttempts?: number | null;
16
+ /**
17
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
18
+ */
19
+ backoffPolicy?: BackoffPolicy | null;
20
+ /**
21
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
22
+ */
23
+ retryPolicy?: RetryPolicy | null;
24
+ /**
25
+ * The default timeout to use in the returned <i>LazyPromise</i>.
26
+ */
27
+ timeout?: TimeSpan | null;
28
+ };
29
+ /**
30
+ * The <i>EventBusSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
31
+ * @group Derivables
32
+ */
33
+ export declare class EventBusSettingsBuilder<TSettings extends Partial<EventBusSettings>> implements IBuildable<EventBusSettings> {
34
+ private readonly settings;
35
+ constructor(settings?: TSettings);
36
+ setAdapter(adapter: IEventBusAdapter): EventBusSettingsBuilder<TSettings & {
37
+ adapter: IEventBusAdapter;
38
+ }>;
39
+ setEventBus(eventBus: IGroupableEventBus<any>): EventBusSettingsBuilder<TSettings & {
40
+ eventBus: IGroupableEventBus<any>;
41
+ }>;
42
+ setDefultTtl(time: TimeSpan): EventBusSettingsBuilder<TSettings & {
43
+ defaultTtl: TimeSpan;
44
+ }>;
45
+ setRetryAttempts(attempts: number | null): EventBusSettingsBuilder<TSettings & {
46
+ retryAttempts: number | null;
47
+ }>;
48
+ setBackoffPolicy(policy: BackoffPolicy | null): EventBusSettingsBuilder<TSettings & {
49
+ backoffPolicy: BackoffPolicy | null;
50
+ }>;
51
+ setRetryPolicy(policy: RetryPolicy | null): EventBusSettingsBuilder<TSettings & {
52
+ retryPolicy: RetryPolicy | null;
53
+ }>;
54
+ setTimeout(time: TimeSpan | null): EventBusSettingsBuilder<TSettings & {
55
+ timeout: TimeSpan | null;
56
+ }>;
57
+ build(this: EventBusSettingsBuilder<EventBusSettings>): EventBusSettings;
58
+ }
@@ -1,35 +1,47 @@
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 } 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
+ /**
16
+ * @example
17
+ * ```ts
18
+ * import { EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
19
+ *
20
+ * const cache = new EventBus(
21
+ * EventBus
22
+ * .settings()
23
+ * .setAdapter(new MemoryEventBusAdapter({ rootGroup: "@global" }))
24
+ * .build()
25
+ * );
26
+ * ```
27
+ */
28
+ static settings<TSettings extends Partial<EventBusSettings>>(): EventBusSettingsBuilder<TSettings>;
29
+ private readonly adapter;
30
+ private readonly retryAttempts;
31
+ private readonly backoffPolicy;
32
+ private readonly retryPolicy;
33
+ private readonly timeout;
34
+ constructor(settings: EventBusSettings);
23
35
  private createLayPromise;
24
36
  withGroup(group: OneOrMore<string>): IEventBus<TEvents>;
25
37
  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>;
38
+ addListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
39
+ removeListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
40
+ addListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
41
+ removeListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
42
+ listenOnce<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
43
+ subscribe<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
44
+ subscribeMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
45
+ dispatchMany(events: TEvents[]): LazyPromise<void>;
46
+ dispatch(event: TEvents): LazyPromise<void>;
35
47
  }
@@ -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,56 @@
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>IFlexibleSerde</i> contract defines a standard way to serialize and deserialize both plain data and custom classes.
16
+ * @group Contracts
17
+ */
18
+ export type IFlexibleSerde<TSerializedValue = unknown> = ISerde<TSerializedValue> & {
19
+ /**
20
+ * The <i>registerClass</i> method is used for registering custom class for serialization and deserialization.
21
+ * The <i>class_</i> parameter must be of type <i>{@link SerializableClass}</i>.
22
+ * @example
23
+ * ```ts
24
+ * import type { IFlexibleSerde } from "@daiso-tech/core";
25
+ *
26
+ * type SerializedUser = {
27
+ * name: string;
28
+ * age: number;
29
+ * };
30
+ *
31
+ * class User implements ISerializable<SerializedUser> {
32
+ * static deserialize(serializedUser: SerializedUser): User {
33
+ * return new User(serializedUser.name, serializedUser.age);
34
+ * }
35
+ *
36
+ * constructor(public readonly name: string, public readonly age: number) {}
37
+ *
38
+ * getInfo(): string {
39
+ * return `name: ${this.name}, age: ${this.age}`;
40
+ * }
41
+ * }
42
+ *
43
+ * function main(serde: IFlexibleSerde) {
44
+ * // You must register the class before trying to serialize or deserialize it.
45
+ * serde.registerClass(User);
46
+ *
47
+ * const user = serde.deserialize(serde.serialize(new User("Jacob", 50)));
48
+ *
49
+ * console.log(user.getInfo());
50
+ * // "name: Jacob, age: 50"
51
+ * }
52
+ *
53
+ * ```
54
+ */
55
+ registerClass<TSerializedClassInstance>(class_: SerializableClass<TSerializedClassInstance>): IFlexibleSerde<TSerializedValue>;
56
+ };
@@ -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,13 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import type { IFlexibleSerde, 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
+ }
@@ -19,7 +19,7 @@ export declare class SuperJsonSerde implements IFlexibleSerde<string> {
19
19
  private registerFloat32Array;
20
20
  private registerFloat64Array;
21
21
  private registerAll;
22
- registerClass<TSerializedValue>(class_: SerializableClass<TSerializedValue>): void;
22
+ registerClass<TSerializedClassInstance>(class_: SerializableClass<TSerializedClassInstance>): IFlexibleSerde<string>;
23
23
  serialize<TValue>(value: TValue): string;
24
24
  deserialize<TValue>(value: string): TValue;
25
25
  }
@@ -1,2 +1,3 @@
1
+ export * from "../../utilities/contracts/buildable.contract";
1
2
  export * from "../../utilities/contracts/deinitizable.contract";
2
3
  export * from "../../utilities/contracts/initizable.contract";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @module Utilities
3
+ */
4
+ /**
5
+ * @group Contracts
6
+ */
7
+ export type IBuildable<TReturn> = {
8
+ build(): TReturn;
9
+ };
@@ -10,12 +10,12 @@ export declare class FactoryError extends Error {
10
10
  /**
11
11
  * @group Errors
12
12
  */
13
- export declare class DefaultDriverNotDefinedError extends FactoryError {
13
+ export declare class DefaultAdapterNotDefinedError extends FactoryError {
14
14
  constructor(factoryName: string);
15
15
  }
16
16
  /**
17
17
  * @group Errors
18
18
  */
19
- export declare class UnregisteredDriverError extends FactoryError {
20
- constructor(driverName: string);
19
+ export declare class UnregisteredAdapterError extends FactoryError {
20
+ constructor(adapterName: string);
21
21
  }
@@ -23,3 +23,7 @@ export declare function isObjectEmpty(object: Record<string | number | symbol, a
23
23
  * @internal
24
24
  */
25
25
  export declare function simplifyGroupName(name: OneOrMore<string>): string;
26
+ /**
27
+ * @internal
28
+ */
29
+ export declare function getConstructorName(instance: object): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module Utilities
3
3
  */
4
- import type { ISerializable } from "../../_module";
4
+ import type { ISerializable } from "../../serde/contracts/_module";
5
5
  /**
6
6
  * @group Time utilities
7
7
  */
@@ -20,7 +20,7 @@ export declare class TimeSpan implements ISerializable<ISerializedTimeSpan> {
20
20
  private static hourInMilliseconds;
21
21
  private static dayInMilliseconds;
22
22
  static deserialize(serializedValue: ISerializedTimeSpan): TimeSpan;
23
- constructor(milliseconds?: number);
23
+ private constructor();
24
24
  serialize(): ISerializedTimeSpan;
25
25
  static fromMilliseconds(milliseconds: number): TimeSpan;
26
26
  static fromSeconds(seconds: number): TimeSpan;
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @module Utilities
3
3
  */
4
- export type Values<TValue> = TValue[keyof TValue];
5
4
  export type OneOrMore<TItem> = TItem | TItem[];
6
5
  export type Lazyable<TValue> = TValue | (() => TValue);
7
6
  export type Promisable<TValue> = TValue | PromiseLike<TValue>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@daiso-tech/core",
3
3
  "private": false,
4
- "version": "0.16.0",
4
+ "version": "0.17.4",
5
5
  "author": "Yousif Abdulkarim",
6
6
  "license": "Apache-2.0",
7
7
  "main": "./dist/cjs/_module.js",