@daiso-tech/core 0.21.1 → 0.22.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 (391) hide show
  1. package/dist/cjs/_module.js +2 -0
  2. package/dist/cjs/_module.js.map +1 -1
  3. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js +3 -2
  4. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  5. package/dist/cjs/cache/contracts/cache.events.js +6 -2
  6. package/dist/cjs/cache/contracts/cache.events.js.map +1 -1
  7. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js +5 -5
  8. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  9. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js +58 -21
  10. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  11. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +1 -1
  12. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  13. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js +0 -1
  14. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  15. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +0 -4
  16. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  17. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js +0 -1
  18. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  19. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +3 -7
  20. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  21. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js +0 -1
  22. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  23. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +6 -5
  24. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  25. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js +0 -1
  26. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  27. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +5 -8
  28. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  29. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js +0 -1
  30. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  31. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +0 -4
  32. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  33. package/dist/cjs/cache/implementations/derivables/cache/_module.js +0 -1
  34. package/dist/cjs/cache/implementations/derivables/cache/_module.js.map +1 -1
  35. package/dist/cjs/cache/implementations/derivables/cache/cache.js +213 -102
  36. package/dist/cjs/cache/implementations/derivables/cache/cache.js.map +1 -1
  37. package/dist/cjs/cache/implementations/derivables/cache-factory/_module.js +0 -1
  38. package/dist/cjs/cache/implementations/derivables/cache-factory/_module.js.map +1 -1
  39. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory.js +0 -4
  40. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  41. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +3 -3
  42. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  43. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js +4 -3
  44. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  45. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +0 -1
  46. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  47. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +0 -4
  48. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  49. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +0 -1
  50. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  51. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +0 -4
  52. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  53. package/dist/cjs/event-bus/implementations/derivables/event-bus/_module.js +0 -1
  54. package/dist/cjs/event-bus/implementations/derivables/event-bus/_module.js.map +1 -1
  55. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus.js +0 -4
  56. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  57. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/_module.js +0 -1
  58. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/_module.js.map +1 -1
  59. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +0 -4
  60. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  61. package/dist/cjs/lock/contracts/_module.js +24 -0
  62. package/dist/cjs/lock/contracts/_module.js.map +1 -0
  63. package/dist/cjs/lock/contracts/database-lock-adapter.contract.js +3 -0
  64. package/dist/cjs/lock/contracts/database-lock-adapter.contract.js.map +1 -0
  65. package/dist/cjs/lock/contracts/lock-adapter.contract.js +3 -0
  66. package/dist/cjs/lock/contracts/lock-adapter.contract.js.map +1 -0
  67. package/dist/cjs/lock/contracts/lock-provider-factory.contract.js +3 -0
  68. package/dist/cjs/lock/contracts/lock-provider-factory.contract.js.map +1 -0
  69. package/dist/cjs/lock/contracts/lock-provider.contract.js +3 -0
  70. package/dist/cjs/lock/contracts/lock-provider.contract.js.map +1 -0
  71. package/dist/cjs/lock/contracts/lock.contract.js +3 -0
  72. package/dist/cjs/lock/contracts/lock.contract.js.map +1 -0
  73. package/dist/cjs/lock/contracts/lock.errors.js +131 -0
  74. package/dist/cjs/lock/contracts/lock.errors.js.map +1 -0
  75. package/dist/cjs/lock/contracts/lock.events.js +44 -0
  76. package/dist/cjs/lock/contracts/lock.events.js.map +1 -0
  77. package/dist/cjs/lock/implementations/_module.js +20 -0
  78. package/dist/cjs/lock/implementations/_module.js.map +1 -0
  79. package/dist/cjs/lock/implementations/_shared/_module.js +20 -0
  80. package/dist/cjs/lock/implementations/_shared/_module.js.map +1 -0
  81. package/dist/cjs/lock/implementations/_shared/database-lock-adapter.test-suite.js +285 -0
  82. package/dist/cjs/lock/implementations/_shared/database-lock-adapter.test-suite.js.map +1 -0
  83. package/dist/cjs/lock/implementations/_shared/lock-adapter.test-suite.js +238 -0
  84. package/dist/cjs/lock/implementations/_shared/lock-adapter.test-suite.js.map +1 -0
  85. package/dist/cjs/lock/implementations/_shared/lock-provider.test-suite.js +1841 -0
  86. package/dist/cjs/lock/implementations/_shared/lock-provider.test-suite.js.map +1 -0
  87. package/dist/cjs/lock/implementations/adapters/_module.js +22 -0
  88. package/dist/cjs/lock/implementations/adapters/_module.js.map +1 -0
  89. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/_module.js +18 -0
  90. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/_module.js.map +1 -0
  91. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +126 -0
  92. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -0
  93. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/_module.js +18 -0
  94. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/_module.js.map +1 -0
  95. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +61 -0
  96. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js.map +1 -0
  97. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/_module.js +18 -0
  98. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/_module.js.map +1 -0
  99. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +107 -0
  100. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -0
  101. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/_module.js +18 -0
  102. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/_module.js.map +1 -0
  103. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +148 -0
  104. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -0
  105. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/_module.js +18 -0
  106. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/_module.js.map +1 -0
  107. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +131 -0
  108. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -0
  109. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/_module.js +18 -0
  110. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/_module.js.map +1 -0
  111. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +60 -0
  112. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +1 -0
  113. package/dist/cjs/lock/implementations/derivables/_module.js +19 -0
  114. package/dist/cjs/lock/implementations/derivables/_module.js.map +1 -0
  115. package/dist/cjs/lock/implementations/derivables/lock-provider/_module.js +18 -0
  116. package/dist/cjs/lock/implementations/derivables/lock-provider/_module.js.map +1 -0
  117. package/dist/cjs/lock/implementations/derivables/lock-provider/database-lock-adapter.js +80 -0
  118. package/dist/cjs/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -0
  119. package/dist/cjs/lock/implementations/derivables/lock-provider/lock-provider.js +162 -0
  120. package/dist/cjs/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -0
  121. package/dist/cjs/lock/implementations/derivables/lock-provider/lock.js +306 -0
  122. package/dist/cjs/lock/implementations/derivables/lock-provider/lock.js.map +1 -0
  123. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/_module.js +18 -0
  124. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/_module.js.map +1 -0
  125. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +78 -0
  126. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -0
  127. package/dist/cjs/utilities/contracts/_module.js +1 -0
  128. package/dist/cjs/utilities/contracts/_module.js.map +1 -1
  129. package/dist/cjs/utilities/contracts/serde-registrable.contract.js +3 -0
  130. package/dist/cjs/utilities/contracts/serde-registrable.contract.js.map +1 -0
  131. package/dist/cjs/utilities/functions.js +4 -0
  132. package/dist/cjs/utilities/functions.js.map +1 -1
  133. package/dist/esm/_module.js +2 -0
  134. package/dist/esm/_module.js.map +1 -1
  135. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +3 -2
  136. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  137. package/dist/esm/cache/contracts/cache.events.js +4 -1
  138. package/dist/esm/cache/contracts/cache.events.js.map +1 -1
  139. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js +5 -5
  140. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  141. package/dist/esm/cache/implementations/_shared/cache.test-suite.js +59 -22
  142. package/dist/esm/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  143. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +1 -1
  144. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  145. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js +0 -1
  146. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  147. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +0 -4
  148. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  149. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js +0 -1
  150. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  151. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +3 -7
  152. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  153. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js +0 -1
  154. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  155. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +6 -5
  156. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  157. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js +0 -1
  158. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  159. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +5 -8
  160. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  161. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js +0 -1
  162. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  163. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +0 -4
  164. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  165. package/dist/esm/cache/implementations/derivables/cache/_module.js +0 -1
  166. package/dist/esm/cache/implementations/derivables/cache/_module.js.map +1 -1
  167. package/dist/esm/cache/implementations/derivables/cache/cache.js +214 -103
  168. package/dist/esm/cache/implementations/derivables/cache/cache.js.map +1 -1
  169. package/dist/esm/cache/implementations/derivables/cache-factory/_module.js +0 -1
  170. package/dist/esm/cache/implementations/derivables/cache-factory/_module.js.map +1 -1
  171. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory.js +0 -4
  172. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  173. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +3 -3
  174. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  175. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js +5 -4
  176. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  177. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +0 -1
  178. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  179. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +0 -4
  180. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  181. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +0 -1
  182. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  183. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +0 -4
  184. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  185. package/dist/esm/event-bus/implementations/derivables/event-bus/_module.js +0 -1
  186. package/dist/esm/event-bus/implementations/derivables/event-bus/_module.js.map +1 -1
  187. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus.js +0 -4
  188. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  189. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/_module.js +0 -1
  190. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/_module.js.map +1 -1
  191. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +0 -4
  192. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  193. package/dist/esm/lock/contracts/_module.js +8 -0
  194. package/dist/esm/lock/contracts/_module.js.map +1 -0
  195. package/dist/esm/lock/contracts/database-lock-adapter.contract.js +1 -0
  196. package/dist/esm/lock/contracts/database-lock-adapter.contract.js.map +1 -0
  197. package/dist/esm/lock/contracts/lock-adapter.contract.js +1 -0
  198. package/dist/esm/lock/contracts/lock-adapter.contract.js.map +1 -0
  199. package/dist/esm/lock/contracts/lock-provider-factory.contract.js +1 -0
  200. package/dist/esm/lock/contracts/lock-provider-factory.contract.js.map +1 -0
  201. package/dist/esm/lock/contracts/lock-provider.contract.js +1 -0
  202. package/dist/esm/lock/contracts/lock-provider.contract.js.map +1 -0
  203. package/dist/esm/lock/contracts/lock.contract.js +1 -0
  204. package/dist/esm/lock/contracts/lock.contract.js.map +1 -0
  205. package/dist/esm/lock/contracts/lock.errors.js +120 -0
  206. package/dist/esm/lock/contracts/lock.errors.js.map +1 -0
  207. package/dist/esm/lock/contracts/lock.events.js +32 -0
  208. package/dist/esm/lock/contracts/lock.events.js.map +1 -0
  209. package/dist/esm/lock/implementations/_module.js +4 -0
  210. package/dist/esm/lock/implementations/_module.js.map +1 -0
  211. package/dist/esm/lock/implementations/_shared/_module.js +4 -0
  212. package/dist/esm/lock/implementations/_shared/_module.js.map +1 -0
  213. package/dist/esm/lock/implementations/_shared/database-lock-adapter.test-suite.js +282 -0
  214. package/dist/esm/lock/implementations/_shared/database-lock-adapter.test-suite.js.map +1 -0
  215. package/dist/esm/lock/implementations/_shared/lock-adapter.test-suite.js +235 -0
  216. package/dist/esm/lock/implementations/_shared/lock-adapter.test-suite.js.map +1 -0
  217. package/dist/esm/lock/implementations/_shared/lock-provider.test-suite.js +1838 -0
  218. package/dist/esm/lock/implementations/_shared/lock-provider.test-suite.js.map +1 -0
  219. package/dist/esm/lock/implementations/adapters/_module.js +6 -0
  220. package/dist/esm/lock/implementations/adapters/_module.js.map +1 -0
  221. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/_module.js +2 -0
  222. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/_module.js.map +1 -0
  223. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +122 -0
  224. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -0
  225. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/_module.js +2 -0
  226. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/_module.js.map +1 -0
  227. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +57 -0
  228. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js.map +1 -0
  229. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/_module.js +2 -0
  230. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/_module.js.map +1 -0
  231. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +103 -0
  232. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -0
  233. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/_module.js +2 -0
  234. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/_module.js.map +1 -0
  235. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +144 -0
  236. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -0
  237. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/_module.js +2 -0
  238. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/_module.js.map +1 -0
  239. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +127 -0
  240. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -0
  241. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/_module.js +2 -0
  242. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/_module.js.map +1 -0
  243. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +56 -0
  244. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +1 -0
  245. package/dist/esm/lock/implementations/derivables/_module.js +3 -0
  246. package/dist/esm/lock/implementations/derivables/_module.js.map +1 -0
  247. package/dist/esm/lock/implementations/derivables/lock-provider/_module.js +2 -0
  248. package/dist/esm/lock/implementations/derivables/lock-provider/_module.js.map +1 -0
  249. package/dist/esm/lock/implementations/derivables/lock-provider/database-lock-adapter.js +76 -0
  250. package/dist/esm/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -0
  251. package/dist/esm/lock/implementations/derivables/lock-provider/lock-provider.js +158 -0
  252. package/dist/esm/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -0
  253. package/dist/esm/lock/implementations/derivables/lock-provider/lock.js +302 -0
  254. package/dist/esm/lock/implementations/derivables/lock-provider/lock.js.map +1 -0
  255. package/dist/esm/lock/implementations/derivables/lock-provider-factory/_module.js +2 -0
  256. package/dist/esm/lock/implementations/derivables/lock-provider-factory/_module.js.map +1 -0
  257. package/dist/esm/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +74 -0
  258. package/dist/esm/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -0
  259. package/dist/esm/utilities/contracts/_module.js +1 -0
  260. package/dist/esm/utilities/contracts/_module.js.map +1 -1
  261. package/dist/esm/utilities/contracts/serde-registrable.contract.js +1 -0
  262. package/dist/esm/utilities/contracts/serde-registrable.contract.js.map +1 -0
  263. package/dist/esm/utilities/functions.js +4 -0
  264. package/dist/esm/utilities/functions.js.map +1 -1
  265. package/dist/types/_module.d.ts +2 -0
  266. package/dist/types/async/utilities/lazy-promise/lazy-promise.d.ts +2 -2
  267. package/dist/types/cache/contracts/cache-adapter.contract.d.ts +2 -2
  268. package/dist/types/cache/contracts/cache-factory.contract.d.ts +1 -2
  269. package/dist/types/cache/contracts/cache.contract.d.ts +116 -8
  270. package/dist/types/cache/contracts/cache.events.d.ts +12 -1
  271. package/dist/types/cache/implementations/_shared/cache-adapter.test-suite.d.ts +2 -9
  272. package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +3 -13
  273. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/_module.d.ts +0 -1
  274. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +23 -29
  275. package/dist/types/cache/implementations/adapters/memory-cache-adapter/_module.d.ts +0 -1
  276. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +8 -18
  277. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/_module.d.ts +0 -1
  278. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +16 -26
  279. package/dist/types/cache/implementations/adapters/redis-cache-adapter/_module.d.ts +0 -1
  280. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +12 -22
  281. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/_module.d.ts +0 -1
  282. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +23 -29
  283. package/dist/types/cache/implementations/derivables/cache/_module.d.ts +0 -1
  284. package/dist/types/cache/implementations/derivables/cache/cache.d.ts +38 -27
  285. package/dist/types/cache/implementations/derivables/cache-factory/_module.d.ts +0 -1
  286. package/dist/types/cache/implementations/derivables/cache-factory/cache-factory.d.ts +60 -26
  287. package/dist/types/collection/contracts/async-collection.contract.d.ts +68 -8
  288. package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +1 -1
  289. package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +1 -1
  290. package/dist/types/event-bus/implementations/_shared/event-bus-adapter.test-suite.d.ts +2 -10
  291. package/dist/types/event-bus/implementations/_shared/event-bus.test-suite.d.ts +3 -13
  292. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/_module.d.ts +0 -1
  293. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +8 -18
  294. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.d.ts +0 -1
  295. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +11 -20
  296. package/dist/types/event-bus/implementations/derivables/event-bus/_module.d.ts +0 -1
  297. package/dist/types/event-bus/implementations/derivables/event-bus/event-bus.d.ts +29 -20
  298. package/dist/types/event-bus/implementations/derivables/event-bus-factory/_module.d.ts +0 -1
  299. package/dist/types/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +49 -46
  300. package/dist/types/lock/contracts/_module.d.ts +7 -0
  301. package/dist/types/lock/contracts/database-lock-adapter.contract.d.ts +49 -0
  302. package/dist/types/lock/contracts/lock-adapter.contract.d.ts +48 -0
  303. package/dist/types/lock/contracts/lock-provider-factory.contract.d.ts +36 -0
  304. package/dist/types/lock/contracts/lock-provider.contract.d.ts +92 -0
  305. package/dist/types/lock/contracts/lock.contract.d.ts +219 -0
  306. package/dist/types/lock/contracts/lock.errors.d.ts +66 -0
  307. package/dist/types/lock/contracts/lock.events.d.ts +83 -0
  308. package/dist/types/lock/implementations/_module.d.ts +3 -0
  309. package/dist/types/lock/implementations/_shared/_module.d.ts +3 -0
  310. package/dist/types/lock/implementations/_shared/database-lock-adapter.test-suite.d.ts +21 -0
  311. package/dist/types/lock/implementations/_shared/lock-adapter.test-suite.d.ts +21 -0
  312. package/dist/types/lock/implementations/_shared/lock-provider.test-suite.d.ts +23 -0
  313. package/dist/types/lock/implementations/adapters/_module.d.ts +5 -0
  314. package/dist/types/lock/implementations/adapters/kysely-lock-adapter/_module.d.ts +1 -0
  315. package/dist/types/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +52 -0
  316. package/dist/types/lock/implementations/adapters/libsql-lock-adapter/_module.d.ts +1 -0
  317. package/dist/types/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.d.ts +58 -0
  318. package/dist/types/lock/implementations/adapters/memory-lock-adapter/_module.d.ts +1 -0
  319. package/dist/types/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +52 -0
  320. package/dist/types/lock/implementations/adapters/mongodb-lock-adapter/_module.d.ts +1 -0
  321. package/dist/types/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +60 -0
  322. package/dist/types/lock/implementations/adapters/redis-lock-adapter/_module.d.ts +1 -0
  323. package/dist/types/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +57 -0
  324. package/dist/types/lock/implementations/adapters/sqlite-lock-adapter/_module.d.ts +1 -0
  325. package/dist/types/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.d.ts +57 -0
  326. package/dist/types/lock/implementations/derivables/_module.d.ts +2 -0
  327. package/dist/types/lock/implementations/derivables/lock-provider/_module.d.ts +1 -0
  328. package/dist/types/lock/implementations/derivables/lock-provider/database-lock-adapter.d.ts +23 -0
  329. package/dist/types/lock/implementations/derivables/lock-provider/lock-provider.d.ts +89 -0
  330. package/dist/types/lock/implementations/derivables/lock-provider/lock.d.ts +73 -0
  331. package/dist/types/lock/implementations/derivables/lock-provider-factory/_module.d.ts +1 -0
  332. package/dist/types/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +98 -0
  333. package/dist/types/utilities/contracts/_module.d.ts +1 -0
  334. package/dist/types/utilities/contracts/serde-registrable.contract.d.ts +11 -0
  335. package/dist/types/utilities/types.d.ts +3 -1
  336. package/package.json +5 -3
  337. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +0 -56
  338. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +0 -1
  339. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +0 -26
  340. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +0 -1
  341. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +0 -44
  342. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +0 -1
  343. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +0 -32
  344. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +0 -1
  345. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +0 -56
  346. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +0 -1
  347. package/dist/cjs/cache/implementations/derivables/cache/cache-settings.js +0 -56
  348. package/dist/cjs/cache/implementations/derivables/cache/cache-settings.js.map +0 -1
  349. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory-settings.js +0 -83
  350. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory-settings.js.map +0 -1
  351. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +0 -26
  352. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +0 -1
  353. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +0 -38
  354. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +0 -1
  355. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus-settings.js +0 -56
  356. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus-settings.js.map +0 -1
  357. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js +0 -71
  358. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js.map +0 -1
  359. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +0 -52
  360. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +0 -1
  361. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +0 -22
  362. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +0 -1
  363. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +0 -40
  364. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +0 -1
  365. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +0 -28
  366. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +0 -1
  367. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +0 -52
  368. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +0 -1
  369. package/dist/esm/cache/implementations/derivables/cache/cache-settings.js +0 -52
  370. package/dist/esm/cache/implementations/derivables/cache/cache-settings.js.map +0 -1
  371. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory-settings.js +0 -79
  372. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory-settings.js.map +0 -1
  373. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +0 -22
  374. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +0 -1
  375. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +0 -34
  376. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +0 -1
  377. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus-settings.js +0 -52
  378. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus-settings.js.map +0 -1
  379. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js +0 -67
  380. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js.map +0 -1
  381. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.d.ts +0 -48
  382. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.d.ts +0 -26
  383. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.d.ts +0 -50
  384. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.d.ts +0 -32
  385. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.d.ts +0 -48
  386. package/dist/types/cache/implementations/derivables/cache/cache-settings.d.ts +0 -73
  387. package/dist/types/cache/implementations/derivables/cache-factory/cache-factory-settings.d.ts +0 -108
  388. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.d.ts +0 -27
  389. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.d.ts +0 -36
  390. package/dist/types/event-bus/implementations/derivables/event-bus/event-bus-settings.d.ts +0 -62
  391. package/dist/types/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.d.ts +0 -92
