@daiso-tech/core 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/dist/cjs/_module.js +2 -0
  2. package/dist/cjs/_module.js.map +1 -1
  3. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js +16 -9
  4. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  5. package/dist/cjs/cache/contracts/cache.events.js +13 -139
  6. package/dist/cjs/cache/contracts/cache.events.js.map +1 -1
  7. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js +5 -24
  8. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  9. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js +729 -21
  10. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  11. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +1 -21
  12. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  13. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js +0 -1
  14. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  15. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +0 -7
  16. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  17. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js +0 -1
  18. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  19. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +3 -11
  20. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  21. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js +0 -1
  22. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  23. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +6 -28
  24. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  25. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +0 -3
  26. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  27. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js +0 -1
  28. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  29. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +5 -13
  30. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  31. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js +0 -1
  32. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  33. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +0 -7
  34. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  35. package/dist/cjs/cache/implementations/derivables/cache/_module.js +0 -1
  36. package/dist/cjs/cache/implementations/derivables/cache/_module.js.map +1 -1
  37. package/dist/cjs/cache/implementations/derivables/cache/cache.js +215 -103
  38. package/dist/cjs/cache/implementations/derivables/cache/cache.js.map +1 -1
  39. package/dist/cjs/cache/implementations/derivables/cache-factory/_module.js +0 -1
  40. package/dist/cjs/cache/implementations/derivables/cache-factory/_module.js.map +1 -1
  41. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory.js +0 -4
  42. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  43. package/dist/cjs/event-bus/contracts/_shared.js +3 -2
  44. package/dist/cjs/event-bus/contracts/_shared.js.map +1 -1
  45. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +4 -15
  46. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  47. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js +6 -27
  48. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  49. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +0 -1
  50. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  51. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +0 -4
  52. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  53. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +0 -1
  54. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  55. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +0 -4
  56. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  57. package/dist/cjs/event-bus/implementations/derivables/event-bus/_module.js +0 -1
  58. package/dist/cjs/event-bus/implementations/derivables/event-bus/_module.js.map +1 -1
  59. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus.js +0 -4
  60. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  61. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/_module.js +0 -1
  62. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/_module.js.map +1 -1
  63. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +0 -4
  64. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  65. package/dist/cjs/lock/contracts/_module.js +24 -0
  66. package/dist/cjs/lock/contracts/_module.js.map +1 -0
  67. package/dist/cjs/lock/contracts/database-lock-adapter.contract.js +3 -0
  68. package/dist/cjs/lock/contracts/database-lock-adapter.contract.js.map +1 -0
  69. package/dist/cjs/lock/contracts/lock-adapter.contract.js +3 -0
  70. package/dist/cjs/lock/contracts/lock-adapter.contract.js.map +1 -0
  71. package/dist/cjs/lock/contracts/lock-provider-factory.contract.js +3 -0
  72. package/dist/cjs/lock/contracts/lock-provider-factory.contract.js.map +1 -0
  73. package/dist/cjs/lock/contracts/lock-provider.contract.js +3 -0
  74. package/dist/cjs/lock/contracts/lock-provider.contract.js.map +1 -0
  75. package/dist/cjs/lock/contracts/lock.contract.js +3 -0
  76. package/dist/cjs/lock/contracts/lock.contract.js.map +1 -0
  77. package/dist/cjs/lock/contracts/lock.errors.js +131 -0
  78. package/dist/cjs/lock/contracts/lock.errors.js.map +1 -0
  79. package/dist/cjs/lock/contracts/lock.events.js +44 -0
  80. package/dist/cjs/lock/contracts/lock.events.js.map +1 -0
  81. package/dist/cjs/lock/implementations/_module.js +20 -0
  82. package/dist/cjs/lock/implementations/_module.js.map +1 -0
  83. package/dist/cjs/lock/implementations/_shared/_module.js +20 -0
  84. package/dist/cjs/lock/implementations/_shared/_module.js.map +1 -0
  85. package/dist/cjs/lock/implementations/_shared/database-lock-adapter.test-suite.js +285 -0
  86. package/dist/cjs/lock/implementations/_shared/database-lock-adapter.test-suite.js.map +1 -0
  87. package/dist/cjs/lock/implementations/_shared/lock-adapter.test-suite.js +238 -0
  88. package/dist/cjs/lock/implementations/_shared/lock-adapter.test-suite.js.map +1 -0
  89. package/dist/cjs/lock/implementations/_shared/lock-provider.test-suite.js +1841 -0
  90. package/dist/cjs/lock/implementations/_shared/lock-provider.test-suite.js.map +1 -0
  91. package/dist/cjs/lock/implementations/adapters/_module.js +22 -0
  92. package/dist/cjs/lock/implementations/adapters/_module.js.map +1 -0
  93. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/_module.js +18 -0
  94. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/_module.js.map +1 -0
  95. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +126 -0
  96. package/dist/cjs/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -0
  97. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/_module.js +18 -0
  98. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/_module.js.map +1 -0
  99. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +61 -0
  100. package/dist/cjs/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js.map +1 -0
  101. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/_module.js +18 -0
  102. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/_module.js.map +1 -0
  103. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +107 -0
  104. package/dist/cjs/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -0
  105. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/_module.js +18 -0
  106. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/_module.js.map +1 -0
  107. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +148 -0
  108. package/dist/cjs/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -0
  109. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/_module.js +18 -0
  110. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/_module.js.map +1 -0
  111. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +131 -0
  112. package/dist/cjs/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -0
  113. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/_module.js +18 -0
  114. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/_module.js.map +1 -0
  115. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +60 -0
  116. package/dist/cjs/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +1 -0
  117. package/dist/cjs/lock/implementations/derivables/_module.js +19 -0
  118. package/dist/cjs/lock/implementations/derivables/_module.js.map +1 -0
  119. package/dist/cjs/lock/implementations/derivables/lock-provider/_module.js +18 -0
  120. package/dist/cjs/lock/implementations/derivables/lock-provider/_module.js.map +1 -0
  121. package/dist/cjs/lock/implementations/derivables/lock-provider/database-lock-adapter.js +80 -0
  122. package/dist/cjs/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -0
  123. package/dist/cjs/lock/implementations/derivables/lock-provider/lock-provider.js +162 -0
  124. package/dist/cjs/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -0
  125. package/dist/cjs/lock/implementations/derivables/lock-provider/lock.js +306 -0
  126. package/dist/cjs/lock/implementations/derivables/lock-provider/lock.js.map +1 -0
  127. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/_module.js +18 -0
  128. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/_module.js.map +1 -0
  129. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +78 -0
  130. package/dist/cjs/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -0
  131. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js +3 -0
  132. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js.map +1 -1
  133. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js +15 -0
  134. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  135. package/dist/cjs/utilities/contracts/_module.js +1 -0
  136. package/dist/cjs/utilities/contracts/_module.js.map +1 -1
  137. package/dist/cjs/utilities/contracts/serde-registrable.contract.js +3 -0
  138. package/dist/cjs/utilities/contracts/serde-registrable.contract.js.map +1 -0
  139. package/dist/cjs/utilities/functions.js +4 -0
  140. package/dist/cjs/utilities/functions.js.map +1 -1
  141. package/dist/esm/_module.js +2 -0
  142. package/dist/esm/_module.js.map +1 -1
  143. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +16 -9
  144. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  145. package/dist/esm/cache/contracts/cache.events.js +11 -138
  146. package/dist/esm/cache/contracts/cache.events.js.map +1 -1
  147. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js +5 -24
  148. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  149. package/dist/esm/cache/implementations/_shared/cache.test-suite.js +731 -23
  150. package/dist/esm/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  151. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +1 -21
  152. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  153. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js +0 -1
  154. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
  155. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +0 -7
  156. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  157. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js +0 -1
  158. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
  159. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +3 -11
  160. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  161. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js +0 -1
  162. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
  163. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +6 -28
  164. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  165. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +0 -3
  166. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  167. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js +0 -1
  168. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
  169. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +5 -13
  170. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  171. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js +0 -1
  172. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
  173. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +0 -7
  174. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  175. package/dist/esm/cache/implementations/derivables/cache/_module.js +0 -1
  176. package/dist/esm/cache/implementations/derivables/cache/_module.js.map +1 -1
  177. package/dist/esm/cache/implementations/derivables/cache/cache.js +216 -104
  178. package/dist/esm/cache/implementations/derivables/cache/cache.js.map +1 -1
  179. package/dist/esm/cache/implementations/derivables/cache-factory/_module.js +0 -1
  180. package/dist/esm/cache/implementations/derivables/cache-factory/_module.js.map +1 -1
  181. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory.js +0 -4
  182. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  183. package/dist/esm/event-bus/contracts/_shared.js +3 -2
  184. package/dist/esm/event-bus/contracts/_shared.js.map +1 -1
  185. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +4 -15
  186. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  187. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js +7 -28
  188. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  189. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js +0 -1
  190. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
  191. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +0 -4
  192. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  193. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js +0 -1
  194. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -1
  195. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +0 -4
  196. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  197. package/dist/esm/event-bus/implementations/derivables/event-bus/_module.js +0 -1
  198. package/dist/esm/event-bus/implementations/derivables/event-bus/_module.js.map +1 -1
  199. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus.js +0 -4
  200. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  201. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/_module.js +0 -1
  202. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/_module.js.map +1 -1
  203. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +0 -4
  204. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  205. package/dist/esm/lock/contracts/_module.js +8 -0
  206. package/dist/esm/lock/contracts/_module.js.map +1 -0
  207. package/dist/esm/lock/contracts/database-lock-adapter.contract.js +1 -0
  208. package/dist/esm/lock/contracts/database-lock-adapter.contract.js.map +1 -0
  209. package/dist/esm/lock/contracts/lock-adapter.contract.js +1 -0
  210. package/dist/esm/lock/contracts/lock-adapter.contract.js.map +1 -0
  211. package/dist/esm/lock/contracts/lock-provider-factory.contract.js +1 -0
  212. package/dist/esm/lock/contracts/lock-provider-factory.contract.js.map +1 -0
  213. package/dist/esm/lock/contracts/lock-provider.contract.js +1 -0
  214. package/dist/esm/lock/contracts/lock-provider.contract.js.map +1 -0
  215. package/dist/esm/lock/contracts/lock.contract.js +1 -0
  216. package/dist/esm/lock/contracts/lock.contract.js.map +1 -0
  217. package/dist/esm/lock/contracts/lock.errors.js +120 -0
  218. package/dist/esm/lock/contracts/lock.errors.js.map +1 -0
  219. package/dist/esm/lock/contracts/lock.events.js +32 -0
  220. package/dist/esm/lock/contracts/lock.events.js.map +1 -0
  221. package/dist/esm/lock/implementations/_module.js +4 -0
  222. package/dist/esm/lock/implementations/_module.js.map +1 -0
  223. package/dist/esm/lock/implementations/_shared/_module.js +4 -0
  224. package/dist/esm/lock/implementations/_shared/_module.js.map +1 -0
  225. package/dist/esm/lock/implementations/_shared/database-lock-adapter.test-suite.js +282 -0
  226. package/dist/esm/lock/implementations/_shared/database-lock-adapter.test-suite.js.map +1 -0
  227. package/dist/esm/lock/implementations/_shared/lock-adapter.test-suite.js +235 -0
  228. package/dist/esm/lock/implementations/_shared/lock-adapter.test-suite.js.map +1 -0
  229. package/dist/esm/lock/implementations/_shared/lock-provider.test-suite.js +1838 -0
  230. package/dist/esm/lock/implementations/_shared/lock-provider.test-suite.js.map +1 -0
  231. package/dist/esm/lock/implementations/adapters/_module.js +6 -0
  232. package/dist/esm/lock/implementations/adapters/_module.js.map +1 -0
  233. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/_module.js +2 -0
  234. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/_module.js.map +1 -0
  235. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +122 -0
  236. package/dist/esm/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -0
  237. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/_module.js +2 -0
  238. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/_module.js.map +1 -0
  239. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +57 -0
  240. package/dist/esm/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js.map +1 -0
  241. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/_module.js +2 -0
  242. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/_module.js.map +1 -0
  243. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +103 -0
  244. package/dist/esm/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -0
  245. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/_module.js +2 -0
  246. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/_module.js.map +1 -0
  247. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +144 -0
  248. package/dist/esm/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -0
  249. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/_module.js +2 -0
  250. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/_module.js.map +1 -0
  251. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +127 -0
  252. package/dist/esm/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -0
  253. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/_module.js +2 -0
  254. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/_module.js.map +1 -0
  255. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +56 -0
  256. package/dist/esm/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +1 -0
  257. package/dist/esm/lock/implementations/derivables/_module.js +3 -0
  258. package/dist/esm/lock/implementations/derivables/_module.js.map +1 -0
  259. package/dist/esm/lock/implementations/derivables/lock-provider/_module.js +2 -0
  260. package/dist/esm/lock/implementations/derivables/lock-provider/_module.js.map +1 -0
  261. package/dist/esm/lock/implementations/derivables/lock-provider/database-lock-adapter.js +76 -0
  262. package/dist/esm/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -0
  263. package/dist/esm/lock/implementations/derivables/lock-provider/lock-provider.js +158 -0
  264. package/dist/esm/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -0
  265. package/dist/esm/lock/implementations/derivables/lock-provider/lock.js +302 -0
  266. package/dist/esm/lock/implementations/derivables/lock-provider/lock.js.map +1 -0
  267. package/dist/esm/lock/implementations/derivables/lock-provider-factory/_module.js +2 -0
  268. package/dist/esm/lock/implementations/derivables/lock-provider-factory/_module.js.map +1 -0
  269. package/dist/esm/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +74 -0
  270. package/dist/esm/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -0
  271. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js +3 -0
  272. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js.map +1 -1
  273. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js +15 -0
  274. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  275. package/dist/esm/utilities/contracts/_module.js +1 -0
  276. package/dist/esm/utilities/contracts/_module.js.map +1 -1
  277. package/dist/esm/utilities/contracts/serde-registrable.contract.js +1 -0
  278. package/dist/esm/utilities/contracts/serde-registrable.contract.js.map +1 -0
  279. package/dist/esm/utilities/functions.js +4 -0
  280. package/dist/esm/utilities/functions.js.map +1 -1
  281. package/dist/types/_module.d.ts +2 -0
  282. package/dist/types/async/utilities/lazy-promise/lazy-promise.d.ts +2 -2
  283. package/dist/types/cache/contracts/cache-adapter.contract.d.ts +2 -6
  284. package/dist/types/cache/contracts/cache-factory.contract.d.ts +1 -2
  285. package/dist/types/cache/contracts/cache.contract.d.ts +116 -8
  286. package/dist/types/cache/contracts/cache.events.d.ts +24 -90
  287. package/dist/types/cache/implementations/_shared/cache-adapter.test-suite.d.ts +2 -9
  288. package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +5 -15
  289. package/dist/types/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +0 -1
  290. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/_module.d.ts +0 -1
  291. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +23 -30
  292. package/dist/types/cache/implementations/adapters/memory-cache-adapter/_module.d.ts +0 -1
  293. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +8 -19
  294. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/_module.d.ts +0 -1
  295. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +16 -27
  296. package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +0 -1
  297. package/dist/types/cache/implementations/adapters/redis-cache-adapter/_module.d.ts +0 -1
  298. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +12 -23
  299. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/_module.d.ts +0 -1
  300. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +23 -30
  301. package/dist/types/cache/implementations/derivables/cache/_module.d.ts +0 -1
  302. package/dist/types/cache/implementations/derivables/cache/cache.d.ts +38 -27
  303. package/dist/types/cache/implementations/derivables/cache-factory/_module.d.ts +0 -1
  304. package/dist/types/cache/implementations/derivables/cache-factory/cache-factory.d.ts +60 -26
  305. package/dist/types/collection/contracts/async-collection.contract.d.ts +68 -8
  306. package/dist/types/event-bus/contracts/_shared.d.ts +3 -4
  307. package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +1 -1
  308. package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +5 -24
  309. package/dist/types/event-bus/implementations/_shared/event-bus-adapter.test-suite.d.ts +2 -10
  310. package/dist/types/event-bus/implementations/_shared/event-bus.test-suite.d.ts +3 -13
  311. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/_module.d.ts +0 -1
  312. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +8 -18
  313. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.d.ts +0 -1
  314. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +11 -20
  315. package/dist/types/event-bus/implementations/derivables/event-bus/_module.d.ts +0 -1
  316. package/dist/types/event-bus/implementations/derivables/event-bus/event-bus.d.ts +29 -20
  317. package/dist/types/event-bus/implementations/derivables/event-bus-factory/_module.d.ts +0 -1
  318. package/dist/types/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +49 -46
  319. package/dist/types/lock/contracts/_module.d.ts +7 -0
  320. package/dist/types/lock/contracts/database-lock-adapter.contract.d.ts +49 -0
  321. package/dist/types/lock/contracts/lock-adapter.contract.d.ts +48 -0
  322. package/dist/types/lock/contracts/lock-provider-factory.contract.d.ts +36 -0
  323. package/dist/types/lock/contracts/lock-provider.contract.d.ts +92 -0
  324. package/dist/types/lock/contracts/lock.contract.d.ts +219 -0
  325. package/dist/types/lock/contracts/lock.errors.d.ts +66 -0
  326. package/dist/types/lock/contracts/lock.events.d.ts +83 -0
  327. package/dist/types/lock/implementations/_module.d.ts +3 -0
  328. package/dist/types/lock/implementations/_shared/_module.d.ts +3 -0
  329. package/dist/types/lock/implementations/_shared/database-lock-adapter.test-suite.d.ts +21 -0
  330. package/dist/types/lock/implementations/_shared/lock-adapter.test-suite.d.ts +21 -0
  331. package/dist/types/lock/implementations/_shared/lock-provider.test-suite.d.ts +23 -0
  332. package/dist/types/lock/implementations/adapters/_module.d.ts +5 -0
  333. package/dist/types/lock/implementations/adapters/kysely-lock-adapter/_module.d.ts +1 -0
  334. package/dist/types/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +52 -0
  335. package/dist/types/lock/implementations/adapters/libsql-lock-adapter/_module.d.ts +1 -0
  336. package/dist/types/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.d.ts +58 -0
  337. package/dist/types/lock/implementations/adapters/memory-lock-adapter/_module.d.ts +1 -0
  338. package/dist/types/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +52 -0
  339. package/dist/types/lock/implementations/adapters/mongodb-lock-adapter/_module.d.ts +1 -0
  340. package/dist/types/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +60 -0
  341. package/dist/types/lock/implementations/adapters/redis-lock-adapter/_module.d.ts +1 -0
  342. package/dist/types/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +57 -0
  343. package/dist/types/lock/implementations/adapters/sqlite-lock-adapter/_module.d.ts +1 -0
  344. package/dist/types/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.d.ts +57 -0
  345. package/dist/types/lock/implementations/derivables/_module.d.ts +2 -0
  346. package/dist/types/lock/implementations/derivables/lock-provider/_module.d.ts +1 -0
  347. package/dist/types/lock/implementations/derivables/lock-provider/database-lock-adapter.d.ts +23 -0
  348. package/dist/types/lock/implementations/derivables/lock-provider/lock-provider.d.ts +89 -0
  349. package/dist/types/lock/implementations/derivables/lock-provider/lock.d.ts +73 -0
  350. package/dist/types/lock/implementations/derivables/lock-provider-factory/_module.d.ts +1 -0
  351. package/dist/types/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +98 -0
  352. package/dist/types/serde/contracts/flexible-serde.contract.d.ts +3 -2
  353. package/dist/types/serde/implementations/no-op-serde/no-op-serde.d.ts +2 -1
  354. package/dist/types/serde/implementations/super-json-serde/super-json-serde.d.ts +2 -1
  355. package/dist/types/utilities/contracts/_module.d.ts +1 -0
  356. package/dist/types/utilities/contracts/serde-registrable.contract.d.ts +11 -0
  357. package/dist/types/utilities/types.d.ts +3 -1
  358. package/package.json +5 -3
  359. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +0 -56
  360. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +0 -1
  361. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +0 -26
  362. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +0 -1
  363. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +0 -44
  364. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +0 -1
  365. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +0 -32
  366. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +0 -1
  367. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +0 -56
  368. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +0 -1
  369. package/dist/cjs/cache/implementations/derivables/cache/cache-settings.js +0 -56
  370. package/dist/cjs/cache/implementations/derivables/cache/cache-settings.js.map +0 -1
  371. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory-settings.js +0 -83
  372. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory-settings.js.map +0 -1
  373. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +0 -26
  374. package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +0 -1
  375. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +0 -38
  376. package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +0 -1
  377. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus-settings.js +0 -56
  378. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus-settings.js.map +0 -1
  379. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js +0 -71
  380. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js.map +0 -1
  381. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +0 -52
  382. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +0 -1
  383. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +0 -22
  384. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +0 -1
  385. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +0 -40
  386. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +0 -1
  387. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +0 -28
  388. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +0 -1
  389. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +0 -52
  390. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +0 -1
  391. package/dist/esm/cache/implementations/derivables/cache/cache-settings.js +0 -52
  392. package/dist/esm/cache/implementations/derivables/cache/cache-settings.js.map +0 -1
  393. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory-settings.js +0 -79
  394. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory-settings.js.map +0 -1
  395. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +0 -22
  396. package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +0 -1
  397. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js +0 -34
  398. package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +0 -1
  399. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus-settings.js +0 -52
  400. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus-settings.js.map +0 -1
  401. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js +0 -67
  402. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.js.map +0 -1
  403. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.d.ts +0 -48
  404. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.d.ts +0 -26
  405. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.d.ts +0 -50
  406. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.d.ts +0 -32
  407. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.d.ts +0 -48
  408. package/dist/types/cache/implementations/derivables/cache/cache-settings.d.ts +0 -73
  409. package/dist/types/cache/implementations/derivables/cache-factory/cache-factory-settings.d.ts +0 -108
  410. package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.d.ts +0 -27
  411. package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.d.ts +0 -36
  412. package/dist/types/event-bus/implementations/derivables/event-bus/event-bus-settings.d.ts +0 -62
  413. package/dist/types/event-bus/implementations/derivables/event-bus-factory/event-bus-factory-settings.d.ts +0 -92
