equipped 5.2.9 → 5.3.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 (781) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +362 -34
  3. package/dist/cjs/cache/adapters/in-memory/index.cjs +824 -0
  4. package/dist/cjs/cache/adapters/in-memory/index.cjs.map +1 -0
  5. package/dist/cjs/cache/adapters/in-memory/index.min.cjs +4 -0
  6. package/dist/cjs/cache/adapters/in-memory/index.min.cjs.map +1 -0
  7. package/dist/cjs/cache/adapters/redis/index.cjs +844 -0
  8. package/dist/cjs/cache/adapters/redis/index.cjs.map +1 -0
  9. package/dist/cjs/cache/adapters/redis/index.min.cjs +4 -0
  10. package/dist/cjs/cache/adapters/redis/index.min.cjs.map +1 -0
  11. package/dist/cjs/cache/index.cjs +602 -4
  12. package/dist/cjs/cache/index.cjs.map +1 -1
  13. package/dist/cjs/cache/index.min.cjs +3 -1
  14. package/dist/cjs/cache/index.min.cjs.map +1 -1
  15. package/dist/cjs/dbs/adapters/mongodb/index.cjs +1314 -0
  16. package/dist/cjs/dbs/adapters/mongodb/index.cjs.map +1 -0
  17. package/dist/cjs/dbs/adapters/mongodb/index.min.cjs +4 -0
  18. package/dist/cjs/dbs/adapters/mongodb/index.min.cjs.map +1 -0
  19. package/dist/cjs/dbs/index.cjs +965 -6
  20. package/dist/cjs/dbs/index.cjs.map +1 -1
  21. package/dist/cjs/dbs/index.min.cjs +3 -1
  22. package/dist/cjs/dbs/index.min.cjs.map +1 -1
  23. package/dist/cjs/errors/index.cjs +127 -8
  24. package/dist/cjs/errors/index.cjs.map +1 -1
  25. package/dist/cjs/errors/index.min.cjs +1 -1
  26. package/dist/cjs/errors/index.min.cjs.map +1 -1
  27. package/dist/cjs/events/adapters/kafka/index.cjs +845 -0
  28. package/dist/cjs/events/adapters/kafka/index.cjs.map +1 -0
  29. package/dist/cjs/events/adapters/kafka/index.min.cjs +4 -0
  30. package/dist/cjs/events/adapters/kafka/index.min.cjs.map +1 -0
  31. package/dist/cjs/events/adapters/rabbitmq/index.cjs +836 -0
  32. package/dist/cjs/events/adapters/rabbitmq/index.cjs.map +1 -0
  33. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs +4 -0
  34. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs.map +1 -0
  35. package/dist/cjs/events/index.cjs +33 -4
  36. package/dist/cjs/events/index.cjs.map +1 -1
  37. package/dist/cjs/events/index.min.cjs +1 -1
  38. package/dist/cjs/events/index.min.cjs.map +1 -1
  39. package/dist/cjs/index.cjs +588 -1
  40. package/dist/cjs/index.cjs.map +1 -1
  41. package/dist/cjs/index.min.cjs +3 -1
  42. package/dist/cjs/index.min.cjs.map +1 -1
  43. package/dist/cjs/instance/index.cjs +514 -64
  44. package/dist/cjs/instance/index.cjs.map +1 -1
  45. package/dist/cjs/instance/index.min.cjs +3 -3
  46. package/dist/cjs/instance/index.min.cjs.map +1 -1
  47. package/dist/cjs/jobs/adapters/redis/index.cjs +979 -0
  48. package/dist/cjs/jobs/adapters/redis/index.cjs.map +1 -0
  49. package/dist/cjs/jobs/adapters/redis/index.min.cjs +4 -0
  50. package/dist/cjs/jobs/adapters/redis/index.min.cjs.map +1 -0
  51. package/dist/cjs/jobs/index.cjs +55 -2
  52. package/dist/cjs/jobs/index.cjs.map +1 -1
  53. package/dist/cjs/jobs/index.min.cjs +1 -1
  54. package/dist/cjs/jobs/index.min.cjs.map +1 -1
  55. package/dist/cjs/orm/adapters/in-memory/index.cjs +2551 -0
  56. package/dist/cjs/orm/adapters/in-memory/index.cjs.map +1 -0
  57. package/dist/cjs/orm/adapters/in-memory/index.min.cjs +4 -0
  58. package/dist/cjs/orm/adapters/in-memory/index.min.cjs.map +1 -0
  59. package/dist/cjs/orm/adapters/json/index.cjs +3518 -0
  60. package/dist/cjs/orm/adapters/json/index.cjs.map +1 -0
  61. package/dist/cjs/orm/adapters/json/index.min.cjs +4 -0
  62. package/dist/cjs/orm/adapters/json/index.min.cjs.map +1 -0
  63. package/dist/cjs/orm/adapters/mongodb/index.cjs +3299 -0
  64. package/dist/cjs/orm/adapters/mongodb/index.cjs.map +1 -0
  65. package/dist/cjs/orm/adapters/mongodb/index.min.cjs +4 -0
  66. package/dist/cjs/orm/adapters/mongodb/index.min.cjs.map +1 -0
  67. package/dist/cjs/orm/adapters/postgresql/index.cjs +4114 -0
  68. package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -0
  69. package/dist/cjs/orm/adapters/postgresql/index.min.cjs +49 -0
  70. package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -0
  71. package/dist/cjs/orm/index.cjs +9216 -0
  72. package/dist/cjs/orm/index.cjs.map +1 -0
  73. package/dist/cjs/orm/index.min.cjs +4 -0
  74. package/dist/cjs/orm/index.min.cjs.map +1 -0
  75. package/dist/cjs/server/adapters/express/index.cjs +1967 -0
  76. package/dist/cjs/server/adapters/express/index.cjs.map +1 -0
  77. package/dist/cjs/server/adapters/express/index.min.cjs +32 -0
  78. package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -0
  79. package/dist/cjs/server/adapters/fastify/index.cjs +1974 -0
  80. package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -0
  81. package/dist/cjs/server/adapters/fastify/index.min.cjs +32 -0
  82. package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -0
  83. package/dist/cjs/server/index.cjs +1811 -9
  84. package/dist/cjs/server/index.cjs.map +1 -1
  85. package/dist/cjs/server/index.min.cjs +31 -1
  86. package/dist/cjs/server/index.min.cjs.map +1 -1
  87. package/dist/cjs/types/index.cjs +18 -1
  88. package/dist/cjs/types/index.cjs.map +1 -1
  89. package/dist/cjs/types/index.min.cjs +1 -1
  90. package/dist/cjs/types/index.min.cjs.map +1 -1
  91. package/dist/cjs/utilities/index.cjs +862 -7
  92. package/dist/cjs/utilities/index.cjs.map +1 -1
  93. package/dist/cjs/utilities/index.min.cjs +3 -1
  94. package/dist/cjs/utilities/index.min.cjs.map +1 -1
  95. package/dist/cjs/validations/index.cjs +679 -10
  96. package/dist/cjs/validations/index.cjs.map +1 -1
  97. package/dist/cjs/validations/index.min.cjs +3 -1
  98. package/dist/cjs/validations/index.min.cjs.map +1 -1
  99. package/dist/esm/cache/adapters/in-memory/index.min.mjs +2 -0
  100. package/dist/esm/cache/adapters/in-memory/index.min.mjs.map +1 -0
  101. package/dist/esm/cache/adapters/in-memory/index.mjs +93 -0
  102. package/dist/esm/cache/adapters/in-memory/index.mjs.map +1 -0
  103. package/dist/esm/cache/adapters/redis/index.min.mjs +2 -0
  104. package/dist/esm/cache/adapters/redis/index.mjs +13 -0
  105. package/dist/esm/cache/index.min.mjs +1 -1
  106. package/dist/esm/cache/index.min.mjs.map +1 -1
  107. package/dist/esm/cache/index.mjs +9 -4
  108. package/dist/esm/cache/index.mjs.map +1 -1
  109. package/dist/esm/chunk-4JLDXF7T.min.mjs +2 -0
  110. package/dist/esm/chunk-4JLDXF7T.min.mjs.map +1 -0
  111. package/dist/{types/events/types/kafka.js → esm/chunk-4MXYZS5R.mjs} +60 -37
  112. package/dist/esm/chunk-4MXYZS5R.mjs.map +1 -0
  113. package/dist/esm/chunk-5VW3JAFR.min.mjs +2 -0
  114. package/dist/esm/chunk-5VW3JAFR.min.mjs.map +1 -0
  115. package/dist/esm/chunk-AKQBDYUO.mjs +126 -0
  116. package/dist/esm/chunk-AKQBDYUO.mjs.map +1 -0
  117. package/dist/esm/chunk-AQY7QVYI.min.mjs +2 -0
  118. package/dist/esm/chunk-B5QQ32YY.min.mjs +2 -0
  119. package/dist/esm/chunk-B5QQ32YY.min.mjs.map +1 -0
  120. package/dist/esm/chunk-BJNIUCPT.min.mjs +2 -0
  121. package/dist/esm/chunk-BJNIUCPT.min.mjs.map +1 -0
  122. package/dist/esm/chunk-DKPZJIIR.mjs +29 -0
  123. package/dist/esm/chunk-DKPZJIIR.mjs.map +1 -0
  124. package/dist/esm/chunk-DSUJ5FUL.min.mjs +2 -0
  125. package/dist/esm/chunk-DSUJ5FUL.min.mjs.map +1 -0
  126. package/dist/esm/chunk-FLAPYQUT.min.mjs +32 -0
  127. package/dist/esm/chunk-FLAPYQUT.min.mjs.map +1 -0
  128. package/dist/esm/chunk-J5LGTIGS.mjs +10 -0
  129. package/dist/esm/chunk-JH6EBXY4.mjs +53 -0
  130. package/dist/esm/chunk-JH6EBXY4.mjs.map +1 -0
  131. package/dist/esm/chunk-MDQKODYQ.mjs +2035 -0
  132. package/dist/esm/chunk-MDQKODYQ.mjs.map +1 -0
  133. package/dist/esm/chunk-PCAUXBAG.min.mjs +2 -0
  134. package/dist/esm/chunk-PCAUXBAG.min.mjs.map +1 -0
  135. package/dist/esm/chunk-PNZNNUMN.mjs +113 -0
  136. package/dist/esm/chunk-PNZNNUMN.mjs.map +1 -0
  137. package/dist/esm/chunk-PQCBVQL6.mjs +1280 -0
  138. package/dist/esm/chunk-PQCBVQL6.mjs.map +1 -0
  139. package/dist/esm/chunk-QHLKB47N.min.mjs +2 -0
  140. package/dist/esm/chunk-QHLKB47N.min.mjs.map +1 -0
  141. package/dist/esm/chunk-SGZNOYC3.min.mjs +2 -0
  142. package/dist/esm/chunk-SGZNOYC3.min.mjs.map +1 -0
  143. package/dist/esm/chunk-TVTYDU2D.mjs +795 -0
  144. package/dist/esm/chunk-TVTYDU2D.mjs.map +1 -0
  145. package/dist/esm/chunk-VCCS7CAI.mjs +8 -0
  146. package/dist/esm/chunk-VCCS7CAI.mjs.map +1 -0
  147. package/dist/esm/chunk-Z2TZ3KR7.mjs +22 -0
  148. package/dist/esm/chunk-Z2TZ3KR7.mjs.map +1 -0
  149. package/dist/esm/chunk-ZGMFFK6Y.min.mjs +2 -0
  150. package/dist/esm/chunk-ZGMFFK6Y.min.mjs.map +1 -0
  151. package/dist/esm/dbs/adapters/mongodb/index.min.mjs +2 -0
  152. package/dist/esm/dbs/adapters/mongodb/index.min.mjs.map +1 -0
  153. package/dist/esm/dbs/adapters/mongodb/index.mjs +419 -0
  154. package/dist/esm/dbs/adapters/mongodb/index.mjs.map +1 -0
  155. package/dist/esm/dbs/index.min.mjs +1 -1
  156. package/dist/esm/dbs/index.min.mjs.map +1 -1
  157. package/dist/esm/dbs/index.mjs +22 -6
  158. package/dist/esm/dbs/index.mjs.map +1 -1
  159. package/dist/esm/errors/index.min.mjs +1 -1
  160. package/dist/esm/errors/index.min.mjs.map +1 -1
  161. package/dist/esm/errors/index.mjs +22 -8
  162. package/dist/esm/errors/index.mjs.map +1 -1
  163. package/dist/esm/events/adapters/kafka/index.min.mjs +2 -0
  164. package/dist/esm/events/adapters/kafka/index.min.mjs.map +1 -0
  165. package/dist/esm/events/adapters/kafka/index.mjs +12 -0
  166. package/dist/esm/events/adapters/kafka/index.mjs.map +1 -0
  167. package/dist/esm/events/adapters/rabbitmq/index.min.mjs +2 -0
  168. package/dist/esm/events/adapters/rabbitmq/index.min.mjs.map +1 -0
  169. package/dist/esm/events/adapters/rabbitmq/index.mjs +92 -0
  170. package/dist/esm/events/adapters/rabbitmq/index.mjs.map +1 -0
  171. package/dist/esm/events/index.min.mjs +1 -1
  172. package/dist/esm/events/index.min.mjs.map +1 -1
  173. package/dist/esm/events/index.mjs +7 -4
  174. package/dist/esm/events/index.mjs.map +1 -1
  175. package/dist/esm/index.min.mjs +1 -1
  176. package/dist/esm/index.min.mjs.map +1 -1
  177. package/dist/esm/index.mjs +8 -1
  178. package/dist/esm/index.mjs.map +1 -1
  179. package/dist/esm/instance/index.min.mjs +1 -3
  180. package/dist/esm/instance/index.min.mjs.map +1 -1
  181. package/dist/esm/instance/index.mjs +4 -132
  182. package/dist/esm/instance/index.mjs.map +1 -1
  183. package/dist/esm/introspection-32BRYKYY.mjs +10 -0
  184. package/dist/esm/introspection-32BRYKYY.mjs.map +1 -0
  185. package/dist/esm/introspection-A72WMWE3.min.mjs +2 -0
  186. package/dist/esm/introspection-A72WMWE3.min.mjs.map +1 -0
  187. package/dist/esm/jobs/adapters/redis/index.min.mjs +2 -0
  188. package/dist/esm/jobs/adapters/redis/index.min.mjs.map +1 -0
  189. package/dist/esm/jobs/{types/redis.mjs → adapters/redis/index.mjs} +71 -56
  190. package/dist/esm/jobs/adapters/redis/index.mjs.map +1 -0
  191. package/dist/esm/jobs/index.min.mjs +1 -1
  192. package/dist/esm/jobs/index.min.mjs.map +1 -1
  193. package/dist/esm/jobs/index.mjs +9 -2
  194. package/dist/esm/jobs/index.mjs.map +1 -1
  195. package/dist/esm/orm/adapters/in-memory/index.min.mjs +2 -0
  196. package/dist/esm/orm/adapters/in-memory/index.min.mjs.map +1 -0
  197. package/dist/esm/orm/adapters/in-memory/index.mjs +11 -0
  198. package/dist/esm/orm/adapters/in-memory/index.mjs.map +1 -0
  199. package/dist/esm/orm/adapters/json/index.min.mjs +2 -0
  200. package/dist/esm/orm/adapters/json/index.min.mjs.map +1 -0
  201. package/dist/esm/orm/adapters/json/index.mjs +980 -0
  202. package/dist/esm/orm/adapters/json/index.mjs.map +1 -0
  203. package/dist/esm/orm/adapters/mongodb/index.min.mjs +2 -0
  204. package/dist/esm/orm/adapters/mongodb/index.min.mjs.map +1 -0
  205. package/dist/esm/orm/adapters/mongodb/index.mjs +1539 -0
  206. package/dist/esm/orm/adapters/mongodb/index.mjs.map +1 -0
  207. package/dist/esm/orm/adapters/postgresql/index.min.mjs +47 -0
  208. package/dist/esm/orm/adapters/postgresql/index.min.mjs.map +1 -0
  209. package/dist/esm/orm/adapters/postgresql/index.mjs +2070 -0
  210. package/dist/esm/orm/adapters/postgresql/index.mjs.map +1 -0
  211. package/dist/esm/orm/index.min.mjs +2 -0
  212. package/dist/esm/orm/index.min.mjs.map +1 -0
  213. package/dist/esm/orm/index.mjs +7326 -0
  214. package/dist/esm/orm/index.mjs.map +1 -0
  215. package/dist/esm/server/adapters/express/index.min.mjs +2 -0
  216. package/dist/esm/server/adapters/express/index.min.mjs.map +1 -0
  217. package/dist/esm/server/adapters/express/index.mjs +177 -0
  218. package/dist/esm/server/adapters/express/index.mjs.map +1 -0
  219. package/dist/esm/server/adapters/fastify/index.min.mjs +2 -0
  220. package/dist/esm/server/adapters/fastify/index.min.mjs.map +1 -0
  221. package/dist/esm/server/adapters/fastify/index.mjs +185 -0
  222. package/dist/esm/server/adapters/fastify/index.mjs.map +1 -0
  223. package/dist/esm/server/index.min.mjs +1 -1
  224. package/dist/esm/server/index.min.mjs.map +1 -1
  225. package/dist/esm/server/index.mjs +38 -9
  226. package/dist/esm/server/index.mjs.map +1 -1
  227. package/dist/esm/types/index.min.mjs +0 -1
  228. package/dist/esm/types/index.min.mjs.map +1 -1
  229. package/dist/esm/types/index.mjs +0 -1
  230. package/dist/esm/types/index.mjs.map +1 -1
  231. package/dist/esm/utilities/index.min.mjs +1 -1
  232. package/dist/esm/utilities/index.min.mjs.map +1 -1
  233. package/dist/esm/utilities/index.mjs +22 -9
  234. package/dist/esm/utilities/index.mjs.map +1 -1
  235. package/dist/esm/validations/index.min.mjs +1 -1
  236. package/dist/esm/validations/index.min.mjs.map +1 -1
  237. package/dist/esm/validations/index.mjs +8 -18
  238. package/dist/esm/validations/index.mjs.map +1 -1
  239. package/dist/types/adapter-Coap9ISX.d.ts +1435 -0
  240. package/dist/types/{fastify-DLPUK3vD.d.ts → base-DVr0fHil.d.ts} +76 -143
  241. package/dist/types/cache/adapters/in-memory/index.d.ts +21 -0
  242. package/dist/types/cache/adapters/in-memory/index.js +92 -0
  243. package/dist/types/cache/adapters/redis/index.d.ts +73 -0
  244. package/dist/types/cache/adapters/redis/index.js +12 -0
  245. package/dist/types/cache/index.d.ts +2 -42
  246. package/dist/types/cache/index.js +9 -4
  247. package/dist/types/chunk-3M4PBZAQ.js +125 -0
  248. package/dist/types/chunk-3TKJGSCZ.js +21 -0
  249. package/dist/types/chunk-65EHKCDZ.js +112 -0
  250. package/dist/types/chunk-JQ2FWX4W.js +1279 -0
  251. package/dist/types/chunk-KZKFYO4V.js +7 -0
  252. package/dist/types/chunk-LN3A6R4Y.js +28 -0
  253. package/dist/types/chunk-MLKGABMK.js +9 -0
  254. package/dist/types/chunk-NJ2FHI3U.js +794 -0
  255. package/dist/types/chunk-OHFTQGQG.js +52 -0
  256. package/dist/{esm/events/types/kafka.mjs → types/chunk-XGGGAEET.js} +59 -38
  257. package/dist/types/chunk-YTY3EFNB.js +2034 -0
  258. package/dist/types/{core-BrkNSwvc.d.ts → core-tNlIMH9Y.d.ts} +48 -38
  259. package/dist/types/dbs/adapters/mongodb/index.d.ts +43 -0
  260. package/dist/types/dbs/adapters/mongodb/index.js +418 -0
  261. package/dist/types/dbs/index.d.ts +14 -12
  262. package/dist/types/dbs/index.js +22 -6
  263. package/dist/types/equippedError-Cmo60Kn-.d.ts +8 -0
  264. package/dist/types/errors/index.d.ts +3 -3
  265. package/dist/types/errors/index.js +22 -8
  266. package/dist/types/events/adapters/kafka/index.d.ts +83 -0
  267. package/dist/types/events/adapters/kafka/index.js +11 -0
  268. package/dist/types/events/adapters/rabbitmq/index.d.ts +41 -0
  269. package/dist/types/events/adapters/rabbitmq/index.js +91 -0
  270. package/dist/types/events/index.d.ts +11 -11
  271. package/dist/types/events/index.js +7 -4
  272. package/dist/types/index.d.ts +2 -25
  273. package/dist/types/index.js +8 -1
  274. package/dist/types/instance/index.d.ts +12 -179
  275. package/dist/types/instance/index.js +4 -132
  276. package/dist/types/introspection-VOIU3XE6.js +9 -0
  277. package/dist/types/jobs/adapters/redis/index.d.ts +93 -0
  278. package/dist/types/jobs/{types/redis.js → adapters/redis/index.js} +70 -55
  279. package/dist/types/jobs/index.d.ts +19 -35
  280. package/dist/types/jobs/index.js +9 -2
  281. package/dist/types/orm/adapters/in-memory/index.d.ts +92 -0
  282. package/dist/types/orm/adapters/in-memory/index.js +10 -0
  283. package/dist/types/orm/adapters/json/index.d.ts +72 -0
  284. package/dist/types/orm/adapters/json/index.js +979 -0
  285. package/dist/types/orm/adapters/mongodb/index.d.ts +74 -0
  286. package/dist/types/orm/adapters/mongodb/index.js +1538 -0
  287. package/dist/types/orm/adapters/postgresql/index.d.ts +112 -0
  288. package/dist/types/orm/adapters/postgresql/index.js +2069 -0
  289. package/dist/types/orm/index.d.ts +160 -0
  290. package/dist/types/orm/index.js +7325 -0
  291. package/dist/types/{requestError-C2PNWUrt.d.ts → requestError-DdaL8hc3.d.ts} +2 -8
  292. package/dist/types/server/adapters/express/index.d.ts +196 -0
  293. package/dist/types/server/adapters/express/index.js +176 -0
  294. package/dist/types/server/adapters/fastify/index.d.ts +221 -0
  295. package/dist/types/server/adapters/fastify/index.js +184 -0
  296. package/dist/types/server/index.d.ts +10 -11
  297. package/dist/types/server/index.js +38 -9
  298. package/dist/types/types/index.js +0 -1
  299. package/dist/types/utilities/index.d.ts +22 -9
  300. package/dist/types/utilities/index.js +22 -9
  301. package/dist/types/{validationError-Bw8OYv5s.d.ts → validationError-oigtHqBi.d.ts} +1 -1
  302. package/dist/types/validations/index.d.ts +3 -2
  303. package/dist/types/validations/index.js +8 -18
  304. package/package.json +155 -18
  305. package/dist/cjs/audit/events.cjs +0 -101
  306. package/dist/cjs/audit/events.cjs.map +0 -1
  307. package/dist/cjs/audit/events.min.cjs +0 -2
  308. package/dist/cjs/audit/events.min.cjs.map +0 -1
  309. package/dist/cjs/audit/index.cjs +0 -2
  310. package/dist/cjs/audit/index.cjs.map +0 -1
  311. package/dist/cjs/audit/index.min.cjs +0 -2
  312. package/dist/cjs/audit/index.min.cjs.map +0 -1
  313. package/dist/cjs/cache/base.cjs +0 -6
  314. package/dist/cjs/cache/base.cjs.map +0 -1
  315. package/dist/cjs/cache/base.min.cjs +0 -2
  316. package/dist/cjs/cache/base.min.cjs.map +0 -1
  317. package/dist/cjs/cache/pipes.cjs +0 -16
  318. package/dist/cjs/cache/pipes.cjs.map +0 -1
  319. package/dist/cjs/cache/pipes.min.cjs +0 -2
  320. package/dist/cjs/cache/pipes.min.cjs.map +0 -1
  321. package/dist/cjs/cache/types/in-memory.cjs +0 -47
  322. package/dist/cjs/cache/types/in-memory.cjs.map +0 -1
  323. package/dist/cjs/cache/types/in-memory.min.cjs +0 -2
  324. package/dist/cjs/cache/types/in-memory.min.cjs.map +0 -1
  325. package/dist/cjs/cache/types/redis.cjs +0 -55
  326. package/dist/cjs/cache/types/redis.cjs.map +0 -1
  327. package/dist/cjs/cache/types/redis.min.cjs +0 -2
  328. package/dist/cjs/cache/types/redis.min.cjs.map +0 -1
  329. package/dist/cjs/dbs/base/changes.cjs +0 -36
  330. package/dist/cjs/dbs/base/changes.cjs.map +0 -1
  331. package/dist/cjs/dbs/base/changes.min.cjs +0 -2
  332. package/dist/cjs/dbs/base/changes.min.cjs.map +0 -1
  333. package/dist/cjs/dbs/base/core.cjs +0 -1
  334. package/dist/cjs/dbs/base/core.cjs.map +0 -1
  335. package/dist/cjs/dbs/base/core.min.cjs +0 -1
  336. package/dist/cjs/dbs/base/core.min.cjs.map +0 -1
  337. package/dist/cjs/dbs/base/db.cjs +0 -14
  338. package/dist/cjs/dbs/base/db.cjs.map +0 -1
  339. package/dist/cjs/dbs/base/db.min.cjs +0 -2
  340. package/dist/cjs/dbs/base/db.min.cjs.map +0 -1
  341. package/dist/cjs/dbs/base/types.cjs +0 -2
  342. package/dist/cjs/dbs/base/types.cjs.map +0 -1
  343. package/dist/cjs/dbs/base/types.min.cjs +0 -2
  344. package/dist/cjs/dbs/base/types.min.cjs.map +0 -1
  345. package/dist/cjs/dbs/mongo/changes.cjs +0 -81
  346. package/dist/cjs/dbs/mongo/changes.cjs.map +0 -1
  347. package/dist/cjs/dbs/mongo/changes.min.cjs +0 -2
  348. package/dist/cjs/dbs/mongo/changes.min.cjs.map +0 -1
  349. package/dist/cjs/dbs/mongo/db.cjs +0 -225
  350. package/dist/cjs/dbs/mongo/db.cjs.map +0 -1
  351. package/dist/cjs/dbs/mongo/db.min.cjs +0 -2
  352. package/dist/cjs/dbs/mongo/db.min.cjs.map +0 -1
  353. package/dist/cjs/dbs/mongo/query.cjs +0 -66
  354. package/dist/cjs/dbs/mongo/query.cjs.map +0 -1
  355. package/dist/cjs/dbs/mongo/query.min.cjs +0 -2
  356. package/dist/cjs/dbs/mongo/query.min.cjs.map +0 -1
  357. package/dist/cjs/dbs/pipes.cjs +0 -104
  358. package/dist/cjs/dbs/pipes.cjs.map +0 -1
  359. package/dist/cjs/dbs/pipes.min.cjs +0 -2
  360. package/dist/cjs/dbs/pipes.min.cjs.map +0 -1
  361. package/dist/cjs/errors/equippedError.cjs +0 -12
  362. package/dist/cjs/errors/equippedError.cjs.map +0 -1
  363. package/dist/cjs/errors/equippedError.min.cjs +0 -2
  364. package/dist/cjs/errors/equippedError.min.cjs.map +0 -1
  365. package/dist/cjs/errors/requestError.cjs +0 -12
  366. package/dist/cjs/errors/requestError.cjs.map +0 -1
  367. package/dist/cjs/errors/requestError.min.cjs +0 -2
  368. package/dist/cjs/errors/requestError.min.cjs.map +0 -1
  369. package/dist/cjs/errors/types/badRequestError.cjs +0 -12
  370. package/dist/cjs/errors/types/badRequestError.cjs.map +0 -1
  371. package/dist/cjs/errors/types/badRequestError.min.cjs +0 -2
  372. package/dist/cjs/errors/types/badRequestError.min.cjs.map +0 -1
  373. package/dist/cjs/errors/types/notAuthenticatedError.cjs +0 -12
  374. package/dist/cjs/errors/types/notAuthenticatedError.cjs.map +0 -1
  375. package/dist/cjs/errors/types/notAuthenticatedError.min.cjs +0 -2
  376. package/dist/cjs/errors/types/notAuthenticatedError.min.cjs.map +0 -1
  377. package/dist/cjs/errors/types/notAuthorizedError.cjs +0 -12
  378. package/dist/cjs/errors/types/notAuthorizedError.cjs.map +0 -1
  379. package/dist/cjs/errors/types/notAuthorizedError.min.cjs +0 -2
  380. package/dist/cjs/errors/types/notAuthorizedError.min.cjs.map +0 -1
  381. package/dist/cjs/errors/types/notFoundError.cjs +0 -12
  382. package/dist/cjs/errors/types/notFoundError.cjs.map +0 -1
  383. package/dist/cjs/errors/types/notFoundError.min.cjs +0 -2
  384. package/dist/cjs/errors/types/notFoundError.min.cjs.map +0 -1
  385. package/dist/cjs/errors/types/tokenExpired.cjs +0 -12
  386. package/dist/cjs/errors/types/tokenExpired.cjs.map +0 -1
  387. package/dist/cjs/errors/types/tokenExpired.min.cjs +0 -2
  388. package/dist/cjs/errors/types/tokenExpired.min.cjs.map +0 -1
  389. package/dist/cjs/errors/types/validationError.cjs +0 -16
  390. package/dist/cjs/errors/types/validationError.cjs.map +0 -1
  391. package/dist/cjs/errors/types/validationError.min.cjs +0 -2
  392. package/dist/cjs/errors/types/validationError.min.cjs.map +0 -1
  393. package/dist/cjs/events/base.cjs +0 -6
  394. package/dist/cjs/events/base.cjs.map +0 -1
  395. package/dist/cjs/events/base.min.cjs +0 -2
  396. package/dist/cjs/events/base.min.cjs.map +0 -1
  397. package/dist/cjs/events/pipes.cjs +0 -28
  398. package/dist/cjs/events/pipes.cjs.map +0 -1
  399. package/dist/cjs/events/pipes.min.cjs +0 -2
  400. package/dist/cjs/events/pipes.min.cjs.map +0 -1
  401. package/dist/cjs/events/types/kafka.cjs +0 -80
  402. package/dist/cjs/events/types/kafka.cjs.map +0 -1
  403. package/dist/cjs/events/types/kafka.min.cjs +0 -2
  404. package/dist/cjs/events/types/kafka.min.cjs.map +0 -1
  405. package/dist/cjs/events/types/rabbitmq.cjs +0 -54
  406. package/dist/cjs/events/types/rabbitmq.cjs.map +0 -1
  407. package/dist/cjs/events/types/rabbitmq.min.cjs +0 -2
  408. package/dist/cjs/events/types/rabbitmq.min.cjs.map +0 -1
  409. package/dist/cjs/instance/hooks.cjs +0 -26
  410. package/dist/cjs/instance/hooks.cjs.map +0 -1
  411. package/dist/cjs/instance/hooks.min.cjs +0 -2
  412. package/dist/cjs/instance/hooks.min.cjs.map +0 -1
  413. package/dist/cjs/instance/settings.cjs +0 -57
  414. package/dist/cjs/instance/settings.cjs.map +0 -1
  415. package/dist/cjs/instance/settings.min.cjs +0 -2
  416. package/dist/cjs/instance/settings.min.cjs.map +0 -1
  417. package/dist/cjs/jobs/pipes.cjs +0 -13
  418. package/dist/cjs/jobs/pipes.cjs.map +0 -1
  419. package/dist/cjs/jobs/pipes.min.cjs +0 -2
  420. package/dist/cjs/jobs/pipes.min.cjs.map +0 -1
  421. package/dist/cjs/jobs/types/redis.cjs +0 -106
  422. package/dist/cjs/jobs/types/redis.cjs.map +0 -1
  423. package/dist/cjs/jobs/types/redis.min.cjs +0 -2
  424. package/dist/cjs/jobs/types/redis.min.cjs.map +0 -1
  425. package/dist/cjs/server/impls/base.cjs +0 -211
  426. package/dist/cjs/server/impls/base.cjs.map +0 -1
  427. package/dist/cjs/server/impls/base.min.cjs +0 -2
  428. package/dist/cjs/server/impls/base.min.cjs.map +0 -1
  429. package/dist/cjs/server/impls/express.cjs +0 -111
  430. package/dist/cjs/server/impls/express.cjs.map +0 -1
  431. package/dist/cjs/server/impls/express.min.cjs +0 -2
  432. package/dist/cjs/server/impls/express.min.cjs.map +0 -1
  433. package/dist/cjs/server/impls/fastify.cjs +0 -121
  434. package/dist/cjs/server/impls/fastify.cjs.map +0 -1
  435. package/dist/cjs/server/impls/fastify.min.cjs +0 -2
  436. package/dist/cjs/server/impls/fastify.min.cjs.map +0 -1
  437. package/dist/cjs/server/middlewares/index.cjs +0 -2
  438. package/dist/cjs/server/middlewares/index.cjs.map +0 -1
  439. package/dist/cjs/server/middlewares/index.min.cjs +0 -2
  440. package/dist/cjs/server/middlewares/index.min.cjs.map +0 -1
  441. package/dist/cjs/server/middlewares/requireAuthUser.cjs +0 -22
  442. package/dist/cjs/server/middlewares/requireAuthUser.cjs.map +0 -1
  443. package/dist/cjs/server/middlewares/requireAuthUser.min.cjs +0 -2
  444. package/dist/cjs/server/middlewares/requireAuthUser.min.cjs.map +0 -1
  445. package/dist/cjs/server/openapi.cjs +0 -191
  446. package/dist/cjs/server/openapi.cjs.map +0 -1
  447. package/dist/cjs/server/openapi.min.cjs +0 -30
  448. package/dist/cjs/server/openapi.min.cjs.map +0 -1
  449. package/dist/cjs/server/pipes.cjs +0 -67
  450. package/dist/cjs/server/pipes.cjs.map +0 -1
  451. package/dist/cjs/server/pipes.min.cjs +0 -2
  452. package/dist/cjs/server/pipes.min.cjs.map +0 -1
  453. package/dist/cjs/server/requests-auth-methods/apiKeys.cjs +0 -21
  454. package/dist/cjs/server/requests-auth-methods/apiKeys.cjs.map +0 -1
  455. package/dist/cjs/server/requests-auth-methods/apiKeys.min.cjs +0 -2
  456. package/dist/cjs/server/requests-auth-methods/apiKeys.min.cjs.map +0 -1
  457. package/dist/cjs/server/requests-auth-methods/base.cjs +0 -20
  458. package/dist/cjs/server/requests-auth-methods/base.cjs.map +0 -1
  459. package/dist/cjs/server/requests-auth-methods/base.min.cjs +0 -2
  460. package/dist/cjs/server/requests-auth-methods/base.min.cjs.map +0 -1
  461. package/dist/cjs/server/requests-auth-methods/index.cjs +0 -4
  462. package/dist/cjs/server/requests-auth-methods/index.cjs.map +0 -1
  463. package/dist/cjs/server/requests-auth-methods/index.min.cjs +0 -2
  464. package/dist/cjs/server/requests-auth-methods/index.min.cjs.map +0 -1
  465. package/dist/cjs/server/requests-auth-methods/jwt.cjs +0 -78
  466. package/dist/cjs/server/requests-auth-methods/jwt.cjs.map +0 -1
  467. package/dist/cjs/server/requests-auth-methods/jwt.min.cjs +0 -2
  468. package/dist/cjs/server/requests-auth-methods/jwt.min.cjs.map +0 -1
  469. package/dist/cjs/server/requests.cjs +0 -80
  470. package/dist/cjs/server/requests.cjs.map +0 -1
  471. package/dist/cjs/server/requests.min.cjs +0 -2
  472. package/dist/cjs/server/requests.min.cjs.map +0 -1
  473. package/dist/cjs/server/routes.cjs +0 -74
  474. package/dist/cjs/server/routes.cjs.map +0 -1
  475. package/dist/cjs/server/routes.min.cjs +0 -2
  476. package/dist/cjs/server/routes.min.cjs.map +0 -1
  477. package/dist/cjs/server/sockets.cjs +0 -126
  478. package/dist/cjs/server/sockets.cjs.map +0 -1
  479. package/dist/cjs/server/sockets.min.cjs +0 -2
  480. package/dist/cjs/server/sockets.min.cjs.map +0 -1
  481. package/dist/cjs/server/types.cjs +0 -34
  482. package/dist/cjs/server/types.cjs.map +0 -1
  483. package/dist/cjs/server/types.min.cjs +0 -2
  484. package/dist/cjs/server/types.min.cjs.map +0 -1
  485. package/dist/cjs/types/overrides.cjs +0 -1
  486. package/dist/cjs/types/overrides.cjs.map +0 -1
  487. package/dist/cjs/types/overrides.min.cjs +0 -1
  488. package/dist/cjs/types/overrides.min.cjs.map +0 -1
  489. package/dist/cjs/utilities/authProviders.cjs +0 -53
  490. package/dist/cjs/utilities/authProviders.cjs.map +0 -1
  491. package/dist/cjs/utilities/authProviders.min.cjs +0 -2
  492. package/dist/cjs/utilities/authProviders.min.cjs.map +0 -1
  493. package/dist/cjs/utilities/hash.cjs +0 -17
  494. package/dist/cjs/utilities/hash.cjs.map +0 -1
  495. package/dist/cjs/utilities/hash.min.cjs +0 -2
  496. package/dist/cjs/utilities/hash.min.cjs.map +0 -1
  497. package/dist/cjs/utilities/json.cjs +0 -16
  498. package/dist/cjs/utilities/json.cjs.map +0 -1
  499. package/dist/cjs/utilities/json.min.cjs +0 -2
  500. package/dist/cjs/utilities/json.min.cjs.map +0 -1
  501. package/dist/cjs/utilities/media.cjs +0 -13
  502. package/dist/cjs/utilities/media.cjs.map +0 -1
  503. package/dist/cjs/utilities/media.min.cjs +0 -2
  504. package/dist/cjs/utilities/media.min.cjs.map +0 -1
  505. package/dist/cjs/utilities/random.cjs +0 -12
  506. package/dist/cjs/utilities/random.cjs.map +0 -1
  507. package/dist/cjs/utilities/random.min.cjs +0 -2
  508. package/dist/cjs/utilities/random.min.cjs.map +0 -1
  509. package/dist/cjs/utilities/retry.cjs +0 -14
  510. package/dist/cjs/utilities/retry.cjs.map +0 -1
  511. package/dist/cjs/utilities/retry.min.cjs +0 -2
  512. package/dist/cjs/utilities/retry.min.cjs.map +0 -1
  513. package/dist/cjs/validations/valleyed.cjs +0 -43
  514. package/dist/cjs/validations/valleyed.cjs.map +0 -1
  515. package/dist/cjs/validations/valleyed.min.cjs +0 -2
  516. package/dist/cjs/validations/valleyed.min.cjs.map +0 -1
  517. package/dist/esm/audit/events.min.mjs +0 -2
  518. package/dist/esm/audit/events.min.mjs.map +0 -1
  519. package/dist/esm/audit/events.mjs +0 -101
  520. package/dist/esm/audit/events.mjs.map +0 -1
  521. package/dist/esm/audit/index.min.mjs +0 -2
  522. package/dist/esm/audit/index.min.mjs.map +0 -1
  523. package/dist/esm/audit/index.mjs +0 -2
  524. package/dist/esm/audit/index.mjs.map +0 -1
  525. package/dist/esm/cache/base.min.mjs +0 -2
  526. package/dist/esm/cache/base.min.mjs.map +0 -1
  527. package/dist/esm/cache/base.mjs +0 -6
  528. package/dist/esm/cache/base.mjs.map +0 -1
  529. package/dist/esm/cache/pipes.min.mjs +0 -2
  530. package/dist/esm/cache/pipes.min.mjs.map +0 -1
  531. package/dist/esm/cache/pipes.mjs +0 -16
  532. package/dist/esm/cache/pipes.mjs.map +0 -1
  533. package/dist/esm/cache/types/in-memory.min.mjs +0 -2
  534. package/dist/esm/cache/types/in-memory.min.mjs.map +0 -1
  535. package/dist/esm/cache/types/in-memory.mjs +0 -47
  536. package/dist/esm/cache/types/in-memory.mjs.map +0 -1
  537. package/dist/esm/cache/types/redis.min.mjs +0 -2
  538. package/dist/esm/cache/types/redis.min.mjs.map +0 -1
  539. package/dist/esm/cache/types/redis.mjs +0 -55
  540. package/dist/esm/cache/types/redis.mjs.map +0 -1
  541. package/dist/esm/dbs/base/changes.min.mjs +0 -2
  542. package/dist/esm/dbs/base/changes.min.mjs.map +0 -1
  543. package/dist/esm/dbs/base/changes.mjs +0 -36
  544. package/dist/esm/dbs/base/changes.mjs.map +0 -1
  545. package/dist/esm/dbs/base/core.min.mjs +0 -1
  546. package/dist/esm/dbs/base/core.mjs +0 -1
  547. package/dist/esm/dbs/base/db.min.mjs +0 -2
  548. package/dist/esm/dbs/base/db.min.mjs.map +0 -1
  549. package/dist/esm/dbs/base/db.mjs +0 -14
  550. package/dist/esm/dbs/base/db.mjs.map +0 -1
  551. package/dist/esm/dbs/base/types.min.mjs +0 -2
  552. package/dist/esm/dbs/base/types.min.mjs.map +0 -1
  553. package/dist/esm/dbs/base/types.mjs +0 -2
  554. package/dist/esm/dbs/base/types.mjs.map +0 -1
  555. package/dist/esm/dbs/mongo/changes.min.mjs +0 -2
  556. package/dist/esm/dbs/mongo/changes.min.mjs.map +0 -1
  557. package/dist/esm/dbs/mongo/changes.mjs +0 -81
  558. package/dist/esm/dbs/mongo/changes.mjs.map +0 -1
  559. package/dist/esm/dbs/mongo/db.min.mjs +0 -2
  560. package/dist/esm/dbs/mongo/db.min.mjs.map +0 -1
  561. package/dist/esm/dbs/mongo/db.mjs +0 -225
  562. package/dist/esm/dbs/mongo/db.mjs.map +0 -1
  563. package/dist/esm/dbs/mongo/query.min.mjs +0 -2
  564. package/dist/esm/dbs/mongo/query.min.mjs.map +0 -1
  565. package/dist/esm/dbs/mongo/query.mjs +0 -66
  566. package/dist/esm/dbs/mongo/query.mjs.map +0 -1
  567. package/dist/esm/dbs/pipes.min.mjs +0 -2
  568. package/dist/esm/dbs/pipes.min.mjs.map +0 -1
  569. package/dist/esm/dbs/pipes.mjs +0 -104
  570. package/dist/esm/dbs/pipes.mjs.map +0 -1
  571. package/dist/esm/errors/equippedError.min.mjs +0 -2
  572. package/dist/esm/errors/equippedError.min.mjs.map +0 -1
  573. package/dist/esm/errors/equippedError.mjs +0 -12
  574. package/dist/esm/errors/equippedError.mjs.map +0 -1
  575. package/dist/esm/errors/requestError.min.mjs +0 -2
  576. package/dist/esm/errors/requestError.min.mjs.map +0 -1
  577. package/dist/esm/errors/requestError.mjs +0 -12
  578. package/dist/esm/errors/requestError.mjs.map +0 -1
  579. package/dist/esm/errors/types/badRequestError.min.mjs +0 -2
  580. package/dist/esm/errors/types/badRequestError.min.mjs.map +0 -1
  581. package/dist/esm/errors/types/badRequestError.mjs +0 -12
  582. package/dist/esm/errors/types/badRequestError.mjs.map +0 -1
  583. package/dist/esm/errors/types/notAuthenticatedError.min.mjs +0 -2
  584. package/dist/esm/errors/types/notAuthenticatedError.min.mjs.map +0 -1
  585. package/dist/esm/errors/types/notAuthenticatedError.mjs +0 -12
  586. package/dist/esm/errors/types/notAuthenticatedError.mjs.map +0 -1
  587. package/dist/esm/errors/types/notAuthorizedError.min.mjs +0 -2
  588. package/dist/esm/errors/types/notAuthorizedError.min.mjs.map +0 -1
  589. package/dist/esm/errors/types/notAuthorizedError.mjs +0 -12
  590. package/dist/esm/errors/types/notAuthorizedError.mjs.map +0 -1
  591. package/dist/esm/errors/types/notFoundError.min.mjs +0 -2
  592. package/dist/esm/errors/types/notFoundError.min.mjs.map +0 -1
  593. package/dist/esm/errors/types/notFoundError.mjs +0 -12
  594. package/dist/esm/errors/types/notFoundError.mjs.map +0 -1
  595. package/dist/esm/errors/types/tokenExpired.min.mjs +0 -2
  596. package/dist/esm/errors/types/tokenExpired.min.mjs.map +0 -1
  597. package/dist/esm/errors/types/tokenExpired.mjs +0 -12
  598. package/dist/esm/errors/types/tokenExpired.mjs.map +0 -1
  599. package/dist/esm/errors/types/validationError.min.mjs +0 -2
  600. package/dist/esm/errors/types/validationError.min.mjs.map +0 -1
  601. package/dist/esm/errors/types/validationError.mjs +0 -16
  602. package/dist/esm/errors/types/validationError.mjs.map +0 -1
  603. package/dist/esm/events/base.min.mjs +0 -2
  604. package/dist/esm/events/base.min.mjs.map +0 -1
  605. package/dist/esm/events/base.mjs +0 -6
  606. package/dist/esm/events/base.mjs.map +0 -1
  607. package/dist/esm/events/pipes.min.mjs +0 -2
  608. package/dist/esm/events/pipes.min.mjs.map +0 -1
  609. package/dist/esm/events/pipes.mjs +0 -28
  610. package/dist/esm/events/pipes.mjs.map +0 -1
  611. package/dist/esm/events/types/kafka.min.mjs +0 -2
  612. package/dist/esm/events/types/kafka.min.mjs.map +0 -1
  613. package/dist/esm/events/types/kafka.mjs.map +0 -1
  614. package/dist/esm/events/types/rabbitmq.min.mjs +0 -2
  615. package/dist/esm/events/types/rabbitmq.min.mjs.map +0 -1
  616. package/dist/esm/events/types/rabbitmq.mjs +0 -54
  617. package/dist/esm/events/types/rabbitmq.mjs.map +0 -1
  618. package/dist/esm/instance/hooks.min.mjs +0 -2
  619. package/dist/esm/instance/hooks.min.mjs.map +0 -1
  620. package/dist/esm/instance/hooks.mjs +0 -26
  621. package/dist/esm/instance/hooks.mjs.map +0 -1
  622. package/dist/esm/instance/settings.min.mjs +0 -2
  623. package/dist/esm/instance/settings.min.mjs.map +0 -1
  624. package/dist/esm/instance/settings.mjs +0 -57
  625. package/dist/esm/instance/settings.mjs.map +0 -1
  626. package/dist/esm/jobs/pipes.min.mjs +0 -2
  627. package/dist/esm/jobs/pipes.min.mjs.map +0 -1
  628. package/dist/esm/jobs/pipes.mjs +0 -13
  629. package/dist/esm/jobs/pipes.mjs.map +0 -1
  630. package/dist/esm/jobs/types/redis.min.mjs +0 -2
  631. package/dist/esm/jobs/types/redis.min.mjs.map +0 -1
  632. package/dist/esm/jobs/types/redis.mjs.map +0 -1
  633. package/dist/esm/server/impls/base.min.mjs +0 -2
  634. package/dist/esm/server/impls/base.min.mjs.map +0 -1
  635. package/dist/esm/server/impls/base.mjs +0 -211
  636. package/dist/esm/server/impls/base.mjs.map +0 -1
  637. package/dist/esm/server/impls/express.min.mjs +0 -2
  638. package/dist/esm/server/impls/express.min.mjs.map +0 -1
  639. package/dist/esm/server/impls/express.mjs +0 -111
  640. package/dist/esm/server/impls/express.mjs.map +0 -1
  641. package/dist/esm/server/impls/fastify.min.mjs +0 -2
  642. package/dist/esm/server/impls/fastify.min.mjs.map +0 -1
  643. package/dist/esm/server/impls/fastify.mjs +0 -121
  644. package/dist/esm/server/impls/fastify.mjs.map +0 -1
  645. package/dist/esm/server/middlewares/index.min.mjs +0 -2
  646. package/dist/esm/server/middlewares/index.min.mjs.map +0 -1
  647. package/dist/esm/server/middlewares/index.mjs +0 -2
  648. package/dist/esm/server/middlewares/index.mjs.map +0 -1
  649. package/dist/esm/server/middlewares/requireAuthUser.min.mjs +0 -2
  650. package/dist/esm/server/middlewares/requireAuthUser.min.mjs.map +0 -1
  651. package/dist/esm/server/middlewares/requireAuthUser.mjs +0 -22
  652. package/dist/esm/server/middlewares/requireAuthUser.mjs.map +0 -1
  653. package/dist/esm/server/openapi.min.mjs +0 -30
  654. package/dist/esm/server/openapi.min.mjs.map +0 -1
  655. package/dist/esm/server/openapi.mjs +0 -191
  656. package/dist/esm/server/openapi.mjs.map +0 -1
  657. package/dist/esm/server/pipes.min.mjs +0 -2
  658. package/dist/esm/server/pipes.min.mjs.map +0 -1
  659. package/dist/esm/server/pipes.mjs +0 -67
  660. package/dist/esm/server/pipes.mjs.map +0 -1
  661. package/dist/esm/server/requests-auth-methods/apiKeys.min.mjs +0 -2
  662. package/dist/esm/server/requests-auth-methods/apiKeys.min.mjs.map +0 -1
  663. package/dist/esm/server/requests-auth-methods/apiKeys.mjs +0 -21
  664. package/dist/esm/server/requests-auth-methods/apiKeys.mjs.map +0 -1
  665. package/dist/esm/server/requests-auth-methods/base.min.mjs +0 -2
  666. package/dist/esm/server/requests-auth-methods/base.min.mjs.map +0 -1
  667. package/dist/esm/server/requests-auth-methods/base.mjs +0 -20
  668. package/dist/esm/server/requests-auth-methods/base.mjs.map +0 -1
  669. package/dist/esm/server/requests-auth-methods/index.min.mjs +0 -2
  670. package/dist/esm/server/requests-auth-methods/index.min.mjs.map +0 -1
  671. package/dist/esm/server/requests-auth-methods/index.mjs +0 -4
  672. package/dist/esm/server/requests-auth-methods/index.mjs.map +0 -1
  673. package/dist/esm/server/requests-auth-methods/jwt.min.mjs +0 -2
  674. package/dist/esm/server/requests-auth-methods/jwt.min.mjs.map +0 -1
  675. package/dist/esm/server/requests-auth-methods/jwt.mjs +0 -78
  676. package/dist/esm/server/requests-auth-methods/jwt.mjs.map +0 -1
  677. package/dist/esm/server/requests.min.mjs +0 -2
  678. package/dist/esm/server/requests.min.mjs.map +0 -1
  679. package/dist/esm/server/requests.mjs +0 -80
  680. package/dist/esm/server/requests.mjs.map +0 -1
  681. package/dist/esm/server/routes.min.mjs +0 -2
  682. package/dist/esm/server/routes.min.mjs.map +0 -1
  683. package/dist/esm/server/routes.mjs +0 -74
  684. package/dist/esm/server/routes.mjs.map +0 -1
  685. package/dist/esm/server/sockets.min.mjs +0 -2
  686. package/dist/esm/server/sockets.min.mjs.map +0 -1
  687. package/dist/esm/server/sockets.mjs +0 -126
  688. package/dist/esm/server/sockets.mjs.map +0 -1
  689. package/dist/esm/server/types.min.mjs +0 -2
  690. package/dist/esm/server/types.min.mjs.map +0 -1
  691. package/dist/esm/server/types.mjs +0 -34
  692. package/dist/esm/server/types.mjs.map +0 -1
  693. package/dist/esm/types/overrides.min.mjs +0 -1
  694. package/dist/esm/types/overrides.mjs +0 -1
  695. package/dist/esm/utilities/authProviders.min.mjs +0 -2
  696. package/dist/esm/utilities/authProviders.min.mjs.map +0 -1
  697. package/dist/esm/utilities/authProviders.mjs +0 -53
  698. package/dist/esm/utilities/authProviders.mjs.map +0 -1
  699. package/dist/esm/utilities/hash.min.mjs +0 -2
  700. package/dist/esm/utilities/hash.min.mjs.map +0 -1
  701. package/dist/esm/utilities/hash.mjs +0 -17
  702. package/dist/esm/utilities/hash.mjs.map +0 -1
  703. package/dist/esm/utilities/json.min.mjs +0 -2
  704. package/dist/esm/utilities/json.min.mjs.map +0 -1
  705. package/dist/esm/utilities/json.mjs +0 -16
  706. package/dist/esm/utilities/json.mjs.map +0 -1
  707. package/dist/esm/utilities/media.min.mjs +0 -2
  708. package/dist/esm/utilities/media.min.mjs.map +0 -1
  709. package/dist/esm/utilities/media.mjs +0 -13
  710. package/dist/esm/utilities/media.mjs.map +0 -1
  711. package/dist/esm/utilities/random.min.mjs +0 -2
  712. package/dist/esm/utilities/random.min.mjs.map +0 -1
  713. package/dist/esm/utilities/random.mjs +0 -12
  714. package/dist/esm/utilities/random.mjs.map +0 -1
  715. package/dist/esm/utilities/retry.min.mjs +0 -2
  716. package/dist/esm/utilities/retry.min.mjs.map +0 -1
  717. package/dist/esm/utilities/retry.mjs +0 -14
  718. package/dist/esm/utilities/retry.mjs.map +0 -1
  719. package/dist/esm/validations/valleyed.min.mjs +0 -2
  720. package/dist/esm/validations/valleyed.min.mjs.map +0 -1
  721. package/dist/esm/validations/valleyed.mjs +0 -43
  722. package/dist/esm/validations/valleyed.mjs.map +0 -1
  723. package/dist/types/audit/events.js +0 -100
  724. package/dist/types/audit/index.d.ts +0 -44
  725. package/dist/types/audit/index.js +0 -1
  726. package/dist/types/cache/base.js +0 -5
  727. package/dist/types/cache/pipes.js +0 -15
  728. package/dist/types/cache/types/in-memory.js +0 -46
  729. package/dist/types/cache/types/redis.js +0 -54
  730. package/dist/types/db-C8YY1yTO.d.ts +0 -14
  731. package/dist/types/db-Dj1SGto0.d.ts +0 -24
  732. package/dist/types/dbs/base/changes.js +0 -35
  733. package/dist/types/dbs/base/core.js +0 -0
  734. package/dist/types/dbs/base/db.js +0 -13
  735. package/dist/types/dbs/base/types.js +0 -1
  736. package/dist/types/dbs/mongo/changes.js +0 -80
  737. package/dist/types/dbs/mongo/db.js +0 -224
  738. package/dist/types/dbs/mongo/query.js +0 -65
  739. package/dist/types/dbs/pipes.js +0 -103
  740. package/dist/types/errors/equippedError.js +0 -11
  741. package/dist/types/errors/requestError.js +0 -11
  742. package/dist/types/errors/types/badRequestError.js +0 -11
  743. package/dist/types/errors/types/notAuthenticatedError.js +0 -11
  744. package/dist/types/errors/types/notAuthorizedError.js +0 -11
  745. package/dist/types/errors/types/notFoundError.js +0 -11
  746. package/dist/types/errors/types/tokenExpired.js +0 -11
  747. package/dist/types/errors/types/validationError.js +0 -15
  748. package/dist/types/events/base.js +0 -5
  749. package/dist/types/events/pipes.js +0 -27
  750. package/dist/types/events/types/rabbitmq.js +0 -53
  751. package/dist/types/instance/hooks.js +0 -25
  752. package/dist/types/instance/settings.js +0 -56
  753. package/dist/types/jobs/pipes.js +0 -12
  754. package/dist/types/kafka-Cf-TUJgv.d.ts +0 -54
  755. package/dist/types/server/impls/base.js +0 -210
  756. package/dist/types/server/impls/express.js +0 -110
  757. package/dist/types/server/impls/fastify.js +0 -120
  758. package/dist/types/server/middlewares/index.js +0 -1
  759. package/dist/types/server/middlewares/requireAuthUser.js +0 -21
  760. package/dist/types/server/openapi.js +0 -190
  761. package/dist/types/server/pipes.js +0 -66
  762. package/dist/types/server/requests-auth-methods/apiKeys.js +0 -20
  763. package/dist/types/server/requests-auth-methods/base.js +0 -19
  764. package/dist/types/server/requests-auth-methods/index.js +0 -3
  765. package/dist/types/server/requests-auth-methods/jwt.js +0 -77
  766. package/dist/types/server/requests.js +0 -79
  767. package/dist/types/server/routes.js +0 -73
  768. package/dist/types/server/sockets.js +0 -125
  769. package/dist/types/server/types.js +0 -33
  770. package/dist/types/types/overrides.js +0 -0
  771. package/dist/types/utilities/authProviders.js +0 -52
  772. package/dist/types/utilities/hash.js +0 -16
  773. package/dist/types/utilities/json.js +0 -15
  774. package/dist/types/utilities/media.js +0 -12
  775. package/dist/types/utilities/random.js +0 -11
  776. package/dist/types/utilities/retry.js +0 -13
  777. package/dist/types/validations/valleyed.js +0 -42
  778. /package/dist/esm/{dbs/base/core.min.mjs.map → cache/adapters/redis/index.min.mjs.map} +0 -0
  779. /package/dist/esm/{dbs/base/core.mjs.map → cache/adapters/redis/index.mjs.map} +0 -0
  780. /package/dist/esm/{types/overrides.min.mjs.map → chunk-AQY7QVYI.min.mjs.map} +0 -0
  781. /package/dist/esm/{types/overrides.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/orm/adapters/in-memory/index.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport { v, differ } from 'valleyed'\n\nimport { configurable } from '../../../utilities/configurable'\nimport type { FieldTypeName } from '../../adapter'\nimport { Filter, FilterGroup, type FilterChild } from '../../filter'\nimport type { DiscoveredSchema, ForeignKeyAction } from '../../migrations/introspection-types'\nimport type { AddFieldChange, AddForeignKeyChange, AddIndexChange, AnyFieldSpec, CreateTableChange, DropFieldChange, DropForeignKeyChange, DropIndexChange, DropTableChange, ModifyFieldChange, RenameFieldChange, RenameTableChange } from '../../migrations/types'\nimport { OrmAdapter, type AggregateSpec } from '../../orm-adapter'\nimport type { IterationQueryOptions, QueryOptions } from '../../query-options'\nimport type { AnySchema } from '../../schema'\nimport { IncOp, MaxOp, MinOp, MulOp, PatchOp, PullOp, PushOp, SetOp, UnsetOp, type AnyUpdateOp } from '../../updates'\n\nconst inMemoryConnectionPipe = () => v.object({})\n\nexport type InMemoryRepoConfig = {\n\ttable: string\n\tprefix?: string\n}\n\ntype MigrationRecord = { id: string; appliedAt: number }\ntype TableMeta = { pk: { name: string; type: string }; fields: Map<string, AnyFieldSpec> }\ntype IndexMeta = { table: string; on: readonly string[]; unique: boolean }\ntype ForeignKeyMeta = { table: string; on: string; references: { table: string; column: string }; onDelete?: ForeignKeyAction; onUpdate?: ForeignKeyAction }\n\ntype Snapshot = {\n\tstores: Map<string, Map<string, Record<string, unknown>>>\n\tmigrations: Map<string, MigrationRecord>\n\tindexes: Map<string, IndexMeta>\n\ttables: Map<string, TableMeta>\n\tforeignKeys: Map<string, ForeignKeyMeta>\n}\n\nfunction clone<T>(value: T): T {\n\treturn structuredClone(value)\n}\n\nconst replaceMap = <K, V>(target: Map<K, V>, source: Map<K, V>) => {\n\ttarget.clear()\n\tfor (const [k, val] of source.entries()) target.set(k, val)\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction containsSubset(source: unknown, needle: unknown): boolean {\n\tif (Array.isArray(source)) {\n\t\tconst wanted = Array.isArray(needle) ? needle : [needle]\n\t\treturn wanted.every((item) => source.some((existing) => differ.equal(existing, item)))\n\t}\n\n\tif (isPlainObject(source) && isPlainObject(needle)) {\n\t\treturn Object.entries(needle).every(([k, v]) => containsSubset(source[k], v))\n\t}\n\n\treturn differ.equal(source, needle)\n}\n\nfunction compareValues(a: unknown, b: unknown): number {\n\tif (a === b) return 0\n\tif (a == null) return -1\n\tif (b == null) return 1\n\tif (typeof a === 'number' && typeof b === 'number') return a < b ? -1 : 1\n\tif (typeof a === 'string' && typeof b === 'string') return a < b ? -1 : 1\n\tif (typeof a === 'boolean' && typeof b === 'boolean') return a === false ? -1 : 1\n\tconst sa = JSON.stringify(a)\n\tconst sb = JSON.stringify(b)\n\tif (sa === sb) return 0\n\treturn sa < sb ? -1 : 1\n}\n\nfunction resolveConfigName(_: AnySchema, config: InMemoryRepoConfig): string {\n\treturn `${config.prefix ?? ''}${config.table}`\n}\n\nfunction evaluateFilter(doc: Record<string, unknown>, filter: Filter): boolean {\n\tconst fieldValue = doc[filter.field]\n\tconst value = filter.value\n\n\tswitch (filter.op) {\n\t\tcase 'eq':\n\t\t\treturn differ.equal(fieldValue, value)\n\t\tcase 'ne':\n\t\t\treturn !differ.equal(fieldValue, value)\n\t\tcase 'gt':\n\t\t\treturn compareValues(fieldValue, value) > 0\n\t\tcase 'gte':\n\t\t\treturn compareValues(fieldValue, value) >= 0\n\t\tcase 'lt':\n\t\t\treturn compareValues(fieldValue, value) < 0\n\t\tcase 'lte':\n\t\t\treturn compareValues(fieldValue, value) <= 0\n\t\tcase 'in': {\n\t\t\tif (!Array.isArray(value)) return false\n\t\t\treturn value.some((v) => differ.equal(fieldValue, v))\n\t\t}\n\t\tcase 'notIn': {\n\t\t\tif (!Array.isArray(value)) return true\n\t\t\treturn !value.some((v) => differ.equal(fieldValue, v))\n\t\t}\n\t\tcase 'like':\n\t\t\treturn String(fieldValue ?? '')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.includes(String(value ?? '').toLowerCase())\n\t\tcase 'exists':\n\t\t\treturn fieldValue != null\n\t\tcase 'notExists':\n\t\t\treturn fieldValue == null\n\t\tcase 'contains':\n\t\t\treturn containsSubset(fieldValue, value)\n\t\tcase 'notContains':\n\t\t\treturn !containsSubset(fieldValue, value)\n\t\tdefault:\n\t\t\treturn false\n\t}\n}\n\nfunction evaluateChild(doc: Record<string, unknown>, child: FilterChild): boolean {\n\tif (child instanceof Filter) return evaluateFilter(doc, child)\n\tif (child instanceof FilterGroup) {\n\t\tif (child.op === 'and') return child.children.every((c) => evaluateChild(doc, c))\n\t\tif (child.op === 'or') return child.children.some((c) => evaluateChild(doc, c))\n\t}\n\treturn true\n}\n\nfunction matchesFilter(doc: Record<string, unknown>, group: FilterGroup): boolean {\n\tfor (const clause of group.children) {\n\t\tif (!evaluateChild(doc, clause)) return false\n\t}\n\treturn true\n}\n\nfunction applyOptions(rows: Record<string, unknown>[], options?: QueryOptions): Record<string, unknown>[] {\n\tlet results = rows\n\n\tif (options?.orderBy?.length) {\n\t\tresults = [...results].sort((a, b) => {\n\t\t\tfor (const ord of options.orderBy ?? []) {\n\t\t\t\tconst cmp = compareValues(a[ord.field], b[ord.field])\n\t\t\t\tif (cmp !== 0) return ord.direction === 'asc' ? cmp : -cmp\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\t}\n\n\tif (options?.offset != null) {\n\t\tresults = results.slice(Math.max(0, options.offset))\n\t}\n\n\tif (options?.limit != null) {\n\t\tresults = results.slice(0, options.limit)\n\t}\n\n\tif (options?.select?.length) {\n\t\tconst fields = new Set<string>(options.select)\n\t\tresults = results.map((row) => {\n\t\t\tconst out: Record<string, unknown> = {}\n\t\t\tfor (const key of fields) out[key] = row[key]\n\t\t\treturn out\n\t\t})\n\t}\n\n\treturn results\n}\n\nfunction applyUpdateOp(current: Record<string, unknown>, key: string, value: unknown) {\n\tif (value instanceof IncOp) {\n\t\tconst base = Number(current[key] ?? 0)\n\t\tcurrent[key] = base + value.value\n\t\treturn\n\t}\n\tif (value instanceof MulOp) {\n\t\tconst base = Number(current[key] ?? 0)\n\t\tcurrent[key] = base * value.value\n\t\treturn\n\t}\n\tif (value instanceof MinOp) {\n\t\tconst base = current[key]\n\t\tcurrent[key] = base == null || compareValues(value.value, base) < 0 ? value.value : base\n\t\treturn\n\t}\n\tif (value instanceof MaxOp) {\n\t\tconst base = current[key]\n\t\tcurrent[key] = base == null || compareValues(value.value, base) > 0 ? value.value : base\n\t\treturn\n\t}\n\tif (value instanceof UnsetOp) {\n\t\tcurrent[key] = null\n\t\treturn\n\t}\n\tif (value instanceof PushOp) {\n\t\tconst arr = Array.isArray(current[key]) ? [...(current[key] as unknown[])] : []\n\t\tarr.push(clone(value.value))\n\t\tcurrent[key] = arr\n\t\treturn\n\t}\n\tif (value instanceof PullOp) {\n\t\tconst arr = Array.isArray(current[key]) ? (current[key] as unknown[]) : []\n\t\tcurrent[key] = arr.filter((entry) => !differ.equal(entry, value.value))\n\t\treturn\n\t}\n\tif (value instanceof PatchOp) {\n\t\tconst target = isPlainObject(current[key]) ? clone(current[key] as Record<string, unknown>) : {}\n\t\tif (isPlainObject(value.value)) {\n\t\t\tfor (const [k, v] of Object.entries(value.value as Record<string, unknown>)) {\n\t\t\t\ttarget[k] = clone(v)\n\t\t\t}\n\t\t}\n\t\tcurrent[key] = target\n\t\treturn\n\t}\n\tcurrent[key] = clone(value)\n}\n\nfunction applyUpdateData(doc: Record<string, unknown>, data: Record<string, unknown>): Record<string, unknown> {\n\tconst updated = clone(doc)\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tapplyUpdateOp(updated, key, value)\n\t}\n\treturn updated\n}\n\nfunction applyOps(doc: Record<string, unknown>, ops: AnyUpdateOp[]): Record<string, unknown> {\n\tconst updated = clone(doc)\n\tfor (const op of ops) {\n\t\tif (op instanceof SetOp) {\n\t\t\tfor (const [key, value] of Object.entries(op.values)) {\n\t\t\t\tupdated[key] = clone(value)\n\t\t\t}\n\t\t} else {\n\t\t\tapplyUpdateOp(updated, op.field, op)\n\t\t}\n\t}\n\treturn updated\n}\n\nconst sessionActiveStore = new AsyncLocalStorage<boolean>()\n\nexport class InMemoryAdapter extends configurable(inMemoryConnectionPipe, OrmAdapter) {\n\treadonly schemaConfigPipe = v.object({ table: v.string() })\n\n\treadonly supportedFieldTypes = ['string', 'number', 'boolean', 'null', 'object', 'array', 'date'] as const\n\treadonly queryableOps = ['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'notIn', 'like', 'exists', 'notExists', 'contains', 'notContains'] as const\n\treadonly updateOps = ['set', 'inc', 'mul', 'min', 'max', 'unset', 'push', 'pull', 'patch'] as const\n\treadonly aggregateOps = ['count', 'countDistinct', 'sum', 'avg', 'min', 'max'] as const\n\n\treadonly stores = new Map<string, Map<string, Record<string, unknown>>>()\n\treadonly migrations = new Map<string, MigrationRecord>()\n\treadonly indexes = new Map<string, IndexMeta>()\n\treadonly tables = new Map<string, TableMeta>()\n\treadonly foreignKeys = new Map<string, ForeignKeyMeta>()\n\n\t#migrationLock: Promise<void> = Promise.resolve()\n\n\tprotected constructor(config: typeof InMemoryAdapter.Config) {\n\t\tsuper(config)\n\t}\n\n\t#getStore(name: string) {\n\t\tif (!this.stores.has(name)) this.stores.set(name, new Map())\n\t\treturn this.stores.get(name)!\n\t}\n\n\t#resolveStore(schema: AnySchema, config: unknown) {\n\t\treturn this.#getStore(resolveConfigName(schema, config as InMemoryRepoConfig))\n\t}\n\n\t#snapshot(): Snapshot {\n\t\tconst stores = new Map<string, Map<string, Record<string, unknown>>>()\n\t\tfor (const [name, store] of this.stores.entries()) {\n\t\t\tconst storeCopy = new Map<string, Record<string, unknown>>()\n\t\t\tfor (const [id, doc] of store.entries()) {\n\t\t\t\tstoreCopy.set(id, clone(doc))\n\t\t\t}\n\t\t\tstores.set(name, storeCopy)\n\t\t}\n\t\tconst migrations = new Map(this.migrations)\n\t\tconst indexes = new Map(this.indexes)\n\t\tconst tables = new Map<string, TableMeta>()\n\t\tfor (const [name, meta] of this.tables.entries()) {\n\t\t\ttables.set(name, { pk: { ...meta.pk }, fields: new Map(meta.fields) })\n\t\t}\n\t\tconst foreignKeys = new Map(this.foreignKeys)\n\t\treturn { stores, migrations, indexes, tables, foreignKeys }\n\t}\n\n\t#restore(snap: Snapshot) {\n\t\treplaceMap(this.stores, snap.stores)\n\t\treplaceMap(this.migrations, snap.migrations)\n\t\treplaceMap(this.indexes, snap.indexes)\n\t\treplaceMap(this.tables, snap.tables)\n\t\treplaceMap(this.foreignKeys, snap.foreignKeys)\n\t}\n\n\tasync findByPk(schema: AnySchema, config: unknown, pk: unknown) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst doc = store.get(String(pk))\n\t\treturn doc ? clone(doc) : null\n\t}\n\n\tasync createMany(schema: AnySchema, config: unknown, data: Record<string, unknown>[]) {\n\t\tconst pk = schema.pkField.name\n\t\tconst store = this.#resolveStore(schema, config)\n\t\treturn data.map((d) => {\n\t\t\tconst row = clone(d)\n\t\t\tstore.set(String(row[pk]), row)\n\t\t\treturn clone(row)\n\t\t})\n\t}\n\n\tasync deleteByPk(schema: AnySchema, config: unknown, pk: unknown) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pkStr = String(pk)\n\t\tconst doc = store.get(pkStr)\n\t\tif (!doc) return null\n\t\tstore.delete(pkStr)\n\t\treturn clone(doc)\n\t}\n\n\tasync updateByPk(schema: AnySchema, config: unknown, pk: unknown, ops: AnyUpdateOp[]) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pkStr = String(pk)\n\t\tconst doc = store.get(pkStr)\n\t\tif (!doc) return null\n\t\tconst updated = applyOps(doc, ops)\n\t\tstore.set(pkStr, updated)\n\t\treturn clone(updated)\n\t}\n\n\tasync findMany(schema: AnySchema, config: unknown, group: FilterGroup, options?: QueryOptions) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst rows = [...store.values()].filter((doc) => matchesFilter(doc, group)).map((doc) => clone(doc))\n\t\treturn applyOptions(rows, options)\n\t}\n\n\tasync count(schema: AnySchema, config: unknown, group: FilterGroup) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\treturn [...store.values()].filter((doc) => matchesFilter(doc, group)).length\n\t}\n\n\tasync *iterateMany(schema: AnySchema, config: unknown, group: FilterGroup, options?: IterationQueryOptions) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst rows = applyOptions([...store.values()].filter((doc) => matchesFilter(doc, group)).map((doc) => clone(doc)), options)\n\t\tconst batchSize = typeof options?.batchSize === 'number' && Number.isSafeInteger(options.batchSize) && options.batchSize > 0 ? options.batchSize : 1\n\t\tfor (let start = 0; start < rows.length; start += batchSize) {\n\t\t\tfor (const row of rows.slice(start, start + batchSize)) {\n\t\t\t\tyield row\n\t\t\t}\n\t\t}\n\t}\n\n\tasync updateMany(schema: AnySchema, config: unknown, group: FilterGroup, data: Record<string, unknown>) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst ids = [...store.entries()].filter(([, doc]) => matchesFilter(doc, group)).map(([id]) => id)\n\n\t\tconst updated: Record<string, unknown>[] = []\n\t\tfor (const id of ids) {\n\t\t\tconst current = store.get(id)\n\t\t\tif (!current) continue\n\t\t\tconst next = applyUpdateData(current, data)\n\t\t\tstore.set(id, next)\n\t\t\tupdated.push(clone(next))\n\t\t}\n\t\treturn updated\n\t}\n\n\tasync deleteMany(schema: AnySchema, config: unknown, filter: FilterGroup) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pk = schema.pkField.name\n\t\tconst rows = [...store.values()].filter((doc) => matchesFilter(doc, filter)).map((doc) => clone(doc))\n\t\tfor (const row of rows) store.delete(String(row[pk]))\n\t\treturn rows\n\t}\n\n\tasync upsertOne(schema: AnySchema, config: unknown, filter: FilterGroup, create: Record<string, unknown>, ops: AnyUpdateOp[]) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pk = schema.pkField.name\n\t\tconst rows = [...store.values()].filter((doc) => matchesFilter(doc, filter))\n\t\tconst current = rows[0]\n\t\tif (current) {\n\t\t\tconst next = ops.length > 0 ? applyOps(current, ops) : clone(current)\n\t\t\tstore.set(String(next[pk]), next)\n\t\t\treturn clone(next)\n\t\t}\n\t\tconst base = clone(create)\n\t\tconst result = ops.length > 0 ? applyOps(base, ops) : base\n\t\tstore.set(String(result[pk]), result)\n\t\treturn clone(result)\n\t}\n\n\tasync aggregate(schema: AnySchema, config: unknown, spec: AggregateSpec): Promise<Array<Record<string, unknown>>> {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tlet rows = [...store.values()]\n\t\tif (spec.where) {\n\t\t\tconst where = spec.where\n\t\t\trows = rows.filter((doc) => matchesFilter(doc, where))\n\t\t}\n\n\t\tconst groups = new Map<string, Record<string, unknown>[]>()\n\t\tif (spec.groupBy.length > 0) {\n\t\t\tfor (const row of rows) {\n\t\t\t\tconst key = JSON.stringify(spec.groupBy.map((f) => row[f]))\n\t\t\t\tif (!groups.has(key)) groups.set(key, [])\n\t\t\t\tgroups.get(key)!.push(row)\n\t\t\t}\n\t\t} else {\n\t\t\tgroups.set('__all__', rows)\n\t\t}\n\n\t\tconst results: Record<string, unknown>[] = []\n\t\tfor (const [, groupRows] of groups) {\n\t\t\tconst result: Record<string, unknown> = {}\n\t\t\tif (spec.groupBy.length > 0) {\n\t\t\t\tfor (const field of spec.groupBy) {\n\t\t\t\t\tresult[field] = groupRows[0][field]\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const agg of spec.aggregates) {\n\t\t\t\tswitch (agg.fn) {\n\t\t\t\t\tcase 'count':\n\t\t\t\t\t\tresult[agg.alias] = groupRows.length\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'countDistinct': {\n\t\t\t\t\t\tconst vals = new Set(groupRows.map((r) => JSON.stringify(r[agg.field!])))\n\t\t\t\t\t\tresult[agg.alias] = vals.size\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'sum':\n\t\t\t\t\t\tresult[agg.alias] = groupRows.reduce((acc, r) => acc + Number(r[agg.field!] ?? 0), 0)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'avg': {\n\t\t\t\t\t\tconst sum = groupRows.reduce((acc, r) => acc + Number(r[agg.field!] ?? 0), 0)\n\t\t\t\t\t\tresult[agg.alias] = groupRows.length > 0 ? sum / groupRows.length : 0\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'min': {\n\t\t\t\t\t\tlet minVal: unknown = null\n\t\t\t\t\t\tfor (const r of groupRows) {\n\t\t\t\t\t\t\tconst val = r[agg.field!]\n\t\t\t\t\t\t\tif (val != null && (minVal === null || compareValues(val, minVal) < 0)) minVal = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult[agg.alias] = minVal\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'max': {\n\t\t\t\t\t\tlet maxVal: unknown = null\n\t\t\t\t\t\tfor (const r of groupRows) {\n\t\t\t\t\t\t\tconst val = r[agg.field!]\n\t\t\t\t\t\t\tif (val != null && (maxVal === null || compareValues(val, maxVal) > 0)) maxVal = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult[agg.alias] = maxVal\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tresults.push(result)\n\t\t}\n\n\t\tif (spec.having) {\n\t\t\tconst having = spec.having\n\t\t\treturn results.filter((r) => matchesFilter(r, having))\n\t\t}\n\t\treturn results\n\t}\n\n\tasync loadMigrations(): Promise<{ id: string; appliedAt: number }[]> {\n\t\treturn [...this.migrations.values()].map((m) => ({ id: m.id, appliedAt: m.appliedAt }))\n\t}\n\n\tasync recordMigration(id: string, appliedAt: number): Promise<void> {\n\t\tthis.migrations.set(id, { id, appliedAt })\n\t}\n\n\tasync applyCreateTable(change: CreateTableChange<any>): Promise<void> {\n\t\tconst fields = new Map<string, AnyFieldSpec>()\n\t\tfor (const f of change.fields) {\n\t\t\tfields.set(f.name, { ...f })\n\t\t}\n\t\tthis.tables.set(change.name, { pk: { name: change.pk.name, type: change.pk.type }, fields })\n\t}\n\n\tasync applyDropTable(change: DropTableChange): Promise<void> {\n\t\tthis.tables.delete(change.name)\n\t}\n\n\tasync applyAddField(change: AddFieldChange<any>): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\ttable.fields.set(change.field.name, { ...change.field })\n\t\t}\n\t}\n\n\tasync applyDropField(change: DropFieldChange): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\ttable.fields.delete(change.name)\n\t\t}\n\t}\n\n\tasync applyModifyField(change: ModifyFieldChange<any>): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\ttable.fields.delete(change.name)\n\t\t\ttable.fields.set(change.to.name, { ...change.to })\n\t\t}\n\t}\n\n\tasync applyRenameTable(change: RenameTableChange): Promise<void> {\n\t\tconst table = this.tables.get(change.from)\n\t\tif (table) {\n\t\t\tthis.tables.delete(change.from)\n\t\t\tthis.tables.set(change.to, table)\n\t\t}\n\t}\n\n\tasync applyRenameField(change: RenameFieldChange): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\tconst field = table.fields.get(change.from)\n\t\t\tif (field) {\n\t\t\t\ttable.fields.delete(change.from)\n\t\t\t\ttable.fields.set(change.to, { ...field, name: change.to })\n\t\t\t}\n\t\t}\n\t}\n\n\tasync applyAddIndex(change: AddIndexChange): Promise<void> {\n\t\tconst indexName = change.name ?? `${change.table}_${change.on.join('_')}_idx`\n\t\tthis.indexes.set(indexName, { table: change.table, on: change.on, unique: change.unique ?? false })\n\t}\n\n\tasync applyDropIndex(change: DropIndexChange): Promise<void> {\n\t\tthis.indexes.delete(change.name)\n\t}\n\n\tasync applyAddForeignKey(change: AddForeignKeyChange): Promise<void> {\n\t\tconst fkName = change.name ?? `${change.table}_${change.on}_fk`\n\t\tthis.foreignKeys.set(fkName, {\n\t\t\ttable: change.table,\n\t\t\ton: change.on,\n\t\t\treferences: { table: change.references.table, column: change.references.column },\n\t\t\tonDelete: change.onDelete as ForeignKeyAction | undefined,\n\t\t\tonUpdate: change.onUpdate as ForeignKeyAction | undefined,\n\t\t})\n\t}\n\n\tasync applyDropForeignKey(change: DropForeignKeyChange): Promise<void> {\n\t\tthis.foreignKeys.delete(change.name)\n\t}\n\n\tasync introspect(): Promise<DiscoveredSchema[]> {\n\t\tconst schemas: DiscoveredSchema[] = []\n\t\tfor (const [name, meta] of this.tables.entries()) {\n\t\t\tconst fields = [...meta.fields.values()].map((f) => ({\n\t\t\t\tname: f.name,\n\t\t\t\ttype: f.type as FieldTypeName,\n\t\t\t\tnullable: f.nullable ?? false,\n\t\t\t\t...(f.default !== undefined ? { default: f.default } : {}),\n\t\t\t\t...(f.unique ? { unique: true } : {}),\n\t\t\t}))\n\t\t\tconst indexes = [...this.indexes.entries()]\n\t\t\t\t.filter(([, idx]) => idx.table === name)\n\t\t\t\t.map(([idxName, idx]) => ({ name: idxName, on: idx.on, unique: idx.unique }))\n\t\t\tconst foreignKeys = [...this.foreignKeys.entries()]\n\t\t\t\t.filter(([, fk]) => fk.table === name)\n\t\t\t\t.map(([fkName, fk]) => ({\n\t\t\t\t\tname: fkName,\n\t\t\t\t\ton: fk.on,\n\t\t\t\t\treferences: { table: fk.references.table, column: fk.references.column },\n\t\t\t\t\t...(fk.onDelete ? { onDelete: fk.onDelete } : {}),\n\t\t\t\t\t...(fk.onUpdate ? { onUpdate: fk.onUpdate } : {}),\n\t\t\t\t}))\n\t\t\tschemas.push({\n\t\t\t\tname,\n\t\t\t\tpk: { name: meta.pk.name, type: meta.pk.type as FieldTypeName },\n\t\t\t\tfields,\n\t\t\t\tindexes,\n\t\t\t\tforeignKeys,\n\t\t\t})\n\t\t}\n\t\treturn schemas\n\t}\n\n\tasync acquireMigrationLock<T>(fn: () => Promise<T>): Promise<T> {\n\t\tlet release!: () => void\n\t\tconst next = new Promise<void>((r) => { release = r })\n\t\tconst prev = this.#migrationLock\n\t\tthis.#migrationLock = next\n\t\tawait prev\n\t\ttry {\n\t\t\treturn await fn()\n\t\t} finally {\n\t\t\trelease()\n\t\t}\n\t}\n\n\tasync session<T>(fn: () => Promise<T>): Promise<T> {\n\t\tif (sessionActiveStore.getStore()) return fn()\n\t\tconst snap = this.#snapshot()\n\t\ttry {\n\t\t\treturn await sessionActiveStore.run(true, fn)\n\t\t} catch (error) {\n\t\t\tthis.#restore(snap)\n\t\t\tthrow error\n\t\t}\n\t}\n}\n\nif (import.meta.vitest) {\n\tconst { describe, test, expect } = import.meta.vitest\n\tconst { FilterGroup } = await import('../../filter')\n\tconst { OrderBy } = await import('../../query-options')\n\tconst { Schema } = await import('../../schema')\n\tconst { IncOp, PatchOp, PullOp, PushOp } = await import('../../updates')\n\n\tconst { v } = await import('valleyed')\n\n\tdescribe('in-memory adapter', () => {\n\t\ttest('InMemoryAdapter.create({}) produces a working adapter', () => {\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\texpect(adapter).toBeInstanceOf(InMemoryAdapter)\n\t\t\texpect(adapter.schemaConfigPipe).toBeDefined()\n\t\t\texpect(adapter.supportedFieldTypes).toEqual(['string', 'number', 'boolean', 'null', 'object', 'array', 'date'])\n\t\t})\n\n\t\ttest('supports nested filters, ordering, select, offset and limit', async () => {\n\t\t\tconst schema = Schema.from('users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.field('age', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice', age: 30 },\n\t\t\t\t{ id: 'u2', name: 'Bob', age: 20 },\n\t\t\t\t{ id: 'u3', name: 'Carol', age: 40 },\n\t\t\t])\n\t\t\tconst builtGroup = FilterGroup.create().and([\n\t\t\t\t(q) => q.gt('age', 19),\n\t\t\t\t(q) => q.or([(g) => g.eq('name', 'Alice'), (g) => g.eq('name', 'Carol')]),\n\t\t\t])\n\t\t\tconst options = { orderBy: [new OrderBy('age', 'desc')], offset: 1, limit: 1, select: ['id', 'name'] }\n\t\t\tconst rows = await use.findMany(builtGroup, options)\n\t\t\texpect(rows).toEqual([{ id: 'u1', name: 'Alice' }])\n\t\t})\n\n\t\ttest('count returns the number of matching rows without query options', async () => {\n\t\t\tconst schema = Schema.from('count_users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'count_users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice' },\n\t\t\t\t{ id: 'u2', name: 'Bob' },\n\t\t\t\t{ id: 'u3', name: 'Alice' },\n\t\t\t])\n\n\t\t\tawait expect(use.count(FilterGroup.create().eq('name', 'Alice'))).resolves.toBe(2)\n\t\t})\n\n\t\ttest('iterateMany with batchSize matches findMany filtering ordering offset limit and selection', async () => {\n\t\t\tconst schema = Schema.from('iter_users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.field('age', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'iter_users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice', age: 30 },\n\t\t\t\t{ id: 'u2', name: 'Bob', age: 20 },\n\t\t\t\t{ id: 'u3', name: 'Carol', age: 40 },\n\t\t\t\t{ id: 'u4', name: 'Dan', age: 50 },\n\t\t\t])\n\n\t\t\tconst filter = FilterGroup.create().gt('age', 19)\n\t\t\tconst options = {\n\t\t\t\torderBy: [new OrderBy('age', 'desc')],\n\t\t\t\toffset: 1,\n\t\t\t\tlimit: 2,\n\t\t\t\tselect: ['id', 'name'],\n\t\t\t}\n\t\t\tconst expected = await use.findMany(filter, options)\n\t\t\tconst rows: Record<string, unknown>[] = []\n\t\t\tfor await (const row of use.iterateMany(filter, { ...options, batchSize: 2 })) {\n\t\t\t\trows.push(row)\n\t\t\t}\n\n\t\t\texpect(rows).toEqual(expected)\n\t\t\texpect(rows).toEqual([\n\t\t\t\t{ id: 'u3', name: 'Carol' },\n\t\t\t\t{ id: 'u1', name: 'Alice' },\n\t\t\t])\n\t\t})\n\n\t\ttest('supports update operators and rollback on failed session', async () => {\n\t\t\tconst schema = Schema.from('docs')\n\t\t\t\t.pk('id', v.string(), () => 'd1')\n\t\t\t\t.field('count', v.number())\n\t\t\t\t.field('tags', v.array(v.string()))\n\t\t\t\t.field('meta', v.object({ a: v.number() }))\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'docs' })\n\t\t\tawait use.createOne({ id: 'd1', count: 1, tags: ['x'], meta: { a: 1 } })\n\n\t\t\tawait adapter.session(async () => {\n\t\t\t\tawait use.updateOne(FilterGroup.create().eq('id', 'd1'), {\n\t\t\t\t\tcount: new IncOp('count', 2),\n\t\t\t\t\ttags: new PushOp('tags', 'y'),\n\t\t\t\t\tmeta: new PatchOp('meta', { a: 9 }),\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tawait expect(\n\t\t\t\tadapter.session(async () => {\n\t\t\t\t\tawait use.updateOne(FilterGroup.create().eq('id', 'd1'), { tags: new PullOp('tags', 'x') })\n\t\t\t\t\tthrow new Error('boom')\n\t\t\t\t}),\n\t\t\t).rejects.toThrow('boom')\n\n\t\t\tconst row = await use.findOne(FilterGroup.create().eq('id', 'd1'))\n\t\t\texpect(row).toEqual({ id: 'd1', count: 3, tags: ['x', 'y'], meta: { a: 9 } })\n\t\t})\n\n\t\ttest('notIn filter excludes matching values', async () => {\n\t\t\tconst schema = Schema.from('users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice' },\n\t\t\t\t{ id: 'u2', name: 'Bob' },\n\t\t\t\t{ id: 'u3', name: 'Carol' },\n\t\t\t])\n\t\t\tconst rows = await use.findMany(FilterGroup.create().notIn('name', ['Alice', 'Carol']))\n\t\t\texpect(rows).toHaveLength(1)\n\t\t\texpect(rows[0].name).toBe('Bob')\n\t\t})\n\n\t\ttest('exists / notExists filter ops work correctly', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'i')\n\t\t\t\t.field('val', v.optional(v.string()), { onCreate: () => undefined })\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', val: 'present' },\n\t\t\t\t{ id: 'i2', val: null },\n\t\t\t\t{ id: 'i3', val: undefined },\n\t\t\t])\n\t\t\tconst existsRows = await use.findMany(FilterGroup.create().exists('val'))\n\t\t\texpect(existsRows).toHaveLength(1)\n\t\t\texpect(existsRows[0].id).toBe('i1')\n\n\t\t\tconst notExistsRows = await use.findMany(FilterGroup.create().notExists('val'))\n\t\t\texpect(notExistsRows).toHaveLength(2)\n\t\t})\n\n\t\ttest('findByPk returns seeded document and null for missing', async () => {\n\t\t\tconst schema = Schema.from('test')\n\t\t\t\t.pk('id', v.string(), () => 'gen')\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\n\t\t\tconst use = adapter.use(schema, { table: 'test' })\n\t\t\tawait use.createOne({ id: 'x' })\n\n\t\t\tconst found = await adapter.findByPk(schema, { table: 'test' }, 'x')\n\t\t\texpect(found).toEqual({ id: 'x' })\n\n\t\t\tconst missing = await adapter.findByPk(schema, { table: 'test' }, 'missing')\n\t\t\texpect(missing).toBeNull()\n\t\t})\n\n\t\ttest('auto-wired Instance hooks register correctly keyed by class', async () => {\n\t\t\tconst { Instance: Inst } = await import('../../../instance')\n\t\t\tconst onSpy = (await import('vitest')).vi.spyOn(Inst, 'on').mockImplementation(() => {})\n\n\t\t\tInMemoryAdapter.create({})\n\n\t\t\texpect(onSpy).not.toHaveBeenCalled()\n\n\t\t\tonSpy.mockRestore()\n\t\t})\n\n\t\ttest('declares aggregateOps with all six canonical ops', () => {\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\texpect(adapter.aggregateOps).toEqual(['count', 'countDistinct', 'sum', 'avg', 'min', 'max'])\n\t\t})\n\n\t\ttest('aggregate count returns correct total', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => `i-${Math.random().toString(36).slice(2, 8)}`)\n\t\t\t\t.field('category', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', category: 'A' },\n\t\t\t\t{ id: 'i2', category: 'B' },\n\t\t\t\t{ id: 'i3', category: 'A' },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'count', alias: 'total' }],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 3 }])\n\t\t})\n\n\t\ttest('aggregate count with where filter', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => `i-${Math.random().toString(36).slice(2, 8)}`)\n\t\t\t\t.field('category', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', category: 'A' },\n\t\t\t\t{ id: 'i2', category: 'B' },\n\t\t\t\t{ id: 'i3', category: 'A' },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'count', alias: 'total' }],\n\t\t\t\tgroupBy: [],\n\t\t\t\twhere: FilterGroup.create().eq('category', 'A'),\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 2 }])\n\t\t})\n\n\t\ttest('aggregate count on empty store returns zero', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'count', alias: 'total' }],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 0 }])\n\t\t})\n\n\t\ttest('aggregate sum/avg/min/max compute correctly', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('price', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', price: 10 },\n\t\t\t\t{ id: 'i2', price: 20 },\n\t\t\t\t{ id: 'i3', price: 30 },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [\n\t\t\t\t\t{ fn: 'sum', field: 'price', alias: 'total' },\n\t\t\t\t\t{ fn: 'avg', field: 'price', alias: 'avg' },\n\t\t\t\t\t{ fn: 'min', field: 'price', alias: 'low' },\n\t\t\t\t\t{ fn: 'max', field: 'price', alias: 'high' },\n\t\t\t\t],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 60, avg: 20, low: 10, high: 30 }])\n\t\t})\n\n\t\ttest('aggregate countDistinct counts unique values', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('category', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', category: 'A' },\n\t\t\t\t{ id: 'i2', category: 'B' },\n\t\t\t\t{ id: 'i3', category: 'A' },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'countDistinct', field: 'category', alias: 'unique' }],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ unique: 2 }])\n\t\t})\n\n\t\ttest('aggregate groupBy produces per-group results', async () => {\n\t\t\tconst schema = Schema.from('orders')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('region', v.string())\n\t\t\t\t.field('amount', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'orders' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'o1', region: 'US', amount: 10 },\n\t\t\t\t{ id: 'o2', region: 'EU', amount: 20 },\n\t\t\t\t{ id: 'o3', region: 'US', amount: 30 },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'orders' }, {\n\t\t\t\taggregates: [\n\t\t\t\t\t{ fn: 'count', alias: 'cnt' },\n\t\t\t\t\t{ fn: 'sum', field: 'amount', alias: 'total' },\n\t\t\t\t],\n\t\t\t\tgroupBy: ['region'],\n\t\t\t})\n\t\t\texpect(result).toHaveLength(2)\n\t\t\tconst us = result.find((r) => r.region === 'US')\n\t\t\tconst eu = result.find((r) => r.region === 'EU')\n\t\t\texpect(us).toEqual({ region: 'US', cnt: 2, total: 40 })\n\t\t\texpect(eu).toEqual({ region: 'EU', cnt: 1, total: 20 })\n\t\t})\n\n\t\ttest('aggregate having filters post-aggregation', async () => {\n\t\t\tconst schema = Schema.from('orders')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('region', v.string())\n\t\t\t\t.field('amount', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'orders' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'o1', region: 'US', amount: 10 },\n\t\t\t\t{ id: 'o2', region: 'EU', amount: 20 },\n\t\t\t\t{ id: 'o3', region: 'US', amount: 30 },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'orders' }, {\n\t\t\t\taggregates: [{ fn: 'sum', field: 'amount', alias: 'total' }],\n\t\t\t\tgroupBy: ['region'],\n\t\t\t\thaving: FilterGroup.create().gt('total', 25),\n\t\t\t})\n\t\t\texpect(result).toHaveLength(1)\n\t\t\texpect(result[0]).toEqual({ region: 'US', total: 40 })\n\t\t})\n\t})\n}\n"],"mappings":"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","names":["v","FilterGroup","IncOp","PatchOp","PullOp","PushOp"]}
