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