@venok/http 1.0.1-canary.5 → 2.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 (337) hide show
  1. package/dist/constants.js +33 -0
  2. package/dist/decorators/controller.decorator.js +45 -0
  3. package/dist/decorators/header.decorator.js +28 -0
  4. package/dist/decorators/http-code.decorator.js +22 -0
  5. package/dist/decorators/http-params.decorator.js +63 -0
  6. package/dist/decorators/method.decorator.js +57 -0
  7. package/dist/decorators/redirect.decorator.js +28 -0
  8. package/dist/decorators/version.decorator.js +31 -0
  9. package/dist/enums/method.enum.js +32 -0
  10. package/dist/enums/paramtypes.enum.js +33 -0
  11. package/dist/enums/status.enum.js +71 -0
  12. package/dist/enums/version-type.enum.js +27 -0
  13. package/dist/exceptions/bad-gateway.exception.js +29 -0
  14. package/dist/exceptions/bad-request.exception.js +29 -0
  15. package/dist/exceptions/conflict.exception.js +29 -0
  16. package/dist/exceptions/expectation-failed.exception.js +29 -0
  17. package/dist/exceptions/failed-dependency.exception.js +29 -0
  18. package/dist/exceptions/forbidden.exception.js +29 -0
  19. package/dist/exceptions/gateway-timeout.exception.js +29 -0
  20. package/dist/exceptions/gone.exception.js +29 -0
  21. package/dist/exceptions/http-version-not-supported.exception.js +29 -0
  22. package/dist/exceptions/http.exception.js +94 -0
  23. package/dist/exceptions/im-a-teapot.exception.js +29 -0
  24. package/dist/exceptions/internal-server-error.exception.js +29 -0
  25. package/dist/exceptions/length-required.exception.js +29 -0
  26. package/dist/exceptions/method-not-allowed.exception.js +29 -0
  27. package/dist/exceptions/misdirected.exception.js +29 -0
  28. package/dist/exceptions/not-acceptable.exception.js +29 -0
  29. package/dist/exceptions/not-found.exception.js +29 -0
  30. package/dist/exceptions/not-implemented.exception.js +29 -0
  31. package/dist/exceptions/payload-too-large.exception.js +29 -0
  32. package/dist/exceptions/payment-required.exception.js +29 -0
  33. package/dist/exceptions/precondition-failed.exception.js +29 -0
  34. package/dist/exceptions/precondition-required.exception.js +29 -0
  35. package/dist/exceptions/proxy-authentication-required.exception.js +29 -0
  36. package/dist/exceptions/request-timeout.exception.js +29 -0
  37. package/dist/exceptions/requested-range-not-satisfiable.exception.js +29 -0
  38. package/dist/exceptions/service-unavailable.exception.js +29 -0
  39. package/dist/exceptions/too-many-requests.exception.js +29 -0
  40. package/dist/exceptions/unauthorized.exception.js +29 -0
  41. package/dist/exceptions/unprocessable-entity.exception.js +29 -0
  42. package/dist/exceptions/unsupported-media-type.exception.js +29 -0
  43. package/dist/exceptions/uri-too-long.exception.js +29 -0
  44. package/dist/filters/context.js +28 -0
  45. package/dist/filters/filter.js +56 -0
  46. package/dist/helpers/discovery.helper.js +69 -0
  47. package/dist/helpers/messages.helper.js +41 -0
  48. package/dist/helpers/middleware.helper.js +69 -0
  49. package/dist/helpers/path.helper.js +53 -0
  50. package/dist/helpers/route.helper.js +54 -0
  51. package/dist/http/adapter.js +294 -0
  52. package/dist/http/config.js +67 -0
  53. package/dist/http/configurable-module.js +26 -0
  54. package/dist/http/context.js +117 -0
  55. package/dist/http/explorer.js +133 -0
  56. package/dist/http/module.js +35 -0
  57. package/dist/http/starter-module.js +85 -0
  58. package/dist/index.d.ts +2117 -0
  59. package/dist/index.js +82 -0
  60. package/dist/interfaces/adapter.interface.js +0 -0
  61. package/dist/interfaces/exception.interface.js +0 -0
  62. package/dist/interfaces/index.js +7 -0
  63. package/dist/interfaces/middleware/config-proxy.interface.js +0 -0
  64. package/dist/interfaces/middleware/consumer.interface.js +0 -0
  65. package/dist/interfaces/middleware/index.js +3 -0
  66. package/dist/interfaces/options.interface.js +0 -0
  67. package/dist/interfaces/prefix.interface.js +0 -0
  68. package/dist/interfaces/router/definition.interface.js +0 -0
  69. package/dist/interfaces/router/exclude-route.interface.js +0 -0
  70. package/dist/interfaces/router/index.js +7 -0
  71. package/dist/interfaces/router/info.interface.js +0 -0
  72. package/dist/interfaces/router/path-metadata.interface.js +0 -0
  73. package/dist/interfaces/router/tree.interface.js +0 -0
  74. package/dist/interfaces/router/version.interface.js +21 -0
  75. package/dist/middleware/builder.js +96 -0
  76. package/dist/middleware/module.js +22 -0
  77. package/dist/middleware/routes-mapper.js +107 -0
  78. package/dist/middleware/service.js +48 -0
  79. package/dist/middleware/tree.js +91 -0
  80. package/dist/router/finder.js +64 -0
  81. package/dist/router/module.js +89 -0
  82. package/dist/router/path-factory.js +110 -0
  83. package/dist/symbols.js +33 -0
  84. package/package.json +41 -46
  85. package/adapter/adapter.d.ts +0 -57
  86. package/adapter/adapter.js +0 -58
  87. package/adapter/host.d.ts +0 -27
  88. package/adapter/host.js +0 -33
  89. package/application/application.d.ts +0 -18
  90. package/application/application.js +0 -51
  91. package/application/config.d.ts +0 -16
  92. package/application/config.js +0 -47
  93. package/application/http.module-defenition.d.ts +0 -8
  94. package/application/http.module-defenition.js +0 -6
  95. package/application/http.module.d.ts +0 -3
  96. package/application/http.module.js +0 -21
  97. package/application/http.service.d.ts +0 -11
  98. package/application/http.service.js +0 -43
  99. package/application/starter.d.ts +0 -41
  100. package/application/starter.js +0 -140
  101. package/constants.d.ts +0 -12
  102. package/constants.js +0 -15
  103. package/context/context.d.ts +0 -56
  104. package/context/context.js +0 -102
  105. package/context/response.controller.d.ts +0 -30
  106. package/context/response.controller.js +0 -86
  107. package/decorators/controller.decorator.d.ts +0 -82
  108. package/decorators/controller.decorator.js +0 -53
  109. package/decorators/header.decorator.d.ts +0 -12
  110. package/decorators/header.decorator.js +0 -23
  111. package/decorators/http-code.decorator.d.ts +0 -9
  112. package/decorators/http-code.decorator.js +0 -19
  113. package/decorators/index.d.ts +0 -9
  114. package/decorators/index.js +0 -25
  115. package/decorators/redirect.decorator.d.ts +0 -6
  116. package/decorators/redirect.decorator.js +0 -16
  117. package/decorators/render.decorator.d.ts +0 -10
  118. package/decorators/render.decorator.js +0 -20
  119. package/decorators/request-mapping.decorator.d.ts +0 -78
  120. package/decorators/request-mapping.decorator.js +0 -98
  121. package/decorators/route-params.decorator.d.ts +0 -378
  122. package/decorators/route-params.decorator.js +0 -227
  123. package/decorators/sse.decorator.d.ts +0 -6
  124. package/decorators/sse.decorator.js +0 -20
  125. package/decorators/version.decorator.d.ts +0 -7
  126. package/decorators/version.decorator.js +0 -20
  127. package/enums/http-status.enum.d.ts +0 -53
  128. package/enums/http-status.enum.js +0 -57
  129. package/enums/index.d.ts +0 -4
  130. package/enums/index.js +0 -20
  131. package/enums/request-method.enum.d.ts +0 -11
  132. package/enums/request-method.enum.js +0 -15
  133. package/enums/route-paramtypes.enum.d.ts +0 -14
  134. package/enums/route-paramtypes.enum.js +0 -18
  135. package/enums/version-type.enum.d.ts +0 -9
  136. package/enums/version-type.enum.js +0 -13
  137. package/errors/bad-gateway.exception.d.ts +0 -33
  138. package/errors/bad-gateway.exception.js +0 -41
  139. package/errors/bad-request.exception.d.ts +0 -33
  140. package/errors/bad-request.exception.js +0 -41
  141. package/errors/conflict.exception.d.ts +0 -33
  142. package/errors/conflict.exception.js +0 -41
  143. package/errors/forbidden.exception.d.ts +0 -33
  144. package/errors/forbidden.exception.js +0 -41
  145. package/errors/gateway-timeout.exception.d.ts +0 -33
  146. package/errors/gateway-timeout.exception.js +0 -41
  147. package/errors/gone.exception.d.ts +0 -33
  148. package/errors/gone.exception.js +0 -41
  149. package/errors/http-version-not-supported.exception.d.ts +0 -33
  150. package/errors/http-version-not-supported.exception.js +0 -41
  151. package/errors/http.exception.d.ts +0 -79
  152. package/errors/http.exception.js +0 -123
  153. package/errors/im-a-teapot.exception.d.ts +0 -36
  154. package/errors/im-a-teapot.exception.js +0 -44
  155. package/errors/index.d.ts +0 -11
  156. package/errors/index.js +0 -27
  157. package/errors/internal-server-error.exception.d.ts +0 -33
  158. package/errors/internal-server-error.exception.js +0 -41
  159. package/errors/invalid-middleware-configuration.exception.d.ts +0 -4
  160. package/errors/invalid-middleware-configuration.exception.js +0 -11
  161. package/errors/invalid-middleware.exception.d.ts +0 -4
  162. package/errors/invalid-middleware.exception.js +0 -11
  163. package/errors/not-found.exception.d.ts +0 -33
  164. package/errors/not-found.exception.js +0 -41
  165. package/errors/unknown-request-mapping.exception.d.ts +0 -5
  166. package/errors/unknown-request-mapping.exception.js +0 -11
  167. package/exceptions/messages.d.ts +0 -4
  168. package/exceptions/messages.js +0 -13
  169. package/explorers/path.explorer.d.ts +0 -8
  170. package/explorers/path.explorer.js +0 -38
  171. package/explorers/router.explorer.d.ts +0 -51
  172. package/explorers/router.explorer.js +0 -195
  173. package/factory/context-id.factory.d.ts +0 -41
  174. package/factory/context-id.factory.js +0 -52
  175. package/factory/index.d.ts +0 -4
  176. package/factory/index.js +0 -20
  177. package/factory/method.factory.d.ts +0 -5
  178. package/factory/method.factory.js +0 -30
  179. package/factory/params.factory.d.ts +0 -5
  180. package/factory/params.factory.js +0 -39
  181. package/factory/path.factory.d.ts +0 -13
  182. package/factory/path.factory.js +0 -95
  183. package/filters/context.d.ts +0 -9
  184. package/filters/context.js +0 -15
  185. package/filters/filter.d.ts +0 -22
  186. package/filters/filter.js +0 -78
  187. package/helpers/adapter.helper.d.ts +0 -27
  188. package/helpers/adapter.helper.js +0 -37
  189. package/helpers/exclude-route.helper.d.ts +0 -4
  190. package/helpers/exclude-route.helper.js +0 -18
  191. package/helpers/flatten-routes.helper.d.ts +0 -5
  192. package/helpers/flatten-routes.helper.js +0 -27
  193. package/helpers/index.d.ts +0 -6
  194. package/helpers/index.js +0 -22
  195. package/helpers/messages.helper.d.ts +0 -6
  196. package/helpers/messages.helper.js +0 -25
  197. package/helpers/path.helper.d.ts +0 -3
  198. package/helpers/path.helper.js +0 -13
  199. package/helpers/sse.helper.d.ts +0 -45
  200. package/helpers/sse.helper.js +0 -83
  201. package/index.d.ts +0 -1
  202. package/index.js +0 -3
  203. package/interfaces/http/cors.interface.d.ts +0 -58
  204. package/interfaces/http/cors.interface.js +0 -2
  205. package/interfaces/http/exception.interface.d.ts +0 -6
  206. package/interfaces/http/exception.interface.js +0 -2
  207. package/interfaces/http/exclude-route.interface.d.ts +0 -15
  208. package/interfaces/http/exclude-route.interface.js +0 -2
  209. package/interfaces/http/index.d.ts +0 -10
  210. package/interfaces/http/index.js +0 -26
  211. package/interfaces/http/message-event.interface.d.ts +0 -6
  212. package/interfaces/http/message-event.interface.js +0 -2
  213. package/interfaces/http/module.inteface.d.ts +0 -5
  214. package/interfaces/http/module.inteface.js +0 -2
  215. package/interfaces/http/options.interface.d.ts +0 -127
  216. package/interfaces/http/options.interface.js +0 -2
  217. package/interfaces/http/path-metadata.interface.d.ts +0 -31
  218. package/interfaces/http/path-metadata.interface.js +0 -2
  219. package/interfaces/http/prefix-options.interface.d.ts +0 -7
  220. package/interfaces/http/prefix-options.interface.js +0 -2
  221. package/interfaces/http/raw-request.d.ts +0 -4
  222. package/interfaces/http/raw-request.js +0 -2
  223. package/interfaces/http/routes.interface.d.ts +0 -7
  224. package/interfaces/http/routes.interface.js +0 -2
  225. package/interfaces/http/server.interface.d.ts +0 -54
  226. package/interfaces/http/server.interface.js +0 -2
  227. package/interfaces/index.d.ts +0 -3
  228. package/interfaces/index.js +0 -19
  229. package/interfaces/middleware/config-proxy.interface.d.ts +0 -23
  230. package/interfaces/middleware/config-proxy.interface.js +0 -2
  231. package/interfaces/middleware/configuration.interface.d.ts +0 -12
  232. package/interfaces/middleware/configuration.interface.js +0 -2
  233. package/interfaces/middleware/consumer.interface.d.ts +0 -16
  234. package/interfaces/middleware/consumer.interface.js +0 -2
  235. package/interfaces/middleware/index.d.ts +0 -4
  236. package/interfaces/middleware/index.js +0 -20
  237. package/interfaces/middleware/middleware.interface.d.ts +0 -7
  238. package/interfaces/middleware/middleware.interface.js +0 -2
  239. package/interfaces/router/callback-paramtypes.interface.d.ts +0 -1
  240. package/interfaces/router/callback-paramtypes.interface.js +0 -2
  241. package/interfaces/router/definition.interface.d.ts +0 -10
  242. package/interfaces/router/definition.interface.js +0 -2
  243. package/interfaces/router/index.d.ts +0 -3
  244. package/interfaces/router/index.js +0 -19
  245. package/interfaces/router/version-options.interface.d.ts +0 -92
  246. package/interfaces/router/version-options.interface.js +0 -9
  247. package/middleware/builder.d.ts +0 -15
  248. package/middleware/builder.js +0 -78
  249. package/middleware/container.d.ts +0 -13
  250. package/middleware/container.js +0 -50
  251. package/middleware/extractor.d.ts +0 -15
  252. package/middleware/extractor.js +0 -50
  253. package/middleware/index.d.ts +0 -1
  254. package/middleware/index.js +0 -17
  255. package/middleware/module.d.ts +0 -33
  256. package/middleware/module.js +0 -180
  257. package/middleware/resolver.d.ts +0 -10
  258. package/middleware/resolver.js +0 -27
  259. package/middleware/routes-mapper.d.ts +0 -19
  260. package/middleware/routes-mapper.js +0 -111
  261. package/middleware/utils.d.ts +0 -8
  262. package/middleware/utils.js +0 -86
  263. package/router/module.d.ts +0 -18
  264. package/router/module.js +0 -88
  265. package/router/resolver.d.ts +0 -31
  266. package/router/resolver.js +0 -128
  267. package/storage/http-instance.storage.d.ts +0 -9
  268. package/storage/http-instance.storage.js +0 -19
  269. package/stream/index.d.ts +0 -1
  270. package/stream/index.js +0 -17
  271. package/stream/interfaces/index.d.ts +0 -2
  272. package/stream/interfaces/index.js +0 -18
  273. package/stream/interfaces/streamable-handler-response.interface.d.ts +0 -12
  274. package/stream/interfaces/streamable-handler-response.interface.js +0 -2
  275. package/stream/interfaces/streamable-options.interface.d.ts +0 -10
  276. package/stream/interfaces/streamable-options.interface.js +0 -2
  277. package/stream/streamable-file.d.ts +0 -22
  278. package/stream/streamable-file.js +0 -55
  279. package/test/context/response.controller.spec.d.ts +0 -1
  280. package/test/context/response.controller.spec.js +0 -328
  281. package/test/decorators/controller.decorator.spec.d.ts +0 -1
  282. package/test/decorators/controller.decorator.spec.js +0 -113
  283. package/test/decorators/header.decorator.spec.d.ts +0 -1
  284. package/test/decorators/header.decorator.spec.js +0 -33
  285. package/test/decorators/http-code.decorator.spec.d.ts +0 -1
  286. package/test/decorators/http-code.decorator.spec.js +0 -30
  287. package/test/decorators/redirect.decorator.spec.d.ts +0 -1
  288. package/test/decorators/redirect.decorator.spec.js +0 -36
  289. package/test/decorators/render.decorator.spec.d.ts +0 -1
  290. package/test/decorators/render.decorator.spec.js +0 -30
  291. package/test/decorators/request-mapping.decorator.spec.d.ts +0 -1
  292. package/test/decorators/request-mapping.decorator.spec.js +0 -85
  293. package/test/decorators/route-params.decorator.spec.d.ts +0 -1
  294. package/test/decorators/route-params.decorator.spec.js +0 -493
  295. package/test/decorators/sse.decorator.spec.d.ts +0 -1
  296. package/test/decorators/sse.decorator.spec.js +0 -35
  297. package/test/decorators/version.decorator.spec.d.ts +0 -1
  298. package/test/decorators/version.decorator.spec.js +0 -43
  299. package/test/exceptions/handler.spec.d.ts +0 -1
  300. package/test/exceptions/handler.spec.js +0 -145
  301. package/test/exceptions/proxy.spec.d.ts +0 -1
  302. package/test/exceptions/proxy.spec.js +0 -74
  303. package/test/explorers/path.explorer.spec.d.ts +0 -1
  304. package/test/explorers/path.explorer.spec.js +0 -190
  305. package/test/explorers/router.explorer.spec.d.ts +0 -1
  306. package/test/explorers/router.explorer.spec.js +0 -206
  307. package/test/factory/method.factory.spec.d.ts +0 -1
  308. package/test/factory/method.factory.spec.js +0 -33
  309. package/test/factory/params.factory.spec.d.ts +0 -1
  310. package/test/factory/params.factory.spec.js +0 -104
  311. package/test/factory/path.factory.spec.d.ts +0 -1
  312. package/test/factory/path.factory.spec.js +0 -260
  313. package/test/filters/context.spec.d.ts +0 -1
  314. package/test/filters/context.spec.js +0 -96
  315. package/test/filters/filter.spec.d.ts +0 -1
  316. package/test/filters/filter.spec.js +0 -96
  317. package/test/helpers/flatten-routes.helper.spec.d.ts +0 -1
  318. package/test/helpers/flatten-routes.helper.spec.js +0 -131
  319. package/test/helpers/sse.helper.spec.d.ts +0 -1
  320. package/test/helpers/sse.helper.spec.js +0 -132
  321. package/test/middleware/builder.spec.d.ts +0 -1
  322. package/test/middleware/builder.spec.js +0 -235
  323. package/test/middleware/container.spec.d.ts +0 -1
  324. package/test/middleware/container.spec.js +0 -81
  325. package/test/middleware/module.spec.d.ts +0 -1
  326. package/test/middleware/module.spec.js +0 -206
  327. package/test/middleware/route-info-path-extractor.spec.d.ts +0 -1
  328. package/test/middleware/route-info-path-extractor.spec.js +0 -123
  329. package/test/middleware/routes-mapper.spec.d.ts +0 -1
  330. package/test/middleware/routes-mapper.spec.js +0 -162
  331. package/test/middleware/utils.spec.d.ts +0 -1
  332. package/test/middleware/utils.spec.js +0 -132
  333. package/test/router/module.spec.d.ts +0 -1
  334. package/test/router/module.spec.js +0 -40
  335. package/test/router/resolver.spec.d.ts +0 -1
  336. package/test/router/resolver.spec.js +0 -326
  337. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,294 @@
