jimpex 10.0.2 → 11.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 (346) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +7 -9
  3. package/dist/app/index.d.ts +1 -1
  4. package/dist/app/index.js +1 -22
  5. package/dist/app/index.js.map +1 -1
  6. package/dist/app/jimpex.d.ts +1 -1
  7. package/dist/app/jimpex.js +100 -131
  8. package/dist/app/jimpex.js.map +1 -1
  9. package/dist/controllers/common/config.d.ts +2 -2
  10. package/dist/controllers/common/config.js +12 -39
  11. package/dist/controllers/common/config.js.map +1 -1
  12. package/dist/controllers/common/health.d.ts +4 -4
  13. package/dist/controllers/common/health.js +20 -47
  14. package/dist/controllers/common/health.js.map +1 -1
  15. package/dist/controllers/common/index.d.ts +1 -1
  16. package/dist/controllers/common/index.js +3 -26
  17. package/dist/controllers/common/index.js.map +1 -1
  18. package/dist/controllers/common/statics.d.ts +3 -3
  19. package/dist/controllers/common/statics.js +32 -65
  20. package/dist/controllers/common/statics.js.map +1 -1
  21. package/dist/controllers/index.d.ts +1 -1
  22. package/dist/controllers/index.js +2 -24
  23. package/dist/controllers/index.js.map +1 -1
  24. package/dist/controllers/utils/gateway.d.ts +5 -5
  25. package/dist/controllers/utils/gateway.js +70 -91
  26. package/dist/controllers/utils/gateway.js.map +1 -1
  27. package/dist/controllers/utils/index.d.ts +1 -1
  28. package/dist/controllers/utils/index.js +1 -22
  29. package/dist/controllers/utils/index.js.map +1 -1
  30. package/dist/{index-C6I3NCC-.d.ts → index-BlSpNHox.d.ts} +13 -13
  31. package/dist/index.d.ts +3 -3
  32. package/dist/index.js +6 -32
  33. package/dist/index.js.map +1 -1
  34. package/dist/middlewares/common/errorHandler.d.ts +5 -5
  35. package/dist/middlewares/common/errorHandler.js +31 -56
  36. package/dist/middlewares/common/errorHandler.js.map +1 -1
  37. package/dist/middlewares/common/forceHTTPS.d.ts +1 -1
  38. package/dist/middlewares/common/forceHTTPS.js +8 -35
  39. package/dist/middlewares/common/forceHTTPS.js.map +1 -1
  40. package/dist/middlewares/common/hsts.d.ts +1 -1
  41. package/dist/middlewares/common/hsts.js +12 -39
  42. package/dist/middlewares/common/hsts.js.map +1 -1
  43. package/dist/middlewares/common/index.d.ts +3 -3
  44. package/dist/middlewares/common/index.js +3 -26
  45. package/dist/middlewares/common/index.js.map +1 -1
  46. package/dist/middlewares/html/fastHTML.d.ts +4 -4
  47. package/dist/middlewares/html/fastHTML.js +43 -66
  48. package/dist/middlewares/html/fastHTML.js.map +1 -1
  49. package/dist/middlewares/html/index.d.ts +2 -2
  50. package/dist/middlewares/html/index.js +2 -24
  51. package/dist/middlewares/html/index.js.map +1 -1
  52. package/dist/middlewares/html/showHTML.d.ts +3 -3
  53. package/dist/middlewares/html/showHTML.js +25 -52
  54. package/dist/middlewares/html/showHTML.js.map +1 -1
  55. package/dist/middlewares/index.d.ts +4 -4
  56. package/dist/middlewares/index.js +3 -26
  57. package/dist/middlewares/index.js.map +1 -1
  58. package/dist/middlewares/utils/index.d.ts +3 -3
  59. package/dist/middlewares/utils/index.js +1 -22
  60. package/dist/middlewares/utils/index.js.map +1 -1
  61. package/dist/middlewares/utils/versionValidator.d.ts +5 -5
  62. package/dist/middlewares/utils/versionValidator.js +24 -51
  63. package/dist/middlewares/utils/versionValidator.js.map +1 -1
  64. package/dist/services/common/appError.d.ts +2 -2
  65. package/dist/services/common/appError.js +18 -46
  66. package/dist/services/common/appError.js.map +1 -1
  67. package/dist/services/common/httpError.d.ts +2 -2
  68. package/dist/services/common/httpError.js +7 -33
  69. package/dist/services/common/httpError.js.map +1 -1
  70. package/dist/services/common/index.d.ts +1 -1
  71. package/dist/services/common/index.js +14 -42
  72. package/dist/services/common/index.js.map +1 -1
  73. package/dist/services/common/sendFile.d.ts +1 -1
  74. package/dist/services/common/sendFile.js +4 -29
  75. package/dist/services/common/sendFile.js.map +1 -1
  76. package/dist/services/frontend/frontendFs.d.ts +2 -2
  77. package/dist/services/frontend/frontendFs.js +12 -49
  78. package/dist/services/frontend/frontendFs.js.map +1 -1
  79. package/dist/services/frontend/index.d.ts +2 -2
  80. package/dist/services/frontend/index.js +8 -34
  81. package/dist/services/frontend/index.js.map +1 -1
  82. package/dist/services/html/htmlGenerator.d.ts +5 -5
  83. package/dist/services/html/htmlGenerator.js +46 -75
  84. package/dist/services/html/htmlGenerator.js.map +1 -1
  85. package/dist/services/html/index.d.ts +2 -2
  86. package/dist/services/html/index.js +8 -34
  87. package/dist/services/html/index.js.map +1 -1
  88. package/dist/services/http/apiClient.d.ts +1 -1
  89. package/dist/services/http/apiClient.js +23 -48
  90. package/dist/services/http/apiClient.js.map +1 -1
  91. package/dist/services/http/http.d.ts +5 -5
  92. package/dist/services/http/http.js +23 -60
  93. package/dist/services/http/http.js.map +1 -1
  94. package/dist/services/http/index.d.ts +2 -2
  95. package/dist/services/http/index.js +14 -42
  96. package/dist/services/http/index.js.map +1 -1
  97. package/dist/services/http/responsesBuilder.d.ts +4 -4
  98. package/dist/services/http/responsesBuilder.js +13 -40
  99. package/dist/services/http/responsesBuilder.js.map +1 -1
  100. package/dist/services/index.d.ts +3 -3
  101. package/dist/services/index.js +5 -30
  102. package/dist/services/index.js.map +1 -1
  103. package/dist/services/utils/ensureBearerToken.d.ts +2 -2
  104. package/dist/services/utils/ensureBearerToken.js +15 -42
  105. package/dist/services/utils/ensureBearerToken.js.map +1 -1
  106. package/dist/services/utils/index.d.ts +1 -1
  107. package/dist/services/utils/index.js +8 -34
  108. package/dist/services/utils/index.js.map +1 -1
  109. package/dist/types/events.d.ts +1 -1
  110. package/dist/types/events.js +0 -16
  111. package/dist/types/events.js.map +1 -1
  112. package/dist/types/express.js +0 -16
  113. package/dist/types/express.js.map +1 -1
  114. package/dist/types/http.js +0 -16
  115. package/dist/types/http.js.map +1 -1
  116. package/dist/types/index.d.ts +1 -1
  117. package/dist/types/index.js +6 -32
  118. package/dist/types/index.js.map +1 -1
  119. package/dist/types/options.d.ts +1 -1
  120. package/dist/types/options.js +0 -16
  121. package/dist/types/options.js.map +1 -1
  122. package/dist/types/utils.js +0 -16
  123. package/dist/types/utils.js.map +1 -1
  124. package/dist/types/wootils.js +0 -16
  125. package/dist/types/wootils.js.map +1 -1
  126. package/dist/utils/fns/index.js +4 -28
  127. package/dist/utils/fns/index.js.map +1 -1
  128. package/dist/utils/fns/others.js +2 -26
  129. package/dist/utils/fns/others.js.map +1 -1
  130. package/dist/utils/fns/routes.js +4 -31
  131. package/dist/utils/fns/routes.js.map +1 -1
  132. package/dist/utils/fns/statuses.js +3 -37
  133. package/dist/utils/fns/statuses.js.map +1 -1
  134. package/dist/utils/fns/text.js +2 -26
  135. package/dist/utils/fns/text.js.map +1 -1
  136. package/dist/utils/index.d.ts +1 -1
  137. package/dist/utils/index.js +2 -24
  138. package/dist/utils/index.js.map +1 -1
  139. package/dist/utils/wrappers.d.ts +1 -1
  140. package/dist/utils/wrappers.js +20 -48
  141. package/dist/utils/wrappers.js.map +1 -1
  142. package/eslint.config.js +19 -0
  143. package/examples/basic/app.ts +4 -4
  144. package/examples/basic/controller.ts +2 -2
  145. package/examples/basic/index.ts +4 -4
  146. package/examples/basic/middleware.ts +2 -2
  147. package/examples/basic/service.ts +1 -1
  148. package/package.json +61 -49
  149. package/pnpm-workspace.yaml +4 -0
  150. package/src/app/index.ts +1 -1
  151. package/src/app/jimpex.ts +23 -20
  152. package/src/controllers/common/config.ts +4 -4
  153. package/src/controllers/common/health.ts +9 -5
  154. package/src/controllers/common/index.ts +3 -3
  155. package/src/controllers/common/statics.ts +12 -7
  156. package/src/controllers/index.ts +2 -2
  157. package/src/controllers/utils/gateway.ts +8 -8
  158. package/src/controllers/utils/index.ts +1 -1
  159. package/src/index.ts +6 -6
  160. package/src/middlewares/common/errorHandler.ts +9 -5
  161. package/src/middlewares/common/forceHTTPS.ts +2 -2
  162. package/src/middlewares/common/hsts.ts +2 -2
  163. package/src/middlewares/common/index.ts +3 -3
  164. package/src/middlewares/html/fastHTML.ts +14 -5
  165. package/src/middlewares/html/index.ts +2 -2
  166. package/src/middlewares/html/showHTML.ts +8 -4
  167. package/src/middlewares/index.ts +3 -3
  168. package/src/middlewares/utils/index.ts +1 -1
  169. package/src/middlewares/utils/versionValidator.ts +6 -6
  170. package/src/services/common/appError.ts +1 -1
  171. package/src/services/common/httpError.ts +2 -2
  172. package/src/services/common/index.ts +7 -7
  173. package/src/services/common/sendFile.ts +2 -2
  174. package/src/services/frontend/frontendFs.ts +3 -3
  175. package/src/services/frontend/index.ts +3 -3
  176. package/src/services/html/htmlGenerator.ts +11 -13
  177. package/src/services/html/index.ts +3 -3
  178. package/src/services/http/apiClient.ts +3 -3
  179. package/src/services/http/http.ts +5 -5
  180. package/src/services/http/index.ts +7 -7
  181. package/src/services/http/responsesBuilder.ts +5 -5
  182. package/src/services/index.ts +5 -5
  183. package/src/services/utils/ensureBearerToken.ts +4 -4
  184. package/src/services/utils/index.ts +3 -3
  185. package/src/types/events.ts +8 -8
  186. package/src/types/http.ts +1 -1
  187. package/src/types/index.ts +6 -6
  188. package/src/types/options.ts +2 -2
  189. package/src/types/utils.ts +4 -4
  190. package/src/utils/fns/index.ts +4 -4
  191. package/src/utils/fns/routes.ts +1 -1
  192. package/src/utils/index.ts +2 -2
  193. package/src/utils/wrappers.ts +6 -6
  194. package/tsconfig.json +9 -4
  195. package/tsup.config.ts +1 -2
  196. package/vitest.config.ts +24 -0
  197. package/dist/app/index.d.mts +0 -14
  198. package/dist/app/jimpex.d.mts +0 -14
  199. package/dist/controllers/common/config.d.mts +0 -79
  200. package/dist/controllers/common/health.d.mts +0 -83
  201. package/dist/controllers/common/index.d.mts +0 -22
  202. package/dist/controllers/common/statics.d.mts +0 -223
  203. package/dist/controllers/index.d.mts +0 -25
  204. package/dist/controllers/utils/gateway.d.mts +0 -725
  205. package/dist/controllers/utils/index.d.mts +0 -17
  206. package/dist/esm/app/index.js +0 -2
  207. package/dist/esm/app/index.js.map +0 -1
  208. package/dist/esm/app/jimpex.js +0 -640
  209. package/dist/esm/app/jimpex.js.map +0 -1
  210. package/dist/esm/chunk-V6TY7KAL.js +0 -8
  211. package/dist/esm/chunk-V6TY7KAL.js.map +0 -1
  212. package/dist/esm/controllers/common/config.js +0 -80
  213. package/dist/esm/controllers/common/config.js.map +0 -1
  214. package/dist/esm/controllers/common/health.js +0 -88
  215. package/dist/esm/controllers/common/health.js.map +0 -1
  216. package/dist/esm/controllers/common/index.js +0 -4
  217. package/dist/esm/controllers/common/index.js.map +0 -1
  218. package/dist/esm/controllers/common/statics.js +0 -226
  219. package/dist/esm/controllers/common/statics.js.map +0 -1
  220. package/dist/esm/controllers/index.js +0 -3
  221. package/dist/esm/controllers/index.js.map +0 -1
  222. package/dist/esm/controllers/utils/gateway.js +0 -559
  223. package/dist/esm/controllers/utils/gateway.js.map +0 -1
  224. package/dist/esm/controllers/utils/index.js +0 -2
  225. package/dist/esm/controllers/utils/index.js.map +0 -1
  226. package/dist/esm/index.js +0 -7
  227. package/dist/esm/index.js.map +0 -1
  228. package/dist/esm/middlewares/common/errorHandler.js +0 -116
  229. package/dist/esm/middlewares/common/errorHandler.js.map +0 -1
  230. package/dist/esm/middlewares/common/forceHTTPS.js +0 -52
  231. package/dist/esm/middlewares/common/forceHTTPS.js.map +0 -1
  232. package/dist/esm/middlewares/common/hsts.js +0 -74
  233. package/dist/esm/middlewares/common/hsts.js.map +0 -1
  234. package/dist/esm/middlewares/common/index.js +0 -4
  235. package/dist/esm/middlewares/common/index.js.map +0 -1
  236. package/dist/esm/middlewares/html/fastHTML.js +0 -157
  237. package/dist/esm/middlewares/html/fastHTML.js.map +0 -1
  238. package/dist/esm/middlewares/html/index.js +0 -3
  239. package/dist/esm/middlewares/html/index.js.map +0 -1
  240. package/dist/esm/middlewares/html/showHTML.js +0 -100
  241. package/dist/esm/middlewares/html/showHTML.js.map +0 -1
  242. package/dist/esm/middlewares/index.js +0 -4
  243. package/dist/esm/middlewares/index.js.map +0 -1
  244. package/dist/esm/middlewares/utils/index.js +0 -2
  245. package/dist/esm/middlewares/utils/index.js.map +0 -1
  246. package/dist/esm/middlewares/utils/versionValidator.js +0 -135
  247. package/dist/esm/middlewares/utils/versionValidator.js.map +0 -1
  248. package/dist/esm/services/common/appError.js +0 -98
  249. package/dist/esm/services/common/appError.js.map +0 -1
  250. package/dist/esm/services/common/httpError.js +0 -28
  251. package/dist/esm/services/common/httpError.js.map +0 -1
  252. package/dist/esm/services/common/index.js +0 -17
  253. package/dist/esm/services/common/index.js.map +0 -1
  254. package/dist/esm/services/common/sendFile.js +0 -27
  255. package/dist/esm/services/common/sendFile.js.map +0 -1
  256. package/dist/esm/services/frontend/frontendFs.js +0 -66
  257. package/dist/esm/services/frontend/frontendFs.js.map +0 -1
  258. package/dist/esm/services/frontend/index.js +0 -11
  259. package/dist/esm/services/frontend/index.js.map +0 -1
  260. package/dist/esm/services/html/htmlGenerator.js +0 -192
  261. package/dist/esm/services/html/htmlGenerator.js.map +0 -1
  262. package/dist/esm/services/html/index.js +0 -11
  263. package/dist/esm/services/html/index.js.map +0 -1
  264. package/dist/esm/services/http/apiClient.js +0 -94
  265. package/dist/esm/services/http/apiClient.js.map +0 -1
  266. package/dist/esm/services/http/http.js +0 -180
  267. package/dist/esm/services/http/http.js.map +0 -1
  268. package/dist/esm/services/http/index.js +0 -17
  269. package/dist/esm/services/http/index.js.map +0 -1
  270. package/dist/esm/services/http/responsesBuilder.js +0 -152
  271. package/dist/esm/services/http/responsesBuilder.js.map +0 -1
  272. package/dist/esm/services/index.js +0 -6
  273. package/dist/esm/services/index.js.map +0 -1
  274. package/dist/esm/services/utils/ensureBearerToken.js +0 -94
  275. package/dist/esm/services/utils/ensureBearerToken.js.map +0 -1
  276. package/dist/esm/services/utils/index.js +0 -11
  277. package/dist/esm/services/utils/index.js.map +0 -1
  278. package/dist/esm/types/events.js +0 -1
  279. package/dist/esm/types/events.js.map +0 -1
  280. package/dist/esm/types/express.js +0 -1
  281. package/dist/esm/types/express.js.map +0 -1
  282. package/dist/esm/types/http.js +0 -1
  283. package/dist/esm/types/http.js.map +0 -1
  284. package/dist/esm/types/index.js +0 -7
  285. package/dist/esm/types/index.js.map +0 -1
  286. package/dist/esm/types/options.js +0 -1
  287. package/dist/esm/types/options.js.map +0 -1
  288. package/dist/esm/types/utils.js +0 -1
  289. package/dist/esm/types/utils.js.map +0 -1
  290. package/dist/esm/types/wootils.js +0 -1
  291. package/dist/esm/types/wootils.js.map +0 -1
  292. package/dist/esm/utils/fns/index.js +0 -5
  293. package/dist/esm/utils/fns/index.js.map +0 -1
  294. package/dist/esm/utils/fns/others.js +0 -6
  295. package/dist/esm/utils/fns/others.js.map +0 -1
  296. package/dist/esm/utils/fns/routes.js +0 -25
  297. package/dist/esm/utils/fns/routes.js.map +0 -1
  298. package/dist/esm/utils/fns/statuses.js +0 -6
  299. package/dist/esm/utils/fns/statuses.js.map +0 -1
  300. package/dist/esm/utils/fns/text.js +0 -6
  301. package/dist/esm/utils/fns/text.js.map +0 -1
  302. package/dist/esm/utils/index.js +0 -3
  303. package/dist/esm/utils/index.js.map +0 -1
  304. package/dist/esm/utils/wrappers.js +0 -41
  305. package/dist/esm/utils/wrappers.js.map +0 -1
  306. package/dist/index-Bwf7JHu9.d.mts +0 -1287
  307. package/dist/index.d.mts +0 -47
  308. package/dist/middlewares/common/errorHandler.d.mts +0 -132
  309. package/dist/middlewares/common/forceHTTPS.d.mts +0 -69
  310. package/dist/middlewares/common/hsts.d.mts +0 -110
  311. package/dist/middlewares/common/index.d.mts +0 -22
  312. package/dist/middlewares/html/fastHTML.d.mts +0 -180
  313. package/dist/middlewares/html/index.d.mts +0 -21
  314. package/dist/middlewares/html/showHTML.d.mts +0 -127
  315. package/dist/middlewares/index.d.mts +0 -30
  316. package/dist/middlewares/utils/index.d.mts +0 -20
  317. package/dist/middlewares/utils/versionValidator.d.mts +0 -215
  318. package/dist/services/common/appError.d.mts +0 -139
  319. package/dist/services/common/httpError.d.mts +0 -80
  320. package/dist/services/common/index.d.mts +0 -47
  321. package/dist/services/common/sendFile.d.mts +0 -102
  322. package/dist/services/frontend/frontendFs.d.mts +0 -96
  323. package/dist/services/frontend/index.d.mts +0 -40
  324. package/dist/services/html/htmlGenerator.d.mts +0 -237
  325. package/dist/services/html/index.d.mts +0 -43
  326. package/dist/services/http/apiClient.d.mts +0 -170
  327. package/dist/services/http/http.d.mts +0 -182
  328. package/dist/services/http/index.d.mts +0 -51
  329. package/dist/services/http/responsesBuilder.d.mts +0 -179
  330. package/dist/services/index.d.mts +0 -33
  331. package/dist/services/utils/ensureBearerToken.d.mts +0 -158
  332. package/dist/services/utils/index.d.mts +0 -44
  333. package/dist/types/events.d.mts +0 -14
  334. package/dist/types/express.d.mts +0 -10
  335. package/dist/types/http.d.mts +0 -82
  336. package/dist/types/index.d.mts +0 -14
  337. package/dist/types/options.d.mts +0 -14
  338. package/dist/types/utils.d.mts +0 -48
  339. package/dist/types/wootils.d.mts +0 -4
  340. package/dist/utils/fns/index.d.mts +0 -5
  341. package/dist/utils/fns/others.d.mts +0 -17
  342. package/dist/utils/fns/routes.d.mts +0 -39
  343. package/dist/utils/fns/statuses.d.mts +0 -45
  344. package/dist/utils/fns/text.d.mts +0 -9
  345. package/dist/utils/index.d.mts +0 -19
  346. package/dist/utils/wrappers.d.mts +0 -14
