@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
@@ -1,13 +1,14 @@
1
- import { KeyNotFoundCacheError, TypeCacheError, } from "../../../cache/contracts/_module";
1
+ import { KeyNotFoundCacheError, KeyNotFoundCacheEvent, KeyFoundCacheEvent, TypeCacheError, KeyAddedCacheEvent, KeyUpdatedCacheEvent, KeyRemovedCacheEvent, KeysClearedCacheEvent, KeyIncrementedCacheEvent, KeyDecrementedCacheEvent, } from "../../../cache/contracts/_module";
2
2
  import { TimeSpan } from "../../../utilities/_module";
3
- import { delay } from "../../../async/_module";
3
+ import { delay, LazyPromise } from "../../../async/_module";
4
4
  export function cacheTestSuite(settings) {
5
- const { expect, test, createCacheA, createCacheB, describe, beforeEach } = settings;
5
+ const { expect, test, createCache, describe, beforeEach } = settings;
6
6
  let cacheA;
7
7
  let cacheB;
8
8
  beforeEach(async () => {
9
- cacheA = await createCacheA();
10
- cacheB = await createCacheB();
9
+ const cache = await createCache();
10
+ cacheA = cache;
11
+ cacheB = cache.withGroup("b");
11
12
  });
12
13
  describe("Api tests:", () => {
13
14
  const TTL = TimeSpan.fromMilliseconds(50);
@@ -153,32 +154,40 @@ export function cacheTestSuite(settings) {
153
154
  expect(await cacheA.getOr("a", -1)).toBe(1);
154
155
  });
155
156
  describe("Should return default value when key doesnt exists", () => {
156
- test("Eager", async () => {
157
+ test("Value", async () => {
157
158
  expect(await cacheA.getOr("a", -1)).toBe(-1);
158
159
  });
159
- test("Lazy", async () => {
160
+ test("Function", async () => {
160
161
  expect(await cacheA.getOr("a", () => -1)).toBe(-1);
161
162
  });
162
- test("Async lazy", async () => {
163
+ test("Async function", async () => {
163
164
  expect(await cacheA.getOr("a", () => Promise.resolve(-1))).toBe(-1);
164
165
  });
166
+ test("LazyPromise", async () => {
167
+ expect(await cacheA.getOr("a", new LazyPromise(() => Promise.resolve(-1)))).toBe(-1);
168
+ });
165
169
  });
166
170
  describe("Should return default value when key is expired", () => {
167
- test("Eager", async () => {
171
+ test("Value", async () => {
168
172
  await cacheA.add("a", 1, TTL);
169
173
  await delay(TTL);
170
174
  expect(await cacheA.getOr("a", -1)).toBe(-1);
171
175
  });
172
- test("Lazy", async () => {
176
+ test("Function", async () => {
173
177
  await cacheA.add("a", 1, TTL);
174
178
  await delay(TTL);
175
179
  expect(await cacheA.getOr("a", () => -1)).toBe(-1);
176
180
  });
177
- test("Async lazy", async () => {
181
+ test("Async function", async () => {
178
182
  await cacheA.add("a", 1, TTL);
179
183
  await delay(TTL);
180
184
  expect(await cacheA.getOr("a", () => Promise.resolve(-1))).toBe(-1);
181
185
  });
186
+ test("LazyPromise", async () => {
187
+ await cacheA.add("a", 1, TTL);
188
+ await delay(TTL);
189
+ expect(await cacheA.getOr("a", new LazyPromise(() => Promise.resolve(-1)))).toBe(-1);
190
+ });
182
191
  });
183
192
  });
184
193
  describe("method: getOrFail", () => {
@@ -207,19 +216,19 @@ export function cacheTestSuite(settings) {
207
216
  });
208
217
  });
209
218
  describe("Should return only default values when all keys doesnt exists", () => {
210
- test("Eager", async () => {
219
+ test("Value", async () => {
211
220
  expect(await cacheA.getOrMany({ a: -1, b: -1 })).toEqual({
212
221
  a: -1,
213
222
  b: -1,
214
223
  });
215
224
  });
216
- test("Lazy", async () => {
225
+ test("Function", async () => {
217
226
  expect(await cacheA.getOrMany({ a: () => -1, b: () => -1 })).toEqual({
218
227
  a: -1,
219
228
  b: -1,
220
229
  });
221
230
  });
222
- test("Async lazy", async () => {
231
+ test("Async function", async () => {
223
232
  expect(await cacheA.getOrMany({
224
233
  a: () => Promise.resolve(-1),
225
234
  b: () => Promise.resolve(-1),
@@ -228,9 +237,18 @@ export function cacheTestSuite(settings) {
228
237
  b: -1,
229
238
  });
230
239
  });
240
+ test("LazyPromise", async () => {
241
+ expect(await cacheA.getOrMany({
242
+ a: new LazyPromise(() => Promise.resolve(-1)),
243
+ b: new LazyPromise(() => Promise.resolve(-1)),
244
+ })).toEqual({
245
+ a: -1,
246
+ b: -1,
247
+ });
248
+ });
231
249
  });
232
250
  describe("Should return default value when key is expired", () => {
233
- test("Eager", async () => {
251
+ test("Value", async () => {
234
252
  await cacheA.add("a", 1, TTL);
235
253
  await delay(TTL);
236
254
  expect(await cacheA.getOrMany({
@@ -239,7 +257,7 @@ export function cacheTestSuite(settings) {
239
257
  a: -1,
240
258
  });
241
259
  });
242
- test("Lazy", async () => {
260
+ test("Function", async () => {
243
261
  await cacheA.add("a", 1, TTL);
244
262
  await delay(TTL);
245
263
  expect(await cacheA.getOrMany({
@@ -248,7 +266,7 @@ export function cacheTestSuite(settings) {
248
266
  a: -1,
249
267
  });
250
268
  });
251
- test("Async lazy", async () => {
269
+ test("Async function", async () => {
252
270
  await cacheA.add("a", 1, TTL);
253
271
  await delay(TTL);
254
272
  expect(await cacheA.getOrMany({
@@ -257,6 +275,15 @@ export function cacheTestSuite(settings) {
257
275
  a: -1,
258
276
  });
259
277
  });
278
+ test("LazyPromise", async () => {
279
+ await cacheA.add("a", 1, TTL);
280
+ await delay(TTL);
281
+ expect(await cacheA.getOrMany({
282
+ a: new LazyPromise(() => Promise.resolve(-1)),
283
+ })).toEqual({
284
+ a: -1,
285
+ });
286
+ });
260
287
  });
261
288
  test("Should return values and default values when some keys exists", async () => {
262
289
  await cacheA.add("a", 1);
@@ -680,38 +707,48 @@ export function cacheTestSuite(settings) {
680
707
  expect(await cacheA.getOrAdd("a", -1)).toBe(1);
681
708
  });
682
709
  describe("Should persist insertion when key doesnt exists", () => {
683
- test("Eager", async () => {
710
+ test("Value", async () => {
684
711
  await cacheA.getOrAdd("a", -1);
685
712
  expect(await cacheA.get("a")).toBe(-1);
686
713
  });
687
- test("Lazy", async () => {
714
+ test("Function", async () => {
688
715
  await cacheA.getOrAdd("a", () => -1);
689
716
  expect(await cacheA.get("a")).toBe(-1);
690
717
  });
691
- test("Async lazy", async () => {
718
+ test("Async function", async () => {
692
719
  await cacheA.getOrAdd("a", () => Promise.resolve(-1));
693
720
  expect(await cacheA.get("a")).toBe(-1);
694
721
  });
722
+ test("LazyPromise", async () => {
723
+ await cacheA.getOrAdd("a", new LazyPromise(() => Promise.resolve(-1)));
724
+ expect(await cacheA.get("a")).toBe(-1);
725
+ });
695
726
  });
696
727
  describe("Should persist insertion when key is expired", () => {
697
- test("Eager", async () => {
728
+ test("Value", async () => {
698
729
  await cacheA.add("a", 1, TTL);
699
730
  await delay(TTL);
700
731
  await cacheA.getOrAdd("a", -1);
701
732
  expect(await cacheA.get("a")).toBe(-1);
702
733
  });
703
- test("Lazy", async () => {
734
+ test("Function", async () => {
704
735
  await cacheA.add("a", 1, TTL);
705
736
  await delay(TTL);
706
737
  await cacheA.getOrAdd("a", () => -1);
707
738
  expect(await cacheA.get("a")).toBe(-1);
708
739
  });
709
- test("Async lazy", async () => {
740
+ test("Async function", async () => {
710
741
  await cacheA.add("a", 1, TTL);
711
742
  await delay(TTL);
712
743
  await cacheA.getOrAdd("a", () => Promise.resolve(-1));
713
744
  expect(await cacheA.get("a")).toBe(-1);
714
745
  });
746
+ test("LazyPromise", async () => {
747
+ await cacheA.add("a", 1, TTL);
748
+ await delay(TTL);
749
+ await cacheA.getOrAdd("a", new LazyPromise(() => Promise.resolve(-1)));
750
+ expect(await cacheA.get("a")).toBe(-1);
751
+ });
715
752
  });
716
753
  });
717
754
  describe("method: increment", () => {
@@ -802,6 +839,587 @@ export function cacheTestSuite(settings) {
802
839
  });
803
840
  });
804
841
  });
842
+ describe("Event tests:", () => {
843
+ const delayTime = TimeSpan.fromMilliseconds(50);
844
+ describe("method: exists", () => {
845
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
846
+ let event_ = null;
847
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
848
+ event_ = event;
849
+ });
850
+ await cacheA.exists("a");
851
+ await delay(delayTime);
852
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
853
+ expect(event_?.fields.key).toBe("a");
854
+ await unsubscribe();
855
+ });
856
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
857
+ let event_ = null;
858
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
859
+ event_ = event;
860
+ });
861
+ await cacheA.add("a", 1);
862
+ await cacheA.exists("a");
863
+ await delay(delayTime);
864
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
865
+ expect(event_?.fields.key).toBe("a");
866
+ expect(event_?.fields.value).toBe(1);
867
+ await unsubscribe();
868
+ });
869
+ });
870
+ describe("method: existsMany", () => {
871
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
872
+ let event_ = null;
873
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
874
+ event_ = event;
875
+ });
876
+ await cacheA.existsMany(["a"]);
877
+ await delay(delayTime);
878
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
879
+ expect(event_?.fields.key).toBe("a");
880
+ await unsubscribe();
881
+ });
882
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
883
+ let event_ = null;
884
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
885
+ event_ = event;
886
+ });
887
+ await cacheA.add("a", 1);
888
+ await cacheA.existsMany(["a"]);
889
+ await delay(delayTime);
890
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
891
+ expect(event_?.fields.key).toBe("a");
892
+ expect(event_?.fields.value).toBe(1);
893
+ await unsubscribe();
894
+ });
895
+ });
896
+ describe("method: missing", () => {
897
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
898
+ let event_ = null;
899
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
900
+ event_ = event;
901
+ });
902
+ await cacheA.missing("a");
903
+ await delay(delayTime);
904
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
905
+ expect(event_?.fields.key).toBe("a");
906
+ await unsubscribe();
907
+ });
908
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
909
+ let event_ = null;
910
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
911
+ event_ = event;
912
+ });
913
+ await cacheA.add("a", 1);
914
+ await cacheA.missing("a");
915
+ await delay(delayTime);
916
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
917
+ expect(event_?.fields.key).toBe("a");
918
+ expect(event_?.fields.value).toBe(1);
919
+ await unsubscribe();
920
+ });
921
+ });
922
+ describe("method: missingMany", () => {
923
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
924
+ let event_ = null;
925
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
926
+ event_ = event;
927
+ });
928
+ await cacheA.missingMany(["a"]);
929
+ await delay(delayTime);
930
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
931
+ expect(event_?.fields.key).toBe("a");
932
+ await unsubscribe();
933
+ });
934
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
935
+ let event_ = null;
936
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
937
+ event_ = event;
938
+ });
939
+ await cacheA.add("a", 1);
940
+ await cacheA.missingMany(["a"]);
941
+ await delay(delayTime);
942
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
943
+ expect(event_?.fields.key).toBe("a");
944
+ expect(event_?.fields.value).toBe(1);
945
+ await unsubscribe();
946
+ });
947
+ });
948
+ describe("method: get", () => {
949
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
950
+ let event_ = null;
951
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
952
+ event_ = event;
953
+ });
954
+ await cacheA.get("a");
955
+ await delay(delayTime);
956
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
957
+ expect(event_?.fields.key).toBe("a");
958
+ await unsubscribe();
959
+ });
960
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
961
+ let event_ = null;
962
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
963
+ event_ = event;
964
+ });
965
+ await cacheA.add("a", 1);
966
+ await cacheA.get("a");
967
+ await delay(delayTime);
968
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
969
+ expect(event_?.fields.key).toBe("a");
970
+ expect(event_?.fields.value).toBe(1);
971
+ await unsubscribe();
972
+ });
973
+ });
974
+ describe("method: getMany", () => {
975
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
976
+ let event_ = null;
977
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
978
+ event_ = event;
979
+ });
980
+ await cacheA.getMany(["a"]);
981
+ await delay(delayTime);
982
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
983
+ expect(event_?.fields.key).toBe("a");
984
+ await unsubscribe();
985
+ });
986
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
987
+ let event_ = null;
988
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
989
+ event_ = event;
990
+ });
991
+ await cacheA.add("a", 1);
992
+ await cacheA.getMany(["a"]);
993
+ await delay(delayTime);
994
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
995
+ expect(event_?.fields.key).toBe("a");
996
+ expect(event_?.fields.value).toBe(1);
997
+ await unsubscribe();
998
+ });
999
+ });
1000
+ describe("method: getOr", () => {
1001
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1002
+ let event_ = null;
1003
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1004
+ event_ = event;
1005
+ });
1006
+ await cacheA.getOr("a", 1);
1007
+ await delay(delayTime);
1008
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1009
+ expect(event_?.fields.key).toBe("a");
1010
+ await unsubscribe();
1011
+ });
1012
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1013
+ let event_ = null;
1014
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1015
+ event_ = event;
1016
+ });
1017
+ await cacheA.add("a", 1);
1018
+ await cacheA.getOr("a", 1);
1019
+ await delay(delayTime);
1020
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1021
+ expect(event_?.fields.key).toBe("a");
1022
+ expect(event_?.fields.value).toBe(1);
1023
+ await unsubscribe();
1024
+ });
1025
+ });
1026
+ describe("method: getOrMany", () => {
1027
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1028
+ let event_ = null;
1029
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1030
+ event_ = event;
1031
+ });
1032
+ await cacheA.getOrMany({ a: 1 });
1033
+ await delay(delayTime);
1034
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1035
+ expect(event_?.fields.key).toBe("a");
1036
+ await unsubscribe();
1037
+ });
1038
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1039
+ let event_ = null;
1040
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1041
+ event_ = event;
1042
+ });
1043
+ await cacheA.add("a", 1);
1044
+ await cacheA.getOrMany({ a: 1 });
1045
+ await delay(delayTime);
1046
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1047
+ expect(event_?.fields.key).toBe("a");
1048
+ expect(event_?.fields.value).toBe(1);
1049
+ await unsubscribe();
1050
+ });
1051
+ });
1052
+ describe("method: getOrFail", () => {
1053
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1054
+ let event_ = null;
1055
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1056
+ event_ = event;
1057
+ });
1058
+ try {
1059
+ await cacheA.getOrFail("a");
1060
+ }
1061
+ catch {
1062
+ }
1063
+ await delay(delayTime);
1064
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1065
+ expect(event_?.fields.key).toBe("a");
1066
+ await unsubscribe();
1067
+ });
1068
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1069
+ let event_ = null;
1070
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1071
+ event_ = event;
1072
+ });
1073
+ await cacheA.add("a", 1);
1074
+ await cacheA.getOrFail("a");
1075
+ await delay(delayTime);
1076
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1077
+ expect(event_?.fields.key).toBe("a");
1078
+ expect(event_?.fields.value).toBe(1);
1079
+ await unsubscribe();
1080
+ });
1081
+ });
1082
+ describe("method: add", () => {
1083
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1084
+ let event_ = null;
1085
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1086
+ event_ = event;
1087
+ });
1088
+ const ttl = TimeSpan.fromMilliseconds(20);
1089
+ await cacheA.add("a", 1, ttl);
1090
+ await delay(delayTime);
1091
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1092
+ expect(event_?.fields.key).toBe("a");
1093
+ expect(event_?.fields.value).toBe(1);
1094
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1095
+ await unsubscribe();
1096
+ });
1097
+ });
1098
+ describe("method: addMany", () => {
1099
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1100
+ let event_ = null;
1101
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1102
+ event_ = event;
1103
+ });
1104
+ const ttl = TimeSpan.fromMilliseconds(20);
1105
+ await cacheA.addMany({ a: { value: 1, ttl } });
1106
+ await delay(delayTime);
1107
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1108
+ expect(event_?.fields.key).toBe("a");
1109
+ expect(event_?.fields.value).toBe(1);
1110
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1111
+ await unsubscribe();
1112
+ });
1113
+ });
1114
+ describe("method: update", () => {
1115
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1116
+ let event_ = null;
1117
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1118
+ event_ = event;
1119
+ });
1120
+ await cacheA.add("a", 1);
1121
+ await cacheA.update("a", 2);
1122
+ await delay(delayTime);
1123
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1124
+ expect(event_?.fields.key).toBe("a");
1125
+ expect(event_?.fields.value).toBe(2);
1126
+ await unsubscribe();
1127
+ });
1128
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1129
+ let event_ = null;
1130
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1131
+ event_ = event;
1132
+ });
1133
+ await cacheA.update("a", 2);
1134
+ await delay(delayTime);
1135
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1136
+ expect(event_?.fields.key).toBe("a");
1137
+ await unsubscribe();
1138
+ });
1139
+ });
1140
+ describe("method: updateMany", () => {
1141
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1142
+ let event_ = null;
1143
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1144
+ event_ = event;
1145
+ });
1146
+ await cacheA.add("a", 1);
1147
+ await cacheA.updateMany({ a: 2 });
1148
+ await delay(delayTime);
1149
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1150
+ expect(event_?.fields.key).toBe("a");
1151
+ expect(event_?.fields.value).toBe(2);
1152
+ await unsubscribe();
1153
+ });
1154
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1155
+ let event_ = null;
1156
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1157
+ event_ = event;
1158
+ });
1159
+ await cacheA.updateMany({ a: 2 });
1160
+ await delay(delayTime);
1161
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1162
+ expect(event_?.fields.key).toBe("a");
1163
+ await unsubscribe();
1164
+ });
1165
+ });
1166
+ describe("method: put", () => {
1167
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1168
+ let event_ = null;
1169
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1170
+ event_ = event;
1171
+ });
1172
+ const ttl = TimeSpan.fromMilliseconds(20);
1173
+ await cacheA.put("a", 1, ttl);
1174
+ await delay(delayTime);
1175
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1176
+ expect(event_?.fields.key).toBe("a");
1177
+ expect(event_?.fields.value).toBe(1);
1178
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1179
+ await unsubscribe();
1180
+ });
1181
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1182
+ let event_ = null;
1183
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1184
+ event_ = event;
1185
+ });
1186
+ await cacheA.put("a", 1);
1187
+ await cacheA.put("a", 2);
1188
+ await delay(delayTime);
1189
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1190
+ expect(event_?.fields.key).toBe("a");
1191
+ expect(event_?.fields.value).toBe(2);
1192
+ await unsubscribe();
1193
+ });
1194
+ });
1195
+ describe("method: putMany", () => {
1196
+ test("Should dispatch KeyAddedCacheEvent when key exists", async () => {
1197
+ let event_ = null;
1198
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1199
+ event_ = event;
1200
+ });
1201
+ const ttl = TimeSpan.fromMilliseconds(20);
1202
+ await cacheA.putMany({ a: { value: 1, ttl } });
1203
+ await delay(delayTime);
1204
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1205
+ expect(event_?.fields.key).toBe("a");
1206
+ expect(event_?.fields.value).toBe(1);
1207
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1208
+ await unsubscribe();
1209
+ });
1210
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1211
+ let event_ = null;
1212
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1213
+ event_ = event;
1214
+ });
1215
+ const ttl = TimeSpan.fromMilliseconds(20);
1216
+ await cacheA.putMany({ a: { value: 1, ttl } });
1217
+ await cacheA.putMany({ a: { value: 2, ttl } });
1218
+ await delay(delayTime);
1219
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1220
+ expect(event_?.fields.key).toBe("a");
1221
+ expect(event_?.fields.value).toBe(2);
1222
+ await unsubscribe();
1223
+ });
1224
+ });
1225
+ describe("method: remove", () => {
1226
+ test("Should dispatch KeyRemovedCacheEvent when key exists", async () => {
1227
+ let event_ = null;
1228
+ const unsubscribe = await cacheA.subscribe(KeyRemovedCacheEvent, (event) => {
1229
+ event_ = event;
1230
+ });
1231
+ await cacheA.add("a", 1);
1232
+ await cacheA.remove("a");
1233
+ await delay(delayTime);
1234
+ expect(event_).toBeInstanceOf(KeyRemovedCacheEvent);
1235
+ expect(event_?.fields.key).toBe("a");
1236
+ await unsubscribe();
1237
+ });
1238
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1239
+ let event_ = null;
1240
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1241
+ event_ = event;
1242
+ });
1243
+ await cacheA.remove("a");
1244
+ await delay(delayTime);
1245
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1246
+ expect(event_?.fields.key).toBe("a");
1247
+ await unsubscribe();
1248
+ });
1249
+ });
1250
+ describe("method: removeMany", () => {
1251
+ test("Should dispatch KeyRemovedCacheEvent when key doesnt exists", async () => {
1252
+ let event_ = null;
1253
+ const unsubscribe = await cacheA.subscribe(KeyRemovedCacheEvent, (event) => {
1254
+ event_ = event;
1255
+ });
1256
+ await cacheA.add("a", 1);
1257
+ await cacheA.removeMany(["a"]);
1258
+ await delay(delayTime);
1259
+ expect(event_).toBeInstanceOf(KeyRemovedCacheEvent);
1260
+ expect(event_?.fields.key).toBe("a");
1261
+ await unsubscribe();
1262
+ });
1263
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1264
+ let event_ = null;
1265
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1266
+ event_ = event;
1267
+ });
1268
+ await cacheA.removeMany(["a"]);
1269
+ await delay(delayTime);
1270
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1271
+ expect(event_?.fields.key).toBe("a");
1272
+ await unsubscribe();
1273
+ });
1274
+ });
1275
+ describe("method: getAndRemove", () => {
1276
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1277
+ let event_ = null;
1278
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1279
+ event_ = event;
1280
+ });
1281
+ await cacheA.getAndRemove("a");
1282
+ await delay(delayTime);
1283
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1284
+ expect(event_?.fields.key).toBe("a");
1285
+ await unsubscribe();
1286
+ });
1287
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1288
+ let event_ = null;
1289
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1290
+ event_ = event;
1291
+ });
1292
+ await cacheA.add("a", 1);
1293
+ await cacheA.getAndRemove("a");
1294
+ await delay(delayTime);
1295
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1296
+ expect(event_?.fields.key).toBe("a");
1297
+ expect(event_?.fields.value).toBe(1);
1298
+ await unsubscribe();
1299
+ });
1300
+ test("Should dispatch KeyRemovedCacheEvent when key exists", async () => {
1301
+ let event_ = null;
1302
+ const unsubscribe = await cacheA.subscribe(KeyRemovedCacheEvent, (event) => {
1303
+ event_ = event;
1304
+ });
1305
+ await cacheA.add("a", 1);
1306
+ await cacheA.getAndRemove("a");
1307
+ await delay(delayTime);
1308
+ expect(event_).toBeInstanceOf(KeyRemovedCacheEvent);
1309
+ expect(event_?.fields.key).toBe("a");
1310
+ await unsubscribe();
1311
+ });
1312
+ });
1313
+ describe("method: getOrAdd", () => {
1314
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1315
+ let event_ = null;
1316
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1317
+ event_ = event;
1318
+ });
1319
+ await cacheA.getOrAdd("a", 1);
1320
+ await delay(delayTime);
1321
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1322
+ expect(event_?.fields.key).toBe("a");
1323
+ await unsubscribe();
1324
+ });
1325
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1326
+ let event_ = null;
1327
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1328
+ event_ = event;
1329
+ });
1330
+ await cacheA.add("a", 1);
1331
+ await cacheA.getOrAdd("a", 1);
1332
+ await delay(delayTime);
1333
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1334
+ expect(event_?.fields.key).toBe("a");
1335
+ expect(event_?.fields.value).toBe(1);
1336
+ await unsubscribe();
1337
+ });
1338
+ test("Should dispatch KeyAddedCacheEvent when key exists", async () => {
1339
+ let event_ = null;
1340
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1341
+ event_ = event;
1342
+ });
1343
+ const ttl = TimeSpan.fromMilliseconds(50);
1344
+ await cacheA.getOrAdd("a", 1, ttl);
1345
+ await delay(delayTime);
1346
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1347
+ expect(event_?.fields.key).toBe("a");
1348
+ expect(event_?.fields.value).toBe(1);
1349
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1350
+ await unsubscribe();
1351
+ });
1352
+ });
1353
+ describe("method: increment", () => {
1354
+ test("Should dispatch KeyIncrementedCacheEvent when key exists", async () => {
1355
+ let event_ = null;
1356
+ const unsubscribe = await cacheA.subscribe(KeyIncrementedCacheEvent, (event) => {
1357
+ event_ = event;
1358
+ });
1359
+ await cacheA.add("a", 1);
1360
+ await cacheA.increment("a", 1);
1361
+ await delay(delayTime);
1362
+ expect(event_).toBeInstanceOf(KeyIncrementedCacheEvent);
1363
+ expect(event_?.fields.key).toBe("a");
1364
+ expect(event_?.fields.value).toBe(1);
1365
+ await unsubscribe();
1366
+ });
1367
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1368
+ let event_ = null;
1369
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1370
+ event_ = event;
1371
+ });
1372
+ await cacheA.increment("a", 1);
1373
+ await delay(delayTime);
1374
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1375
+ expect(event_?.fields.key).toBe("a");
1376
+ await unsubscribe();
1377
+ });
1378
+ });
1379
+ describe("method: decrement", () => {
1380
+ test("Should dispatch KeyDecrementedCacheEvent when key exists", async () => {
1381
+ let event_ = null;
1382
+ const unsubscribe = await cacheA.subscribe(KeyDecrementedCacheEvent, (event) => {
1383
+ event_ = event;
1384
+ });
1385
+ await cacheA.add("a", 1);
1386
+ await cacheA.decrement("a", 1);
1387
+ await delay(delayTime);
1388
+ expect(event_).toBeInstanceOf(KeyDecrementedCacheEvent);
1389
+ expect(event_?.fields.key).toBe("a");
1390
+ expect(event_?.fields.value).toBe(1);
1391
+ await unsubscribe();
1392
+ });
1393
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1394
+ let event_ = null;
1395
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1396
+ event_ = event;
1397
+ });
1398
+ await cacheA.decrement("a", 1);
1399
+ await delay(delayTime);
1400
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1401
+ expect(event_?.fields.key).toBe("a");
1402
+ await unsubscribe();
1403
+ });
1404
+ });
1405
+ describe("method: clear", () => {
1406
+ test("Should dispatch KeysClearedCacheEvent when key doesnt exists", async () => {
1407
+ let event_ = null;
1408
+ const unsubscribe = await cacheA.subscribe(KeysClearedCacheEvent, (event) => {
1409
+ event_ = event;
1410
+ });
1411
+ await cacheA.addMany({
1412
+ a: { value: 1 },
1413
+ b: { value: 2 },
1414
+ c: { value: 3 },
1415
+ });
1416
+ await cacheA.clear();
1417
+ await delay(delayTime);
1418
+ expect(event_).toBeInstanceOf(KeysClearedCacheEvent);
1419
+ await unsubscribe();
1420
+ });
1421
+ });
1422
+ });
805
1423
  describe("Group tests:", () => {
806
1424
  test("method: exists", async () => {
807
1425
  await cacheA.put("a", 1);
@@ -1023,6 +1641,96 @@ export function cacheTestSuite(settings) {
1023
1641
  b: 2,
1024
1642
  });
1025
1643
  });
1644
+ test("method: addListener / dispatch", async () => {
1645
+ let result_a = null;
1646
+ await cacheA.addListener(KeyAddedCacheEvent, (event) => {
1647
+ result_a = event;
1648
+ });
1649
+ let result_b = null;
1650
+ await cacheB.addListener(KeyAddedCacheEvent, (event) => {
1651
+ result_b = event;
1652
+ });
1653
+ await cacheA.add("a", 1);
1654
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1655
+ expect(result_b).toBeNull();
1656
+ });
1657
+ test("method: addListenerMany / dispatch", async () => {
1658
+ let result_a = null;
1659
+ await cacheA.addListenerMany([KeyAddedCacheEvent], (event) => {
1660
+ result_a = event;
1661
+ });
1662
+ let result_b = null;
1663
+ await cacheB.addListenerMany([KeyAddedCacheEvent], (event) => {
1664
+ result_b = event;
1665
+ });
1666
+ await cacheA.add("a", 1);
1667
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1668
+ expect(result_b).toBeNull();
1669
+ });
1670
+ test("method: removeListener / addListener / dispatch", async () => {
1671
+ let result_a = null;
1672
+ await cacheA.addListener(KeyAddedCacheEvent, (event) => {
1673
+ result_a = event;
1674
+ });
1675
+ let result_b = null;
1676
+ const listenerB = (event) => {
1677
+ result_b = event;
1678
+ };
1679
+ await cacheB.addListener(KeyAddedCacheEvent, listenerB);
1680
+ await cacheB.removeListener(KeyAddedCacheEvent, listenerB);
1681
+ await cacheA.add("a", 1);
1682
+ await cacheB.add("a", 1);
1683
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1684
+ expect(result_b).toBeNull();
1685
+ });
1686
+ test("method: removeListenerMany / addListener / dispatch", async () => {
1687
+ let result_a = null;
1688
+ await cacheA.addListener(KeyAddedCacheEvent, (event) => {
1689
+ result_a = event;
1690
+ });
1691
+ let result_b = null;
1692
+ const listenerB = (event) => {
1693
+ result_b = event;
1694
+ };
1695
+ await cacheB.addListener(KeyAddedCacheEvent, listenerB);
1696
+ await cacheB.removeListenerMany([KeyAddedCacheEvent], listenerB);
1697
+ await cacheA.add("a", 1);
1698
+ await cacheB.add("a", 1);
1699
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1700
+ expect(result_b).toBeNull();
1701
+ });
1702
+ test("method: subscribe / dispatch", async () => {
1703
+ let result_a = null;
1704
+ await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1705
+ result_a = event;
1706
+ });
1707
+ let result_b = null;
1708
+ const listenerB = (event) => {
1709
+ result_b = event;
1710
+ };
1711
+ const unsubscribe = await cacheB.subscribe(KeyAddedCacheEvent, listenerB);
1712
+ await unsubscribe();
1713
+ await cacheA.add("a", 1);
1714
+ await cacheB.add("a", 1);
1715
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1716
+ expect(result_b).toBeNull();
1717
+ });
1718
+ test("method: subscribeMany / dispatch", async () => {
1719
+ let result_a = null;
1720
+ await cacheA.subscribeMany([KeyAddedCacheEvent], (event) => {
1721
+ result_a = event;
1722
+ });
1723
+ let result_b = null;
1724
+ const listenerB = (event) => {
1725
+ result_b = event;
1726
+ };
1727
+ const unsubscribe = await cacheB.subscribeMany([KeyAddedCacheEvent], listenerB);
1728
+ await unsubscribe();
1729
+ await cacheA.add("a", 1);
1730
+ await cacheB.add("a", 1);
1731
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1732
+ expect(result_b).toBeNull();
1733
+ });
1026
1734
  });
1027
1735
  }
1028
1736
  //# sourceMappingURL=cache.test-suite.js.map