@daiso-tech/core 0.26.0 → 0.27.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 (275) hide show
  1. package/README.md +10 -0
  2. package/dist/async/utilities/delay/delay.d.ts +1 -12
  3. package/dist/async/utilities/delay/delay.js +1 -12
  4. package/dist/async/utilities/delay/delay.js.map +1 -1
  5. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +99 -65
  6. package/dist/async/utilities/lazy-promise/lazy-promise.js +151 -111
  7. package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  8. package/dist/cache/contracts/_module-exports.d.ts +1 -0
  9. package/dist/cache/contracts/_module-exports.js +1 -0
  10. package/dist/cache/contracts/_module-exports.js.map +1 -1
  11. package/dist/cache/contracts/cache-adapter.contract.d.ts +19 -21
  12. package/dist/cache/contracts/cache-adapter.contract.js +1 -4
  13. package/dist/cache/contracts/cache-adapter.contract.js.map +1 -1
  14. package/dist/cache/contracts/cache-factory.contract.d.ts +1 -1
  15. package/dist/cache/contracts/cache.contract.d.ts +52 -88
  16. package/dist/cache/contracts/cache.contract.js +1 -2
  17. package/dist/cache/contracts/cache.contract.js.map +1 -1
  18. package/dist/cache/contracts/cache.errors.js +2 -5
  19. package/dist/cache/contracts/cache.errors.js.map +1 -1
  20. package/dist/cache/contracts/cache.events.d.ts +10 -10
  21. package/dist/cache/contracts/cache.events.js +2 -5
  22. package/dist/cache/contracts/cache.events.js.map +1 -1
  23. package/dist/cache/contracts/database-cache-adapter.contract.d.ts +89 -0
  24. package/dist/cache/contracts/database-cache-adapter.contract.js +5 -0
  25. package/dist/cache/contracts/database-cache-adapter.contract.js.map +1 -0
  26. package/dist/cache/implementations/adapters/_module-exports.d.ts +0 -1
  27. package/dist/cache/implementations/adapters/_module-exports.js +0 -1
  28. package/dist/cache/implementations/adapters/_module-exports.js.map +1 -1
  29. package/dist/cache/implementations/adapters/{kysely-sqlite-cache-adapter → kysely-cache-adapter}/_module.d.ts +1 -1
  30. package/dist/cache/implementations/adapters/kysely-cache-adapter/_module.js +2 -0
  31. package/dist/cache/implementations/adapters/kysely-cache-adapter/_module.js.map +1 -0
  32. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.d.ts +73 -0
  33. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js +224 -0
  34. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js.map +1 -0
  35. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +29 -39
  36. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +45 -54
  37. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  38. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +17 -33
  39. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +43 -52
  40. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  41. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.d.ts +13 -0
  42. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js +38 -0
  43. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js.map +1 -0
  44. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +27 -33
  45. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +145 -197
  46. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  47. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.d.ts +13 -0
  48. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js +39 -0
  49. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js.map +1 -0
  50. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +16 -22
  51. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +51 -132
  52. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  53. package/dist/cache/implementations/adapters/redis-cache-adapter/utilities.d.ts +13 -0
  54. package/dist/cache/implementations/adapters/redis-cache-adapter/utilities.js +69 -0
  55. package/dist/cache/implementations/adapters/redis-cache-adapter/utilities.js.map +1 -0
  56. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +29 -40
  57. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +46 -55
  58. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  59. package/dist/cache/implementations/derivables/_module-exports.d.ts +1 -1
  60. package/dist/cache/implementations/derivables/_module-exports.js +1 -1
  61. package/dist/cache/implementations/derivables/_module-exports.js.map +1 -1
  62. package/dist/cache/implementations/derivables/cache/_module.d.ts +1 -0
  63. package/dist/cache/implementations/derivables/cache/_module.js +1 -0
  64. package/dist/cache/implementations/derivables/cache/_module.js.map +1 -1
  65. package/dist/cache/implementations/derivables/cache/cache.d.ts +122 -565
  66. package/dist/cache/implementations/derivables/cache/cache.js +342 -854
  67. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  68. package/dist/cache/implementations/derivables/cache/database-cache-adapter.d.ts +21 -0
  69. package/dist/cache/implementations/derivables/cache/database-cache-adapter.js +110 -0
  70. package/dist/cache/implementations/derivables/cache/database-cache-adapter.js.map +1 -0
  71. package/dist/cache/implementations/derivables/cache/is-database-cache-adapter.d.ts +9 -0
  72. package/dist/cache/implementations/derivables/cache/is-database-cache-adapter.js +20 -0
  73. package/dist/cache/implementations/derivables/cache/is-database-cache-adapter.js.map +1 -0
  74. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +65 -104
  75. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js +101 -85
  76. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  77. package/dist/cache/implementations/test-utilities/_module-exports.d.ts +1 -0
  78. package/dist/cache/implementations/test-utilities/_module-exports.js +1 -0
  79. package/dist/cache/implementations/test-utilities/_module-exports.js.map +1 -1
  80. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.d.ts +9 -11
  81. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js +246 -247
  82. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js.map +1 -1
  83. package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +16 -30
  84. package/dist/cache/implementations/test-utilities/cache.test-suite.js +271 -996
  85. package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
  86. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.d.ts +60 -0
  87. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +698 -0
  88. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js.map +1 -0
  89. package/dist/collection/contracts/async-collection.contract.d.ts +2 -3
  90. package/dist/collection/contracts/async-collection.contract.js +1 -12
  91. package/dist/collection/contracts/async-collection.contract.js.map +1 -1
  92. package/dist/collection/contracts/collection.contract.d.ts +1 -1
  93. package/dist/collection/contracts/collection.errors.d.ts +1 -1
  94. package/dist/collection/contracts/collection.errors.js +3 -6
  95. package/dist/collection/contracts/collection.errors.js.map +1 -1
  96. package/dist/collection/implementations/_shared.d.ts +4 -4
  97. package/dist/collection/implementations/_shared.js +6 -9
  98. package/dist/collection/implementations/_shared.js.map +1 -1
  99. package/dist/collection/implementations/async-iterable-collection/_shared/async-delay-iterable.js +2 -2
  100. package/dist/collection/implementations/async-iterable-collection/_shared/async-delay-iterable.js.map +1 -1
  101. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +1 -1
  102. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +6 -5
  103. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  104. package/dist/collection/implementations/iterable-collection/iterable-collection.d.ts +1 -1
  105. package/dist/collection/implementations/iterable-collection/iterable-collection.js +1 -1
  106. package/dist/collection/implementations/list-collection/list-collection.d.ts +1 -1
  107. package/dist/collection/implementations/list-collection/list-collection.js +1 -1
  108. package/dist/event-bus/contracts/event-bus-adapter.contract.d.ts +0 -9
  109. package/dist/event-bus/contracts/event-bus.contract.d.ts +5 -5
  110. package/dist/event-bus/contracts/event-bus.contract.js.map +1 -1
  111. package/dist/event-bus/contracts/event-bus.errors.js +2 -5
  112. package/dist/event-bus/contracts/event-bus.errors.js.map +1 -1
  113. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +9 -29
  114. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +14 -35
  115. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  116. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +1 -3
  117. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +1 -7
  118. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  119. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +8 -15
  120. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +15 -34
  121. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  122. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +78 -267
  123. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +119 -323
  124. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  125. package/dist/event-bus/implementations/derivables/event-bus/listener-store.d.ts +13 -0
  126. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js +42 -0
  127. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js.map +1 -0
  128. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +70 -96
  129. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +100 -90
  130. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  131. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.d.ts +2 -48
  132. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +31 -122
  133. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js.map +1 -1
  134. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.d.ts +2 -50
  135. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +41 -89
  136. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  137. package/dist/lock/contracts/database-lock-adapter.contract.d.ts +0 -9
  138. package/dist/lock/contracts/lock-adapter.contract.d.ts +0 -9
  139. package/dist/lock/contracts/lock-provider.contract.d.ts +1 -1
  140. package/dist/lock/contracts/lock.errors.js +2 -5
  141. package/dist/lock/contracts/lock.errors.js.map +1 -1
  142. package/dist/lock/contracts/lock.events.js +2 -5
  143. package/dist/lock/contracts/lock.events.js.map +1 -1
  144. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +0 -5
  145. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +2 -21
  146. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
  147. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.d.ts +11 -16
  148. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +11 -20
  149. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js.map +1 -1
  150. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +7 -26
  151. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +7 -35
  152. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -1
  153. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +13 -20
  154. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +13 -37
  155. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
  156. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +4 -22
  157. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +4 -31
  158. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -1
  159. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.d.ts +12 -17
  160. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +12 -21
  161. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +1 -1
  162. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.d.ts +0 -2
  163. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js +2 -8
  164. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -1
  165. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.d.ts +9 -0
  166. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js +17 -0
  167. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js.map +1 -0
  168. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +115 -372
  169. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +197 -455
  170. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  171. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +15 -17
  172. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +42 -40
  173. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
  174. package/dist/lock/implementations/derivables/lock-provider/lock-state.d.ts +3 -3
  175. package/dist/lock/implementations/derivables/lock-provider/lock-state.js.map +1 -1
  176. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +30 -754
  177. package/dist/lock/implementations/derivables/lock-provider/lock.js +94 -812
  178. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  179. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +58 -161
  180. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +116 -122
  181. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  182. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.d.ts +4 -5
  183. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js +172 -247
  184. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js.map +1 -1
  185. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.d.ts +5 -8
  186. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js +93 -98
  187. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js.map +1 -1
  188. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +15 -20
  189. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +133 -137
  190. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  191. package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js +1 -2
  192. package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js.map +1 -1
  193. package/dist/serde/implementations/adapters/no-op-serde-adapter/no-op-serde-adapter.d.ts +2 -2
  194. package/dist/serde/implementations/adapters/no-op-serde-adapter/no-op-serde-adapter.js +1 -1
  195. package/dist/serde/implementations/adapters/redis-serde/redis-serde.js +1 -2
  196. package/dist/serde/implementations/adapters/redis-serde/redis-serde.js.map +1 -1
  197. package/dist/serde/implementations/adapters/sql-serde/sql-serde.js +1 -2
  198. package/dist/serde/implementations/adapters/sql-serde/sql-serde.js.map +1 -1
  199. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.d.ts +2 -2
  200. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js +2 -2
  201. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js.map +1 -1
  202. package/dist/serde/implementations/derivables/serde.d.ts +14 -14
  203. package/dist/serde/implementations/derivables/serde.js +14 -15
  204. package/dist/serde/implementations/derivables/serde.js.map +1 -1
  205. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.d.ts +4 -4
  206. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.js +3 -3
  207. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.d.ts +5 -5
  208. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js +4 -4
  209. package/dist/utilities/_module-exports.d.ts +1 -2
  210. package/dist/utilities/_module-exports.js +1 -2
  211. package/dist/utilities/_module-exports.js.map +1 -1
  212. package/dist/utilities/classes/_module.d.ts +4 -0
  213. package/dist/utilities/classes/_module.js +5 -0
  214. package/dist/utilities/classes/_module.js.map +1 -0
  215. package/dist/utilities/classes/key-prefixer/_module.d.ts +2 -0
  216. package/dist/utilities/classes/key-prefixer/_module.js +3 -0
  217. package/dist/utilities/classes/key-prefixer/_module.js.map +1 -0
  218. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.d.ts +28 -0
  219. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js +5 -0
  220. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js.map +1 -0
  221. package/dist/utilities/classes/key-prefixer/key-prefixer.d.ts +73 -0
  222. package/dist/utilities/classes/key-prefixer/key-prefixer.js +135 -0
  223. package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +1 -0
  224. package/dist/utilities/classes/kysely-table-name-transformer-plugin/_module.d.ts +1 -0
  225. package/dist/utilities/classes/kysely-table-name-transformer-plugin/_module.js +2 -0
  226. package/dist/utilities/classes/kysely-table-name-transformer-plugin/_module.js.map +1 -0
  227. package/dist/utilities/classes/kysely-table-name-transformer-plugin/kysely-table-name-transformer-plugin.js.map +1 -0
  228. package/dist/utilities/classes/pipeline/_module.d.ts +1 -0
  229. package/dist/utilities/classes/pipeline/_module.js +2 -0
  230. package/dist/utilities/classes/pipeline/_module.js.map +1 -0
  231. package/dist/utilities/{pipeline → classes/pipeline}/pipeline.d.ts +3 -2
  232. package/dist/utilities/{pipeline → classes/pipeline}/pipeline.js +3 -2
  233. package/dist/utilities/classes/pipeline/pipeline.js.map +1 -0
  234. package/dist/utilities/classes/time-span/_module.d.ts +1 -0
  235. package/dist/utilities/classes/time-span/_module.js +2 -0
  236. package/dist/utilities/classes/time-span/_module.js.map +1 -0
  237. package/dist/utilities/{time-span → classes/time-span}/time-span.d.ts +2 -1
  238. package/dist/utilities/{time-span → classes/time-span}/time-span.js +1 -0
  239. package/dist/utilities/classes/time-span/time-span.js.map +1 -0
  240. package/dist/utilities/contracts/_module.d.ts +2 -1
  241. package/dist/utilities/contracts/_module.js +2 -1
  242. package/dist/utilities/contracts/_module.js.map +1 -1
  243. package/dist/utilities/contracts/prunable.contract.d.ts +11 -0
  244. package/dist/utilities/contracts/prunable.contract.js +5 -0
  245. package/dist/utilities/contracts/prunable.contract.js.map +1 -0
  246. package/dist/utilities/functions.d.ts +30 -2
  247. package/dist/utilities/functions.js +66 -4
  248. package/dist/utilities/functions.js.map +1 -1
  249. package/dist/utilities/types.d.ts +47 -14
  250. package/package.json +14 -13
  251. package/dist/cache/implementations/adapters/kysely-sqlite-cache-adapter/_module.js +0 -2
  252. package/dist/cache/implementations/adapters/kysely-sqlite-cache-adapter/_module.js.map +0 -1
  253. package/dist/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +0 -61
  254. package/dist/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +0 -318
  255. package/dist/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +0 -1
  256. package/dist/cache/implementations/adapters/no-op-cache-adapter/_module.d.ts +0 -1
  257. package/dist/cache/implementations/adapters/no-op-cache-adapter/_module.js +0 -2
  258. package/dist/cache/implementations/adapters/no-op-cache-adapter/_module.js.map +0 -1
  259. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +0 -22
  260. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +0 -39
  261. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +0 -1
  262. package/dist/utilities/kysely/_module.d.ts +0 -1
  263. package/dist/utilities/kysely/_module.js +0 -2
  264. package/dist/utilities/kysely/_module.js.map +0 -1
  265. package/dist/utilities/kysely/kysely-table-name-transformer-plugin.js.map +0 -1
  266. package/dist/utilities/pipeline/_module.d.ts +0 -1
  267. package/dist/utilities/pipeline/_module.js +0 -2
  268. package/dist/utilities/pipeline/_module.js.map +0 -1
  269. package/dist/utilities/pipeline/pipeline.js.map +0 -1
  270. package/dist/utilities/time-span/_module.d.ts +0 -1
  271. package/dist/utilities/time-span/_module.js +0 -2
  272. package/dist/utilities/time-span/_module.js.map +0 -1
  273. package/dist/utilities/time-span/time-span.js.map +0 -1
  274. /package/dist/utilities/{kysely → classes/kysely-table-name-transformer-plugin}/kysely-table-name-transformer-plugin.d.ts +0 -0
  275. /package/dist/utilities/{kysely → classes/kysely-table-name-transformer-plugin}/kysely-table-name-transformer-plugin.js +0 -0
