@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
@@ -2,61 +2,75 @@
2
2
  * @module Cache
3
3
  */
4
4
  import { type ICacheAdapter } from "../../../../cache/contracts/cache-adapter.contract";
5
+ import type { IDeinitizable } from "../../../../utilities/_module";
5
6
  import { type TimeSpan, type IInitizable, type OneOrMore } from "../../../../utilities/_module";
6
- import type { ObjectId } from "mongodb";
7
- import { type Collection } from "mongodb";
8
- import type { ISerde } from "../../../../serde/contracts/_module";
7
+ import type { MongodbCacheAdapterSettings } from "../../../../cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings";
8
+ import { MongodbCacheAdapterSettingsBuilder } from "../../../../cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings";
9
9
  /**
10
+ * To utilize the <i>MongodbCacheAdapter</i>, you must install the <i>"mongodb"</i> package and supply a <i>{@link ISerde | ISerde<string> }</i>, such as <i>{@link SuperJsonSerde}</i>.
10
11
  * @group Adapters
11
12
  */
12
- export type MongodbCacheDocument = {
13
- _id: ObjectId;
14
- key: string;
15
- group: string;
16
- value: number | string;
17
- expiresAt: Date | null;
18
- };
19
- /**
20
- * @group Adapters
21
- */
22
- export type MongodbCacheAdapterSettings = {
23
- serde: ISerde<string>;
24
- rootGroup: OneOrMore<string>;
25
- };
26
- /**
27
- * To utilize the <i>MongodbCacheAdapter</i>, you must install the <i>"mongodb"</i> package and supply a <i>{@link ISerde | string serde}</i>, such as <i>{@link SuperJsonSerde}</i>.
28
- * @group Adapters
29
- * @example
30
- * ```ts
31
- * import { MongodbCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
32
- * import { MongoClient } from "mongodb";
33
- *
34
- * const client = new MongoClient("YOUR_MONGODB_CONNECTION_STRING");
35
- * const database = client.db("database");
36
- * const cacheCollection = database.collection("cache");
37
- * const serde = new SuperJsonSerde();
38
- * const cacheAdapter = new MongodbCacheAdapter(cacheCollection, {
39
- * serde,
40
- * rootGroup: "@global"
41
- * });
42
- *
43
- * (async () => {
44
- * // You only need to call it once before using the adapter.
45
- * await cacheAdapter.init();
46
- * await cacheAdapter.add("a", 1);
47
- * })();
48
- * ```
49
- */
50
- export declare class MongodbCacheAdapter<TType> implements ICacheAdapter<TType>, IInitizable {
51
- private readonly collection;
13
+ export declare class MongodbCacheAdapter<TType = unknown> implements ICacheAdapter<TType>, IInitizable, IDeinitizable {
14
+ /**
15
+ * @example
16
+ * ```ts
17
+ * import { MongodbCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
18
+ * import { MongoClient } from "mongodb";
19
+ *
20
+ * (async () => {
21
+ * const client = await MongoClient.connect("YOUR_MONGODB_CONNECTION_STRING");
22
+ * const cacheAdapter = new MongodbCacheAdapter(
23
+ * MongodbCacheAdapter
24
+ * .settings()
25
+ * .setDatabase(client.db("database"))
26
+ * .setSerde(new SuperJsonSerde())
27
+ * .setRootGroup("@global")
28
+ * .build()
29
+ * );
30
+ * })();
31
+ * ```
32
+ */
33
+ static settings<TSettings extends Partial<MongodbCacheAdapterSettings>>(): MongodbCacheAdapterSettingsBuilder<TSettings>;
52
34
  private static isMongodbIncrementError;
53
35
  private readonly mongodbSerde;
54
36
  private readonly group;
55
- private readonly serde;
56
- constructor(collection: Collection<MongodbCacheDocument>, { serde, rootGroup }: MongodbCacheAdapterSettings);
37
+ private readonly baseSerde;
38
+ private readonly database;
39
+ private readonly collection;
40
+ private readonly collectionName;
41
+ /**
42
+ * @example
43
+ * ```ts
44
+ * import { MongodbCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
45
+ * import { MongoClient } from "mongodb";
46
+ *
47
+ * (async () => {
48
+ * const client = await MongoClient.connect("YOUR_MONGODB_CONNECTION_STRING");
49
+ * const database = client.db("database");
50
+ * const serde = new SuperJsonSerde();
51
+ * const cacheAdapter = new MongodbCacheAdapter({
52
+ * database,
53
+ * serde,
54
+ * rootGroup: "@global"
55
+ * });
56
+ *
57
+ * await cacheAdapter.init();
58
+ * await cacheAdapter.add("a", 1);
59
+ * await cacheAdapter.deInit();
60
+ * })();
61
+ * ```
62
+ */
63
+ constructor({ collectionName, collectionSettings, database, serde, rootGroup, }: MongodbCacheAdapterSettings);
57
64
  getGroup(): string;
58
65
  withGroup(group: OneOrMore<string>): ICacheAdapter<TType>;
66
+ /**
67
+ * Creates all related indexes.
68
+ */
59
69
  init(): Promise<void>;
70
+ /**
71
+ * Removes the collection where the cache values are stored and all it's related indexes.
72
+ */
73
+ deInit(): Promise<void>;
60
74
  exists(key: string): Promise<boolean>;
61
75
  get(key: string): Promise<TType | null>;
62
76
  add(key: string, value: TType, ttl: TimeSpan | null): Promise<boolean>;
@@ -7,7 +7,7 @@ import type { OneOrMore, TimeSpan } from "../../../../utilities/_module";
7
7
  * This <i>NoOpCacheAdapter</i> will do nothing and is used for easily mocking {@link ICacheAdapter} for testing.
8
8
  * @group Adapters
9
9
  */
10
- export declare class NoOpCacheAdapter<TType> implements ICacheAdapter<TType> {
10
+ export declare class NoOpCacheAdapter<TType = unknown> implements ICacheAdapter<TType> {
11
11
  getGroup(): string;
12
12
  withGroup(_group: OneOrMore<string>): ICacheAdapter<TType>;
13
13
  exists(_key: string): Promise<boolean>;
@@ -1 +1,2 @@
1
+ export * from "../../../../cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings";
1
2
  export * from "../../../../cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter";
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @module Cache
3
+ */
4
+ import type { IBuildable, OneOrMore } from "../../../../utilities/_module";
5
+ import type { Redis } from "ioredis";
6
+ import type { ISerde } from "../../../../serde/contracts/_module";
7
+ /**
8
+ * @group Adapters
9
+ */
10
+ export type RedisCacheAdapterSettings = {
11
+ database: Redis;
12
+ serde: ISerde<string>;
13
+ rootGroup: OneOrMore<string>;
14
+ };
15
+ /**
16
+ * The <i>RedisCacheAdapterSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
17
+ * @group Adapters
18
+ */
19
+ export declare class RedisCacheAdapterSettingsBuilder<TSettings extends Partial<RedisCacheAdapterSettings>> implements IBuildable<RedisCacheAdapterSettings> {
20
+ private readonly settings;
21
+ constructor(settings?: TSettings);
22
+ setDatabase(database: Redis): RedisCacheAdapterSettingsBuilder<TSettings & {
23
+ database: Redis;
24
+ }>;
25
+ setSerde(serde: ISerde<string>): RedisCacheAdapterSettingsBuilder<TSettings & {
26
+ serde: ISerde<string>;
27
+ }>;
28
+ setRootGroup(group: OneOrMore<string>): RedisCacheAdapterSettingsBuilder<TSettings & {
29
+ rootGroup: OneOrMore<string>;
30
+ }>;
31
+ build(this: RedisCacheAdapterSettingsBuilder<RedisCacheAdapterSettings>): RedisCacheAdapterSettings;
32
+ }
@@ -4,42 +4,57 @@
4
4
  import { type ICacheAdapter } from "../../../../cache/contracts/cache-adapter.contract";
5
5
  import type { OneOrMore } from "../../../../utilities/_module";
6
6
  import { type TimeSpan } from "../../../../utilities/_module";
7
- import { type Redis, type Result } from "ioredis";
8
- import type { ISerde } from "../../../../serde/contracts/_module";
7
+ import { type Result } from "ioredis";
8
+ import type { RedisCacheAdapterSettings } from "../../../../cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings";
9
+ import { RedisCacheAdapterSettingsBuilder } from "../../../../cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings";
9
10
  declare module "ioredis" {
10
11
  interface RedisCommander<Context> {
11
12
  daiso_cache_increment(key: string, number: string): Result<number, Context>;
12
13
  }
13
14
  }
14
15
  /**
16
+ * To utilize the <i>RedisCacheAdapter</i>, you must install the <i>"ioredis"</i> package and supply a <i>{@link ISerde | ISerde<string> }</i>, such as <i>{@link SuperJsonSerde}</i>.
15
17
  * @group Adapters
16
18
  */
17
- export type RedisCacheAdapterSettings = {
18
- serde: ISerde<string>;
19
- rootGroup: OneOrMore<string>;
20
- };
21
- /**
22
- * To utilize the <i>RedisCacheAdapter</i>, you must install the <i>"ioredis"</i> package and supply a <i>{@link ISerde | string serde}</i>, such as <i>{@link SuperJsonSerde}</i>.
23
- * @group Adapters
24
- * @example
25
- * ```ts
26
- * import { RedisCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
27
- * import Redis from "ioredis";
28
- *
29
- * const client = new Redis("YOUR_REDIS_CONNECTION_STRING");
30
- * const serde = new SuperJsonSerde();
31
- * const cacheAdapter = new RedisCacheAdapter(client, {
32
- * serde,
33
- * rootGroup: "@global"
34
- * });
35
- * ```
36
- */
37
- export declare class RedisCacheAdapter<TType> implements ICacheAdapter<TType> {
38
- private readonly client;
19
+ export declare class RedisCacheAdapter<TType = unknown> implements ICacheAdapter<TType> {
20
+ /**
21
+ * @example
22
+ * ```ts
23
+ * import { RedisCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
24
+ * import Redis from "ioredis";
25
+ *
26
+ * const cacheAdapter = new RedisCacheAdapter(
27
+ * RedisCacheAdapter
28
+ * .settings()
29
+ * .setDatabase(new Redis("YOUR_REDIS_CONNECTION_STRING"))
30
+ * .setSerde(new SuperJsonSerde())
31
+ * .setRootGroup("@global")
32
+ * .build()
33
+ * );
34
+ * ```
35
+ */
36
+ static settings<TSettings extends Partial<RedisCacheAdapterSettings>>(): RedisCacheAdapterSettingsBuilder<TSettings>;
39
37
  private static isRedisTypeError;
40
- private readonly serde;
38
+ private readonly baseSerde;
39
+ private readonly redisSerde;
41
40
  private readonly group;
42
- constructor(client: Redis, { serde, rootGroup }: RedisCacheAdapterSettings);
41
+ private readonly database;
42
+ /**
43
+ * @example
44
+ * ```ts
45
+ * import { RedisCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
46
+ * import Redis from "ioredis";
47
+ *
48
+ * const database = new Redis("YOUR_REDIS_CONNECTION_STRING");
49
+ * const serde = new SuperJsonSerde();
50
+ * const cacheAdapter = new RedisCacheAdapter({
51
+ * database,
52
+ * serde,
53
+ * rootGroup: "@global"
54
+ * });
55
+ * ```
56
+ */
57
+ constructor({ database, serde, rootGroup }: RedisCacheAdapterSettings);
43
58
  private getGroupName;
44
59
  private withPrefix;
45
60
  exists(key: string): Promise<boolean>;
@@ -1 +1,2 @@
1
+ export * from "../../../../cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings";
1
2
  export * from "../../../../cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter";
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @module Cache
3
+ */
4
+ import type { ISerde } from "../../../../serde/contracts/_module";
5
+ import type { TimeSpan, OneOrMore, IBuildable } from "../../../../utilities/_module";
6
+ import { type SqliteDatabase } from "kysely";
7
+ /**
8
+ * @group Adapters
9
+ */
10
+ export type SqliteCacheAdapterSettings = {
11
+ database: SqliteDatabase;
12
+ tableName?: string;
13
+ serde: ISerde<string>;
14
+ enableTransactions?: boolean;
15
+ expiredKeysRemovalInterval?: TimeSpan;
16
+ shouldRemoveExpiredKeys?: boolean;
17
+ rootGroup: OneOrMore<string>;
18
+ };
19
+ /**
20
+ * The <i>SqliteCacheAdapterSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
21
+ * @group Adapters
22
+ */
23
+ export declare class SqliteCacheAdapterSettingsBuilder<TSettings extends Partial<SqliteCacheAdapterSettings>> implements IBuildable<SqliteCacheAdapterSettings> {
24
+ private readonly settings;
25
+ constructor(settings?: TSettings);
26
+ setDatabase(database: SqliteDatabase): SqliteCacheAdapterSettingsBuilder<TSettings & {
27
+ database: SqliteDatabase;
28
+ }>;
29
+ setTableName(name: string): SqliteCacheAdapterSettingsBuilder<TSettings & {
30
+ tableName: string;
31
+ }>;
32
+ setSerde(serde: ISerde<string>): SqliteCacheAdapterSettingsBuilder<TSettings & {
33
+ serde: ISerde<string>;
34
+ }>;
35
+ setEnableTransactions(enable: boolean): SqliteCacheAdapterSettingsBuilder<TSettings & {
36
+ enableTransactions: boolean;
37
+ }>;
38
+ setExpiredKeysRemovalInterval(interval: TimeSpan): SqliteCacheAdapterSettingsBuilder<TSettings & {
39
+ expiredKeysRemovalInterval: TimeSpan;
40
+ }>;
41
+ setShouldRemoveExpiredKeys(shouldRemove: boolean): SqliteCacheAdapterSettingsBuilder<TSettings & {
42
+ shouldRemoveExpiredKeys: boolean;
43
+ }>;
44
+ setRootGroup(group: OneOrMore<string>): SqliteCacheAdapterSettingsBuilder<TSettings & {
45
+ rootGroup: OneOrMore<string>;
46
+ }>;
47
+ build(this: SqliteCacheAdapterSettingsBuilder<SqliteCacheAdapterSettings>): SqliteCacheAdapterSettings;
48
+ }
@@ -2,52 +2,64 @@
2
2
  * @module Cache
3
3
  */
4
4
  import { type ICacheAdapter } from "../../../../cache/contracts/cache-adapter.contract";
5
- import type { ISerde } from "../../../../serde/contracts/_module";
6
5
  import type { TimeSpan, IInitizable, IDeinitizable, OneOrMore } from "../../../../utilities/_module";
7
- import { type Database } from "better-sqlite3";
6
+ import type { SqliteCacheAdapterSettings } from "../../../../cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings";
7
+ import { SqliteCacheAdapterSettingsBuilder } from "../../../../cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings";
8
8
  /**
9
+ * To utilize the <i>SqliteCacheAdapter</i>, you must install the <i>"better-sqlite3"</i> package and supply a <i>{@link ISerde | ISerde<string> }</i>, such as <i>{@link SuperJsonSerde}</i>.
9
10
  * @group Adapters
10
11
  */
11
- export type SqliteStorageAdapterSettings = {
12
- tableName?: string;
13
- serde: ISerde<string>;
14
- enableTransactions?: boolean;
15
- expiredKeysRemovalInterval?: TimeSpan;
16
- shouldRemoveExpiredKeys?: boolean;
17
- rootGroup: OneOrMore<string>;
18
- };
19
- /**
20
- * To utilize the <i>SqliteCacheAdapter</i>, you must install the <i>"better-sqlite3"</i> package and supply a <i>{@link ISerde | string serde}</i>, such as <i>{@link SuperJsonSerde}</i>.
21
- * @group Adapters
22
- * @example
23
- * ```ts
24
- * import { SqliteCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
25
- * import Sqlite from "better-sqlite3";
26
- *
27
- * const client = new Sqlite("local.db");
28
- * const serde = new SuperJsonSerde();
29
- * const cacheAdapter = new SqliteCacheAdapter(client, {
30
- * serde,
31
- * rootGroup: "@global"
32
- * });
33
- *
34
- * (async () => {
35
- * // You only need to call it once before using the adapter.
36
- * await cacheAdapter.init();
37
- * await cacheAdapter.add("a", 1);
38
- *
39
- * // Will remove the cache
40
- * await cacheAdapter.deInit();
41
- * })();
42
- * ```
43
- */
44
- export declare class SqliteCacheAdapter<TType> implements ICacheAdapter<TType>, IInitizable, IDeinitizable {
12
+ export declare class SqliteCacheAdapter<TType = unknown> implements ICacheAdapter<TType>, IInitizable, IDeinitizable {
13
+ /**
14
+ * @example
15
+ * ```ts
16
+ * import { SqliteCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
17
+ * import Sqlite from "better-sqlite3";
18
+ *
19
+ * const cacheAdapter = new SqliteCacheAdapter(
20
+ * SqliteCacheAdapter
21
+ * .settings()
22
+ * .setDatabase(new Sqlite("local.db"))
23
+ * .setSerde(new SuperJsonSerde())
24
+ * .setRootGroup("@global")
25
+ * .build()
26
+ * );
27
+ * ```
28
+ */
29
+ static settings<TSettings extends Partial<SqliteCacheAdapterSettings>>(): SqliteCacheAdapterSettingsBuilder<TSettings>;
45
30
  private readonly cacheAdapter;
46
- constructor(database: Database, settings: SqliteStorageAdapterSettings);
31
+ /**
32
+ * @example
33
+ * ```ts
34
+ * import { SqliteCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
35
+ * import Sqlite from "better-sqlite3";
36
+ *
37
+ * const database = new Sqlite("local.db");
38
+ * const serde = new SuperJsonSerde();
39
+ * const cacheAdapter = new SqliteCacheAdapter({
40
+ * database,
41
+ * serde,
42
+ * rootGroup: "@global"
43
+ * });
44
+ *
45
+ * (async () => {
46
+ * await cacheAdapter.init();
47
+ * await cacheAdapter.add("a", 1);
48
+ * await cacheAdapter.deInit();
49
+ * })();
50
+ * ```
51
+ */
52
+ constructor(settings: SqliteCacheAdapterSettings);
47
53
  getGroup(): string;
48
54
  withGroup(group: OneOrMore<string>): ICacheAdapter<TType>;
49
55
  removeExpiredKeys(): Promise<void>;
56
+ /**
57
+ * Removes the table where the cache values are stored and removes the table indexes.
58
+ */
50
59
  deInit(): Promise<void>;
60
+ /**
61
+ * Creates the table where the cache values are stored and it's related indexes.
62
+ */
51
63
  init(): Promise<void>;
52
64
  exists(key: string): Promise<boolean>;
53
65
  get(key: string): Promise<TType | null>;
@@ -1,2 +1,4 @@
1
- export * from "../../../cache/implementations/derivables/cache";
1
+ export * from "../../../cache/implementations/derivables/cache-factory-settings";
2
2
  export * from "../../../cache/implementations/derivables/cache-factory";
3
+ export * from "../../../cache/implementations/derivables/cache-settings";
4
+ export * from "../../../cache/implementations/derivables/cache";
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @module Cache
3
+ */
4
+ import type { IGroupableEventBus } from "../../../event-bus/contracts/_module";
5
+ import type { ICacheAdapter } from "../../../cache/contracts/_module";
6
+ import type { TimeSpan } from "../../../utilities/_module";
7
+ import type { BackoffPolicy, RetryPolicy } from "../../../async/_module";
8
+ /**
9
+ * @group Derivables
10
+ */
11
+ export type CacheAdapters<TAdapters extends string> = Partial<Record<TAdapters, ICacheAdapter<any>>>;
12
+ /**
13
+ * @group Derivables
14
+ */
15
+ export type CacheFactorySettings<TAdapters extends string = string> = {
16
+ adapters: CacheAdapters<TAdapters>;
17
+ defaultAdapter?: NoInfer<TAdapters>;
18
+ /**
19
+ * You can decide the default ttl value. If null is passed then no ttl will be used by default.
20
+ */
21
+ defaultTtl?: TimeSpan;
22
+ /**
23
+ * In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
24
+ */
25
+ eventBus?: IGroupableEventBus<any>;
26
+ /**
27
+ * The default retry attempt to use in the returned <i>LazyPromise</i>.
28
+ */
29
+ retryAttempts?: number | null;
30
+ /**
31
+ * The default backof policy to use in the returned <i>LazyPromise</i>.
32
+ */
33
+ backoffPolicy?: BackoffPolicy | null;
34
+ /**
35
+ * The default retry policy to use in the returned <i>LazyPromise</i>.
36
+ */
37
+ retryPolicy?: RetryPolicy | null;
38
+ /**
39
+ * The default timeout to use in the returned <i>LazyPromise</i>.
40
+ */
41
+ timeout?: TimeSpan | null;
42
+ };
43
+ /**
44
+ * The <i>CacheFactorySettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
45
+ * @group Derivables
46
+ */
47
+ export declare class CacheFactorySettingsBuilder<TSettings extends CacheFactorySettings> {
48
+ private readonly settings;
49
+ constructor(settings?: TSettings);
50
+ setEventBus(eventBus: IGroupableEventBus<any>): CacheFactorySettingsBuilder<TSettings & {
51
+ eventBus: IGroupableEventBus<any>;
52
+ }>;
53
+ setDefultTtl(time: TimeSpan): CacheFactorySettingsBuilder<TSettings & {
54
+ defaultTtl: TimeSpan;
55
+ }>;
56
+ setRetryAttempts(attempts: number | null): CacheFactorySettingsBuilder<TSettings & {
57
+ retryAttempts: number | null;
58
+ }>;
59
+ setBackoffPolicy(policy: BackoffPolicy | null): CacheFactorySettingsBuilder<TSettings & {
60
+ backoffPolicy: BackoffPolicy | null;
61
+ }>;
62
+ setRetryPolicy(policy: RetryPolicy | null): CacheFactorySettingsBuilder<TSettings & {
63
+ retryPolicy: RetryPolicy | null;
64
+ }>;
65
+ setTimeout(time: TimeSpan | null): CacheFactorySettingsBuilder<TSettings & {
66
+ timeout: TimeSpan | null;
67
+ }>;
68
+ setAdapter<TName extends string>(name: TName, adapter: ICacheAdapter<any>): CacheFactorySettingsBuilder<TSettings & {
69
+ adapters: {
70
+ readonly [x: string]: ICacheAdapter<any> | undefined;
71
+ };
72
+ }>;
73
+ setDefaultAdapter(adapter: string): CacheFactorySettingsBuilder<TSettings & {
74
+ defaultAdapter: string;
75
+ }>;
76
+ build(this: CacheFactorySettingsBuilder<CacheFactorySettings>): CacheFactorySettings;
77
+ }
@@ -1,50 +1,70 @@
1
1
  /**
2
2
  * @module Cache
3
3
  */
4
- import type { IGroupableEventBus } from "../../../event-bus/contracts/_module";
5
- import type { ICacheFactory, IGroupableCache, ICacheAdapter } from "../../../cache/contracts/_module";
6
- import type { TimeSpan } from "../../../utilities/_module";
4
+ import type { ICacheFactory, IGroupableCache } from "../../../cache/contracts/_module";
5
+ import type { CacheFactorySettings } from "../../../cache/implementations/derivables/cache-factory-settings";
6
+ import { CacheFactorySettingsBuilder } from "../../../cache/implementations/derivables/cache-factory-settings";
7
7
  /**
8
8
  * @group Derivables
9
9
  */
10
- export type CacheDrivers<TDrivers extends string> = Partial<Record<TDrivers, ICacheAdapter<any>>>;
11
- /**
12
- * @group Derivables
13
- */
14
- export type CacheFactorySettings<TDrivers extends string = string> = {
15
- drivers: CacheDrivers<TDrivers>;
16
- defaultDriver?: NoInfer<TDrivers>;
10
+ export declare class CacheFactory<TAdapters extends string = string> implements ICacheFactory<TAdapters> {
17
11
  /**
18
- * You can decide the default ttl value. If null is passed then no ttl will be used by default.
12
+ * @example
13
+ * ```ts
14
+ * import { CacheFactory, SuperJsonSerde. MemoryCacheAdapter, RedisCacheAdapter, EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
15
+ * import Redis from "ioredis";
16
+ *
17
+ * const cacheFactory = new CacheFactory(
18
+ * CacheFactory
19
+ * .settings()
20
+ * .setEventBus(new EventBus(new MemoryEventBusAdapter({ rootGroup: "@global" })))
21
+ * .setAdapter("memory", new MemoryCacheAdapter({
22
+ * rootGroup: "@global"
23
+ * }))
24
+ * .setAdapter("redis", new RedisCacheAdapter({
25
+ * client: new Redis("YOUR_REDIS_CONNECTION"),
26
+ * serde: new SuperJsonSerde(),
27
+ * rootGroup: "@global"
28
+ * }))
29
+ * .setDefaultAdapter("memory")
30
+ * .build()
31
+ * );
32
+ * ```
19
33
  */
20
- defaultTtl?: TimeSpan;
34
+ static settings<TAdapters extends string, TSettings extends CacheFactorySettings<TAdapters>>(): CacheFactorySettingsBuilder<TSettings>;
35
+ private readonly adapters;
36
+ private readonly defaultAdapter?;
37
+ private readonly eventBus?;
38
+ private readonly defaultTtl;
39
+ private readonly retryAttempts?;
40
+ private readonly backoffPolicy?;
41
+ private readonly retryPolicy?;
42
+ private readonly timeout?;
21
43
  /**
22
- * In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
44
+ * @example
45
+ * ```ts
46
+ * import { CacheFactory, MemoryCacheAdapter, RedisCacheAdapter, EventBus, MemoryEventBusAdapter } from "@daiso-tech/core";
47
+ * import Redis from "ioredis"
48
+ *
49
+ * const eventBus = new EventBus({
50
+ * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
51
+ * });
52
+ * const cacheFactory = new CacheFactory({
53
+ * adapters: {
54
+ * memory: new MemoryCacheAdapter({
55
+ * rootGroup: "@global"
56
+ * }),
57
+ * redis: new RedisCacheAdapter({
58
+ * client: new Redis("YOUR_REDIS_CONNECTION"),
59
+ * serde: new SuperJsonSerde(),
60
+ * rootGroup: "@global"
61
+ * }),
62
+ * },
63
+ * defaultAdapter: "memory",
64
+ * eventBus,
65
+ * });
66
+ * ```
23
67
  */
24
- eventBus?: IGroupableEventBus<any>;
25
- };
26
- /**
27
- * @group Derivables
28
- * @example
29
- * ```ts
30
- * import { CacheFactory } from "@daiso-tech/core";
31
- * import Redis from "ioredis"
32
- *
33
- * const cacheFactory = new CacheFactory({
34
- * drivers: {
35
- * memory: new MemoryCacheAdapter(),
36
- * redis: new RedisCacheAdapter(new Redis()),
37
- * },
38
- * defaultDriver: "memory",
39
- * });
40
- * ```
41
- */
42
- export declare class CacheFactory<TDrivers extends string = string, TType = unknown> implements ICacheFactory<TDrivers, TType> {
43
- private readonly drivers;
44
- private readonly defaultDriver?;
45
- private readonly eventBus?;
46
- private defaultTtl;
47
- constructor(settings: CacheFactorySettings<TDrivers>);
48
- use(driverName?: TDrivers | undefined): IGroupableCache<TType>;
49
- withType<TOutput extends TType = TType>(): ICacheFactory<TDrivers, TOutput>;
68
+ constructor(settings: CacheFactorySettings<TAdapters>);
69
+ use<TType = unknown>(adapterName?: TAdapters | undefined): IGroupableCache<TType>;
50
70
  }