1
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1;i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
12
+ var __legacyMetadataTS = (k, v) => {
13
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
14
+ return Reflect.metadata(k, v);
15
+ };
16
+
17
+ // packages/http/src/http/adapter.ts
18
+ import { isFunction, isNumber, isString, isUndefined, VenokProxy } from "@venok/core";
19
+ import {
20
+ VENOK_ADAPTER_ADD_MIDDLEWARE,
21
+ VENOK_ADAPTER_ADD_ROUTE,
22
+ VENOK_ADAPTER_BUILD,
23
+ VENOK_ADAPTER_SET_EXCEPTION_FILTER,
24
+ VENOK_ADAPTER_TRANSFORM_NATIVE_ARGS_TO_CONTEXT
25
+ } from "../symbols.js";
26
+ import { VERSION_NEUTRAL } from "../interfaces/router/version.interface.js";
27
+ import { buildMiddlewareTree, getMiddlewaresForPattern } from "../middleware/tree.js";
28
+ import { mapToExcludeRoute } from "../helpers/middleware.helper.js";
29
+ import { isRouteExcluded } from "../helpers/route.helper.js";
30
+ import { getPathType } from "../helpers/path.helper.js";
31
+ import { HttpVersioningType } from "../enums/version-type.enum.js";
32
+ import { HttpMethod } from "../enums/method.enum.js";
33
+ import { ForbiddenException } from "../exceptions/forbidden.exception.js";
34
+ import { NotFoundException } from "../exceptions/not-found.exception.js";
35
+ import { HttpExceptionFiltersContext } from "../filters/context.js";
36
+ var isStringEmptyOrSpaces = (str) => {
37
+ return str === null || str.match(/^ *$/) !== null;
38
+ };
39
+
40
+ class AbstractHttpAdapter {
41
+ #instance;
42
+ #filterContext;
43
+ constructor(instance) {
44
+ this.#instance = instance;
45
+ }
46
+ get instance() {
47
+ return this.#instance;
48
+ }
49
+ routes = new Map;
50
+ globalVenokMiddlewares = new Set;
51
+ exactVenokMiddlewares = new Map;
52
+ patternVenokMiddlewares = new Map;
53
+ convertMiddlewares(collection) {
54
+ return [...collection].map(([path, handlers]) => ({ path, handlers }));
55
+ }
56
+ applyMiddlewareFilterToHandler(metadata) {
57
+ if (metadata.excludedPaths) {
58
+ const excludedPaths = mapToExcludeRoute(metadata.excludedPaths);
59
+ return async (context) => {
60
+ const reqMethod = this.getRequestMethod(context);
61
+ const originalUrl = this.getRequestUrl(context);
62
+ const queryParamsIndex = originalUrl && originalUrl.indexOf("?");
63
+ const pathname = isNumber(queryParamsIndex) && queryParamsIndex >= 0 ? originalUrl.slice(0, +queryParamsIndex) : originalUrl;
64
+ const excluded = isRouteExcluded(excludedPaths, pathname, reqMethod);
65
+ if (excluded)
66
+ return;
67
+ const result = await metadata.use(context);
68
+ if (result)
69
+ this.setResponseReply(context, result);
70
+ };
71
+ }
72
+ return async (context) => {
73
+ const result = await metadata.use(context);
74
+ if (result)
75
+ this.setResponseReply(context, result);
76
+ };
77
+ }
78
+ applyHostFilterToHandler(handler, hosts) {
79
+ return (context) => {
80
+ const parsedHosts = {};
81
+ const hostname = this.getRequestHostname(context) || "";
82
+ for (const exp of hosts) {
83
+ const match = hostname.match(exp.regexp);
84
+ if (match) {
85
+ if (exp.keys.length > 0) {
86
+ exp.keys.forEach((key, i) => parsedHosts[key.name] = match[i + 1]);
87
+ } else if (exp.regexp && match.groups) {
88
+ for (const groupName in match.groups)
89
+ parsedHosts[groupName] = match.groups[groupName];
90
+ }
91
+ this.addAdditionalProp(context, "hosts", parsedHosts);
92
+ return handler(context);
93
+ }
94
+ }
95
+ throw new ForbiddenException(`Request from this host (${hostname}) is prohibited`);
96
+ };
97
+ }
98
+ applyVersionFilterToHandler(handler, version, options) {
99
+ return (originalContext) => {
100
+ if (version === VERSION_NEUTRAL || options.type === HttpVersioningType.URI)
101
+ return handler(originalContext);
102
+ if (options.type === HttpVersioningType.CUSTOM) {
103
+ const handlerForCustomVersioning = (context) => {
104
+ const extractedVersion = options.extractor(context);
105
+ if (Array.isArray(version)) {
106
+ const isVersionIncluded = version.filter((v) => extractedVersion.includes(v));
107
+ if (Array.isArray(extractedVersion) && isVersionIncluded.length)
108
+ return handler(context);
109
+ if (isString(extractedVersion) && version.includes(extractedVersion))
110
+ return handler(context);
111
+ } else if (isString(version)) {
112
+ if (Array.isArray(extractedVersion) && extractedVersion.includes(version))
113
+ return handler(context);
114
+ if (isString(extractedVersion) && version === extractedVersion)
115
+ return handler(context);
116
+ }
117
+ return;
118
+ };
119
+ return handlerForCustomVersioning(originalContext);
120
+ }
121
+ if (options.type === HttpVersioningType.MEDIA_TYPE) {
122
+ const handlerForMediaTypeVersioning = (context) => {
123
+ const MEDIA_TYPE_HEADER = "Accept";
124
+ const headers = this.getRequestHeaders(context);
125
+ const acceptHeaderValue = headers?.[MEDIA_TYPE_HEADER] || headers?.[MEDIA_TYPE_HEADER.toLowerCase()];
126
+ const acceptHeaderVersionParameter = acceptHeaderValue ? acceptHeaderValue.split(";")[1] : undefined;
127
+ if (isUndefined(acceptHeaderVersionParameter)) {
128
+ if (Array.isArray(version)) {
129
+ if (version.includes(VERSION_NEUTRAL))
130
+ return handler(context);
131
+ }
132
+ } else {
133
+ const headerVersion = acceptHeaderVersionParameter.split(options.key)[1];
134
+ if (Array.isArray(version)) {
135
+ if (version.includes(headerVersion))
136
+ return handler(context);
137
+ else if (isString(version)) {
138
+ if (version === headerVersion)
139
+ return handler(context);
140
+ }
141
+ }
142
+ }
143
+ return;
144
+ };
145
+ return handlerForMediaTypeVersioning(originalContext);
146
+ }
147
+ if (options.type === HttpVersioningType.HEADER) {
148
+ const handlerForHeaderVersioning = (context) => {
149
+ const headers = this.getRequestHeaders(context);
150
+ const customHeaderVersionParameter = headers?.[options.header] || headers?.[options.header.toLowerCase()];
151
+ if (isUndefined(customHeaderVersionParameter) || isStringEmptyOrSpaces(customHeaderVersionParameter || "")) {
152
+ if (Array.isArray(version) && version.includes(VERSION_NEUTRAL))
153
+ return handler(context);
154
+ } else {
155
+ if (Array.isArray(version)) {
156
+ if (version.includes(customHeaderVersionParameter?.toString()))
157
+ return handler(context);
158
+ } else if (isString(version)) {
159
+ if (version === customHeaderVersionParameter?.toString())
160
+ return handler(context);
161
+ }
162
+ }
163
+ return;
164
+ };
165
+ return handlerForHeaderVersioning(originalContext);
166
+ }
167
+ };
168
+ }
169
+ async runChain(context, handlers) {
170
+ for (const handler of handlers) {
171
+ if (this.isResponseHandled(context))
172
+ break;
173
+ await handler(context);
174
+ }
175
+ if (!this.isResponseHandled(context))
176
+ throw new NotFoundException;
177
+ }
178
+ createExceptionHandler(callback) {
179
+ return this.#filterContext.create({}, callback, undefined);
180
+ }
181
+ [VENOK_ADAPTER_SET_EXCEPTION_FILTER](container, config) {
182
+ this.#filterContext = new HttpExceptionFiltersContext(container, config);
183
+ }
184
+ [VENOK_ADAPTER_BUILD]() {
185
+ const middlewares = [
186
+ ...this.convertMiddlewares(this.exactVenokMiddlewares),
187
+ ...this.convertMiddlewares(this.patternVenokMiddlewares)
188
+ ];
189
+ const tree = buildMiddlewareTree(middlewares);
190
+ const result = new Map;
191
+ const venokProxy = new VenokProxy;
192
+ for (const [path, metadata] of this.routes) {
193
+ const mws = getMiddlewaresForPattern(tree, path, metadata.method);
194
+ const proxiedMiddlewares = mws.map((m) => m.handlers.map((metadata2) => this.applyMiddlewareFilterToHandler(metadata2))).flat(2);
195
+ const proxiedHandlers = metadata.handlers.map((handlerMetadata) => {
196
+ let callback = handlerMetadata.handler;
197
+ if (metadata.useHostFilter) {
198
+ callback = this.applyHostFilterToHandler(callback, metadata.hosts);
199
+ }
200
+ if (metadata.useVersionFilter) {
201
+ callback = this.applyVersionFilterToHandler(callback, handlerMetadata.version, metadata.versioningOptions);
202
+ }
203
+ return callback;
204
+ });
205
+ const chain = [...proxiedMiddlewares, ...proxiedHandlers];
206
+ const handler = this.createExceptionHandler(this.runChain.bind(this));
207
+ const proxy = venokProxy.createProxy(this.runChain.bind(this), handler);
208
+ const instanceCallback = async (...args) => {
209
+ const context = this[VENOK_ADAPTER_TRANSFORM_NATIVE_ARGS_TO_CONTEXT](...args);
210
+ await proxy(context, chain);
211
+ };
212
+ result.set(path, { handler: instanceCallback, method: metadata.method });
213
+ }
214
+ return result;
215
+ }
216
+ use(pathOrHandler, handler) {
217
+ if (isString(pathOrHandler)) {
218
+ if (!isFunction(handler)) {
219
+ console.error();
220
+ return this;
221
+ }
222
+ if (getPathType(pathOrHandler) === "static")
223
+ this.addUserMiddleware(this.exactVenokMiddlewares, pathOrHandler, { use: handler, method: HttpMethod.ALL });
224
+ else
225
+ this.addUserMiddleware(this.patternVenokMiddlewares, pathOrHandler, { use: handler, method: HttpMethod.ALL });
226
+ return this;
227
+ }
228
+ this.globalVenokMiddlewares.add(pathOrHandler);
229
+ return this;
230
+ }
231
+ get(path, handler) {
232
+ return this.addUserRoute(path, HttpMethod.GET, handler);
233
+ }
234
+ post(path, handler) {
235
+ return this.addUserRoute(path, HttpMethod.POST, handler);
236
+ }
237
+ put(path, handler) {
238
+ return this.addUserRoute(path, HttpMethod.PUT, handler);
239
+ }
240
+ delete(path, handler) {
241
+ return this.addUserRoute(path, HttpMethod.DELETE, handler);
242
+ }
243
+ patch(path, handler) {
244
+ return this.addUserRoute(path, HttpMethod.PATCH, handler);
245
+ }
246
+ all(path, handler) {
247
+ return this.addUserRoute(path, HttpMethod.ALL, handler);
248
+ }
249
+ options(path, handler) {
250
+ return this.addUserRoute(path, HttpMethod.OPTIONS, handler);
251
+ }
252
+ head(path, handler) {
253
+ return this.addUserRoute(path, HttpMethod.HEAD, handler);
254
+ }
255
+ search(path, handler) {
256
+ return this.addUserRoute(path, HttpMethod.SEARCH, handler);
257
+ }
258
+ [VENOK_ADAPTER_ADD_ROUTE](path, info) {
259
+ if (!this.routes.has(path)) {
260
+ this.routes.set(path, info);
261
+ return this;
262
+ }
263
+ this.routes.get(path).handlers.push(info.handlers[0]);
264
+ return this;
265
+ }
266
+ [VENOK_ADAPTER_ADD_MIDDLEWARE](path, metadata) {
267
+ if (getPathType(path) === "static")
268
+ this.addUserMiddleware(this.exactVenokMiddlewares, path, metadata);
269
+ else
270
+ this.addUserMiddleware(this.patternVenokMiddlewares, path, metadata);
271
+ return this;
272
+ }
273
+ addUserMiddleware(collection, path, metadata) {
274
+ if (collection.has(path))
275
+ collection.get(path).push(metadata);
276
+ else
277
+ collection.set(path, [metadata]);
278
+ }
279
+ addUserRoute(path, method, handler) {
280
+ if (this.routes.has(path))
281
+ throw new Error;
282
+ const route = {
283
+ useVersionFilter: false,
284
+ useHostFilter: false,
285
+ method,
286
+ handlers: [{ handler }]
287
+ };
288
+ this.routes.set(path, route);
289
+ return this;
290
+ }
291
+ }
292
+ export {
293
+ AbstractHttpAdapter
294
+ };
@@ -0,0 +1,67 @@
1
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1;i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
12
+ var __legacyMetadataTS = (k, v) => {
13
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
14
+ return Reflect.metadata(k, v);
15
+ };
16
+
17
+ // packages/http/src/http/config.ts
18
+ import { Inject, Injectable } from "@venok/core";
19
+ import { HTTP_APP_OPTIONS } from "../http/configurable-module.js";
20
+ class HttpConfig {
21
+ options;
22
+ globalPrefix = "";
23
+ globalPrefixOptions = {};
24
+ versioningOptions;
25
+ adapter;
26
+ constructor(options) {
27
+ this.options = options;
28
+ this.adapter = this.options.adapter;
29
+ }
30
+ setHttpAdapter(httpAdapter) {
31
+ this.adapter = httpAdapter;
32
+ }
33
+ getHttpAdapterRef() {
34
+ return this.adapter;
35
+ }
36
+ setGlobalPrefix(prefix) {
37
+ this.globalPrefix = prefix;
38
+ }
39
+ getGlobalPrefix() {
40
+ return this.globalPrefix;
41
+ }
42
+ setGlobalPrefixOptions(options) {
43
+ this.globalPrefixOptions = options;
44
+ }
45
+ getGlobalPrefixOptions() {
46
+ return this.globalPrefixOptions;
47
+ }
48
+ enableVersioning(options) {
49
+ if (Array.isArray(options.defaultVersion)) {
50
+ options.defaultVersion = Array.from(new Set(options.defaultVersion));
51
+ }
52
+ this.versioningOptions = options;
53
+ }
54
+ getVersioning() {
55
+ return this.versioningOptions;
56
+ }
57
+ }
58
+ HttpConfig = __legacyDecorateClassTS([
59
+ Injectable(),
60
+ __legacyDecorateParamTS(0, Inject(HTTP_APP_OPTIONS)),
61
+ __legacyMetadataTS("design:paramtypes", [
62
+ typeof Required === "undefined" ? Object : Required
63
+ ])
64
+ ], HttpConfig);
65
+ export {
66
+ HttpConfig
67
+ };
@@ -0,0 +1,26 @@
1
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1;i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
12
+ var __legacyMetadataTS = (k, v) => {
13
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
14
+ return Reflect.metadata(k, v);
15
+ };
16
+
17
+ // packages/http/src/http/configurable-module.ts
18
+ import { ConfigurableModuleBuilder } from "@venok/integration";
19
+ var {
20
+ ConfigurableModuleClass: HttpConfigurableModuleClass,
21
+ MODULE_OPTIONS_TOKEN: HTTP_APP_OPTIONS
22
+ } = new ConfigurableModuleBuilder().build();
23
+ export {
24
+ HttpConfigurableModuleClass,
25
+ HTTP_APP_OPTIONS
26
+ };
@@ -0,0 +1,117 @@
1
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1;i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
12
+ var __legacyMetadataTS = (k, v) => {
13
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
14
+ return Reflect.metadata(k, v);
15
+ };
16
+
17
+ // packages/http/src/http/context.ts
18
+ import { ApplicationContext, isEmpty, isString, STATIC_CONTEXT, VenokContextCreator } from "@venok/core";
19
+ import { isObservable, lastValueFrom } from "rxjs";
20
+ import {
21
+ HEADERS_METADATA,
22
+ METHOD_METADATA,
23
+ REDIRECT_METADATA,
24
+ RESPONSE_PASSTHROUGH_METADATA
25
+ } from "../constants.js";
26
+ import { HttpCode } from "../decorators/http-code.decorator.js";
27
+ import { HttpParamtypes } from "../enums/paramtypes.enum.js";
28
+ import { HttpStatus } from "../enums/status.enum.js";
29
+ import { HttpConfig } from "../http/config.js";
30
+
31
+ class HttpContextCreator extends VenokContextCreator {
32
+ _adapter;
33
+ get adapter() {
34
+ if (this._adapter)
35
+ return this._adapter;
36
+ const context = new ApplicationContext(this.container, this.container.applicationConfig);
37
+ this._adapter = context.get(HttpConfig).getHttpAdapterRef();
38
+ return this._adapter;
39
+ }
40
+ create(instance, callback, methodName, metadataKey, paramsFactory, contextId = STATIC_CONTEXT, inquirerId, options = {
41
+ interceptors: true,
42
+ guards: true,
43
+ filters: false,
44
+ callback: undefined
45
+ }, contextType = "native") {
46
+ const moduleKey = this.getContextModuleKey(instance.constructor);
47
+ const { getParamsMetadata } = super.getMetadata(instance, methodName, metadataKey, paramsFactory, contextType);
48
+ const { fnHandleResponse, httpStatusCode, responseHeaders, hasCustomHeaders } = this.getExternalMetadata(getParamsMetadata, instance, callback, methodName, moduleKey);
49
+ const doneCallback = async (result2, ctx) => {
50
+ this.adapter.setResponseStatus(ctx, httpStatusCode);
51
+ if (hasCustomHeaders) {
52
+ responseHeaders.forEach(({ name, value }) => this.adapter.setResponseHeader(ctx, name, value));
53
+ }
54
+ await fnHandleResponse(result2, ctx);
55
+ };
56
+ const result = super.create(instance, callback, methodName, metadataKey, paramsFactory, contextId, inquirerId, { ...options, callback: doneCallback }, contextType);
57
+ const exceptionFilter = this.filtersContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);
58
+ return this.venokProxy.createProxy(result, exceptionFilter);
59
+ }
60
+ getExternalMetadata(getParamsMetadata, instance, callback, methodName, moduleKey) {
61
+ const paramsMetadata = getParamsMetadata(moduleKey);
62
+ const isResponsePassthrough = this.isResponsePassthrough(instance, methodName, paramsMetadata);
63
+ const httpRedirectResponse = this.reflectRedirect(callback);
64
+ const fnHandleResponse = this.createHandleResponseFn(callback, isResponsePassthrough, httpRedirectResponse);
65
+ const method = this.reflectMethod(callback);
66
+ const httpCode = this.reflectHttpStatusCode(callback);
67
+ const httpStatusCode = httpCode ? httpCode : this.adapter.getStatusByMethod(method);
68
+ const responseHeaders = this.reflectResponseHeaders(callback);
69
+ const hasCustomHeaders = !isEmpty(responseHeaders);
70
+ return {
71
+ fnHandleResponse,
72
+ httpStatusCode,
73
+ hasCustomHeaders,
74
+ responseHeaders
75
+ };
76
+ }
77
+ reflectRedirect(callback) {
78
+ return Reflect.getMetadata(REDIRECT_METADATA, callback);
79
+ }
80
+ reflectMethod(callback) {
81
+ return Reflect.getMetadata(METHOD_METADATA, callback);
82
+ }
83
+ reflectResponseHeaders(callback) {
84
+ return Reflect.getMetadata(HEADERS_METADATA, callback) || [];
85
+ }
86
+ reflectHttpStatusCode(callback) {
87
+ return this.reflector.get(HttpCode, callback);
88
+ }
89
+ createHandleResponseFn(callback, isResponsePassthrough, redirectResponse) {
90
+ if (redirectResponse && isString(redirectResponse.url)) {
91
+ return async (result, ctx) => {
92
+ result = await this.transformToResult(result);
93
+ const statusCode = result && result.statusCode ? result.statusCode : redirectResponse.statusCode ? redirectResponse.statusCode : HttpStatus.FOUND;
94
+ const url = result && result.url ? result.url : redirectResponse.url;
95
+ await this.adapter.setResponseRedirect(ctx, statusCode, url);
96
+ };
97
+ }
98
+ return async (result, ctx) => {
99
+ result = await this.transformToResult(result);
100
+ !isResponsePassthrough && await this.adapter.setResponseReply(ctx, result, undefined);
101
+ return ctx;
102
+ };
103
+ }
104
+ async transformToResult(resultOrDeferred) {
105
+ if (isObservable(resultOrDeferred))
106
+ return lastValueFrom(resultOrDeferred);
107
+ return resultOrDeferred;
108
+ }
109
+ isResponsePassthrough(instance, methodName, paramsMetadata) {
110
+ const hasResponseOrNextDecorator = paramsMetadata.some(({ type }) => type === HttpParamtypes.CONTEXT);
111
+ const isPassthroughEnabled = Reflect.getMetadata(RESPONSE_PASSTHROUGH_METADATA, instance.constructor, methodName);
112
+ return hasResponseOrNextDecorator && !isPassthroughEnabled;
113
+ }
114
+ }
115
+ export {
116
+ HttpContextCreator
117
+ };
@@ -0,0 +1,133 @@
1
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1;i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
12
+ var __legacyMetadataTS = (k, v) => {
13
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
14
+ return Reflect.metadata(k, v);
15
+ };
16
+
17
+ // packages/http/src/http/explorer.ts
18
+ import { Inject, Logger, MetadataScanner, MODULE_PATH } from "@venok/core";
19
+ import { ExplorerService } from "@venok/integration";
20
+ import { pathToRegexp } from "path-to-regexp";
21
+ import { RouteDiscovery } from "../helpers/discovery.helper.js";
22
+ import { HttpVersioningType } from "../enums/version-type.enum.js";
23
+ import { addLeadingSlash } from "../helpers/path.helper.js";
24
+ import { RoutePathFactory } from "../router/path-factory.js";
25
+ import { RouteFinder } from "../router/finder.js";
26
+ import { HttpExceptionFiltersContext } from "../filters/context.js";
27
+ import { HttpContextCreator } from "../http/context.js";
28
+ import { HttpConfig } from "../http/config.js";
29
+ import { CONTROLLER_MAPPING_MESSAGE, ROUTE_MAPPED_MESSAGE, VERSIONED_CONTROLLER_MAPPING_MESSAGE, VERSIONED_ROUTE_MAPPED_MESSAGE } from "../helpers/messages.helper.js";
30
+ class HttpExplorerService extends ExplorerService {
31
+ paramsFactory;
32
+ pathFactory;
33
+ logger = new Logger(HttpExplorerService.name, { timestamp: true });
34
+ routeFinder = new RouteFinder(new MetadataScanner);
35
+ onModuleInit() {
36
+ this.pathFactory = new RoutePathFactory(this.httpConfig);
37
+ this.paramsFactory = this.httpConfig.getHttpAdapterRef().getParamsFactory();
38
+ }
39
+ getSettings() {
40
+ return {
41
+ contextType: "http",
42
+ isRequestScopeSupported: true,
43
+ exceptionsFilterClass: HttpExceptionFiltersContext,
44
+ contextCreatorClass: HttpContextCreator,
45
+ options: { guards: true, interceptors: true, filters: false }
46
+ };
47
+ }
48
+ filterProperties(wrapper, metadataKey) {
49
+ if (!wrapper.metatype)
50
+ return;
51
+ const controllerDiscovery = this.get(metadataKey, wrapper.metatype);
52
+ if (!controllerDiscovery)
53
+ return;
54
+ const info = this.routeFinder.getControllerInfo(controllerDiscovery, this.httpConfig);
55
+ const name = wrapper.metatype.name;
56
+ const globalPrefix = addLeadingSlash(this.httpConfig.getGlobalPrefix());
57
+ const modulePath = this.getModulePathMetadata(wrapper.metatype);
58
+ controllerDiscovery.setDiscovery({ class: wrapper.instance.constructor });
59
+ info.prefixes.forEach((controllerPath) => {
60
+ this.logController(controllerPath, info.version, name, globalPrefix, modulePath);
61
+ const routes = this.routeFinder.getControllerRoutes(wrapper.instance);
62
+ routes.forEach((route) => {
63
+ const callback = this.createCallback(wrapper, route.methodName);
64
+ const isVersioned = !!((route.version || info.version) && info.versioningOptions);
65
+ route.paths.map((methodPath) => {
66
+ const metadata = {
67
+ modulePath,
68
+ globalPrefix,
69
+ methodPath,
70
+ controllerPath,
71
+ methodVersion: route.version,
72
+ controllerVersion: info.version,
73
+ versioningOptions: info.versioningOptions
74
+ };
75
+ this.pathFactory.create(metadata, route.requestMethod).forEach((path) => {
76
+ let parsedHosts = undefined;
77
+ if (info.host) {
78
+ const hosts = Array.isArray(info.host) ? info.host : [info.host];
79
+ parsedHosts = hosts.map((host) => {
80
+ const keys = [];
81
+ const regexp = pathToRegexp(host, keys);
82
+ return { regexp, keys };
83
+ });
84
+ }
85
+ const routeDiscovery = new RouteDiscovery({
86
+ path,
87
+ method: route.requestMethod,
88
+ useVersionFilter: isVersioned && info.versioningOptions.type !== HttpVersioningType.URI,
89
+ hosts: parsedHosts,
90
+ versioningOptions: info.versioningOptions,
91
+ useHostFilter: !!info.host,
92
+ handlers: [
93
+ {
94
+ handler: callback,
95
+ version: this.pathFactory.getVersion(metadata)
96
+ }
97
+ ]
98
+ });
99
+ routeDiscovery.setDiscovery({ class: wrapper.instance.constructor, handler: wrapper.instance[route.methodName] });
100
+ controllerDiscovery.pushItem(routeDiscovery);
101
+ });
102
+ this.logRoute(metadata, route.requestMethod, isVersioned);
103
+ });
104
+ });
105
+ });
106
+ return controllerDiscovery;
107
+ }
108
+ getModulePathMetadata(metatype) {
109
+ const modulesContainer = this.container.getModules();
110
+ const modulePath = Reflect.getMetadata(MODULE_PATH + modulesContainer.applicationId, metatype);
111
+ return modulePath ?? Reflect.getMetadata(MODULE_PATH, metatype);
112
+ }
113
+ logController(path, version, name, globalPrefix, modulePath) {
114
+ this.pathFactory.create({ controllerPath: path, globalPrefix, modulePath }).forEach((controllerPath) => {
115
+ const message = !version ? CONTROLLER_MAPPING_MESSAGE(name, controllerPath) : VERSIONED_CONTROLLER_MAPPING_MESSAGE(name, controllerPath, version);
116
+ this.logger.log(message);
117
+ });
118
+ }
119
+ logRoute(metadata, method, isVersioned) {
120
+ const pathsToLog = this.pathFactory.create({ ...metadata, versioningOptions: undefined }, method);
121
+ pathsToLog.forEach((routePath) => {
122
+ const message = isVersioned ? VERSIONED_ROUTE_MAPPED_MESSAGE(routePath, method, this.pathFactory.getVersion(metadata)) : ROUTE_MAPPED_MESSAGE(routePath, method);
123
+ this.logger.log(message);
124
+ });
125
+ }
126
+ }
127
+ __legacyDecorateClassTS([
128
+ Inject(HttpConfig),
129
+ __legacyMetadataTS("design:type", typeof HttpConfig === "undefined" ? Object : HttpConfig)
130
+ ], HttpExplorerService.prototype, "httpConfig", undefined);
131
+ export {
132
+ HttpExplorerService
133
+ };
@@ -0,0 +1,35 @@
1
+ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4
+ r = Reflect.decorate(decorators, target, key, desc);
5
+ else
6
+ for (var i = decorators.length - 1;i >= 0; i--)
7
+ if (d = decorators[i])
8
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
12
+ var __legacyMetadataTS = (k, v) => {
13
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
14
+ return Reflect.metadata(k, v);
15
+ };
16
+
17
+ // packages/http/src/http/module.ts
18
+ import { IntegrationModule } from "@venok/integration";
19
+ import { Module } from "@venok/core";
20
+ import { HttpConfigurableModuleClass } from "../http/configurable-module.js";
21
+ import { HttpMiddlewareService } from "../middleware/service.js";
22
+ import { HttpStarterModule } from "../http/starter-module.js";
23
+ import { HttpExplorerService } from "../http/explorer.js";
24
+ import { HttpConfig } from "../http/config.js";
25
+ class HttpModule extends HttpConfigurableModuleClass {
26
+ }
27
+ HttpModule = __legacyDecorateClassTS([
28
+ Module({
29
+ imports: [IntegrationModule],
30
+ providers: [HttpConfig, HttpMiddlewareService, HttpExplorerService, HttpStarterModule]
31
+ })
32
+ ], HttpModule);
33
+ export {
34
+ HttpModule
35
+ };