equipped 5.2.9 → 5.3.0

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