@forklaunch/core 0.2.3 → 0.2.6

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 (549) hide show
  1. package/LICENSE +21 -0
  2. package/lib/dist/cache/index.d.ts +4 -0
  3. package/lib/dist/cache/index.d.ts.map +1 -0
  4. package/lib/dist/cache/interfaces/ttlCache.interface.d.ts +2 -0
  5. package/lib/dist/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
  6. package/lib/dist/cache/redisTtlCache.d.ts +353 -0
  7. package/lib/dist/cache/redisTtlCache.d.ts.map +1 -0
  8. package/{dist → lib/dist}/cache/redisTtlCache.js +1 -4
  9. package/lib/dist/cache/types/ttlCacheRecord.types.d.ts +2 -0
  10. package/lib/dist/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
  11. package/lib/dist/controllers/index.d.ts +2 -0
  12. package/lib/dist/controllers/index.d.ts.map +1 -0
  13. package/lib/dist/controllers/interfaces/controller.interface.d.ts +2 -0
  14. package/lib/dist/controllers/interfaces/controller.interface.d.ts.map +1 -0
  15. package/lib/dist/database/index.d.ts +2 -0
  16. package/lib/dist/database/index.d.ts.map +1 -0
  17. package/lib/dist/database/mikro/models/entities/base.entity.d.ts +26 -0
  18. package/lib/dist/database/mikro/models/entities/base.entity.d.ts.map +1 -0
  19. package/lib/dist/database/mikro/models/entities/base.entity.js +46 -0
  20. package/lib/dist/entityMapper/index.d.ts +3 -0
  21. package/lib/dist/entityMapper/index.d.ts.map +1 -0
  22. package/lib/dist/entityMapper/interfaces/entityMapper.interface.d.ts +2 -0
  23. package/lib/dist/entityMapper/interfaces/entityMapper.interface.d.ts.map +1 -0
  24. package/lib/dist/entityMapper/models/baseEntityMapper.model.d.ts +63 -0
  25. package/lib/dist/entityMapper/models/baseEntityMapper.model.d.ts.map +1 -0
  26. package/lib/dist/entityMapper/models/requestEntityMapper.model.d.ts +58 -0
  27. package/lib/dist/entityMapper/models/requestEntityMapper.model.d.ts.map +1 -0
  28. package/lib/dist/entityMapper/models/responseEntityMapper.model.d.ts +56 -0
  29. package/lib/dist/entityMapper/models/responseEntityMapper.model.d.ts.map +1 -0
  30. package/lib/dist/entityMapper/types/entityMapper.types.d.ts +2 -0
  31. package/lib/dist/entityMapper/types/entityMapper.types.d.ts.map +1 -0
  32. package/lib/dist/http/guards/isHttpContractDetails.d.ts +5 -0
  33. package/lib/dist/http/guards/isHttpContractDetails.d.ts.map +1 -0
  34. package/lib/dist/http/guards/isHttpContractDetails.js +6 -0
  35. package/lib/dist/http/guards/isResponseShape.d.ts +2 -0
  36. package/lib/dist/http/guards/isResponseShape.d.ts.map +1 -0
  37. package/lib/dist/http/guards/isResponseShape.js +7 -0
  38. package/lib/dist/http/index.d.ts +6 -0
  39. package/lib/dist/http/index.d.ts.map +1 -0
  40. package/{dist → lib/dist}/http/index.js +1 -2
  41. package/lib/dist/http/interfaces/expressLikeApplication.interface.d.ts +12 -0
  42. package/lib/dist/http/interfaces/expressLikeApplication.interface.d.ts.map +1 -0
  43. package/lib/dist/http/interfaces/expressLikeRouter.interface.d.ts +103 -0
  44. package/lib/dist/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
  45. package/lib/dist/http/interfaces/expressLikeRouter.interface.js +336 -0
  46. package/lib/dist/http/interfaces/index.d.ts +3 -0
  47. package/lib/dist/http/interfaces/index.d.ts.map +1 -0
  48. package/lib/dist/http/interfaces/index.js +2 -0
  49. package/lib/dist/http/middleware/index.d.ts +3 -0
  50. package/lib/dist/http/middleware/index.d.ts.map +1 -0
  51. package/lib/dist/http/middleware/request.middleware.d.ts +69 -0
  52. package/lib/dist/http/middleware/request.middleware.d.ts.map +1 -0
  53. package/{dist → lib/dist}/http/middleware/request.middleware.js +55 -117
  54. package/lib/dist/http/middleware/response.middleware.d.ts +27 -0
  55. package/lib/dist/http/middleware/response.middleware.d.ts.map +1 -0
  56. package/lib/dist/http/middleware/response.middleware.js +52 -0
  57. package/lib/dist/http/openApiV3Generator/index.d.ts +2 -0
  58. package/lib/dist/http/openApiV3Generator/index.d.ts.map +1 -0
  59. package/lib/dist/http/openApiV3Generator/index.js +1 -0
  60. package/lib/dist/http/openApiV3Generator/openApiV3Generator.d.ts +11 -0
  61. package/lib/dist/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
  62. package/{dist/http → lib/dist/http/openApiV3Generator}/openApiV3Generator.js +2 -24
  63. package/lib/dist/http/types/apiDefinition.types.d.ts +2 -0
  64. package/lib/dist/http/types/apiDefinition.types.d.ts.map +1 -0
  65. package/lib/dist/http/types/contractDetails.types.d.ts +2 -0
  66. package/lib/dist/http/types/contractDetails.types.d.ts.map +1 -0
  67. package/lib/dist/http/types/index.d.ts +4 -0
  68. package/lib/dist/http/types/index.d.ts.map +1 -0
  69. package/lib/dist/http/types/index.js +3 -0
  70. package/lib/dist/http/types/router.types.d.ts +2 -0
  71. package/lib/dist/http/types/router.types.d.ts.map +1 -0
  72. package/lib/dist/http/utils/enrichExpressLikeSend.d.ts +28 -0
  73. package/lib/dist/http/utils/enrichExpressLikeSend.d.ts.map +1 -0
  74. package/lib/dist/http/utils/enrichExpressLikeSend.js +50 -0
  75. package/lib/dist/http/utils/httpStatusCodes.d.ts +986 -0
  76. package/lib/dist/http/utils/httpStatusCodes.d.ts.map +1 -0
  77. package/lib/dist/http/utils/index.d.ts +3 -0
  78. package/lib/dist/http/utils/index.d.ts.map +1 -0
  79. package/lib/dist/http/utils/index.js +2 -0
  80. package/lib/dist/index.d.ts +7 -0
  81. package/lib/dist/index.d.ts.map +1 -0
  82. package/lib/dist/jest.config.d.ts +15 -0
  83. package/lib/dist/jest.config.d.ts.map +1 -0
  84. package/lib/dist/jest.config.js +21 -0
  85. package/lib/dist/lib/index.d.ts +7 -0
  86. package/lib/dist/lib/index.d.ts.map +1 -0
  87. package/lib/dist/lib/index.js +6 -0
  88. package/lib/dist/lib/jest.config.d.ts +15 -0
  89. package/lib/dist/lib/jest.config.d.ts.map +1 -0
  90. package/lib/dist/lib/jest.config.js +21 -0
  91. package/lib/dist/lib/src/cache/index.d.ts +4 -0
  92. package/lib/dist/lib/src/cache/index.d.ts.map +1 -0
  93. package/lib/dist/lib/src/cache/index.js +3 -0
  94. package/lib/dist/lib/src/cache/interfaces/ttlCache.interface.d.ts +2 -0
  95. package/lib/dist/lib/src/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
  96. package/lib/dist/lib/src/cache/redisTtlCache.d.ts +353 -0
  97. package/lib/dist/lib/src/cache/redisTtlCache.d.ts.map +1 -0
  98. package/lib/dist/lib/src/cache/redisTtlCache.js +98 -0
  99. package/lib/dist/lib/src/cache/types/ttlCacheRecord.types.d.ts +2 -0
  100. package/lib/dist/lib/src/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
  101. package/lib/dist/lib/src/cache/types/ttlCacheRecord.types.js +1 -0
  102. package/lib/dist/lib/src/controllers/index.d.ts +2 -0
  103. package/lib/dist/lib/src/controllers/index.d.ts.map +1 -0
  104. package/lib/dist/lib/src/controllers/index.js +1 -0
  105. package/lib/dist/lib/src/controllers/interfaces/controller.interface.d.ts +2 -0
  106. package/lib/dist/lib/src/controllers/interfaces/controller.interface.d.ts.map +1 -0
  107. package/lib/dist/lib/src/controllers/interfaces/controller.interface.js +1 -0
  108. package/lib/dist/lib/src/database/index.d.ts +2 -0
  109. package/lib/dist/lib/src/database/index.d.ts.map +1 -0
  110. package/lib/dist/lib/src/database/index.js +1 -0
  111. package/lib/dist/lib/src/database/mikro/models/entities/base.entity.d.ts +26 -0
  112. package/lib/dist/lib/src/database/mikro/models/entities/base.entity.d.ts.map +1 -0
  113. package/lib/dist/lib/src/database/mikro/models/entities/base.entity.js +46 -0
  114. package/lib/dist/lib/src/domainMapper/index.d.ts +3 -0
  115. package/lib/dist/lib/src/domainMapper/index.d.ts.map +1 -0
  116. package/lib/dist/lib/src/domainMapper/index.js +2 -0
  117. package/lib/dist/lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts +2 -0
  118. package/lib/dist/lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
  119. package/lib/dist/lib/src/domainMapper/interfaces/dtoMapper.interface.js +1 -0
  120. package/lib/dist/lib/src/domainMapper/models/baseDtoMapper.model.d.ts +63 -0
  121. package/lib/dist/lib/src/domainMapper/models/baseDtoMapper.model.d.ts.map +1 -0
  122. package/lib/dist/lib/src/domainMapper/models/baseDtoMapper.model.js +75 -0
  123. package/lib/dist/lib/src/domainMapper/models/requestDtoMapper.model.d.ts +58 -0
  124. package/lib/dist/lib/src/domainMapper/models/requestDtoMapper.model.d.ts.map +1 -0
  125. package/lib/dist/lib/src/domainMapper/models/requestDtoMapper.model.js +70 -0
  126. package/lib/dist/lib/src/domainMapper/models/responseDtoMapper.model.d.ts +56 -0
  127. package/lib/dist/lib/src/domainMapper/models/responseDtoMapper.model.d.ts.map +1 -0
  128. package/lib/dist/lib/src/domainMapper/models/responseDtoMapper.model.js +65 -0
  129. package/lib/dist/lib/src/domainMapper/types/dtoMapper.types.d.ts +2 -0
  130. package/lib/dist/lib/src/domainMapper/types/dtoMapper.types.d.ts.map +1 -0
  131. package/lib/dist/lib/src/domainMapper/types/dtoMapper.types.js +1 -0
  132. package/lib/dist/lib/src/dtoMapper/index.d.ts +3 -0
  133. package/lib/dist/lib/src/dtoMapper/index.d.ts.map +1 -0
  134. package/lib/dist/lib/src/dtoMapper/index.js +2 -0
  135. package/lib/dist/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts +2 -0
  136. package/lib/dist/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
  137. package/lib/dist/lib/src/dtoMapper/interfaces/dtoMapper.interface.js +1 -0
  138. package/lib/dist/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts +63 -0
  139. package/lib/dist/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts.map +1 -0
  140. package/lib/dist/lib/src/dtoMapper/models/baseDtoMapper.model.js +75 -0
  141. package/lib/dist/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts +58 -0
  142. package/lib/dist/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts.map +1 -0
  143. package/lib/dist/lib/src/dtoMapper/models/requestDtoMapper.model.js +70 -0
  144. package/lib/dist/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts +56 -0
  145. package/lib/dist/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts.map +1 -0
  146. package/lib/dist/lib/src/dtoMapper/models/responseDtoMapper.model.js +65 -0
  147. package/lib/dist/lib/src/dtoMapper/types/dtoMapper.types.d.ts +2 -0
  148. package/lib/dist/lib/src/dtoMapper/types/dtoMapper.types.d.ts.map +1 -0
  149. package/lib/dist/lib/src/dtoMapper/types/dtoMapper.types.js +1 -0
  150. package/lib/dist/lib/src/http/application/expressLikeApplication.d.ts +18 -0
  151. package/lib/dist/lib/src/http/application/expressLikeApplication.d.ts.map +1 -0
  152. package/lib/dist/lib/src/http/application/expressLikeApplication.js +20 -0
  153. package/lib/dist/lib/src/http/guards/isHttpContractDetails.d.ts +5 -0
  154. package/lib/dist/lib/src/http/guards/isHttpContractDetails.d.ts.map +1 -0
  155. package/lib/dist/lib/src/http/guards/isHttpContractDetails.js +6 -0
  156. package/lib/dist/lib/src/http/guards/isResponseShape.d.ts +2 -0
  157. package/lib/dist/lib/src/http/guards/isResponseShape.d.ts.map +1 -0
  158. package/lib/dist/lib/src/http/guards/isResponseShape.js +7 -0
  159. package/lib/dist/lib/src/http/handler/typedHandler.d.ts +21 -0
  160. package/lib/dist/lib/src/http/handler/typedHandler.d.ts.map +1 -0
  161. package/lib/dist/lib/src/http/handler/typedHandler.js +25 -0
  162. package/lib/dist/lib/src/http/index.d.ts +11 -0
  163. package/lib/dist/lib/src/http/index.d.ts.map +1 -0
  164. package/lib/dist/lib/src/http/index.js +10 -0
  165. package/lib/dist/lib/src/http/interfaces/expressLikeApplication.interface.d.ts +12 -0
  166. package/lib/dist/lib/src/http/interfaces/expressLikeApplication.interface.d.ts.map +1 -0
  167. package/lib/dist/lib/src/http/interfaces/expressLikeApplication.interface.js +14 -0
  168. package/lib/dist/lib/src/http/interfaces/expressLikeRouter.interface.d.ts +2 -0
  169. package/lib/dist/lib/src/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
  170. package/lib/dist/lib/src/http/interfaces/expressLikeRouter.interface.js +1 -0
  171. package/lib/dist/lib/src/http/interfaces/index.d.ts +3 -0
  172. package/lib/dist/lib/src/http/interfaces/index.d.ts.map +1 -0
  173. package/lib/dist/lib/src/http/interfaces/index.js +2 -0
  174. package/lib/dist/lib/src/http/middleware/index.d.ts +3 -0
  175. package/lib/dist/lib/src/http/middleware/index.d.ts.map +1 -0
  176. package/lib/dist/lib/src/http/middleware/index.js +2 -0
  177. package/lib/dist/lib/src/http/middleware/request/auth.middleware.d.ts +27 -0
  178. package/lib/dist/lib/src/http/middleware/request/auth.middleware.d.ts.map +1 -0
  179. package/lib/dist/lib/src/http/middleware/request/auth.middleware.js +107 -0
  180. package/lib/dist/lib/src/http/middleware/request/cors.middleware.d.ts +9 -0
  181. package/lib/dist/lib/src/http/middleware/request/cors.middleware.d.ts.map +1 -0
  182. package/lib/dist/lib/src/http/middleware/request/cors.middleware.js +15 -0
  183. package/lib/dist/lib/src/http/middleware/request/createContext.middleware.d.ts +12 -0
  184. package/lib/dist/lib/src/http/middleware/request/createContext.middleware.d.ts.map +1 -0
  185. package/lib/dist/lib/src/http/middleware/request/createContext.middleware.js +26 -0
  186. package/lib/dist/lib/src/http/middleware/request/enrichDetails.middleware.d.ts +12 -0
  187. package/lib/dist/lib/src/http/middleware/request/enrichDetails.middleware.d.ts.map +1 -0
  188. package/lib/dist/lib/src/http/middleware/request/enrichDetails.middleware.js +19 -0
  189. package/lib/dist/lib/src/http/middleware/request/parse.middleware.d.ts +13 -0
  190. package/lib/dist/lib/src/http/middleware/request/parse.middleware.d.ts.map +1 -0
  191. package/lib/dist/lib/src/http/middleware/request/parse.middleware.js +43 -0
  192. package/lib/dist/lib/src/http/middleware/request.middleware.d.ts +69 -0
  193. package/lib/dist/lib/src/http/middleware/request.middleware.d.ts.map +1 -0
  194. package/lib/dist/lib/src/http/middleware/request.middleware.js +210 -0
  195. package/lib/dist/lib/src/http/middleware/response/parse.middleware.d.ts +27 -0
  196. package/lib/dist/lib/src/http/middleware/response/parse.middleware.d.ts.map +1 -0
  197. package/lib/dist/lib/src/http/middleware/response/parse.middleware.js +52 -0
  198. package/lib/dist/lib/src/http/middleware/response.middleware.d.ts +27 -0
  199. package/lib/dist/lib/src/http/middleware/response.middleware.d.ts.map +1 -0
  200. package/lib/dist/lib/src/http/middleware/response.middleware.js +52 -0
  201. package/lib/dist/lib/src/http/openApiV3Generator/index.d.ts +2 -0
  202. package/lib/dist/lib/src/http/openApiV3Generator/index.d.ts.map +1 -0
  203. package/lib/dist/lib/src/http/openApiV3Generator/index.js +1 -0
  204. package/lib/dist/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts +11 -0
  205. package/lib/dist/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
  206. package/lib/dist/lib/src/http/openApiV3Generator/openApiV3Generator.js +167 -0
  207. package/lib/dist/lib/src/http/router/expressLikeRouter.d.ts +89 -0
  208. package/lib/dist/lib/src/http/router/expressLikeRouter.d.ts.map +1 -0
  209. package/{dist/http/interfaces/forklaunchExpress.router.interface.js → lib/dist/lib/src/http/router/expressLikeRouter.js} +85 -91
  210. package/lib/dist/lib/src/http/types/apiDefinition.types.d.ts +2 -0
  211. package/lib/dist/lib/src/http/types/apiDefinition.types.d.ts.map +1 -0
  212. package/lib/dist/lib/src/http/types/apiDefinition.types.js +1 -0
  213. package/lib/dist/lib/src/http/types/contractDetails.types.d.ts +2 -0
  214. package/lib/dist/lib/src/http/types/contractDetails.types.d.ts.map +1 -0
  215. package/lib/dist/lib/src/http/types/contractDetails.types.js +1 -0
  216. package/lib/dist/lib/src/http/types/index.d.ts +4 -0
  217. package/lib/dist/lib/src/http/types/index.d.ts.map +1 -0
  218. package/lib/dist/lib/src/http/types/index.js +3 -0
  219. package/lib/dist/lib/src/http/types/router.types.d.ts +2 -0
  220. package/lib/dist/lib/src/http/types/router.types.d.ts.map +1 -0
  221. package/lib/dist/lib/src/http/types/router.types.js +1 -0
  222. package/lib/dist/lib/src/http/utils/enrichExpressLikeSend.d.ts +28 -0
  223. package/lib/dist/lib/src/http/utils/enrichExpressLikeSend.d.ts.map +1 -0
  224. package/lib/dist/lib/src/http/utils/enrichExpressLikeSend.js +50 -0
  225. package/lib/dist/lib/src/http/utils/httpStatusCodes.d.ts +986 -0
  226. package/lib/dist/lib/src/http/utils/httpStatusCodes.d.ts.map +1 -0
  227. package/lib/dist/lib/src/http/utils/httpStatusCodes.js +1039 -0
  228. package/lib/dist/lib/src/http/utils/index.d.ts +3 -0
  229. package/lib/dist/lib/src/http/utils/index.d.ts.map +1 -0
  230. package/lib/dist/lib/src/http/utils/index.js +2 -0
  231. package/lib/dist/lib/src/services/index.d.ts +2 -0
  232. package/lib/dist/lib/src/services/index.d.ts.map +1 -0
  233. package/lib/dist/lib/src/services/interfaces/baseService.d.ts +2 -0
  234. package/lib/dist/lib/src/services/interfaces/baseService.d.ts.map +1 -0
  235. package/lib/dist/lib/src/services/interfaces/baseService.js +1 -0
  236. package/lib/dist/lib/tests/dtoMapper.test.d.ts +2 -0
  237. package/lib/dist/lib/tests/dtoMapper.test.d.ts.map +1 -0
  238. package/lib/dist/lib/tests/dtoMapper.test.js +172 -0
  239. package/lib/dist/lib/tests/entityMapper.test.d.ts.map +1 -0
  240. package/lib/dist/lib/tests/entityMapper.test.js +172 -0
  241. package/lib/dist/lib/tests/expressLikeRouter.test.d.ts +2 -0
  242. package/lib/dist/lib/tests/expressLikeRouter.test.d.ts.map +1 -0
  243. package/lib/dist/lib/tests/expressLikeRouter.test.js +3 -0
  244. package/lib/dist/lib/tests/http.middleware.test.d.ts.map +1 -0
  245. package/lib/dist/lib/tests/http.middleware.test.js +95 -0
  246. package/lib/dist/lib/tests/openApiV3Generator.test.d.ts.map +1 -0
  247. package/lib/dist/lib/tests/openApiV3Generator.test.js +66 -0
  248. package/lib/dist/lib/tests/redisTtlCache.test.d.ts.map +1 -0
  249. package/lib/dist/lib/tests/redisTtlCache.test.js +49 -0
  250. package/lib/dist/lib/tests/typedHandler.test.d.ts +2 -0
  251. package/lib/dist/lib/tests/typedHandler.test.d.ts.map +1 -0
  252. package/lib/dist/lib/tests/typedHandler.test.js +3 -0
  253. package/lib/dist/lib/vitest.config.d.ts +3 -0
  254. package/lib/dist/lib/vitest.config.d.ts.map +1 -0
  255. package/lib/dist/lib/vitest.config.js +7 -0
  256. package/lib/dist/services/index.d.ts +2 -0
  257. package/lib/dist/services/index.d.ts.map +1 -0
  258. package/lib/dist/services/index.js +1 -0
  259. package/lib/dist/services/interfaces/baseService.d.ts +2 -0
  260. package/lib/dist/services/interfaces/baseService.d.ts.map +1 -0
  261. package/lib/dist/services/interfaces/baseService.js +1 -0
  262. package/lib/dist/tests/entityMapper.test.d.ts +2 -0
  263. package/lib/dist/tests/entityMapper.test.d.ts.map +1 -0
  264. package/{dist → lib/dist}/tests/entityMapper.test.js +6 -2
  265. package/lib/dist/tests/http.middleware.test.d.ts +2 -0
  266. package/lib/dist/tests/http.middleware.test.d.ts.map +1 -0
  267. package/{dist → lib/dist}/tests/http.middleware.test.js +39 -21
  268. package/lib/dist/tests/openApiV3Generator.test.d.ts +2 -0
  269. package/lib/dist/tests/openApiV3Generator.test.d.ts.map +1 -0
  270. package/{dist → lib/dist}/tests/openApiV3Generator.test.js +1 -1
  271. package/lib/dist/tests/redisTtlCache.test.d.ts +2 -0
  272. package/lib/dist/tests/redisTtlCache.test.d.ts.map +1 -0
  273. package/lib/eslint.config.mjs +10 -0
  274. package/lib/index.d.ts +7 -0
  275. package/lib/index.d.ts.map +1 -0
  276. package/lib/index.js +7 -0
  277. package/lib/jest.config.d.ts +4 -0
  278. package/lib/jest.config.d.ts.map +1 -0
  279. package/lib/jest.config.js +21 -0
  280. package/lib/src/cache/index.d.ts.map +1 -0
  281. package/lib/src/cache/index.js +3 -0
  282. package/lib/src/cache/interfaces/ttlCache.interface.d.ts.map +1 -0
  283. package/lib/src/cache/interfaces/ttlCache.interface.js +1 -0
  284. package/lib/src/cache/redisTtlCache.d.ts.map +1 -0
  285. package/lib/src/cache/redisTtlCache.js +98 -0
  286. package/lib/src/cache/types/ttlCacheRecord.types.d.ts.map +1 -0
  287. package/lib/src/cache/types/ttlCacheRecord.types.js +1 -0
  288. package/lib/src/controllers/index.d.ts.map +1 -0
  289. package/lib/src/controllers/index.js +1 -0
  290. package/lib/src/controllers/interfaces/controller.interface.d.ts.map +1 -0
  291. package/lib/src/controllers/interfaces/controller.interface.js +1 -0
  292. package/lib/src/database/index.d.ts.map +1 -0
  293. package/lib/src/database/index.js +1 -0
  294. package/lib/src/database/mikro/models/entities/base.entity.d.ts.map +1 -0
  295. package/lib/src/domainMapper/index.d.ts +3 -0
  296. package/lib/src/domainMapper/index.d.ts.map +1 -0
  297. package/lib/src/domainMapper/index.js +2 -0
  298. package/{dist/entityMapper/interfaces/entityMapper.interface.d.ts → lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts} +3 -3
  299. package/lib/src/domainMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
  300. package/lib/src/domainMapper/interfaces/dtoMapper.interface.js +1 -0
  301. package/{dist/entityMapper/models/baseEntityMapper.model.d.ts → lib/src/domainMapper/models/baseDtoMapper.model.d.ts} +13 -13
  302. package/lib/src/domainMapper/models/baseDtoMapper.model.d.ts.map +1 -0
  303. package/lib/src/domainMapper/models/baseDtoMapper.model.js +75 -0
  304. package/{dist/entityMapper/models/requestEntityMapper.model.d.ts → lib/src/domainMapper/models/requestDtoMapper.model.d.ts} +13 -13
  305. package/lib/src/domainMapper/models/requestDtoMapper.model.d.ts.map +1 -0
  306. package/lib/src/domainMapper/models/requestDtoMapper.model.js +70 -0
  307. package/{dist/entityMapper/models/responseEntityMapper.model.d.ts → lib/src/domainMapper/models/responseDtoMapper.model.d.ts} +12 -12
  308. package/lib/src/domainMapper/models/responseDtoMapper.model.d.ts.map +1 -0
  309. package/lib/src/domainMapper/models/responseDtoMapper.model.js +65 -0
  310. package/lib/src/domainMapper/types/dtoMapper.types.d.ts +9 -0
  311. package/lib/src/domainMapper/types/dtoMapper.types.d.ts.map +1 -0
  312. package/lib/src/domainMapper/types/dtoMapper.types.js +1 -0
  313. package/lib/src/dtoMapper/index.d.ts +3 -0
  314. package/lib/src/dtoMapper/index.d.ts.map +1 -0
  315. package/lib/src/dtoMapper/index.js +2 -0
  316. package/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts +18 -0
  317. package/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts.map +1 -0
  318. package/lib/src/dtoMapper/interfaces/dtoMapper.interface.js +1 -0
  319. package/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts +72 -0
  320. package/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts.map +1 -0
  321. package/lib/src/dtoMapper/models/baseDtoMapper.model.js +75 -0
  322. package/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts +68 -0
  323. package/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts.map +1 -0
  324. package/lib/src/dtoMapper/models/requestDtoMapper.model.js +70 -0
  325. package/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts +67 -0
  326. package/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts.map +1 -0
  327. package/lib/src/dtoMapper/models/responseDtoMapper.model.js +65 -0
  328. package/lib/src/dtoMapper/types/dtoMapper.types.d.ts +9 -0
  329. package/lib/src/dtoMapper/types/dtoMapper.types.d.ts.map +1 -0
  330. package/lib/src/dtoMapper/types/dtoMapper.types.js +1 -0
  331. package/lib/src/http/application/expressLikeApplication.d.ts +22 -0
  332. package/lib/src/http/application/expressLikeApplication.d.ts.map +1 -0
  333. package/lib/src/http/application/expressLikeApplication.js +20 -0
  334. package/lib/src/http/guards/isExpressLikeSchemaHandler.d.ts +5 -0
  335. package/lib/src/http/guards/isExpressLikeSchemaHandler.d.ts.map +1 -0
  336. package/lib/src/http/guards/isExpressLikeSchemaHandler.js +9 -0
  337. package/lib/src/http/guards/isHttpContractDetails.d.ts +7 -0
  338. package/lib/src/http/guards/isHttpContractDetails.d.ts.map +1 -0
  339. package/lib/src/http/guards/isHttpContractDetails.js +9 -0
  340. package/lib/src/http/guards/isPathParamContractDetails.d.ts +4 -0
  341. package/lib/src/http/guards/isPathParamContractDetails.d.ts.map +1 -0
  342. package/lib/src/http/guards/isPathParamContractDetails.js +10 -0
  343. package/lib/src/http/guards/isResponseShape.d.ts +3 -0
  344. package/lib/src/http/guards/isResponseShape.d.ts.map +1 -0
  345. package/lib/src/http/guards/isResponseShape.js +7 -0
  346. package/lib/src/http/guards/isTypedHandler.d.ts +5 -0
  347. package/lib/src/http/guards/isTypedHandler.d.ts.map +1 -0
  348. package/lib/src/http/guards/isTypedHandler.js +6 -0
  349. package/lib/src/http/handler/typedHandler.d.ts +24 -0
  350. package/lib/src/http/handler/typedHandler.d.ts.map +1 -0
  351. package/lib/src/http/handler/typedHandler.js +25 -0
  352. package/lib/src/http/handlers/typedHandler.d.ts +27 -0
  353. package/lib/src/http/handlers/typedHandler.d.ts.map +1 -0
  354. package/lib/src/http/handlers/typedHandler.js +30 -0
  355. package/lib/src/http/index.d.ts +12 -0
  356. package/lib/src/http/index.d.ts.map +1 -0
  357. package/lib/src/http/index.js +11 -0
  358. package/{dist/http/interfaces/forklaunchExpress.application.interface.d.ts → lib/src/http/interfaces/expressLikeApplication.interface.d.ts} +1 -1
  359. package/lib/src/http/interfaces/expressLikeApplication.interface.d.ts.map +1 -0
  360. package/lib/src/http/interfaces/expressLikeApplication.interface.js +14 -0
  361. package/lib/src/http/interfaces/expressLikeRouter.interface.d.ts +24 -0
  362. package/lib/src/http/interfaces/expressLikeRouter.interface.d.ts.map +1 -0
  363. package/lib/src/http/interfaces/expressLikeRouter.interface.js +1 -0
  364. package/lib/src/http/interfaces/index.d.ts +3 -0
  365. package/lib/src/http/interfaces/index.d.ts.map +1 -0
  366. package/lib/src/http/interfaces/index.js +2 -0
  367. package/lib/src/http/middleware/index.d.ts.map +1 -0
  368. package/lib/src/http/middleware/index.js +2 -0
  369. package/lib/src/http/middleware/request/auth.middleware.d.ts +31 -0
  370. package/lib/src/http/middleware/request/auth.middleware.d.ts.map +1 -0
  371. package/lib/src/http/middleware/request/auth.middleware.js +107 -0
  372. package/lib/src/http/middleware/request/cors.middleware.d.ts +13 -0
  373. package/lib/src/http/middleware/request/cors.middleware.d.ts.map +1 -0
  374. package/lib/src/http/middleware/request/cors.middleware.js +15 -0
  375. package/lib/src/http/middleware/request/createContext.middleware.d.ts +15 -0
  376. package/lib/src/http/middleware/request/createContext.middleware.d.ts.map +1 -0
  377. package/lib/src/http/middleware/request/createContext.middleware.js +26 -0
  378. package/lib/src/http/middleware/request/enrichDetails.middleware.d.ts +15 -0
  379. package/lib/src/http/middleware/request/enrichDetails.middleware.d.ts.map +1 -0
  380. package/lib/src/http/middleware/request/enrichDetails.middleware.js +19 -0
  381. package/lib/src/http/middleware/request/parse.middleware.d.ts +17 -0
  382. package/lib/src/http/middleware/request/parse.middleware.d.ts.map +1 -0
  383. package/lib/src/http/middleware/request/parse.middleware.js +43 -0
  384. package/lib/src/http/middleware/request.middleware.d.ts +73 -0
  385. package/lib/src/http/middleware/request.middleware.d.ts.map +1 -0
  386. package/lib/src/http/middleware/request.middleware.js +210 -0
  387. package/lib/src/http/middleware/response/parse.middleware.d.ts +31 -0
  388. package/lib/src/http/middleware/response/parse.middleware.d.ts.map +1 -0
  389. package/lib/src/http/middleware/response/parse.middleware.js +52 -0
  390. package/lib/src/http/middleware/response.middleware.d.ts +31 -0
  391. package/lib/src/http/middleware/response.middleware.d.ts.map +1 -0
  392. package/lib/src/http/middleware/response.middleware.js +52 -0
  393. package/lib/src/http/openApiV3Generator/index.d.ts +2 -0
  394. package/lib/src/http/openApiV3Generator/index.d.ts.map +1 -0
  395. package/lib/src/http/openApiV3Generator/index.js +1 -0
  396. package/{dist/http → lib/src/http/openApiV3Generator}/openApiV3Generator.d.ts +1 -1
  397. package/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts.map +1 -0
  398. package/lib/src/http/openApiV3Generator/openApiV3Generator.js +169 -0
  399. package/lib/src/http/router/expressLikeRouter.d.ts +135 -0
  400. package/lib/src/http/router/expressLikeRouter.d.ts.map +1 -0
  401. package/lib/src/http/router/expressLikeRouter.js +438 -0
  402. package/{dist/http/types/api.types.d.ts → lib/src/http/types/apiDefinition.types.d.ts} +49 -24
  403. package/lib/src/http/types/apiDefinition.types.d.ts.map +1 -0
  404. package/lib/src/http/types/apiDefinition.types.js +1 -0
  405. package/lib/src/http/types/contractDetails.types.d.ts +169 -0
  406. package/lib/src/http/types/contractDetails.types.d.ts.map +1 -0
  407. package/lib/src/http/types/contractDetails.types.js +1 -0
  408. package/lib/src/http/types/expressLikeRouter.types.d.ts +35 -0
  409. package/lib/src/http/types/expressLikeRouter.types.d.ts.map +1 -0
  410. package/lib/src/http/types/expressLikeRouter.types.js +1 -0
  411. package/lib/src/http/types/index.d.ts +4 -0
  412. package/lib/src/http/types/index.d.ts.map +1 -0
  413. package/lib/src/http/types/index.js +3 -0
  414. package/{dist/http/types/forklaunch.types.d.ts → lib/src/http/types/router.types.d.ts} +3 -3
  415. package/lib/src/http/types/router.types.d.ts.map +1 -0
  416. package/lib/src/http/types/router.types.js +1 -0
  417. package/lib/src/http/utils/enrichExpressLikeSend.d.ts +32 -0
  418. package/lib/src/http/utils/enrichExpressLikeSend.d.ts.map +1 -0
  419. package/lib/src/http/utils/enrichExpressLikeSend.js +50 -0
  420. package/lib/src/http/utils/httpStatusCodes.d.ts.map +1 -0
  421. package/lib/src/http/utils/httpStatusCodes.js +1039 -0
  422. package/lib/src/http/utils/index.d.ts +3 -0
  423. package/lib/src/http/utils/index.d.ts.map +1 -0
  424. package/lib/src/http/utils/index.js +2 -0
  425. package/lib/src/services/index.d.ts.map +1 -0
  426. package/lib/src/services/index.js +1 -0
  427. package/lib/src/services/interfaces/baseService.d.ts.map +1 -0
  428. package/lib/src/services/interfaces/baseService.js +1 -0
  429. package/lib/tests/dtoMapper.test.d.ts +2 -0
  430. package/lib/tests/dtoMapper.test.d.ts.map +1 -0
  431. package/lib/tests/dtoMapper.test.js +168 -0
  432. package/lib/tests/entityMapper.test.d.ts +2 -0
  433. package/lib/tests/entityMapper.test.js +168 -0
  434. package/lib/tests/expressLikeRouter.test.d.ts +2 -0
  435. package/lib/tests/expressLikeRouter.test.d.ts.map +1 -0
  436. package/lib/tests/expressLikeRouter.test.js +3 -0
  437. package/lib/tests/expressLikeRouterInstantiation.test.d.ts +2 -0
  438. package/lib/tests/expressLikeRouterInstantiation.test.d.ts.map +1 -0
  439. package/lib/tests/expressLikeRouterInstantiation.test.js +60 -0
  440. package/lib/tests/http.middleware.test.d.ts +2 -0
  441. package/lib/tests/http.middleware.test.js +102 -0
  442. package/lib/tests/openApiV3Generator.test.d.ts +2 -0
  443. package/lib/tests/openApiV3Generator.test.js +66 -0
  444. package/lib/tests/redisTtlCache.test.d.ts +2 -0
  445. package/lib/tests/redisTtlCache.test.js +49 -0
  446. package/lib/tests/typedHandler.test.d.ts +2 -0
  447. package/lib/tests/typedHandler.test.d.ts.map +1 -0
  448. package/lib/tests/typedHandler.test.js +3 -0
  449. package/lib/tsconfig.tsbuildinfo +1 -0
  450. package/lib/vitest.config.d.ts +3 -0
  451. package/lib/vitest.config.d.ts.map +1 -0
  452. package/lib/vitest.config.js +7 -0
  453. package/package.json +52 -30
  454. package/dist/cache/index.d.ts.map +0 -1
  455. package/dist/cache/interfaces/ttlCache.interface.d.ts.map +0 -1
  456. package/dist/cache/redisTtlCache.d.ts.map +0 -1
  457. package/dist/cache/types/ttlCacheRecord.types.d.ts.map +0 -1
  458. package/dist/controllers/index.d.ts.map +0 -1
  459. package/dist/controllers/interfaces/controller.interface.d.ts.map +0 -1
  460. package/dist/database/index.d.ts.map +0 -1
  461. package/dist/database/mikro/models/entities/base.entity.d.ts.map +0 -1
  462. package/dist/entityMapper/index.d.ts +0 -3
  463. package/dist/entityMapper/index.d.ts.map +0 -1
  464. package/dist/entityMapper/interfaces/entityMapper.interface.d.ts.map +0 -1
  465. package/dist/entityMapper/models/baseEntityMapper.model.d.ts.map +0 -1
  466. package/dist/entityMapper/models/requestEntityMapper.model.d.ts.map +0 -1
  467. package/dist/entityMapper/models/responseEntityMapper.model.d.ts.map +0 -1
  468. package/dist/entityMapper/types/entityMapper.types.d.ts +0 -10
  469. package/dist/entityMapper/types/entityMapper.types.d.ts.map +0 -1
  470. package/dist/eslint.config.mjs +0 -10
  471. package/dist/http/httpStatusCodes.d.ts.map +0 -1
  472. package/dist/http/index.d.ts +0 -7
  473. package/dist/http/index.d.ts.map +0 -1
  474. package/dist/http/interfaces/forklaunchExpress.application.interface.d.ts.map +0 -1
  475. package/dist/http/interfaces/forklaunchExpress.router.interface.d.ts +0 -118
  476. package/dist/http/interfaces/forklaunchExpress.router.interface.d.ts.map +0 -1
  477. package/dist/http/interfaces/index.d.ts +0 -3
  478. package/dist/http/interfaces/index.d.ts.map +0 -1
  479. package/dist/http/interfaces/index.js +0 -2
  480. package/dist/http/middleware/index.d.ts.map +0 -1
  481. package/dist/http/middleware/request.middleware.d.ts +0 -111
  482. package/dist/http/middleware/request.middleware.d.ts.map +0 -1
  483. package/dist/http/middleware/response.middleware.d.ts +0 -17
  484. package/dist/http/middleware/response.middleware.d.ts.map +0 -1
  485. package/dist/http/middleware/response.middleware.js +0 -49
  486. package/dist/http/openApiV3Generator.d.ts.map +0 -1
  487. package/dist/http/regex.d.ts +0 -9
  488. package/dist/http/regex.d.ts.map +0 -1
  489. package/dist/http/regex.js +0 -111
  490. package/dist/http/types/api.types.d.ts.map +0 -1
  491. package/dist/http/types/forklaunch.types.d.ts.map +0 -1
  492. package/dist/http/types/index.d.ts +0 -4
  493. package/dist/http/types/index.d.ts.map +0 -1
  494. package/dist/http/types/index.js +0 -3
  495. package/dist/http/types/primitive.types.d.ts +0 -110
  496. package/dist/http/types/primitive.types.d.ts.map +0 -1
  497. package/dist/index.d.ts +0 -7
  498. package/dist/index.d.ts.map +0 -1
  499. package/dist/jest.config.d.ts +0 -4
  500. package/dist/jest.config.d.ts.map +0 -1
  501. package/dist/jest.config.js +0 -7
  502. package/dist/services/index.d.ts.map +0 -1
  503. package/dist/services/interfaces/baseService.d.ts.map +0 -1
  504. package/dist/tsconfig.tsbuildinfo +0 -1
  505. /package/{dist → lib/dist}/cache/index.js +0 -0
  506. /package/{dist → lib/dist}/cache/interfaces/ttlCache.interface.js +0 -0
  507. /package/{dist → lib/dist}/cache/types/ttlCacheRecord.types.js +0 -0
  508. /package/{dist → lib/dist}/controllers/index.js +0 -0
  509. /package/{dist → lib/dist}/controllers/interfaces/controller.interface.js +0 -0
  510. /package/{dist → lib/dist}/database/index.js +0 -0
  511. /package/{dist → lib/dist}/entityMapper/index.js +0 -0
  512. /package/{dist → lib/dist}/entityMapper/interfaces/entityMapper.interface.js +0 -0
  513. /package/{dist → lib/dist}/entityMapper/models/baseEntityMapper.model.js +0 -0
  514. /package/{dist → lib/dist}/entityMapper/models/requestEntityMapper.model.js +0 -0
  515. /package/{dist → lib/dist}/entityMapper/models/responseEntityMapper.model.js +0 -0
  516. /package/{dist → lib/dist}/entityMapper/types/entityMapper.types.js +0 -0
  517. /package/{dist/http/interfaces/forklaunchExpress.application.interface.js → lib/dist/http/interfaces/expressLikeApplication.interface.js} +0 -0
  518. /package/{dist → lib/dist}/http/middleware/index.js +0 -0
  519. /package/{dist/http/types/api.types.js → lib/dist/http/types/apiDefinition.types.js} +0 -0
  520. /package/{dist/http/types/forklaunch.types.js → lib/dist/http/types/contractDetails.types.js} +0 -0
  521. /package/{dist/http/types/primitive.types.js → lib/dist/http/types/router.types.js} +0 -0
  522. /package/{dist/http → lib/dist/http/utils}/httpStatusCodes.js +0 -0
  523. /package/{dist → lib/dist}/index.js +0 -0
  524. /package/{dist/services/interfaces/baseService.js → lib/dist/lib/src/cache/interfaces/ttlCache.interface.js} +0 -0
  525. /package/{dist → lib/dist/lib/src}/services/index.js +0 -0
  526. /package/{dist → lib/dist/lib}/tests/entityMapper.test.d.ts +0 -0
  527. /package/{dist → lib/dist/lib}/tests/http.middleware.test.d.ts +0 -0
  528. /package/{dist → lib/dist/lib}/tests/openApiV3Generator.test.d.ts +0 -0
  529. /package/{dist → lib/dist/lib}/tests/redisTtlCache.test.d.ts +0 -0
  530. /package/{dist → lib/dist}/tests/redisTtlCache.test.js +0 -0
  531. /package/{dist → lib}/eslint.config.d.mts +0 -0
  532. /package/{dist → lib}/eslint.config.d.mts.map +0 -0
  533. /package/{dist → lib/src}/cache/index.d.ts +0 -0
  534. /package/{dist → lib/src}/cache/interfaces/ttlCache.interface.d.ts +0 -0
  535. /package/{dist → lib/src}/cache/redisTtlCache.d.ts +0 -0
  536. /package/{dist → lib/src}/cache/types/ttlCacheRecord.types.d.ts +0 -0
  537. /package/{dist → lib/src}/controllers/index.d.ts +0 -0
  538. /package/{dist → lib/src}/controllers/interfaces/controller.interface.d.ts +0 -0
  539. /package/{dist → lib/src}/database/index.d.ts +0 -0
  540. /package/{dist → lib/src}/database/mikro/models/entities/base.entity.d.ts +0 -0
  541. /package/{dist → lib/src}/database/mikro/models/entities/base.entity.js +0 -0
  542. /package/{dist → lib/src}/http/middleware/index.d.ts +0 -0
  543. /package/{dist/http → lib/src/http/utils}/httpStatusCodes.d.ts +0 -0
  544. /package/{dist → lib/src}/services/index.d.ts +0 -0
  545. /package/{dist → lib/src}/services/interfaces/baseService.d.ts +0 -0
  546. /package/{dist → lib}/tests/entityMapper.test.d.ts.map +0 -0
  547. /package/{dist → lib}/tests/http.middleware.test.d.ts.map +0 -0
  548. /package/{dist → lib}/tests/openApiV3Generator.test.d.ts.map +0 -0
  549. /package/{dist → lib}/tests/redisTtlCache.test.d.ts.map +0 -0