@@ -1,58 +1,30 @@
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)();
1
+ import {
2
+ createProvider,
3
+ createProviderCreator,
4
+ createProviders,
5
+ resourceFactory,
6
+ resourceCreatorFactory
7
+ } from "@homer0/jimple";
8
+ const provider = createProvider();
9
+ const providerCreator = createProviderCreator();
10
+ const providers = createProviders();
11
+ const controllerFactory = resourceFactory();
39
12
  const controller = (connect) => controllerFactory("controller", "connect", connect);
40
- const controllerCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
13
+ const controllerCreatorFactory = resourceCreatorFactory();
41
14
  const controllerCreator = (creator) => controllerCreatorFactory("controller", "connect", creator);
42
- const controllerProviderFactory = (0, import_jimple.resourceFactory)();
15
+ const controllerProviderFactory = resourceFactory();
43
16
  const controllerProvider = (register) => controllerProviderFactory("provider", "register", register);
44
- const controllerProviderCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
17
+ const controllerProviderCreatorFactory = resourceCreatorFactory();
45
18
  const controllerProviderCreator = (creator) => controllerProviderCreatorFactory("provider", "register", creator);
46
- const middlewareFactory = (0, import_jimple.resourceFactory)();
19
+ const middlewareFactory = resourceFactory();
47
20
  const middleware = (connect) => middlewareFactory("middleware", "connect", connect);
