jimpex 7.0.2 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/LICENSE +1 -1
  3. package/README.md +446 -434
  4. package/dist/app/index.d.ts +13 -0
  5. package/dist/app/index.js +19 -0
  6. package/dist/app/index.js.map +1 -0
  7. package/dist/app/jimpex.d.ts +13 -0
  8. package/dist/app/jimpex.js +440 -0
  9. package/dist/app/jimpex.js.map +1 -0
  10. package/dist/controllers/common/config.d.ts +78 -0
  11. package/dist/controllers/common/config.js +89 -0
  12. package/dist/controllers/common/config.js.map +1 -0
  13. package/dist/controllers/common/health.d.ts +82 -0
  14. package/dist/controllers/common/health.js +97 -0
  15. package/dist/controllers/common/health.js.map +1 -0
  16. package/dist/controllers/common/index.d.ts +21 -0
  17. package/dist/controllers/common/index.js +21 -0
  18. package/dist/controllers/common/index.js.map +1 -0
  19. package/dist/controllers/common/statics.d.ts +215 -0
  20. package/dist/controllers/common/statics.js +202 -0
  21. package/dist/controllers/common/statics.js.map +1 -0
  22. package/dist/controllers/index.d.ts +24 -0
  23. package/dist/controllers/index.js +20 -0
  24. package/dist/controllers/index.js.map +1 -0
  25. package/dist/controllers/utils/gateway.d.ts +724 -0
  26. package/dist/controllers/utils/gateway.js +425 -0
  27. package/dist/controllers/utils/gateway.js.map +1 -0
  28. package/dist/controllers/utils/index.d.ts +16 -0
  29. package/dist/controllers/utils/index.js +19 -0
  30. package/dist/controllers/utils/index.js.map +1 -0
  31. package/dist/esm/app/index.js +2 -0
  32. package/dist/esm/app/index.js.map +1 -0
  33. package/dist/esm/app/jimpex.js +415 -0
  34. package/dist/esm/app/jimpex.js.map +1 -0
  35. package/dist/esm/chunk-T2T6Q22Z.js +11 -0
  36. package/dist/esm/chunk-T2T6Q22Z.js.map +1 -0
  37. package/dist/esm/controllers/common/config.js +62 -0
  38. package/dist/esm/controllers/common/config.js.map +1 -0
  39. package/dist/esm/controllers/common/health.js +70 -0
  40. package/dist/esm/controllers/common/health.js.map +1 -0
  41. package/dist/esm/controllers/common/index.js +4 -0
  42. package/dist/esm/controllers/common/index.js.map +1 -0
  43. package/dist/esm/controllers/common/statics.js +173 -0
  44. package/dist/esm/controllers/common/statics.js.map +1 -0
  45. package/dist/esm/controllers/index.js +3 -0
  46. package/dist/esm/controllers/index.js.map +1 -0
  47. package/dist/esm/controllers/utils/gateway.js +404 -0
  48. package/dist/esm/controllers/utils/gateway.js.map +1 -0
  49. package/dist/esm/controllers/utils/index.js +2 -0
  50. package/dist/esm/controllers/utils/index.js.map +1 -0
  51. package/dist/esm/index.js +7 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/middlewares/common/errorHandler.js +92 -0
  54. package/dist/esm/middlewares/common/errorHandler.js.map +1 -0
  55. package/dist/esm/middlewares/common/forceHTTPS.js +41 -0
  56. package/dist/esm/middlewares/common/forceHTTPS.js.map +1 -0
  57. package/dist/esm/middlewares/common/hsts.js +53 -0
  58. package/dist/esm/middlewares/common/hsts.js.map +1 -0
  59. package/dist/esm/middlewares/common/index.js +4 -0
  60. package/dist/esm/middlewares/common/index.js.map +1 -0
  61. package/dist/esm/middlewares/html/fastHTML.js +104 -0
  62. package/dist/esm/middlewares/html/fastHTML.js.map +1 -0
  63. package/dist/esm/middlewares/html/index.js +3 -0
  64. package/dist/esm/middlewares/html/index.js.map +1 -0
  65. package/dist/esm/middlewares/html/showHTML.js +68 -0
  66. package/dist/esm/middlewares/html/showHTML.js.map +1 -0
  67. package/dist/esm/middlewares/index.js +4 -0
  68. package/dist/esm/middlewares/index.js.map +1 -0
  69. package/dist/esm/middlewares/utils/index.js +2 -0
  70. package/dist/esm/middlewares/utils/index.js.map +1 -0
  71. package/dist/esm/middlewares/utils/versionValidator.js +101 -0
  72. package/dist/esm/middlewares/utils/versionValidator.js.map +1 -0
  73. package/dist/esm/services/common/appError.js +52 -0
  74. package/dist/esm/services/common/appError.js.map +1 -0
  75. package/dist/esm/services/common/httpError.js +19 -0
  76. package/dist/esm/services/common/httpError.js.map +1 -0
  77. package/dist/esm/services/common/index.js +17 -0
  78. package/dist/esm/services/common/index.js.map +1 -0
  79. package/dist/esm/services/common/sendFile.js +27 -0
  80. package/dist/esm/services/common/sendFile.js.map +1 -0
  81. package/dist/esm/services/frontend/frontendFs.js +38 -0
  82. package/dist/esm/services/frontend/frontendFs.js.map +1 -0
  83. package/dist/esm/services/frontend/index.js +11 -0
  84. package/dist/esm/services/frontend/index.js.map +1 -0
  85. package/dist/esm/services/html/htmlGenerator.js +144 -0
  86. package/dist/esm/services/html/htmlGenerator.js.map +1 -0
  87. package/dist/esm/services/html/index.js +11 -0
  88. package/dist/esm/services/html/index.js.map +1 -0
  89. package/dist/esm/services/http/apiClient.js +71 -0
  90. package/dist/esm/services/http/apiClient.js.map +1 -0
  91. package/dist/esm/services/http/http.js +125 -0
  92. package/dist/esm/services/http/http.js.map +1 -0
  93. package/dist/esm/services/http/index.js +17 -0
  94. package/dist/esm/services/http/index.js.map +1 -0
  95. package/dist/esm/services/http/responsesBuilder.js +105 -0
  96. package/dist/esm/services/http/responsesBuilder.js.map +1 -0
  97. package/dist/esm/services/index.js +6 -0
  98. package/dist/esm/services/index.js.map +1 -0
  99. package/dist/esm/services/utils/ensureBearerToken.js +78 -0
  100. package/dist/esm/services/utils/ensureBearerToken.js.map +1 -0
  101. package/dist/esm/services/utils/index.js +11 -0
  102. package/dist/esm/services/utils/index.js.map +1 -0
  103. package/dist/esm/types/events.js +1 -0
  104. package/dist/esm/types/events.js.map +1 -0
  105. package/dist/esm/types/express.js +1 -0
  106. package/dist/esm/types/express.js.map +1 -0
  107. package/dist/esm/types/http.js +1 -0
  108. package/dist/esm/types/http.js.map +1 -0
  109. package/dist/esm/types/index.js +7 -0
  110. package/dist/esm/types/index.js.map +1 -0
  111. package/dist/esm/types/options.js +1 -0
  112. package/dist/esm/types/options.js.map +1 -0
  113. package/dist/esm/types/utils.js +1 -0
  114. package/dist/esm/types/utils.js.map +1 -0
  115. package/dist/esm/types/wootils.js +1 -0
  116. package/dist/esm/types/wootils.js.map +1 -0
  117. package/dist/esm/utils/fns/index.js +5 -0
  118. package/dist/esm/utils/fns/index.js.map +1 -0
  119. package/dist/esm/utils/fns/others.js +6 -0
  120. package/dist/esm/utils/fns/others.js.map +1 -0
  121. package/dist/esm/utils/fns/routes.js +25 -0
  122. package/dist/esm/utils/fns/routes.js.map +1 -0
  123. package/dist/esm/utils/fns/statuses.js +6 -0
  124. package/dist/esm/utils/fns/statuses.js.map +1 -0
  125. package/dist/esm/utils/fns/text.js +6 -0
  126. package/dist/esm/utils/fns/text.js.map +1 -0
  127. package/dist/esm/utils/index.js +3 -0
  128. package/dist/esm/utils/index.js.map +1 -0
  129. package/dist/esm/utils/wrappers.js +41 -0
  130. package/dist/esm/utils/wrappers.js.map +1 -0
  131. package/dist/index.d.ts +46 -0
  132. package/dist/index.js +24 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/jimpex-7eaee271.d.ts +1278 -0
  135. package/dist/middlewares/common/errorHandler.d.ts +131 -0
  136. package/dist/middlewares/common/errorHandler.js +119 -0
  137. package/dist/middlewares/common/errorHandler.js.map +1 -0
  138. package/dist/middlewares/common/forceHTTPS.d.ts +68 -0
  139. package/dist/middlewares/common/forceHTTPS.js +68 -0
  140. package/dist/middlewares/common/forceHTTPS.js.map +1 -0
  141. package/dist/middlewares/common/hsts.d.ts +109 -0
  142. package/dist/middlewares/common/hsts.js +80 -0
  143. package/dist/middlewares/common/hsts.js.map +1 -0
  144. package/dist/middlewares/common/index.d.ts +21 -0
  145. package/dist/middlewares/common/index.js +21 -0
  146. package/dist/middlewares/common/index.js.map +1 -0
  147. package/dist/middlewares/html/fastHTML.d.ts +180 -0
  148. package/dist/middlewares/html/fastHTML.js +131 -0
  149. package/dist/middlewares/html/fastHTML.js.map +1 -0
  150. package/dist/middlewares/html/index.d.ts +21 -0
  151. package/dist/middlewares/html/index.js +20 -0
  152. package/dist/middlewares/html/index.js.map +1 -0
  153. package/dist/middlewares/html/showHTML.d.ts +127 -0
  154. package/dist/middlewares/html/showHTML.js +95 -0
  155. package/dist/middlewares/html/showHTML.js.map +1 -0
  156. package/dist/middlewares/index.d.ts +30 -0
  157. package/dist/middlewares/index.js +21 -0
  158. package/dist/middlewares/index.js.map +1 -0
  159. package/dist/middlewares/utils/index.d.ts +19 -0
  160. package/dist/middlewares/utils/index.js +19 -0
  161. package/dist/middlewares/utils/index.js.map +1 -0
  162. package/dist/middlewares/utils/versionValidator.d.ts +214 -0
  163. package/dist/middlewares/utils/versionValidator.js +128 -0
  164. package/dist/middlewares/utils/versionValidator.js.map +1 -0
  165. package/dist/services/common/appError.d.ts +138 -0
  166. package/dist/services/common/appError.js +80 -0
  167. package/dist/services/common/appError.js.map +1 -0
  168. package/dist/services/common/httpError.d.ts +79 -0
  169. package/dist/services/common/httpError.js +44 -0
  170. package/dist/services/common/httpError.js.map +1 -0
  171. package/dist/services/common/index.d.ts +47 -0
  172. package/dist/services/common/index.js +41 -0
  173. package/dist/services/common/index.js.map +1 -0
  174. package/dist/services/common/sendFile.d.ts +102 -0
  175. package/dist/services/common/sendFile.js +51 -0
  176. package/dist/services/common/sendFile.js.map +1 -0
  177. package/dist/services/frontend/frontendFs.d.ts +96 -0
  178. package/dist/services/frontend/frontendFs.js +71 -0
  179. package/dist/services/frontend/frontendFs.js.map +1 -0
  180. package/dist/services/frontend/index.d.ts +40 -0
  181. package/dist/services/frontend/index.js +35 -0
  182. package/dist/services/frontend/index.js.map +1 -0
  183. package/dist/services/html/htmlGenerator.d.ts +237 -0
  184. package/dist/services/html/htmlGenerator.js +171 -0
  185. package/dist/services/html/htmlGenerator.js.map +1 -0
  186. package/dist/services/html/index.d.ts +43 -0
  187. package/dist/services/html/index.js +35 -0
  188. package/dist/services/html/index.js.map +1 -0
  189. package/dist/services/http/apiClient.d.ts +169 -0
  190. package/dist/services/http/apiClient.js +96 -0
  191. package/dist/services/http/apiClient.js.map +1 -0
  192. package/dist/services/http/http.d.ts +175 -0
  193. package/dist/services/http/http.js +158 -0
  194. package/dist/services/http/http.js.map +1 -0
  195. package/dist/services/http/index.d.ts +50 -0
  196. package/dist/services/http/index.js +41 -0
  197. package/dist/services/http/index.js.map +1 -0
  198. package/dist/services/http/responsesBuilder.d.ts +178 -0
  199. package/dist/services/http/responsesBuilder.js +132 -0
  200. package/dist/services/http/responsesBuilder.js.map +1 -0
  201. package/dist/services/index.d.ts +33 -0
  202. package/dist/services/index.js +23 -0
  203. package/dist/services/index.js.map +1 -0
  204. package/dist/services/utils/ensureBearerToken.d.ts +157 -0
  205. package/dist/services/utils/ensureBearerToken.js +105 -0
  206. package/dist/services/utils/ensureBearerToken.js.map +1 -0
  207. package/dist/services/utils/index.d.ts +43 -0
  208. package/dist/services/utils/index.js +35 -0
  209. package/dist/services/utils/index.js.map +1 -0
  210. package/dist/types/events.d.ts +13 -0
  211. package/dist/types/events.js +17 -0
  212. package/dist/types/events.js.map +1 -0
  213. package/dist/types/express.d.ts +10 -0
  214. package/dist/types/express.js +17 -0
  215. package/dist/types/express.js.map +1 -0
  216. package/dist/types/http.d.ts +79 -0
  217. package/dist/types/http.js +17 -0
  218. package/dist/types/http.js.map +1 -0
  219. package/dist/types/index.d.ts +14 -0
  220. package/dist/types/index.js +24 -0
  221. package/dist/types/index.js.map +1 -0
  222. package/dist/types/options.d.ts +13 -0
  223. package/dist/types/options.js +17 -0
  224. package/dist/types/options.js.map +1 -0
  225. package/dist/types/utils.d.ts +48 -0
  226. package/dist/types/utils.js +17 -0
  227. package/dist/types/utils.js.map +1 -0
  228. package/dist/types/wootils.d.ts +4 -0
  229. package/dist/types/wootils.js +17 -0
  230. package/dist/types/wootils.js.map +1 -0
  231. package/dist/utils/fns/index.d.ts +5 -0
  232. package/dist/utils/fns/index.js +22 -0
  233. package/dist/utils/fns/index.js.map +1 -0
  234. package/dist/utils/fns/others.d.ts +17 -0
  235. package/dist/utils/fns/others.js +29 -0
  236. package/dist/utils/fns/others.js.map +1 -0
  237. package/dist/utils/fns/routes.d.ts +39 -0
  238. package/dist/utils/fns/routes.js +51 -0
  239. package/dist/utils/fns/routes.js.map +1 -0
  240. package/dist/utils/fns/statuses.d.ts +45 -0
  241. package/dist/utils/fns/statuses.js +35 -0
  242. package/dist/utils/fns/statuses.js.map +1 -0
  243. package/dist/utils/fns/text.d.ts +9 -0
  244. package/dist/utils/fns/text.js +29 -0
  245. package/dist/utils/fns/text.js.map +1 -0
  246. package/dist/utils/index.d.ts +18 -0
  247. package/dist/utils/index.js +20 -0
  248. package/dist/utils/index.js.map +1 -0
  249. package/dist/utils/wrappers.d.ts +13 -0
  250. package/dist/utils/wrappers.js +68 -0
  251. package/dist/utils/wrappers.js.map +1 -0
  252. package/examples/basic/404.html +12 -0
  253. package/examples/basic/README.md +30 -0
  254. package/examples/basic/app.ts +18 -0
  255. package/examples/basic/controller.ts +45 -0
  256. package/examples/basic/index.ts +19 -0
  257. package/examples/basic/middleware.ts +13 -0
  258. package/examples/basic/service.ts +11 -0
  259. package/package.json +59 -38
  260. package/src/app/index.ts +1 -0
  261. package/src/app/jimpex.ts +743 -0
  262. package/src/controllers/common/config.ts +115 -0
  263. package/src/controllers/common/health.ts +128 -0
  264. package/src/controllers/common/index.ts +3 -0
  265. package/src/controllers/common/statics.ts +380 -0
  266. package/src/controllers/index.ts +2 -0
  267. package/src/controllers/utils/gateway.ts +1186 -0
  268. package/src/controllers/utils/index.ts +1 -0
  269. package/src/index.ts +6 -0
  270. package/src/middlewares/common/errorHandler.ts +203 -0
  271. package/src/middlewares/common/forceHTTPS.ts +83 -0
  272. package/src/middlewares/common/hsts.ts +135 -0
  273. package/src/middlewares/common/index.ts +3 -0
  274. package/src/middlewares/html/fastHTML.ts +255 -0
  275. package/src/middlewares/html/index.ts +2 -0
  276. package/src/middlewares/html/showHTML.ts +165 -0
  277. package/src/middlewares/index.ts +3 -0
  278. package/src/middlewares/utils/index.ts +1 -0
  279. package/src/middlewares/utils/versionValidator.ts +289 -0
  280. package/src/services/common/appError.ts +158 -0
  281. package/src/services/common/httpError.ts +74 -0
  282. package/src/services/common/index.ts +29 -0
  283. package/src/services/common/sendFile.ts +106 -0
  284. package/src/services/frontend/frontendFs.ts +101 -0
  285. package/src/services/frontend/index.ts +21 -0
  286. package/src/services/html/htmlGenerator.ts +356 -0
  287. package/src/services/html/index.ts +21 -0
  288. package/src/services/http/apiClient.ts +221 -0
  289. package/src/services/http/http.ts +286 -0
  290. package/src/services/http/index.ts +29 -0
  291. package/src/services/http/responsesBuilder.ts +265 -0
  292. package/src/services/index.ts +5 -0
  293. package/src/services/utils/ensureBearerToken.ts +202 -0
  294. package/src/services/utils/index.ts +21 -0
  295. package/src/types/events.ts +303 -0
  296. package/src/types/express.ts +21 -0
  297. package/src/types/http.ts +77 -0
  298. package/src/types/index.ts +6 -0
  299. package/src/types/options.ts +248 -0
  300. package/src/types/utils.ts +52 -0
  301. package/src/types/wootils.ts +4 -0
  302. package/src/utils/fns/index.ts +4 -0
  303. package/src/utils/fns/others.ts +15 -0
  304. package/src/utils/fns/routes.ts +64 -0
  305. package/src/utils/fns/statuses.ts +44 -0
  306. package/src/utils/fns/text.ts +8 -0
  307. package/src/utils/index.ts +2 -0
  308. package/src/utils/wrappers.ts +537 -0
  309. package/tsconfig.json +5 -8
  310. package/tsup.config.ts +10 -0
  311. package/src/app/index.js +0 -692
  312. package/src/constants/eventNames.js +0 -48
  313. package/src/constants/index.js +0 -7
  314. package/src/controllers/common/configuration.js +0 -116
  315. package/src/controllers/common/health.js +0 -79
  316. package/src/controllers/common/index.js +0 -7
  317. package/src/controllers/common/statics.js +0 -336
  318. package/src/controllers/index.js +0 -9
  319. package/src/controllers/utils/gateway.js +0 -1039
  320. package/src/controllers/utils/index.js +0 -3
  321. package/src/index.js +0 -30
  322. package/src/middlewares/common/errorHandler.js +0 -185
  323. package/src/middlewares/common/forceHTTPS.js +0 -80
  324. package/src/middlewares/common/hsts.js +0 -122
  325. package/src/middlewares/common/index.js +0 -7
  326. package/src/middlewares/html/fastHTML.js +0 -298
  327. package/src/middlewares/html/index.js +0 -5
  328. package/src/middlewares/html/showHTML.js +0 -167
  329. package/src/middlewares/index.js +0 -11
  330. package/src/middlewares/utils/index.js +0 -3
  331. package/src/middlewares/utils/versionValidator.js +0 -261
  332. package/src/services/common/appError.js +0 -136
  333. package/src/services/common/httpError.js +0 -60
  334. package/src/services/common/index.js +0 -25
  335. package/src/services/common/sendFile.js +0 -68
  336. package/src/services/frontend/frontendFs.js +0 -85
  337. package/src/services/frontend/index.js +0 -17
  338. package/src/services/html/htmlGenerator.js +0 -391
  339. package/src/services/html/index.js +0 -17
  340. package/src/services/http/apiClient.js +0 -148
  341. package/src/services/http/http.js +0 -256
  342. package/src/services/http/index.js +0 -25
  343. package/src/services/http/responsesBuilder.js +0 -193
  344. package/src/services/index.js +0 -15
  345. package/src/services/utils/ensureBearerToken.js +0 -147
  346. package/src/services/utils/index.js +0 -19
  347. package/src/types.js +0 -377
  348. package/src/utils/functions.js +0 -78
  349. package/src/utils/wrappers.js +0 -131
  350. package/types/app/index.d.ts +0 -417
  351. package/types/constants/eventNames.d.ts +0 -93
  352. package/types/constants/index.d.ts +0 -2
  353. package/types/controllers/common/configuration.d.ts +0 -71
  354. package/types/controllers/common/health.d.ts +0 -55
  355. package/types/controllers/common/index.d.ts +0 -4
  356. package/types/controllers/common/statics.d.ts +0 -271
  357. package/types/controllers/index.d.ts +0 -3
  358. package/types/controllers/utils/gateway.d.ts +0 -947
  359. package/types/controllers/utils/index.d.ts +0 -2
  360. package/types/index.d.ts +0 -15
  361. package/types/middlewares/common/errorHandler.d.ts +0 -143
  362. package/types/middlewares/common/forceHTTPS.d.ts +0 -64
  363. package/types/middlewares/common/hsts.d.ts +0 -111
  364. package/types/middlewares/common/index.d.ts +0 -4
  365. package/types/middlewares/html/fastHTML.d.ts +0 -238
  366. package/types/middlewares/html/index.d.ts +0 -3
  367. package/types/middlewares/html/showHTML.d.ts +0 -128
  368. package/types/middlewares/index.d.ts +0 -4
  369. package/types/middlewares/utils/index.d.ts +0 -2
  370. package/types/middlewares/utils/versionValidator.d.ts +0 -247
  371. package/types/services/common/appError.d.ts +0 -89
  372. package/types/services/common/httpError.d.ts +0 -37
  373. package/types/services/common/index.d.ts +0 -18
  374. package/types/services/common/sendFile.d.ts +0 -56
  375. package/types/services/frontend/frontendFs.d.ts +0 -72
  376. package/types/services/frontend/index.d.ts +0 -3
  377. package/types/services/html/htmlGenerator.d.ts +0 -298
  378. package/types/services/html/index.d.ts +0 -3
  379. package/types/services/http/apiClient.d.ts +0 -141
  380. package/types/services/http/http.d.ts +0 -159
  381. package/types/services/http/index.d.ts +0 -18
  382. package/types/services/http/responsesBuilder.d.ts +0 -140
  383. package/types/services/index.d.ts +0 -6
  384. package/types/services/utils/ensureBearerToken.d.ts +0 -137
  385. package/types/services/utils/index.d.ts +0 -16
  386. package/types/types.d.ts +0 -280
  387. package/types/utils/functions.d.ts +0 -55
  388. package/types/utils/wrappers.d.ts +0 -127
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A utility function that can be used in `.filter` calls to remove `undefined` values and
3
+ * assert that the type is not longer `undefined`.
4
+ *
5
+ * @param value The value to check.
6
+ * @template T The type that is not `undefined`.
7
+ * @example
8
+ *
9
+ * const arr: (number | undefined)[] = [1, 2, 3, undefined];
10
+ * const filtered = arr.filter(notUndefined);
11
+ * // filtered = [1, 2, 3] and its type is number[]
12
+ *
13
+ * @group Utilities
14
+ */
15
+ declare const notUndefined: <T>(value: T | undefined) => value is T;
16
+
17
+ export { notUndefined };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var others_exports = {};
20
+ __export(others_exports, {
21
+ notUndefined: () => notUndefined
22
+ });
23
+ module.exports = __toCommonJS(others_exports);
24
+ const notUndefined = (value) => value !== void 0;
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ notUndefined
28
+ });
29
+ //# sourceMappingURL=others.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/fns/others.ts"],"sourcesContent":["/**\n * A utility function that can be used in `.filter` calls to remove `undefined` values and\n * assert that the type is not longer `undefined`.\n *\n * @param value The value to check.\n * @template T The type that is not `undefined`.\n * @example\n *\n * const arr: (number | undefined)[] = [1, 2, 3, undefined];\n * const filtered = arr.filter(notUndefined);\n * // filtered = [1, 2, 3] and its type is number[]\n *\n * @group Utilities\n */\nexport const notUndefined = <T>(value: T | undefined): value is T => value !== undefined;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAcO,MAAM,eAAe,CAAI,UAAqC,UAAU;","names":[]}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Removes any leading slash from a URL.
3
+ *
4
+ * @param url The URL to format.
5
+ * @group Utilities
6
+ */
7
+ declare const removeLeadingSlash: (url: string) => string;
8
+ /**
9
+ * Removes any trailing slash from a URL.
10
+ *
11
+ * @param url The URL to format.
12
+ * @group Utilities
13
+ */
14
+ declare const removeTrailingSlash: (url: string) => string;
15
+ /**
16
+ * Remove any leading and trailing slash from a URL.
17
+ *
18
+ * @param url The URL to format.
19
+ * @param leading Whether or not to remove any leading slash.
20
+ * @param trailing Whether or not to remove the trailing slash.
21
+ * @group Utilities
22
+ */
23
+ declare const removeSlashes: (url: string, leading?: boolean, trailing?: boolean) => string;
24
+ /**
25
+ * Given a server route definition, this function creates a regular expression to match
26
+ * it: The expression replaces the routes parameters with placeholders so it can be
27
+ * compared with real routes.
28
+ *
29
+ * @param route The route from which the expression will be created.
30
+ * @param leadingSlash Whether or not the expression should match a leading slash.
31
+ * @param trailingSlash Whether or not the expression should match a trailing slash.
32
+ * The reason this is `false` by default is because these
33
+ * expressions are often used to match against incoming requests,
34
+ * and they don't have a trailing slash.
35
+ * @group Utilities
36
+ */
37
+ declare const createRouteExpression: (route: string, leadingSlash?: boolean, trailingSlash?: boolean) => RegExp;
38
+
39
+ export { createRouteExpression, removeLeadingSlash, removeSlashes, removeTrailingSlash };
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var routes_exports = {};
20
+ __export(routes_exports, {
21
+ createRouteExpression: () => createRouteExpression,
22
+ removeLeadingSlash: () => removeLeadingSlash,
23
+ removeSlashes: () => removeSlashes,
24
+ removeTrailingSlash: () => removeTrailingSlash
25
+ });
26
+ module.exports = __toCommonJS(routes_exports);
27
+ var import_text = require("./text");
28
+ const removeLeadingSlash = (url) => url.replace(/^\/+/, "");
29
+ const removeTrailingSlash = (url) => url.replace(/\/+$/, "");
30
+ const removeSlashes = (url, leading = true, trailing = true) => {
31
+ const newUrl = leading ? removeLeadingSlash(url) : url;
32
+ return trailing ? removeTrailingSlash(newUrl) : newUrl;
33
+ };
34
+ const createRouteExpression = (route, leadingSlash = true, trailingSlash = false) => {
35
+ let expression = removeSlashes(route).split("/").map((part) => part.startsWith(":") ? "(?:([^\\/]+?))" : (0, import_text.escapeForRegExp)(part)).join("\\/");
36
+ if (leadingSlash) {
37
+ expression = `\\/${expression}`;
38
+ }
39
+ if (trailingSlash) {
40
+ expression = `${expression}\\/`;
41
+ }
42
+ return new RegExp(expression);
43
+ };
44
+ // Annotate the CommonJS export names for ESM import in node:
45
+ 0 && (module.exports = {
46
+ createRouteExpression,
47
+ removeLeadingSlash,
48
+ removeSlashes,
49
+ removeTrailingSlash
50
+ });
51
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/fns/routes.ts"],"sourcesContent":["import { escapeForRegExp } from './text';\n\n/**\n * Removes any leading slash from a URL.\n *\n * @param url The URL to format.\n * @group Utilities\n */\nexport const removeLeadingSlash = (url: string): string => url.replace(/^\\/+/, '');\n/**\n * Removes any trailing slash from a URL.\n *\n * @param url The URL to format.\n * @group Utilities\n */\nexport const removeTrailingSlash = (url: string): string => url.replace(/\\/+$/, '');\n/**\n * Remove any leading and trailing slash from a URL.\n *\n * @param url The URL to format.\n * @param leading Whether or not to remove any leading slash.\n * @param trailing Whether or not to remove the trailing slash.\n * @group Utilities\n */\nexport const removeSlashes = (\n url: string,\n leading: boolean = true,\n trailing: boolean = true,\n) => {\n const newUrl = leading ? removeLeadingSlash(url) : url;\n return trailing ? removeTrailingSlash(newUrl) : newUrl;\n};\n\n/**\n * Given a server route definition, this function creates a regular expression to match\n * it: The expression replaces the routes parameters with placeholders so it can be\n * compared with real routes.\n *\n * @param route The route from which the expression will be created.\n * @param leadingSlash Whether or not the expression should match a leading slash.\n * @param trailingSlash Whether or not the expression should match a trailing slash.\n * The reason this is `false` by default is because these\n * expressions are often used to match against incoming requests,\n * and they don't have a trailing slash.\n * @group Utilities\n */\nexport const createRouteExpression = (\n route: string,\n leadingSlash: boolean = true,\n trailingSlash: boolean = false,\n): RegExp => {\n let expression = removeSlashes(route)\n .split('/')\n .map((part) => (part.startsWith(':') ? '(?:([^\\\\/]+?))' : escapeForRegExp(part)))\n .join('\\\\/');\n if (leadingSlash) {\n expression = `\\\\/${expression}`;\n }\n if (trailingSlash) {\n expression = `${expression}\\\\/`;\n }\n\n return new RegExp(expression);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAgC;AAQzB,MAAM,qBAAqB,CAAC,QAAwB,IAAI,QAAQ,QAAQ,EAAE;AAO1E,MAAM,sBAAsB,CAAC,QAAwB,IAAI,QAAQ,QAAQ,EAAE;AAS3E,MAAM,gBAAgB,CAC3B,KACA,UAAmB,MACnB,WAAoB,SACjB;AACH,QAAM,SAAS,UAAU,mBAAmB,GAAG,IAAI;AACnD,SAAO,WAAW,oBAAoB,MAAM,IAAI;AAClD;AAeO,MAAM,wBAAwB,CACnC,OACA,eAAwB,MACxB,gBAAyB,UACd;AACX,MAAI,aAAa,cAAc,KAAK,EACjC,MAAM,GAAG,EACT,IAAI,CAAC,SAAU,KAAK,WAAW,GAAG,IAAI,uBAAmB,6BAAgB,IAAI,CAAE,EAC/E,KAAK,KAAK;AACb,MAAI,cAAc;AAChB,iBAAa,MAAM;AAAA,EACrB;AACA,MAAI,eAAe;AACjB,iBAAa,GAAG;AAAA,EAClB;AAEA,SAAO,IAAI,OAAO,UAAU;AAC9B;","names":[]}
@@ -0,0 +1,45 @@
1
+ export { default as statuses } from 'statuses';
2
+
3
+ /**
4
+ * The type definitions for the `statuses` library.
5
+ *
6
+ * While the library has type definitions, TypeScript throws an error that they can't be
7
+ * exported, so that's why they are copied in there.
8
+ */
9
+ type Statuses = {
10
+ /**
11
+ * Given a status code, returns the status text, and given a status text, returns the
12
+ * status code.
13
+ *
14
+ * @param code The status code or status text to look up.
15
+ * @throws If the status is invalid.
16
+ */
17
+ (code: number | string): number | string;
18
+ /**
19
+ * A list of all the supported status codes.
20
+ */
21
+ codes: number[];
22
+ /**
23
+ * A dictionary with the status texts and their corresponding status codes.
24
+ */
25
+ code: Record<string, number | undefined>;
26
+ /**
27
+ * A dictionary with the status codes and their corresponding status texts, for
28
+ * responses that expect an empty body.
29
+ */
30
+ empty: Record<number, boolean | undefined>;
31
+ /**
32
+ * A dictionary with the status codes and their corresponding status texts.
33
+ */
34
+ message: Record<number, string | undefined>;
35
+ /**
36
+ * A dictionary with status codes for responses that are valid for redirections.
37
+ */
38
+ redirect: Record<number, boolean | undefined>;
39
+ /**
40
+ * A dictionary with status codes that should be retried.
41
+ */
42
+ retry: Record<number, boolean | undefined>;
43
+ };
44
+
45
+ export { Statuses };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var statuses_exports = {};
26
+ __export(statuses_exports, {
27
+ statuses: () => import_statuses.default
28
+ });
29
+ module.exports = __toCommonJS(statuses_exports);
30
+ var import_statuses = __toESM(require("statuses"));
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ statuses
34
+ });
35
+ //# sourceMappingURL=statuses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/fns/statuses.ts"],"sourcesContent":["import statuses from 'statuses';\n/**\n * The type definitions for the `statuses` library.\n *\n * While the library has type definitions, TypeScript throws an error that they can't be\n * exported, so that's why they are copied in there.\n */\nexport type Statuses = {\n /**\n * Given a status code, returns the status text, and given a status text, returns the\n * status code.\n *\n * @param code The status code or status text to look up.\n * @throws If the status is invalid.\n */\n (code: number | string): number | string;\n /**\n * A list of all the supported status codes.\n */\n codes: number[];\n /**\n * A dictionary with the status texts and their corresponding status codes.\n */\n code: Record<string, number | undefined>;\n /**\n * A dictionary with the status codes and their corresponding status texts, for\n * responses that expect an empty body.\n */\n empty: Record<number, boolean | undefined>;\n /**\n * A dictionary with the status codes and their corresponding status texts.\n */\n message: Record<number, string | undefined>;\n /**\n * A dictionary with status codes for responses that are valid for redirections.\n */\n redirect: Record<number, boolean | undefined>;\n /**\n * A dictionary with status codes that should be retried.\n */\n retry: Record<number, boolean | undefined>;\n};\n\nexport { statuses };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,kCAAAA;AAAA;AAAA;AAAA,sBAAqB;","names":["statuses"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Escapes a string to be used on `new RegExp(...)`.
3
+ *
4
+ * @param text The text to escape.
5
+ * @group Utilities
6
+ */
7
+ declare const escapeForRegExp: (text: string) => string;
8
+
9
+ export { escapeForRegExp };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var text_exports = {};
20
+ __export(text_exports, {
21
+ escapeForRegExp: () => escapeForRegExp
22
+ });
23
+ module.exports = __toCommonJS(text_exports);
24
+ const escapeForRegExp = (text) => text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ escapeForRegExp
28
+ });
29
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/fns/text.ts"],"sourcesContent":["/**\n * Escapes a string to be used on `new RegExp(...)`.\n *\n * @param text The text to escape.\n * @group Utilities\n */\nexport const escapeForRegExp = (text: string): string =>\n text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,kBAAkB,CAAC,SAC9B,KAAK,QAAQ,4BAA4B,MAAM;","names":[]}
@@ -0,0 +1,18 @@
1
+ export { notUndefined } from './fns/others.js';
2
+ export { createRouteExpression, removeLeadingSlash, removeSlashes, removeTrailingSlash } from './fns/routes.js';
3
+ export { Statuses } from './fns/statuses.js';
4
+ export { escapeForRegExp } from './fns/text.js';
5
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../jimpex-7eaee271.js';
6
+ export { default as statuses } from 'statuses';
7
+ import '@homer0/jimple';
8
+ import '@homer0/events-hub';
9
+ import '../types/express.js';
10
+ import 'express';
11
+ import '../types/http.js';
12
+ import 'https';
13
+ import 'http';
14
+ import 'spdy';
15
+ import 'node-fetch';
16
+ import '@homer0/simple-config';
17
+ import '../types/utils.js';
18
+ import '@homer0/simple-logger';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var utils_exports = {};
17
+ module.exports = __toCommonJS(utils_exports);
18
+ __reExport(utils_exports, require("./fns"), module.exports);
19
+ __reExport(utils_exports, require("./wrappers"), module.exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './fns';\nexport * from './wrappers';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,kBAAd;AACA,0BAAc,uBADd;","names":[]}
@@ -0,0 +1,13 @@
1
+ import '@homer0/jimple';
2
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from '../jimpex-7eaee271.js';
3
+ import '../types/express.js';
4
+ import '../types/utils.js';
5
+ import 'express';
6
+ import '@homer0/events-hub';
7
+ import '../types/http.js';
8
+ import 'https';
9
+ import 'http';
10
+ import 'spdy';
11
+ import 'node-fetch';
12
+ import '@homer0/simple-config';
13
+ import '@homer0/simple-logger';
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var wrappers_exports = {};
20
+ __export(wrappers_exports, {
21
+ controller: () => controller,
22
+ controllerCreator: () => controllerCreator,
23
+ controllerProvider: () => controllerProvider,
24
+ controllerProviderCreator: () => controllerProviderCreator,
25
+ middleware: () => middleware,
26
+ middlewareCreator: () => middlewareCreator,
27
+ middlewareProvider: () => middlewareProvider,
28
+ middlewareProviderCreator: () => middlewareProviderCreator,
29
+ provider: () => provider,
30
+ providerCreator: () => providerCreator,
31
+ providers: () => providers
32
+ });
33
+ module.exports = __toCommonJS(wrappers_exports);
34
+ var import_jimple = require("@homer0/jimple");
35
+ const provider = (0, import_jimple.createProvider)();
36
+ const providerCreator = (0, import_jimple.createProviderCreator)();
37
+ const providers = (0, import_jimple.createProviders)();
38
+ const controllerFactory = (0, import_jimple.resourceFactory)();
39
+ const controller = (connect) => controllerFactory("controller", "connect", connect);
40
+ const controllerCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
41
+ const controllerCreator = (creator) => controllerCreatorFactory("controller", "connect", creator);
42
+ const controllerProviderFactory = (0, import_jimple.resourceFactory)();
43
+ const controllerProvider = (register) => controllerProviderFactory("provider", "register", register);
44
+ const controllerProviderCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
45
+ const controllerProviderCreator = (creator) => controllerProviderCreatorFactory("provider", "register", creator);
46
+ const middlewareFactory = (0, import_jimple.resourceFactory)();
47
+ const middleware = (connect) => middlewareFactory("middleware", "connect", connect);
48
+ const middlewareCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
49
+ const middlewareCreator = (creator) => middlewareCreatorFactory("middleware", "connect", creator);
50
+ const middlewareProviderFactory = (0, import_jimple.resourceFactory)();
51
+ const middlewareProvider = (register) => middlewareProviderFactory("provider", "register", register);
52
+ const middlewareProviderCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
53
+ const middlewareProviderCreator = (creator) => middlewareProviderCreatorFactory("provider", "register", creator);
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ controller,
57
+ controllerCreator,
58
+ controllerProvider,
59
+ controllerProviderCreator,
60
+ middleware,
61
+ middlewareCreator,
62
+ middlewareProvider,
63
+ middlewareProviderCreator,
64
+ provider,
65
+ providerCreator,
66
+ providers
67
+ });
68
+ //# sourceMappingURL=wrappers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/wrappers.ts"],"sourcesContent":["import {\n createProvider,\n createProviderCreator,\n createProviders,\n resourceFactory,\n type ProviderRegisterFn as OriginalProviderRegisterFn,\n type GenericCurriedFn,\n resourceCreatorFactory,\n} from '@homer0/jimple';\nimport type { Jimpex } from '../app';\nimport type { Router, ExpressMiddlewareLike, NoStringIndex } from '../types';\n/**\n * The function a provider uses to configure a resource in the container.\n *\n * @group Wrappers\n */\nexport type ProviderRegisterFn = OriginalProviderRegisterFn<Jimpex>;\n/**\n * Creates an object that can configure/extend the container by registering services and\n * resources.\n *\n * @example\n *\n * class APIClient {}\n * const apiClientProvider = provider((app) => {\n * app.set('apiClient', () => new APIClient());\n * });\n *\n * @group Wrappers\n */\nexport const provider = createProvider<Jimpex>();\n/**\n * Creates an object like a provider, but that it can also be used as a function, as it\n * normally expose options for the resources it will configure.\n *\n * @example\n *\n * <caption>Registering as a common provider</caption>\n *\n * const apiClientProvider = providerCreator(\n * ({ serviceName = 'apiClient' }) =>\n * (app) => {\n * app.set(serviceName, () => new APIClient());\n * },\n * );\n *\n * container.register(apiClientProvider);\n *\n * @example\n *\n * <caption>Registering a created provider</caption>\n *\n * container.register(\n * apiClientProvider({\n * serviceName: 'myApiClient',\n * }),\n * );\n *\n * @group Wrappers\n */\nexport const providerCreator = createProviderCreator<Jimpex>();\n/**\n * Creates a collection of providers that can be registered one by one, or all at once.\n *\n * @example\n *\n * <caption>Registering all the providers at once</caption>\n *\n * const collection = providers({\n * apiClient: apiClientProvider,\n * http: httpProvider,\n * });\n *\n * container.register(collection);\n *\n * @example\n *\n * <caption>Registering one by one</caption>\n *\n * container.register(collection.http);\n *\n * @group Wrappers\n */\nexport const providers = createProviders<Jimpex>();\n/**\n * An object that can configure/extend the container by registering services and\n * resources.\n *\n * @group Wrappers\n */\nexport type Provider = ReturnType<typeof provider>;\n/**\n * A provider creator is like a provider, but it can also be used as a function, and it\n * expose options for the resources it will configure.\n *\n * @group Wrappers\n */\nexport type ProviderCreator = ReturnType<typeof providerCreator>;\n/**\n * A collection of providers that can be registered one by one, or all at once.\n *\n * @group Wrappers\n */\nexport type Providers = ReturnType<typeof providers>;\n/**\n * A union of all types that can be registered in the provider with a `register` function.\n *\n * @group Wrappers\n */\nexport type ProviderLike = Provider | ProviderCreator | Providers;\n\n// --\n/**\n * The function a controller uses to mount a controller/middleware in the container.\n *\n * @param container The reference to the Jimpex container.\n * @param route The route on which the controller will be mounted on.\n * @group Wrappers\n */\nexport type ControllerConnectFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route: string,\n) => Router | ExpressMiddlewareLike;\n\nconst controllerFactory = resourceFactory<ControllerConnectFn>();\n/**\n * Generates a routes controller for the application container to mount.\n *\n * @param connect A function that will be called the moment the application mounts the\n * controller, and that is in charge of registering routes and\n * middlewares.\n * @example\n *\n * const myController = controller((app) => {\n * const router = app.getRouter();\n * const ctrl = new MyController();\n * return router.get('...', ctrl.doSomething()).post('...', ctrl.doSomethingElse());\n * });\n *\n * // ...\n * container.mount('/charo', myController);\n *\n * @group Wrappers\n */\nexport const controller = (connect: ControllerConnectFn) =>\n controllerFactory('controller', 'connect', connect);\n/**\n * A high order function that generates a controller. It's used on the definitions of a\n * controller creator.\n *\n * @group Wrappers\n */\nexport type ControllerCreatorFn = GenericCurriedFn<ControllerConnectFn>;\nconst controllerCreatorFactory = resourceCreatorFactory<ControllerConnectFn>();\n/**\n * Generates a configurable routes controller for the application to mount. It's\n * configurable because the `creator`, instead of just being sent to the container to\n * mount, it can also be called as a function with custom parameters the controller can\n * receive.\n *\n * @param creator A function that will generate a controller.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myController = controllerCreator((options = {}) => (app) => {\n * const router = app.getRouter();\n * const ctrl = new MyController(options);\n * return router.get('...', ctrl.doSomething()).post('...', ctrl.doSomethingElse());\n * });\n *\n * // ...\n * container.mount('/charo', myController);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.mount('/pili', myController({ foo: 'bar' }));\n *\n * @group Wrappers\n */\nexport const controllerCreator = <CreatorFn extends ControllerCreatorFn>(\n creator: CreatorFn,\n) => controllerCreatorFactory('controller', 'connect', creator);\n/**\n * A resource that will define middlewares for specific routes.\n *\n * @group Wrappers\n */\nexport type Controller = ReturnType<typeof controller>;\n/**\n * A controller creator is like a controller, but it can also be used as a function, and\n * it can receive custom parameters to configure its behavior.\n *\n * @group Wrappers\n */\nexport type ControllerCreator = ReturnType<typeof controllerCreator>;\n\n// --\n/**\n * The function a controller provider uses to configure/extend the container before\n * returning an actual controller.\n *\n * @param container The reference to the Jimpex container.\n * @param route The route on which the controller will be mounted on.\n * @group Wrappers\n */\nexport type ControllerProviderRegisterFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route: string,\n) => Controller;\n\nconst controllerProviderFactory = resourceFactory<ControllerProviderRegisterFn>();\n/**\n * Creates a \"controller provider\", which is a controller that can configure/extend the\n * container before the application mounts it.\n *\n * @param register A function that will be called the moment the application mounts\n * the controller provider.\n * @example\n *\n * class MyController {}\n * const myControllerProvider = controllerProvider((app) => {\n * app.set('myController', () => new MyController());\n * return controller(() => {\n * const ctrl = app.get<MyController>('myController');\n * const router = app.getRouter();\n * return router.get('/', ctrl.doSomething());\n * });\n * });\n *\n * @group Wrappers\n */\nexport const controllerProvider = (register: ControllerProviderRegisterFn) =>\n controllerProviderFactory('provider', 'register', register);\n/**\n * A high order function that generates a controller provider. It's used on the\n * definitions of a controller provider creator.\n *\n * @group Wrappers\n */\nexport type ControllerProviderCreatorFn = GenericCurriedFn<ControllerProviderRegisterFn>;\nconst controllerProviderCreatorFactory =\n resourceCreatorFactory<ControllerProviderRegisterFn>();\n/**\n * Generates a configurable controller provider for the application to mount. This is a\n * mix of a controller creator and a controller provider: it gives you the flexibility of\n * the creator, with the resources of the provider.\n *\n * @param creator A function that will generate a controller provider.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * class MyController {}\n * const myControllerProvider = controllerProviderCreator(\n * ({ serviceName = 'myController' }) =>\n * (app) => {\n * app.set(serviceName, () => new MyController());\n * return controller(() => {\n * const ctrl = app.get<MyController>(serviceName);\n * const router = app.getRouter();\n * return router.get('/', ctrl.doSomething());\n * });\n * },\n * );\n *\n * // ...\n * container.mount('/charo', myControllerProvider);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.mount('/pili', myControllerProvider({ serviceName: 'something' }));\n *\n * @group Wrappers\n */\nexport const controllerProviderCreator = <CreatorFn extends ControllerProviderCreatorFn>(\n creator: CreatorFn,\n) => controllerProviderCreatorFactory('provider', 'register', creator);\n/**\n * A special kind of controller that can be used to configure/extend the container before\n * returning an actual controller.\n *\n * @group Wrappers\n */\nexport type ControllerProvider = ReturnType<typeof controllerProvider>;\n/**\n * A \"creator version\" of a controller provider: a controller that can be used to\n * configure/extend the container before returning an actual controller, but that can also\n * be called as a function, and it can receive custom parameters to configure its\n * behavior.\n *\n * @group Wrappers\n */\nexport type ControllerProviderCreator = ReturnType<typeof controllerProviderCreator>;\n\n// --\n/**\n * The function a middleware uses to mount itself in the container.\n *\n * @param container The reference to the Jimpex container.\n * @param route This is optional because the implementation can use it as a\n * \"global widdleware\", or for a specific route.\n * @returns The resource can choose to be enabled or not by returning the function, or\n * `undefined`.\n * @group Wrappers\n */\nexport type MiddlewareConnectFn = <ContainerType extends Jimpex = Jimpex>(\n app: ContainerType,\n route?: string,\n) => Router | ExpressMiddlewareLike | undefined;\n\nconst middlewareFactory = resourceFactory<MiddlewareConnectFn>();\n/**\n * Generates a middleware for the application container to mount.\n *\n * @param connect A function that will be called the moment the application tries to\n * mount the middleware.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myMiddleware = controller((app) => {\n * const responsesBuilder = app.get<ResponsesBuilder>('responsesBuilder');\n * return (_, res) => {\n * responsesBuilder.json({ res, data: { hello: 'world' } });\n * };\n * });\n *\n * // ...\n * container.use(myMiddleware);\n *\n * @example\n *\n * <caption>On a specific route</caption>\n *\n * container.mount('/charo', myMiddleware);\n *\n * @group Wrappers\n */\nexport const middleware = (connect: MiddlewareConnectFn) =>\n middlewareFactory('middleware', 'connect', connect);\n/**\n * A high order function that generates a middleware. It's used on the definitions of a\n * middleware creator.\n *\n * @group Wrappers\n */\nexport type MiddlewareCreatorFn = GenericCurriedFn<MiddlewareConnectFn>;\nconst middlewareCreatorFactory = resourceCreatorFactory<MiddlewareConnectFn>();\n/**\n * Generates a configurable middleware for the application to use. It's configurable\n * because the `creator`, instead of just being sent to the container to mount, it can\n * also be called as a function with custom parameters the middleware can receive.\n *\n * @param creator A function that will generate a middleware.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * const myMiddleware = middlewareCreator((options = {}) => (app) => {\n * const message = options.message || 'Hello Charo!';\n * const responsesBuilder = app.get<ResponsesBuilder>('responsesBuilder');\n * return (_, res) => {\n * responsesBuilder.json({ res, data: { message } });\n * };\n * });\n *\n * // ...\n * container.use(myMiddleware);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.use(myMiddleware({ message: 'Hello Pili!' }));\n *\n * @group Wrappers\n */\nexport const middlewareCreator = <CreatorFn extends MiddlewareCreatorFn>(\n creator: CreatorFn,\n) => middlewareCreatorFactory('middleware', 'connect', creator);\n/**\n * A resource that will define middlewares the application can use.\n *\n * @group Wrappers\n */\nexport type Middleware = ReturnType<typeof middleware>;\n/**\n * A middleware creator is like a middleware, but i can also be used as a function, and it\n * can receive custom parameters to configure its behavior.\n *\n * @group Wrappers\n */\nexport type MiddlewareCreator = ReturnType<typeof middlewareCreator>;\n\n// --\n/**\n * The function a middelware provider uses to configure/extend the container before\n * returning an actual middleware.\n *\n * @param container The reference to the Jimpex container.\n * @param route This is available only in the case the middleware is mounted on a\n * specific route.\n * @group Wrappers\n */\nexport type MiddlewareProviderRegisterFn = <ContainerType extends Jimpex = Jimpex>(\n container: ContainerType,\n route?: string,\n) => Middleware;\nconst middlewareProviderFactory = resourceFactory<MiddlewareProviderRegisterFn>();\n/**\n * Creates a \"middleware provider\", which is a middleware that can configure/extend the\n * container before the application uses it.\n *\n * @param register A function that will be called the moment the application uses the\n * middleware provider.\n * @example\n *\n * class MyServiceWithMiddleware {\n * constructor(private readonly responsesBuilder: ResponsesBuilder) {}\n * getMiddleware() {\n * return (_, res) => {\n * this.responsesBuilder.json({ res, data: { message } });\n * };\n * }\n * }\n *\n * const myMiddlewareProvider = middlewareProvider((app) => {\n * app.set(\n * 'myMiddleware',\n * () => new MyServiceWithMiddleware(app.get('responsesBuilder')),\n * );\n * return middleware(() =>\n * app.get<MyServiceWithMiddleware>('myMiddleware').getMiddleware(),\n * );\n * });\n *\n * @group Wrappers\n */\nexport const middlewareProvider = (register: MiddlewareProviderRegisterFn) =>\n middlewareProviderFactory('provider', 'register', register);\n/**\n * A high order function that generates a middleware provider. It's used on the\n * definitions of a middleware provider creator.\n *\n * @group Wrappers\n */\nexport type MiddlewareProviderCreatorFn = GenericCurriedFn<MiddlewareProviderRegisterFn>;\nconst middlewareProviderCreatorFactory =\n resourceCreatorFactory<MiddlewareProviderRegisterFn>();\n/**\n * Generates a configurable middleware provider for the application to use. This is a mix\n * of a middleware creator and a middleware provider: it gives you the flexibility of the\n * creator, with the resources of the provider.\n *\n * @param creator A function that will generate a middleware provider.\n * @example\n *\n * <caption>Basic usage</caption>\n *\n * class MyServiceWithMiddleware {\n * constructor(private readonly responsesBuilder: ResponsesBuilder) {}\n * getMiddleware() {\n * return (_, res) => {\n * this.responsesBuilder.json({ res, data: { message } });\n * };\n * }\n * }\n * const myMiddlewareProvider = middlewareProviderCreator(\n * ({ serviceName = 'myMiddleware' }) =>\n * (app) => {\n * app.set(\n * serviceName,\n * () => new MyServiceWithMiddleware(app.get('responsesBuilder')),\n * );\n * return middleware(() =>\n * app.get<MyServiceWithMiddleware>(serviceName).getMiddleware(),\n * );\n * },\n * );\n *\n * // ...\n * container.use(myMiddlewareProvider);\n *\n * @example\n *\n * <caption>Custom parameters</caption>\n *\n * container.use(myMiddlewareProvider({ serviceName: 'something' }));\n *\n * @group Wrappers\n */\nexport const middlewareProviderCreator = <CreatorFn extends MiddlewareProviderCreatorFn>(\n creator: CreatorFn,\n) => middlewareProviderCreatorFactory('provider', 'register', creator);\n/**\n * A special kind of middleware that can be used to configure/extend the container before\n * returning an actual middleware.\n *\n * @group Wrappers\n */\nexport type MiddlewareProvider = ReturnType<typeof middlewareProvider>;\n/**\n * A \"creator version\" of a middleware provider: a middleware that can be used to\n * configure/extend the container before returning an actual middleware, but that can also\n * be called as a function, and it can receive custom parameters to configure its\n * behavior.\n *\n * @group Wrappers\n */\nexport type MiddlewareProviderCreator = ReturnType<typeof middlewareProviderCreator>;\n\n// --\n/**\n * A union types of the different kinds of middlewares that can be used by the\n * application.\n *\n * @group Wrappers\n */\nexport type MiddlewareLike =\n | NoStringIndex<Middleware>\n | NoStringIndex<MiddlewareProvider>\n | ExpressMiddlewareLike;\n/**\n * A union types of the different kinds of controllers that can be mounted by the\n * application.\n *\n * @group Wrappers\n */\nexport type ControllerLike =\n | NoStringIndex<Controller>\n | NoStringIndex<ControllerProvider>\n | MiddlewareLike;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAQO;AAsBA,MAAM,eAAW,8BAAuB;AA8BxC,MAAM,sBAAkB,qCAA8B;AAuBtD,MAAM,gBAAY,+BAAwB;AAyCjD,MAAM,wBAAoB,+BAAqC;AAoBxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,+BAA2B,sCAA4C;AA6BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,gCAA4B,+BAA8C;AAqBzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,uCACJ,sCAAqD;AAmChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;AAkCrE,MAAM,wBAAoB,+BAAqC;AA4BxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,+BAA2B,sCAA4C;AA8BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,gCAA4B,+BAA8C;AA8BzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,uCACJ,sCAAqD;AA2ChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;","names":[]}
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Jimpex - Not found</title>
8
+ </head>
9
+ <body>
10
+ Nothing here :D
11
+ </body>
12
+ </html>
@@ -0,0 +1,30 @@
1
+ # Jimpex basic example
2
+
3
+ This is a very small app with one service, one middleware, and one controller.
4
+
5
+ ## Service
6
+
7
+ The `DateService` only has a `now()` method and returns a new instance of `Date`.
8
+
9
+ ## Middleware
10
+
11
+ Every time there's an incoming request, the middleware uses the data obtained from the service, to log a message.
12
+
13
+ ## Controller
14
+
15
+ The controller, mounted on `/date`, has two routes:
16
+
17
+ - `/` returns the current date.
18
+ - `/info` returns the current date and the current time.
19
+
20
+ ## Other Jimpex features
21
+
22
+ If you read the `app.ts` file, you'll se a few other features of Jimpex:
23
+
24
+ ### Health controller
25
+
26
+ This controller is mounted in the root route and just returns a `200` status code.
27
+
28
+ ### Fast HTML middleware
29
+
30
+ This middleware serves a `404.html` file whenever a request is made for a route that has no controller/middleware mounted.
@@ -0,0 +1,18 @@
1
+ import { jimpex, healthController, fastHTMLMiddleware } from '../../src';
2
+ import { dateServiceProvider } from './service';
3
+ import { dateMiddleware } from './middleware';
4
+ import { dateController } from './controller';
5
+
6
+ const app = jimpex();
7
+ app.register(dateServiceProvider);
8
+
9
+ app.use(dateMiddleware);
10
+ app.mount('/', healthController);
11
+ app.use(
12
+ fastHTMLMiddleware({
13
+ file: '404.html',
14
+ }),
15
+ );
16
+ app.mount('/date', dateController);
17
+
18
+ export { app };
@@ -0,0 +1,45 @@
1
+ import {
2
+ controller,
3
+ type ExpressMiddleware,
4
+ type ResponsesBuilder,
5
+ type Router,
6
+ } from '../../src';
7
+ import type { DateService } from './service';
8
+
9
+ class DateController {
10
+ constructor(
11
+ private readonly dateService: DateService,
12
+ private readonly responsesBuilder: ResponsesBuilder,
13
+ ) {}
14
+
15
+ showNow(): ExpressMiddleware {
16
+ return (_, res) => {
17
+ this.responsesBuilder.json({
18
+ res,
19
+ data: {
20
+ now: this.dateService.now(),
21
+ },
22
+ });
23
+ };
24
+ }
25
+
26
+ showInfo(): ExpressMiddleware {
27
+ return (_, res) => {
28
+ const now = this.dateService.now();
29
+ const [date, time] = now.toISOString().split('T');
30
+ this.responsesBuilder.json({
31
+ res,
32
+ data: {
33
+ date,
34
+ time,
35
+ },
36
+ });
37
+ };
38
+ }
39
+ }
40
+
41
+ export const dateController = controller((app) => {
42
+ const router = app.get<Router>('router');
43
+ const ctrl = new DateController(app.get('date'), app.get('responsesBuilder'));
44
+ return router.get('/', ctrl.showNow()).get('/info', ctrl.showInfo());
45
+ });
@@ -0,0 +1,19 @@
1
+ import { jimpex, healthController, fastHTMLMiddleware } from '../../src';
2
+ import { dateServiceProvider } from './service';
3
+ import { dateMiddleware } from './middleware';
4
+ import { dateController } from './controller';
5
+
6
+ const PORT = 2509;
7
+ const app = jimpex();
8
+ app.register(dateServiceProvider);
9
+
10
+ app.use(dateMiddleware);
11
+ app.mount('/', healthController);
12
+ app.use(
13
+ fastHTMLMiddleware({
14
+ file: '404.html',
15
+ }),
16
+ );
17
+ app.mount('/date', dateController);
18
+
19
+ app.listen(PORT);
@@ -0,0 +1,13 @@
1
+ import { middleware, type ExpressMiddleware, type Logger } from '../../src';
2
+ import type { DateService } from './service';
3
+
4
+ export const dateMiddleware = middleware((app) => {
5
+ const logger = app.get<Logger>('logger');
6
+ const service = app.get<DateService>('date');
7
+ const mdw: ExpressMiddleware = (_, __, next) => {
8
+ logger.log(`Request received at ${service.now()}`);
9
+ next();
10
+ };
11
+
12
+ return mdw;
13
+ });
@@ -0,0 +1,11 @@
1
+ import { provider } from '../../src';
2
+
3
+ export class DateService {
4
+ now(): Date {
5
+ return new Date();
6
+ }
7
+ }
8
+
9
+ export const dateServiceProvider = provider((app) => {
10
+ app.set('date', () => new DateService());
11
+ });