@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
@@ -1,11 +1,23 @@
1
- import { enrichRequestDetails, parseReqHeaders, parseRequestAuth, parseRequestBody, parseRequestParams, parseRequestQuery } from '../middleware';
1
+ import { isHttpContractDetails } from '../guards/isHttpContractDetails';
2
+ import { TypedHandler } from '../handler/typedHandler';
3
+ import { cors } from '../middleware/request/cors.middleware';
4
+ import { createContext } from '../middleware/request/createContext.middleware';
5
+ import { enrichDetails } from '../middleware/request/enrichDetails.middleware';
6
+ import { parse } from '../middleware/request/parse.middleware';
7
+ /**
8
+ * A class that represents an Express-like router.
9
+ */
2
10
  export class ForklaunchExpressLikeRouter {
11
+ schemaValidator;
3
12
  internal;
4
13
  routes = [];
5
14
  basePath;
6
- constructor(basePath, internal) {
15
+ constructor(basePath, schemaValidator, internal) {
16
+ this.schemaValidator = schemaValidator;
7
17
  this.internal = internal;
8
18
  this.basePath = basePath;
19
+ this.internal.use(createContext(this.schemaValidator));
20
+ this.internal.use(cors);
9
21
  }
10
22
  /**
11
23
  * Resolves middlewares based on the contract details.
@@ -13,26 +25,11 @@ export class ForklaunchExpressLikeRouter {
13
25
  * @param {PathParamHttpContractDetails<SV> | HttpContractDetails<SV>} contractDetails - The contract details.
14
26
  * @returns {MiddlewareHandler<SV>[]} - The resolved middlewares.
15
27
  */
16
- #resolveMiddlewares(contractDetails) {
17
- const middlewares = [
18
- enrichRequestDetails(contractDetails)
28
+ #resolveMiddlewares(contractDetails, requestSchema, responseSchemas) {
29
+ return [
30
+ enrichDetails(contractDetails, requestSchema, responseSchemas),
31
+ parse
19
32
  ];
20
- if (contractDetails.params) {
21
- middlewares.push(parseRequestParams);
22
- }
23
- if (contractDetails.body) {
24
- middlewares.push(parseRequestBody);
25
- }
26
- if (contractDetails.requestHeaders) {
27
- middlewares.push(parseReqHeaders);
28
- }
29
- if (contractDetails.query) {
30
- middlewares.push(parseRequestQuery);
31
- }
32
- if (contractDetails.auth) {
33
- middlewares.push(parseRequestAuth);
34
- }
35
- return middlewares;
36
33
  }
37
34
  /**
38
35
  * Parses and runs the controller function with error handling.
@@ -47,7 +44,7 @@ export class ForklaunchExpressLikeRouter {
47
44
  * @returns {ExpressMiddlewareHandler} - The Express request handler.
48
45
  */
49
46
  #parseAndRunControllerFunction(requestHandler) {
50
- return (async (req, res, next) => {
47
+ return async (req, res, next) => {
51
48
  if (!requestHandler) {
52
49
  throw new Error('Controller function is not defined');
53
50
  }
@@ -55,15 +52,13 @@ export class ForklaunchExpressLikeRouter {
55
52
  await requestHandler(req, res, next);
56
53
  }
57
54
  catch (error) {
58
- if (next) {
59
- next(error);
60
- }
55
+ next?.(error);
61
56
  console.error(error);
62
57
  if (!res.headersSent) {
63
58
  res.status(500).send('Internal Server Error');
64
59
  }
65
60
  }
66
- });
61
+ };
67
62
  }
68
63
  /**
69
64
  * Extracts the controller function from the provided functions.
@@ -115,6 +110,42 @@ export class ForklaunchExpressLikeRouter {
115
110
  this.internal.use(...args);
116
111
  return this;
117
112
  }
113
+ #compile(contractDetails) {
114
+ const schemaValidator = this.schemaValidator;
115
+ const requestSchema = schemaValidator.compile(schemaValidator.schemify({
116
+ ...(contractDetails.params ? { params: contractDetails.params } : {}),
117
+ ...(contractDetails.requestHeaders
118
+ ? { headers: contractDetails.requestHeaders }
119
+ : {}),
120
+ ...(contractDetails.query ? { query: contractDetails.query } : {}),
121
+ ...(isHttpContractDetails(contractDetails) && contractDetails.body
122
+ ? { body: contractDetails.body }
123
+ : {})
124
+ }));
125
+ const responseEntries = {
126
+ 400: schemaValidator.string,
127
+ 401: schemaValidator.string,
128
+ 403: schemaValidator.string,
129
+ 404: schemaValidator.string,
130
+ 500: schemaValidator.string,
131
+ ...contractDetails.responses
132
+ };
133
+ const responseSchemas = {
134
+ responses: {},
135
+ ...(contractDetails.responseHeaders
136
+ ? {
137
+ headers: schemaValidator.compile(schemaValidator.schemify(contractDetails.responseHeaders))
138
+ }
139
+ : {})
140
+ };
141
+ Object.entries(responseEntries).forEach(([code, responseShape]) => {
142
+ responseSchemas.responses[Number(code)] = schemaValidator.compile(schemaValidator.schemify(responseShape));
143
+ });
144
+ return {
145
+ requestSchema,
146
+ responseSchemas
147
+ };
148
+ }
118
149
  /**
119
150
  * Executes request locally, applying parameters
120
151
  *
@@ -123,7 +154,7 @@ export class ForklaunchExpressLikeRouter {
123
154
  * @returns
124
155
  */
125
156
  #localParamRequest(functions, controllerFunction) {
126
- return (async (route, request) => {
157
+ return async (route, request) => {
127
158
  let statusCode;
128
159
  let responseMessage;
129
160
  const responseHeaders = {};
@@ -152,7 +183,6 @@ export class ForklaunchExpressLikeRouter {
152
183
  responseHeaders[key] = value;
153
184
  }
154
185
  };
155
- // let cursor = functions.shift() as unknown as (req_: typeof req, resp_: typeof res, next: MiddlewareNext) => void;
156
186
  let cursor = functions.shift();
157
187
  if (cursor) {
158
188
  for (const fn of functions) {
@@ -180,7 +210,24 @@ export class ForklaunchExpressLikeRouter {
180
210
  response: responseMessage,
181
211
  headers: responseHeaders
182
212
  };
213
+ };
214
+ }
215
+ #registerRoute(method, path, registrationFunction, contractDetailsOrTypedHandler, ...functions) {
216
+ if (contractDetailsOrTypedHandler instanceof TypedHandler) {
217
+ const typedHandler = contractDetailsOrTypedHandler;
218
+ return this.#registerRoute(method, path, registrationFunction, typedHandler.contractDetails, ...typedHandler.functions.concat(functions));
219
+ }
220
+ const contractDetails = contractDetailsOrTypedHandler;
221
+ this.routes.push({
222
+ basePath: this.basePath,
223
+ path,
224
+ method,
225
+ contractDetails
183
226
  });
227
+ const { requestSchema, responseSchemas } = this.#compile(contractDetails);
228
+ const controllerFunction = this.#extractControllerFunction(functions);
229
+ registrationFunction.bind(this.internal)(path, ...this.#resolveMiddlewares(contractDetails, requestSchema, responseSchemas).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
230
+ return this.#localParamRequest(functions, controllerFunction);
184
231
  }
185
232
  /**
186
233
  * Registers a GET route with the specified contract details and handler functions.
@@ -195,17 +242,9 @@ export class ForklaunchExpressLikeRouter {
195
242
  * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
196
243
  * @returns {ExpressRouter} - The Express router.
197
244
  */
198
- get(path, contractDetails, ...functions) {
199
- const controllerFunction = this.#extractControllerFunction(functions);
200
- this.routes.push({
201
- basePath: this.basePath,
202
- path,
203
- method: 'GET',
204
- contractDetails
205
- });
206
- this.internal.get(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
245
+ get(path, contractDetailsOrTypedHandler, ...functions) {
207
246
  return {
208
- get: this.#localParamRequest(functions, controllerFunction)
247
+ get: this.#registerRoute('get', path, this.internal.get, contractDetailsOrTypedHandler, ...functions)
209
248
  };
210
249
  }
211
250
  /**
@@ -221,17 +260,9 @@ export class ForklaunchExpressLikeRouter {
221
260
  * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
222
261
  * @returns {ExpressRouter} - The Express router.
223
262
  */
224
- post(path, contractDetails, ...functions) {
225
- const controllerFunction = this.#extractControllerFunction(functions);
226
- this.routes.push({
227
- basePath: this.basePath,
228
- path,
229
- method: 'POST',
230
- contractDetails
231
- });
232
- this.internal.post(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
263
+ post(path, contractDetailsOrTypedHandler, ...functions) {
233
264
  return {
234
- post: this.#localParamRequest(functions, controllerFunction)
265
+ post: this.#registerRoute('post', path, this.internal.post, contractDetailsOrTypedHandler, ...functions)
235
266
  };
236
267
  }
237
268
  /**
@@ -247,17 +278,9 @@ export class ForklaunchExpressLikeRouter {
247
278
  * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
248
279
  * @returns {ExpressRouter} - The Express router.
249
280
  */
250
- put(path, contractDetails, ...functions) {
251
- const controllerFunction = this.#extractControllerFunction(functions);
252
- this.routes.push({
253
- basePath: this.basePath,
254
- path,
255
- method: 'PUT',
256
- contractDetails
257
- });
258
- this.internal.put(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
281
+ put(path, contractDetailsOrTypedHandler, ...functions) {
259
282
  return {
260
- put: this.#localParamRequest(functions, controllerFunction)
283
+ put: this.#registerRoute('put', path, this.internal.put, contractDetailsOrTypedHandler, ...functions)
261
284
  };
262
285
  }
263
286
  /**
@@ -273,17 +296,9 @@ export class ForklaunchExpressLikeRouter {
273
296
  * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
274
297
  * @returns {ExpressRouter} - The Express router.
275
298
  */
276
- patch(path, contractDetails, ...functions) {
277
- const controllerFunction = this.#extractControllerFunction(functions);
278
- this.routes.push({
279
- basePath: this.basePath,
280
- path,
281
- method: 'PATCH',
282
- contractDetails
283
- });
284
- this.internal.patch(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
299
+ patch(path, contractDetailsOrTypedHandler, ...functions) {
285
300
  return {
286
- patch: this.#localParamRequest(functions, controllerFunction)
301
+ patch: this.#registerRoute('patch', path, this.internal.patch, contractDetailsOrTypedHandler, ...functions)
287
302
  };
288
303
  }
289
304
  /**
@@ -299,30 +314,9 @@ export class ForklaunchExpressLikeRouter {
299
314
  * @param {...SchemaMiddlewareHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, LocalsObj>[]} functions - The handler functions.
300
315
  * @returns {ExpressRouter} - The Express router.
301
316
  */
302
- delete(path, contractDetails, ...functions) {
303
- const controllerFunction = this.#extractControllerFunction(functions);
304
- this.routes.push({
305
- basePath: this.basePath,
306
- path,
307
- method: 'DELETE',
308
- contractDetails
309
- });
310
- this.internal.delete(path, ...this.#resolveMiddlewares(contractDetails).concat(functions), this.#parseAndRunControllerFunction(controllerFunction));
317
+ delete(path, contractDetailsOrTypedHandler, ...functions) {
311
318
  return {
312
- delete: this.#localParamRequest(functions, controllerFunction)
319
+ delete: this.#registerRoute('delete', path, this.internal.delete, contractDetailsOrTypedHandler, ...functions)
313
320
  };
314
321
  }
315
322
  }
316
- /**
317
- * Router class that sets up routes and middleware for an Express router, for use with controller/routes pattern.
318
- *
319
- * @template SV - A type that extends AnySchemaValidator.
320
- * @template contractDetails - The contract details.
321
- * @template functions - The handler middlware and function.
322
- */
323
- export function typedHandler(_schemaValidator, contractDetails, ...functions) {
324
- return {
325
- contractDetails,
326
- functions
327
- };
328
- }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=apiDefinition.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiDefinition.types.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/apiDefinition.types.js"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contractDetails.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contractDetails.types.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/contractDetails.types.js"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from "./apiDefinition.types";
2
+ export * from "./contractDetails.types";
3
+ export * from "./router.types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/index.js"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './apiDefinition.types';
2
+ export * from './contractDetails.types';
3
+ export * from './router.types';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=router.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.types.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/types/router.types.js"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Enhances the Express-like `send` method with additional logic for response handling and validation.
3
+ *
4
+ * This function intercepts the `send` method to provide custom behavior, including response validation
5
+ * through the `parseResponse` middleware. If the response status is 404, it sends a "Not Found" message.
6
+ * If the response validation fails, it sends a parsing error message. Otherwise, it calls the original `send`
7
+ * method with the provided data.
8
+ *
9
+ * @template SV - The type of the schema validator used in the request.
10
+ * @template P - The type of the parameters dictionary used in the request.
11
+ * @template ResBodyMap - A record type mapping status codes to response body types.
12
+ * @template ReqBody - The type of the request body.
13
+ * @template ReqQuery - The type of the parsed query string.
14
+ * @template ReqHeaders - The type of the request headers.
15
+ * @template ResHeaders - The type of the response headers, extended from `ForklaunchResHeaders`.
16
+ * @template LocalsObj - The type of the locals object in the response.
17
+ *
18
+ * @param {unknown} instance - The context (typically `this`) in which the original `send` method is called.
19
+ * @param {ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders>} req - The request object, containing the schema validator and other request data.
20
+ * @param {ForklaunchResponse<ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj>} res - The response object, including headers and body data.
21
+ * @param {Function} originalSend - The original `send` method from the response object, to be called after custom logic.
22
+ * @param {string | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | null | undefined} data - The data to be sent as the response body.
23
+ * @param {boolean} shouldEnrich - A flag indicating whether the response should be sent immediately.
24
+ *
25
+ * @returns {unknown} The return value of the original `send` method, typically the response itself.
26
+ */
27
+ export function enrichExpressLikeSend<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj>(instance: unknown, req: ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders>, res: ForklaunchResponse<ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj>, originalSend: Function, data: string | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | null | undefined, shouldEnrich: boolean): unknown;
28
+ //# sourceMappingURL=enrichExpressLikeSend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichExpressLikeSend.d.ts","sourceRoot":"","sources":["../../../../../../dist/lib/src/http/utils/enrichExpressLikeSend.js"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,sCAlBa,EAAE,EACF,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,YAEX,OAAO,OACP,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,OACvD,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,UAAU,EAAE,SAAS,CAAC,gCAE5E,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,GAAG,SAAS,gBACjF,OAAO,GAEL,OAAO,CAwBnB"}
@@ -0,0 +1,50 @@
1
+ import { parse } from '../middleware/response/parse.middleware';
2
+ /**
3
+ * Enhances the Express-like `send` method with additional logic for response handling and validation.
4
+ *
5
+ * This function intercepts the `send` method to provide custom behavior, including response validation
6
+ * through the `parseResponse` middleware. If the response status is 404, it sends a "Not Found" message.
7
+ * If the response validation fails, it sends a parsing error message. Otherwise, it calls the original `send`
8
+ * method with the provided data.
9
+ *
10
+ * @template SV - The type of the schema validator used in the request.
11
+ * @template P - The type of the parameters dictionary used in the request.
12
+ * @template ResBodyMap - A record type mapping status codes to response body types.
13
+ * @template ReqBody - The type of the request body.
14
+ * @template ReqQuery - The type of the parsed query string.
15
+ * @template ReqHeaders - The type of the request headers.
16
+ * @template ResHeaders - The type of the response headers, extended from `ForklaunchResHeaders`.
17
+ * @template LocalsObj - The type of the locals object in the response.
18
+ *
19
+ * @param {unknown} instance - The context (typically `this`) in which the original `send` method is called.
20
+ * @param {ForklaunchRequest<SV, P, ReqBody, ReqQuery, ReqHeaders>} req - The request object, containing the schema validator and other request data.
21
+ * @param {ForklaunchResponse<ResBodyMap, ForklaunchResHeaders & ResHeaders, LocalsObj>} res - The response object, including headers and body data.
22
+ * @param {Function} originalSend - The original `send` method from the response object, to be called after custom logic.
23
+ * @param {string | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | null | undefined} data - The data to be sent as the response body.
24
+ * @param {boolean} shouldEnrich - A flag indicating whether the response should be sent immediately.
25
+ *
26
+ * @returns {unknown} The return value of the original `send` method, typically the response itself.
27
+ */
28
+ export function enrichExpressLikeSend(instance, req, res, originalSend, data, shouldEnrich) {
29
+ let parseErrorSent;
30
+ if (shouldEnrich) {
31
+ if (res.statusCode === 404) {
32
+ res.status(404);
33
+ originalSend.call(instance, 'Not Found');
34
+ }
35
+ parse(req, res, (err) => {
36
+ if (err) {
37
+ let errorString = err.message;
38
+ if (res.locals.errorMessage) {
39
+ errorString += `\n------------------\n${res.locals.errorMessage}`;
40
+ }
41
+ res.status(500);
42
+ originalSend.call(instance, errorString);
43
+ parseErrorSent = true;
44
+ }
45
+ });
46
+ }
47
+ if (!parseErrorSent) {
48
+ originalSend.call(instance, data);
49
+ }
50
+ }