@@ -5,12 +5,13 @@ const _module_1 = require("../../../cache/contracts/_module");
5
5
  const _module_2 = require("../../../utilities/_module");
6
6
  const _module_3 = require("../../../async/_module");
7
7
  function cacheTestSuite(settings) {
8
- const { expect, test, createCacheA, createCacheB, describe, beforeEach } = settings;
8
+ const { expect, test, createCache, describe, beforeEach } = settings;
9
9
  let cacheA;
10
10
  let cacheB;
11
11
  beforeEach(async () => {
12
- cacheA = await createCacheA();
13
- cacheB = await createCacheB();
12
+ const cache = await createCache();
13
+ cacheA = cache;
14
+ cacheB = cache.withGroup("b");
14
15
  });
15
16
  describe("Api tests:", () => {
16
17
  const TTL = _module_2.TimeSpan.fromMilliseconds(50);
@@ -156,32 +157,40 @@ function cacheTestSuite(settings) {
156
157
  expect(await cacheA.getOr("a", -1)).toBe(1);
157
158
  });
158
159
  describe("Should return default value when key doesnt exists", () => {
159
- test("Eager", async () => {
160
+ test("Value", async () => {
160
161
  expect(await cacheA.getOr("a", -1)).toBe(-1);
161
162
  });
162
- test("Lazy", async () => {
163
+ test("Function", async () => {
163
164
  expect(await cacheA.getOr("a", () => -1)).toBe(-1);
164
165
  });
165
- test("Async lazy", async () => {
166
+ test("Async function", async () => {
166
167
  expect(await cacheA.getOr("a", () => Promise.resolve(-1))).toBe(-1);
167
168
  });
169
+ test("LazyPromise", async () => {
170
+ expect(await cacheA.getOr("a", new _module_3.LazyPromise(() => Promise.resolve(-1)))).toBe(-1);
171
+ });
168
172
  });
169
173
  describe("Should return default value when key is expired", () => {
170
- test("Eager", async () => {
174
+ test("Value", async () => {
171
175
  await cacheA.add("a", 1, TTL);
172
176
  await (0, _module_3.delay)(TTL);
173
177
  expect(await cacheA.getOr("a", -1)).toBe(-1);
174
178
  });
175
- test("Lazy", async () => {
179
+ test("Function", async () => {
176
180
  await cacheA.add("a", 1, TTL);
177
181
  await (0, _module_3.delay)(TTL);
178
182
  expect(await cacheA.getOr("a", () => -1)).toBe(-1);
179
183
  });
180
- test("Async lazy", async () => {
184
+ test("Async function", async () => {
181
185
  await cacheA.add("a", 1, TTL);
182
186
  await (0, _module_3.delay)(TTL);
183
187
  expect(await cacheA.getOr("a", () => Promise.resolve(-1))).toBe(-1);
184
188
  });
189
+ test("LazyPromise", async () => {
190
+ await cacheA.add("a", 1, TTL);
191
+ await (0, _module_3.delay)(TTL);
192
+ expect(await cacheA.getOr("a", new _module_3.LazyPromise(() => Promise.resolve(-1)))).toBe(-1);
193
+ });
185
194
  });
186
195
  });
187
196
  describe("method: getOrFail", () => {
@@ -210,19 +219,19 @@ function cacheTestSuite(settings) {
210
219
  });
211
220
  });
212
221
  describe("Should return only default values when all keys doesnt exists", () => {
213
- test("Eager", async () => {
222
+ test("Value", async () => {
214
223
  expect(await cacheA.getOrMany({ a: -1, b: -1 })).toEqual({
215
224
  a: -1,
216
225
  b: -1,
217
226
  });
218
227
  });
219
- test("Lazy", async () => {
228
+ test("Function", async () => {
220
229
  expect(await cacheA.getOrMany({ a: () => -1, b: () => -1 })).toEqual({
221
230
  a: -1,
222
231
  b: -1,
223
232
  });
224
233
  });
225
- test("Async lazy", async () => {
234
+ test("Async function", async () => {
226
235
  expect(await cacheA.getOrMany({
227
236
  a: () => Promise.resolve(-1),
228
237
  b: () => Promise.resolve(-1),
@@ -231,9 +240,18 @@ function cacheTestSuite(settings) {
231
240
  b: -1,
232
241
  });
233
242
  });
243
+ test("LazyPromise", async () => {
244
+ expect(await cacheA.getOrMany({
245
+ a: new _module_3.LazyPromise(() => Promise.resolve(-1)),
246
+ b: new _module_3.LazyPromise(() => Promise.resolve(-1)),
247
+ })).toEqual({
248
+ a: -1,
249
+ b: -1,
250
+ });
251
+ });
234
252
  });
235
253
  describe("Should return default value when key is expired", () => {
236
- test("Eager", async () => {
254
+ test("Value", async () => {
237
255
  await cacheA.add("a", 1, TTL);
238
256
  await (0, _module_3.delay)(TTL);
239
257
  expect(await cacheA.getOrMany({
@@ -242,7 +260,7 @@ function cacheTestSuite(settings) {
242
260
  a: -1,
243
261
  });
244
262
  });
245
- test("Lazy", async () => {
263
+ test("Function", async () => {
246
264
  await cacheA.add("a", 1, TTL);
247
265
  await (0, _module_3.delay)(TTL);
248
266
  expect(await cacheA.getOrMany({
@@ -251,7 +269,7 @@ function cacheTestSuite(settings) {
251
269
  a: -1,
252
270
  });
253
271
  });
254
- test("Async lazy", async () => {
272
+ test("Async function", async () => {
255
273
  await cacheA.add("a", 1, TTL);
256
274
  await (0, _module_3.delay)(TTL);
257
275
  expect(await cacheA.getOrMany({
@@ -260,6 +278,15 @@ function cacheTestSuite(settings) {
260
278
  a: -1,
261
279
  });
262
280
  });
281
+ test("LazyPromise", async () => {
282
+ await cacheA.add("a", 1, TTL);
283
+ await (0, _module_3.delay)(TTL);
284
+ expect(await cacheA.getOrMany({
285
+ a: new _module_3.LazyPromise(() => Promise.resolve(-1)),
286
+ })).toEqual({
287
+ a: -1,
288
+ });
289
+ });
263
290
  });
264
291
  test("Should return values and default values when some keys exists", async () => {
265
292
  await cacheA.add("a", 1);
@@ -683,38 +710,48 @@ function cacheTestSuite(settings) {
683
710
  expect(await cacheA.getOrAdd("a", -1)).toBe(1);
684
711
  });
685
712
  describe("Should persist insertion when key doesnt exists", () => {
686
- test("Eager", async () => {
713
+ test("Value", async () => {
687
714
  await cacheA.getOrAdd("a", -1);
688
715
  expect(await cacheA.get("a")).toBe(-1);
689
716
  });
690
- test("Lazy", async () => {
717
+ test("Function", async () => {
691
718
  await cacheA.getOrAdd("a", () => -1);
692
719
  expect(await cacheA.get("a")).toBe(-1);
693
720
  });
694
- test("Async lazy", async () => {
721
+ test("Async function", async () => {
695
722
  await cacheA.getOrAdd("a", () => Promise.resolve(-1));
696
723
  expect(await cacheA.get("a")).toBe(-1);
697
724
  });
725
+ test("LazyPromise", async () => {
726
+ await cacheA.getOrAdd("a", new _module_3.LazyPromise(() => Promise.resolve(-1)));
727
+ expect(await cacheA.get("a")).toBe(-1);
728
+ });
698
729
  });
699
730
  describe("Should persist insertion when key is expired", () => {
700
- test("Eager", async () => {
731
+ test("Value", async () => {
701
732
  await cacheA.add("a", 1, TTL);
702
733
  await (0, _module_3.delay)(TTL);
703
734
  await cacheA.getOrAdd("a", -1);
704
735
  expect(await cacheA.get("a")).toBe(-1);
705
736
  });
706
- test("Lazy", async () => {
737
+ test("Function", async () => {
707
738
  await cacheA.add("a", 1, TTL);
708
739
  await (0, _module_3.delay)(TTL);
709
740
  await cacheA.getOrAdd("a", () => -1);
710
741
  expect(await cacheA.get("a")).toBe(-1);
711
742
  });
712
- test("Async lazy", async () => {
743
+ test("Async function", async () => {
713
744
  await cacheA.add("a", 1, TTL);
714
745
  await (0, _module_3.delay)(TTL);
715
746
  await cacheA.getOrAdd("a", () => Promise.resolve(-1));
716
747
  expect(await cacheA.get("a")).toBe(-1);
717
748
  });
749
+ test("LazyPromise", async () => {
750
+ await cacheA.add("a", 1, TTL);
751
+ await (0, _module_3.delay)(TTL);
752
+ await cacheA.getOrAdd("a", new _module_3.LazyPromise(() => Promise.resolve(-1)));
753
+ expect(await cacheA.get("a")).toBe(-1);
754
+ });
718
755
  });
719
756
  });
720
757
  describe("method: increment", () => {
@@ -805,6 +842,587 @@ function cacheTestSuite(settings) {
805
842
  });
806
843
  });
807
844
  });
845
+ describe("Event tests:", () => {
846
+ const delayTime = _module_2.TimeSpan.fromMilliseconds(50);
847
+ describe("method: exists", () => {
848
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
849
+ let event_ = null;
850
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
851
+ event_ = event;
852
+ });
853
+ await cacheA.exists("a");
854
+ await (0, _module_3.delay)(delayTime);
855
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
856
+ expect(event_?.fields.key).toBe("a");
857
+ await unsubscribe();
858
+ });
859
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
860
+ let event_ = null;
861
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
862
+ event_ = event;
863
+ });
864
+ await cacheA.add("a", 1);
865
+ await cacheA.exists("a");
866
+ await (0, _module_3.delay)(delayTime);
867
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
868
+ expect(event_?.fields.key).toBe("a");
869
+ expect(event_?.fields.value).toBe(1);
870
+ await unsubscribe();
871
+ });
872
+ });
873
+ describe("method: existsMany", () => {
874
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
875
+ let event_ = null;
876
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
877
+ event_ = event;
878
+ });
879
+ await cacheA.existsMany(["a"]);
880
+ await (0, _module_3.delay)(delayTime);
881
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
882
+ expect(event_?.fields.key).toBe("a");
883
+ await unsubscribe();
884
+ });
885
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
886
+ let event_ = null;
887
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
888
+ event_ = event;
889
+ });
890
+ await cacheA.add("a", 1);
891
+ await cacheA.existsMany(["a"]);
892
+ await (0, _module_3.delay)(delayTime);
893
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
894
+ expect(event_?.fields.key).toBe("a");
895
+ expect(event_?.fields.value).toBe(1);
896
+ await unsubscribe();
897
+ });
898
+ });
899
+ describe("method: missing", () => {
900
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
901
+ let event_ = null;
902
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
903
+ event_ = event;
904
+ });
905
+ await cacheA.missing("a");
906
+ await (0, _module_3.delay)(delayTime);
907
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
908
+ expect(event_?.fields.key).toBe("a");
909
+ await unsubscribe();
910
+ });
911
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
912
+ let event_ = null;
913
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
914
+ event_ = event;
915
+ });
916
+ await cacheA.add("a", 1);
917
+ await cacheA.missing("a");
918
+ await (0, _module_3.delay)(delayTime);
919
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
920
+ expect(event_?.fields.key).toBe("a");
921
+ expect(event_?.fields.value).toBe(1);
922
+ await unsubscribe();
923
+ });
924
+ });
925
+ describe("method: missingMany", () => {
926
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
927
+ let event_ = null;
928
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
929
+ event_ = event;
930
+ });
931
+ await cacheA.missingMany(["a"]);
932
+ await (0, _module_3.delay)(delayTime);
933
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
934
+ expect(event_?.fields.key).toBe("a");
935
+ await unsubscribe();
936
+ });
937
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
938
+ let event_ = null;
939
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
940
+ event_ = event;
941
+ });
942
+ await cacheA.add("a", 1);
943
+ await cacheA.missingMany(["a"]);
944
+ await (0, _module_3.delay)(delayTime);
945
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
946
+ expect(event_?.fields.key).toBe("a");
947
+ expect(event_?.fields.value).toBe(1);
948
+ await unsubscribe();
949
+ });
950
+ });
951
+ describe("method: get", () => {
952
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
953
+ let event_ = null;
954
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
955
+ event_ = event;
956
+ });
957
+ await cacheA.get("a");
958
+ await (0, _module_3.delay)(delayTime);
959
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
960
+ expect(event_?.fields.key).toBe("a");
961
+ await unsubscribe();
962
+ });
963
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
964
+ let event_ = null;
965
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
966
+ event_ = event;
967
+ });
968
+ await cacheA.add("a", 1);
969
+ await cacheA.get("a");
970
+ await (0, _module_3.delay)(delayTime);
971
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
972
+ expect(event_?.fields.key).toBe("a");
973
+ expect(event_?.fields.value).toBe(1);
974
+ await unsubscribe();
975
+ });
976
+ });
977
+ describe("method: getMany", () => {
978
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
979
+ let event_ = null;
980
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
981
+ event_ = event;
982
+ });
983
+ await cacheA.getMany(["a"]);
984
+ await (0, _module_3.delay)(delayTime);
985
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
986
+ expect(event_?.fields.key).toBe("a");
987
+ await unsubscribe();
988
+ });
989
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
990
+ let event_ = null;
991
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
992
+ event_ = event;
993
+ });
994
+ await cacheA.add("a", 1);
995
+ await cacheA.getMany(["a"]);
996
+ await (0, _module_3.delay)(delayTime);
997
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
998
+ expect(event_?.fields.key).toBe("a");
999
+ expect(event_?.fields.value).toBe(1);
1000
+ await unsubscribe();
1001
+ });
1002
+ });
1003
+ describe("method: getOr", () => {
1004
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1005
+ let event_ = null;
1006
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1007
+ event_ = event;
1008
+ });
1009
+ await cacheA.getOr("a", 1);
1010
+ await (0, _module_3.delay)(delayTime);
1011
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1012
+ expect(event_?.fields.key).toBe("a");
1013
+ await unsubscribe();
1014
+ });
1015
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1016
+ let event_ = null;
1017
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
1018
+ event_ = event;
1019
+ });
1020
+ await cacheA.add("a", 1);
1021
+ await cacheA.getOr("a", 1);
1022
+ await (0, _module_3.delay)(delayTime);
1023
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
1024
+ expect(event_?.fields.key).toBe("a");
1025
+ expect(event_?.fields.value).toBe(1);
1026
+ await unsubscribe();
1027
+ });
1028
+ });
1029
+ describe("method: getOrMany", () => {
1030
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1031
+ let event_ = null;
1032
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1033
+ event_ = event;
1034
+ });
1035
+ await cacheA.getOrMany({ a: 1 });
1036
+ await (0, _module_3.delay)(delayTime);
1037
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1038
+ expect(event_?.fields.key).toBe("a");
1039
+ await unsubscribe();
1040
+ });
1041
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1042
+ let event_ = null;
1043
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
1044
+ event_ = event;
1045
+ });
1046
+ await cacheA.add("a", 1);
1047
+ await cacheA.getOrMany({ a: 1 });
1048
+ await (0, _module_3.delay)(delayTime);
1049
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
1050
+ expect(event_?.fields.key).toBe("a");
1051
+ expect(event_?.fields.value).toBe(1);
1052
+ await unsubscribe();
1053
+ });
1054
+ });
1055
+ describe("method: getOrFail", () => {
1056
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1057
+ let event_ = null;
1058
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1059
+ event_ = event;
1060
+ });
1061
+ try {
1062
+ await cacheA.getOrFail("a");
1063
+ }
1064
+ catch {
1065
+ }
1066
+ await (0, _module_3.delay)(delayTime);
1067
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1068
+ expect(event_?.fields.key).toBe("a");
1069
+ await unsubscribe();
1070
+ });
1071
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1072
+ let event_ = null;
1073
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
1074
+ event_ = event;
1075
+ });
1076
+ await cacheA.add("a", 1);
1077
+ await cacheA.getOrFail("a");
1078
+ await (0, _module_3.delay)(delayTime);
1079
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
1080
+ expect(event_?.fields.key).toBe("a");
1081
+ expect(event_?.fields.value).toBe(1);
1082
+ await unsubscribe();
1083
+ });
1084
+ });
1085
+ describe("method: add", () => {
1086
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1087
+ let event_ = null;
1088
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyAddedCacheEvent, (event) => {
1089
+ event_ = event;
1090
+ });
1091
+ const ttl = _module_2.TimeSpan.fromMilliseconds(20);
1092
+ await cacheA.add("a", 1, ttl);
1093
+ await (0, _module_3.delay)(delayTime);
1094
+ expect(event_).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1095
+ expect(event_?.fields.key).toBe("a");
1096
+ expect(event_?.fields.value).toBe(1);
1097
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1098
+ await unsubscribe();
1099
+ });
1100
+ });
1101
+ describe("method: addMany", () => {
1102
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1103
+ let event_ = null;
1104
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyAddedCacheEvent, (event) => {
1105
+ event_ = event;
1106
+ });
1107
+ const ttl = _module_2.TimeSpan.fromMilliseconds(20);
1108
+ await cacheA.addMany({ a: { value: 1, ttl } });
1109
+ await (0, _module_3.delay)(delayTime);
1110
+ expect(event_).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1111
+ expect(event_?.fields.key).toBe("a");
1112
+ expect(event_?.fields.value).toBe(1);
1113
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1114
+ await unsubscribe();
1115
+ });
1116
+ });
1117
+ describe("method: update", () => {
1118
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1119
+ let event_ = null;
1120
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyUpdatedCacheEvent, (event) => {
1121
+ event_ = event;
1122
+ });
1123
+ await cacheA.add("a", 1);
1124
+ await cacheA.update("a", 2);
1125
+ await (0, _module_3.delay)(delayTime);
1126
+ expect(event_).toBeInstanceOf(_module_1.KeyUpdatedCacheEvent);
1127
+ expect(event_?.fields.key).toBe("a");
1128
+ expect(event_?.fields.value).toBe(2);
1129
+ await unsubscribe();
1130
+ });
1131
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1132
+ let event_ = null;
1133
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1134
+ event_ = event;
1135
+ });
1136
+ await cacheA.update("a", 2);
1137
+ await (0, _module_3.delay)(delayTime);
1138
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1139
+ expect(event_?.fields.key).toBe("a");
1140
+ await unsubscribe();
1141
+ });
1142
+ });
1143
+ describe("method: updateMany", () => {
1144
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1145
+ let event_ = null;
1146
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyUpdatedCacheEvent, (event) => {
1147
+ event_ = event;
1148
+ });
1149
+ await cacheA.add("a", 1);
1150
+ await cacheA.updateMany({ a: 2 });
1151
+ await (0, _module_3.delay)(delayTime);
1152
+ expect(event_).toBeInstanceOf(_module_1.KeyUpdatedCacheEvent);
1153
+ expect(event_?.fields.key).toBe("a");
1154
+ expect(event_?.fields.value).toBe(2);
1155
+ await unsubscribe();
1156
+ });
1157
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1158
+ let event_ = null;
1159
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1160
+ event_ = event;
1161
+ });
1162
+ await cacheA.updateMany({ a: 2 });
1163
+ await (0, _module_3.delay)(delayTime);
1164
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1165
+ expect(event_?.fields.key).toBe("a");
1166
+ await unsubscribe();
1167
+ });
1168
+ });
1169
+ describe("method: put", () => {
1170
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1171
+ let event_ = null;
1172
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyAddedCacheEvent, (event) => {
1173
+ event_ = event;
1174
+ });
1175
+ const ttl = _module_2.TimeSpan.fromMilliseconds(20);
1176
+ await cacheA.put("a", 1, ttl);
1177
+ await (0, _module_3.delay)(delayTime);
1178
+ expect(event_).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1179
+ expect(event_?.fields.key).toBe("a");
1180
+ expect(event_?.fields.value).toBe(1);
1181
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1182
+ await unsubscribe();
1183
+ });
1184
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1185
+ let event_ = null;
1186
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyUpdatedCacheEvent, (event) => {
1187
+ event_ = event;
1188
+ });
1189
+ await cacheA.put("a", 1);
1190
+ await cacheA.put("a", 2);
1191
+ await (0, _module_3.delay)(delayTime);
1192
+ expect(event_).toBeInstanceOf(_module_1.KeyUpdatedCacheEvent);
1193
+ expect(event_?.fields.key).toBe("a");
1194
+ expect(event_?.fields.value).toBe(2);
1195
+ await unsubscribe();
1196
+ });
1197
+ });
1198
+ describe("method: putMany", () => {
1199
+ test("Should dispatch KeyAddedCacheEvent when key exists", async () => {
1200
+ let event_ = null;
1201
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyAddedCacheEvent, (event) => {
1202
+ event_ = event;
1203
+ });
1204
+ const ttl = _module_2.TimeSpan.fromMilliseconds(20);
1205
+ await cacheA.putMany({ a: { value: 1, ttl } });
1206
+ await (0, _module_3.delay)(delayTime);
1207
+ expect(event_).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1208
+ expect(event_?.fields.key).toBe("a");
1209
+ expect(event_?.fields.value).toBe(1);
1210
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1211
+ await unsubscribe();
1212
+ });
1213
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1214
+ let event_ = null;
1215
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyUpdatedCacheEvent, (event) => {
1216
+ event_ = event;
1217
+ });
1218
+ const ttl = _module_2.TimeSpan.fromMilliseconds(20);
1219
+ await cacheA.putMany({ a: { value: 1, ttl } });
1220
+ await cacheA.putMany({ a: { value: 2, ttl } });
1221
+ await (0, _module_3.delay)(delayTime);
1222
+ expect(event_).toBeInstanceOf(_module_1.KeyUpdatedCacheEvent);
1223
+ expect(event_?.fields.key).toBe("a");
1224
+ expect(event_?.fields.value).toBe(2);
1225
+ await unsubscribe();
1226
+ });
1227
+ });
1228
+ describe("method: remove", () => {
1229
+ test("Should dispatch KeyRemovedCacheEvent when key exists", async () => {
1230
+ let event_ = null;
1231
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyRemovedCacheEvent, (event) => {
1232
+ event_ = event;
1233
+ });
1234
+ await cacheA.add("a", 1);
1235
+ await cacheA.remove("a");
1236
+ await (0, _module_3.delay)(delayTime);
1237
+ expect(event_).toBeInstanceOf(_module_1.KeyRemovedCacheEvent);
1238
+ expect(event_?.fields.key).toBe("a");
1239
+ await unsubscribe();
1240
+ });
1241
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1242
+ let event_ = null;
1243
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1244
+ event_ = event;
1245
+ });
1246
+ await cacheA.remove("a");
1247
+ await (0, _module_3.delay)(delayTime);
1248
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1249
+ expect(event_?.fields.key).toBe("a");
1250
+ await unsubscribe();
1251
+ });
1252
+ });
1253
+ describe("method: removeMany", () => {
1254
+ test("Should dispatch KeyRemovedCacheEvent when key doesnt exists", async () => {
1255
+ let event_ = null;
1256
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyRemovedCacheEvent, (event) => {
1257
+ event_ = event;
1258
+ });
1259
+ await cacheA.add("a", 1);
1260
+ await cacheA.removeMany(["a"]);
1261
+ await (0, _module_3.delay)(delayTime);
1262
+ expect(event_).toBeInstanceOf(_module_1.KeyRemovedCacheEvent);
1263
+ expect(event_?.fields.key).toBe("a");
1264
+ await unsubscribe();
1265
+ });
1266
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1267
+ let event_ = null;
1268
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1269
+ event_ = event;
1270
+ });
1271
+ await cacheA.removeMany(["a"]);
1272
+ await (0, _module_3.delay)(delayTime);
1273
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1274
+ expect(event_?.fields.key).toBe("a");
1275
+ await unsubscribe();
1276
+ });
1277
+ });
1278
+ describe("method: getAndRemove", () => {
1279
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1280
+ let event_ = null;
1281
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1282
+ event_ = event;
1283
+ });
1284
+ await cacheA.getAndRemove("a");
1285
+ await (0, _module_3.delay)(delayTime);
1286
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1287
+ expect(event_?.fields.key).toBe("a");
1288
+ await unsubscribe();
1289
+ });
1290
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1291
+ let event_ = null;
1292
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
1293
+ event_ = event;
1294
+ });
1295
+ await cacheA.add("a", 1);
1296
+ await cacheA.getAndRemove("a");
1297
+ await (0, _module_3.delay)(delayTime);
1298
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
1299
+ expect(event_?.fields.key).toBe("a");
1300
+ expect(event_?.fields.value).toBe(1);
1301
+ await unsubscribe();
1302
+ });
1303
+ test("Should dispatch KeyRemovedCacheEvent when key exists", async () => {
1304
+ let event_ = null;
1305
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyRemovedCacheEvent, (event) => {
1306
+ event_ = event;
1307
+ });
1308
+ await cacheA.add("a", 1);
1309
+ await cacheA.getAndRemove("a");
1310
+ await (0, _module_3.delay)(delayTime);
1311
+ expect(event_).toBeInstanceOf(_module_1.KeyRemovedCacheEvent);
1312
+ expect(event_?.fields.key).toBe("a");
1313
+ await unsubscribe();
1314
+ });
1315
+ });
1316
+ describe("method: getOrAdd", () => {
1317
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1318
+ let event_ = null;
1319
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1320
+ event_ = event;
1321
+ });
1322
+ await cacheA.getOrAdd("a", 1);
1323
+ await (0, _module_3.delay)(delayTime);
1324
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1325
+ expect(event_?.fields.key).toBe("a");
1326
+ await unsubscribe();
1327
+ });
1328
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1329
+ let event_ = null;
1330
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyFoundCacheEvent, (event) => {
1331
+ event_ = event;
1332
+ });
1333
+ await cacheA.add("a", 1);
1334
+ await cacheA.getOrAdd("a", 1);
1335
+ await (0, _module_3.delay)(delayTime);
1336
+ expect(event_).toBeInstanceOf(_module_1.KeyFoundCacheEvent);
1337
+ expect(event_?.fields.key).toBe("a");
1338
+ expect(event_?.fields.value).toBe(1);
1339
+ await unsubscribe();
1340
+ });
1341
+ test("Should dispatch KeyAddedCacheEvent when key exists", async () => {
1342
+ let event_ = null;
1343
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyAddedCacheEvent, (event) => {
1344
+ event_ = event;
1345
+ });
1346
+ const ttl = _module_2.TimeSpan.fromMilliseconds(50);
1347
+ await cacheA.getOrAdd("a", 1, ttl);
1348
+ await (0, _module_3.delay)(delayTime);
1349
+ expect(event_).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1350
+ expect(event_?.fields.key).toBe("a");
1351
+ expect(event_?.fields.value).toBe(1);
1352
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1353
+ await unsubscribe();
1354
+ });
1355
+ });
1356
+ describe("method: increment", () => {
1357
+ test("Should dispatch KeyIncrementedCacheEvent when key exists", async () => {
1358
+ let event_ = null;
1359
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyIncrementedCacheEvent, (event) => {
1360
+ event_ = event;
1361
+ });
1362
+ await cacheA.add("a", 1);
1363
+ await cacheA.increment("a", 1);
1364
+ await (0, _module_3.delay)(delayTime);
1365
+ expect(event_).toBeInstanceOf(_module_1.KeyIncrementedCacheEvent);
1366
+ expect(event_?.fields.key).toBe("a");
1367
+ expect(event_?.fields.value).toBe(1);
1368
+ await unsubscribe();
1369
+ });
1370
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1371
+ let event_ = null;
1372
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1373
+ event_ = event;
1374
+ });
1375
+ await cacheA.increment("a", 1);
1376
+ await (0, _module_3.delay)(delayTime);
1377
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1378
+ expect(event_?.fields.key).toBe("a");
1379
+ await unsubscribe();
1380
+ });
1381
+ });
1382
+ describe("method: decrement", () => {
1383
+ test("Should dispatch KeyDecrementedCacheEvent when key exists", async () => {
1384
+ let event_ = null;
1385
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyDecrementedCacheEvent, (event) => {
1386
+ event_ = event;
1387
+ });
1388
+ await cacheA.add("a", 1);
1389
+ await cacheA.decrement("a", 1);
1390
+ await (0, _module_3.delay)(delayTime);
1391
+ expect(event_).toBeInstanceOf(_module_1.KeyDecrementedCacheEvent);
1392
+ expect(event_?.fields.key).toBe("a");
1393
+ expect(event_?.fields.value).toBe(1);
1394
+ await unsubscribe();
1395
+ });
1396
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1397
+ let event_ = null;
1398
+ const unsubscribe = await cacheA.subscribe(_module_1.KeyNotFoundCacheEvent, (event) => {
1399
+ event_ = event;
1400
+ });
1401
+ await cacheA.decrement("a", 1);
1402
+ await (0, _module_3.delay)(delayTime);
1403
+ expect(event_).toBeInstanceOf(_module_1.KeyNotFoundCacheEvent);
1404
+ expect(event_?.fields.key).toBe("a");
1405
+ await unsubscribe();
1406
+ });
1407
+ });
1408
+ describe("method: clear", () => {
1409
+ test("Should dispatch KeysClearedCacheEvent when key doesnt exists", async () => {
1410
+ let event_ = null;
1411
+ const unsubscribe = await cacheA.subscribe(_module_1.KeysClearedCacheEvent, (event) => {
1412
+ event_ = event;
1413
+ });
1414
+ await cacheA.addMany({
1415
+ a: { value: 1 },
1416
+ b: { value: 2 },
1417
+ c: { value: 3 },
1418
+ });
1419
+ await cacheA.clear();
1420
+ await (0, _module_3.delay)(delayTime);
1421
+ expect(event_).toBeInstanceOf(_module_1.KeysClearedCacheEvent);
1422
+ await unsubscribe();
1423
+ });
1424
+ });
1425
+ });
808
1426
  describe("Group tests:", () => {
809
1427
  test("method: exists", async () => {
810
1428
  await cacheA.put("a", 1);
@@ -1026,6 +1644,96 @@ function cacheTestSuite(settings) {
1026
1644
  b: 2,
1027
1645
  });
1028
1646
  });
1647
+ test("method: addListener / dispatch", async () => {
1648
+ let result_a = null;
1649
+ await cacheA.addListener(_module_1.KeyAddedCacheEvent, (event) => {
1650
+ result_a = event;
1651
+ });
1652
+ let result_b = null;
1653
+ await cacheB.addListener(_module_1.KeyAddedCacheEvent, (event) => {
1654
+ result_b = event;
1655
+ });
1656
+ await cacheA.add("a", 1);
1657
+ expect(result_a).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1658
+ expect(result_b).toBeNull();
1659
+ });
1660
+ test("method: addListenerMany / dispatch", async () => {
1661
+ let result_a = null;
1662
+ await cacheA.addListenerMany([_module_1.KeyAddedCacheEvent], (event) => {
1663
+ result_a = event;
1664
+ });
1665
+ let result_b = null;
1666
+ await cacheB.addListenerMany([_module_1.KeyAddedCacheEvent], (event) => {
1667
+ result_b = event;
1668
+ });
1669
+ await cacheA.add("a", 1);
1670
+ expect(result_a).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1671
+ expect(result_b).toBeNull();
1672
+ });
1673
+ test("method: removeListener / addListener / dispatch", async () => {
1674
+ let result_a = null;
1675
+ await cacheA.addListener(_module_1.KeyAddedCacheEvent, (event) => {
1676
+ result_a = event;
1677
+ });
1678
+ let result_b = null;
1679
+ const listenerB = (event) => {
1680
+ result_b = event;
1681
+ };
1682
+ await cacheB.addListener(_module_1.KeyAddedCacheEvent, listenerB);
1683
+ await cacheB.removeListener(_module_1.KeyAddedCacheEvent, listenerB);
1684
+ await cacheA.add("a", 1);
1685
+ await cacheB.add("a", 1);
1686
+ expect(result_a).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1687
+ expect(result_b).toBeNull();
1688
+ });
1689
+ test("method: removeListenerMany / addListener / dispatch", async () => {
1690
+ let result_a = null;
1691
+ await cacheA.addListener(_module_1.KeyAddedCacheEvent, (event) => {
1692
+ result_a = event;
1693
+ });
1694
+ let result_b = null;
1695
+ const listenerB = (event) => {
1696
+ result_b = event;
1697
+ };
1698
+ await cacheB.addListener(_module_1.KeyAddedCacheEvent, listenerB);
1699
+ await cacheB.removeListenerMany([_module_1.KeyAddedCacheEvent], listenerB);
1700
+ await cacheA.add("a", 1);
1701
+ await cacheB.add("a", 1);
1702
+ expect(result_a).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1703
+ expect(result_b).toBeNull();
1704
+ });
1705
+ test("method: subscribe / dispatch", async () => {
1706
+ let result_a = null;
1707
+ await cacheA.subscribe(_module_1.KeyAddedCacheEvent, (event) => {
1708
+ result_a = event;
1709
+ });
1710
+ let result_b = null;
1711
+ const listenerB = (event) => {
1712
+ result_b = event;
1713
+ };
1714
+ const unsubscribe = await cacheB.subscribe(_module_1.KeyAddedCacheEvent, listenerB);
1715
+ await unsubscribe();
1716
+ await cacheA.add("a", 1);
1717
+ await cacheB.add("a", 1);
1718
+ expect(result_a).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1719
+ expect(result_b).toBeNull();
1720
+ });
1721
+ test("method: subscribeMany / dispatch", async () => {
1722
+ let result_a = null;
1723
+ await cacheA.subscribeMany([_module_1.KeyAddedCacheEvent], (event) => {
1724
+ result_a = event;
1725
+ });
1726
+ let result_b = null;
1727
+ const listenerB = (event) => {
1728
+ result_b = event;
1729
+ };
1730
+ const unsubscribe = await cacheB.subscribeMany([_module_1.KeyAddedCacheEvent], listenerB);
1731
+ await unsubscribe();
1732
+ await cacheA.add("a", 1);
1733
+ await cacheB.add("a", 1);
1734
+ expect(result_a).toBeInstanceOf(_module_1.KeyAddedCacheEvent);
1735
+ expect(result_b).toBeNull();
1736
+ });
1029
1737
  });
1030
1738
  }
1031
1739
  //# sourceMappingURL=cache.test-suite.js.map