@venok/http 1.0.1-canary.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 (254) hide show
  1. package/adapter/adapter.d.ts +57 -0
  2. package/adapter/adapter.js +58 -0
  3. package/adapter/host.d.ts +27 -0
  4. package/adapter/host.js +33 -0
  5. package/application/application.d.ts +18 -0
  6. package/application/application.js +51 -0
  7. package/application/config.d.ts +16 -0
  8. package/application/config.js +47 -0
  9. package/application/http.module-defenition.d.ts +8 -0
  10. package/application/http.module-defenition.js +6 -0
  11. package/application/http.module.d.ts +3 -0
  12. package/application/http.module.js +21 -0
  13. package/application/http.service.d.ts +11 -0
  14. package/application/http.service.js +43 -0
  15. package/application/starter.d.ts +41 -0
  16. package/application/starter.js +140 -0
  17. package/constants.d.ts +12 -0
  18. package/constants.js +15 -0
  19. package/context/context.d.ts +56 -0
  20. package/context/context.js +102 -0
  21. package/context/response.controller.d.ts +30 -0
  22. package/context/response.controller.js +86 -0
  23. package/decorators/controller.decorator.d.ts +82 -0
  24. package/decorators/controller.decorator.js +53 -0
  25. package/decorators/header.decorator.d.ts +12 -0
  26. package/decorators/header.decorator.js +23 -0
  27. package/decorators/http-code.decorator.d.ts +9 -0
  28. package/decorators/http-code.decorator.js +19 -0
  29. package/decorators/index.d.ts +9 -0
  30. package/decorators/index.js +25 -0
  31. package/decorators/redirect.decorator.d.ts +6 -0
  32. package/decorators/redirect.decorator.js +16 -0
  33. package/decorators/render.decorator.d.ts +10 -0
  34. package/decorators/render.decorator.js +20 -0
  35. package/decorators/request-mapping.decorator.d.ts +78 -0
  36. package/decorators/request-mapping.decorator.js +98 -0
  37. package/decorators/route-params.decorator.d.ts +378 -0
  38. package/decorators/route-params.decorator.js +227 -0
  39. package/decorators/sse.decorator.d.ts +6 -0
  40. package/decorators/sse.decorator.js +20 -0
  41. package/decorators/version.decorator.d.ts +7 -0
  42. package/decorators/version.decorator.js +20 -0
  43. package/enums/http-status.enum.d.ts +53 -0
  44. package/enums/http-status.enum.js +57 -0
  45. package/enums/index.d.ts +4 -0
  46. package/enums/index.js +20 -0
  47. package/enums/request-method.enum.d.ts +11 -0
  48. package/enums/request-method.enum.js +15 -0
  49. package/enums/route-paramtypes.enum.d.ts +14 -0
  50. package/enums/route-paramtypes.enum.js +18 -0
  51. package/enums/version-type.enum.d.ts +9 -0
  52. package/enums/version-type.enum.js +13 -0
  53. package/errors/bad-gateway.exception.d.ts +33 -0
  54. package/errors/bad-gateway.exception.js +41 -0
  55. package/errors/bad-request.exception.d.ts +33 -0
  56. package/errors/bad-request.exception.js +41 -0
  57. package/errors/conflict.exception.d.ts +33 -0
  58. package/errors/conflict.exception.js +41 -0
  59. package/errors/forbidden.exception.d.ts +33 -0
  60. package/errors/forbidden.exception.js +41 -0
  61. package/errors/gateway-timeout.exception.d.ts +33 -0
  62. package/errors/gateway-timeout.exception.js +41 -0
  63. package/errors/gone.exception.d.ts +33 -0
  64. package/errors/gone.exception.js +41 -0
  65. package/errors/http-version-not-supported.exception.d.ts +33 -0
  66. package/errors/http-version-not-supported.exception.js +41 -0
  67. package/errors/http.exception.d.ts +79 -0
  68. package/errors/http.exception.js +123 -0
  69. package/errors/im-a-teapot.exception.d.ts +36 -0
  70. package/errors/im-a-teapot.exception.js +44 -0
  71. package/errors/index.d.ts +11 -0
  72. package/errors/index.js +27 -0
  73. package/errors/internal-server-error.exception.d.ts +33 -0
  74. package/errors/internal-server-error.exception.js +41 -0
  75. package/errors/invalid-middleware-configuration.exception.d.ts +4 -0
  76. package/errors/invalid-middleware-configuration.exception.js +11 -0
  77. package/errors/invalid-middleware.exception.d.ts +4 -0
  78. package/errors/invalid-middleware.exception.js +11 -0
  79. package/errors/not-found.exception.d.ts +33 -0
  80. package/errors/not-found.exception.js +41 -0
  81. package/errors/unknown-request-mapping.exception.d.ts +5 -0
  82. package/errors/unknown-request-mapping.exception.js +11 -0
  83. package/exceptions/messages.d.ts +4 -0
  84. package/exceptions/messages.js +13 -0
  85. package/explorers/path.explorer.d.ts +8 -0
  86. package/explorers/path.explorer.js +38 -0
  87. package/explorers/router.explorer.d.ts +51 -0
  88. package/explorers/router.explorer.js +195 -0
  89. package/factory/context-id.factory.d.ts +41 -0
  90. package/factory/context-id.factory.js +52 -0
  91. package/factory/index.d.ts +4 -0
  92. package/factory/index.js +20 -0
  93. package/factory/method.factory.d.ts +5 -0
  94. package/factory/method.factory.js +30 -0
  95. package/factory/params.factory.d.ts +5 -0
  96. package/factory/params.factory.js +39 -0
  97. package/factory/path.factory.d.ts +13 -0
  98. package/factory/path.factory.js +95 -0
  99. package/filters/context.d.ts +9 -0
  100. package/filters/context.js +15 -0
  101. package/filters/filter.d.ts +22 -0
  102. package/filters/filter.js +78 -0
  103. package/helpers/adapter.helper.d.ts +27 -0
  104. package/helpers/adapter.helper.js +37 -0
  105. package/helpers/exclude-route.helper.d.ts +4 -0
  106. package/helpers/exclude-route.helper.js +18 -0
  107. package/helpers/flatten-routes.helper.d.ts +5 -0
  108. package/helpers/flatten-routes.helper.js +27 -0
  109. package/helpers/index.d.ts +6 -0
  110. package/helpers/index.js +22 -0
  111. package/helpers/messages.helper.d.ts +6 -0
  112. package/helpers/messages.helper.js +25 -0
  113. package/helpers/path.helper.d.ts +3 -0
  114. package/helpers/path.helper.js +13 -0
  115. package/helpers/sse.helper.d.ts +45 -0
  116. package/helpers/sse.helper.js +83 -0
  117. package/index.d.ts +1 -0
  118. package/index.js +3 -0
  119. package/interfaces/http/cors.interface.d.ts +58 -0
  120. package/interfaces/http/cors.interface.js +2 -0
  121. package/interfaces/http/exception.interface.d.ts +6 -0
  122. package/interfaces/http/exception.interface.js +2 -0
  123. package/interfaces/http/exclude-route.interface.d.ts +15 -0
  124. package/interfaces/http/exclude-route.interface.js +2 -0
  125. package/interfaces/http/index.d.ts +10 -0
  126. package/interfaces/http/index.js +26 -0
  127. package/interfaces/http/message-event.interface.d.ts +6 -0
  128. package/interfaces/http/message-event.interface.js +2 -0
  129. package/interfaces/http/module.inteface.d.ts +5 -0
  130. package/interfaces/http/module.inteface.js +2 -0
  131. package/interfaces/http/options.interface.d.ts +127 -0
  132. package/interfaces/http/options.interface.js +2 -0
  133. package/interfaces/http/path-metadata.interface.d.ts +31 -0
  134. package/interfaces/http/path-metadata.interface.js +2 -0
  135. package/interfaces/http/prefix-options.interface.d.ts +7 -0
  136. package/interfaces/http/prefix-options.interface.js +2 -0
  137. package/interfaces/http/raw-request.d.ts +4 -0
  138. package/interfaces/http/raw-request.js +2 -0
  139. package/interfaces/http/routes.interface.d.ts +7 -0
  140. package/interfaces/http/routes.interface.js +2 -0
  141. package/interfaces/http/server.interface.d.ts +54 -0
  142. package/interfaces/http/server.interface.js +2 -0
  143. package/interfaces/index.d.ts +3 -0
  144. package/interfaces/index.js +19 -0
  145. package/interfaces/middleware/config-proxy.interface.d.ts +23 -0
  146. package/interfaces/middleware/config-proxy.interface.js +2 -0
  147. package/interfaces/middleware/configuration.interface.d.ts +12 -0
  148. package/interfaces/middleware/configuration.interface.js +2 -0
  149. package/interfaces/middleware/consumer.interface.d.ts +16 -0
  150. package/interfaces/middleware/consumer.interface.js +2 -0
  151. package/interfaces/middleware/index.d.ts +4 -0
  152. package/interfaces/middleware/index.js +20 -0
  153. package/interfaces/middleware/middleware.interface.d.ts +7 -0
  154. package/interfaces/middleware/middleware.interface.js +2 -0
  155. package/interfaces/router/callback-paramtypes.interface.d.ts +1 -0
  156. package/interfaces/router/callback-paramtypes.interface.js +2 -0
  157. package/interfaces/router/definition.interface.d.ts +10 -0
  158. package/interfaces/router/definition.interface.js +2 -0
  159. package/interfaces/router/index.d.ts +3 -0
  160. package/interfaces/router/index.js +19 -0
  161. package/interfaces/router/version-options.interface.d.ts +92 -0
  162. package/interfaces/router/version-options.interface.js +9 -0
  163. package/middleware/builder.d.ts +15 -0
  164. package/middleware/builder.js +78 -0
  165. package/middleware/container.d.ts +13 -0
  166. package/middleware/container.js +50 -0
  167. package/middleware/extractor.d.ts +15 -0
  168. package/middleware/extractor.js +50 -0
  169. package/middleware/index.d.ts +1 -0
  170. package/middleware/index.js +17 -0
  171. package/middleware/module.d.ts +33 -0
  172. package/middleware/module.js +180 -0
  173. package/middleware/resolver.d.ts +10 -0
  174. package/middleware/resolver.js +27 -0
  175. package/middleware/routes-mapper.d.ts +19 -0
  176. package/middleware/routes-mapper.js +111 -0
  177. package/middleware/utils.d.ts +8 -0
  178. package/middleware/utils.js +86 -0
  179. package/package.json +41 -0
  180. package/router/module.d.ts +18 -0
  181. package/router/module.js +88 -0
  182. package/router/resolver.d.ts +31 -0
  183. package/router/resolver.js +128 -0
  184. package/storage/http-instance.storage.d.ts +9 -0
  185. package/storage/http-instance.storage.js +19 -0
  186. package/stream/index.d.ts +1 -0
  187. package/stream/index.js +17 -0
  188. package/stream/interfaces/index.d.ts +2 -0
  189. package/stream/interfaces/index.js +18 -0
  190. package/stream/interfaces/streamable-handler-response.interface.d.ts +12 -0
  191. package/stream/interfaces/streamable-handler-response.interface.js +2 -0
  192. package/stream/interfaces/streamable-options.interface.d.ts +10 -0
  193. package/stream/interfaces/streamable-options.interface.js +2 -0
  194. package/stream/streamable-file.d.ts +22 -0
  195. package/stream/streamable-file.js +55 -0
  196. package/test/context/response.controller.spec.d.ts +1 -0
  197. package/test/context/response.controller.spec.js +328 -0
  198. package/test/decorators/controller.decorator.spec.d.ts +1 -0
  199. package/test/decorators/controller.decorator.spec.js +113 -0
  200. package/test/decorators/header.decorator.spec.d.ts +1 -0
  201. package/test/decorators/header.decorator.spec.js +33 -0
  202. package/test/decorators/http-code.decorator.spec.d.ts +1 -0
  203. package/test/decorators/http-code.decorator.spec.js +30 -0
  204. package/test/decorators/redirect.decorator.spec.d.ts +1 -0
  205. package/test/decorators/redirect.decorator.spec.js +36 -0
  206. package/test/decorators/render.decorator.spec.d.ts +1 -0
  207. package/test/decorators/render.decorator.spec.js +30 -0
  208. package/test/decorators/request-mapping.decorator.spec.d.ts +1 -0
  209. package/test/decorators/request-mapping.decorator.spec.js +85 -0
  210. package/test/decorators/route-params.decorator.spec.d.ts +1 -0
  211. package/test/decorators/route-params.decorator.spec.js +493 -0
  212. package/test/decorators/sse.decorator.spec.d.ts +1 -0
  213. package/test/decorators/sse.decorator.spec.js +35 -0
  214. package/test/decorators/version.decorator.spec.d.ts +1 -0
  215. package/test/decorators/version.decorator.spec.js +43 -0
  216. package/test/exceptions/handler.spec.d.ts +1 -0
  217. package/test/exceptions/handler.spec.js +145 -0
  218. package/test/exceptions/proxy.spec.d.ts +1 -0
  219. package/test/exceptions/proxy.spec.js +74 -0
  220. package/test/explorers/path.explorer.spec.d.ts +1 -0
  221. package/test/explorers/path.explorer.spec.js +190 -0
  222. package/test/explorers/router.explorer.spec.d.ts +1 -0
  223. package/test/explorers/router.explorer.spec.js +206 -0
  224. package/test/factory/method.factory.spec.d.ts +1 -0
  225. package/test/factory/method.factory.spec.js +33 -0
  226. package/test/factory/params.factory.spec.d.ts +1 -0
  227. package/test/factory/params.factory.spec.js +104 -0
  228. package/test/factory/path.factory.spec.d.ts +1 -0
  229. package/test/factory/path.factory.spec.js +260 -0
  230. package/test/filters/context.spec.d.ts +1 -0
  231. package/test/filters/context.spec.js +96 -0
  232. package/test/filters/filter.spec.d.ts +1 -0
  233. package/test/filters/filter.spec.js +96 -0
  234. package/test/helpers/flatten-routes.helper.spec.d.ts +1 -0
  235. package/test/helpers/flatten-routes.helper.spec.js +131 -0
  236. package/test/helpers/sse.helper.spec.d.ts +1 -0
  237. package/test/helpers/sse.helper.spec.js +132 -0
  238. package/test/middleware/builder.spec.d.ts +1 -0
  239. package/test/middleware/builder.spec.js +235 -0
  240. package/test/middleware/container.spec.d.ts +1 -0
  241. package/test/middleware/container.spec.js +81 -0
  242. package/test/middleware/module.spec.d.ts +1 -0
  243. package/test/middleware/module.spec.js +206 -0
  244. package/test/middleware/route-info-path-extractor.spec.d.ts +1 -0
  245. package/test/middleware/route-info-path-extractor.spec.js +123 -0
  246. package/test/middleware/routes-mapper.spec.d.ts +1 -0
  247. package/test/middleware/routes-mapper.spec.js +162 -0
  248. package/test/middleware/utils.spec.d.ts +1 -0
  249. package/test/middleware/utils.spec.js +132 -0
  250. package/test/router/module.spec.d.ts +1 -0
  251. package/test/router/module.spec.js +40 -0
  252. package/test/router/resolver.spec.d.ts +1 -0
  253. package/test/router/resolver.spec.js +326 -0
  254. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,15 @@
1
+ import { RequestMethod } from "../../enums";
2
+ export interface ExcludeRouteMetadata {
3
+ /**
4
+ * Route path.
5
+ */
6
+ path: string;
7
+ /**
8
+ * Regular expression representing the route path.
9
+ */
10
+ pathRegex: RegExp;
11
+ /**
12
+ * HTTP request method (e.g., GET, POST).
13
+ */
14
+ requestMethod: RequestMethod;
15
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ export * from "./cors.interface";
2
+ export * from "./exception.interface";
3
+ export * from "./exclude-route.interface";
4
+ export * from "./message-event.interface";
5
+ export * from "./module.inteface";
6
+ export * from "./options.interface";
7
+ export * from "./path-metadata.interface";
8
+ export * from "./prefix-options.interface";
9
+ export * from "./routes.interface";
10
+ export * from "./server.interface";
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cors.interface"), exports);
18
+ __exportStar(require("./exception.interface"), exports);
19
+ __exportStar(require("./exclude-route.interface"), exports);
20
+ __exportStar(require("./message-event.interface"), exports);
21
+ __exportStar(require("./module.inteface"), exports);
22
+ __exportStar(require("./options.interface"), exports);
23
+ __exportStar(require("./path-metadata.interface"), exports);
24
+ __exportStar(require("./prefix-options.interface"), exports);
25
+ __exportStar(require("./routes.interface"), exports);
26
+ __exportStar(require("./server.interface"), exports);
@@ -0,0 +1,6 @@
1
+ export interface MessageEvent {
2
+ data: string | object;
3
+ id?: string;
4
+ type?: string;
5
+ retry?: number;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { VenokModule } from "@venok/core";
2
+ import { MiddlewareConsumer } from "../middleware";
3
+ export interface VenokHttpModule extends VenokModule {
4
+ configure(consumer: MiddlewareConsumer): void;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,127 @@
1
+ import { ApplicationContextOptions } from "@venok/core/interfaces/application/context-options.interface";
2
+ import { CorsOptions, CorsOptionsDelegate } from "@venok/http/interfaces/http/cors.interface";
3
+ /**
4
+ * Interface describing Https Options that can be set.
5
+ *
6
+ * @see https://nodejs.org/api/tls.html
7
+ *
8
+ * @publicApi
9
+ */
10
+ export interface HttpsOptions {
11
+ /**
12
+ * PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative
13
+ * to providing key and cert individually. PFX is usually encrypted, if it is,
14
+ * passphrase will be used to decrypt it. Multiple PFX can be provided either
15
+ * as an array of unencrypted PFX buffers, or an array of objects in the form
16
+ * {buf: <string|buffer>[, passphrase: <string>]}. The object form can only
17
+ * occur in an array. object.passphrase is optional. Encrypted PFX will be decrypted
18
+ * with object.passphrase if provided, or options.passphrase if it is not.
19
+ */
20
+ pfx?: any;
21
+ /**
22
+ * Private keys in PEM format. PEM allows the option of private keys being encrypted.
23
+ * Encrypted keys will be decrypted with options.passphrase. Multiple keys using
24
+ * different algorithms can be provided either as an array of unencrypted key
25
+ * strings or buffers, or an array of objects in the form {pem: <string|buffer>[, passphrase: <string>]}.
26
+ * The object form can only occur in an array. object.passphrase is optional.
27
+ * Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase
28
+ * if it is not
29
+ */
30
+ key?: any;
31
+ /**
32
+ * Shared passphrase used for a single private key and/or a PFX.
33
+ */
34
+ passphrase?: string;
35
+ /**
36
+ * Cert chains in PEM format. One cert chain should be provided per private key.
37
+ * Each cert chain should consist of the PEM formatted certificate for a provided
38
+ * private key, followed by the PEM formatted intermediate certificates (if any),
39
+ * in order, and not including the root CA (the root CA must be pre-known to the
40
+ * peer, see ca). When providing multiple cert chains, they do not have to be
41
+ * in the same order as their private keys in key. If the intermediate certificates
42
+ * are not provided, the peer will not be able to validate the certificate, and
43
+ * the handshake will fail.
44
+ */
45
+ cert?: any;
46
+ /**
47
+ * Optionally override the trusted CA certificates. Default is to trust the well-known
48
+ * CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are
49
+ * explicitly specified using this option. The value can be a string or Buffer,
50
+ * or an Array of strings and/or Buffers. Any string or Buffer can contain multiple
51
+ * PEM CAs concatenated together. The peer's certificate must be chainable to
52
+ * a CA trusted by the server for the connection to be authenticated. When using
53
+ * certificates that are not chainable to a well-known CA, the certificate's CA
54
+ * must be explicitly specified as a trusted or the connection will fail to authenticate.
55
+ * If the peer uses a certificate that doesn't match or chain to one of the default
56
+ * CAs, use the ca option to provide a CA certificate that the peer's certificate
57
+ * can match or chain to. For self-signed certificates, the certificate is its
58
+ * own CA, and must be provided. For PEM encoded certificates, supported types
59
+ * are "TRUSTED CERTIFICATE", "X509 CERTIFICATE", and "CERTIFICATE". See also tls.rootCertificates.
60
+ */
61
+ ca?: any;
62
+ /**
63
+ * PEM formatted CRLs (Certificate Revocation Lists).
64
+ */
65
+ crl?: any;
66
+ /**
67
+ * Cipher suite specification, replacing the default. For more information, see
68
+ * modifying the default cipher suite. Permitted ciphers can be obtained via tls.getCiphers().
69
+ * Cipher names must be uppercased in order for OpenSSL to accept them.
70
+ */
71
+ ciphers?: string;
72
+ /**
73
+ * Attempt to use the server's cipher suite preferences instead of the client's.
74
+ * When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be set in secureOptions,
75
+ * see OpenSSL Options for more information.
76
+ */
77
+ honorCipherOrder?: boolean;
78
+ /**
79
+ * If true the server will request a certificate from clients that connect and
80
+ * attempt to verify that certificate. Default: false.
81
+ */
82
+ requestCert?: boolean;
83
+ /**
84
+ * If not false the server will reject any connection which is not authorized
85
+ * with the list of supplied CAs. This option only has an effect if requestCert is true. Default: true
86
+ */
87
+ rejectUnauthorized?: boolean;
88
+ /**
89
+ * An array or Buffer of possible NPN protocols. (Protocols should be ordered
90
+ * by their priority).
91
+ */
92
+ NPNProtocols?: any;
93
+ /**
94
+ * A function that will be called if the client supports SNI TLS extension. Two
95
+ * arguments will be passed when called: servername and cb. SNICallback should
96
+ * invoke cb(null, ctx), where ctx is a SecureContext instance. (tls.createSecureContext(...)
97
+ * can be used to get a proper SecureContext.) If SNICallback wasn't provided
98
+ * the default callback with high-level API will be used.
99
+ */
100
+ SNICallback?: (servername: string, cb: (err: Error, ctx: any) => any) => any;
101
+ }
102
+ /**
103
+ * @publicApi
104
+ */
105
+ export interface VenokApplicationOptions extends ApplicationContextOptions {
106
+ /**
107
+ * CORS options from [CORS package](https://github.com/expressjs/cors#configuration-options)
108
+ */
109
+ cors?: boolean | CorsOptions | CorsOptionsDelegate<any>;
110
+ /**
111
+ * Whether to use underlying platform body parser.
112
+ */
113
+ bodyParser?: boolean;
114
+ /**
115
+ * Set of configurable HTTPS options
116
+ */
117
+ httpsOptions?: HttpsOptions;
118
+ /**
119
+ * Whether to register the raw request body on the request. Use `req.rawBody`.
120
+ */
121
+ rawBody?: boolean;
122
+ /**
123
+ * Force close open HTTP connections. Useful if restarting your application hangs due to
124
+ * keep-alive connections in the HTTP adapter.
125
+ */
126
+ forceCloseConnections?: boolean;
127
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,31 @@
1
+ import { VersioningOptions, VersionValue } from "../router/version-options.interface";
2
+ export interface RoutePathMetadata {
3
+ /**
4
+ * Controller-level path (e.g., @Controller('resource') = "resource").
5
+ */
6
+ ctrlPath?: string;
7
+ /**
8
+ * Method-level path (e.g., @Get('resource') = "resource").
9
+ */
10
+ methodPath?: string;
11
+ /**
12
+ * Global route prefix specified with the "NestApplication#setGlobalPrefix" method.
13
+ */
14
+ globalPrefix?: string;
15
+ /**
16
+ * Module-level path registered through the "RouterModule".
17
+ */
18
+ modulePath?: string;
19
+ /**
20
+ * Controller-level version (e.g., @Controller({ version: '1.0' }) = "1.0").
21
+ */
22
+ controllerVersion?: VersionValue;
23
+ /**
24
+ * Method-level version (e.g., @Version('1.0') = "1.0").
25
+ */
26
+ methodVersion?: VersionValue;
27
+ /**
28
+ * API versioning options object.
29
+ */
30
+ versioningOptions?: VersioningOptions;
31
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { RouteInfo } from "../middleware";
2
+ /**
3
+ * @publicApi
4
+ */
5
+ export interface GlobalPrefixOptions<T = string | RouteInfo> {
6
+ exclude?: T[];
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ export type RawBodyRequest<T> = T & {
3
+ rawBody?: Buffer;
4
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { Type } from "@venok/core";
2
+ export interface RouteTree {
3
+ path: string;
4
+ module?: Type;
5
+ children?: Routes | Type[];
6
+ }
7
+ export type Routes = RouteTree[];
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,54 @@
1
+ import { VersioningOptions, VersionValue } from "../router/version-options.interface";
2
+ import { CorsOptions, CorsOptionsDelegate } from "@venok/http/interfaces/http/cors.interface";
3
+ import { RequestMethod } from "@venok/http/enums";
4
+ import { VenokApplicationOptions } from "@venok/http/interfaces/http/options.interface";
5
+ export type ErrorHandler<TRequest = any, TResponse = any> = (error: any, req: TRequest, res: TResponse, next?: Function) => any;
6
+ export type RequestHandler<TRequest = any, TResponse = any> = (req: TRequest, res: TResponse, next?: Function) => any;
7
+ export interface HttpServer<TRequest = any, TResponse = any, ServerInstance = any> {
8
+ use(handler: RequestHandler<TRequest, TResponse> | ErrorHandler<TRequest, TResponse>): any;
9
+ use(path: string, handler: RequestHandler<TRequest, TResponse> | ErrorHandler<TRequest, TResponse>): any;
10
+ useBodyParser?(...args: any[]): any;
11
+ get(handler: RequestHandler<TRequest, TResponse>): any;
12
+ get(path: string, handler: RequestHandler<TRequest, TResponse>): any;
13
+ post(handler: RequestHandler<TRequest, TResponse>): any;
14
+ post(path: string, handler: RequestHandler<TRequest, TResponse>): any;
15
+ head(handler: RequestHandler<TRequest, TResponse>): any;
16
+ head(path: string, handler: RequestHandler<TRequest, TResponse>): any;
17
+ delete(handler: RequestHandler<TRequest, TResponse>): any;
18
+ delete(path: string, handler: RequestHandler<TRequest, TResponse>): any;
19
+ put(handler: RequestHandler<TRequest, TResponse>): any;
20
+ put(path: string, handler: RequestHandler<TRequest, TResponse>): any;
21
+ patch(handler: RequestHandler<TRequest, TResponse>): any;
22
+ patch(path: string, handler: RequestHandler<TRequest, TResponse>): any;
23
+ all(path: string, handler: RequestHandler<TRequest, TResponse>): any;
24
+ all(handler: RequestHandler<TRequest, TResponse>): any;
25
+ options(handler: RequestHandler<TRequest, TResponse>): any;
26
+ options(path: string, handler: RequestHandler<TRequest, TResponse>): any;
27
+ listen(port: number | string, callback?: () => void): any;
28
+ listen(port: number | string, hostname: string, callback?: () => void): any;
29
+ reply(response: any, body: any, statusCode?: number): any;
30
+ status(response: any, statusCode: number): any;
31
+ end(response: any, message?: string): any;
32
+ render(response: any, view: string, options: any): any;
33
+ redirect(response: any, statusCode: number, url: string): any;
34
+ isHeadersSent(response: any): boolean;
35
+ setHeader(response: any, name: string, value: string): any;
36
+ setErrorHandler?(handler: Function, prefix?: string): any;
37
+ setNotFoundHandler?(handler: Function, prefix?: string): any;
38
+ useStaticAssets?(...args: any[]): this;
39
+ setBaseViewsDir?(path: string | string[]): this;
40
+ setViewEngine?(engineOrOptions: any): this;
41
+ createMiddlewareFactory(method: RequestMethod): ((path: string, callback: Function) => any) | Promise<(path: string, callback: Function) => any>;
42
+ getRequestHostname?(request: TRequest): string;
43
+ getRequestMethod?(request: TRequest): string;
44
+ getRequestUrl?(request: TRequest): string;
45
+ getInstance(): ServerInstance;
46
+ registerParserMiddleware(...args: any[]): any;
47
+ enableCors(options: CorsOptions | CorsOptionsDelegate<TRequest>): any;
48
+ getHttpServer(): any;
49
+ initHttpServer(options: VenokApplicationOptions): void;
50
+ close(): any;
51
+ getType(): string;
52
+ init?(): Promise<void>;
53
+ applyVersionFilter(handler: Function, version: VersionValue, versioningOptions: VersioningOptions): (req: TRequest, res: TResponse, next: () => void) => Function;
54
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from "./http";
2
+ export * from "./middleware";
3
+ export * from "./router";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./http"), exports);
18
+ __exportStar(require("./middleware"), exports);
19
+ __exportStar(require("./router"), exports);
@@ -0,0 +1,23 @@
1
+ import { RouteInfo } from "./configuration.interface";
2
+ import { Type } from "@venok/core";
3
+ import { MiddlewareConsumer } from "./consumer.interface";
4
+ /**
5
+ * @publicApi
6
+ */
7
+ export interface MiddlewareConfigProxy {
8
+ /**
9
+ * Excludes routes from the currently processed middleware.
10
+ *
11
+ * @param {(string | RouteInfo)[]} routes
12
+ * @returns {MiddlewareConfigProxy}
13
+ */
14
+ exclude(...routes: (string | RouteInfo)[]): MiddlewareConfigProxy;
15
+ /**
16
+ * Attaches passed either routes or controllers to the currently configured middleware.
17
+ * If you pass a class, Venok would attach middleware to every path defined within this controller.
18
+ *
19
+ * @param {(string | Type | RouteInfo)[]} routes
20
+ * @returns {MiddlewareConsumer}
21
+ */
22
+ forRoutes(...routes: (string | Type | RouteInfo)[]): MiddlewareConsumer;
23
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import { RequestMethod } from "../../enums";
2
+ import { VersionValue } from "../router/version-options.interface";
3
+ import { Type } from "@venok/core";
4
+ export interface RouteInfo {
5
+ path: string;
6
+ method: RequestMethod;
7
+ version?: VersionValue;
8
+ }
9
+ export interface MiddlewareConfiguration<T = any> {
10
+ middleware: T;
11
+ forRoutes: (Type | string | RouteInfo)[];
12
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ import { Type } from "@venok/core";
2
+ import { MiddlewareConfigProxy } from "./config-proxy.interface";
3
+ /**
4
+ * Interface defining method for applying user defined middleware to routes.
5
+ *
6
+ * @publicApi
7
+ */
8
+ export interface MiddlewareConsumer {
9
+ /**
10
+ * @param {...(Type | Function)} middleware middleware class/function or array of classes/functions
11
+ * to be attached to the passed routes.
12
+ *
13
+ * @returns {MiddlewareConfigProxy}
14
+ */
15
+ apply(...middleware: (Type | Function)[]): MiddlewareConfigProxy;
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export * from "./config-proxy.interface";
2
+ export * from "./configuration.interface";
3
+ export * from "./consumer.interface";
4
+ export * from "./middleware.interface";
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./config-proxy.interface"), exports);
18
+ __exportStar(require("./configuration.interface"), exports);
19
+ __exportStar(require("./consumer.interface"), exports);
20
+ __exportStar(require("./middleware.interface"), exports);
@@ -0,0 +1,7 @@
1
+ /**
2
+ *
3
+ * @publicApi
4
+ */
5
+ export interface VenokMiddleware<TRequest = any, TResponse = any> {
6
+ use(req: TRequest, res: TResponse, next: (error?: Error | any) => void): any;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type RouterProxyCallback = <TRequest, TResponse>(req?: TRequest, res?: TResponse, next?: () => void) => void;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { VersionValue } from "./version-options.interface";
2
+ import { RequestMethod } from "../../enums";
3
+ import { RouterProxyCallback } from "./callback-paramtypes.interface";
4
+ export interface RouteDefinition {
5
+ path: string[];
6
+ requestMethod: RequestMethod;
7
+ targetCallback: RouterProxyCallback;
8
+ methodName: string;
9
+ version?: VersionValue;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from "./callback-paramtypes.interface";
2
+ export * from "./definition.interface";
3
+ export * from "./version-options.interface";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./callback-paramtypes.interface"), exports);
18
+ __exportStar(require("./definition.interface"), exports);
19
+ __exportStar(require("./version-options.interface"), exports);
@@ -0,0 +1,92 @@
1
+ import { VersioningType } from "../../enums";
2
+ /**
3
+ * Indicates that this will work for any version passed in the request, or no version.
4
+ *
5
+ * @publicApi
6
+ */
7
+ export declare const VERSION_NEUTRAL: unique symbol;
8
+ /**
9
+ * @publicApi
10
+ */
11
+ export type VersionValue = string | typeof VERSION_NEUTRAL | Array<string | typeof VERSION_NEUTRAL>;
12
+ /**
13
+ * @publicApi
14
+ */
15
+ export interface VersionOptions {
16
+ /**
17
+ * Specifies an optional API Version. When configured, methods
18
+ * within the controller will only be routed if the request version
19
+ * matches the specified value.
20
+ *
21
+ * Supported only by HTTP-based application (does not apply to non-HTTP microservices).
22
+ *
23
+ * @see [Versioning](https://docs.nestjs.com/techniques/versioning)
24
+ */
25
+ version?: VersionValue;
26
+ }
27
+ /**
28
+ * @publicApi
29
+ */
30
+ export interface HeaderVersioningOptions {
31
+ type: VersioningType.HEADER;
32
+ /**
33
+ * The name of the Request Header that contains the version.
34
+ */
35
+ header: string;
36
+ }
37
+ /**
38
+ * @publicApi
39
+ */
40
+ export interface UriVersioningOptions {
41
+ type: VersioningType.URI;
42
+ /**
43
+ * Optional prefix that will prepend the version within the URI.
44
+ *
45
+ * Defaults to `v`.
46
+ *
47
+ * Ex. Assuming a version of `1`, for `/api/v1/route`, `v` is the prefix.
48
+ */
49
+ prefix?: string | false;
50
+ }
51
+ /**
52
+ * @publicApi
53
+ */
54
+ export interface MediaTypeVersioningOptions {
55
+ type: VersioningType.MEDIA_TYPE;
56
+ /**
57
+ * The key within the Media Type Header to determine the version from.
58
+ *
59
+ * Ex. For `application/json;v=1`, the key is `v=`.
60
+ */
61
+ key: string;
62
+ }
63
+ /**
64
+ * @publicApi
65
+ */
66
+ export interface CustomVersioningOptions {
67
+ type: VersioningType.CUSTOM;
68
+ /**
69
+ * A function that accepts a request object (specific to the underlying platform, ie Express or Fastify)
70
+ * and returns a single version value or an ordered array of versions, in order from HIGHEST to LOWEST.
71
+ *
72
+ * Ex. Returned version array = ['3.1', '3.0', '2.5', '2', '1.9']
73
+ *
74
+ * Use type assertion or narrowing to identify the specific request type.
75
+ */
76
+ extractor: (request: unknown) => string | string[];
77
+ }
78
+ /**
79
+ * @publicApi
80
+ */
81
+ interface VersioningCommonOptions {
82
+ /**
83
+ * The default version to be used as a fallback when you did not provide some
84
+ * version to `@Controller()` nor `@Version()`.
85
+ */
86
+ defaultVersion?: VersionOptions["version"];
87
+ }
88
+ /**
89
+ * @publicApi
90
+ */
91
+ export type VersioningOptions = VersioningCommonOptions & (HeaderVersioningOptions | UriVersioningOptions | MediaTypeVersioningOptions | CustomVersioningOptions);
92
+ export {};
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION_NEUTRAL = void 0;
4
+ /**
5
+ * Indicates that this will work for any version passed in the request, or no version.
6
+ *
7
+ * @publicApi
8
+ */
9
+ exports.VERSION_NEUTRAL = Symbol("VERSION_NEUTRAL");
@@ -0,0 +1,15 @@
1
+ import { RoutesMapper } from "./routes-mapper";
2
+ import { MiddlewareConfigProxy, MiddlewareConfiguration, MiddlewareConsumer, HttpServer } from "../interfaces";
3
+ import { RouteInfoPathExtractor } from "./extractor";
4
+ import { Type } from "@venok/core";
5
+ export declare class MiddlewareBuilder implements MiddlewareConsumer {
6
+ private readonly routesMapper;
7
+ private readonly httpAdapter;
8
+ private readonly routeInfoPathExtractor;
9
+ private readonly middlewareCollection;
10
+ constructor(routesMapper: RoutesMapper, httpAdapter: HttpServer, routeInfoPathExtractor: RouteInfoPathExtractor);
11
+ apply(...middleware: Array<Type | Function | any>): MiddlewareConfigProxy;
12
+ build(): MiddlewareConfiguration[];
13
+ getHttpAdapter(): HttpServer;
14
+ private static readonly ConfigProxy;
15
+ }