@@ -3,210 +3,152 @@
3
3
  */
4
4
  import { LazyPromise } from "../../../../async/_module-exports.js";
5
5
  import { UnableToDispatchEventBusError, UnableToRemoveListenerEventBusError, UnableToAddListenerEventBusError, } from "../../../../event-bus/contracts/_module-exports.js";
6
- import { getConstructorName, resolveOneOrMoreStr, } from "../../../../utilities/_module-exports.js";
6
+ import { getConstructorName, resolveFactoryable, resolveInvokable, } from "../../../../utilities/_module-exports.js";
7
+ import { ListenerStore } from "../../../../event-bus/implementations/derivables/event-bus/listener-store.js";
7
8
  /**
8
9
  * <i>EventBus</i> class can be derived from any <i>{@link IEventBusAdapter}</i>.
9
10
  *
10
- * IMPORT_PATH: ```"@daiso-tech/core/event-bus/implementations/derivables"```
11
+ * IMPORT_PATH: ```"@daiso-tech/core/event-bus"```
11
12
  * @group Derivables
12
13
  */
13
14
  export class EventBus {
14
- adapter;
15
+ adapterFactoryable;
15
16
  retryAttempts;
16
17
  backoffPolicy;
17
18
  retryPolicy;
18
19
  timeout;
19
- listenerObjectMap = new Map();
20
+ store = new ListenerStore();
21
+ adapterPromise;
22
+ keyPrefixer;
20
23
  /**
21
24
  * @example
22
25
  * ```ts
23
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
24
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
25
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
26
+ * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/adapters";
27
+ * import { EventBus } from "@daiso-tech/core/event-bus";
28
+ * import { KeyPrefixer } from "@daiso-tech/utilities";
26
29
  *
27
- * const eventBus: IGroupableEventBus = new EventBus({
28
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
30
+ * const eventBus = new EventBus({
31
+ * keyPrefixer: new KeyPrefixer("event-bus"),
32
+ * adapter: new MemoryEventBusAdapter()
29
33
  * });
30
34
  * ```
31
- */
32
- constructor(settings) {
33
- const { adapter, retryAttempts = null, backoffPolicy = null, retryPolicy = null, timeout = null, } = settings;
34
- this.retryAttempts = retryAttempts;
35
- this.backoffPolicy = backoffPolicy;
36
- this.retryPolicy = retryPolicy;
37
- this.timeout = timeout;
38
- this.adapter = adapter;
39
- }
40
- createLayPromise(asyncFn) {
41
- return new LazyPromise(asyncFn)
42
- .setRetryAttempts(this.retryAttempts)
43
- .setBackoffPolicy(this.backoffPolicy)
44
- .setRetryPolicy(this.retryPolicy)
45
- .setTimeout(this.timeout);
46
- }
47
- /**
35
+ *
36
+ * You can pass factory function that will create an adapter for every group.
48
37
  * @example
49
38
  * ```ts
50
- * import type { IGroupableEventBus, IEventBus } from "@daiso-tech/core/event-bus/contracts";
51
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
52
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
53
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
39
+ * import type { IEventBusAdapter } from "@daiso-tech/core/event-bus/contracts";
40
+ * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/adapters";
41
+ * import { EventBus } from "@daiso-tech/core/event-bus";
42
+ * import { KeyPrefixer, type Promiseable } from "@daiso-tech/utilities";
43
+ *
44
+ * const store: Partial<Record<string, IEventBusAdapter>> = {};
45
+ *
46
+ * async function cahceAdapterFactory(prefix: string): Promiseable<IEventBusAdapter> {
47
+ * let adapter = store[prefix];
48
+ * if (adapter === undefined) {
49
+ * adapter = new MemoryEventBusAdapter();
50
+ * store[prefix] = adapter;
51
+ * }
52
+ * return adapter;
53
+ * }
54
54
  *
55
- * const eventBus: IGroupableEventBus = new EventBus({
56
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
55
+ * const eventBus = new EventBus({
56
+ * keyPrefixer: new KeyPrefixer("event-bus"),
57
+ * adapter: cahceAdapterFactory
57
58
  * });
59
+ * ```
58
60
  *
59
- * // Will print "@global"
60
- * console.log(eventBus.getGroup());
61
- *
62
- * const groupedEventBus: IEventBus = eventBus.withGroup("company-1");
61
+ * You can also pass factory object that implements <i>{@link IFactoryObject}</i> contract. This useful for depedency injection libraries.
62
+ * @example
63
+ * ```ts
64
+ * import type { IEventBusAdapter } from "@daiso-tech/core/event-bus/contracts";
65
+ * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/adapters";
66
+ * import { EventBus } from "@daiso-tech/core/event-bus";
67
+ * import { KeyPrefixer, type IFactoryObject, type Promiseable } from "@daiso-tech/utilities";
68
+ *
69
+ *
70
+ * class EventBusAdapterFactory implements IFactoryObject<string, IEventBusAdapter> {
71
+ * private store: Partial<Record<string, IEventBusAdapter>> = {};
72
+ *
73
+ * async use(prefix: string): Promiseable<IEventBusAdapter> {
74
+ * let adapter = this.store[prefix];
75
+ * if (adapter === undefined) {
76
+ * adapter = new MemoryEventBusAdapter();
77
+ * store[prefix] = adapter;
78
+ * }
79
+ * return adapter;
80
+ * }
81
+ * }
63
82
  *
64
- * // Will print "@global/company-1"
65
- * console.log(groupedEventBus.getGroup());
83
+ * const cahceAdapterFactory = new EventBusAdapterFactory();
84
+ * const eventBus = new EventBus({
85
+ * keyPrefixer: new KeyPrefixer("event-bus"),
86
+ * adapter: cahceAdapterFactory
87
+ * });
66
88
  * ```
67
89
  */
90
+ constructor(settings) {
91
+ const { keyPrefixer, adapter, retryAttempts = null, backoffPolicy = null, retryPolicy = null, timeout = null, } = settings;
92
+ this.adapterFactoryable = adapter;
93
+ this.keyPrefixer = keyPrefixer;
94
+ this.retryAttempts = retryAttempts;
95
+ this.backoffPolicy = backoffPolicy;
96
+ this.retryPolicy = retryPolicy;
97
+ this.timeout = timeout;
98
+ this.adapterPromise = new LazyPromise(() => resolveFactoryable(this.adapterFactoryable, this.keyPrefixer.keyPrefix));
99
+ }
100
+ createLazyPromise(asyncFn) {
101
+ return new LazyPromise(asyncFn, {
102
+ retryAttempts: this.retryAttempts,
103
+ backoffPolicy: this.backoffPolicy,
104
+ retryPolicy: this.retryPolicy,
105
+ timeout: this.timeout,
106
+ });
107
+ }
68
108
  withGroup(group) {
69
109
  return new EventBus({
70
- adapter: this.adapter.withGroup(resolveOneOrMoreStr(group)),
110
+ keyPrefixer: this.keyPrefixer.withGroup(group),
111
+ adapter: this.adapterFactoryable,
71
112
  retryAttempts: this.retryAttempts,
72
113
  backoffPolicy: this.backoffPolicy,
73
114
  retryPolicy: this.retryPolicy,
74
115
  timeout: this.timeout,
75
116
  });
76
117
  }
77
- /**
78
- * @example
79
- * ```ts
80
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
81
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
82
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
83
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
84
- *
85
- * const eventBus: IGroupableEventBus = new EventBus({
86
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
87
- * });
88
- *
89
- * // Will print "@global"
90
- * console.log(eventBus.getGroup());
91
- * ```
92
- */
93
118
  getGroup() {
94
- return this.adapter.getGroup();
119
+ return this.keyPrefixer.resolvedGroup;
95
120
  }
96
- ensureListenerObject(listener) {
97
- let listenerFn = this.listenerObjectMap.get(listener);
98
- if (listenerFn !== undefined) {
99
- return listenerFn;
100
- }
101
- listenerFn = listener.invoke.bind(listener);
102
- this.listenerObjectMap.set(listener, listenerFn);
103
- return listenerFn;
104
- }
105
- resolveListener(listener) {
106
- if (typeof listener === "function") {
107
- return listener;
108
- }
109
- return this.ensureListenerObject(listener);
110
- }
111
- deleteListener(listener) {
112
- if (typeof listener === "function") {
113
- return;
114
- }
115
- this.listenerObjectMap.delete(listener);
116
- }
117
- /**
118
- * @example
119
- * ```ts
120
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
121
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
122
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
123
- * import { BaseEvent, type Listener } from "@daiso-tech/core/event-bus/contracts";
124
- *
125
- * const eventBus: IGroupableEventBus = new EventBus({
126
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
127
- * });
128
- *
129
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
130
- *
131
- * const listener: Invokable<AddEvent> = event => {
132
- * console.log(event);
133
- * }
134
- * await eventBus.addListener(AddEvent, listener);
135
- * await eventBus.dispatch(new AddEvent({ a: 1, b: 2,}));
136
- * ```
137
- */
138
121
  addListener(event, listener) {
139
- return this.createLayPromise(async () => {
140
- const resolvedListener = this.resolveListener(listener);
122
+ return this.createLazyPromise(async () => {
123
+ const eventName = this.keyPrefixer.create(event.name);
124
+ const resolvedListener = this.store.getOrAdd(eventName.prefixed, listener);
141
125
  try {
142
- await this.adapter.addListener(event.name, resolvedListener);
126
+ const adapter = await this.adapterPromise;
127
+ await adapter.addListener(eventName.prefixed, resolvedListener);
143
128
  }
144
129
  catch (error) {
145
130
  throw new UnableToAddListenerEventBusError(`A listener with name of "${resolvedListener.name}" could not added for "${String(event)}" event`, error);
146
131
  }
147
132
  });
148
133
  }
149
- /**
150
- * @example
151
- * ```ts
152
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
153
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
154
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
155
- * import { BaseEvent, type Listener } from "@daiso-tech/core/event-bus/contracts";
156
- *
157
- * const eventBus: IGroupableEventBus = new EventBus({
158
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
159
- * });
160
- *
161
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
162
- *
163
- * const listener: Invokable<AddEvent> = event => {
164
- * console.log(event);
165
- * }
166
- * await eventBus.addListener(AddEvent, listener);
167
- * await eventBus.dispatch(new AddEvent({ a: 1, b: 2,}));
168
- * await eventBus.removeListener(AddEvent, listener);
169
- * ```
170
- */
171
134
  removeListener(event, listener) {
172
- return this.createLayPromise(async () => {
173
- const resolvedListener = this.resolveListener(listener);
135
+ return this.createLazyPromise(async () => {
136
+ const eventName = this.keyPrefixer.create(event.name);
137
+ const resolvedListener = this.store.getAndRemove(eventName.prefixed, listener);
138
+ if (resolvedListener === null) {
139
+ return;
140
+ }
174
141
  try {
175
- await this.adapter.removeListener(event.name, resolvedListener);
176
- this.deleteListener(listener);
142
+ const adapter = await this.adapterPromise;
143
+ await adapter.removeListener(eventName.prefixed, resolvedListener);
177
144
  }
178
145
  catch (error) {
179
146
  throw new UnableToRemoveListenerEventBusError(`A listener with name of "${resolvedListener.name}" could not removed of "${String(event)}" event`, error);
180
147
  }
181
148
  });
182
149
  }
183
- /**
184
- * @example
185
- * ```ts
186
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
187
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
188
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
189
- * import { BaseEvent, type Listener } from "@daiso-tech/core/event-bus/contracts";
190
- *
191
- * const eventBus: IGroupableEventBus = new EventBus({
192
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
193
- * });
194
- *
195
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
196
- * class SubEvent extends BaseEvent<{ c: number, d: number }> {}
197
- *
198
- * const listener: Invokable<AddEvent | SubEvent> = event => {
199
- * console.log(event)
200
- * }
201
- * await eventBus.addListenerMany([AddEvent, SubEvent], listener);
202
- * await eventBus.dispatchMany([
203
- * new AddEvent({ a: 1, b: 2 }),
204
- * new SubEvent({ c: 1, d: 2 }),
205
- * ]);
206
- * ```
207
- */
208
150
  addListenerMany(events, listener) {
209
- return this.createLayPromise(async () => {
151
+ return this.createLazyPromise(async () => {
210
152
  if (events.length === 0) {
211
153
  return;
212
154
  }
@@ -217,34 +159,8 @@ export class EventBus {
217
159
  await Promise.all(promises);
218
160
  });
219
161
  }
220
- /**
221
- * @example
222
- * ```ts
223
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
224
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
225
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
226
- * import { BaseEvent, type Listener } from "@daiso-tech/core/event-bus/contracts";
227
- *
228
- * const eventBus: IGroupableEventBus = new EventBus({
229
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
230
- * });
231
- *
232
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
233
- * class SubEvent extends BaseEvent<{ c: number, d: number }> {}
234
- *
235
- * const listener: Invokable<AddEvent | SubEvent> = event => {
236
- * console.log(event);
237
- * }
238
- * await eventBus.addListenerMany([AddEvent, SubEvent], listener);
239
- * await eventBus.dispatchMany([
240
- * new AddEvent({ a: 1, b: 2 }),
241
- * new SubEvent({ c: 1, d: 2 }),
242
- * ]);
243
- * await eventBus.removeListenerMany([AddEvent, SubEvent], listener);
244
- * ```
245
- */
246
162
  removeListenerMany(events, listener) {
247
- return this.createLayPromise(async () => {
163
+ return this.createLazyPromise(async () => {
248
164
  if (events.length === 0) {
249
165
  return;
250
166
  }
@@ -255,32 +171,11 @@ export class EventBus {
255
171
  await Promise.all(promises);
256
172
  });
257
173
  }
258
- /**
259
- * @example
260
- * ```ts
261
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
262
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
263
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
264
- * import { BaseEvent, type Listener } from "@daiso-tech/core/event-bus/contracts";
265
- *
266
- * const eventBus: IGroupableEventBus = new EventBus({
267
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
268
- * });
269
- *
270
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
271
- *
272
- * await eventBus.listenOnce(AddEvent, event => {
273
- * console.log(event);
274
- * });
275
- *
276
- * await eventBus.dispatch(new AddEvent({ a: 1, b: 2,}));
277
- * ```
278
- */
279
174
  listenOnce(event, listener) {
280
- return this.createLayPromise(async () => {
175
+ return this.createLazyPromise(async () => {
281
176
  const wrappedListener = async (event_) => {
282
177
  try {
283
- const resolvedListener = this.resolveListener(listener);
178
+ const resolvedListener = resolveInvokable(listener);
284
179
  await resolvedListener(event_);
285
180
  }
286
181
  finally {
@@ -290,27 +185,6 @@ export class EventBus {
290
185
  await this.addListener(event, wrappedListener);
291
186
  });
292
187
  }
293
- /**
294
- * @example
295
- * ```ts
296
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
297
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
298
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
299
- * import { BaseEvent, type Listener } from "@daiso-tech/core/event-bus/contracts";
300
- *
301
- * const eventBus: IGroupableEventBus = new EventBus({
302
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
303
- * });
304
- *
305
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
306
- *
307
- * eventBus.asPromise(AddEvent).then(event => {
308
- * console.log(event);
309
- * });
310
- *
311
- * await eventBus.dispatch(new AddEvent({ a: 1, b: 2,}));
312
- * ```
313
- */
314
188
  asPromise(event) {
315
189
  return new LazyPromise(() => new Promise((resolve, reject) => {
316
190
  this.listenOnce(event, resolve).then((event) => event,
@@ -318,126 +192,48 @@ export class EventBus {
318
192
  reject);
319
193
  }));
320
194
  }
321
- /**
322
- * @example
323
- * ```ts
324
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
325
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
326
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
327
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
328
- *
329
- * const eventBus: IGroupableEventBus = new EventBus({
330
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
331
- * });
332
- *
333
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
334
- *
335
- * const unsubscribe = await eventBus.subscribe(AddEvent, event => {
336
- * console.log(event);
337
- * });
338
- * await eventBus.dispatch(new AddEvent({ a: 1, b: 2,}));
339
- * await unsubscribe();
340
- * ```
341
- */
342
195
  subscribe(event, listener) {
343
196
  return this.subscribeMany([event], listener);
344
197
  }
345
- /**
346
- * @example
347
- * ```ts
348
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
349
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
350
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
351
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
352
- *
353
- * const eventBus: IGroupableEventBus = new EventBus({
354
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
355
- * });
356
- *
357
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
358
- * class SubEvent extends BaseEvent<{ c: number, d: number }> {}
359
- *
360
- * const unsubscribe = await eventBus.subscribeMany([AddEvent, SubEvent], event => {
361
- * console.log(event);
362
- * });
363
- * await eventBus.dispatchMany([
364
- * new AddEvent({ a: 1, b: 2 }),
365
- * new SubEvent({ c: 1, d: 2 }),
366
- * ]);
367
- * await unsubscribe();
368
- * ```
369
- */
370
198
  subscribeMany(events, listener) {
371
- return this.createLayPromise(async () => {
199
+ return this.createLazyPromise(async () => {
372
200
  await this.addListenerMany(events, listener);
373
201
  const unsubscribe = () => {
374
- return this.createLayPromise(async () => {
202
+ return this.createLazyPromise(async () => {
375
203
  await this.removeListenerMany(events, listener);
376
204
  });
377
205
  };
378
206
  return unsubscribe;
379
207
  });
380
208
  }
381
- /**
382
- * @example
383
- * ```ts
384
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
385
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
386
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
387
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
388
- *
389
- * const eventBus: IGroupableEventBus = new EventBus({
390
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
391
- * });
392
- *
393
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
394
- * class SubEvent extends BaseEvent<{ c: number, d: number }> {}
395
- *
396
- * await eventBus.dispatchMany([
397
- * new AddEvent({ a: 1, b: 2 }),
398
- * new SubEvent({ c: 1, d: 2 }),
399
- * ]);
400
- * ```
401
- */
402
209
  dispatchMany(events) {
403
- return this.createLayPromise(async () => {
210
+ return this.createLazyPromise(async () => {
404
211
  try {
405
- const promises = [];
406
- for (const event of events) {
407
- promises.push(this.adapter.dispatch(getConstructorName(event), event));
408
- }
212
+ const adapter = await this.adapterPromise;
213
+ const promises = events
214
+ .map((event) => ({
215
+ eventName: getConstructorName(event),
216
+ event,
217
+ }))
218
+ .map(({ event, eventName }) => ({
219
+ eventName: this.keyPrefixer.create(eventName),
220
+ event,
221
+ }))
222
+ .map(({ event, eventName }) => ({
223
+ eventName: eventName.prefixed,
224
+ event,
225
+ }))
226
+ .map(({ eventName, event }) => adapter.dispatch(eventName, event));
409
227
  await Promise.all(promises);
410
228
  }
411
229
  catch (error) {
412
- throw new UnableToDispatchEventBusError(`Events of types "${events.map((event) => getConstructorName(event)).join(", ")}" could not be dispatched`, error);
230
+ throw new UnableToDispatchEventBusError(`Events of type${events.length === 0 ? "" : "s"} "${events.map((event) => getConstructorName(event)).join(", ")}" could not be dispatched`, error);
413
231
  }
414
232
  });
415
233
  }
416
- /**
417
- * @example
418
- * ```ts
419
- * import type { IGroupableEventBus } from "@daiso-tech/core/event-bus/contracts";
420
- * import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
421
- * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
422
- * import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
423
- *
424
- * const eventBus: IGroupableEventBus = new EventBus({
425
- * adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
426
- * });
427
- *
428
- * class AddEvent extends BaseEvent<{ a: number, b: number }> {}
429
- *
430
- * await eventBus.dispatch(new AddEvent({ a: 1, b: 2,}));
431
- * ```
432
- */
433
234
  dispatch(event) {
434
- return this.createLayPromise(async () => {
435
- try {
436
- await this.adapter.dispatch(getConstructorName(event), event);
437
- }
438
- catch (error) {
439
- throw new UnableToDispatchEventBusError(`Event of type "${String(getConstructorName(event))}" could not be dispatched`, error);
440
- }
235
+ return this.createLazyPromise(async () => {
236
+ await this.dispatchMany([event]);
441
237
  });
442
238
  }
443
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../../../src/event-bus/implementations/derivables/event-bus/event-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../../../src/event-bus/implementations/derivables/event-bus/event-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { type Invokable, type InvokableFn } from "../../../../utilities/_module-exports.js";
5
+ /**
6
+ * @internal
7
+ */
8
+ export declare class ListenerStore {
9
+ private readonly store;
10
+ constructor(store?: Map<string, Map<Invokable<any, any>, InvokableFn<any, any>>>);
11
+ getOrAdd<TInput, TOutput>(eventName: string, listener: Invokable<TInput, TOutput>): InvokableFn<TInput, TOutput>;
12
+ getAndRemove<TInput, TOutput>(eventName: string, listener: Invokable<TInput, TOutput>): InvokableFn<TInput, TOutput> | null;
13
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @module EventBus
3
+ */
4
+ import { resolveInvokable, } from "../../../../utilities/_module-exports.js";
5
+ /**
6
+ * @internal
7
+ */
8
+ export class ListenerStore {
9
+ store;
10
+ constructor(store = new Map()) {
11
+ this.store = store;
12
+ }
13
+ getOrAdd(eventName, listener) {
14
+ let eventMap = this.store.get(eventName);
15
+ if (eventMap === undefined) {
16
+ eventMap = new Map();
17
+ this.store.set(eventName, eventMap);
18
+ }
19
+ let listenerFn = eventMap.get(listener);
20
+ if (listenerFn === undefined) {
21
+ listenerFn = resolveInvokable(listener);
22
+ eventMap.set(listener, listenerFn);
23
+ }
24
+ return listenerFn;
25
+ }
26
+ getAndRemove(eventName, listener) {
27
+ const eventMap = this.store.get(eventName);
28
+ if (eventMap === undefined) {
29
+ return null;
30
+ }
31
+ const listenerFn = eventMap.get(listener);
32
+ if (listenerFn === undefined) {
33
+ return null;
34
+ }
35
+ eventMap.delete(listener);
36
+ if (eventMap.size === 0) {
37
+ this.store.delete(eventName);
38
+ }
39
+ return listenerFn;
40
+ }
41
+ }
42
+ //# sourceMappingURL=listener-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener-store.js","sourceRoot":"","sources":["../../../../../src/event-bus/implementations/derivables/event-bus/listener-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,gBAAgB,GAGnB,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,MAAM,OAAO,aAAa;IAED;IADrB,YACqB,QAAQ,IAAI,GAAG,EAG7B;QAHc,UAAK,GAAL,KAAK,CAGnB;IACJ,CAAC;IAEJ,QAAQ,CACJ,SAAiB,EACjB,QAAoC;QAEpC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,YAAY,CACR,SAAiB,EACjB,QAAoC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ"}