@@ -0,0 +1,8 @@
1
+ // src/events/adapters/base.ts
2
+ var EventBus = class {
3
+ };
4
+
5
+ export {
6
+ EventBus
7
+ };
8
+ //# sourceMappingURL=chunk-VCCS7CAI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/events/adapters/base.ts"],"sourcesContent":["import type { Events } from '../../types'\n\nexport type StreamOptions = { skipScope?: boolean; fanout: boolean }\n\nexport type Stream<EventData> = {\n\tpublish: (data: EventData) => Promise<boolean>\n\tsubscribe: (onMessage: (data: EventData) => Promise<void>) => void\n}\n\nexport abstract class EventBus {\n\tabstract stream<Event extends Events[keyof Events]>(topic: Event['topic'], options?: Partial<StreamOptions>): Stream<Event['data']>\n}\n"],"mappings":";AASO,IAAe,WAAf,MAAwB;AAE/B;","names":[]}
@@ -0,0 +1,22 @@
1
+ import {
2
+ Instance
3
+ } from "./chunk-MDQKODYQ.mjs";
4
+
5
+ // src/cache/adapters/base.ts
6
+ var Cache = class {
7
+ getScopedKey(key) {
8
+ return Instance.get().getScopedName(key, ":");
9
+ }
10
+ async getOrSet(key, fn, ttlInSecs) {
11
+ const cached = await this.get(key);
12
+ if (cached) return JSON.parse(cached);
13
+ const result = await fn();
14
+ await this.set(key, JSON.stringify(result), ttlInSecs);
15
+ return result;
16
+ }
17
+ };
18
+
19
+ export {
20
+ Cache
21
+ };
22
+ //# sourceMappingURL=chunk-Z2TZ3KR7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cache/adapters/base.ts"],"sourcesContent":["import { Instance } from '../../instance'\n\nexport abstract class Cache {\n\tabstract set(key: string, data: string, ttlInSecs?: number): Promise<void>\n\tabstract get(key: string): Promise<string | null>\n\tabstract delete(key: string): Promise<void>\n\n\tgetScopedKey(key: string) {\n\t\treturn Instance.get().getScopedName(key, ':')\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs?: number): Promise<T> {\n\t\tconst cached = await this.get(key)\n\t\tif (cached) return JSON.parse(cached) as T\n\n\t\tconst result = await fn()\n\t\tawait this.set(key, JSON.stringify(result), ttlInSecs)\n\t\treturn result\n\t}\n}\n"],"mappings":";;;;;AAEO,IAAe,QAAf,MAAqB;AAAA,EAK3B,aAAa,KAAa;AACzB,WAAO,SAAS,IAAI,EAAE,cAAc,KAAK,GAAG;AAAA,EAC7C;AAAA,EAEA,MAAM,SAAY,KAAa,IAAsB,WAAgC;AACpF,UAAM,SAAS,MAAM,KAAK,IAAI,GAAG;AACjC,QAAI,OAAQ,QAAO,KAAK,MAAM,MAAM;AAEpC,UAAM,SAAS,MAAM,GAAG;AACxB,UAAM,KAAK,IAAI,KAAK,KAAK,UAAU,MAAM,GAAG,SAAS;AACrD,WAAO;AAAA,EACR;AACD;","names":[]}
@@ -0,0 +1,2 @@
1
+ import{a as r}from "./chunk-FLAPYQUT.min.mjs";var t=class extends r{adapter;table;constructor(e){super(`Introspection failed for table '${e.table}' on adapter '${e.adapter}'`,{adapter:e.adapter,table:e.table},e.cause),this.adapter=e.adapter,this.table=e.table}};export{t as a};
2
+ //# sourceMappingURL=chunk-ZGMFFK6Y.min.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/orm/errors/introspection.ts"],"sourcesContent":["import { EquippedError } from '../../errors'\n\nexport class OrmIntrospectionError extends EquippedError {\n\treadonly adapter: string\n\treadonly table: string\n\n\tconstructor(opts: { adapter: string; table: string; cause: unknown }) {\n\t\tsuper(`Introspection failed for table '${opts.table}' on adapter '${opts.adapter}'`, { adapter: opts.adapter, table: opts.table }, opts.cause)\n\t\tthis.adapter = opts.adapter\n\t\tthis.table = opts.table\n\t}\n}\n\nif (import.meta.vitest) {\n\tconst { describe, test, expect } = import.meta.vitest\n\tconst { EquippedError } = await import('../../errors')\n\n\tdescribe('OrmIntrospectionError', () => {\n\t\ttest('stores adapter, table, and cause on the instance', () => {\n\t\t\tconst cause = new Error('unknown column type')\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'postgres', table: 'users', cause })\n\t\t\texpect(err.adapter).toBe('postgres')\n\t\t\texpect(err.table).toBe('users')\n\t\t\texpect(err.cause).toBe(cause)\n\t\t})\n\n\t\ttest('message includes adapter and table', () => {\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'pg', table: 'posts', cause: 'bad type' })\n\t\t\texpect(err.message).toBe(\"Introspection failed for table 'posts' on adapter 'pg'\")\n\t\t})\n\n\t\ttest('instanceof EquippedError is true', () => {\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'x', table: 'y', cause: null })\n\t\t\texpect(err).toBeInstanceOf(OrmIntrospectionError)\n\t\t\texpect(err).toBeInstanceOf(EquippedError)\n\t\t})\n\n\t\ttest('context carries adapter and table', () => {\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'mem', table: 'items', cause: 'fail' })\n\t\t\texpect((err.context as any).adapter).toBe('mem')\n\t\t\texpect((err.context as any).table).toBe('items')\n\t\t})\n\n\t\ttest('discriminates from sibling error classes', async () => {\n\t\t\tconst { OrmMigrationError } = await import('./migration')\n\t\t\tconst { OrmValidationError } = await import('./validation')\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'x', table: 'y', cause: null })\n\t\t\texpect(err).not.toBeInstanceOf(OrmMigrationError)\n\t\t\texpect(err).not.toBeInstanceOf(OrmValidationError)\n\t\t})\n\t})\n}\n"],"mappings":"6CAEO,IAAMA,EAAN,cAAoCC,CAAc,CAC/C,QACA,MAET,YAAYC,EAA0D,CACrE,MAAM,mCAAmCA,EAAK,KAAK,iBAAiBA,EAAK,OAAO,IAAK,CAAE,QAASA,EAAK,QAAS,MAAOA,EAAK,KAAM,EAAGA,EAAK,KAAK,EAC7I,KAAK,QAAUA,EAAK,QACpB,KAAK,MAAQA,EAAK,KACnB,CACD","names":["OrmIntrospectionError","EquippedError","opts"]}
@@ -0,0 +1,2 @@
1
+ import{a as T,b as P,c as $}from "../../../chunk-QHLKB47N.min.mjs";import"../../../chunk-SGZNOYC3.min.mjs";import{K as w,a as C,t as O}from "../../../chunk-FLAPYQUT.min.mjs";import"../../../chunk-DSUJ5FUL.min.mjs";import"../../../chunk-AQY7QVYI.min.mjs";import"mongodb";import{differ as v}from"valleyed";import B from"axios";import{v as R}from"valleyed";var S="db-changes",E=class{constructor(a,i,n){this.config=a;this.callbacks=i;this.mapper=n;this.config=R.assert(P(),a)}async configureConnector(a,i){let n=B.create({baseURL:this.config.debeziumUrl});return await n.put(`/connectors/${a}/config`,{"topic.prefix":S,"topic.creation.enable":"false","topic.creation.default.replication.factor":"-1","topic.creation.default.partitions":"-1","key.converter":"org.apache.kafka.connect.json.JsonConverter","key.converter.schemas.enable":"false","value.converter":"org.apache.kafka.connect.json.JsonConverter","value.converter.schemas.enable":"false",...i}).then(async()=>(await n.get(`/connectors/${a}/topics`)).data[a]?.topics?.includes?.(a)??!1).catch(l=>{throw new C("Failed to configure watcher",{key:a},l)})}};var k=class extends E{#e=!1;constructor(a,i,n,l,f){super(i,l,f);let d=r=>r._id?{...r,_id:r._id.$oid??r._id}:void 0,m=n.dbName,c=n.collectionName,e=`${m}.${c}`,t=`${S}.${e}`,o="5f5f65717569707065645f5f",s={_id:o};i.eventBus.stream(t,{skipScope:!0}).subscribe(async r=>{let p=r.op,u=JSON.parse(r.before??"null"),y=JSON.parse(r.after??"null");u&&(u=d(u)),y&&(y=d(y)),!(u?._id===o||y?._id===o)&&(p==="c"&&this.callbacks.created&&y?await this.callbacks.created({before:null,after:this.mapper(y)}):p==="u"&&this.callbacks.updated&&u&&y?await this.callbacks.updated({before:this.mapper(u),after:this.mapper(y),changes:v.from(v.diff(u,y))}):p==="d"&&this.callbacks.deleted&&u&&await this.callbacks.deleted({before:this.mapper(u),after:null}))}),w.on("start",async()=>{this.#e||(this.#e=!0,await O(async()=>await this.configureConnector(t,{"connector.class":"io.debezium.connector.mongodb.MongoDbConnector","capture.mode":"change_streams_update_full_with_pre_image","mongodb.connection.string":a.uri,"collection.include.list":e,"snapshot.mode":"when_needed","capture.scope":"collection","capture.target":e,"heartbeat.interval.ms":"60000","errors.max.retries":"3"})?{done:!0,value:!0}:(await n.findOneAndUpdate(s,{$set:{colName:c}},{upsert:!0}),await n.findOneAndDelete(s),w.get().log.warn(`Waiting for db changes for ${e} to start...`),{done:!1}),6,3e4).catch(r=>w.crash(new C("Failed to start db changes",{dbColName:e},r))))})}};import{AsyncLocalStorage as F}from"async_hooks";import{MongoClient as q,ObjectId as I}from"mongodb";import{v as N}from"valleyed";import{v as x}from"valleyed";var _=()=>x.meta(x.object({uri:x.string()}),{title:"Mongodb Config",$refId:"MongodbConfig"});import"mongodb";var Q=async(h,a)=>{let i=[],n=A(a.where,a.whereType);n&&i.push(n);let l=A(a.auth,a.authType);if(l&&i.push(l),a.search&&a.search.fields.length>0){let D=a.search.fields.map(j=>({[j]:{$regex:new RegExp(a.search.value,"i")}}));i.push({$or:D})}let f={};i.length>0&&(f.$and=i);let d=a.sort.map(D=>[D.field,D.desc?"desc":"asc"]),m=a.all??!1,c=a.limit,e=a.page,t=await h.countDocuments(f),o=a.select?.length?Object.fromEntries(a.select.map(D=>[D,1])):void 0,s=h.find(f,{projection:o});d.length&&(s=s.sort(Object.fromEntries(d))),!m&&c&&(s=s.limit(c),e&&(s=s.skip((e-1)*c)));let r=await s.toArray(),p=1,u=Math.ceil(t/c)||1,y=e>=u?null:e+1,b=e<=p?null:e-1;return{pages:{start:p,last:u,next:y,previous:b,current:e},docs:{limit:c,total:t,count:r.length},results:r}};function U(h){return Object.values($).includes(h.condition)}var A=(h,a="and")=>{let i=(Array.isArray(h)?h:[]).map(n=>{if(U(n))return A(n.value,n.condition);let{field:l}=n,f=l==="id"?"_id":l??"",d=n.value===void 0?"":n.value;return{field:f,value:d,condition:n.condition,isWhere:!0}}).filter(n=>!!n).map(n=>n.isWhere?{[`${n.field}`]:{[`$${n.condition}`]:n.value}}:n);return i.length>0?{[`$${a}`]:i}:null};var M="_id",g=new F(void 0),W=class extends T{constructor(i,n){super(n);this.mongoConfig=i;this.mongoConfig=N.assert(_(),i),this.client=new q(i.uri,{ignoreUndefined:!0}),w.on("start",async()=>{await this.client.connect();let l=this.#e.reduce((d,m)=>(d[m.db]||(d[m.db]=[]),d[m.db].push(m.col),d),{}),f={changeStreamPreAndPostImages:{enabled:!0}};await Promise.all(Object.entries(l).map(async([d,m])=>{let c=this.client.db(d),e=await c.listCollections().toArray();return m.map(async t=>{let o=e.find(s=>s.name===t);o?o.options?.changeStreamPreAndPostImages?.enabled!==f.changeStreamPreAndPostImages.enabled&&await c.command({collMod:t,...f}):await c.createCollection(t,f)})}))}),w.on("close",async()=>this.client.close())}client;#e=[];async session(i){if(g.getStore())return i();let n=await this.client.startSession();return n.withTransaction(async()=>g.run(n,i))}id(){return new I}use(i){let n=this.getScopedDb(i.db);return this.#e.push({db:n,col:i.col}),this.#t(i,this.client.db(n).collection(i.col))}#t(i,n){function l(e,t){let s=(Array.isArray(e)?e:[e]).map(r=>i.mapper(r,t));return Array.isArray(e)?s:s[0]}function f(e,t,o,s){let r={[M]:t,...i.options?.skipAudit?{}:{createdAt:o.getTime(),...s?{}:{updatedAt:o.getTime()}}};return{...e,...r}}function d(e,t,o=!1){return{...e,$set:{...e.$set,...o||Object.keys(e).length>0&&!i.options?.skipAudit?{updatedAt:t.getTime()}:{}}}}let m=this,c={config:i,extras:{collection:n},query:async e=>{let t=await Q(n,e);return{...t,results:l(t.results,e.select)}},findMany:async(e,t={})=>{let{select:o,...s}=t,r=o?.length?Object.fromEntries(o.map(b=>[b,1])):void 0,u=(Array.isArray(s.sort)?s.sort:s.sort?[s.sort]:[]).map(b=>[b.field,b.desc?"desc":"asc"]),y=await n.find(e,{session:g.getStore(),limit:s.limit,sort:u,projection:r}).toArray();return l(y,o)},findOne:async(e,t={})=>(await c.findMany(e,{...t,limit:1})).at(0)??null,findById:async(e,t={})=>await c.findOne({[M]:e},t),insertMany:async(e,t={})=>{let o=t.getTime?.()??new Date,s=e.map((p,u)=>f(p,t.makeId?.(u)??new I().toString(),o));return await n.insertMany(s,{session:g.getStore()}),(await Promise.all(s.map(async p=>await c.findById(p[M])))).filter(p=>!!p)},insertOne:async(e,t={})=>(await c.insertMany([e],t))[0],updateMany:async(e,t,o={})=>{let s=o.getTime?.()??new Date,r=g.getStore(),u=(await n.find(e,{session:r,projection:{[M]:1}}).toArray()).map(b=>b[M]),y={[M]:{$in:u}};return await n.updateMany(y,d(t,s),{session:r}),c.findMany(y)},updateOne:async(e,t,o={})=>{let s=o.getTime?.()??new Date,r=await n.findOneAndUpdate(e,d(t,s),{returnDocument:"after",session:g.getStore()});return r?l(r,void 0):null},updateById:async(e,t,o={})=>await c.updateOne({[M]:e},t,o),upsertOne:async(e,t,o={})=>{let s=o.getTime?.()??new Date,r=await n.findOneAndUpdate(e,{...d("update"in t?t.update:{},s,!0),$setOnInsert:f(t.insert,o.makeId?.()??new I().toString(),s,!0)},{returnDocument:"after",session:g.getStore(),upsert:!0});return l(r,void 0)},deleteMany:async(e,t={})=>{let o=await c.findMany(e,t);return await n.deleteMany(e,{session:g.getStore()}),o},deleteOne:async e=>{let t=await n.findOneAndDelete(e,{session:g.getStore()});return t?l(t,void 0):null},deleteById:async e=>await c.deleteOne({[M]:e}),bulkWrite:async(e,t={})=>{if(!e.length)return;let o=n.initializeUnorderedBulkOp({session:g.getStore()}),s=t.getTime?.()??new Date;e.forEach((r,p)=>{switch(r.op){case"insert":o.insert(f(r.value,r.makeId?.(p)??new I().toString(),s));break;case"delete":o.find(r.filter).delete();break;case"update":o.find(r.filter).update(d(r.value,s));break;case"upsert":o.find(r.filter).upsert().update({...d("update"in r?r.update:{},s,!0),$setOnInsert:f(r.insert,r.makeId?.(p)??new I().toString(),s,!0)});break;default:throw new C("Unknown bulkWrite operation",{operation:r})}}),await o.execute({session:g.getStore()})},watch(e){return m.config.changes||w.crash(new C("Db changes are not enabled in the configuration.",{config:i})),new k(m.mongoConfig,m.config.changes,n,e,t=>i.mapper(t))}};return c}};export{W as MongoDb,k as MongoDbChange,_ as mongoDbConfigPipe};
2
+ //# sourceMappingURL=index.min.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/dbs/adapters/mongodb/changes.ts","../../../../../src/dbs/adapters/base/changes.ts","../../../../../src/dbs/adapters/mongodb/db.ts","../../../../../src/dbs/adapters/mongodb/pipes.ts","../../../../../src/dbs/adapters/mongodb/query.ts"],"sourcesContent":["import { Collection, type Filter } from 'mongodb'\nimport { differ } from 'valleyed'\n\nimport type { MongoDbConfig } from './pipes'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport { retry } from '../../../utilities'\nimport { DbChange, TopicPrefix } from '../base/changes'\nimport * as core from '../base/core'\nimport type { DbChangeConfig } from '../base/types'\n\nexport class MongoDbChange<Model extends core.Model<{ _id: string }>, Entity extends core.Entity> extends DbChange<Model, Entity> {\n\t#started = false\n\n\tconstructor(\n\t\tconfig: MongoDbConfig,\n\t\tchange: DbChangeConfig,\n\t\tcollection: Collection<Model>,\n\t\tcallbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tmapper: (model: Model) => Entity,\n\t) {\n\t\tsuper(change, callbacks, mapper)\n\n\t\tconst hydrate = (data: any) =>\n\t\t\tdata._id\n\t\t\t\t? {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t_id: data._id['$oid'] ?? data._id,\n\t\t\t\t\t}\n\t\t\t\t: undefined\n\n\t\tconst dbName = collection.dbName\n\t\tconst colName = collection.collectionName\n\t\tconst dbColName = `${dbName}.${colName}`\n\t\tconst topic = `${TopicPrefix}.${dbColName}`\n\n\t\tconst TestId = '5f5f65717569707065645f5f' // __equipped__\n\t\tconst condition = { _id: TestId } as Filter<Model>\n\n\t\tchange.eventBus.stream(topic as never, { skipScope: true }).subscribe(async (data: DbDocumentChange) => {\n\t\t\tconst op = data.op\n\n\t\t\tlet before = JSON.parse(data.before ?? 'null')\n\t\t\tlet after = JSON.parse(data.after ?? 'null')\n\n\t\t\tif (before) before = hydrate(before)\n\t\t\tif (after) after = hydrate(after)\n\t\t\tif (before?._id === TestId || after?._id === TestId) return\n\n\t\t\tif (op === 'c' && this.callbacks.created && after)\n\t\t\t\tawait this.callbacks.created({\n\t\t\t\t\tbefore: null,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t})\n\t\t\telse if (op === 'u' && this.callbacks.updated && before && after)\n\t\t\t\tawait this.callbacks.updated({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t\tchanges: differ.from(differ.diff(before, after)),\n\t\t\t\t})\n\t\t\telse if (op === 'd' && this.callbacks.deleted && before)\n\t\t\t\tawait this.callbacks.deleted({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: null,\n\t\t\t\t})\n\t\t})\n\n\t\tInstance.on('start', async () => {\n\t\t\tif (this.#started) return\n\t\t\tthis.#started = true\n\n\t\t\tawait retry(\n\t\t\t\tasync () => {\n\t\t\t\t\tconst started = await this.configureConnector(topic, {\n\t\t\t\t\t\t'connector.class': 'io.debezium.connector.mongodb.MongoDbConnector',\n\t\t\t\t\t\t'capture.mode': 'change_streams_update_full_with_pre_image',\n\t\t\t\t\t\t'mongodb.connection.string': config.uri,\n\t\t\t\t\t\t'collection.include.list': dbColName,\n\t\t\t\t\t\t'snapshot.mode': 'when_needed',\n\t\t\t\t\t\t'capture.scope': 'collection',\n\t\t\t\t\t\t'capture.target': dbColName,\n\t\t\t\t\t\t'heartbeat.interval.ms': '60000',\n\t\t\t\t\t\t'errors.max.retries': '3',\n\t\t\t\t\t})\n\n\t\t\t\t\tif (started) return { done: true, value: true }\n\t\t\t\t\tawait collection.findOneAndUpdate(condition, { $set: { colName } as any }, { upsert: true })\n\t\t\t\t\tawait collection.findOneAndDelete(condition)\n\t\t\t\t\tInstance.get().log.warn(`Waiting for db changes for ${dbColName} to start...`)\n\t\t\t\t\treturn { done: false }\n\t\t\t\t},\n\t\t\t\t6,\n\t\t\t\t30_000,\n\t\t\t).catch((err) => Instance.crash(new EquippedError(`Failed to start db changes`, { dbColName }, err)))\n\t\t})\n\t}\n}\n\ntype DbDocumentChange = {\n\tbefore: string | null\n\tafter: string | null\n\top: 'c' | 'u' | 'd'\n}\n","import axios from 'axios'\nimport { v } from 'valleyed'\n\nimport * as core from './core'\nimport { dbChangeConfigPipe, type DbChangeConfig } from './types'\nimport { EquippedError } from '../../../errors'\n\nexport const TopicPrefix = 'db-changes'\n\nexport abstract class DbChange<Model extends core.Model<core.IdType>, Entity extends core.Entity> {\n\tconstructor(\n\t\tprotected config: DbChangeConfig,\n\t\tprotected callbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tprotected mapper: (model: Model) => Entity,\n\t) {\n\t\tthis.config = v.assert(dbChangeConfigPipe(), config)\n\t}\n\n\tprotected async configureConnector(key: string, data: Record<string, string>) {\n\t\tconst instance = axios.create({ baseURL: this.config.debeziumUrl })\n\t\treturn await instance\n\t\t\t.put(`/connectors/${key}/config`, {\n\t\t\t\t'topic.prefix': TopicPrefix,\n\t\t\t\t'topic.creation.enable': 'false',\n\t\t\t\t'topic.creation.default.replication.factor': `-1`,\n\t\t\t\t'topic.creation.default.partitions': '-1',\n\t\t\t\t'key.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'key.converter.schemas.enable': 'false',\n\t\t\t\t'value.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'value.converter.schemas.enable': 'false',\n\t\t\t\t...data,\n\t\t\t})\n\t\t\t.then(async () => {\n\t\t\t\tconst topics = await instance.get(`/connectors/${key}/topics`)\n\t\t\t\treturn topics.data[key]?.topics?.includes?.(key) ?? false\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthrow new EquippedError(`Failed to configure watcher`, { key }, err)\n\t\t\t})\n\t}\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport {\n\tClientSession,\n\tCollection,\n\tMongoClient,\n\tObjectId,\n\ttype CollectionInfo,\n\ttype OptionalUnlessRequiredId,\n\ttype SortDirection,\n\ttype WithId,\n} from 'mongodb'\nimport { v } from 'valleyed'\n\nimport { MongoDbChange } from './changes'\nimport { mongoDbConfigPipe, type MongoDbConfig } from './pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport type { QueryParamsBase } from '../../pipes'\nimport * as core from '../base/core'\nimport { Db } from '../base/db'\nimport type { DbConfig } from '../base/types'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nconst sessionStore = new AsyncLocalStorage<ClientSession | undefined>(undefined)\n\nexport class MongoDb extends Db<{ _id: string }> {\n\tclient: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.mongoConfig = v.assert(mongoDbConfigPipe(), mongoConfig)\n\t\tthis.client = new MongoClient(mongoConfig.uri, { ignoreUndefined: true })\n\t\tInstance.on('start', async () => {\n\t\t\tawait this.client.connect()\n\n\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\treturn acc\n\t\t\t}, {})\n\n\t\t\tconst options = {\n\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t}\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\tconst db = this.client.db(dbName)\n\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t\tInstance.on('close', async () => this.client.close())\n\t}\n\n\tasync session<T>(callback: () => Promise<T>) {\n\t\tif (sessionStore.getStore()) return callback()\n\t\tconst session = await this.client.startSession()\n\t\treturn session.withTransaction(async () => sessionStore.run(session, callback))\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tconst db = this.getScopedDb(config.db)\n\t\tthis.#cols.push({ db, col: config.col })\n\t\treturn this.#getTable(config, this.client.db(db).collection<Model>(config.col))\n\t}\n\n\t#getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\t\tconfig: core.Config<Model, Entity>,\n\t\tcollection: Collection<Model>,\n\t) {\n\t\ttype WI = Model | WithId<Model>\n\t\tfunction transform(doc: WI, select?: core.Select<Entity>): Entity\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI[], select?: core.Select<Entity>): Entity[]\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI | WI[], select?: core.Select<Entity>) {\n\t\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\t\tconst mapped = docs.map((d) => config.mapper(d as Model, select))\n\t\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t\t}\n\n\t\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\t\tconst base: core.Model<IdType> = {\n\t\t\t\t[idKey]: id,\n\t\t\t\t...(config.options?.skipAudit\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t\t}),\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t...base,\n\t\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t\t}\n\n\t\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date, upsert = false) {\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t$set: {\n\t\t\t\t\t...value.$set,\n\t\t\t\t\t...(upsert || (Object.keys(value).length > 0 && !config.options?.skipAudit) ? { updatedAt: now.getTime() } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst dbThis = this\n\n\t\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\t\tconfig,\n\t\t\textras: { collection },\n\n\t\t\tquery: async (params) => {\n\t\t\t\tconst results = await parseMongodbQueryParams(collection, params as QueryParamsBase)\n\t\t\t\treturn {\n\t\t\t\t\t...results,\n\t\t\t\t\tresults: transform(results.results as any, params.select as core.Select<Entity>),\n\t\t\t\t} as any\n\t\t\t},\n\n\t\t\tfindMany: async (filter, options = {}) => {\n\t\t\t\tconst { select, ...rest } = options\n\t\t\t\tconst projection = select?.length ? Object.fromEntries(select.map((k) => [k, 1])) : undefined\n\t\t\t\tconst sortArray = Array.isArray(rest.sort) ? rest.sort : rest.sort ? [rest.sort] : []\n\t\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\t\tconst docs = await collection\n\t\t\t\t\t.find(filter, {\n\t\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t\t\tlimit: rest.limit,\n\t\t\t\t\t\tsort,\n\t\t\t\t\t\tprojection,\n\t\t\t\t\t})\n\t\t\t\t\t.toArray()\n\t\t\t\treturn transform(docs, select as core.Select<Entity>) as any\n\t\t\t},\n\n\t\t\tfindOne: async (filter: core.Filter<Model>, options = {}) => {\n\t\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 } as any)\n\t\t\t\treturn (result.at(0) ?? null) as any\n\t\t\t},\n\n\t\t\tfindById: async (id, options = {}) => {\n\t\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options as any)\n\t\t\t\treturn result as any\n\t\t\t},\n\n\t\t\tinsertMany: async (values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\tawait collection.insertMany(payload, { session: sessionStore.getStore() })\n\n\t\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any)))\n\t\t\t\treturn insertedData.filter((value) => !!value)\n\t\t\t},\n\n\t\t\tinsertOne: async (values, options = {}) => {\n\t\t\t\tconst result = await table.insertMany([values], options)\n\t\t\t\treturn result[0]\n\t\t\t},\n\n\t\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst session = sessionStore.getStore()\n\t\t\t\tconst data = await collection.find(filter, { session, projection: { [idKey]: 1 } }).toArray()\n\t\t\t\tconst ids = data.map((doc) => doc[idKey])\n\t\t\t\tconst filterUpd = { [idKey]: { $in: ids } } as core.Filter<Model>\n\t\t\t\tawait collection.updateMany(filterUpd, prepUpdateValue(values, now), { session })\n\t\t\t\treturn table.findMany(filterUpd)\n\t\t\t},\n\n\t\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\t\treturnDocument: 'after',\n\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t})\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tupdateById: async (id, values, options = {}) => {\n\t\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\t\tfilter,\n\t\t\t\t\t{\n\t\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now, true),\n\t\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t\t},\n\t\t\t\t\t{ returnDocument: 'after', session: sessionStore.getStore(), upsert: true },\n\t\t\t\t)\n\n\t\t\t\treturn transform(doc, undefined)\n\t\t\t},\n\n\t\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\t\tawait collection.deleteMany(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn docs\n\t\t\t},\n\n\t\t\tdeleteOne: async (filter) => {\n\t\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tdeleteById: async (id) => {\n\t\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\t\tif (!operations.length) return\n\t\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: sessionStore.getStore() })\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\toperations.forEach((operation, i) => {\n\t\t\t\t\tswitch (operation.op) {\n\t\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now, true),\n\t\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tawait bulk.execute({ session: sessionStore.getStore() })\n\t\t\t},\n\n\t\t\twatch(callbacks) {\n\t\t\t\tif (!dbThis.config.changes)\n\t\t\t\t\tInstance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\t\treturn new MongoDbChange<Model, Entity>(dbThis.mongoConfig, dbThis.config.changes, collection, callbacks, (m) =>\n\t\t\t\t\tconfig.mapper(m),\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\n\t\treturn table\n\t}\n}\n","import { type PipeInput, v } from 'valleyed'\n\nexport const mongoDbConfigPipe = () =>\n\tv.meta(\n\t\tv.object({\n\t\t\turi: v.string(),\n\t\t}),\n\t\t{ title: 'Mongodb Config', $refId: 'MongodbConfig' },\n\t)\n\nexport type MongoDbConfig = PipeInput<ReturnType<typeof mongoDbConfigPipe>>\n","import { Collection } from 'mongodb'\n\nimport { QueryKeys, type QueryParamsBase, type QueryResults, type QueryWhereBlock, type QueryWhereClause } from '../../pipes'\nimport * as core from '../base/core'\n\nexport const parseMongodbQueryParams = async <Model extends core.Model<{ _id: string }>>(\n\tcollection: Collection<Model>,\n\tparams: QueryParamsBase,\n): Promise<QueryResults<Model>> => {\n\t// Handle where/search clauses\n\tconst query = <ReturnType<typeof buildWhereQuery>[]>[]\n\tconst where = buildWhereQuery(params.where, params.whereType)\n\tif (where) query.push(where)\n\tconst auth = buildWhereQuery(params.auth, params.authType)\n\tif (auth) query.push(auth)\n\tif (params.search && params.search.fields.length > 0) {\n\t\tconst search = params.search.fields.map((field) => ({\n\t\t\t[field]: {\n\t\t\t\t$regex: new RegExp(params.search!.value, 'i'),\n\t\t\t},\n\t\t}))\n\t\tquery.push({ $or: search })\n\t}\n\tconst totalClause = {}\n\tif (query.length > 0) totalClause['$and'] = query\n\n\t// Handle sort clauses\n\tconst sort = params.sort.map((p) => [p.field, p.desc ? 'desc' : 'asc'])\n\n\t// Handle limit/offest clause\n\tconst all = params.all ?? false\n\tconst limit = params.limit\n\tconst page = params.page\n\n\tconst total = await collection.countDocuments(totalClause)\n\n\tconst projection = params.select?.length ? Object.fromEntries(params.select.map((k) => [k, 1])) : undefined\n\tlet builtQuery = collection.find(totalClause, { projection })\n\tif (sort.length) builtQuery = builtQuery.sort(Object.fromEntries(sort))\n\tif (!all && limit) {\n\t\tbuiltQuery = builtQuery.limit(limit)\n\t\tif (page) builtQuery = builtQuery.skip((page - 1) * limit)\n\t}\n\n\tconst results = await builtQuery.toArray()\n\tconst start = 1\n\tconst last = Math.ceil(total / limit) || 1\n\tconst next = page >= last ? null : page + 1\n\tconst previous = page <= start ? null : page - 1\n\n\treturn {\n\t\tpages: { start, last, next, previous, current: page },\n\t\tdocs: { limit, total, count: results.length },\n\t\tresults: results as any[],\n\t} satisfies QueryResults<Model>\n}\n\nfunction isWhereBlock(param: QueryWhereClause): param is QueryWhereBlock {\n\treturn Object.values(QueryKeys).includes(param.condition as QueryKeys)\n}\n\nconst buildWhereQuery = (params: QueryWhereClause[], key: QueryKeys = QueryKeys.and): Record<string, Record<string, any>> | null => {\n\tconst where = (Array.isArray(params) ? params : [])\n\t\t.map((param) => {\n\t\t\tif (isWhereBlock(param)) return buildWhereQuery(param.value, param.condition)\n\t\t\tconst { field } = param\n\t\t\tconst checkedField = field === 'id' ? '_id' : (field ?? '')\n\t\t\tconst checkedValue = param.value === undefined ? '' : param.value\n\t\t\treturn {\n\t\t\t\tfield: checkedField,\n\t\t\t\tvalue: checkedValue,\n\t\t\t\tcondition: param.condition,\n\t\t\t\tisWhere: true,\n\t\t\t}\n\t\t})\n\t\t.filter((c) => !!c)\n\t\t.map((c) => {\n\t\t\tif (c.isWhere) return { [`${c.field}`]: { [`$${c.condition}`]: c.value } }\n\t\t\telse return c\n\t\t})\n\n\treturn where.length > 0 ? { [`$${key}`]: where } : null\n}\n"],"mappings":"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","names":["differ","axios","v","TopicPrefix","DbChange","config","callbacks","mapper","v","dbChangeConfigPipe","key","data","instance","axios","err","EquippedError","MongoDbChange","DbChange","#started","config","change","collection","callbacks","mapper","hydrate","data","dbName","colName","dbColName","topic","TopicPrefix","TestId","condition","op","before","after","differ","Instance","retry","err","EquippedError","AsyncLocalStorage","MongoClient","ObjectId","v","v","mongoDbConfigPipe","parseMongodbQueryParams","collection","params","query","where","buildWhereQuery","auth","search","field","totalClause","sort","p","all","limit","page","total","projection","k","builtQuery","results","start","last","next","previous","isWhereBlock","param","QueryKeys","key","checkedField","checkedValue","c","idKey","sessionStore","AsyncLocalStorage","MongoDb","Db","mongoConfig","dbConfig","v","mongoDbConfigPipe","MongoClient","Instance","grouped","#cols","acc","cur","options","dbName","colNames","db","collections","colName","existing","collection","callback","session","ObjectId","config","#getTable","transform","doc","select","mapped","d","prepInsertValue","value","id","now","skipUpdate","base","prepUpdateValue","upsert","dbThis","table","params","results","parseMongodbQueryParams","filter","rest","projection","k","sort","p","docs","values","payload","i","data","ids","filterUpd","operations","bulk","operation","EquippedError","callbacks","MongoDbChange","m"]}