48
- const middlewareCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
21
+ const middlewareCreatorFactory = resourceCreatorFactory();
49
22
  const middlewareCreator = (creator) => middlewareCreatorFactory("middleware", "connect", creator);
50
- const middlewareProviderFactory = (0, import_jimple.resourceFactory)();
23
+ const middlewareProviderFactory = resourceFactory();
51
24
  const middlewareProvider = (register) => middlewareProviderFactory("provider", "register", register);
52
- const middlewareProviderCreatorFactory = (0, import_jimple.resourceCreatorFactory)();
25
+ const middlewareProviderCreatorFactory = resourceCreatorFactory();
53
26
  const middlewareProviderCreator = (creator) => middlewareProviderCreatorFactory("provider", "register", creator);
54
- // Annotate the CommonJS export names for ESM import in node:
55
- 0 && (module.exports = {
27
+ export {
56
28
  controller,
57
29
  controllerCreator,
58
30
  controllerProvider,
@@ -64,5 +36,5 @@ const middlewareProviderCreator = (creator) => middlewareProviderCreatorFactory(
64
36
  provider,
65
37
  providerCreator,
66
38
  providers
67
- });
39
+ };
68
40
  //# sourceMappingURL=wrappers.js.map
@@ -1 +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":[]}
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/index.js';\nimport type { Router, ExpressMiddlewareLike, NoStringIndex } from '../types/index.js';\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 middleware\", or for a specific route.\n * @returns The resource can choose to be enabled or not by returning the function,\n * or `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 middleware 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,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,OACK;AAsBA,MAAM,WAAW,eAAuB;AA8BxC,MAAM,kBAAkB,sBAA8B;AAuBtD,MAAM,YAAY,gBAAwB;AAyCjD,MAAM,oBAAoB,gBAAqC;AAoBxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,2BAA2B,uBAA4C;AA6BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,4BAA4B,gBAA8C;AAqBzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,mCACJ,uBAAqD;AAmChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;AAkCrE,MAAM,oBAAoB,gBAAqC;AA4BxD,MAAM,aAAa,CAAC,YACzB,kBAAkB,cAAc,WAAW,OAAO;AAQpD,MAAM,2BAA2B,uBAA4C;AA8BtE,MAAM,oBAAoB,CAC/B,YACG,yBAAyB,cAAc,WAAW,OAAO;AA6B9D,MAAM,4BAA4B,gBAA8C;AA8BzE,MAAM,qBAAqB,CAAC,aACjC,0BAA0B,YAAY,YAAY,QAAQ;AAQ5D,MAAM,mCACJ,uBAAqD;AA2ChD,MAAM,4BAA4B,CACvC,YACG,iCAAiC,YAAY,YAAY,OAAO;","names":[]}
@@ -0,0 +1,19 @@
1
+ import { defineConfig } from 'eslint/config';
2
+ import { createConfig } from '@homer0/eslint-plugin/create';
3
+
4
+ export default defineConfig([
5
+ createConfig({
6
+ importUrl: import.meta.url,
7
+ ignores: ['tests/**'],
8
+ configs: ['node-ts-with-prettier'],
9
+ }),
10
+ createConfig({
11
+ importUrl: import.meta.url,
12
+ files: 'all-inside:./tests',
13
+ configs: ['node-ts-tests-with-prettier'],
14
+ tsConfigPath: './tests',
15
+ rules: {
16
+ 'no-use-before-define': 'off', // for global vi
17
+ },
18
+ }),
19
+ ]);
@@ -1,7 +1,7 @@
1
- import { jimpex, healthController, fastHTMLMiddleware } from '../../src';
2
- import { dateServiceProvider } from './service';
3
- import { dateMiddleware } from './middleware';
4
- import { dateController } from './controller';
1
+ import { jimpex, healthController, fastHTMLMiddleware } from '../../src/index.js';
2
+ import { dateServiceProvider } from './service.js';
3
+ import { dateMiddleware } from './middleware.js';
4
+ import { dateController } from './controller.js';
5
5
 
6
6
  const app = jimpex();
7
7
  app.register(dateServiceProvider);
@@ -3,8 +3,8 @@ import {
3
3
  type ExpressMiddleware,
4
4
  type ResponsesBuilder,
5
5
  type Router,
6
- } from '../../src';
7
- import type { DateService } from './service';
6
+ } from '../../src/index.js';
7
+ import type { DateService } from './service.js';
8
8
 