@@ -2,34 +2,53 @@
2
2
  * @module Cache
3
3
  */
4
4
  import type { CacheEvents, WithTtlValue } from "../../../../cache/contracts/_module";
5
- import { type ICache } from "../../../../cache/contracts/_module";
5
+ import { type ICache, type ICacheAdapter } from "../../../../cache/contracts/_module";
6
6
  import { type IGroupableCache } from "../../../../cache/contracts/_module";
7
7
  import type { AsyncLazyable, GetOrAddValue, OneOrMore } from "../../../../utilities/_module";
8
8
  import type { TimeSpan } from "../../../../utilities/_module";
9
+ import type { BackoffPolicy, RetryPolicy } from "../../../../async/_module";
9
10
  import { LazyPromise } from "../../../../async/_module";
10
- import type { Listener, Unsubscribe, EventClass, EventInstance } from "../../../../event-bus/contracts/_module";
11
- import type { CacheSettings } from "../../../../cache/implementations/derivables/cache/cache-settings";
12
- import { CacheSettingsBuilder } from "../../../../cache/implementations/derivables/cache/cache-settings";
11
+ import type { IGroupableEventBus, Listener, Unsubscribe, EventClass, EventInstance } from "../../../../event-bus/contracts/_module";
13
12
  /**
14
- * <i>Cache</i> class can be derived from any <i>{@link ICacheAdapter}</i>.
15
13
  * @group Derivables
16
14
  */