@@ -0,0 +1,336 @@
1
+ import { isHttpContractDetails } from '../guards/isHttpContractDetails';
2
+ import { corsMiddleware, createRequestContext, enrichRequestDetails, parseRequest } from '../middleware';
3
+ /**
4
+ * A class that represents an Express-like router.
5
+ */
6
+ export class ForklaunchExpressLikeRouter {
7
+ schemaValidator;
8
+ internal;
9
+ routes = [];
10
+ basePath;
11
+ constructor(basePath, schemaValidator, internal) {
12
+ this.schemaValidator = schemaValidator;
13
+ this.internal = internal;
14
+ this.basePath = basePath;
15
+ this.internal.use(createRequestContext(this.schemaValidator));
16
+ this.internal.use(corsMiddleware);
17
+ }
18
+ /**
19
+ * Resolves middlewares based on the contract details.
20
+ *
21
+ * @param {PathParamHttpContractDetails<SV> | HttpContractDetails<SV>} contractDetails - The contract details.
22
+ * @returns {MiddlewareHandler<SV>[]} - The resolved middlewares.
23
+ */
24
+ #resolveMiddlewares(contractDetails, requestSchema, responseSchemas) {
25
+ return [
26
+ enrichRequestDetails(contractDetails, requestSchema, responseSchemas),
27
+ parseRequest
28
+ ];
29
+ }
30
+ /**
31
+ * Parses and runs the controller function with error handling.
32
+ *
33
+ * @template P - The type of request parameters.
34
+ * @template ResBodyMap - The type of response body.
35
+ * @template ReqBody - The type of request body.
36
+ * @template ReqQuery - The type of request query.
37
+ * @template LocalsObj - The type of local variables.
38
+ * @template StatusCode - The type of status code.
39
+ * @param {MiddlewareHandler<SV, P, ResBodyMap | string, ReqBody, ReqQuery, LocalsObj, StatusCode>} requestHandler - The request handler.
40
+ * @returns {ExpressMiddlewareHandler} - The Express request handler.
41
+ */
42
+ #parseAndRunControllerFunction(requestHandler) {
43
+ return async (req, res, next) => {
44
+ if (!requestHandler) {
45
+ throw new Error('Controller function is not defined');
46
+ }
47
+ try {
48
+ await requestHandler(req, res, next);
49
+ }
50
+ catch (error) {
51
+ next?.(error);
52
+ console.error(error);
53
+ if (!res.headersSent) {
54
+ res.status(500).send('Internal Server Error');
55
+ }
56
+ }
57
+ };
58
+ }
59
+ /**
60
+ * Extracts the controller function from the provided functions.
61
+ *
62
+ * @template P - The type of request parameters.
63
+ * @template ResBodyMap - The type of response body.
64
+ * @template ReqBody - The type of request body.
65
+ * @template ReqQuery - The type of request query.
66
+ * @template LocalsObj - The type of local variables.
67
+ * @param {MiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The provided functions.
68
+ * @returns {MiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>} - The extracted controller function.
69
+ * @throws {Error} - Throws an error if the last argument is not a function.
70
+ */
71
+ #extractControllerFunction(functions) {
72
+ const controllerFunction = functions.pop();
73
+ if (typeof controllerFunction !== 'function') {
74
+ throw new Error('Last argument must be a function');
75
+ }
76
+ return controllerFunction;
77
+ }
78
+ // TODO: Move to UniversalSDK
79
+ // /**
80
+ // * Extracts the SDK path from the given path.
81
+ // *
82
+ // * @param {string | RegExp | (string | RegExp)[]} path - The provided path.
83
+ // * @returns {string} - The extracted SDK path.
84
+ // * @throws {Error} - Throws an error if the path is not defined.
85
+ // */
86
+ // extractSdkPath(path: string | RegExp | (string | RegExp)[]): string {
87
+ // let sdkPath = path;
88
+ // if (Array.isArray(path)) {
89
+ // sdkPath = path.pop() || path[0];
90
+ // }
91
+ // if (!sdkPath) {
92
+ // throw new Error('Path is not defined');
93
+ // }
94
+ // if (sdkPath instanceof RegExp) {
95
+ // sdkPath = generateStringFromRegex(sdkPath);
96
+ // }
97
+ // return sdkPath as string;
98
+ // }
99
+ /**
100
+ * Registers middleware to the router.
101
+ *
102
+ * @param {...unknown[]} args - The middleware to register.
103
+ * @returns {this} - The router instance.
104
+ */
105
+ use(...args) {
106
+ this.internal.use(...args);
107
+ return this;
108
+ }
109
+ #compile(contractDetails) {
110
+ const schemaValidator = this.schemaValidator;
111
+ const requestSchema = schemaValidator.compile(schemaValidator.schemify({
112
+ ...(contractDetails.params ? { params: contractDetails.params } : {}),
113
+ ...(contractDetails.requestHeaders
114
+ ? { headers: contractDetails.requestHeaders }
115
+ : {}),
116
+ ...(contractDetails.query ? { query: contractDetails.query } : {}),
117
+ ...(isHttpContractDetails(contractDetails) && contractDetails.body
118
+ ? { body: contractDetails.body }
119
+ : {})
120
+ }));
121
+ const responseEntries = {
122
+ 400: schemaValidator.string,
123
+ 401: schemaValidator.string,
124
+ 403: schemaValidator.string,
125
+ 404: schemaValidator.string,
126
+ 500: schemaValidator.string,
127
+ ...contractDetails.responses
128
+ };
129
+ const responseSchemas = {
130
+ responses: {},
131
+ ...(contractDetails.responseHeaders
132
+ ? {
133
+ headers: schemaValidator.compile(schemaValidator.schemify(contractDetails.responseHeaders))
134
+ }
135
+ : {})
136
+ };
137
+ Object.entries(responseEntries).forEach(([code, responseShape]) => {
138
+ responseSchemas.responses[Number(code)] = schemaValidator.compile(schemaValidator.schemify(responseShape));
139
+ });
140
+ return {
141
+ requestSchema,
142
+ responseSchemas
143
+ };
144
+ }
145
+ /**
146
+ * Executes request locally, applying parameters
147
+ *
148
+ * @param functions {ForklaunchMiddlewareHandler<SV>}
149
+ * @param controllerFunction
150
+ * @returns
151
+ */
152
+ #localParamRequest(functions, controllerFunction) {
153
+ return async (route, request) => {
154
+ let statusCode;
155
+ let responseMessage;
156
+ const responseHeaders = {};
157
+ const req = {
158
+ params: request?.params ?? {},
159
+ query: request?.query ?? {},
160
+ headers: request?.headers ?? {},
161
+ body: request?.body ?? {},
162
+ path: route
163
+ };
164
+ const res = {
165
+ status: (code) => {
166
+ statusCode = code;
167
+ return res;
168
+ },
169
+ send: (message) => {
170
+ responseMessage = message;
171
+ },
172
+ json: (body) => {
173
+ responseMessage = body;
174
+ },
175
+ jsonp: (body) => {
176
+ responseMessage = body;
177
+ },
178
+ setHeader: (key, value) => {
179
+ responseHeaders[key] = value;
180
+ }
181
+ };
182
+ let cursor = functions.shift();
183
+ if (cursor) {
184
+ for (const fn of functions) {
185
+ await cursor(req, res, (err) => {
186
+ if (err) {
187
+ throw err;
188
+ }
189
+ cursor = fn;
190
+ });
191
+ }
192
+ await cursor(req, res, async (err) => {
193
+ if (err) {
194
+ throw err;
195
+ }
196
+ });
197
+ }
198
+ const cFunction = controllerFunction;
199
+ await cFunction(req, res, (err) => {
200
+ if (err) {
201
+ throw err;
202
+ }
203
+ });
204
+ return {
205
+ code: statusCode,
206
+ response: responseMessage,
207
+ headers: responseHeaders
208
+ };
209
+ };
210
+ }
211
+ #registerRoute(method, path, registrationFunction, contractDetailsOrTypedHandler, ...functions) {
212
+ if (contractDetailsOrTypedHandler instanceof TypedHandler) {
213
+ const typedHandler = contractDetailsOrTypedHandler;
214
+ return this.#registerRoute(method, path, registrationFunction, typedHandler.contractDetails, ...typedHandler.functions.concat(functions));
215
+ }
216
+ const contractDetails = contractDetailsOrTypedHandler;
217
+ this.routes.push({
218
+ basePath: this.basePath,
219
+ path,
220
+ method,
221
+ contractDetails
222
+ });
223
+ const { requestSchema, responseSchemas } = this.#compile(contractDetails);
224
+ const controllerFunction = this.#extractControllerFunction(functions);
225
+ registrationFunction.bind(this.internal)(path, ...this.#resolveMiddlewares(contractDetails, requestSchema, responseSchemas).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
226
+ return this.#localParamRequest(functions, controllerFunction);
227
+ }
228
+ /**
229
+ * Registers a GET route with the specified contract details and handler functions.
230
+ *
231
+ * @template P - The type of request parameters.
232
+ * @template ResBodyMap - The type of response body.
233
+ * @template ReqBody - The type of request body.
234
+ * @template ReqQuery - The type of request query.
235
+ * @template LocalsObj - The type of local variables.
236
+ * @param {string} path - The path for the route.
237
+ * @param {PathParamHttpContractDetails<SV, P, ResBodyMap, ReqQuery>} contractDetails - The contract details.
238
+ * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
239
+ * @returns {ExpressRouter} - The Express router.
240
+ */
241
+ get(path, contractDetailsOrTypedHandler, ...functions) {
242
+ return {
243
+ get: this.#registerRoute('get', path, this.internal.get, contractDetailsOrTypedHandler, ...functions)
244
+ };
245
+ }
246
+ /**
247
+ * Registers a POST route with the specified contract details and handler functions.
248
+ *
249
+ * @template P - The type of request parameters.
250
+ * @template ResBodyMap - The type of response body.
251
+ * @template ReqBody - The type of request body.
252
+ * @template ReqQuery - The type of request query.
253
+ * @template LocalsObj - The type of local variables.
254
+ * @param {string} path - The path for the route.
255
+ * @param {HttpContractDetails<SV, P, ResBodyMap, ReqBody, ReqQuery>} contractDetails - The contract details.
256
+ * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
257
+ * @returns {ExpressRouter} - The Express router.
258
+ */
259
+ post(path, contractDetailsOrTypedHandler, ...functions) {
260
+ return {
261
+ post: this.#registerRoute('post', path, this.internal.post, contractDetailsOrTypedHandler, ...functions)
262
+ };
263
+ }
264
+ /**
265
+ * Registers a PUT route with the specified contract details and handler functions.
266
+ *
267
+ * @template P - The type of request parameters.
268
+ * @template ResBodyMap - The type of response body.
269
+ * @template ReqBody - The type of request body.
270
+ * @template ReqQuery - The type of request query.
271
+ * @template LocalsObj - The type of local variables.
272
+ * @param {string} path - The path for the route.
273
+ * @param {HttpContractDetails<SV, P, ResBodyMap, ReqBody, ReqQuery>} contractDetails - The contract details.
274
+ * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
275
+ * @returns {ExpressRouter} - The Express router.
276
+ */
277
+ put(path, contractDetailsOrTypedHandler, ...functions) {
278
+ return {
279
+ put: this.#registerRoute('put', path, this.internal.put, contractDetailsOrTypedHandler, ...functions)
280
+ };
281
+ }
282
+ /**
283
+ * Registers a PATCH route with the specified contract details and handler functions.
284
+ *
285
+ * @template P - The type of request parameters.
286
+ * @template ResBodyMap - The type of response body.
287
+ * @template ReqBody - The type of request body.
288
+ * @template ReqQuery - The type of request query.
289
+ * @template LocalsObj - The type of local variables.
290
+ * @param {string} path - The path for the route.
291
+ * @param {HttpContractDetails<SV, P, ResBodyMap, ReqBody, ReqQuery>} contractDetails - The contract details.
292
+ * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
293
+ * @returns {ExpressRouter} - The Express router.
294
+ */
295
+ patch(path, contractDetailsOrTypedHandler, ...functions) {
296
+ return {
297
+ patch: this.#registerRoute('patch', path, this.internal.patch, contractDetailsOrTypedHandler, ...functions)
298
+ };
299
+ }
300
+ /**
301
+ * Registers a DELETE route with the specified contract details and handler functions.
302
+ *
303
+ * @template P - The type of request parameters.
304
+ * @template ResBodyMap - The type of response body.
305
+ * @template ReqBody - The type of request body.
306
+ * @template ReqQuery - The type of request query.
307
+ * @template LocalsObj - The type of local variables.
308
+ * @param {string} path - The path for the route.
309
+ * @param {PathParamHttpContractDetails<SV, P, ResBodyMap, ReqQuery>} contractDetails - The contract details.
310
+ * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
311
+ * @returns {ExpressRouter} - The Express router.
312
+ */
313
+ delete(path, contractDetailsOrTypedHandler, ...functions) {
314
+ return {
315
+ delete: this.#registerRoute('delete', path, this.internal.delete, contractDetailsOrTypedHandler, ...functions)
316
+ };
317
+ }
318
+ }
319
+ class TypedHandler {
320
+ contractDetails;
321
+ functions;
322
+ constructor(contractDetails, functions) {
323
+ this.contractDetails = contractDetails;
324
+ this.functions = functions;
325
+ }
326
+ }
327
+ /**
328
+ * Router class that sets up routes and middleware for an Express router, for use with controller/routes pattern.
329
+ *
330
+ * @template SV - A type that extends AnySchemaValidator.
331
+ * @template contractDetails - The contract details.
332
+ * @template functions - The handler middlware and function.
333
+ */
334
+ export function typedHandler(_schemaValidator, _method, contractDetails, ...functions) {
335
+ return new TypedHandler(contractDetails, functions);
336
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./expressLikeApplication.interface";
2
+ export * from "./expressLikeRouter.interface";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../dist/http/interfaces/index.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './expressLikeApplication.interface';
2
+ export * from './expressLikeRouter.interface';
@@ -0,0 +1,3 @@
1
+ export * from "./request.middleware";
2
+ export * from "./response.middleware";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../dist/http/middleware/index.js"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Cors middleware handler
3
+ *
4
+ * @param req - Express-like request object
5
+ * @param res - Express-like response object
6
+ * @param next - Express-like next function
7
+ */
8
+ export function corsMiddleware(req: any, res: any, next: any): void;
9
+ /**
10
+ * Middleware to create and add a request context.
11
+ *
12
+ * @template SV - A type that extends AnySchemaValidator.
13
+ * @template Request - A type that extends ForklaunchRequest.
14
+ * @template Response - A type that extends ForklaunchResponse.
15
+ * @template NextFunction - A type that extends ForklaunchNextFunction.
16
+ * @param {SV} schemaValidator - The schema validator.
17
+ * @returns {Function} - Middleware function to create request context.
18
+ */
19
+ export function createRequestContext<SV, Request, Response, NextFunction>(schemaValidator: SV): Function;
20
+ /**
21
+ * Middleware to enrich the request details with contract details.
22
+ *
23
+ * @template SV - A type that extends AnySchemaValidator.
24
+ * @template Request - A type that extends ForklaunchRequest.
25
+ * @template Response - A type that extends ForklaunchResponse.
26
+ * @template NextFunction - A type that extends ForklaunchNextFunction.
27
+ * @param {PathParamHttpContractDetails<SV> | HttpContractDetails<SV>} contractDetails - The contract details.
28
+ * @returns {Function} - Middleware function to enrich request details.
29
+ */
30
+ export function enrichRequestDetails<SV, Request, Response, NextFunction>(contractDetails: PathParamHttpContractDetails<SV> | HttpContractDetails<SV>, requestSchema: any, responseSchemas: any): Function;
31
+ /**
32
+ * Pre-handler function to parse and validate input.
33
+ *
34
+ * @template SV - A type that extends AnySchemaValidator.
35
+ * @template Request - A type that extends ForklaunchRequest.
36
+ * @template Response - A type that extends ForklaunchResponse.
37
+ * @template NextFunction - A type that extends ForklaunchNextFunction.
38
+ * @param {Request} req - The request object.
39
+ * @param {Response} res - The response object.
40
+ * @param {NextFunction} [next] - The next middleware function.
41
+ */
42
+ export function parseRequest<SV, Request, Response, NextFunction>(req: Request, _res: any, next?: NextFunction | undefined): void;
43
+ /**
44
+ * Maps roles from authorization.
45
+ *
46
+ * @param {AuthMethod} [authorizationType] - The method of authorization.
47
+ * @param {string} [authorizationToken] - The authorization token.
48
+ * @returns {string[]} - The mapped roles.
49
+ */
50
+ /**
51
+ * Maps permissions from authorization.
52
+ *
53
+ * @param {AuthMethod} [authorizationType] - The method of authorization.
54
+ * @param {string} [authorizationToken] - The authorization token.
55
+ * @returns {string[]} - The mapped permissions.
56
+ */
57
+ /**
58
+ * Middleware to parse request authorization.
59
+ *
60
+ * @template SV - A type that extends AnySchemaValidator.
61
+ * @template Request - A type that extends ForklaunchRequest.
62
+ * @template Response - A type that extends ForklaunchResponse.
63
+ * @template NextFunction - A type that extends ForklaunchNextFunction.
64
+ * @param {Request} req - The request object.
65
+ * @param {Response} res - The response object.
66
+ * @param {NextFunction} [next] - The next middleware function.
67
+ */
68
+ export function parseRequestAuth<SV, Request, Response, NextFunction>(req: Request, res: Response, next?: NextFunction | undefined): Promise<void>;
69
+ //# sourceMappingURL=request.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.middleware.d.ts","sourceRoot":"","sources":["../../../../dist/http/middleware/request.middleware.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,oEAMC;AACD;;;;;;;;;GASG;AACH,qCAPa,EAAE,EACF,OAAO,EACP,QAAQ,EACR,YAAY,mBACd,EAAE,YAiBZ;AACD;;;;;;;;;GASG;AACH,qCAPa,EAAE,EACF,OAAO,EACP,QAAQ,EACR,YAAY,mBACd,4BAA4B,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,EAAE,CAAC,sDAWpE;AACD;;;;;;;;;;GAUG;AACH,6BARa,EAAE,EACF,OAAO,EACP,QAAQ,EACR,YAAY,OACd,OAAO,oDAkCjB;AA8BD;;;;;;GAMG;AAOH;;;;;;GAMG;AAOH;;;;;;;;;;GAUG;AACH,iCARa,EAAE,EACF,OAAO,EACP,QAAQ,EACR,YAAY,OACd,OAAO,OACP,QAAQ,kDA0ClB"}
@@ -1,5 +1,21 @@
1
+ import cors from 'cors';
1
2
  import * as jose from 'jose';
2
3
  import { v4 } from 'uuid';
4
+ import { isResponseShape } from '../guards/isResponseShape';
5
+ /**
6
+ * Cors middleware handler
7
+ *
8
+ * @param req - Express-like request object
9
+ * @param res - Express-like response object
10
+ * @param next - Express-like next function
11
+ */
12
+ export function corsMiddleware(req, res, next) {
13
+ console.debug('[MIDDLEWARE] cors started');
14
+ if (req.method === 'OPTIONS') {
15
+ res.cors = true;
16
+ }
17
+ cors()(req, res, next ?? (() => { }));
18
+ }
3
19
  /**
4
20
  * Middleware to create and add a request context.
5
21
  *
@@ -12,6 +28,7 @@ import { v4 } from 'uuid';
12
28
  */
13
29
  export function createRequestContext(schemaValidator) {
14
30
  return (req, res, next) => {
31
+ console.debug('[MIDDLEWARE] createRequestContext started');
15
32
  req.schemaValidator = schemaValidator;
16
33
  let correlationId = v4();
17
34
  if (req.headers['x-correlation-id']) {
@@ -21,9 +38,7 @@ export function createRequestContext(schemaValidator) {
21
38
  req.context = {
22
39
  correlationId: correlationId
23
40
  };
24
- if (next) {
25
- next();
26
- }
41
+ next?.();
27
42
  };
28
43
  }
29
44
  /**
@@ -36,36 +51,19 @@ export function createRequestContext(schemaValidator) {
36
51
  * @param {PathParamHttpContractDetails<SV> | HttpContractDetails<SV>} contractDetails - The contract details.
37
52
  * @returns {Function} - Middleware function to enrich request details.
38
53
  */
39
- export function enrichRequestDetails(contractDetails) {
40
- return (req, _res, next) => {
54
+ export function enrichRequestDetails(contractDetails, requestSchema, responseSchemas) {
55
+ return (req, res, next) => {
56
+ console.debug('[MIDDLEWARE] enrichRequestDetails started');
41
57
  req.contractDetails = contractDetails;
42
- if (next) {
43
- next();
44
- }
58
+ req.requestSchema = requestSchema;
59
+ res.responseSchemas = responseSchemas;
60
+ next?.();
45
61
  };
46
62
  }
47
63
  /**
48
64
  * Pre-handler function to parse and validate input.
49
65
  *
50
66
  * @template SV - A type that extends AnySchemaValidator.
51
- * @param {SchemaValidator} schemaValidator - The schema validator.
52
- * @param {unknown} object - The object to validate.
53
- * @param {StringOnlyObject<SV>} [schemaInput] - The schema input.
54
- * @returns {number | void} - Returns 400 if validation fails.
55
- */
56
- export function preHandlerParse(schemaValidator, object, schemaInput) {
57
- if (!schemaInput) {
58
- return;
59
- }
60
- const schema = schemaValidator.schemify(schemaInput);
61
- if (!schemaValidator.validate(schema, object)) {
62
- return 400;
63
- }
64
- }
65
- /**
66
- * Middleware to parse request parameters.
67
- *
68
- * @template SV - A type that extends AnySchemaValidator.
69
67
  * @template Request - A type that extends ForklaunchRequest.
70
68
  * @template Response - A type that extends ForklaunchResponse.
71
69
  * @template NextFunction - A type that extends ForklaunchNextFunction.
@@ -73,89 +71,36 @@ export function preHandlerParse(schemaValidator, object, schemaInput) {
73
71
  * @param {Response} res - The response object.
74
72
  * @param {NextFunction} [next] - The next middleware function.
75
73
  */
76
- export function parseRequestParams(req, res, next) {
77
- const params = req.contractDetails.params;
78
- if (preHandlerParse(req.schemaValidator, req.params, params) === 400) {
79
- res.status(400).send('Invalid request parameters.');
80
- if (next) {
81
- next(new Error('Invalid request parameters.'));
82
- }
83
- }
84
- if (next) {
85
- next();
86
- }
87
- }
88
- /**
89
- * Middleware to parse request body.
90
- *
91
- * @template SV - A type that extends AnySchemaValidator.
92
- * @template Request - A type that extends ForklaunchRequest.
93
- * @template Response - A type that extends ForklaunchResponse.
94
- * @template NextFunction - A type that extends ForklaunchNextFunction.
95
- * @param {Request} req - The request object.
96
- * @param {Response} res - The response object.
97
- * @param {NextFunction} [next] - The next middleware function.
98
- */
99
- export function parseRequestBody(req, res, next) {
100
- if (req.headers['content-type'] === 'application/json') {
101
- const body = (req.schemaValidator,
102
- req.contractDetails).body;
103
- if (preHandlerParse(req.schemaValidator, req.body, body) === 400) {
104
- res.status(400).send('Invalid request body.');
105
- if (next) {
106
- next(new Error('Invalid request body.'));
107
- }
108
- }
109
- }
110
- if (next) {
111
- next();
112
- }
113
- }
114
- /**
115
- * Middleware to parse request headers.
116
- *
117
- * @template SV - A type that extends AnySchemaValidator.
118
- * @template Request - A type that extends ForklaunchRequest.
119
- * @template Response - A type that extends ForklaunchResponse.
120
- * @template NextFunction - A type that extends ForklaunchNextFunction.
121
- * @param {Request} req - The request object.
122
- * @param {Response} res - The response object.
123
- * @param {NextFunction} [next] - The next middleware function.
124
- */
125
- export function parseReqHeaders(req, res, next) {
126
- const headers = req.contractDetails.requestHeaders;
127
- if (preHandlerParse(req.schemaValidator, req.headers, headers) === 400) {
128
- res.status(400).send('Invalid request headers.');
129
- if (next) {
130
- next(new Error('Invalid request headers.'));
131
- }
132
- }
133
- if (next) {
134
- next();
74
+ export function parseRequest(req, _res, next) {
75
+ console.debug('[MIDDLEWARE] parseRequest started');
76
+ const request = {
77
+ params: req.params,
78
+ query: req.query,
79
+ headers: req.headers,
80
+ body: req.body
81
+ };
82
+ const parsedRequest = req.schemaValidator.parse(req.requestSchema, request);
83
+ if (parsedRequest.ok &&
84
+ isResponseShape(parsedRequest.value)) {
85
+ req.body = parsedRequest.value.body;
86
+ req.params = parsedRequest.value.params;
87
+ req.query = parsedRequest.value.query;
88
+ req.headers = parsedRequest.value.headers;
135
89
  }
136
- }
137
- /**
138
- * Middleware to parse request query.
139
- *
140
- * @template SV - A type that extends AnySchemaValidator.
141
- * @template Request - A type that extends ForklaunchRequest.
142
- * @template Response - A type that extends ForklaunchResponse.
143
- * @template NextFunction - A type that extends ForklaunchNextFunction.
144
- * @param {Request} req - The request object.
145
- * @param {Response} res - The response object.
146
- * @param {NextFunction} [next] - The next middleware function.
147
- */
148
- export function parseRequestQuery(req, res, next) {
149
- const query = req.contractDetails.query;
150
- if (preHandlerParse(req.schemaValidator, req.query, query) === 400) {
151
- res.status(400).send('Invalid request query.');
152
- if (next) {
153
- next(new Error('Invalid request query.'));
90
+ if (!parsedRequest.ok) {
91
+ switch (req.contractDetails.options?.requestValidation) {
92
+ default:
93
+ case 'error':
94
+ next?.(new Error(`Invalid request: ${parsedRequest.error}`));
95
+ break;
96
+ case 'warning':
97
+ console.warn(`Invalid request: ${parsedRequest.error}`);
98
+ break;
99
+ case 'none':
100
+ break;
154
101
  }
155
102
  }
156
- if (next) {
157
- next();
158
- }
103
+ next?.();
159
104
  }
160
105
  /**
161
106
  * Checks the authorization token for validity.
@@ -229,9 +174,7 @@ export async function parseRequestAuth(req, res, next) {
229
174
  const errorAndMessage = await checkAuthorizationToken(auth.method, req.headers.authorization);
230
175
  if (Array.isArray(errorAndMessage)) {
231
176
  res.status(errorAndMessage[0]).send(errorAndMessage[1]);
232
- if (next) {
233
- next(new Error(errorAndMessage[1]));
234
- }
177
+ next?.(new Error(errorAndMessage[1]));
235
178
  }
236
179
  // TODO: Implement role and permission checking
237
180
  // const permissionSlugs = mapPermissions(
@@ -249,8 +192,7 @@ export async function parseRequestAuth(req, res, next) {
249
192
  // req.contractDetails.auth?.forbiddenSlugs?.has(permissionSlug)
250
193
  // ) {
251
194
  // res.status(403).send(permissionErrorMessage);
252
- // if (next) {
253
- // next(new Error(permissionErrorMessage));
195
+ // next?.(new Error(permissionErrorMessage));
254
196
  // }
255
197
  // }
256
198
  // });
@@ -260,13 +202,9 @@ export async function parseRequestAuth(req, res, next) {
260
202
  // req.contractDetails.auth?.forbiddenRoles?.has(role)
261
203
  // ) {
262
204
  // res.status(403).send(roleErrorMessage);
263
- // if (next) {
264
- // next(new Error(roleErrorMessage));
265
- // }
205
+ // next?.(new Error(roleErrorMessage));
266
206
  // }
267
207
  // });
268
208
  }
269
- // if (next) {
270
- // next();
271
- // }
209
+ // next?.();
272
210
  }