9
9
  class DateController {
10
10
  constructor(
@@ -1,7 +1,7 @@
1
- import { jimpex, healthController, fastHTMLMiddleware } from '../../src';
2
- import { dateServiceProvider } from './service';
3
- import { dateMiddleware } from './middleware';
4
- import { dateController } from './controller';
1
+ import { jimpex, healthController, fastHTMLMiddleware } from '../../src/index.js';
2
+ import { dateServiceProvider } from './service.js';
3
+ import { dateMiddleware } from './middleware.js';
4
+ import { dateController } from './controller.js';
5
5
 
6
6
  const PORT = 2509;
7
7
  const app = jimpex();
@@ -1,5 +1,5 @@
1
- import { middleware, type ExpressMiddleware, type Logger } from '../../src';
2
- import type { DateService } from './service';
1
+ import { middleware, type ExpressMiddleware, type Logger } from '../../src/index.js';
2
+ import type { DateService } from './service.js';
3
3
 
4
4
  export const dateMiddleware = middleware((app) => {
5
5
  const logger = app.get<Logger>('logger');
@@ -1,4 +1,4 @@
1
- import { provider } from '../../src';
1
+ import { provider } from '../../src/index.js';
2
2
 
3
3
  export class DateService {
4
4
  now(): Date {
package/package.json CHANGED
@@ -2,72 +2,84 @@
2
2
  "name": "jimpex",
3
3
  "description": "Express as dependency injection container.",
4
4
  "homepage": "https://homer0.github.io/jimpex/",
5
- "version": "10.0.2",
6
- "repository": "homer0/jimpex",
5
+ "version": "11.0.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/homer0/jimpex.git"
9
+ },
7
10
  "author": "Leonardo Apiwan (@homer0) <me@homer0.com>",
8
11
  "license": "MIT",
12
+ "packageManager": "pnpm@10.11.0",
13
+ "type": "module",
14
+ "main": "./dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "import": "./dist/index.js",
19
+ "types": "./dist/index.d.ts"
20
+ },
21
+ "./package.json": "./package.json"
22
+ },
9
23
  "dependencies": {
10
- "@homer0/api-utils": "^3.0.6",
11
- "@homer0/deep-assign": "^3.0.6",
12
- "@homer0/deferred": "^3.0.6",
13
- "@homer0/env-utils": "^3.0.6",
14
- "@homer0/events-hub": "^3.0.6",
15
- "@homer0/jimple": "^3.0.6",
16
- "@homer0/object-utils": "^3.0.6",
17
- "@homer0/package-info": "^3.0.6",
18
- "@homer0/path-utils": "^3.0.6",
19
- "@homer0/root-file": "^3.0.6",
20
- "@homer0/simple-config": "^3.0.6",
21
- "@homer0/simple-logger": "^3.0.6",
22
- "@homer0/ts-async-import": "^1.1.5",
23
- "body-parser": "^1.20.3",
24
- "compression": "^1.7.5",
25
- "express": "^4.21.1",
26
- "mime": "^4.0.4",
27
- "multer": "1.4.5-lts.1",
24
+ "@homer0/api-utils": "^5.0.7",
25
+ "@homer0/deep-assign": "^5.0.7",
26
+ "@homer0/deferred": "^5.0.7",
27
+ "@homer0/env-utils": "^5.0.7",
28
+ "@homer0/events-hub": "^5.0.7",
29
+ "@homer0/jimple": "^5.0.7",
30
+ "@homer0/object-utils": "^5.0.7",
31
+ "@homer0/package-info": "^5.0.7",
32
+ "@homer0/path-utils": "^5.0.7",
33
+ "@homer0/root-file": "^5.0.7",
34
+ "@homer0/simple-config": "^5.0.7",
35
+ "@homer0/simple-logger": "^5.0.7",
36
+ "@homer0/ts-async-import": "^3.0.7",
37
+ "body-parser": "^2.2.1",
38
+ "compression": "^1.8.1",
39
+ "express": "^5.2.1",
40
+ "mime": "^4.1.0",
41
+ "multer": "2.0.2",
28
42
  "node-fetch": "^3.3.2",
29
43
  "spdy": "^4.0.2",
30
- "statuses": "^2.0.1",
44
+ "statuses": "^2.0.2",
31
45
  "urijs": "^1.19.11"
32
46
  },
33
47
  "devDependencies": {
34
- "@commitlint/cli": "^19.5.0",
35
- "@commitlint/config-conventional": "^19.5.0",
36
- "@homer0/eslint-plugin": "^12.0.6",
37
- "@homer0/prettier-config": "^1.1.3",
38
- "@homer0/prettier-plugin-jsdoc": "^9.1.0",
39
- "@homer0/tsconfig": "^1.0.17",
48
+ "@commitlint/cli": "^20.2.0",
49
+ "@commitlint/config-conventional": "^20.2.0",
50
+ "@homer0/eslint-plugin": "^14.2.2",
51
+ "@homer0/prettier-config": "^2.0.0",
52
+ "@homer0/prettier-plugin-jsdoc": "^11.0.1",
53
+ "@homer0/tsconfig": "^4.1.1",
40
54
  "@semantic-release/changelog": "^6.0.3",
41
55
  "@semantic-release/git": "^10.0.1",
42
- "@types/body-parser": "^1.19.5",
43
- "@types/compression": "^1.7.5",
44
- "@types/express": "^5.0.0",
45
- "@types/jest": "^29.5.14",
46
- "@types/multer": "^1.4.12",
47
- "@types/node": "^22.9.0",
56
+ "@vitest/coverage-istanbul": "^4.0.15",
57
+ "@types/body-parser": "^1.19.6",
58
+ "@types/compression": "^1.8.1",
59
+ "@types/express": "^5.0.6",
60
+ "@types/multer": "^2.0.0",
61
+ "@types/node": "^24.10.1",
48
62
  "@types/spdy": "^3.4.9",
49
- "@types/statuses": "^2.0.5",
50
- "@types/urijs": "^1.19.25",
51
- "eslint": "^8.57.1",
52
- "husky": "^9.1.6",
53
- "is-ci": "^3.0.1",
54
- "jest": "^29.7.0",
63
+ "@types/statuses": "^2.0.6",
64
+ "@types/urijs": "^1.19.26",
65
+ "eslint": "^9.39.1",
66
+ "husky": "^9.1.7",
67
+ "is-ci": "^4.1.0",
55
68
  "leasot": "^14.4.0",
56
- "lint-staged": "^15.2.10",
57
- "semantic-release": "^24.2.0",
58
- "ts-jest": "^29.2.5",
69
+ "lint-staged": "^16.2.7",
70
+ "semantic-release": "^25.0.2",
59
71
  "ts-node-dev": "^2.0.0",
60
- "tsup": "^8.3.5",
61
- "typedoc": "0.26.11",
62
- "typescript": "^5.6.3"
72
+ "tsup": "^8.5.1",
73
+ "typedoc": "0.28.15",
74
+ "typescript": "^5.9.3",
75
+ "unplugin-swc": "^1.5.9",
76
+ "vitest": "^4.0.15",
77
+ "vite-tsconfig-paths": "^5.1.4"
63
78
  },
64
79
  "engine-strict": true,
65
80
  "engines": {
66
- "node": ">=18.17 <23"
81
+ "node": ">=20"
67
82
  },
68
- "main": "./dist/index.js",
69
- "module": "./dist/esm/index.js",
70
- "types": "./dist/index.d.ts",
71
83
  "lint-staged": {
72
84
  "*.{ts,tsx,js,json,css,scss,md}": [
73
85
  "prettier --write"
@@ -0,0 +1,4 @@
1
+ onlyBuiltDependencies:
2
+ - '@swc/core'
3
+ - esbuild
4
+ - unrs-resolver
package/src/app/index.ts CHANGED
@@ -1 +1 @@
1
- export * from './jimpex';
1
+ export * from './jimpex.js';
package/src/app/jimpex.ts CHANGED
@@ -1,5 +1,5 @@
1
- import * as path from 'path';
2
- import fs from 'fs/promises';
1
+ import * as path from 'node:path';
2
+ import fs from 'node:fs/promises';
3
3
  import { createServer as createHTTPSServer } from 'https';
4
4
  import { Jimple } from '@homer0/jimple';
5
5
  import { deepAssignWithOverwrite } from '@homer0/deep-assign';
@@ -14,16 +14,13 @@ import { simpleConfigProvider } from '@homer0/simple-config';
14
14
  import compression from 'compression';
15
15
  import bodyParser from 'body-parser';
16
16
  import multer from 'multer';
17
- import {
18
- createServer as createSpdyServer,
19
- type ServerOptions as SpdyServerOptions,
20
- } from 'spdy';
17
+ import type { ServerOptions as SpdyServerOptions } from 'spdy';
21
18
  import express from 'express';
22
19
  import {
23
20
  commonServicesProvider,
24
21
  httpServicesProvider,
25
22
  utilsServicesProvider,
26
- } from '../services';
23
+ } from '../services/index.js';
27
24
  import {
28
25
  statuses,
29
26
  type Controller,
@@ -31,7 +28,7 @@ import {
31
28
  type MiddlewareLike,
32
29
  type MiddlewareProvider,
33
30
  type Middleware,
34
- } from '../utils';
31
+ } from '../utils/index.js';
35
32
  import type {
36
33
  DeepPartial,
37
34
  Express,
@@ -56,7 +53,8 @@ import type {
56
53
  JimpexEventListener,
57
54
  JimpexHealthCheckFn,
58
55
  Router,
59
- } from '../types';
56
+ } from '../types/index.js';
57
+
60
58
  /**
61
59
  * Jimpex is a mix of Jimple, a Javascript port of Pimple dependency injection container,
62
60
  * and Express, one of the most popular web frameworks for Node.
@@ -79,7 +77,7 @@ export class Jimpex extends Jimple {
79
77
  */
80
78
  protected _configReady: boolean = false;
81
79
  /**
82
- * A reference to the actuall HTTP the application will use. This can vary depending on
80
+ * A reference to the actual HTTP the application will use. This can vary depending on
83
81
  * whether HTTPS, or HTTP2 are enabled. If HTTPS is not enabled, it will be the same as
84
82
  * the `express` property; if HTTPS is enabled, it will be an `https` server; and if
85
83
  * HTTP2 is enabled, it will be an `spdy` server.
@@ -106,7 +104,7 @@ export class Jimpex extends Jimple {
106
104
  /**
107
105
  * @param options Preferences to customize the application.
108
106
  * @param config The default settings for the configuration service. It's a
109
- * shortcuit for `options.config.default`
107
+ * short-circuit for `options.config.default`
110
108
  */
111
109
  constructor(options: DeepPartial<JimpexOptions> = {}, config: unknown = {}) {
112
110
  super();
@@ -171,7 +169,7 @@ export class Jimpex extends Jimple {
171
169
  * Disables the server TLS validation. Meant to be used for development purposes.
172
170
  */
173
171
  disableTLSValidation() {
174
- // eslint-disable-next-line no-process-env, dot-notation
172
+ // eslint-disable-next-line n/no-process-env
175
173
  process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
176
174
  this.logger.warn('TLS validation has been disabled');
177
175
  }
@@ -392,7 +390,7 @@ export class Jimpex extends Jimple {
392
390
  return this.eventsHub.on(eventName, listener);
393
391
  }
394
392
  /**
395
- * Adds a listener for an application event that will only be execuded once: the first
393
+ * Adds a listener for an application event that will only be executed once: the first
396
394
  * time the event is triggered.
397
395
  *
398
396
  * @param eventName The name of the event to listen for.
@@ -408,7 +406,7 @@ export class Jimpex extends Jimple {
408
406
  return this.eventsHub.once(eventName, listener);
409
407
  }
410
408
  /**
411
- * Based on the application options, it returns wheter the application is healthy or
409
+ * Based on the application options, it returns whether the application is healthy or
412
410
  * not.
413
411
  */
414
412
  isHealthy(): ReturnType<JimpexHealthCheckFn> {
@@ -417,7 +415,7 @@ export class Jimpex extends Jimple {
417
415
  /**
418
416
  * This method is like a "lifecycle method", it gets executed on the constructor right
419
417
  * before the "boot step". The idea is for the method to be a helper when the
420
- * application is defined by subclassing {@link Jimpex}: the application could register
418
+ * application is defined by sub-classing {@link Jimpex}: the application could register
421
419
  * all important services here and the routes on boot, then, if the implementation needs
422
420
  * to access or overwrite a something, it can send `boot: false`, access/register what
423
421
  * it needs, and then call `boot()`. That would be impossible for an application without
@@ -426,7 +424,7 @@ export class Jimpex extends Jimple {
426
424
  protected _init(): void {}
427
425
  /**
428
426
  * It generates overwrites for the application options when it gets created. This method
429
- * is a helper for when the application is defined by subclassing {@link Jimpex}: It's
427
+ * is a helper for when the application is defined by sub-classing {@link Jimpex}: It's
430
428
  * highly probable that if the application needs to change the default options, it would
431
429
  * want to do it right from the class, instead of having to do it on every
432
430
  * implementation. A way to do it would be overwriting the constructor and calling
@@ -532,7 +530,7 @@ export class Jimpex extends Jimple {
532
530
  * This helper method validates the `path` options in order to register the `app`
533
531
  * location in the `pathUtils` service. The `app` location should be the path to where
534
532
  * the application executable is located, but due to how ESM works, we can't infer it
535
- * from the `module` object, so we need either recieved as the `appPath` setting, or try
533
+ * from the `module` object, so we need either received as the `appPath` setting, or try
536
534
  * to get it from the parent module.
537
535
  *
538
536
  * @throws If the method should use the path from the parent module, but can't find
@@ -553,8 +551,10 @@ export class Jimpex extends Jimple {
553
551
  const stackList = stack.split('\n');
554
552
  stackList.shift();
555
553
  const parentFromStack = stackList.find((line) => !line.includes(__filename));
554
+ /* istanbul ignore else */
556
555
  if (parentFromStack) {
557
- const parentFile = parentFromStack.replace(/^.*?\s\(([^\s]+):\d+:\d+\)/, '$1');
556
+ const parentFile = parentFromStack.replace(/^.*?\s\(?([^\s]+):\d+:\d+\)?/, '$1');
557
+ /* istanbul ignore else */
558
558
  if (parentFile !== parentFromStack) {
559
559
  foundPath = true;
560
560
  pathUtils.addLocation('app', path.dirname(parentFile));
@@ -703,7 +703,7 @@ export class Jimpex extends Jimple {
703
703
  * @returns {Server}
704
704
  * @throws {Error} If HTTP2 is enabled but HTTPS is not.
705
705
  * @throws {Error} If HTTPS is enabled but there's no `https.credentials` object.
706
- * @throws {Error} If HTTPS is enabled and no creadentials are found.
706
+ * @throws {Error} If HTTPS is enabled and no credentials are found.
707
707
  * @access protected
708
708
  * @ignore
709
709
  */
@@ -739,7 +739,10 @@ export class Jimpex extends Jimple {
739
739
  spdy: http2Config.spdy,
740
740
  };
741
741
 
742
- return createSpdyServer(serverOptions, this._express);
742
+ const spdyModule = await tsAsyncImport<{
743
+ default: { createServer: (typeof import('spdy'))['createServer'] };
744
+ }>('spdy');
745
+ return spdyModule.default.createServer(serverOptions, this._express);
743
746
  }
744
747
 
745
748
  return createHTTPSServer(credentials, this._express);
@@ -1,13 +1,13 @@
1
- import { controller } from '../../utils';
2
- import type { ResponsesBuilder } from '../../services';
1
+ import { controller } from '../../utils/index.js';
2
+ import type { ResponsesBuilder } from '../../services/index.js';
3
3
  import type {
4
4
  Config,
5
5
  Response,
6
6
  AsyncExpressMiddleware,
7
7
  ExpressMiddleware,
8
- } from '../../types';
8
+ } from '../../types/index.js';
9
9
  /**
10
- * The options to contruct a {@link ConfigController}.
10
+ * The options to construct a {@link ConfigController}.
11
11
  *
12
12
  * @group Controllers/Config
13
13
  */
@@ -1,6 +1,10 @@
1
- import { controller, type Statuses } from '../../utils';
2
- import type { ResponsesBuilder } from '../../services';
3
- import type { JimpexHealthStatus, Config, AsyncExpressMiddleware } from '../../types';
1
+ import { controller, type Statuses } from '../../utils/index.js';
2
+ import type { ResponsesBuilder } from '../../services/index.js';
3
+ import type {
4
+ JimpexHealthStatus,
5
+ Config,
6
+ AsyncExpressMiddleware,
7
+ } from '../../types/index.js';
4
8
  /**
5
9
  * A function that will return the health status of the application.
6
10
  *
@@ -8,7 +12,7 @@ import type { JimpexHealthStatus, Config, AsyncExpressMiddleware } from '../../t
8
12
  */
9
13
  export type GetHealthStatus = () => Promise<JimpexHealthStatus>;
10
14
  /**
11
- * The options to contruct a {@link HealthController}.
15
+ * The options to construct a {@link HealthController}.
12
16
  *
13
17
  * @group Controllers/Health
14
18
  */
@@ -44,7 +48,7 @@ export class HealthController {
44
48
  */
45
49
  protected readonly _config: Config;
46
50
  /**
47
- * The uility service to get HTTP status codes.
51
+ * The utility service to get HTTP status codes.
48
52
  */
49
53
  protected readonly _statuses: Statuses;
50
54
  /**
@@ -1,3 +1,3 @@
1
- export * from './config';
2
- export * from './health';
3
- export * from './statics';
1
+ export * from './config.js';
2
+ export * from './health.js';
3
+ export * from './statics.js';