equipped 5.2.9 → 5.3.0-alpha.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 (779) hide show
  1. package/CHANGELOG.md +88 -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 +1705 -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 +1709 -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 +1600 -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-2TCFNKRZ.mjs +1824 -0
  110. package/dist/esm/chunk-2TCFNKRZ.mjs.map +1 -0
  111. package/dist/esm/chunk-6DW4GW3R.min.mjs +2 -0
  112. package/dist/esm/chunk-6DW4GW3R.min.mjs.map +1 -0
  113. package/dist/esm/chunk-6SB5M4XH.mjs +795 -0
  114. package/dist/esm/chunk-6SB5M4XH.mjs.map +1 -0
  115. package/dist/esm/chunk-AQY7QVYI.min.mjs +2 -0
  116. package/dist/esm/chunk-AUKXL4EA.min.mjs +2 -0
  117. package/dist/esm/chunk-AUKXL4EA.min.mjs.map +1 -0
  118. package/dist/esm/chunk-BJNIUCPT.min.mjs +2 -0
  119. package/dist/esm/chunk-BJNIUCPT.min.mjs.map +1 -0
  120. package/dist/esm/chunk-DKPZJIIR.mjs +29 -0
  121. package/dist/esm/chunk-DKPZJIIR.mjs.map +1 -0
  122. package/dist/esm/chunk-DSUJ5FUL.min.mjs +2 -0
  123. package/dist/esm/chunk-DSUJ5FUL.min.mjs.map +1 -0
  124. package/dist/esm/chunk-ECBJ3NT3.min.mjs +2 -0
  125. package/dist/esm/chunk-ECBJ3NT3.min.mjs.map +1 -0
  126. package/dist/{types/events/types/kafka.js → esm/chunk-I4BB436E.mjs} +60 -37
  127. package/dist/esm/chunk-I4BB436E.mjs.map +1 -0
  128. package/dist/esm/chunk-IEBC3OWN.mjs +22 -0
  129. package/dist/esm/chunk-IEBC3OWN.mjs.map +1 -0
  130. package/dist/esm/chunk-J5LGTIGS.mjs +10 -0
  131. package/dist/esm/chunk-KW3PBDFD.mjs +53 -0
  132. package/dist/esm/chunk-KW3PBDFD.mjs.map +1 -0
  133. package/dist/esm/chunk-LTDVZJYJ.min.mjs +32 -0
  134. package/dist/esm/chunk-LTDVZJYJ.min.mjs.map +1 -0
  135. package/dist/esm/chunk-MYGAF2AC.min.mjs +2 -0
  136. package/dist/esm/chunk-MYGAF2AC.min.mjs.map +1 -0
  137. package/dist/esm/chunk-OXI6IKAM.min.mjs +2 -0
  138. package/dist/esm/chunk-OXI6IKAM.min.mjs.map +1 -0
  139. package/dist/esm/chunk-RIRBNBTC.mjs +113 -0
  140. package/dist/esm/chunk-RIRBNBTC.mjs.map +1 -0
  141. package/dist/esm/chunk-TWKHVLLT.mjs +1280 -0
  142. package/dist/esm/chunk-TWKHVLLT.mjs.map +1 -0
  143. package/dist/esm/chunk-VCCS7CAI.mjs +8 -0
  144. package/dist/esm/chunk-VCCS7CAI.mjs.map +1 -0
  145. package/dist/esm/chunk-WHIWTP2Z.min.mjs +2 -0
  146. package/dist/esm/chunk-WHIWTP2Z.min.mjs.map +1 -0
  147. package/dist/esm/chunk-YTHRK2PO.mjs +126 -0
  148. package/dist/esm/chunk-YTHRK2PO.mjs.map +1 -0
  149. package/dist/esm/chunk-YTM6ZURZ.min.mjs +2 -0
  150. package/dist/esm/chunk-YTM6ZURZ.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-GP3G26B6.min.mjs +2 -0
  184. package/dist/esm/introspection-GP3G26B6.min.mjs.map +1 -0
  185. package/dist/esm/introspection-Y7EXSYPD.mjs +10 -0
  186. package/dist/esm/introspection-Y7EXSYPD.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 +126 -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/{types/server/impls/fastify.js → esm/server/adapters/fastify/index.mjs} +56 -45
  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-3PpBAx1K.d.ts} +58 -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-32DMHN3G.js +1823 -0
  248. package/dist/types/chunk-4LRJJSGG.js +112 -0
  249. package/dist/types/chunk-A2MRYMCA.js +1279 -0
  250. package/dist/types/chunk-H6JBLKX5.js +794 -0
  251. package/dist/{esm/events/types/kafka.mjs → types/chunk-IAHTILKJ.js} +59 -38
  252. package/dist/types/chunk-JZ2JTENY.js +125 -0
  253. package/dist/types/chunk-KZKFYO4V.js +7 -0
  254. package/dist/types/chunk-LN3A6R4Y.js +28 -0
  255. package/dist/types/chunk-LWUMIHL4.js +21 -0
  256. package/dist/types/chunk-MLKGABMK.js +9 -0
  257. package/dist/types/chunk-XOU2A2Y6.js +52 -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-ZQCAW254.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 +194 -0
  293. package/dist/types/server/adapters/express/index.js +125 -0
  294. package/dist/types/server/adapters/fastify/index.d.ts +219 -0
  295. package/dist/{esm/server/impls/fastify.mjs → types/server/adapters/fastify/index.js} +55 -46
  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 +154 -15
  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.map +0 -1
  644. package/dist/esm/server/middlewares/index.min.mjs +0 -2
  645. package/dist/esm/server/middlewares/index.min.mjs.map +0 -1
  646. package/dist/esm/server/middlewares/index.mjs +0 -2
  647. package/dist/esm/server/middlewares/index.mjs.map +0 -1
  648. package/dist/esm/server/middlewares/requireAuthUser.min.mjs +0 -2
  649. package/dist/esm/server/middlewares/requireAuthUser.min.mjs.map +0 -1
  650. package/dist/esm/server/middlewares/requireAuthUser.mjs +0 -22
  651. package/dist/esm/server/middlewares/requireAuthUser.mjs.map +0 -1
  652. package/dist/esm/server/openapi.min.mjs +0 -30
  653. package/dist/esm/server/openapi.min.mjs.map +0 -1
  654. package/dist/esm/server/openapi.mjs +0 -191
  655. package/dist/esm/server/openapi.mjs.map +0 -1
  656. package/dist/esm/server/pipes.min.mjs +0 -2
  657. package/dist/esm/server/pipes.min.mjs.map +0 -1
  658. package/dist/esm/server/pipes.mjs +0 -67
  659. package/dist/esm/server/pipes.mjs.map +0 -1
  660. package/dist/esm/server/requests-auth-methods/apiKeys.min.mjs +0 -2
  661. package/dist/esm/server/requests-auth-methods/apiKeys.min.mjs.map +0 -1
  662. package/dist/esm/server/requests-auth-methods/apiKeys.mjs +0 -21
  663. package/dist/esm/server/requests-auth-methods/apiKeys.mjs.map +0 -1
  664. package/dist/esm/server/requests-auth-methods/base.min.mjs +0 -2
  665. package/dist/esm/server/requests-auth-methods/base.min.mjs.map +0 -1
  666. package/dist/esm/server/requests-auth-methods/base.mjs +0 -20
  667. package/dist/esm/server/requests-auth-methods/base.mjs.map +0 -1
  668. package/dist/esm/server/requests-auth-methods/index.min.mjs +0 -2
  669. package/dist/esm/server/requests-auth-methods/index.min.mjs.map +0 -1
  670. package/dist/esm/server/requests-auth-methods/index.mjs +0 -4
  671. package/dist/esm/server/requests-auth-methods/index.mjs.map +0 -1
  672. package/dist/esm/server/requests-auth-methods/jwt.min.mjs +0 -2
  673. package/dist/esm/server/requests-auth-methods/jwt.min.mjs.map +0 -1
  674. package/dist/esm/server/requests-auth-methods/jwt.mjs +0 -78
  675. package/dist/esm/server/requests-auth-methods/jwt.mjs.map +0 -1
  676. package/dist/esm/server/requests.min.mjs +0 -2
  677. package/dist/esm/server/requests.min.mjs.map +0 -1
  678. package/dist/esm/server/requests.mjs +0 -80
  679. package/dist/esm/server/requests.mjs.map +0 -1
  680. package/dist/esm/server/routes.min.mjs +0 -2
  681. package/dist/esm/server/routes.min.mjs.map +0 -1
  682. package/dist/esm/server/routes.mjs +0 -74
  683. package/dist/esm/server/routes.mjs.map +0 -1
  684. package/dist/esm/server/sockets.min.mjs +0 -2
  685. package/dist/esm/server/sockets.min.mjs.map +0 -1
  686. package/dist/esm/server/sockets.mjs +0 -126
  687. package/dist/esm/server/sockets.mjs.map +0 -1
  688. package/dist/esm/server/types.min.mjs +0 -2
  689. package/dist/esm/server/types.min.mjs.map +0 -1
  690. package/dist/esm/server/types.mjs +0 -34
  691. package/dist/esm/server/types.mjs.map +0 -1
  692. package/dist/esm/types/overrides.min.mjs +0 -1
  693. package/dist/esm/types/overrides.mjs +0 -1
  694. package/dist/esm/utilities/authProviders.min.mjs +0 -2
  695. package/dist/esm/utilities/authProviders.min.mjs.map +0 -1
  696. package/dist/esm/utilities/authProviders.mjs +0 -53
  697. package/dist/esm/utilities/authProviders.mjs.map +0 -1
  698. package/dist/esm/utilities/hash.min.mjs +0 -2
  699. package/dist/esm/utilities/hash.min.mjs.map +0 -1
  700. package/dist/esm/utilities/hash.mjs +0 -17
  701. package/dist/esm/utilities/hash.mjs.map +0 -1
  702. package/dist/esm/utilities/json.min.mjs +0 -2
  703. package/dist/esm/utilities/json.min.mjs.map +0 -1
  704. package/dist/esm/utilities/json.mjs +0 -16
  705. package/dist/esm/utilities/json.mjs.map +0 -1
  706. package/dist/esm/utilities/media.min.mjs +0 -2
  707. package/dist/esm/utilities/media.min.mjs.map +0 -1
  708. package/dist/esm/utilities/media.mjs +0 -13
  709. package/dist/esm/utilities/media.mjs.map +0 -1
  710. package/dist/esm/utilities/random.min.mjs +0 -2
  711. package/dist/esm/utilities/random.min.mjs.map +0 -1
  712. package/dist/esm/utilities/random.mjs +0 -12
  713. package/dist/esm/utilities/random.mjs.map +0 -1
  714. package/dist/esm/utilities/retry.min.mjs +0 -2
  715. package/dist/esm/utilities/retry.min.mjs.map +0 -1
  716. package/dist/esm/utilities/retry.mjs +0 -14
  717. package/dist/esm/utilities/retry.mjs.map +0 -1
  718. package/dist/esm/validations/valleyed.min.mjs +0 -2
  719. package/dist/esm/validations/valleyed.min.mjs.map +0 -1
  720. package/dist/esm/validations/valleyed.mjs +0 -43
  721. package/dist/esm/validations/valleyed.mjs.map +0 -1
  722. package/dist/types/audit/events.js +0 -100
  723. package/dist/types/audit/index.d.ts +0 -44
  724. package/dist/types/audit/index.js +0 -1
  725. package/dist/types/cache/base.js +0 -5
  726. package/dist/types/cache/pipes.js +0 -15
  727. package/dist/types/cache/types/in-memory.js +0 -46
  728. package/dist/types/cache/types/redis.js +0 -54
  729. package/dist/types/db-C8YY1yTO.d.ts +0 -14
  730. package/dist/types/db-Dj1SGto0.d.ts +0 -24
  731. package/dist/types/dbs/base/changes.js +0 -35
  732. package/dist/types/dbs/base/core.js +0 -0
  733. package/dist/types/dbs/base/db.js +0 -13
  734. package/dist/types/dbs/base/types.js +0 -1
  735. package/dist/types/dbs/mongo/changes.js +0 -80
  736. package/dist/types/dbs/mongo/db.js +0 -224
  737. package/dist/types/dbs/mongo/query.js +0 -65
  738. package/dist/types/dbs/pipes.js +0 -103
  739. package/dist/types/errors/equippedError.js +0 -11
  740. package/dist/types/errors/requestError.js +0 -11
  741. package/dist/types/errors/types/badRequestError.js +0 -11
  742. package/dist/types/errors/types/notAuthenticatedError.js +0 -11
  743. package/dist/types/errors/types/notAuthorizedError.js +0 -11
  744. package/dist/types/errors/types/notFoundError.js +0 -11
  745. package/dist/types/errors/types/tokenExpired.js +0 -11
  746. package/dist/types/errors/types/validationError.js +0 -15
  747. package/dist/types/events/base.js +0 -5
  748. package/dist/types/events/pipes.js +0 -27
  749. package/dist/types/events/types/rabbitmq.js +0 -53
  750. package/dist/types/instance/hooks.js +0 -25
  751. package/dist/types/instance/settings.js +0 -56
  752. package/dist/types/jobs/pipes.js +0 -12
  753. package/dist/types/kafka-Cf-TUJgv.d.ts +0 -54
  754. package/dist/types/server/impls/base.js +0 -210
  755. package/dist/types/server/impls/express.js +0 -110
  756. package/dist/types/server/middlewares/index.js +0 -1
  757. package/dist/types/server/middlewares/requireAuthUser.js +0 -21
  758. package/dist/types/server/openapi.js +0 -190
  759. package/dist/types/server/pipes.js +0 -66
  760. package/dist/types/server/requests-auth-methods/apiKeys.js +0 -20
  761. package/dist/types/server/requests-auth-methods/base.js +0 -19
  762. package/dist/types/server/requests-auth-methods/index.js +0 -3
  763. package/dist/types/server/requests-auth-methods/jwt.js +0 -77
  764. package/dist/types/server/requests.js +0 -79
  765. package/dist/types/server/routes.js +0 -73
  766. package/dist/types/server/sockets.js +0 -125
  767. package/dist/types/server/types.js +0 -33
  768. package/dist/types/types/overrides.js +0 -0
  769. package/dist/types/utilities/authProviders.js +0 -52
  770. package/dist/types/utilities/hash.js +0 -16
  771. package/dist/types/utilities/json.js +0 -15
  772. package/dist/types/utilities/media.js +0 -12
  773. package/dist/types/utilities/random.js +0 -11
  774. package/dist/types/utilities/retry.js +0 -13
  775. package/dist/types/validations/valleyed.js +0 -42
  776. /package/dist/esm/{dbs/base/core.min.mjs.map → cache/adapters/redis/index.min.mjs.map} +0 -0
  777. /package/dist/esm/{dbs/base/core.mjs.map → cache/adapters/redis/index.mjs.map} +0 -0
  778. /package/dist/esm/{types/overrides.min.mjs.map → chunk-AQY7QVYI.min.mjs.map} +0 -0
  779. /package/dist/esm/{types/overrides.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
@@ -0,0 +1,1709 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/server/adapters/fastify/index.ts
32
+ var fastify_exports = {};
33
+ __export(fastify_exports, {
34
+ FastifyServer: () => FastifyServer
35
+ });
36
+ module.exports = __toCommonJS(fastify_exports);
37
+ var import_cookie = __toESM(require("@fastify/cookie"), 1);
38
+ var import_cors3 = __toESM(require("@fastify/cors"), 1);
39
+ var import_formbody = __toESM(require("@fastify/formbody"), 1);
40
+ var import_helmet = __toESM(require("@fastify/helmet"), 1);
41
+ var import_multipart = __toESM(require("@fastify/multipart"), 1);
42
+ var import_rate_limit = __toESM(require("@fastify/rate-limit"), 1);
43
+ var import_static = __toESM(require("@fastify/static"), 1);
44
+ var import_fastify = __toESM(require("fastify"), 1);
45
+ var import_qs = __toESM(require("qs"), 1);
46
+
47
+ // src/errors/equippedError.ts
48
+ var EquippedError = class extends Error {
49
+ constructor(message, context, cause) {
50
+ super(message, { cause });
51
+ this.message = message;
52
+ this.context = context;
53
+ this.cause = cause;
54
+ }
55
+ };
56
+
57
+ // src/errors/requestError.ts
58
+ var RequestError = class extends EquippedError {
59
+ constructor(message, serializedErrors, cause) {
60
+ super(message, { serializedErrors }, cause);
61
+ this.message = message;
62
+ this.serializedErrors = serializedErrors;
63
+ }
64
+ };
65
+
66
+ // src/server/adapters/base.ts
67
+ var import_cors = require("@fastify/cors");
68
+ var import_cors2 = require("cors");
69
+ var import_socket = require("socket.io");
70
+ var import_supertest = __toESM(require("supertest"), 1);
71
+ var import_valleyed8 = require("valleyed");
72
+
73
+ // src/events/adapters/base.ts
74
+ var EventBus = class {
75
+ };
76
+
77
+ // src/instance/index.ts
78
+ var import_pino = __toESM(require("pino"), 1);
79
+ var import_ulid = require("ulid");
80
+ var import_valleyed2 = require("valleyed");
81
+
82
+ // src/instance/hooks.ts
83
+ function registerHook(hooks, record) {
84
+ for (const dep of record.after) {
85
+ if (!hooks.some((h) => h.class === dep)) {
86
+ const depName = dep.name || "unknown";
87
+ const ownerName = record.class?.name || "anonymous";
88
+ throw new Error(`Missing dependency: ${ownerName} declares after: [${depName}], but ${depName} is not registered`);
89
+ }
90
+ }
91
+ if (record.class) {
92
+ const tentative = [...hooks, record];
93
+ detectCycle(tentative);
94
+ }
95
+ hooks.push(record);
96
+ }
97
+ function detectCycle(hooks) {
98
+ const classToAfter = /* @__PURE__ */ new Map();
99
+ for (const h of hooks) {
100
+ if (!h.class) continue;
101
+ const existing = classToAfter.get(h.class);
102
+ if (existing) {
103
+ for (const dep of h.after) {
104
+ if (!existing.includes(dep)) existing.push(dep);
105
+ }
106
+ } else {
107
+ classToAfter.set(h.class, [...h.after]);
108
+ }
109
+ }
110
+ const visited = /* @__PURE__ */ new Set();
111
+ const stack = /* @__PURE__ */ new Set();
112
+ function visit(cls, path) {
113
+ if (stack.has(cls)) {
114
+ const cycleStart = path.indexOf(cls);
115
+ const cycle = [...path.slice(cycleStart), cls];
116
+ const names = cycle.map((c) => c.name || "unknown");
117
+ throw new Error(`Cycle detected: ${names.join(" \u2192 ")}`);
118
+ }
119
+ if (visited.has(cls)) return;
120
+ stack.add(cls);
121
+ path.push(cls);
122
+ for (const dep of classToAfter.get(cls) ?? []) {
123
+ visit(dep, path);
124
+ }
125
+ path.pop();
126
+ stack.delete(cls);
127
+ visited.add(cls);
128
+ }
129
+ for (const cls of classToAfter.keys()) {
130
+ visit(cls, []);
131
+ }
132
+ }
133
+ function resolveHookDAG(hooks, invert = false) {
134
+ if (hooks.length === 0) return [];
135
+ const classToHooks = /* @__PURE__ */ new Map();
136
+ const anonymous = [];
137
+ for (const h of hooks) {
138
+ if (h.class) {
139
+ const list = classToHooks.get(h.class);
140
+ if (list) list.push(h);
141
+ else classToHooks.set(h.class, [h]);
142
+ } else {
143
+ anonymous.push(h);
144
+ }
145
+ }
146
+ const classes = [...classToHooks.keys()];
147
+ const inDegree = /* @__PURE__ */ new Map();
148
+ const graph = /* @__PURE__ */ new Map();
149
+ for (const cls of classes) {
150
+ inDegree.set(cls, 0);
151
+ graph.set(cls, []);
152
+ }
153
+ for (const h of hooks) {
154
+ if (!h.class) continue;
155
+ for (const dep of h.after) {
156
+ const [from, to] = invert ? [h.class, dep] : [dep, h.class];
157
+ const edges = graph.get(from);
158
+ if (!edges.includes(to)) {
159
+ edges.push(to);
160
+ inDegree.set(to, inDegree.get(to) + 1);
161
+ }
162
+ }
163
+ }
164
+ const layers = [];
165
+ let queue = classes.filter((c) => inDegree.get(c) === 0);
166
+ while (queue.length > 0) {
167
+ const layer = [];
168
+ const next = [];
169
+ for (const cls of queue) {
170
+ layer.push(...classToHooks.get(cls) ?? []);
171
+ }
172
+ layers.push(layer);
173
+ for (const cls of queue) {
174
+ for (const neighbor of graph.get(cls) ?? []) {
175
+ const d = inDegree.get(neighbor) - 1;
176
+ inDegree.set(neighbor, d);
177
+ if (d === 0) next.push(neighbor);
178
+ }
179
+ }
180
+ queue = next;
181
+ }
182
+ if (anonymous.length > 0) {
183
+ const anonWithDeps = anonymous.filter((h) => h.after.length > 0);
184
+ const anonWithoutDeps = anonymous.filter((h) => h.after.length === 0);
185
+ if (anonWithDeps.length > 0) {
186
+ let maxLayer = -1;
187
+ for (const h of anonWithDeps) {
188
+ for (const dep of h.after) {
189
+ const depLayer = layers.findIndex((l) => l.some((r) => r.class === dep));
190
+ if (depLayer > maxLayer) maxLayer = depLayer;
191
+ }
192
+ }
193
+ const insertAt = maxLayer + 1;
194
+ if (insertAt < layers.length) {
195
+ layers[insertAt].push(...anonWithDeps);
196
+ } else {
197
+ layers.push(anonWithDeps);
198
+ }
199
+ }
200
+ if (anonWithoutDeps.length > 0) {
201
+ if (layers.length > 0) {
202
+ layers[layers.length - 1].push(...anonWithoutDeps);
203
+ } else {
204
+ layers.push(anonWithoutDeps);
205
+ }
206
+ }
207
+ }
208
+ return layers;
209
+ }
210
+ async function runHooks(hooks, onError = (error) => {
211
+ throw error;
212
+ }, invert = false) {
213
+ const layers = resolveHookDAG(hooks, invert);
214
+ for (const layer of layers)
215
+ await Promise.all(
216
+ layer.map(async (h) => {
217
+ try {
218
+ if (typeof h.cb === "function") return await h.cb();
219
+ return await h.cb;
220
+ } catch (error) {
221
+ return onError(error instanceof Error ? error : new Error(`${error}`));
222
+ }
223
+ })
224
+ );
225
+ }
226
+ if (void 0) {
227
+ const { describe, test, expect } = void 0;
228
+ class A {
229
+ }
230
+ class B {
231
+ }
232
+ class C {
233
+ }
234
+ class D {
235
+ }
236
+ const noop = () => {
237
+ };
238
+ describe("registerHook", () => {
239
+ test("registers a hook with no dependencies", () => {
240
+ const hooks = [];
241
+ registerHook(hooks, { cb: noop, class: A, after: [] });
242
+ expect(hooks).toHaveLength(1);
243
+ });
244
+ test("throws on missing dependency", () => {
245
+ const hooks = [];
246
+ expect(() => registerHook(hooks, { cb: noop, class: B, after: [A] })).toThrow(/Missing dependency.*B.*A/);
247
+ });
248
+ test("throws on cycle: A\u2192B\u2192A", () => {
249
+ const hooks = [];
250
+ registerHook(hooks, { cb: noop, class: A, after: [] });
251
+ registerHook(hooks, { cb: noop, class: B, after: [A] });
252
+ expect(() => registerHook(hooks, { cb: noop, class: A, after: [B] })).toThrow(/Cycle detected/);
253
+ });
254
+ test("throws on transitive cycle: A\u2192B\u2192C\u2192A", () => {
255
+ const hooks = [];
256
+ registerHook(hooks, { cb: noop, class: A, after: [] });
257
+ registerHook(hooks, { cb: noop, class: B, after: [A] });
258
+ registerHook(hooks, { cb: noop, class: C, after: [B] });
259
+ expect(() => registerHook(hooks, { cb: noop, class: A, after: [C] })).toThrow(/Cycle detected/);
260
+ });
261
+ test("allows anonymous hooks with dependencies", () => {
262
+ const hooks = [];
263
+ registerHook(hooks, { cb: noop, class: A, after: [] });
264
+ registerHook(hooks, { cb: noop, after: [A] });
265
+ expect(hooks).toHaveLength(2);
266
+ });
267
+ test("anonymous hook throws on missing dependency", () => {
268
+ const hooks = [];
269
+ expect(() => registerHook(hooks, { cb: noop, after: [A] })).toThrow(/Missing dependency.*anonymous.*A/);
270
+ });
271
+ });
272
+ describe("resolveHookDAG", () => {
273
+ test("linear chain: A \u2192 B \u2192 C", () => {
274
+ const hooks = [
275
+ { cb: noop, class: A, after: [] },
276
+ { cb: noop, class: B, after: [A] },
277
+ { cb: noop, class: C, after: [B] }
278
+ ];
279
+ const layers = resolveHookDAG(hooks);
280
+ expect(layers).toHaveLength(3);
281
+ expect(layers[0].every((h) => h.class === A)).toBe(true);
282
+ expect(layers[1].every((h) => h.class === B)).toBe(true);
283
+ expect(layers[2].every((h) => h.class === C)).toBe(true);
284
+ });
285
+ test("fan-out: A \u2192 B, A \u2192 C (B and C are parallel)", () => {
286
+ const hooks = [
287
+ { cb: noop, class: A, after: [] },
288
+ { cb: noop, class: B, after: [A] },
289
+ { cb: noop, class: C, after: [A] }
290
+ ];
291
+ const layers = resolveHookDAG(hooks);
292
+ expect(layers).toHaveLength(2);
293
+ expect(layers[0].every((h) => h.class === A)).toBe(true);
294
+ const secondClasses = layers[1].map((h) => h.class);
295
+ expect(secondClasses).toContain(B);
296
+ expect(secondClasses).toContain(C);
297
+ });
298
+ test("fan-in: B \u2192 D, C \u2192 D", () => {
299
+ const hooks = [
300
+ { cb: noop, class: B, after: [] },
301
+ { cb: noop, class: C, after: [] },
302
+ { cb: noop, class: D, after: [B, C] }
303
+ ];
304
+ const layers = resolveHookDAG(hooks);
305
+ expect(layers).toHaveLength(2);
306
+ const firstClasses = layers[0].map((h) => h.class);
307
+ expect(firstClasses).toContain(B);
308
+ expect(firstClasses).toContain(C);
309
+ expect(layers[1].every((h) => h.class === D)).toBe(true);
310
+ });
311
+ test("diamond: A \u2192 B, A \u2192 C, B \u2192 D, C \u2192 D", () => {
312
+ const hooks = [
313
+ { cb: noop, class: A, after: [] },
314
+ { cb: noop, class: B, after: [A] },
315
+ { cb: noop, class: C, after: [A] },
316
+ { cb: noop, class: D, after: [B, C] }
317
+ ];
318
+ const layers = resolveHookDAG(hooks);
319
+ expect(layers).toHaveLength(3);
320
+ expect(layers[0][0].class).toBe(A);
321
+ const midClasses = layers[1].map((h) => h.class);
322
+ expect(midClasses).toContain(B);
323
+ expect(midClasses).toContain(C);
324
+ expect(layers[2][0].class).toBe(D);
325
+ });
326
+ test("close-event inversion reverses the graph", () => {
327
+ const hooks = [
328
+ { cb: noop, class: A, after: [] },
329
+ { cb: noop, class: B, after: [A] },
330
+ { cb: noop, class: C, after: [B] }
331
+ ];
332
+ const layers = resolveHookDAG(hooks, true);
333
+ expect(layers).toHaveLength(3);
334
+ expect(layers[0].every((h) => h.class === C)).toBe(true);
335
+ expect(layers[1].every((h) => h.class === B)).toBe(true);
336
+ expect(layers[2].every((h) => h.class === A)).toBe(true);
337
+ });
338
+ test("close inversion: fan-out becomes fan-in", () => {
339
+ const hooks = [
340
+ { cb: noop, class: A, after: [] },
341
+ { cb: noop, class: B, after: [A] },
342
+ { cb: noop, class: C, after: [A] }
343
+ ];
344
+ const layers = resolveHookDAG(hooks, true);
345
+ expect(layers).toHaveLength(2);
346
+ const firstClasses = layers[0].map((h) => h.class);
347
+ expect(firstClasses).toContain(B);
348
+ expect(firstClasses).toContain(C);
349
+ expect(layers[1].every((h) => h.class === A)).toBe(true);
350
+ });
351
+ test("multiple hooks per class are all in the same layer", () => {
352
+ const cb1 = () => {
353
+ };
354
+ const cb2 = () => {
355
+ };
356
+ const hooks = [
357
+ { cb: cb1, class: A, after: [] },
358
+ { cb: cb2, class: A, after: [] },
359
+ { cb: noop, class: B, after: [A] }
360
+ ];
361
+ const layers = resolveHookDAG(hooks);
362
+ expect(layers).toHaveLength(2);
363
+ expect(layers[0]).toHaveLength(2);
364
+ expect(layers[0].every((h) => h.class === A)).toBe(true);
365
+ });
366
+ test("anonymous hooks without deps run at deepest level", () => {
367
+ const hooks = [
368
+ { cb: noop, class: A, after: [] },
369
+ { cb: noop, class: B, after: [A] },
370
+ { cb: noop, after: [] }
371
+ ];
372
+ const layers = resolveHookDAG(hooks);
373
+ expect(layers).toHaveLength(2);
374
+ const lastLayer = layers[layers.length - 1];
375
+ expect(lastLayer.some((h) => h.class === void 0)).toBe(true);
376
+ });
377
+ test("anonymous hooks with deps run after their dependencies", () => {
378
+ const hooks = [
379
+ { cb: noop, class: A, after: [] },
380
+ { cb: noop, class: B, after: [A] },
381
+ { cb: noop, class: C, after: [B] },
382
+ { cb: noop, after: [A] }
383
+ ];
384
+ const layers = resolveHookDAG(hooks);
385
+ const anonLayer = layers.findIndex((l) => l.some((h) => h.class === void 0));
386
+ const aLayer = layers.findIndex((l) => l.some((h) => h.class === A));
387
+ expect(anonLayer).toBeGreaterThan(aLayer);
388
+ });
389
+ test("empty hooks returns empty layers", () => {
390
+ expect(resolveHookDAG([])).toEqual([]);
391
+ });
392
+ });
393
+ describe("runHooks", () => {
394
+ test("same-depth siblings observably overlap", async () => {
395
+ const log = [];
396
+ const hooks = [
397
+ {
398
+ cb: async () => {
399
+ log.push("B-start");
400
+ await new Promise((r) => setTimeout(r, 20));
401
+ log.push("B-end");
402
+ },
403
+ class: B,
404
+ after: []
405
+ },
406
+ {
407
+ cb: async () => {
408
+ log.push("C-start");
409
+ await new Promise((r) => setTimeout(r, 20));
410
+ log.push("C-end");
411
+ },
412
+ class: C,
413
+ after: []
414
+ }
415
+ ];
416
+ await runHooks(hooks);
417
+ expect(log[0]).toBe("B-start");
418
+ expect(log[1]).toBe("C-start");
419
+ });
420
+ test("different depths run sequentially", async () => {
421
+ const log = [];
422
+ const hooks = [
423
+ {
424
+ cb: async () => {
425
+ log.push("A");
426
+ },
427
+ class: A,
428
+ after: []
429
+ },
430
+ {
431
+ cb: async () => {
432
+ log.push("B");
433
+ },
434
+ class: B,
435
+ after: [A]
436
+ }
437
+ ];
438
+ await runHooks(hooks);
439
+ expect(log).toEqual(["A", "B"]);
440
+ });
441
+ test("close inversion runs hooks in reverse dependency order", async () => {
442
+ const log = [];
443
+ const hooks = [
444
+ { cb: async () => log.push("A"), class: A, after: [] },
445
+ { cb: async () => log.push("B"), class: B, after: [A] },
446
+ { cb: async () => log.push("C"), class: C, after: [B] }
447
+ ];
448
+ await runHooks(hooks, void 0, true);
449
+ expect(log).toEqual(["C", "B", "A"]);
450
+ });
451
+ test("errors are routed to onError handler", async () => {
452
+ const errors = [];
453
+ const hooks = [
454
+ {
455
+ cb: () => {
456
+ throw new Error("boom");
457
+ },
458
+ class: A,
459
+ after: []
460
+ }
461
+ ];
462
+ await runHooks(hooks, (e) => {
463
+ errors.push(e);
464
+ });
465
+ expect(errors).toHaveLength(1);
466
+ expect(errors[0].message).toBe("boom");
467
+ });
468
+ test("raw promise callbacks are awaited", async () => {
469
+ const log = [];
470
+ const hooks = [
471
+ {
472
+ cb: Promise.resolve().then(() => log.push("resolved")),
473
+ class: A,
474
+ after: []
475
+ }
476
+ ];
477
+ await runHooks(hooks);
478
+ expect(log).toContain("resolved");
479
+ });
480
+ });
481
+ }
482
+
483
+ // src/instance/settings.ts
484
+ var import_valleyed = require("valleyed");
485
+ var instanceSettingsPipe = () => import_valleyed.v.object({
486
+ app: import_valleyed.v.object({
487
+ name: import_valleyed.v.string()
488
+ }),
489
+ log: import_valleyed.v.defaults(
490
+ import_valleyed.v.object({
491
+ level: import_valleyed.v.defaults(import_valleyed.v.in(["fatal", "error", "warn", "info", "debug", "trace", "silent"]), "info")
492
+ }),
493
+ {}
494
+ ),
495
+ utils: import_valleyed.v.defaults(
496
+ import_valleyed.v.object({
497
+ hashSaltRounds: import_valleyed.v.defaults(import_valleyed.v.number(), 10),
498
+ paginationDefaultLimit: import_valleyed.v.defaults(import_valleyed.v.number(), 100),
499
+ maxFileUploadSizeInMb: import_valleyed.v.defaults(import_valleyed.v.number(), 500)
500
+ }),
501
+ {}
502
+ )
503
+ });
504
+
505
+ // src/instance/index.ts
506
+ var Instance = class _Instance {
507
+ static #id;
508
+ static #instance;
509
+ static #hooks = {};
510
+ settings;
511
+ log;
512
+ constructor(settings) {
513
+ _Instance.#instance = this;
514
+ this.settings = Object.freeze(settings);
515
+ this.log = (0, import_pino.default)({
516
+ level: this.settings.log.level,
517
+ serializers: {
518
+ err: import_pino.default.stdSerializers.err,
519
+ error: import_pino.default.stdSerializers.err,
520
+ req: import_pino.default.stdSerializers.req,
521
+ res: import_pino.default.stdSerializers.res
522
+ },
523
+ mixin: () => ({
524
+ instanceId: _Instance.#id
525
+ })
526
+ });
527
+ _Instance.#registerOnExitHandler();
528
+ }
529
+ alias(id) {
530
+ if (_Instance.#id !== void 0) return _Instance.crash(new EquippedError("Instance already has an alias", {}));
531
+ _Instance.#id = id;
532
+ }
533
+ get id() {
534
+ if (_Instance.#id === void 0) return _Instance.crash(new EquippedError("Instance doesnt have an alias yet", {}));
535
+ return _Instance.#id;
536
+ }
537
+ getScopedName(name, key = ".") {
538
+ return [this.settings.app.name, name].join(key);
539
+ }
540
+ async start() {
541
+ try {
542
+ await runHooks(_Instance.#hooks["setup"] ?? []);
543
+ await runHooks(_Instance.#hooks["start"] ?? []);
544
+ } catch (error) {
545
+ _Instance.crash(new EquippedError(`Error starting instance`, {}, error));
546
+ }
547
+ }
548
+ static envs(envsPipe) {
549
+ const envValidity = import_valleyed2.v.validate(envsPipe, process.env);
550
+ if (!envValidity.valid) {
551
+ _Instance.crash(
552
+ new EquippedError(`Environment variables are not valid
553
+ ${envValidity.error.toString()}`, {
554
+ messages: envValidity.error.messages
555
+ })
556
+ );
557
+ }
558
+ return envValidity.value;
559
+ }
560
+ static create(settings) {
561
+ if (_Instance.#instance) return _Instance.crash(new EquippedError("Instance has been initialized already", {}));
562
+ const settingsValidity = import_valleyed2.v.validate(instanceSettingsPipe(), settings);
563
+ if (!settingsValidity.valid) {
564
+ _Instance.crash(
565
+ new EquippedError(`Settings are not valid
566
+ ${settingsValidity.error.toString()}`, {
567
+ messages: settingsValidity.error.messages
568
+ })
569
+ );
570
+ }
571
+ return new _Instance(settingsValidity.value);
572
+ }
573
+ static get() {
574
+ if (!_Instance.#instance)
575
+ return _Instance.crash(
576
+ new EquippedError("Has not been initialized. Make sure an instance has been created before you get an instance", {})
577
+ );
578
+ return _Instance.#instance;
579
+ }
580
+ static maybeGet() {
581
+ return _Instance.#instance;
582
+ }
583
+ static on(event, cb, options) {
584
+ _Instance.#hooks[event] ??= [];
585
+ const record = { cb, class: options?.class, after: options?.after ?? [] };
586
+ registerHook(_Instance.#hooks[event], record);
587
+ }
588
+ static #registerOnExitHandler() {
589
+ const signals = {
590
+ SIGHUP: 1,
591
+ SIGINT: 2,
592
+ SIGTERM: 15
593
+ };
594
+ Object.entries(signals).forEach(([signal, code]) => {
595
+ process.on(signal, async () => {
596
+ await runHooks(_Instance.#hooks["close"] ?? [], () => {
597
+ }, true);
598
+ process.exit(128 + code);
599
+ });
600
+ });
601
+ }
602
+ static resolveBeforeCrash(cb) {
603
+ const value = cb();
604
+ _Instance.on("close", async () => await value);
605
+ return value;
606
+ }
607
+ static crash(error) {
608
+ console.error(error);
609
+ process.exit(1);
610
+ }
611
+ static createId(opts) {
612
+ return `${opts?.prefix ?? ""}${(0, import_ulid.ulid)(opts?.time?.getTime())}`;
613
+ }
614
+ };
615
+
616
+ // src/validations/index.ts
617
+ var validations_exports = {};
618
+ __export(validations_exports, {
619
+ pipeErrorToValidationError: () => pipeErrorToValidationError,
620
+ validate: () => validate,
621
+ ve: () => valleyed_exports
622
+ });
623
+ __reExport(validations_exports, require("valleyed"));
624
+
625
+ // src/validations/valleyed.ts
626
+ var valleyed_exports = {};
627
+ __export(valleyed_exports, {
628
+ incomingFile: () => incomingFile,
629
+ incomingFiles: () => incomingFiles,
630
+ requestLocalStorage: () => requestLocalStorage,
631
+ responseLocalStorage: () => responseLocalStorage,
632
+ withRequest: () => withRequest,
633
+ withResponse: () => withResponse
634
+ });
635
+ var import_node_async_hooks = require("async_hooks");
636
+ var import_valleyed3 = require("valleyed");
637
+ var filePipe = (err) => import_valleyed3.v.array(
638
+ import_valleyed3.v.file(err).pipe((input) => {
639
+ const err2 = `is larger than allowed limit of ${Instance.get().settings.utils.maxFileUploadSizeInMb}mb`;
640
+ const valid = input ? !input.isTruncated : true;
641
+ if (valid) return input;
642
+ throw import_valleyed3.PipeError.root(err2, input);
643
+ })
644
+ );
645
+ var incomingFile = (err) => import_valleyed3.v.define(
646
+ import_valleyed3.v.compile(
647
+ filePipe(err).pipe(import_valleyed3.v.min(1, "no file provided")).pipe((files) => files[0])
648
+ ),
649
+ { schema: () => ({ type: "string", format: "binary" }) }
650
+ );
651
+ var incomingFiles = (err) => import_valleyed3.v.define(import_valleyed3.v.compile(filePipe(err)), {
652
+ schema: () => ({ type: "string", format: "binary" })
653
+ });
654
+ var requestLocalStorage = new import_node_async_hooks.AsyncLocalStorage();
655
+ var responseLocalStorage = new import_node_async_hooks.AsyncLocalStorage();
656
+ var withRequest = (fn) => import_valleyed3.v.define((input) => {
657
+ const req = requestLocalStorage.getStore();
658
+ if (!req) throw new Error("Request not found in context");
659
+ const validated = import_valleyed3.v.validate(fn(req), input);
660
+ return validated.valid ? validated.value : validated.error;
661
+ });
662
+ var withResponse = (fn) => import_valleyed3.v.define((input) => {
663
+ const res = responseLocalStorage.getStore();
664
+ if (!res) throw new Error("Response not found in context");
665
+ const validated = import_valleyed3.v.validate(fn(res), input);
666
+ return validated.valid ? validated.value : validated.error;
667
+ });
668
+
669
+ // src/validations/index.ts
670
+ var import_valleyed4 = require("valleyed");
671
+ function pipeErrorToValidationError(error) {
672
+ const errorsObject = error.messages.reduce((acc, { path = "", message }) => {
673
+ if (acc[path]) acc[path].messages.push(message);
674
+ else acc[path] = { field: path, messages: [message] };
675
+ return acc;
676
+ }, {});
677
+ return new ValidationError(Object.values(errorsObject));
678
+ }
679
+ function validate(pipe, value) {
680
+ const validity = import_valleyed4.v.validate(pipe, value);
681
+ if (validity.valid) return validity.value;
682
+ throw pipeErrorToValidationError(validity.error);
683
+ }
684
+
685
+ // src/server/openapi.ts
686
+ var import_json_schema_to_openapi_schema = require("@openapi-contrib/json-schema-to-openapi-schema");
687
+ var import_valleyed6 = require("valleyed");
688
+
689
+ // src/server/routes.ts
690
+ var import_valleyed5 = require("valleyed");
691
+
692
+ // src/server/types.ts
693
+ var Methods = {
694
+ head: "head",
695
+ get: "get",
696
+ post: "post",
697
+ put: "put",
698
+ patch: "patch",
699
+ delete: "delete",
700
+ options: "options"
701
+ };
702
+ var StatusCodes = {
703
+ Ok: 200,
704
+ Found: 302,
705
+ BadRequest: 400,
706
+ NotAuthenticated: 401,
707
+ NotAuthorized: 403,
708
+ NotFound: 404,
709
+ ValidationError: 422,
710
+ TooManyRequests: 429,
711
+ TokenExpired: 461
712
+ };
713
+
714
+ // src/server/routes.ts
715
+ function mergeSchemas(...schemas) {
716
+ const k = {
717
+ params: "",
718
+ headers: "",
719
+ query: "",
720
+ body: "",
721
+ cookies: "",
722
+ response: "",
723
+ responseHeaders: "",
724
+ responseCookies: "",
725
+ defaultStatusCode: "",
726
+ defaultContentType: ""
727
+ };
728
+ function merge(acc, cur) {
729
+ if (!acc) return cur;
730
+ if (!cur) return acc;
731
+ if (typeof acc === "number") return cur;
732
+ if (typeof acc === "string") return cur;
733
+ if (typeof acc === "function") return cur;
734
+ return import_valleyed5.v.merge(acc, cur);
735
+ }
736
+ return Object.fromEntries(
737
+ Object.keys(k).map((key) => [
738
+ key,
739
+ schemas.map((s) => s[key]).reduce(merge, null)
740
+ ])
741
+ );
742
+ }
743
+ var groupRoutes = (config, routes) => routes.map((route) => ({
744
+ ...config,
745
+ ...route,
746
+ path: `${config.path}/${route.path}`,
747
+ groups: [...config.groups ?? [], ...route.groups ?? []],
748
+ middlewares: [...config.middlewares ?? [], ...route.middlewares ?? []],
749
+ responseMiddlewares: [...config.responseMiddlewares ?? [], ...route.responseMiddlewares ?? []],
750
+ schema: mergeSchemas(config.schema ?? {}, route.schema ?? {}),
751
+ security: [...config.security ?? [], ...route.security ?? []]
752
+ }));
753
+ var Router = class {
754
+ #config = { path: "" };
755
+ #routes = [];
756
+ #children = [];
757
+ constructor(config = { path: "" }) {
758
+ this.#config = config;
759
+ }
760
+ #wrap(method) {
761
+ return (path, config = {}) => (handler) => {
762
+ const route = groupRoutes(this.#config, [{ ...config, path, method, handler }])[0];
763
+ this.#routes.push(route);
764
+ return route;
765
+ };
766
+ }
767
+ head = this.#wrap(Methods.head);
768
+ get = this.#wrap(Methods.get);
769
+ post = this.#wrap(Methods.post);
770
+ put = this.#wrap(Methods.put);
771
+ patch = this.#wrap(Methods.patch);
772
+ delete = this.#wrap(Methods.delete);
773
+ options = this.#wrap(Methods.options);
774
+ nest(...routers) {
775
+ routers.forEach((router) => this.#children.push(router));
776
+ }
777
+ get routes() {
778
+ return [...this.#routes].concat(this.#children.flatMap((child) => groupRoutes(this.#config, child.routes)));
779
+ }
780
+ };
781
+
782
+ // src/server/openapi.ts
783
+ var openapi = (config) => {
784
+ const instance = Instance.get();
785
+ const { app } = instance.settings;
786
+ const baseOpenapiDoc = {
787
+ openapi: "3.0.0",
788
+ info: {
789
+ title: `${app.name} ${instance.id}`,
790
+ version: config.openapi.docsVersion ?? ""
791
+ },
792
+ servers: config.openapi.docsBaseUrl?.map((url) => ({ url })),
793
+ paths: {},
794
+ components: {
795
+ schemas: {},
796
+ securitySchemes: {
797
+ Authorization: {
798
+ type: "apiKey",
799
+ name: "authorization",
800
+ in: "header"
801
+ },
802
+ RefreshToken: {
803
+ type: "apiKey",
804
+ name: "x-refresh-token",
805
+ in: "header"
806
+ },
807
+ ApiKey: {
808
+ type: "apiKey",
809
+ name: "x-api-key",
810
+ in: "header"
811
+ }
812
+ }
813
+ },
814
+ tags: [],
815
+ "x-tagGroups": []
816
+ };
817
+ const registeredTags = {};
818
+ const registeredTagGroups = {};
819
+ const flattenForParameters = (node) => {
820
+ const { allOf, oneOf, anyOf, ...schema } = node;
821
+ if (allOf) return allOf.flatMap((n) => flattenForParameters(n));
822
+ return [schema];
823
+ };
824
+ const visit = (node) => {
825
+ if (!node || typeof node !== "object") return node;
826
+ if (typeof node.$refId === "string") {
827
+ const { $refId: id, ...rest } = node;
828
+ const res = visit(rest);
829
+ if (baseOpenapiDoc.components?.schemas) {
830
+ baseOpenapiDoc.components.schemas[id] = res;
831
+ return { $ref: `#/components/schemas/${id}` };
832
+ } else return res;
833
+ }
834
+ if (Array.isArray(node)) return node.map((n) => visit(n));
835
+ return Object.fromEntries(Object.entries(node).map(([key, value]) => [key, visit(value)]));
836
+ };
837
+ const buildTag = (groups) => {
838
+ if (!groups.length) return void 0;
839
+ const parsed = groups.map((g) => typeof g === "string" ? { name: g } : g);
840
+ const name = parsed.map((g) => g.name).join(" > ");
841
+ const displayName = parsed.at(-1)?.name ?? "";
842
+ const description = parsed.map((g) => g.description?.trim() ?? "").filter(Boolean).join("\n\n\n\n");
843
+ if (!registeredTags[name]) {
844
+ registeredTags[name] = true;
845
+ baseOpenapiDoc.tags.push({ name, "x-displayName": displayName, description });
846
+ const tagGroups = parsed.slice(0, -1);
847
+ const groupName = tagGroups.map((g) => g.name).join(" > ") || "default";
848
+ if (!registeredTagGroups[groupName]) {
849
+ const group = { name: groupName, tags: [] };
850
+ baseOpenapiDoc["x-tagGroups"].push(group);
851
+ registeredTagGroups[groupName] = group;
852
+ }
853
+ registeredTagGroups[groupName].tags = [.../* @__PURE__ */ new Set([...registeredTagGroups[groupName].tags, name])];
854
+ }
855
+ return name;
856
+ };
857
+ const addRouteToOpenApiDoc = async (path, method, def, methodObj) => {
858
+ if (def.response.response?.length) {
859
+ methodObj.responses ??= {};
860
+ for (const resp of def.response.response) {
861
+ methodObj.responses[resp.status] ??= { description: "", content: {} };
862
+ const res = methodObj.responses[resp.status];
863
+ res.content[resp.contentType] = { schema: await (0, import_json_schema_to_openapi_schema.convert)(visit(resp.schema)) };
864
+ }
865
+ }
866
+ if (def.response.responseHeaders?.length) {
867
+ methodObj.responses ??= {};
868
+ for (const resp of def.response.responseHeaders) {
869
+ methodObj.responses[resp.status] ??= { description: "", content: {} };
870
+ methodObj.responses[resp.status];
871
+ const res = methodObj.responses[resp.status];
872
+ res.headers = { schema: await (0, import_json_schema_to_openapi_schema.convert)(visit(resp.schema)) };
873
+ }
874
+ }
875
+ if (def.request.body)
876
+ methodObj.requestBody = {
877
+ required: true,
878
+ content: {
879
+ "application/json": { schema: await (0, import_json_schema_to_openapi_schema.convert)(visit(def.request.body)) }
880
+ }
881
+ };
882
+ const parameters = [];
883
+ const addParams = async (location, schema) => {
884
+ if (!schema) return;
885
+ const flat = flattenForParameters(schema);
886
+ for (const schema2 of flat) {
887
+ if (!schema2.properties) continue;
888
+ for (const [name, value] of Object.entries(schema2.properties))
889
+ parameters.push({
890
+ name,
891
+ in: location,
892
+ schema: await (0, import_json_schema_to_openapi_schema.convert)(visit(value)),
893
+ required: (schema2.required || []).includes(name)
894
+ });
895
+ }
896
+ };
897
+ await Promise.all([
898
+ addParams("query", def.request.query),
899
+ addParams("path", def.request.params),
900
+ addParams("header", def.request.headers)
901
+ ]);
902
+ if (parameters.length) methodObj.parameters = parameters;
903
+ if (!baseOpenapiDoc.paths) baseOpenapiDoc.paths = {};
904
+ if (!baseOpenapiDoc.paths[path]) baseOpenapiDoc.paths[path] = {};
905
+ baseOpenapiDoc.paths[path][method] = methodObj;
906
+ };
907
+ const html = (jsonPath2) => {
908
+ const title = (0, import_valleyed6.capitalize)(`${app.name} ${instance.id}`);
909
+ return `
910
+ <!doctype html>
911
+ <html>
912
+ <head>
913
+ <title>${title}</title>
914
+ <meta charset="utf-8" />
915
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
916
+ <style>
917
+ .darklight-reference {
918
+ display: none;
919
+ }
920
+ </style>
921
+ </head>
922
+ <body>
923
+ <script id="api-reference" data-url="${jsonPath2}"></script>
924
+ <script>
925
+ const configuration = { theme: 'purple' };
926
+ document.getElementById('api-reference').dataset.configuration = JSON.stringify(configuration);
927
+ </script>
928
+ <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.38.0"></script>
929
+ </body>
930
+ </html>
931
+ `;
932
+ };
933
+ const cleanPath = (path) => {
934
+ let cleaned = path.replace(/(\/\s*)+/g, "/");
935
+ if (!cleaned.startsWith("/")) cleaned = `/${cleaned}`;
936
+ if (cleaned !== "/" && cleaned.endsWith("/")) cleaned = cleaned.slice(0, -1);
937
+ return cleaned;
938
+ };
939
+ const register = async (route, def) => {
940
+ if (route.hide) return;
941
+ const tag = buildTag(route.groups ?? []);
942
+ const cleanedPath = cleanPath(route.path);
943
+ const operationId = `(${route.method.toUpperCase()}) ${cleanedPath}`;
944
+ await addRouteToOpenApiDoc(cleanedPath, route.method.toLowerCase(), def, {
945
+ operationId,
946
+ summary: route.title ?? cleanedPath,
947
+ description: route.descriptions?.join("\n\n"),
948
+ tags: tag ? [tag] : void 0,
949
+ security: route.security
950
+ });
951
+ };
952
+ const jsonPath = "/openapi.json";
953
+ const router = new Router({ path: config.openapi.docsPath ?? "/", hide: true });
954
+ router.get("/index.html")((req) => req.res({ body: html(`.${jsonPath}`), contentType: "text/html" }));
955
+ router.get(jsonPath)((req) => req.res({ body: baseOpenapiDoc }));
956
+ return {
957
+ router,
958
+ register,
959
+ cleanPath
960
+ };
961
+ };
962
+
963
+ // src/utilities/configurable.ts
964
+ var import_valleyed7 = require("valleyed");
965
+ function configurable(pipeFn, base) {
966
+ const pipe = pipeFn();
967
+ import_valleyed7.v.compile(pipe);
968
+ class Configurable extends base {
969
+ constructor(config, ...baseArgs) {
970
+ super(...baseArgs);
971
+ this.config = config;
972
+ }
973
+ static create(input, ...args) {
974
+ const r = import_valleyed7.v.validate(pipe, input);
975
+ if (!r.valid) throw r.error;
976
+ return new this(r.value, ...args);
977
+ }
978
+ }
979
+ return Configurable;
980
+ }
981
+ if (void 0) {
982
+ const { describe, test, expect, expectTypeOf } = void 0;
983
+ const { v: v8 } = null;
984
+ const testPipe = () => v8.object({
985
+ host: v8.string(),
986
+ port: v8.number()
987
+ });
988
+ class TestBase {
989
+ baseValue;
990
+ constructor() {
991
+ this.baseValue = "base";
992
+ }
993
+ }
994
+ class TestBaseWithArgs {
995
+ label;
996
+ constructor(label) {
997
+ this.label = label;
998
+ }
999
+ }
1000
+ describe("configurable", () => {
1001
+ test("validation runs in static create before constructor body executes", () => {
1002
+ let constructorRan = false;
1003
+ const Wrapped = configurable(testPipe, TestBase);
1004
+ class MyClass extends Wrapped {
1005
+ constructor(config) {
1006
+ super(config);
1007
+ constructorRan = true;
1008
+ }
1009
+ }
1010
+ expect(() => MyClass.create({ host: 123, port: "bad" })).toThrow();
1011
+ expect(constructorRan).toBe(false);
1012
+ MyClass.create({ host: "localhost", port: 3e3 });
1013
+ expect(constructorRan).toBe(true);
1014
+ });
1015
+ test("constructor receives validated value", () => {
1016
+ const Wrapped = configurable(testPipe, TestBase);
1017
+ let receivedConfig;
1018
+ class MyClass extends Wrapped {
1019
+ constructor(config) {
1020
+ super(config);
1021
+ receivedConfig = this.config;
1022
+ }
1023
+ }
1024
+ MyClass.create({ host: "localhost", port: 3e3 });
1025
+ expect(receivedConfig).toEqual({ host: "localhost", port: 3e3 });
1026
+ });
1027
+ test("external new is a compile error", () => {
1028
+ const Wrapped = configurable(testPipe, TestBase);
1029
+ class MyClass extends Wrapped {
1030
+ constructor(config) {
1031
+ super(config);
1032
+ }
1033
+ }
1034
+ void (() => new MyClass({ host: "localhost", port: 3e3 }));
1035
+ });
1036
+ test("static Config resolves to PipeOutput<P> at the type level", () => {
1037
+ const Wrapped = configurable(testPipe, TestBase);
1038
+ class MyClass extends Wrapped {
1039
+ constructor(config) {
1040
+ super(config);
1041
+ }
1042
+ }
1043
+ expectTypeOf().toEqualTypeOf();
1044
+ expect(MyClass.create).toBeTypeOf("function");
1045
+ });
1046
+ test("ConstructorParameters<This>-based extras inference works for non-zero-arg leaf signatures", () => {
1047
+ const Wrapped = configurable(testPipe, TestBase);
1048
+ class MyClass extends Wrapped {
1049
+ extra;
1050
+ constructor(config, extra) {
1051
+ super(config);
1052
+ this.extra = extra;
1053
+ }
1054
+ }
1055
+ const instance = MyClass.create({ host: "localhost", port: 3e3 }, 42);
1056
+ expect(instance.extra).toBe(42);
1057
+ expectTypeOf(instance).toHaveProperty("extra");
1058
+ expectTypeOf(instance.extra).toEqualTypeOf();
1059
+ void (() => MyClass.create({ host: "localhost", port: 3e3 }, "not-a-number"));
1060
+ });
1061
+ test("base-args forwarding works for non-zero-arg bases", () => {
1062
+ const Wrapped = configurable(testPipe, TestBaseWithArgs);
1063
+ class MyClass extends Wrapped {
1064
+ constructor(config, label) {
1065
+ super(config, label);
1066
+ }
1067
+ }
1068
+ const instance = MyClass.create({ host: "localhost", port: 3e3 }, "test-label");
1069
+ expect(instance.label).toBe("test-label");
1070
+ });
1071
+ test("config is accessible as protected readonly on instances", () => {
1072
+ const Wrapped = configurable(testPipe, TestBase);
1073
+ class MyClass extends Wrapped {
1074
+ constructor(config) {
1075
+ super(config);
1076
+ }
1077
+ getHost() {
1078
+ return this.config.host;
1079
+ }
1080
+ }
1081
+ const instance = MyClass.create({ host: "localhost", port: 3e3 });
1082
+ expect(instance.getHost()).toBe("localhost");
1083
+ });
1084
+ test("accepts an abstract base class", () => {
1085
+ class AbstractBase {
1086
+ }
1087
+ const Wrapped = configurable(testPipe, AbstractBase);
1088
+ class Concrete extends Wrapped {
1089
+ constructor(config) {
1090
+ super(config);
1091
+ }
1092
+ greet() {
1093
+ return `hello from ${this.config.host}`;
1094
+ }
1095
+ }
1096
+ const instance = Concrete.create({ host: "localhost", port: 3e3 });
1097
+ expect(instance.greet()).toBe("hello from localhost");
1098
+ expectTypeOf(instance).toHaveProperty("config");
1099
+ });
1100
+ });
1101
+ }
1102
+
1103
+ // src/utilities/json.ts
1104
+ var parseJSONValue = (data) => {
1105
+ try {
1106
+ if (data?.constructor?.name !== "String") return data;
1107
+ return JSON.parse(data);
1108
+ } catch {
1109
+ return data;
1110
+ }
1111
+ };
1112
+ function parseJSONObject(data) {
1113
+ return Object.fromEntries(Object.entries(data).map(([key, value]) => [key, parseJSONValue(value)]));
1114
+ }
1115
+
1116
+ // src/utilities/media.ts
1117
+ var import_music_metadata = require("music-metadata");
1118
+ var getMediaDuration = async (buffer) => {
1119
+ try {
1120
+ const meta = await (0, import_music_metadata.parseBuffer)(buffer);
1121
+ return meta.format.duration ?? 0;
1122
+ } catch {
1123
+ return 0;
1124
+ }
1125
+ };
1126
+
1127
+ // src/server/requests.ts
1128
+ var Request = class {
1129
+ ip;
1130
+ method;
1131
+ path;
1132
+ body;
1133
+ params;
1134
+ query;
1135
+ headers;
1136
+ cookies;
1137
+ authUser = null;
1138
+ constructor({
1139
+ ip,
1140
+ body,
1141
+ cookies,
1142
+ params,
1143
+ query,
1144
+ method,
1145
+ path,
1146
+ headers,
1147
+ files
1148
+ }) {
1149
+ this.ip = ip;
1150
+ this.method = method;
1151
+ this.path = path;
1152
+ this.params = params;
1153
+ this.cookies = cookies;
1154
+ this.headers = headers;
1155
+ this.query = parseJSONObject(query);
1156
+ this.body = Object.assign(parseJSONObject(body), files);
1157
+ }
1158
+ pipe(stream, opts = {}) {
1159
+ return new Response({ ...opts, piped: true, body: stream });
1160
+ }
1161
+ res(params) {
1162
+ return new Response({ ...params, piped: false });
1163
+ }
1164
+ error(params) {
1165
+ return new Response({ ...params, piped: false });
1166
+ }
1167
+ };
1168
+ var Response = class {
1169
+ body;
1170
+ headers;
1171
+ cookies;
1172
+ status;
1173
+ contentType;
1174
+ piped;
1175
+ constructor({
1176
+ body,
1177
+ status = 200,
1178
+ headers = {},
1179
+ cookies = {},
1180
+ piped = false,
1181
+ contentType = "application/json"
1182
+ }) {
1183
+ this.body = body;
1184
+ this.status = status;
1185
+ this.contentType = contentType;
1186
+ this.headers = headers;
1187
+ this.cookies = cookies;
1188
+ this.piped = piped;
1189
+ if (!this.piped) {
1190
+ this.headers["Content-Type"] = contentType;
1191
+ }
1192
+ }
1193
+ get cookieValues() {
1194
+ return Object.fromEntries(Object.entries(this.cookies).map(([key, val]) => [key, val]));
1195
+ }
1196
+ set cookieValues(values) {
1197
+ Object.entries(values).forEach(([key, val]) => {
1198
+ if (this.cookies[key]) this.cookies[key].value = val;
1199
+ });
1200
+ }
1201
+ };
1202
+
1203
+ // src/server/requests-auth-methods/base.ts
1204
+ var import_node_http2 = require("http2");
1205
+ var BaseRequestAuthMethod = class {
1206
+ static async process(methods, headers) {
1207
+ if (methods.length === 0) return null;
1208
+ let error;
1209
+ for (const method of methods) {
1210
+ try {
1211
+ return await method.parse(headers);
1212
+ } catch (err) {
1213
+ error = err;
1214
+ }
1215
+ }
1216
+ throw error instanceof RequestError ? error : new BadRequestError("failed to parse auth user", error);
1217
+ }
1218
+ };
1219
+
1220
+ // src/server/sockets.ts
1221
+ var import_path_to_regexp = require("path-to-regexp");
1222
+ var EmitterEvent = "__listener_emitter";
1223
+ var defaultTo = "*";
1224
+ var SocketEmitter = class {
1225
+ constructor(socket, config) {
1226
+ this.config = config;
1227
+ this.socketInstance = socket;
1228
+ this.#setupSocketConnection();
1229
+ Instance.on("setup", () => {
1230
+ const stream = config.eventBus?.stream(EmitterEvent, { fanout: true });
1231
+ this.#publish = stream ? stream.publish : async (data) => {
1232
+ socket.to(data.channel).emit(data.channel, data);
1233
+ };
1234
+ stream?.subscribe(async (data) => {
1235
+ socket.to(data.channel).emit(data.channel, data);
1236
+ });
1237
+ });
1238
+ }
1239
+ socketInstance;
1240
+ #connectionCallbacks = { onConnect: async () => {
1241
+ }, onDisconnect: async () => {
1242
+ } };
1243
+ #routes = {};
1244
+ #publish = async () => {
1245
+ };
1246
+ async created(channels, data, to) {
1247
+ await this.#emit(channels, "created" /* created */, { after: data.toJSON(), before: null }, to);
1248
+ }
1249
+ async updated(channels, { after, before }, to) {
1250
+ await this.#emit(channels, "updated" /* updated */, { after: after.toJSON(), before: before.toJSON() }, to);
1251
+ }
1252
+ async deleted(channels, data, to) {
1253
+ await this.#emit(channels, "deleted" /* deleted */, { before: data.toJSON(), after: null }, to);
1254
+ }
1255
+ async #emit(channels, type, { before, after }, to) {
1256
+ const toArray = Array.isArray(to) ? to : [to ?? defaultTo];
1257
+ const channelMap = channels.flatMap((c) => toArray.map((to2) => `${to2}:${c}`));
1258
+ await Promise.all(channelMap.map(async (channel) => this.#publish({ channel, type, before, after })));
1259
+ }
1260
+ set connectionCallbacks(callbacks) {
1261
+ this.#connectionCallbacks = callbacks;
1262
+ this.#setupSocketConnection();
1263
+ }
1264
+ register(channel, onJoin) {
1265
+ this.#routes[channel] = onJoin;
1266
+ this.#routes[channel + "/:id"] = onJoin;
1267
+ return this;
1268
+ }
1269
+ #getConfig(channel) {
1270
+ const matcher = (key) => (0, import_path_to_regexp.match)(key)(channel);
1271
+ const matchedChannel = Object.keys(this.#routes).find(matcher) ?? null;
1272
+ if (!matchedChannel) return null;
1273
+ const match = matcher(matchedChannel);
1274
+ if (!match) return null;
1275
+ return {
1276
+ config: this.#routes[matchedChannel],
1277
+ params: match.params
1278
+ };
1279
+ }
1280
+ #setupSocketConnection = () => {
1281
+ this.socketInstance.removeAllListeners("connection");
1282
+ this.socketInstance.on("connection", async (socket) => {
1283
+ const socketId = socket.id;
1284
+ const user = await BaseRequestAuthMethod.process(this.config.socketsAuthMethods, socket.handshake.headers).catch(() => null);
1285
+ socket.on("leave", async (data, callback) => {
1286
+ if (!data.channel)
1287
+ return typeof callback === "function" && callback({
1288
+ code: StatusCodes.ValidationError,
1289
+ message: "channel is required",
1290
+ channel: ""
1291
+ });
1292
+ socket.leave(data.channel);
1293
+ return typeof callback === "function" && callback({
1294
+ code: StatusCodes.Ok,
1295
+ message: "",
1296
+ channel: data.channel
1297
+ });
1298
+ });
1299
+ socket.on("join", async (data, callback) => {
1300
+ if (!data.channel)
1301
+ return typeof callback === "function" && callback({
1302
+ code: StatusCodes.ValidationError,
1303
+ message: "channel is required",
1304
+ channel: ""
1305
+ });
1306
+ const channel = data.channel;
1307
+ const route = this.#getConfig(channel) ?? null;
1308
+ if (!route)
1309
+ return typeof callback === "function" && callback({
1310
+ code: StatusCodes.BadRequest,
1311
+ message: "unknown channel",
1312
+ channel
1313
+ });
1314
+ const to = await route.config({ channel, user }, route.params, data.query ?? {});
1315
+ const newChannel = `${to ?? defaultTo}:${channel}`;
1316
+ socket.join(newChannel);
1317
+ return typeof callback === "function" && callback({
1318
+ code: StatusCodes.Ok,
1319
+ message: "",
1320
+ channel: newChannel
1321
+ });
1322
+ });
1323
+ if (user) await this.#connectionCallbacks.onConnect(user.id, socketId);
1324
+ socket.on("disconnect", async () => {
1325
+ if (user) await this.#connectionCallbacks.onDisconnect(user.id, socketId);
1326
+ });
1327
+ });
1328
+ };
1329
+ };
1330
+
1331
+ // src/server/adapters/base.ts
1332
+ var serverConfigPipe = () => import_valleyed8.v.object({
1333
+ port: import_valleyed8.v.number(),
1334
+ cors: import_valleyed8.v.optional(
1335
+ import_valleyed8.v.object({
1336
+ origin: import_valleyed8.v.optional(import_valleyed8.v.or([import_valleyed8.v.array(import_valleyed8.v.string()), import_valleyed8.v.is(true)])),
1337
+ methods: import_valleyed8.v.optional(import_valleyed8.v.array(import_valleyed8.v.in(Object.values(Methods)))),
1338
+ credentials: import_valleyed8.v.optional(import_valleyed8.v.boolean())
1339
+ })
1340
+ ),
1341
+ eventBus: import_valleyed8.v.optional(import_valleyed8.v.instanceOf(EventBus)),
1342
+ publicPath: import_valleyed8.v.optional(import_valleyed8.v.string()),
1343
+ healthPath: import_valleyed8.v.optional(import_valleyed8.v.string()),
1344
+ openapi: import_valleyed8.v.defaults(
1345
+ import_valleyed8.v.object({
1346
+ docsVersion: import_valleyed8.v.defaults(import_valleyed8.v.string(), "1.0.0"),
1347
+ docsBaseUrl: import_valleyed8.v.defaults(import_valleyed8.v.array(import_valleyed8.v.string()), ["/"]),
1348
+ docsPath: import_valleyed8.v.defaults(import_valleyed8.v.string(), "/__docs")
1349
+ }),
1350
+ {}
1351
+ ),
1352
+ requests: import_valleyed8.v.defaults(
1353
+ import_valleyed8.v.object({
1354
+ log: import_valleyed8.v.defaults(import_valleyed8.v.boolean(), true),
1355
+ rateLimit: import_valleyed8.v.defaults(
1356
+ import_valleyed8.v.object({
1357
+ enabled: import_valleyed8.v.defaults(import_valleyed8.v.boolean(), false),
1358
+ periodInMs: import_valleyed8.v.defaults(import_valleyed8.v.number(), 60 * 60 * 1e3),
1359
+ limit: import_valleyed8.v.defaults(import_valleyed8.v.number(), 5e3)
1360
+ }),
1361
+ {}
1362
+ ),
1363
+ slowdown: import_valleyed8.v.defaults(
1364
+ import_valleyed8.v.object({
1365
+ enabled: import_valleyed8.v.defaults(import_valleyed8.v.boolean(), false),
1366
+ periodInMs: import_valleyed8.v.defaults(import_valleyed8.v.number(), 10 * 60 * 1e3),
1367
+ delayAfter: import_valleyed8.v.defaults(import_valleyed8.v.number(), 2e3),
1368
+ delayInMs: import_valleyed8.v.defaults(import_valleyed8.v.number(), 500)
1369
+ }),
1370
+ {}
1371
+ )
1372
+ }),
1373
+ {}
1374
+ ),
1375
+ socketsAuthMethods: import_valleyed8.v.defaults(import_valleyed8.v.array(import_valleyed8.v.instanceOf(BaseRequestAuthMethod)), [])
1376
+ });
1377
+ var errorsSchemas = Object.entries(StatusCodes).filter(([, value]) => value > 399).map(([key, value]) => ({
1378
+ status: value,
1379
+ contentType: "application/json",
1380
+ pipe: import_valleyed8.v.meta(import_valleyed8.v.array(import_valleyed8.v.object({ message: import_valleyed8.v.string(), field: import_valleyed8.v.optional(import_valleyed8.v.string()) })), {
1381
+ $refId: `Errors.${key}Response`,
1382
+ description: `${key} Response`
1383
+ })
1384
+ }));
1385
+ var Server = class {
1386
+ socket;
1387
+ cors;
1388
+ #httpServer;
1389
+ #oai;
1390
+ #serverConfig;
1391
+ #queue = [];
1392
+ #routesByKey = /* @__PURE__ */ new Set();
1393
+ setup(httpServer, config) {
1394
+ this.#httpServer = httpServer;
1395
+ this.#serverConfig = config;
1396
+ this.cors = {
1397
+ origin: config.cors?.origin ? (_, cb) => cb(null, true) : config.cors?.origin,
1398
+ methods: (config.cors?.methods ?? Object.values(Methods)).filter((m) => m !== Methods.options).map((m) => m.toUpperCase()),
1399
+ credentials: config.cors?.credentials
1400
+ };
1401
+ this.#oai = openapi(config);
1402
+ const socketInstance = new import_socket.Server(httpServer, { cors: this.cors });
1403
+ this.socket = new SocketEmitter(socketInstance, config);
1404
+ this.addRouter(this.#oai.router);
1405
+ }
1406
+ addRouter(...routers) {
1407
+ routers.map((router) => router.routes).forEach((routes) => this.addRoute(...routes));
1408
+ }
1409
+ addRoute(...routes) {
1410
+ routes.forEach((route) => {
1411
+ this.#queue.push(async () => {
1412
+ const { method, path, schema = {}, onError, middlewares = [], responseMiddlewares = [] } = route;
1413
+ const key = `(${method.toUpperCase()}) ${this.#oai.cleanPath(path)}`;
1414
+ if (this.#routesByKey.has(key))
1415
+ throw new EquippedError(`Route key ${key} already registered. All route keys must be unique`, { route, key });
1416
+ middlewares.forEach((m) => m.onSetup?.(route));
1417
+ onError?.onSetup?.(route);
1418
+ responseMiddlewares.forEach((m) => m.onSetup?.(route));
1419
+ const { validateRequest, validateResponse, jsonSchema } = this.#resolveSchema(method, schema);
1420
+ this.#routesByKey.add(key);
1421
+ await this.#oai.register(route, jsonSchema);
1422
+ this.registerRoute(method, this.#oai.cleanPath(path), async (req, res) => {
1423
+ const request = await validateRequest(await this.parseRequest(req));
1424
+ try {
1425
+ for (const middleware of middlewares) await middleware.cb(request);
1426
+ const rawRes = await route.handler(request);
1427
+ const response = rawRes instanceof Response ? rawRes : new Response({ body: rawRes, status: StatusCodes.Ok, headers: {}, piped: false });
1428
+ for (const middleware of responseMiddlewares) await middleware.cb(request, response);
1429
+ return await this.handleResponse(res, await validateResponse(response));
1430
+ } catch (error) {
1431
+ if (onError?.cb) {
1432
+ const rawResponse = await onError.cb(request, error);
1433
+ const response = rawResponse instanceof Response ? rawResponse : new Response({ body: rawResponse, status: StatusCodes.BadRequest, headers: {} });
1434
+ return await this.handleResponse(res, await validateResponse(response));
1435
+ }
1436
+ throw error;
1437
+ }
1438
+ });
1439
+ });
1440
+ });
1441
+ }
1442
+ test() {
1443
+ return (0, import_supertest.default)(this.#httpServer);
1444
+ }
1445
+ async start() {
1446
+ const config = this.#serverConfig;
1447
+ const instance = Instance.get();
1448
+ const { app } = instance.settings;
1449
+ if (config.healthPath)
1450
+ this.addRoute({
1451
+ method: Methods.get,
1452
+ path: config.healthPath,
1453
+ handler: async (req) => req.res({
1454
+ body: `${instance.id}(${app.name}) service running`,
1455
+ contentType: "text/plain"
1456
+ })
1457
+ });
1458
+ await Promise.all(this.#queue.map((cb) => cb()));
1459
+ this.registerNotFoundHandler(async (req) => {
1460
+ const request = await this.parseRequest(req);
1461
+ throw new NotFoundError(`Route ${request.path} not found`);
1462
+ });
1463
+ this.registerErrorHandler(async (error, _, res) => {
1464
+ if (!(error instanceof EquippedError)) Instance.get().log.error({ error }, "Uncaught error in route handler");
1465
+ const response = error instanceof RequestError ? new Response({
1466
+ body: error.serializedErrors,
1467
+ status: error.statusCode
1468
+ }) : error instanceof EquippedError ? new Response({
1469
+ body: [{ message: error.message }],
1470
+ status: StatusCodes.BadRequest
1471
+ }) : new Response({
1472
+ body: [{ message: "Something went wrong", data: error.message }],
1473
+ status: StatusCodes.BadRequest
1474
+ });
1475
+ return await this.handleResponse(res, response);
1476
+ });
1477
+ const started = await this.startServer(config.port);
1478
+ if (started) Instance.get().log.info(`${instance.id}(${app.name}) service listening on port ${config.port}`);
1479
+ return started;
1480
+ }
1481
+ #resolveSchema(method, schema) {
1482
+ const defaultStatusCode = schema?.defaultStatusCode ?? StatusCodes.Ok;
1483
+ const defaultContentType = schema?.defaultContentType ?? "application/json";
1484
+ let status = defaultStatusCode;
1485
+ let contentType = defaultContentType;
1486
+ const jsonSchema = { response: {}, request: {} };
1487
+ const requestPipeDefs = {};
1488
+ const responsePipeDefs = {};
1489
+ const defs = [
1490
+ { key: "params", type: "request" },
1491
+ { key: "headers", type: "request" },
1492
+ { key: "cookies", type: "request" },
1493
+ { key: "query", type: "request" },
1494
+ { key: "body", type: "request", skip: ![Methods.post, Methods.put, Methods.patch].includes(method) },
1495
+ { key: "response", type: "response" },
1496
+ { key: "responseHeaders", type: "response" },
1497
+ { key: "responseCookies", type: "response" }
1498
+ ];
1499
+ defs.forEach((def) => {
1500
+ const pipe = schema[def.key] ?? import_valleyed8.v.any();
1501
+ if (def.skip) return;
1502
+ if (def.type === "request") {
1503
+ requestPipeDefs[def.key] = pipe;
1504
+ jsonSchema.request[def.key] = import_valleyed8.v.schema(pipe);
1505
+ }
1506
+ if (def.type === "response") {
1507
+ const pipeRecords = errorsSchemas.concat({ status: defaultStatusCode, contentType, pipe });
1508
+ responsePipeDefs[def.key] = import_valleyed8.v.any().pipe((input) => {
1509
+ const p = pipeRecords.find((rec) => rec.status === status)?.pipe;
1510
+ if (!p) throw import_valleyed8.PipeError.root(`schema not defined for status code: ${status}`, input);
1511
+ const r = import_valleyed8.v.validate(p, input);
1512
+ if (!r.valid) throw r.error;
1513
+ return r.value;
1514
+ });
1515
+ jsonSchema.response[def.key] = pipeRecords.map((record) => ({
1516
+ status: record.status,
1517
+ contentType: record.contentType,
1518
+ schema: import_valleyed8.v.schema(record.pipe)
1519
+ }));
1520
+ }
1521
+ });
1522
+ const requestPipe = import_valleyed8.v.object(requestPipeDefs);
1523
+ import_valleyed8.v.compile(requestPipe, { allErrors: true });
1524
+ const responsePipe = import_valleyed8.v.object(responsePipeDefs);
1525
+ import_valleyed8.v.compile(responsePipe, { allErrors: true });
1526
+ const validateRequest = async (request) => {
1527
+ if (!Object.keys(requestPipeDefs)) return request;
1528
+ const validity = requestLocalStorage.run(
1529
+ request,
1530
+ () => import_valleyed8.v.validate(requestPipe, {
1531
+ params: request.params,
1532
+ headers: request.headers,
1533
+ query: request.query,
1534
+ body: request.body,
1535
+ cookies: request.cookies
1536
+ })
1537
+ );
1538
+ if (!validity.valid) throw pipeErrorToValidationError(validity.error);
1539
+ request.params = validity.value.params;
1540
+ request.headers = validity.value.headers;
1541
+ request.query = validity.value.query;
1542
+ request.body = validity.value.body;
1543
+ request.cookies = validity.value.cookies;
1544
+ return request;
1545
+ };
1546
+ const validateResponse = async (response) => {
1547
+ if (!Object.keys(responsePipeDefs)) return response;
1548
+ status = response.status;
1549
+ contentType = response.contentType;
1550
+ const validity = responseLocalStorage.run(
1551
+ response,
1552
+ () => import_valleyed8.v.validate(responsePipe, {
1553
+ responseHeaders: response.headers,
1554
+ responseCookies: Object.fromEntries(Object.entries(response.cookies).map(([key, val]) => [key, val.value])),
1555
+ response: response.body
1556
+ })
1557
+ );
1558
+ if (!validity.valid) throw pipeErrorToValidationError(validity.error);
1559
+ response.body = validity.value.response;
1560
+ response.headers = validity.value.responseHeaders;
1561
+ response.cookieValues = validity.value.responseCookies;
1562
+ return response;
1563
+ };
1564
+ return {
1565
+ jsonSchema,
1566
+ validateRequest,
1567
+ validateResponse
1568
+ };
1569
+ }
1570
+ };
1571
+
1572
+ // src/errors/types/badRequestError.ts
1573
+ var BadRequestError = class extends RequestError {
1574
+ statusCode = StatusCodes.BadRequest;
1575
+ constructor(message, cause) {
1576
+ super(message, [{ message }], cause);
1577
+ }
1578
+ };
1579
+
1580
+ // src/errors/types/notFoundError.ts
1581
+ var NotFoundError = class extends RequestError {
1582
+ statusCode = StatusCodes.NotFound;
1583
+ constructor(message = "Not found", cause) {
1584
+ super(message, [{ message }], cause);
1585
+ }
1586
+ };
1587
+
1588
+ // src/errors/types/validationError.ts
1589
+ var ValidationError = class extends RequestError {
1590
+ statusCode = StatusCodes.ValidationError;
1591
+ constructor(errors, cause) {
1592
+ super(
1593
+ "Unprocessable Entity",
1594
+ errors.flatMap(({ field, messages }) => messages.map((message) => ({ message, field }))),
1595
+ cause
1596
+ );
1597
+ }
1598
+ };
1599
+
1600
+ // src/server/adapters/fastify/index.ts
1601
+ var FastifyServer = class extends configurable(serverConfigPipe, Server) {
1602
+ #app;
1603
+ constructor(config) {
1604
+ super(config);
1605
+ const instance = Instance.get();
1606
+ const app = (0, import_fastify.default)({
1607
+ disableRequestLogging: !config.requests.log,
1608
+ loggerInstance: config.requests.log ? instance.log : void 0,
1609
+ ajv: { customOptions: { coerceTypes: false } },
1610
+ routerOptions: {
1611
+ ignoreTrailingSlash: true,
1612
+ caseSensitive: false
1613
+ },
1614
+ schemaErrorFormatter: (errors, data) => new ValidationError(
1615
+ errors.map((error) => ({
1616
+ messages: [error.message ?? ""],
1617
+ field: `${data}${error.instancePath}`.replaceAll("/", ".")
1618
+ }))
1619
+ )
1620
+ });
1621
+ this.#app = app;
1622
+ this.setup(app.server, config);
1623
+ app.decorateRequest("savedReq", null);
1624
+ app.setValidatorCompiler(() => () => true);
1625
+ app.setSerializerCompiler(() => (data) => JSON.stringify(data));
1626
+ if (config.publicPath) app.register(import_static.default, { root: config.publicPath });
1627
+ app.register(import_cookie.default, {});
1628
+ app.register(import_cors3.default, this.cors);
1629
+ app.register(import_formbody.default, { parser: (str) => import_qs.default.parse(str) });
1630
+ app.register(import_helmet.default, { crossOriginResourcePolicy: { policy: "cross-origin" }, contentSecurityPolicy: false });
1631
+ app.register(import_multipart.default, {
1632
+ attachFieldsToBody: "keyValues",
1633
+ throwFileSizeLimit: false,
1634
+ limits: { fileSize: instance.settings.utils.maxFileUploadSizeInMb * 1024 * 1024 },
1635
+ onFile: async (f) => {
1636
+ const buffer = await f.toBuffer();
1637
+ const parsed = {
1638
+ name: f.filename,
1639
+ type: f.mimetype,
1640
+ size: buffer.byteLength,
1641
+ isTruncated: f.file.truncated,
1642
+ data: buffer,
1643
+ duration: await getMediaDuration(buffer)
1644
+ };
1645
+ f.value = parsed;
1646
+ }
1647
+ });
1648
+ if (config.requests.rateLimit.enabled)
1649
+ app.register(import_rate_limit.default, {
1650
+ max: config.requests.rateLimit.limit,
1651
+ timeWindow: config.requests.rateLimit.periodInMs,
1652
+ errorResponseBuilder: (_, context) => ({
1653
+ statusCode: StatusCodes.TooManyRequests,
1654
+ message: JSON.stringify([{ message: `Too Many Requests. Retry in ${context.after}` }])
1655
+ })
1656
+ });
1657
+ }
1658
+ async parseRequest(req) {
1659
+ const { body, files } = excludeBufferKeys(req.body ?? {});
1660
+ return new Request({
1661
+ ip: req.ip,
1662
+ body,
1663
+ cookies: req.cookies ?? {},
1664
+ params: req.params ?? {},
1665
+ query: req.query ?? {},
1666
+ method: req.method,
1667
+ path: req.url,
1668
+ headers: req.headers,
1669
+ files
1670
+ });
1671
+ }
1672
+ async handleResponse(res, response) {
1673
+ for (const [key, { value, ...opts }] of Object.entries(response.cookies)) res = res.setCookie(key, value, opts);
1674
+ await res.status(response.status).headers(response.headers).send(response.body);
1675
+ }
1676
+ registerRoute(method, path, cb) {
1677
+ this.#app.register(async (inst) => {
1678
+ inst.route({ url: path, method, handler: cb });
1679
+ });
1680
+ }
1681
+ registerErrorHandler(cb) {
1682
+ this.#app.setErrorHandler(cb);
1683
+ }
1684
+ registerNotFoundHandler(cb) {
1685
+ this.#app.setNotFoundHandler(cb);
1686
+ }
1687
+ async startServer(port) {
1688
+ await this.#app.ready();
1689
+ await this.#app.listen({ port, host: "0.0.0.0" });
1690
+ Instance.on("close", this.#app.close);
1691
+ return true;
1692
+ }
1693
+ };
1694
+ function excludeBufferKeys(body) {
1695
+ if (typeof body !== "object") return { body, files: {} };
1696
+ const entries = Object.entries(body ?? {});
1697
+ const isFile = (val) => Array.isArray(val) ? isFile(val.at(0)) : Buffer.isBuffer(val?.data);
1698
+ const fileEntries = entries.filter(([_, value]) => isFile(value)).map(([key, value]) => [key, Array.isArray(value) ? value : [value]]);
1699
+ const nonFileEntries = entries.filter(([_, value]) => !isFile(value));
1700
+ return {
1701
+ body: Object.fromEntries(nonFileEntries),
1702
+ files: Object.fromEntries(fileEntries)
1703
+ };
1704
+ }
1705
+ // Annotate the CommonJS export names for ESM import in node:
1706
+ 0 && (module.exports = {
1707
+ FastifyServer
1708
+ });
1709
+ //# sourceMappingURL=index.cjs.map