17
- export declare class Cache<TType = unknown> implements IGroupableCache<TType> {
15
+ export type CacheSettings = {
16
+ adapter: ICacheAdapter<any>;
18
17
  /**
19
- * @example
20
- * ```ts
21
- * import { Cache, MemoryCacheAdapter, TimeSpan, SuperJsonSerde } from "@daiso-tech/core";
22
- *
23
- * const cache = new Cache(
24
- * Cache
25
- * .settings()
26
- * .setAdapter(new MemoryCacheAdapter({ rootGroup: "@global" }))
27
- * .setEventBus(new EventBus(new MemoryEventBusAdapter({ rootGroup: "@global" })))
28
- * .build()
29
- * );
30
- * ```
18
+ * In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
31
19
  */
32
- static settings<TSettings extends Partial<CacheSettings>>(): CacheSettingsBuilder<TSettings>;
20
+ eventBus?: IGroupableEventBus<any>;
21
+ /**
22
+ * You can decide the default ttl value. If null is passed then no ttl will be used by default.
23
+ * @default {null}
24
+ */
25
+ defaultTtl?: TimeSpan | null;
26
+ /**
27
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
28
+ * @default {null}
29
+ */
30
+ retryAttempts?: number | null;
31
+ /**
32
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
33
+ * @default {null}
34
+ */
35
+ backoffPolicy?: BackoffPolicy | null;
36
+ /**
37
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
38
+ * @default {null}
39
+ */
40
+ retryPolicy?: RetryPolicy | null;
41
+ /**
42
+ * The default timeout to use in the returned <i>LazyPromise</i>.
43
+ * @default {null}
44
+ */
45
+ timeout?: TimeSpan | null;
46
+ };
47
+ /**
48
+ * <i>Cache</i> class can be derived from any <i>{@link ICacheAdapter}</i>.
49
+ * @group Derivables
50
+ */
51
+ export declare class Cache<TType = unknown> implements IGroupableCache<TType> {
33
52
  private static defaultRetryPolicy;
34
53
  private readonly groupdEventBus;
35
54
  private readonly eventBus;
@@ -60,14 +79,6 @@ export declare class Cache<TType = unknown> implements IGroupableCache<TType> {
60
79
  */
61
80
  constructor(settings: CacheSettings);
62
81
  private createLayPromise;
63
- private createKeyFoundEvent;
64
- private createKeyNotFoundEvent;
65
- private createKeyAddedEvent;
66
- private createKeyUpdatedEvent;
67
- private createKeyRemovedEvent;
68
- private createKeysClearedEvent;
69
- private createKeyIncrementedEvent;
70
- private createKeyDecrementedEvent;
71
82
  addListener<TEventClass extends EventClass<CacheEvents>>(eventName: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
72
83
  addListenerMany<TEventClass extends EventClass<CacheEvents>>(eventNames: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
73
84
  removeListener<TEventClass extends EventClass<CacheEvents>>(eventName: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
@@ -1,2 +1 @@
1
- export * from "../../../../cache/implementations/derivables/cache-factory/cache-factory-settings";
2
1
  export * from "../../../../cache/implementations/derivables/cache-factory/cache-factory";
@@ -1,38 +1,72 @@
1
1
  /**
2
2
  * @module Cache
3
3
  */
4
+ import type { IGroupableEventBus } from "../../../../event-bus/contracts/_module";
5
+ import type { ICacheAdapter } from "../../../../cache/contracts/_module";
4
6
  import { type ICacheFactory, type IGroupableCache } from "../../../../cache/contracts/_module";
5
- import type { CacheFactorySettings } from "../../../../cache/implementations/derivables/cache-factory/cache-factory-settings";
6
- import { CacheFactorySettingsBuilder } from "../../../../cache/implementations/derivables/cache-factory/cache-factory-settings";
7
+ import type { OneOrMore, TimeSpan } from "../../../../utilities/_module";
8
+ import type { BackoffPolicy, RetryPolicy } from "../../../../async/_module";
9
+ import type { IFlexibleSerde } from "../../../../serde/contracts/_module";
7
10
  /**
8
11
  * @group Derivables
9
12
  */
10
- export declare class CacheFactory<TAdapters extends string = string> implements ICacheFactory<TAdapters> {
13
+ export type CacheAdapters<TAdapters extends string> = Partial<Record<TAdapters, ICacheAdapter<any>>>;
14
+ /**
15
+ * @group Derivables
16
+ */
17
+ export type CacheFactorySettings<TAdapters extends string = string> = {
11
18
  /**
12
- * @example
13
- * ```ts
14
- * import { CacheFactory, SuperJsonSerde. MemoryCacheAdapter, RedisCacheAdapter, EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
15
- * import Redis from "ioredis";
16
- *
17
- * const serde = new SuperJsonSerde();
18
- * const cacheFactory = new CacheFactory(
19
- * CacheFactory
20
- * .settings()
21
- * .setEventBus(new EventBus(new MemoryEventBusAdapter({ rootGroup: "@global" })))
22
- * .setAdapter("memory", new MemoryCacheAdapter({
23
- * rootGroup: "@global"
24
- * }))
25
- * .setAdapter("redis", new RedisCacheAdapter({
26
- * client: new Redis("YOUR_REDIS_CONNECTION"),
27
- * serde,
28
- * rootGroup: "@global"
29
- * }))
30
- * .setDefaultAdapter("memory")
31
- * .build()
32
- * );
33
- * ```
19
+ * You can pass one or more <i>{@link IFlexibleSerde}</i> that will be used to register all <i>{@link IGroupableCache}</i> related errors and events.
20
+ * @default {true}
21
+ */
22
+ serde: OneOrMore<IFlexibleSerde>;
23
+ /**
24
+ * If set to true, all <i>{@link IGroupableCache}</i> related errors will be registered with the specified <i>IFlexibleSerde</i> during constructor initialization.
25
+ * This ensures that all <i>{@link IGroupableCache}</i> related errors will be serialized correctly.
26
+ * @default {true}
27
+ */
28
+ shouldRegisterErrors?: boolean;
29
+ /**
30
+ * If set to true, all <i>{@link IGroupableCache}</i> related events will be registered with the specified <i>IFlexibleSerde</i> during constructor initialization.
31
+ * This ensures that all <i>{@link IGroupableCache}</i> related events will be serialized correctly.
32
+ * @default {true}
34
33
  */
35
- static settings<TAdapters extends string, TSettings extends CacheFactorySettings<TAdapters>>(): CacheFactorySettingsBuilder<TSettings>;
34
+ shouldRegisterEvents?: boolean;
35
+ adapters: CacheAdapters<TAdapters>;
36
+ defaultAdapter?: NoInfer<TAdapters>;
37
+ /**
38
+ * You can decide the default ttl value. If null is passed then no ttl will be used by default.
39
+ */
40
+ defaultTtl?: TimeSpan;
41
+ /**
42
+ * In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
43
+ */
44
+ eventBus: IGroupableEventBus<any>;
45
+ /**
46
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
47
+ * @default {null}
48
+ */
49
+ retryAttempts?: number | null;
50
+ /**
51
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
52
+ * @default {null}
53
+ */
54
+ backoffPolicy?: BackoffPolicy | null;
55
+ /**
56
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
57
+ * @default {null}
58
+ */
59
+ retryPolicy?: RetryPolicy | null;
60
+ /**
61
+ * The default timeout to use in the returned <i>LazyPromise</i>.
62
+ * @default {null}
63
+ */
64
+ timeout?: TimeSpan | null;
65
+ };
66
+ /**
67
+ * @group Derivables
68
+ */
69
+ export declare class CacheFactory<TAdapters extends string = string> implements ICacheFactory<TAdapters> {
36
70
  private readonly cacheRecord;
37
71
  private readonly defaultAdapter?;
38
72
  private readonly eventBus;
@@ -1485,6 +1485,7 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1485
1485
  * // 3
1486
1486
  * }
1487
1487
  * ```
1488
+ * You can pass a function as default value.
1488
1489
  * @example
1489
1490
  * ```ts
1490
1491
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1493,10 +1494,11 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1493
1494
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1494
1495
  * await collection
1495
1496
  * .append([1, 2, 3, 4])
1496
- * .firstOr(-1, item => item > 10);
1497
+ * .firstOr(() => -1, item => item > 10);
1497
1498
  * // -1
1498
1499
  * }
1499
1500
  * ```
1501
+ * You can pass an async function as default value.
1500
1502
  * @example
1501
1503
  * ```ts
1502
1504
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1505,7 +1507,20 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1505
1507
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1506
1508
  * await collection
1507
1509
  * .append([1, 2, 3, 4])
1508
- * .firstOr(() => -1, item => item > 10);
1510
+ * .firstOr(async () => -1, item => item > 10);
1511
+ * // -1
1512
+ * }
1513
+ * ```
1514
+ * You can pass a <i>{@link LazyPromise}</i> as default value.
1515
+ * @example
1516
+ * ```ts
1517
+ * import type { IAsyncCollection, ICache } from "@daiso-tech/core";
1518
+ *
1519
+ * // Asume the inputed collection is empty.
1520
+ * async function main(collection: IAsyncCollection<number>, cache: ICache<number>): Promise<void> {
1521
+ * await collection
1522
+ * .append([1, 2, 3, 4])
1523
+ * .firstOr(cache.get("a"), item => item > 10);
1509
1524
  * // -1
1510
1525
  * }
1511
1526
  * ```
@@ -1621,6 +1636,7 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1621
1636
  * // 3
1622
1637
  * }
1623
1638
  * ```
1639
+ * You can pass a function as default value.
1624
1640
  * @example
1625
1641
  * ```ts
1626
1642
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1629,10 +1645,11 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1629
1645
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1630
1646
  * await collection
1631
1647
  * .append([1, 2, 3, 4])
1632
- * .lastOr(-1, item => item > 10);
1648
+ * .lastOr(() => -1, item => item > 10);
1633
1649
  * // -1
1634
1650
  * }
1635
1651
  * ```
1652
+ * You can pass an async function as default value.
1636
1653
  * @example
1637
1654
  * ```ts
1638
1655
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1641,7 +1658,20 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1641
1658
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1642
1659
  * await collection
1643
1660
  * .append([1, 2, 3, 4])
1644
- * .lastOr(() => -1, item => item > 10);
1661
+ * .lastOr(async () => -1, item => item > 10);
1662
+ * // -1
1663
+ * }
1664
+ * ```
1665
+ * You can pass a <i>{@link LazyPromise}</i> as default value.
1666
+ * @example
1667
+ * ```ts
1668
+ * import type { IAsyncCollection, ICache } from "@daiso-tech/core";
1669
+ *
1670
+ * // Asume the inputed collection is empty.
1671
+ * async function main(collection: IAsyncCollection<number>, cache: ICache<number>): Promise<void> {
1672
+ * await collection
1673
+ * .append([1, 2, 3, 4])
1674
+ * .lastOr(cache.get("a"), item => item > 10);
1645
1675
  * // -1
1646
1676
  * }
1647
1677
  * ```
@@ -1733,6 +1763,7 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1733
1763
  * // 1
1734
1764
  * }
1735
1765
  * ```
1766
+ * You can pass a function as default value.
1736
1767
  * @example
1737
1768
  * ```ts
1738
1769
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1741,10 +1772,11 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1741
1772
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1742
1773
  * await collection
1743
1774
  * .append([1, 2, 3, 4])
1744
- * .beforeOr(-1, item => item === 1);
1775
+ * .beforeOr(() => -1, item => item === 1);
1745
1776
  * // -1
1746
1777
  * }
1747
1778
  * ```
1779
+ * You can pass an async function as default value.
1748
1780
  * @example
1749
1781
  * ```ts
1750
1782
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1753,7 +1785,20 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1753
1785
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1754
1786
  * await collection
1755
1787
  * .append([1, 2, 3, 4])
1756
- * .beforeOr(() => -1, item => item === 1);
1788
+ * .beforeOr(async () => -1, item => item === 1);
1789
+ * // -1
1790
+ * }
1791
+ * ```
1792
+ * You can pass a <i>{@link LazyPromise}</i> as default value.
1793
+ * @example
1794
+ * ```ts
1795
+ * import type { IAsyncCollection, ICache } from "@daiso-tech/core";
1796
+ *
1797
+ * // Asume the inputed collection is empty.
1798
+ * async function main(collection: IAsyncCollection<number>, cache: ICache<number>): Promise<void> {
1799
+ * await collection
1800
+ * .append([1, 2, 3, 4])
1801
+ * .beforeOr(cache.get("a"), item => item > 10);
1757
1802
  * // -1
1758
1803
  * }
1759
1804
  * ```
@@ -1833,6 +1878,7 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1833
1878
  * // 3
1834
1879
  * }
1835
1880
  * ```
1881
+ * You can pass a function as default value.
1836
1882
  * @example
1837
1883
  * ```ts
1838
1884
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1841,10 +1887,11 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1841
1887
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1842
1888
  * await collection
1843
1889
  * .append([1, 2, 3, 4])
1844
- * .afterOr(-1, item => item === 4);
1890
+ * .afterOr(() => -1, item => item === 4);
1845
1891
  * // -1
1846
1892
  * }
1847
1893
  * ```
1894
+ * You can pass an async function as default value.
1848
1895
  * @example
1849
1896
  * ```ts
1850
1897
  * import type { IAsyncCollection } from "@daiso-tech/core";
@@ -1853,7 +1900,20 @@ export type IAsyncCollection<TInput = unknown> = AsyncIterable<TInput> & {
1853
1900
  * async function main(collection: IAsyncCollection<number>): Promise<void> {
1854
1901
  * await collection
1855
1902
  * .append([1, 2, 3, 4])
1856
- * .afterOr(() => -1, item => item === 4);
1903
+ * .afterOr(async () => -1, item => item === 4);
1904
+ * // -1
1905
+ * }
1906
+ * ```
1907
+ * You can pass a <i>{@link LazyPromise}</i> as default value.
1908
+ * @example
1909
+ * ```ts
1910
+ * import type { IAsyncCollection, ICache } from "@daiso-tech/core";
1911
+ *
1912
+ * // Asume the inputed collection is empty.
1913
+ * async function main(collection: IAsyncCollection<number>, cache: ICache<number>): Promise<void> {
1914
+ * await collection
1915
+ * .append([1, 2, 3, 4])
1916
+ * .afterOr(cache.get("a"), item => item > 10);
1857
1917
  * // -1
1858
1918
  * }
1859
1919
  * ```
@@ -5,7 +5,7 @@ import type { Listener } from "../../event-bus/contracts/_shared";
5
5
  import type { BaseEvent } from "../../event-bus/contracts/_shared";
6
6
  /**
7
7
  * The <i>IEventBusAdapter</i> contract defines a way for dispatching and listening to events independent of underlying technology.
8
- * This interface is not meant to be used directly, instead you should use <i>IEventBus</i>
8
+ * This contract is not meant to be used directly, instead you should use <i>IEventBus</i>
9
9
  * @group Contracts
10
10
  */
11
11
  export type IEventBusAdapter = {
@@ -15,7 +15,7 @@ export type IEventBusFactory<TAdapters extends string = string> = {
15
15
  * @throws {DefaultAdapterNotDefinedError} {@link DefaultAdapterNotDefinedError}
16
16
  * @example
17
17
  * ```ts
18
- * import { type IEventBusFactory } from "@daiso-tech/core";
18
+ * import { type IEventBusFactory, BaseEvent } from "@daiso-tech/core";
19
19
  *
20
20
  * class AddEvent extends BaseEvent<{
21
21
  * a: number;
@@ -14,8 +14,7 @@ export type EventBusAdapterTestSuiteSettings = {
14
14
  test: TestAPI;
15
15
  describe: SuiteAPI;
16
16
  beforeEach: typeof beforeEach;
17
- createAdapterA: () => Promisable<IEventBusAdapter>;
18
- createAdapterB: () => Promisable<IEventBusAdapter>;
17
+ createAdapter: () => Promisable<IEventBusAdapter>;
19
18
  };
20
19
  /**
21
20
  * The <i>eventBusAdapterTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IEventBusAdapter}</i> with vitest.
@@ -45,14 +44,7 @@ export type EventBusAdapterTestSuiteSettings = {
45
44
  * await startedContainer.stop();
46
45
  * }, TIMEOUT.toMilliseconds());
47
46
  * eventBusAdapterTestSuite({
48
- * createAdapterA: () =>
49
- * new RedisPubSubEventBusAdapter({
50
- * dispatcherClient,
51
- * listenerClient,
52
- * serde,
53
- * rootGroup: "@global"
54
- * }),
55
- * createAdapterB: () =>
47
+ * createAdapter: () =>
56
48
  * new RedisPubSubEventBusAdapter({
57
49
  * dispatcherClient,
58
50
  * listenerClient,
@@ -2,7 +2,7 @@
2
2
  * @module EventBus
3
3
  */
4
4
  import { type TestAPI, type SuiteAPI, type ExpectStatic, type beforeEach } from "vitest";
5
- import { type IEventBus } from "../../../event-bus/contracts/_module";
5
+ import { type IGroupableEventBus } from "../../../event-bus/contracts/_module";
6
6
  import { type Promisable } from "../../../utilities/_module";
7
7
  import type { IFlexibleSerde } from "../../../serde/contracts/_module";
8
8
  /**
@@ -14,8 +14,7 @@ export type EventBusTestSuiteSettings = {
14
14
  test: TestAPI;
15
15
  describe: SuiteAPI;
16
16
  beforeEach: typeof beforeEach;
17
- createEventBusA: () => Promisable<IEventBus>;
18
- createEventBusB: () => Promisable<IEventBus>;
17
+ createEventBus: () => Promisable<IGroupableEventBus>;
19
18
  };
20
19
  /**
21
20
  * The <i>eventBusTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IEventBus}</i> with vitest.
@@ -45,7 +44,7 @@ export type EventBusTestSuiteSettings = {
45
44
  * await startedContainer.stop();
46
45
  * }, TIMEOUT.toMilliseconds());
47
46
  * eventBusTestSuite({
48
- * createEventBusA: () =>
47
+ * createEventBus: () =>
49
48
  * new EventBus(
50
49
  * new RedisPubSubEventBusAdapter({
51
50
  * dispatcherClient,
@@ -54,15 +53,6 @@ export type EventBusTestSuiteSettings = {
54
53
  * rootGroup: "@global"
55
54
  * })
56
55
  * ),
57
- * createEventBusB: () =>
58
- * new EventBus(
59
- * new RedisPubSubEventBusAdapter({
60
- * dispatcherClient,
61
- * listenerClient,
62
- * serde,
63
- * rootGroup: "@global"
64
- * }),
65
- * ),
66
56
  * serde,
67
57
  * test,
68
58
  * beforeEach,
@@ -1,2 +1 @@
1
- export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
2
1
  export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter";
@@ -2,29 +2,19 @@
2
2
  * @module EventBus
3
3
  */
4
4
  import type { BaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
5
- import type { MemoryEventBusAdapterSettings } from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
6
- import { MemoryEventBusAdapterSettingsBuilder } from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
5
+ import { EventEmitter } from "node:events";
6
+ /**
7
+ * @group Adapters
8
+ */
9
+ export type MemoryEventBusAdapterSettings = {
10
+ rootGroup: string;
11
+ eventEmitter?: EventEmitter;
12
+ };
7
13
  /**
8
14
  * To utilize the <i>MemoryEventBusAdapter</i>, you must create instance of it.
9
15
  * @group Adapters
10
16
  */
11
17
  export declare class MemoryEventBusAdapter implements IEventBusAdapter {
12
- /**
13
- * @example
14
- * ```ts
15
- * import { MemoryEventBusAdapter, SuperJsonSerde } from "@daiso-tech/core";
16
- * import { EventEmitter } from "node:events";
17
- *
18
- * const cacheAdapter = new MemoryEventBusAdapter(
19
- * MemoryEventBusAdapter
20
- * .settings()
21
- * .setEventEmitter(new EventEmitter())
22
- * .setRootGroup("@global")
23
- * .build()
24
- * );
25
- * ```
26
- */
27
- static settings<TSettings extends Partial<MemoryEventBusAdapterSettings>>(): MemoryEventBusAdapterSettingsBuilder<TSettings>;
28
18
  private readonly group;
29
19
  private readonly eventEmitter;
30
20
  /**
@@ -1,2 +1 @@
1
- export * from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings";
2
1
  export * from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter";
@@ -1,32 +1,23 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
+ import { type ISerde } from "../../../../serde/contracts/_module";
4
5
  import type { BaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
5
- import type { RedisPubSubEventBusAdapterSettings } from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings";
6
- import { RedisPubSubEventBusAdapterSettingsBuilder } from "../../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings";
6
+ import type Redis from "ioredis";
7
+ /**
8
+ * @group Adapters
9
+ */
10
+ export type RedisPubSubEventBusAdapterSettings = {
11
+ dispatcherClient: Redis;
12
+ listenerClient: Redis;
13
+ serde: ISerde<string>;
14
+ rootGroup: string;
15
+ };
7
16
  /**
8
17
  * To utilize the <i>RedisPubSubEventBusAdapter</i>, you must install the <i>"ioredis"</i> package and supply a <i>{@link ISerde | ISerde<string> }</i>, such as <i>{@link SuperJsonSerde}</i>.
9
18
  * @group Adapters
10
19
  */
11
20
  export declare class RedisPubSubEventBusAdapter implements IEventBusAdapter {
12
- /**
13
- * @example
14
- * ```ts
15
- * import { RedisPubSubEventBusAdapter, SuperJsonSerde } from "@daiso-tech/core";
16
- * import Redis from "ioredis";
17
- *
18
- * const cacheAdapter = new RedisPubSubEventBusAdapter(
19
- * RedisPubSubEventBusAdapter
20
- * .settings()
21
- * .setDispatcherClient(new Redis("YOUR REDIS CONNECTION"))
22
- * .setListenerClient(new Redis("YOUR REDIS CONNECTION"))
23
- * .setSerde(new SuperJsonSerde())
24
- * .setRootGroup("@global")
25
- * .build()
26
- * );
27
- * ```
28
- */
29
- static settings<TSettings extends Partial<RedisPubSubEventBusAdapterSettings>>(): RedisPubSubEventBusAdapterSettingsBuilder<TSettings>;
30
21
  private readonly group;
31
22
  private readonly baseSerde;
32
23
  private readonly redisSerde;
@@ -1,2 +1 @@
1
- export * from "../../../../event-bus/implementations/derivables/event-bus/event-bus-settings";
2
1
  export * from "../../../../event-bus/implementations/derivables/event-bus/event-bus";
@@ -1,33 +1,42 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
+ import type { BackoffPolicy, RetryPolicy } from "../../../../async/_module";
4
5
  import { LazyPromise } from "../../../../async/_module";
5
6
  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";
7
- import type { OneOrMore } from "../../../../utilities/_module";
8
- import type { EventBusSettings } from "../../../../event-bus/implementations/derivables/event-bus/event-bus-settings";
9
- import { EventBusSettingsBuilder } from "../../../../event-bus/implementations/derivables/event-bus/event-bus-settings";
7
+ import { type IEventBus, type IGroupableEventBus, type IEventBusAdapter, type Listener, type BaseEvent } from "../../../../event-bus/contracts/_module";
8
+ import type { OneOrMore, TimeSpan } from "../../../../utilities/_module";
10
9
  /**
11
- * <i>EventBus</i> class can be derived from any <i>{@link IEventBusAdapter}</i>.
12
10
  * @group Derivables
13
11
  */
14
- export declare class EventBus<TEvents extends BaseEvent = BaseEvent> implements IGroupableEventBus<TEvents> {
12
+ export type EventBusSettings = {
13
+ adapter: IEventBusAdapter;
15
14
  /**
16
- * @example
17
- * ```ts
18
- * import { EventBus, MemoryEventBusAdapter, registerEventErrors, SuperJsonSerde } from "@daiso-tech/core";
19
- *
20
- * const eventBus = new EventBus(
21
- * EventBus
22
- * .settings()
23
- * .setAdapter(new MemoryEventBusAdapter({ rootGroup: "@global" }))
24
- * .build()
25
- * );
26
- * const serde = new SuperJsonSerde();
27
- * registerEventErrors(serde)
28
- * ```
15
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
16
+ * @default {null}
17
+ */
18
+ retryAttempts?: number | null;
19
+ /**
20
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
21
+ * @default {null}
22
+ */
23
+ backoffPolicy?: BackoffPolicy | null;
24
+ /**
25
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
26
+ * @default {null}
27
+ */
28
+ retryPolicy?: RetryPolicy | null;
29
+ /**
30
+ * The default timeout to use in the returned <i>LazyPromise</i>.
31
+ * @default {null}
29
32
  */
30
- static settings<TSettings extends Partial<EventBusSettings>>(): EventBusSettingsBuilder<TSettings>;
33
+ timeout?: TimeSpan | null;
34
+ };
35
+ /**
36
+ * <i>EventBus</i> class can be derived from any <i>{@link IEventBusAdapter}</i>.
37
+ * @group Derivables
38
+ */
39
+ export declare class EventBus<TEvents extends BaseEvent = BaseEvent> implements IGroupableEventBus<TEvents> {
31
40
  private readonly adapter;
32
41
  private readonly retryAttempts;
33
42
  private readonly backoffPolicy;
@@ -1,2 +1 @@
1
1
  export * from "../../../../event-bus/implementations/derivables/event-bus-factory/event-bus-factory";
2
- export * from "../../../../event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings";