@expressots/adapter-express 3.0.0 → 4.0.0-preview.1

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 (239) hide show
  1. package/README.md +39 -96
  2. package/lib/CHANGELOG.md +31 -5
  3. package/lib/README.md +39 -96
  4. package/lib/cjs/adapter-express/application-express.base.js +3 -1
  5. package/lib/cjs/adapter-express/application-express.js +1049 -85
  6. package/lib/cjs/adapter-express/express-utils/conditional-middleware.js +102 -0
  7. package/lib/cjs/adapter-express/express-utils/constants.js +17 -0
  8. package/lib/cjs/adapter-express/express-utils/content-negotiation-decorators.js +129 -0
  9. package/lib/cjs/adapter-express/express-utils/decorators.js +186 -49
  10. package/lib/cjs/adapter-express/express-utils/exception-filter-decorators.js +11 -0
  11. package/lib/cjs/adapter-express/express-utils/guard-context-factory.js +84 -0
  12. package/lib/cjs/adapter-express/express-utils/guard-middleware.js +115 -0
  13. package/lib/cjs/adapter-express/express-utils/guard-utils.js +18 -0
  14. package/lib/cjs/adapter-express/express-utils/http-context-store.js +15 -0
  15. package/lib/cjs/adapter-express/express-utils/http-status-middleware.js +37 -2
  16. package/lib/cjs/adapter-express/express-utils/index.js +67 -1
  17. package/lib/cjs/adapter-express/express-utils/interceptor-middleware.js +132 -0
  18. package/lib/cjs/adapter-express/express-utils/inversify-express-server.js +810 -63
  19. package/lib/cjs/adapter-express/express-utils/lazy-module-middleware.js +241 -0
  20. package/lib/cjs/adapter-express/express-utils/middleware-composition.js +95 -0
  21. package/lib/cjs/adapter-express/express-utils/permission-preloader.middleware.js +48 -0
  22. package/lib/cjs/adapter-express/express-utils/route-constraints.js +95 -0
  23. package/lib/cjs/adapter-express/express-utils/scope-extractor.interface.js +2 -0
  24. package/lib/cjs/adapter-express/express-utils/scope-extractor.js +66 -0
  25. package/lib/cjs/adapter-express/express-utils/setup-authorization.js +71 -0
  26. package/lib/cjs/adapter-express/express-utils/setup-event-system.js +113 -0
  27. package/lib/cjs/adapter-express/express-utils/setup-interceptors.js +103 -0
  28. package/lib/cjs/adapter-express/express-utils/setup-lazy-loading.js +228 -0
  29. package/lib/cjs/adapter-express/express-utils/utils.js +30 -12
  30. package/lib/cjs/adapter-express/express-utils/validation-decorators.js +205 -0
  31. package/lib/cjs/adapter-express/express-utils/validation-service.js +252 -0
  32. package/lib/cjs/adapter-express/index.js +7 -5
  33. package/lib/cjs/adapter-express/micro-api/application-express-micro-route.js +31 -1
  34. package/lib/cjs/adapter-express/micro-api/application-express-micro.js +11 -37
  35. package/lib/cjs/adapter-express/micro-api/gateway/circuit-breaker.js +174 -0
  36. package/lib/cjs/adapter-express/micro-api/gateway/index.js +11 -0
  37. package/lib/cjs/adapter-express/micro-api/gateway/service-proxy.js +214 -0
  38. package/lib/cjs/adapter-express/micro-api/index.js +27 -3
  39. package/lib/cjs/adapter-express/micro-api/micro.js +217 -0
  40. package/lib/cjs/adapter-express/micro-api/queue/index.js +8 -0
  41. package/lib/cjs/adapter-express/micro-api/queue/queue.interface.js +2 -0
  42. package/lib/cjs/adapter-express/micro-api/queue/rabbitmq-consumer.js +255 -0
  43. package/lib/cjs/adapter-express/micro-api/serverless/aws-lambda.adapter.js +183 -0
  44. package/lib/cjs/adapter-express/micro-api/serverless/cloudflare.adapter.js +158 -0
  45. package/lib/cjs/adapter-express/micro-api/serverless/index.js +12 -0
  46. package/lib/cjs/adapter-express/micro-api/serverless/vercel.adapter.js +102 -0
  47. package/lib/cjs/adapter-express/micro-api/service-mesh/index.js +10 -0
  48. package/lib/cjs/adapter-express/micro-api/service-mesh/service-client.js +194 -0
  49. package/lib/cjs/adapter-express/micro-api/service-mesh/service-discovery.js +261 -0
  50. package/lib/cjs/adapter-express/middleware/index.js +21 -0
  51. package/lib/cjs/adapter-express/middleware/request-logging.middleware.js +244 -0
  52. package/lib/cjs/adapter-express/render/engine.js +15 -15
  53. package/lib/cjs/adapter-express/render/index.js +5 -0
  54. package/lib/cjs/adapter-express/studio/index.js +9 -0
  55. package/lib/cjs/adapter-express/studio/studio-integration.js +214 -0
  56. package/lib/cjs/index.js +1 -1
  57. package/lib/cjs/types/adapter-express/application-express.base.d.ts +20 -7
  58. package/lib/cjs/types/adapter-express/application-express.d.ts +273 -32
  59. package/lib/cjs/types/adapter-express/express-utils/base-middleware.d.ts +2 -2
  60. package/lib/cjs/types/adapter-express/express-utils/conditional-middleware.d.ts +97 -0
  61. package/lib/cjs/types/adapter-express/express-utils/constants.d.ts +13 -0
  62. package/lib/cjs/types/adapter-express/express-utils/content-negotiation-decorators.d.ts +94 -0
  63. package/lib/cjs/types/adapter-express/express-utils/decorators.d.ts +54 -6
  64. package/lib/cjs/types/adapter-express/express-utils/exception-filter-decorators.d.ts +6 -0
  65. package/lib/cjs/types/adapter-express/express-utils/guard-context-factory.d.ts +17 -0
  66. package/lib/cjs/types/adapter-express/express-utils/guard-middleware.d.ts +22 -0
  67. package/lib/cjs/types/adapter-express/express-utils/guard-utils.d.ts +11 -0
  68. package/lib/cjs/types/adapter-express/express-utils/http-context-store.d.ts +20 -0
  69. package/lib/cjs/types/adapter-express/express-utils/httpResponseMessage.d.ts +1 -1
  70. package/lib/cjs/types/adapter-express/express-utils/index.d.ts +30 -2
  71. package/lib/cjs/types/adapter-express/express-utils/interceptor-middleware.d.ts +40 -0
  72. package/lib/cjs/types/adapter-express/express-utils/interfaces.d.ts +42 -5
  73. package/lib/cjs/types/adapter-express/express-utils/inversify-express-server.d.ts +114 -2
  74. package/lib/cjs/types/adapter-express/express-utils/lazy-module-middleware.d.ts +122 -0
  75. package/lib/cjs/types/adapter-express/express-utils/middleware-composition.d.ts +85 -0
  76. package/lib/cjs/types/adapter-express/express-utils/permission-preloader.middleware.d.ts +10 -0
  77. package/lib/cjs/types/adapter-express/express-utils/route-constraints.d.ts +89 -0
  78. package/lib/cjs/types/adapter-express/express-utils/scope-extractor.d.ts +21 -0
  79. package/lib/cjs/types/adapter-express/express-utils/scope-extractor.interface.d.ts +12 -0
  80. package/lib/cjs/types/adapter-express/express-utils/setup-authorization.d.ts +34 -0
  81. package/lib/cjs/types/adapter-express/express-utils/setup-event-system.d.ts +118 -0
  82. package/lib/cjs/types/adapter-express/express-utils/setup-interceptors.d.ts +115 -0
  83. package/lib/cjs/types/adapter-express/express-utils/setup-lazy-loading.d.ts +123 -0
  84. package/lib/cjs/types/adapter-express/express-utils/utils.d.ts +17 -2
  85. package/lib/cjs/types/adapter-express/express-utils/validation-decorators.d.ts +145 -0
  86. package/lib/cjs/types/adapter-express/express-utils/validation-service.d.ts +88 -0
  87. package/lib/cjs/types/adapter-express/index.d.ts +6 -4
  88. package/lib/cjs/types/adapter-express/micro-api/application-express-micro-route.d.ts +25 -14
  89. package/lib/cjs/types/adapter-express/micro-api/application-express-micro.d.ts +3 -10
  90. package/lib/cjs/types/adapter-express/micro-api/gateway/circuit-breaker.d.ts +111 -0
  91. package/lib/cjs/types/adapter-express/micro-api/gateway/index.d.ts +5 -0
  92. package/lib/cjs/types/adapter-express/micro-api/gateway/service-proxy.d.ts +83 -0
  93. package/lib/cjs/types/adapter-express/micro-api/index.d.ts +7 -1
  94. package/lib/cjs/types/adapter-express/micro-api/micro.d.ts +66 -0
  95. package/lib/cjs/types/adapter-express/micro-api/queue/index.d.ts +5 -0
  96. package/lib/cjs/types/adapter-express/micro-api/queue/queue.interface.d.ts +60 -0
  97. package/lib/cjs/types/adapter-express/micro-api/queue/rabbitmq-consumer.d.ts +86 -0
  98. package/lib/cjs/types/adapter-express/micro-api/serverless/aws-lambda.adapter.d.ts +77 -0
  99. package/lib/cjs/types/adapter-express/micro-api/serverless/cloudflare.adapter.d.ts +64 -0
  100. package/lib/cjs/types/adapter-express/micro-api/serverless/index.d.ts +6 -0
  101. package/lib/cjs/types/adapter-express/micro-api/serverless/vercel.adapter.d.ts +56 -0
  102. package/lib/cjs/types/adapter-express/micro-api/service-mesh/index.d.ts +5 -0
  103. package/lib/cjs/types/adapter-express/micro-api/service-mesh/service-client.d.ts +122 -0
  104. package/lib/cjs/types/adapter-express/micro-api/service-mesh/service-discovery.d.ts +150 -0
  105. package/lib/cjs/types/adapter-express/middleware/index.d.ts +5 -0
  106. package/lib/cjs/types/adapter-express/middleware/request-logging.middleware.d.ts +65 -0
  107. package/lib/cjs/types/adapter-express/render/index.d.ts +1 -0
  108. package/lib/cjs/types/adapter-express/studio/index.d.ts +1 -0
  109. package/lib/cjs/types/adapter-express/studio/studio-integration.d.ts +92 -0
  110. package/lib/cjs/types/index.d.ts +1 -1
  111. package/lib/esm/adapter-express/application-express.base.js +24 -0
  112. package/lib/esm/adapter-express/application-express.js +1300 -0
  113. package/lib/esm/adapter-express/application-express.types.js +1 -0
  114. package/lib/esm/adapter-express/express-utils/base-middleware.js +19 -0
  115. package/lib/esm/adapter-express/express-utils/conditional-middleware.js +96 -0
  116. package/lib/esm/adapter-express/express-utils/constants.js +63 -0
  117. package/lib/esm/adapter-express/express-utils/content/httpContent.js +6 -0
  118. package/lib/esm/adapter-express/express-utils/content-negotiation-decorators.js +120 -0
  119. package/lib/esm/adapter-express/express-utils/decorators.js +575 -0
  120. package/lib/esm/adapter-express/express-utils/exception-filter-decorators.js +6 -0
  121. package/lib/esm/adapter-express/express-utils/guard-context-factory.js +83 -0
  122. package/lib/esm/adapter-express/express-utils/guard-middleware.js +115 -0
  123. package/lib/esm/adapter-express/express-utils/guard-utils.js +14 -0
  124. package/lib/esm/adapter-express/express-utils/http-context-store.js +10 -0
  125. package/lib/esm/adapter-express/express-utils/http-status-middleware.js +116 -0
  126. package/lib/esm/adapter-express/express-utils/httpResponseMessage.js +29 -0
  127. package/lib/esm/adapter-express/express-utils/index.js +24 -0
  128. package/lib/esm/adapter-express/express-utils/interceptor-middleware.js +130 -0
  129. package/lib/esm/adapter-express/express-utils/interfaces.js +1 -0
  130. package/lib/esm/adapter-express/express-utils/inversify-express-server.js +1031 -0
  131. package/lib/esm/adapter-express/express-utils/lazy-module-middleware.js +236 -0
  132. package/lib/esm/adapter-express/express-utils/middleware-composition.js +89 -0
  133. package/lib/esm/adapter-express/express-utils/permission-preloader.middleware.js +45 -0
  134. package/lib/esm/adapter-express/express-utils/resolver-multer.js +30 -0
  135. package/lib/esm/adapter-express/express-utils/route-constraints.js +91 -0
  136. package/lib/esm/adapter-express/express-utils/scope-extractor.interface.js +1 -0
  137. package/lib/esm/adapter-express/express-utils/scope-extractor.js +63 -0
  138. package/lib/esm/adapter-express/express-utils/setup-authorization.js +68 -0
  139. package/lib/esm/adapter-express/express-utils/setup-event-system.js +110 -0
  140. package/lib/esm/adapter-express/express-utils/setup-interceptors.js +100 -0
  141. package/lib/esm/adapter-express/express-utils/setup-lazy-loading.js +225 -0
  142. package/lib/esm/adapter-express/express-utils/utils.js +68 -0
  143. package/lib/esm/adapter-express/express-utils/validation-decorators.js +199 -0
  144. package/lib/esm/adapter-express/express-utils/validation-service.js +251 -0
  145. package/lib/esm/adapter-express/index.js +7 -0
  146. package/lib/esm/adapter-express/micro-api/application-express-micro-container.js +48 -0
  147. package/lib/esm/adapter-express/micro-api/application-express-micro-route.js +128 -0
  148. package/lib/esm/adapter-express/micro-api/application-express-micro.js +161 -0
  149. package/lib/esm/adapter-express/micro-api/gateway/circuit-breaker.js +174 -0
  150. package/lib/esm/adapter-express/micro-api/gateway/index.js +5 -0
  151. package/lib/esm/adapter-express/micro-api/gateway/service-proxy.js +210 -0
  152. package/lib/esm/adapter-express/micro-api/index.js +10 -0
  153. package/lib/esm/adapter-express/micro-api/micro.js +211 -0
  154. package/lib/esm/adapter-express/micro-api/queue/index.js +4 -0
  155. package/lib/esm/adapter-express/micro-api/queue/queue.interface.js +1 -0
  156. package/lib/esm/adapter-express/micro-api/queue/rabbitmq-consumer.js +229 -0
  157. package/lib/esm/adapter-express/micro-api/serverless/aws-lambda.adapter.js +180 -0
  158. package/lib/esm/adapter-express/micro-api/serverless/cloudflare.adapter.js +155 -0
  159. package/lib/esm/adapter-express/micro-api/serverless/index.js +6 -0
  160. package/lib/esm/adapter-express/micro-api/serverless/vercel.adapter.js +99 -0
  161. package/lib/esm/adapter-express/micro-api/service-mesh/index.js +5 -0
  162. package/lib/esm/adapter-express/micro-api/service-mesh/service-client.js +191 -0
  163. package/lib/esm/adapter-express/micro-api/service-mesh/service-discovery.js +259 -0
  164. package/lib/esm/adapter-express/middleware/index.js +5 -0
  165. package/lib/esm/adapter-express/middleware/request-logging.middleware.js +239 -0
  166. package/lib/esm/adapter-express/render/constants.js +37 -0
  167. package/lib/esm/adapter-express/render/engine.js +51 -0
  168. package/lib/esm/adapter-express/render/index.js +1 -0
  169. package/lib/esm/adapter-express/render/resolve-render.js +30 -0
  170. package/lib/esm/adapter-express/studio/index.js +1 -0
  171. package/lib/esm/adapter-express/studio/studio-integration.js +184 -0
  172. package/lib/esm/index.mjs +1 -0
  173. package/lib/esm/package.json +3 -0
  174. package/lib/esm/types/adapter-express/application-express.base.d.ts +77 -0
  175. package/lib/esm/types/adapter-express/application-express.d.ts +411 -0
  176. package/lib/esm/types/adapter-express/application-express.types.d.ts +23 -0
  177. package/lib/esm/types/adapter-express/express-utils/base-middleware.d.ts +8 -0
  178. package/lib/esm/types/adapter-express/express-utils/conditional-middleware.d.ts +97 -0
  179. package/lib/esm/types/adapter-express/express-utils/constants.d.ts +57 -0
  180. package/lib/esm/types/adapter-express/express-utils/content/httpContent.d.ts +6 -0
  181. package/lib/esm/types/adapter-express/express-utils/content-negotiation-decorators.d.ts +94 -0
  182. package/lib/esm/types/adapter-express/express-utils/decorators.d.ts +257 -0
  183. package/lib/esm/types/adapter-express/express-utils/exception-filter-decorators.d.ts +6 -0
  184. package/lib/esm/types/adapter-express/express-utils/guard-context-factory.d.ts +17 -0
  185. package/lib/esm/types/adapter-express/express-utils/guard-middleware.d.ts +22 -0
  186. package/lib/esm/types/adapter-express/express-utils/guard-utils.d.ts +11 -0
  187. package/lib/esm/types/adapter-express/express-utils/http-context-store.d.ts +20 -0
  188. package/lib/esm/types/adapter-express/express-utils/http-status-middleware.d.ts +26 -0
  189. package/lib/esm/types/adapter-express/express-utils/httpResponseMessage.d.ts +14 -0
  190. package/lib/esm/types/adapter-express/express-utils/index.d.ts +30 -0
  191. package/lib/esm/types/adapter-express/express-utils/interceptor-middleware.d.ts +40 -0
  192. package/lib/esm/types/adapter-express/express-utils/interfaces.d.ts +115 -0
  193. package/lib/esm/types/adapter-express/express-utils/inversify-express-server.d.ts +172 -0
  194. package/lib/esm/types/adapter-express/express-utils/lazy-module-middleware.d.ts +122 -0
  195. package/lib/esm/types/adapter-express/express-utils/middleware-composition.d.ts +85 -0
  196. package/lib/esm/types/adapter-express/express-utils/permission-preloader.middleware.d.ts +10 -0
  197. package/lib/esm/types/adapter-express/express-utils/resolver-multer.d.ts +7 -0
  198. package/lib/esm/types/adapter-express/express-utils/route-constraints.d.ts +89 -0
  199. package/lib/esm/types/adapter-express/express-utils/scope-extractor.d.ts +21 -0
  200. package/lib/esm/types/adapter-express/express-utils/scope-extractor.interface.d.ts +12 -0
  201. package/lib/esm/types/adapter-express/express-utils/setup-authorization.d.ts +34 -0
  202. package/lib/esm/types/adapter-express/express-utils/setup-event-system.d.ts +118 -0
  203. package/lib/esm/types/adapter-express/express-utils/setup-interceptors.d.ts +115 -0
  204. package/lib/esm/types/adapter-express/express-utils/setup-lazy-loading.d.ts +123 -0
  205. package/lib/esm/types/adapter-express/express-utils/utils.d.ts +24 -0
  206. package/lib/esm/types/adapter-express/express-utils/validation-decorators.d.ts +145 -0
  207. package/lib/esm/types/adapter-express/express-utils/validation-service.d.ts +88 -0
  208. package/lib/esm/types/adapter-express/index.d.ts +7 -0
  209. package/lib/esm/types/adapter-express/micro-api/application-express-micro-container.d.ts +47 -0
  210. package/lib/esm/types/adapter-express/micro-api/application-express-micro-route.d.ts +104 -0
  211. package/lib/esm/types/adapter-express/micro-api/application-express-micro.d.ts +72 -0
  212. package/lib/esm/types/adapter-express/micro-api/gateway/circuit-breaker.d.ts +111 -0
  213. package/lib/esm/types/adapter-express/micro-api/gateway/index.d.ts +5 -0
  214. package/lib/esm/types/adapter-express/micro-api/gateway/service-proxy.d.ts +83 -0
  215. package/lib/esm/types/adapter-express/micro-api/index.d.ts +7 -0
  216. package/lib/esm/types/adapter-express/micro-api/micro.d.ts +66 -0
  217. package/lib/esm/types/adapter-express/micro-api/queue/index.d.ts +5 -0
  218. package/lib/esm/types/adapter-express/micro-api/queue/queue.interface.d.ts +60 -0
  219. package/lib/esm/types/adapter-express/micro-api/queue/rabbitmq-consumer.d.ts +86 -0
  220. package/lib/esm/types/adapter-express/micro-api/serverless/aws-lambda.adapter.d.ts +77 -0
  221. package/lib/esm/types/adapter-express/micro-api/serverless/cloudflare.adapter.d.ts +64 -0
  222. package/lib/esm/types/adapter-express/micro-api/serverless/index.d.ts +6 -0
  223. package/lib/esm/types/adapter-express/micro-api/serverless/vercel.adapter.d.ts +56 -0
  224. package/lib/esm/types/adapter-express/micro-api/service-mesh/index.d.ts +5 -0
  225. package/lib/esm/types/adapter-express/micro-api/service-mesh/service-client.d.ts +122 -0
  226. package/lib/esm/types/adapter-express/micro-api/service-mesh/service-discovery.d.ts +150 -0
  227. package/lib/esm/types/adapter-express/middleware/index.d.ts +5 -0
  228. package/lib/esm/types/adapter-express/middleware/request-logging.middleware.d.ts +65 -0
  229. package/lib/esm/types/adapter-express/render/constants.d.ts +26 -0
  230. package/lib/esm/types/adapter-express/render/engine.d.ts +20 -0
  231. package/lib/esm/types/adapter-express/render/index.d.ts +5 -0
  232. package/lib/esm/types/adapter-express/render/resolve-render.d.ts +7 -0
  233. package/lib/esm/types/adapter-express/studio/index.d.ts +1 -0
  234. package/lib/esm/types/adapter-express/studio/studio-integration.d.ts +92 -0
  235. package/lib/esm/types/index.d.ts +1 -0
  236. package/lib/package.json +156 -146
  237. package/package.json +156 -146
  238. package/lib/cjs/di/di.interfaces.js +0 -10
  239. package/lib/cjs/types/di/di.interfaces.d.ts +0 -289
@@ -0,0 +1,77 @@
1
+ /**
2
+ * AWS Lambda Adapter for ExpressoTS Micro API
3
+ *
4
+ * Converts Lambda events to Express requests and responses.
5
+ */
6
+ import { Application } from "express";
7
+ /**
8
+ * AWS Lambda Event (simplified)
9
+ */
10
+ export interface LambdaEvent {
11
+ httpMethod: string;
12
+ path: string;
13
+ headers?: Record<string, string>;
14
+ queryStringParameters?: Record<string, string>;
15
+ body?: string;
16
+ isBase64Encoded?: boolean;
17
+ requestContext?: {
18
+ requestId?: string;
19
+ stage?: string;
20
+ };
21
+ }
22
+ /**
23
+ * AWS Lambda Context
24
+ */
25
+ export interface LambdaContext {
26
+ awsRequestId: string;
27
+ functionName: string;
28
+ functionVersion: string;
29
+ invokedFunctionArn: string;
30
+ memoryLimitInMB: string;
31
+ logGroupName: string;
32
+ logStreamName: string;
33
+ getRemainingTimeInMillis(): number;
34
+ }
35
+ /**
36
+ * AWS Lambda Response
37
+ */
38
+ export interface LambdaResponse {
39
+ statusCode: number;
40
+ headers: Record<string, string>;
41
+ body: string;
42
+ isBase64Encoded: boolean;
43
+ }
44
+ /**
45
+ * AWS Lambda Handler Type
46
+ */
47
+ export type LambdaHandler = (event: LambdaEvent, context: LambdaContext) => Promise<LambdaResponse>;
48
+ /**
49
+ * AWS Lambda Adapter Configuration
50
+ */
51
+ export interface LambdaAdapterConfig {
52
+ /** Binary content types (will be base64 encoded) */
53
+ binaryContentTypes?: Array<string>;
54
+ /** Enable debug logging */
55
+ debug?: boolean;
56
+ /** Request timeout in ms (default: 30000) */
57
+ timeout?: number;
58
+ }
59
+ /**
60
+ * Create an AWS Lambda handler from an Express app
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * import { createMicroAPI, awsLambdaAdapter } from "@expressots/adapter-express";
65
+ *
66
+ * const microAPI = createMicroAPI();
67
+ * const app = microAPI.build();
68
+ *
69
+ * app.Middleware.parse();
70
+ * app.Route.get("/", (req, res) => res.json({ message: "Hello Lambda!" }));
71
+ *
72
+ * export const handler = awsLambdaAdapter(app);
73
+ * ```
74
+ */
75
+ export declare function awsLambdaAdapter(app: {
76
+ getExpressApp?: () => Application;
77
+ } | Application, config?: LambdaAdapterConfig): LambdaHandler;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Cloudflare Workers Adapter for ExpressoTS Micro API
3
+ *
4
+ * Converts Cloudflare Workers requests to Express format.
5
+ * Note: This adapter requires a Cloudflare Workers-compatible Express implementation
6
+ * or uses a fetch-based approach.
7
+ */
8
+ import { Application } from "express";
9
+ /**
10
+ * Cloudflare Workers Environment bindings
11
+ */
12
+ export interface CloudflareEnv {
13
+ [key: string]: unknown;
14
+ }
15
+ /**
16
+ * Cloudflare Workers Execution Context
17
+ */
18
+ export interface CloudflareContext {
19
+ waitUntil(promise: Promise<unknown>): void;
20
+ passThroughOnException(): void;
21
+ }
22
+ /**
23
+ * Cloudflare Workers Handler Type
24
+ */
25
+ export type CloudflareHandler = {
26
+ fetch(request: globalThis.Request, env: CloudflareEnv, ctx: CloudflareContext): Promise<globalThis.Response>;
27
+ };
28
+ /**
29
+ * Cloudflare Adapter Configuration
30
+ */
31
+ export interface CloudflareAdapterConfig {
32
+ /** Enable debug logging */
33
+ debug?: boolean;
34
+ }
35
+ /**
36
+ * Create a Cloudflare Workers handler from an Express app
37
+ *
38
+ * Note: Full Express compatibility in Cloudflare Workers requires
39
+ * additional setup. This adapter provides a basic implementation.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * // src/worker.ts
44
+ * import { createMicroAPI, cloudflareAdapter } from "@expressots/adapter-express";
45
+ *
46
+ * const microAPI = createMicroAPI();
47
+ * const app = microAPI.build();
48
+ *
49
+ * app.Middleware.parse();
50
+ * app.Route.get("/", (req, res) => res.json({ message: "Hello Workers!" }));
51
+ *
52
+ * export default cloudflareAdapter(app);
53
+ * ```
54
+ *
55
+ * wrangler.toml:
56
+ * ```toml
57
+ * name = "my-worker"
58
+ * main = "src/worker.ts"
59
+ * compatibility_date = "2024-01-01"
60
+ * ```
61
+ */
62
+ export declare function cloudflareAdapter(app: {
63
+ getExpressApp?: () => Application;
64
+ } | Application, config?: CloudflareAdapterConfig): CloudflareHandler;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Serverless Adapters for ExpressoTS Micro Template
3
+ */
4
+ export { awsLambdaAdapter, type LambdaEvent, type LambdaContext, type LambdaResponse, type LambdaHandler, type LambdaAdapterConfig, } from "./aws-lambda.adapter.js";
5
+ export { vercelAdapter, type VercelRequest, type VercelResponse, type VercelHandler, type VercelAdapterConfig, } from "./vercel.adapter.js";
6
+ export { cloudflareAdapter, type CloudflareEnv, type CloudflareContext, type CloudflareHandler, type CloudflareAdapterConfig, } from "./cloudflare.adapter.js";
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Vercel Adapter for ExpressoTS Micro API
3
+ *
4
+ * Converts Vercel serverless function requests to Express format.
5
+ */
6
+ import { Application, Request, Response } from "express";
7
+ /**
8
+ * Vercel Request type - extends Express Request with Vercel-specific properties
9
+ */
10
+ export interface VercelRequest extends Request {
11
+ query: Record<string, string | Array<string>>;
12
+ cookies: Record<string, string>;
13
+ body: unknown;
14
+ }
15
+ /**
16
+ * Vercel Response type - use Express Response directly to avoid type conflicts
17
+ */
18
+ export type VercelResponse = Response;
19
+ /**
20
+ * Vercel Handler Type
21
+ */
22
+ export type VercelHandler = (req: VercelRequest, res: VercelResponse) => Promise<void>;
23
+ /**
24
+ * Vercel Adapter Configuration
25
+ */
26
+ export interface VercelAdapterConfig {
27
+ /** Enable debug logging */
28
+ debug?: boolean;
29
+ }
30
+ /**
31
+ * Create a Vercel serverless handler from an Express app
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * // api/index.ts
36
+ * import { createMicroAPI, vercelAdapter } from "@expressots/adapter-express";
37
+ *
38
+ * const microAPI = createMicroAPI();
39
+ * const app = microAPI.build();
40
+ *
41
+ * app.Middleware.parse();
42
+ * app.Route.get("/api", (req, res) => res.json({ message: "Hello Vercel!" }));
43
+ *
44
+ * export default vercelAdapter(app);
45
+ * ```
46
+ *
47
+ * vercel.json:
48
+ * ```json
49
+ * {
50
+ * "rewrites": [{ "source": "/api/(.*)", "destination": "/api" }]
51
+ * }
52
+ * ```
53
+ */
54
+ export declare function vercelAdapter(app: {
55
+ getExpressApp?: () => Application;
56
+ } | Application, config?: VercelAdapterConfig): VercelHandler;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Service Mesh Utilities for ExpressoTS Micro Template
3
+ */
4
+ export { ServiceClient, type ServiceClientConfig, type ServiceCallOptions, } from "./service-client.js";
5
+ export { ServiceDiscovery, type ServiceDiscoveryConfig, type ServiceInstance, } from "./service-discovery.js";
@@ -0,0 +1,122 @@
1
+ import { CircuitBreaker, CircuitBreakerConfig } from "../gateway/circuit-breaker.js";
2
+ /**
3
+ * Configuration for ServiceClient
4
+ */
5
+ export interface ServiceClientConfig {
6
+ /** Service name for logging/metrics */
7
+ name: string;
8
+ /** Base URL of the service */
9
+ baseUrl: string;
10
+ /** Request timeout in ms (default: 5000) */
11
+ timeout?: number;
12
+ /** Number of retries on failure (default: 3) */
13
+ retries?: number;
14
+ /** Enable circuit breaker (default: true) */
15
+ circuitBreaker?: boolean | CircuitBreakerConfig;
16
+ /** Default headers to send with all requests */
17
+ headers?: Record<string, string>;
18
+ }
19
+ /**
20
+ * Options for individual service calls
21
+ */
22
+ export interface ServiceCallOptions {
23
+ /** HTTP method (default: "GET") */
24
+ method?: string;
25
+ /** Request headers */
26
+ headers?: Record<string, string>;
27
+ /** Request body (will be JSON stringified) */
28
+ body?: unknown;
29
+ /** Query parameters */
30
+ params?: Record<string, string>;
31
+ /** Override timeout for this request */
32
+ timeout?: number;
33
+ }
34
+ /**
35
+ * ServiceClient - HTTP client for service-to-service communication.
36
+ *
37
+ * Features:
38
+ * - Automatic retries with exponential backoff
39
+ * - Circuit breaker integration
40
+ * - Request timeout
41
+ * - JSON request/response handling
42
+ * - Trace context propagation
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const userService = new ServiceClient({
47
+ * name: "user-service",
48
+ * baseUrl: "http://user-service:3001",
49
+ * timeout: 5000,
50
+ * retries: 3,
51
+ * circuitBreaker: true,
52
+ * });
53
+ *
54
+ * // GET request
55
+ * const user = await userService.call<User>("/users/123");
56
+ *
57
+ * // POST request
58
+ * const newUser = await userService.call<User>("/users", {
59
+ * method: "POST",
60
+ * body: { name: "John", email: "john@example.com" },
61
+ * });
62
+ *
63
+ * // With query parameters
64
+ * const users = await userService.call<User[]>("/users", {
65
+ * params: { page: "1", limit: "10" },
66
+ * });
67
+ * ```
68
+ */
69
+ export declare class ServiceClient {
70
+ private config;
71
+ private stats;
72
+ constructor(config: ServiceClientConfig);
73
+ /**
74
+ * Make a request to the service
75
+ * @param path - Request path
76
+ * @param options - Request options
77
+ */
78
+ call<T>(path: string, options?: ServiceCallOptions): Promise<T>;
79
+ /**
80
+ * GET request helper
81
+ */
82
+ get<T>(path: string, options?: Omit<ServiceCallOptions, "method" | "body">): Promise<T>;
83
+ /**
84
+ * POST request helper
85
+ */
86
+ post<T>(path: string, body?: unknown, options?: Omit<ServiceCallOptions, "method" | "body">): Promise<T>;
87
+ /**
88
+ * PUT request helper
89
+ */
90
+ put<T>(path: string, body?: unknown, options?: Omit<ServiceCallOptions, "method" | "body">): Promise<T>;
91
+ /**
92
+ * PATCH request helper
93
+ */
94
+ patch<T>(path: string, body?: unknown, options?: Omit<ServiceCallOptions, "method" | "body">): Promise<T>;
95
+ /**
96
+ * DELETE request helper
97
+ */
98
+ delete<T>(path: string, options?: Omit<ServiceCallOptions, "method" | "body">): Promise<T>;
99
+ /**
100
+ * Get service stats
101
+ */
102
+ getStats(): {
103
+ name: string;
104
+ baseUrl: string;
105
+ totalRequests: number;
106
+ successfulRequests: number;
107
+ failedRequests: number;
108
+ circuitBreaker?: ReturnType<CircuitBreaker["getStats"]>;
109
+ };
110
+ /**
111
+ * Execute request with retry logic
112
+ */
113
+ private executeWithRetry;
114
+ /**
115
+ * Execute a single request
116
+ */
117
+ private executeRequest;
118
+ /**
119
+ * Delay helper
120
+ */
121
+ private delay;
122
+ }
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Service instance information
3
+ */
4
+ export interface ServiceInstance {
5
+ /** Unique instance ID */
6
+ id: string;
7
+ /** Service name */
8
+ name: string;
9
+ /** Host address */
10
+ host: string;
11
+ /** Port number */
12
+ port: number;
13
+ /** Service metadata */
14
+ metadata?: Record<string, unknown>;
15
+ /** Health status */
16
+ health: "healthy" | "unhealthy";
17
+ /** Last health check timestamp */
18
+ lastCheck: Date;
19
+ }
20
+ /**
21
+ * Configuration for ServiceDiscovery
22
+ */
23
+ export interface ServiceDiscoveryConfig {
24
+ /** Discovery type: "consul", "etcd", or "static" */
25
+ type: "consul" | "etcd" | "static";
26
+ /** Discovery service endpoint (for consul/etcd) */
27
+ endpoint?: string;
28
+ /** Refresh interval in ms (default: 30000) */
29
+ refreshInterval?: number;
30
+ /** Enable debug logging (default: false) */
31
+ debug?: boolean;
32
+ }
33
+ /**
34
+ * ServiceDiscovery - Service discovery for microservices.
35
+ *
36
+ * Features:
37
+ * - Static service registration
38
+ * - Consul integration
39
+ * - etcd integration
40
+ * - Automatic service refresh
41
+ * - Round-robin load balancing
42
+ * - Health-based filtering
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * // Static service discovery
47
+ * const discovery = new ServiceDiscovery({ type: "static" });
48
+ *
49
+ * discovery.registerService({
50
+ * id: "user-service-1",
51
+ * name: "user-service",
52
+ * host: "user-service",
53
+ * port: 3001,
54
+ * health: "healthy",
55
+ * lastCheck: new Date(),
56
+ * });
57
+ *
58
+ * // Get a healthy instance
59
+ * const instance = discovery.getService("user-service");
60
+ * const client = new ServiceClient({
61
+ * name: "user-service",
62
+ * baseUrl: `http://${instance.host}:${instance.port}`,
63
+ * });
64
+ *
65
+ * // Or with Consul
66
+ * const discovery = new ServiceDiscovery({
67
+ * type: "consul",
68
+ * endpoint: "http://consul:8500",
69
+ * });
70
+ * await discovery.initialize();
71
+ * ```
72
+ */
73
+ export declare class ServiceDiscovery {
74
+ private services;
75
+ private roundRobinIndex;
76
+ private refreshTimer?;
77
+ private config;
78
+ constructor(config: ServiceDiscoveryConfig);
79
+ /**
80
+ * Initialize the service discovery
81
+ * For consul/etcd, this starts the refresh loop
82
+ */
83
+ initialize(): Promise<void>;
84
+ /**
85
+ * Register a service instance (for static mode)
86
+ * @param service - Service instance to register
87
+ */
88
+ registerService(service: ServiceInstance): void;
89
+ /**
90
+ * Deregister a service instance
91
+ * @param serviceName - Service name
92
+ * @param instanceId - Instance ID to remove
93
+ */
94
+ deregisterService(serviceName: string, instanceId: string): void;
95
+ /**
96
+ * Get a healthy instance of a service (round-robin)
97
+ * @param name - Service name
98
+ * @returns A healthy service instance or null
99
+ */
100
+ getService(name: string): ServiceInstance | null;
101
+ /**
102
+ * Get all instances of a service
103
+ * @param name - Service name
104
+ * @param healthyOnly - Only return healthy instances (default: true)
105
+ */
106
+ getServiceInstances(name: string, healthyOnly?: boolean): Array<ServiceInstance>;
107
+ /**
108
+ * Get all registered services
109
+ */
110
+ getAllServices(): Map<string, Array<ServiceInstance>>;
111
+ /**
112
+ * List all registered service names
113
+ */
114
+ listServices(): Array<string>;
115
+ /**
116
+ * Update health status of a service instance
117
+ * @param serviceName - Service name
118
+ * @param instanceId - Instance ID
119
+ * @param health - New health status
120
+ */
121
+ updateHealth(serviceName: string, instanceId: string, health: "healthy" | "unhealthy"): boolean;
122
+ /**
123
+ * Get service statistics
124
+ */
125
+ getStats(): Record<string, {
126
+ total: number;
127
+ healthy: number;
128
+ unhealthy: number;
129
+ }>;
130
+ /**
131
+ * Stop the service discovery
132
+ */
133
+ stop(): void;
134
+ /**
135
+ * Refresh service list from discovery backend
136
+ */
137
+ private refresh;
138
+ /**
139
+ * Refresh from Consul
140
+ */
141
+ private refreshFromConsul;
142
+ /**
143
+ * Get instances from Consul for a specific service
144
+ */
145
+ private getConsulInstances;
146
+ /**
147
+ * Refresh from etcd
148
+ */
149
+ private refreshFromEtcd;
150
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @file middleware/index.ts
3
+ * @description Exports for ExpressoTS middleware
4
+ */
5
+ export * from "./request-logging.middleware.js";
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @file request-logging.middleware.ts
3
+ * @description HTTP request/response logging middleware with context enrichment
4
+ * @module @expressots/adapter-express
5
+ *
6
+ * Features:
7
+ * - Request ID generation/extraction
8
+ * - Request/response timing
9
+ * - Slow request detection
10
+ * - Configurable verbosity levels
11
+ * - Body logging with redaction support
12
+ */
13
+ import { Request, Response, NextFunction } from "express";
14
+ import { Logger } from "@expressots/core";
15
+ /**
16
+ * Verbosity levels for request logging.
17
+ * @public API
18
+ */
19
+ export type RequestLogVerbosity = "minimal" | "normal" | "detailed" | "debug";
20
+ /**
21
+ * Configuration for request logging middleware.
22
+ * @public API
23
+ */
24
+ export interface RequestLoggingConfig {
25
+ /** Verbosity level for request logs */
26
+ verbosity: RequestLogVerbosity;
27
+ /** Log request body (with redaction) */
28
+ logBody: boolean;
29
+ /** Log request headers */
30
+ logHeaders: boolean;
31
+ /** Log response body */
32
+ logResponseBody: boolean;
33
+ /** Threshold for slow request warning (ms) */
34
+ slowRequestThreshold: number;
35
+ /** Patterns to skip logging (e.g., health checks) */
36
+ skipPatterns: Array<RegExp>;
37
+ /** Custom header name for request ID */
38
+ requestIdHeader: string;
39
+ /** Custom header name for correlation ID (for distributed tracing) */
40
+ correlationIdHeader: string;
41
+ /** Include user agent in logs */
42
+ logUserAgent: boolean;
43
+ /** Include IP address in logs */
44
+ logIp: boolean;
45
+ }
46
+ /**
47
+ * Default request logging configuration.
48
+ */
49
+ export declare function getDefaultRequestLoggingConfig(): RequestLoggingConfig;
50
+ /**
51
+ * Create request logging middleware.
52
+ * @param logger - Logger instance to use
53
+ * @param config - Optional configuration
54
+ * @returns Express middleware function
55
+ * @public API
56
+ */
57
+ export declare function createRequestLoggingMiddleware(logger: Logger, config?: Partial<RequestLoggingConfig>): (req: Request, res: Response, next: NextFunction) => void;
58
+ /**
59
+ * Express middleware that assigns a request ID to each request.
60
+ * Simpler alternative to full request logging.
61
+ * @param headerName - Header name for request ID (default: x-request-id)
62
+ * @returns Express middleware
63
+ * @public API
64
+ */
65
+ export declare function requestIdMiddleware(headerName?: string): (req: Request, res: Response, next: NextFunction) => void;
@@ -0,0 +1,26 @@
1
+ import { RenderEngine } from "@expressots/shared";
2
+ /**
3
+ * Ejs defaults
4
+ * @type {EjsOptions}
5
+ * @constant
6
+ * @default
7
+ */
8
+ export declare const EJS_DEFAULTS: RenderEngine.EjsOptions;
9
+ /**
10
+ * Handlebars defaults
11
+ * @type {HandlebarsOptions}
12
+ * @constant
13
+ * @default
14
+ */
15
+ export declare const HANDLEBARS_DEFAULTS: RenderEngine.HandlebarsOptions;
16
+ /**
17
+ * Default partials directory
18
+ */
19
+ export declare const DEFAULT_PARTIALS_DIR: string;
20
+ /**
21
+ * Pug defaults
22
+ * @type {PugOptions}
23
+ * @constant
24
+ * @default
25
+ */
26
+ export declare const PUG_DEFAULTS: RenderEngine.PugOptions;
@@ -0,0 +1,20 @@
1
+ import { Application } from "express";
2
+ import { RenderEngine } from "@expressots/shared";
3
+ /**
4
+ * Set Ejs as the view engine
5
+ * @param {Application} app - The express application
6
+ * @param {EjsOptions} [options=EJS_DEFAULTS] - The ejs options
7
+ */
8
+ export declare function setEngineEjs(app: Application, options?: RenderEngine.EjsOptions): Promise<void>;
9
+ /**
10
+ * Set Handlebars as the view engine
11
+ * @param {express.Application} app - The express application
12
+ * @param {HandlebarsOptions} [options=HANDLEBARS_DEFAULTS] - The handlebars options
13
+ */
14
+ export declare function setEngineHandlebars(app: Application, options?: RenderEngine.HandlebarsOptions): Promise<void>;
15
+ /**
16
+ * Set Pug as the view engine
17
+ * @param {express.Application} app - The express application
18
+ * @param {PugOptions} [options=PUG_DEFAULTS] - The pug options
19
+ */
20
+ export declare function setEnginePug(app: Application, options?: RenderEngine.PugOptions): Promise<void>;
@@ -0,0 +1,5 @@
1
+ import { RenderEngine } from "@expressots/shared";
2
+ export type EJS = RenderEngine.EjsOptions;
3
+ export type HBS = RenderEngine.HandlebarsOptions;
4
+ export type PUG = RenderEngine.PugOptions;
5
+ export { setEngineEjs, setEngineHandlebars, setEnginePug } from "./engine.js";
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Resolve package from the current working directory.
3
+ * @param packageName
4
+ * @param options
5
+ * @returns
6
+ */
7
+ export declare function packageResolver(packageName: string, ...options: Array<any>): any;
@@ -0,0 +1 @@
1
+ export { initializeStudio, stopStudio, isStudioEnabled, getStudioAgent, reportStudioRuntimeInfo, } from "./studio-integration.js";