@expressots/adapter-express 3.0.0 → 4.0.0-preview.3
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.
- package/LICENSE.md +21 -21
- package/README.md +61 -118
- package/lib/CHANGELOG.md +36 -5
- package/lib/README.md +61 -118
- package/lib/cjs/adapter-express/application-express.base.js +3 -1
- package/lib/cjs/adapter-express/application-express.js +1405 -85
- package/lib/cjs/adapter-express/express-utils/conditional-middleware.js +102 -0
- package/lib/cjs/adapter-express/express-utils/constants.js +17 -0
- package/lib/cjs/adapter-express/express-utils/content-negotiation-decorators.js +129 -0
- package/lib/cjs/adapter-express/express-utils/decorators.js +225 -59
- package/lib/cjs/adapter-express/express-utils/exception-filter-decorators.js +11 -0
- package/lib/cjs/adapter-express/express-utils/guard-context-factory.js +84 -0
- package/lib/cjs/adapter-express/express-utils/guard-middleware.js +115 -0
- package/lib/cjs/adapter-express/express-utils/guard-utils.js +18 -0
- package/lib/cjs/adapter-express/express-utils/http-context-store.js +15 -0
- package/lib/cjs/adapter-express/express-utils/http-status-middleware.js +37 -2
- package/lib/cjs/adapter-express/express-utils/index.js +67 -1
- package/lib/cjs/adapter-express/express-utils/interceptor-middleware.js +132 -0
- package/lib/cjs/adapter-express/express-utils/inversify-express-server.js +827 -64
- package/lib/cjs/adapter-express/express-utils/lazy-module-middleware.js +241 -0
- package/lib/cjs/adapter-express/express-utils/middleware-composition.js +95 -0
- package/lib/cjs/adapter-express/express-utils/path-pattern-compat.js +129 -0
- package/lib/cjs/adapter-express/express-utils/permission-preloader.middleware.js +48 -0
- package/lib/cjs/adapter-express/express-utils/route-constraints.js +104 -0
- package/lib/cjs/adapter-express/express-utils/scope-extractor.interface.js +2 -0
- package/lib/cjs/adapter-express/express-utils/scope-extractor.js +66 -0
- package/lib/cjs/adapter-express/express-utils/setup-authorization.js +71 -0
- package/lib/cjs/adapter-express/express-utils/setup-event-system.js +113 -0
- package/lib/cjs/adapter-express/express-utils/setup-interceptors.js +103 -0
- package/lib/cjs/adapter-express/express-utils/setup-lazy-loading.js +228 -0
- package/lib/cjs/adapter-express/express-utils/utils.js +30 -12
- package/lib/cjs/adapter-express/express-utils/validation-decorators.js +205 -0
- package/lib/cjs/adapter-express/express-utils/validation-service.js +252 -0
- package/lib/cjs/adapter-express/index.js +7 -5
- package/lib/cjs/adapter-express/micro-api/application-express-micro-route.js +31 -1
- package/lib/cjs/adapter-express/micro-api/application-express-micro.js +8 -38
- package/lib/cjs/adapter-express/micro-api/gateway/circuit-breaker.js +174 -0
- package/lib/cjs/adapter-express/micro-api/gateway/index.js +11 -0
- package/lib/cjs/adapter-express/micro-api/gateway/service-proxy.js +214 -0
- package/lib/cjs/adapter-express/micro-api/index.js +27 -3
- package/lib/cjs/adapter-express/micro-api/micro.js +272 -0
- package/lib/cjs/adapter-express/micro-api/queue/index.js +8 -0
- package/lib/cjs/adapter-express/micro-api/queue/queue.interface.js +2 -0
- package/lib/cjs/adapter-express/micro-api/queue/rabbitmq-consumer.js +255 -0
- package/lib/cjs/adapter-express/micro-api/serverless/aws-lambda.adapter.js +183 -0
- package/lib/cjs/adapter-express/micro-api/serverless/cloudflare.adapter.js +158 -0
- package/lib/cjs/adapter-express/micro-api/serverless/index.js +12 -0
- package/lib/cjs/adapter-express/micro-api/serverless/vercel.adapter.js +102 -0
- package/lib/cjs/adapter-express/micro-api/service-mesh/index.js +10 -0
- package/lib/cjs/adapter-express/micro-api/service-mesh/service-client.js +194 -0
- package/lib/cjs/adapter-express/micro-api/service-mesh/service-discovery.js +261 -0
- package/lib/cjs/adapter-express/middleware/index.js +21 -0
- package/lib/cjs/adapter-express/middleware/request-logging.middleware.js +244 -0
- package/lib/cjs/adapter-express/render/engine.js +15 -15
- package/lib/cjs/adapter-express/render/index.js +5 -0
- package/lib/cjs/adapter-express/studio/index.js +10 -0
- package/lib/cjs/adapter-express/studio/studio-integration.js +267 -0
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/types/adapter-express/application-express.base.d.ts +20 -7
- package/lib/cjs/types/adapter-express/application-express.d.ts +316 -33
- package/lib/cjs/types/adapter-express/express-utils/base-middleware.d.ts +2 -2
- package/lib/cjs/types/adapter-express/express-utils/conditional-middleware.d.ts +97 -0
- package/lib/cjs/types/adapter-express/express-utils/constants.d.ts +13 -0
- package/lib/cjs/types/adapter-express/express-utils/content-negotiation-decorators.d.ts +94 -0
- package/lib/cjs/types/adapter-express/express-utils/decorators.d.ts +54 -6
- package/lib/cjs/types/adapter-express/express-utils/exception-filter-decorators.d.ts +6 -0
- package/lib/cjs/types/adapter-express/express-utils/guard-context-factory.d.ts +17 -0
- package/lib/cjs/types/adapter-express/express-utils/guard-middleware.d.ts +22 -0
- package/lib/cjs/types/adapter-express/express-utils/guard-utils.d.ts +11 -0
- package/lib/cjs/types/adapter-express/express-utils/http-context-store.d.ts +20 -0
- package/lib/cjs/types/adapter-express/express-utils/httpResponseMessage.d.ts +1 -1
- package/lib/cjs/types/adapter-express/express-utils/index.d.ts +30 -2
- package/lib/cjs/types/adapter-express/express-utils/interceptor-middleware.d.ts +40 -0
- package/lib/cjs/types/adapter-express/express-utils/interfaces.d.ts +42 -5
- package/lib/cjs/types/adapter-express/express-utils/inversify-express-server.d.ts +114 -2
- package/lib/cjs/types/adapter-express/express-utils/lazy-module-middleware.d.ts +122 -0
- package/lib/cjs/types/adapter-express/express-utils/middleware-composition.d.ts +85 -0
- package/lib/cjs/types/adapter-express/express-utils/path-pattern-compat.d.ts +66 -0
- package/lib/cjs/types/adapter-express/express-utils/permission-preloader.middleware.d.ts +10 -0
- package/lib/cjs/types/adapter-express/express-utils/route-constraints.d.ts +98 -0
- package/lib/cjs/types/adapter-express/express-utils/scope-extractor.d.ts +21 -0
- package/lib/cjs/types/adapter-express/express-utils/scope-extractor.interface.d.ts +12 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-authorization.d.ts +34 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-event-system.d.ts +118 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-interceptors.d.ts +115 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-lazy-loading.d.ts +123 -0
- package/lib/cjs/types/adapter-express/express-utils/utils.d.ts +17 -2
- package/lib/cjs/types/adapter-express/express-utils/validation-decorators.d.ts +145 -0
- package/lib/cjs/types/adapter-express/express-utils/validation-service.d.ts +88 -0
- package/lib/cjs/types/adapter-express/index.d.ts +6 -4
- package/lib/cjs/types/adapter-express/micro-api/application-express-micro-route.d.ts +25 -14
- package/lib/cjs/types/adapter-express/micro-api/application-express-micro.d.ts +3 -10
- package/lib/cjs/types/adapter-express/micro-api/gateway/circuit-breaker.d.ts +111 -0
- package/lib/cjs/types/adapter-express/micro-api/gateway/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/micro-api/gateway/service-proxy.d.ts +83 -0
- package/lib/cjs/types/adapter-express/micro-api/index.d.ts +7 -1
- package/lib/cjs/types/adapter-express/micro-api/micro.d.ts +83 -0
- package/lib/cjs/types/adapter-express/micro-api/queue/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/micro-api/queue/queue.interface.d.ts +60 -0
- package/lib/cjs/types/adapter-express/micro-api/queue/rabbitmq-consumer.d.ts +86 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/aws-lambda.adapter.d.ts +77 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/cloudflare.adapter.d.ts +64 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/index.d.ts +6 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/vercel.adapter.d.ts +56 -0
- package/lib/cjs/types/adapter-express/micro-api/service-mesh/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/micro-api/service-mesh/service-client.d.ts +122 -0
- package/lib/cjs/types/adapter-express/micro-api/service-mesh/service-discovery.d.ts +150 -0
- package/lib/cjs/types/adapter-express/middleware/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/middleware/request-logging.middleware.d.ts +65 -0
- package/lib/cjs/types/adapter-express/render/index.d.ts +1 -0
- package/lib/cjs/types/adapter-express/studio/index.d.ts +1 -0
- package/lib/cjs/types/adapter-express/studio/studio-integration.d.ts +170 -0
- package/lib/cjs/types/index.d.ts +1 -1
- package/lib/esm/adapter-express/application-express.base.js +24 -0
- package/lib/esm/adapter-express/application-express.js +1656 -0
- package/lib/esm/adapter-express/application-express.types.js +1 -0
- package/lib/esm/adapter-express/express-utils/base-middleware.js +19 -0
- package/lib/esm/adapter-express/express-utils/conditional-middleware.js +96 -0
- package/lib/esm/adapter-express/express-utils/constants.js +63 -0
- package/lib/esm/adapter-express/express-utils/content/httpContent.js +6 -0
- package/lib/esm/adapter-express/express-utils/content-negotiation-decorators.js +120 -0
- package/lib/esm/adapter-express/express-utils/decorators.js +604 -0
- package/lib/esm/adapter-express/express-utils/exception-filter-decorators.js +6 -0
- package/lib/esm/adapter-express/express-utils/guard-context-factory.js +83 -0
- package/lib/esm/adapter-express/express-utils/guard-middleware.js +115 -0
- package/lib/esm/adapter-express/express-utils/guard-utils.js +14 -0
- package/lib/esm/adapter-express/express-utils/http-context-store.js +10 -0
- package/lib/esm/adapter-express/express-utils/http-status-middleware.js +116 -0
- package/lib/esm/adapter-express/express-utils/httpResponseMessage.js +29 -0
- package/lib/esm/adapter-express/express-utils/index.js +24 -0
- package/lib/esm/adapter-express/express-utils/interceptor-middleware.js +130 -0
- package/lib/esm/adapter-express/express-utils/interfaces.js +1 -0
- package/lib/esm/adapter-express/express-utils/inversify-express-server.js +1047 -0
- package/lib/esm/adapter-express/express-utils/lazy-module-middleware.js +236 -0
- package/lib/esm/adapter-express/express-utils/middleware-composition.js +89 -0
- package/lib/esm/adapter-express/express-utils/path-pattern-compat.js +125 -0
- package/lib/esm/adapter-express/express-utils/permission-preloader.middleware.js +45 -0
- package/lib/esm/adapter-express/express-utils/resolver-multer.js +30 -0
- package/lib/esm/adapter-express/express-utils/route-constraints.js +100 -0
- package/lib/esm/adapter-express/express-utils/scope-extractor.interface.js +1 -0
- package/lib/esm/adapter-express/express-utils/scope-extractor.js +63 -0
- package/lib/esm/adapter-express/express-utils/setup-authorization.js +68 -0
- package/lib/esm/adapter-express/express-utils/setup-event-system.js +110 -0
- package/lib/esm/adapter-express/express-utils/setup-interceptors.js +100 -0
- package/lib/esm/adapter-express/express-utils/setup-lazy-loading.js +225 -0
- package/lib/esm/adapter-express/express-utils/utils.js +68 -0
- package/lib/esm/adapter-express/express-utils/validation-decorators.js +199 -0
- package/lib/esm/adapter-express/express-utils/validation-service.js +251 -0
- package/lib/esm/adapter-express/index.js +7 -0
- package/lib/esm/adapter-express/micro-api/application-express-micro-container.js +48 -0
- package/lib/esm/adapter-express/micro-api/application-express-micro-route.js +128 -0
- package/lib/esm/adapter-express/micro-api/application-express-micro.js +157 -0
- package/lib/esm/adapter-express/micro-api/gateway/circuit-breaker.js +174 -0
- package/lib/esm/adapter-express/micro-api/gateway/index.js +5 -0
- package/lib/esm/adapter-express/micro-api/gateway/service-proxy.js +210 -0
- package/lib/esm/adapter-express/micro-api/index.js +10 -0
- package/lib/esm/adapter-express/micro-api/micro.js +266 -0
- package/lib/esm/adapter-express/micro-api/queue/index.js +4 -0
- package/lib/esm/adapter-express/micro-api/queue/queue.interface.js +1 -0
- package/lib/esm/adapter-express/micro-api/queue/rabbitmq-consumer.js +229 -0
- package/lib/esm/adapter-express/micro-api/serverless/aws-lambda.adapter.js +180 -0
- package/lib/esm/adapter-express/micro-api/serverless/cloudflare.adapter.js +155 -0
- package/lib/esm/adapter-express/micro-api/serverless/index.js +6 -0
- package/lib/esm/adapter-express/micro-api/serverless/vercel.adapter.js +99 -0
- package/lib/esm/adapter-express/micro-api/service-mesh/index.js +5 -0
- package/lib/esm/adapter-express/micro-api/service-mesh/service-client.js +191 -0
- package/lib/esm/adapter-express/micro-api/service-mesh/service-discovery.js +259 -0
- package/lib/esm/adapter-express/middleware/index.js +5 -0
- package/lib/esm/adapter-express/middleware/request-logging.middleware.js +239 -0
- package/lib/esm/adapter-express/render/constants.js +37 -0
- package/lib/esm/adapter-express/render/engine.js +51 -0
- package/lib/esm/adapter-express/render/index.js +1 -0
- package/lib/esm/adapter-express/render/resolve-render.js +30 -0
- package/lib/esm/adapter-express/studio/index.js +1 -0
- package/lib/esm/adapter-express/studio/studio-integration.js +236 -0
- package/lib/esm/index.mjs +1 -0
- package/lib/esm/package.json +3 -0
- package/lib/esm/types/adapter-express/application-express.base.d.ts +77 -0
- package/lib/esm/types/adapter-express/application-express.d.ts +453 -0
- package/lib/esm/types/adapter-express/application-express.types.d.ts +23 -0
- package/lib/esm/types/adapter-express/express-utils/base-middleware.d.ts +8 -0
- package/lib/esm/types/adapter-express/express-utils/conditional-middleware.d.ts +97 -0
- package/lib/esm/types/adapter-express/express-utils/constants.d.ts +57 -0
- package/lib/esm/types/adapter-express/express-utils/content/httpContent.d.ts +6 -0
- package/lib/esm/types/adapter-express/express-utils/content-negotiation-decorators.d.ts +94 -0
- package/lib/esm/types/adapter-express/express-utils/decorators.d.ts +257 -0
- package/lib/esm/types/adapter-express/express-utils/exception-filter-decorators.d.ts +6 -0
- package/lib/esm/types/adapter-express/express-utils/guard-context-factory.d.ts +17 -0
- package/lib/esm/types/adapter-express/express-utils/guard-middleware.d.ts +22 -0
- package/lib/esm/types/adapter-express/express-utils/guard-utils.d.ts +11 -0
- package/lib/esm/types/adapter-express/express-utils/http-context-store.d.ts +20 -0
- package/lib/esm/types/adapter-express/express-utils/http-status-middleware.d.ts +26 -0
- package/lib/esm/types/adapter-express/express-utils/httpResponseMessage.d.ts +14 -0
- package/lib/esm/types/adapter-express/express-utils/index.d.ts +30 -0
- package/lib/esm/types/adapter-express/express-utils/interceptor-middleware.d.ts +40 -0
- package/lib/esm/types/adapter-express/express-utils/interfaces.d.ts +115 -0
- package/lib/esm/types/adapter-express/express-utils/inversify-express-server.d.ts +172 -0
- package/lib/esm/types/adapter-express/express-utils/lazy-module-middleware.d.ts +122 -0
- package/lib/esm/types/adapter-express/express-utils/middleware-composition.d.ts +85 -0
- package/lib/esm/types/adapter-express/express-utils/path-pattern-compat.d.ts +66 -0
- package/lib/esm/types/adapter-express/express-utils/permission-preloader.middleware.d.ts +10 -0
- package/lib/esm/types/adapter-express/express-utils/resolver-multer.d.ts +7 -0
- package/lib/esm/types/adapter-express/express-utils/route-constraints.d.ts +98 -0
- package/lib/esm/types/adapter-express/express-utils/scope-extractor.d.ts +21 -0
- package/lib/esm/types/adapter-express/express-utils/scope-extractor.interface.d.ts +12 -0
- package/lib/esm/types/adapter-express/express-utils/setup-authorization.d.ts +34 -0
- package/lib/esm/types/adapter-express/express-utils/setup-event-system.d.ts +118 -0
- package/lib/esm/types/adapter-express/express-utils/setup-interceptors.d.ts +115 -0
- package/lib/esm/types/adapter-express/express-utils/setup-lazy-loading.d.ts +123 -0
- package/lib/esm/types/adapter-express/express-utils/utils.d.ts +24 -0
- package/lib/esm/types/adapter-express/express-utils/validation-decorators.d.ts +145 -0
- package/lib/esm/types/adapter-express/express-utils/validation-service.d.ts +88 -0
- package/lib/esm/types/adapter-express/index.d.ts +7 -0
- package/lib/esm/types/adapter-express/micro-api/application-express-micro-container.d.ts +47 -0
- package/lib/esm/types/adapter-express/micro-api/application-express-micro-route.d.ts +104 -0
- package/lib/esm/types/adapter-express/micro-api/application-express-micro.d.ts +72 -0
- package/lib/esm/types/adapter-express/micro-api/gateway/circuit-breaker.d.ts +111 -0
- package/lib/esm/types/adapter-express/micro-api/gateway/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/micro-api/gateway/service-proxy.d.ts +83 -0
- package/lib/esm/types/adapter-express/micro-api/index.d.ts +7 -0
- package/lib/esm/types/adapter-express/micro-api/micro.d.ts +83 -0
- package/lib/esm/types/adapter-express/micro-api/queue/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/micro-api/queue/queue.interface.d.ts +60 -0
- package/lib/esm/types/adapter-express/micro-api/queue/rabbitmq-consumer.d.ts +86 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/aws-lambda.adapter.d.ts +77 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/cloudflare.adapter.d.ts +64 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/index.d.ts +6 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/vercel.adapter.d.ts +56 -0
- package/lib/esm/types/adapter-express/micro-api/service-mesh/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/micro-api/service-mesh/service-client.d.ts +122 -0
- package/lib/esm/types/adapter-express/micro-api/service-mesh/service-discovery.d.ts +150 -0
- package/lib/esm/types/adapter-express/middleware/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/middleware/request-logging.middleware.d.ts +65 -0
- package/lib/esm/types/adapter-express/render/constants.d.ts +26 -0
- package/lib/esm/types/adapter-express/render/engine.d.ts +20 -0
- package/lib/esm/types/adapter-express/render/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/render/resolve-render.d.ts +7 -0
- package/lib/esm/types/adapter-express/studio/index.d.ts +1 -0
- package/lib/esm/types/adapter-express/studio/studio-integration.d.ts +170 -0
- package/lib/esm/types/index.d.ts +1 -0
- package/lib/package.json +170 -146
- package/package.json +170 -146
- package/lib/cjs/di/di.interfaces.js +0 -10
- package/lib/cjs/types/di/di.interfaces.d.ts +0 -289
|
@@ -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 @@
|
|
|
1
|
+
export { initializeStudio, stopStudio, isStudioEnabled, getStudioAgent, reportStudioRuntimeInfo, rescanStudioRoutes, } from "./studio-integration.js";
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Studio Integration - Auto-detects and integrates ExpressoTS Studio Agent
|
|
3
|
+
*
|
|
4
|
+
* This module provides automatic integration with @expressots/studio-agent
|
|
5
|
+
* when it's installed in the project. It enables request recording, tracing,
|
|
6
|
+
* and real-time monitoring without requiring manual setup.
|
|
7
|
+
*/
|
|
8
|
+
import type { Application, RequestHandler } from "express";
|
|
9
|
+
interface StudioAgentInstance {
|
|
10
|
+
start(): Promise<void>;
|
|
11
|
+
stop(): Promise<void>;
|
|
12
|
+
createMiddleware(): RequestHandler;
|
|
13
|
+
scanRoutes(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Optional — older agents may not implement this. Used to push the
|
|
16
|
+
* actual listening port + boot duration once the host server is up.
|
|
17
|
+
*/
|
|
18
|
+
updateRuntimeInfo?(patch: {
|
|
19
|
+
appPort?: number;
|
|
20
|
+
globalPrefix?: string;
|
|
21
|
+
startupMs?: number;
|
|
22
|
+
interceptorCount?: number;
|
|
23
|
+
providerCount?: number;
|
|
24
|
+
middlewareCount?: number;
|
|
25
|
+
runtimeItems?: StudioRuntimeItems;
|
|
26
|
+
middlewarePreset?: StudioMiddlewarePresetInfo;
|
|
27
|
+
}): void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Itemised runtime view forwarded to the Studio Agent. Populated from
|
|
31
|
+
* DI metadata at boot — surfaces framework-registered items the agent's
|
|
32
|
+
* static file scanner can't see (e.g. built-in providers, interceptors
|
|
33
|
+
* registered via `@Interceptor()` on framework classes).
|
|
34
|
+
*
|
|
35
|
+
* Mirrors `RuntimeItems` in `@expressots/studio-agent` deliberately so
|
|
36
|
+
* the adapter doesn't need to import from the studio package (which is
|
|
37
|
+
* an optional peer dependency).
|
|
38
|
+
*/
|
|
39
|
+
export interface StudioRuntimeItems {
|
|
40
|
+
providers?: Array<{
|
|
41
|
+
name: string;
|
|
42
|
+
source?: string;
|
|
43
|
+
}>;
|
|
44
|
+
interceptors?: Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
priority?: number;
|
|
47
|
+
source?: string;
|
|
48
|
+
}>;
|
|
49
|
+
middleware?: Array<{
|
|
50
|
+
name: string;
|
|
51
|
+
category: string;
|
|
52
|
+
type: "built-in" | "custom";
|
|
53
|
+
order: number;
|
|
54
|
+
path?: string;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Controller- and route-scoped middleware bindings, harvested from
|
|
58
|
+
* `ControllerMetadata.middleware` Reflect entries after
|
|
59
|
+
* `app.listen()`. Used by the agent to draw scope-aware
|
|
60
|
+
* "middleware → controller / route" edges on the architecture map.
|
|
61
|
+
*
|
|
62
|
+
* Mirrors `MiddlewareBinding` in `@expressots/studio-agent`.
|
|
63
|
+
*/
|
|
64
|
+
middlewareBindings?: Array<{
|
|
65
|
+
middlewareName: string;
|
|
66
|
+
scope: "controller" | "route";
|
|
67
|
+
controllerName: string;
|
|
68
|
+
controllerMethod?: string;
|
|
69
|
+
httpMethod?: string;
|
|
70
|
+
routePath?: string;
|
|
71
|
+
}>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Middleware preset info forwarded to the Studio Agent. Mirrors
|
|
75
|
+
* `MiddlewarePresetInfo` in `@expressots/studio-agent` so the adapter
|
|
76
|
+
* doesn't need to import from the studio package.
|
|
77
|
+
*/
|
|
78
|
+
export interface StudioMiddlewarePresetInfo {
|
|
79
|
+
name: string;
|
|
80
|
+
hasOverrides: boolean;
|
|
81
|
+
parse?: {
|
|
82
|
+
json?: {
|
|
83
|
+
limit?: string;
|
|
84
|
+
};
|
|
85
|
+
urlencoded?: {
|
|
86
|
+
limit?: string;
|
|
87
|
+
extended?: boolean;
|
|
88
|
+
};
|
|
89
|
+
cookies?: boolean;
|
|
90
|
+
};
|
|
91
|
+
security?: {
|
|
92
|
+
tier?: string;
|
|
93
|
+
helmet?: boolean;
|
|
94
|
+
cors?: {
|
|
95
|
+
origin?: boolean | string;
|
|
96
|
+
credentials?: boolean;
|
|
97
|
+
methods?: Array<string>;
|
|
98
|
+
allowedHeaders?: Array<string>;
|
|
99
|
+
};
|
|
100
|
+
rateLimit?: {
|
|
101
|
+
windowMs?: number;
|
|
102
|
+
max?: number;
|
|
103
|
+
} | false;
|
|
104
|
+
};
|
|
105
|
+
compress?: {
|
|
106
|
+
enabled: boolean;
|
|
107
|
+
level?: number;
|
|
108
|
+
};
|
|
109
|
+
logger?: {
|
|
110
|
+
enabled: boolean;
|
|
111
|
+
implementation?: string;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
interface StudioIntegrationConfig {
|
|
115
|
+
enabled?: boolean;
|
|
116
|
+
port?: number;
|
|
117
|
+
dbPath?: string;
|
|
118
|
+
serviceName?: string;
|
|
119
|
+
/** Forwarded to the agent so the Status page can show the app URL. */
|
|
120
|
+
appPort?: number;
|
|
121
|
+
/** Global URL prefix of the host application. */
|
|
122
|
+
globalPrefix?: string;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Initialize the Studio Agent if available
|
|
126
|
+
*/
|
|
127
|
+
export declare function initializeStudio(app: Application, config?: StudioIntegrationConfig, appContainer?: unknown): Promise<boolean>;
|
|
128
|
+
/**
|
|
129
|
+
* Push runtime details to the agent that the host only knows after the
|
|
130
|
+
* HTTP server has started — most importantly the actual listening port
|
|
131
|
+
* and total boot time. No-ops when:
|
|
132
|
+
* - the agent isn't running, or
|
|
133
|
+
* - the installed agent is from an older preview without
|
|
134
|
+
* `updateRuntimeInfo()` (we feature-detect to stay forward-compatible).
|
|
135
|
+
*/
|
|
136
|
+
export declare function reportStudioRuntimeInfo(patch: {
|
|
137
|
+
appPort?: number;
|
|
138
|
+
globalPrefix?: string;
|
|
139
|
+
startupMs?: number;
|
|
140
|
+
interceptorCount?: number;
|
|
141
|
+
providerCount?: number;
|
|
142
|
+
middlewareCount?: number;
|
|
143
|
+
runtimeItems?: StudioRuntimeItems;
|
|
144
|
+
middlewarePreset?: StudioMiddlewarePresetInfo;
|
|
145
|
+
}): void;
|
|
146
|
+
/**
|
|
147
|
+
* Re-trigger the Studio Agent's route discovery. Used by the host
|
|
148
|
+
* after `app.listen()` so that the agent's runtime route scanner sees
|
|
149
|
+
* the fully-populated Express `_router` stack (controllers are bound
|
|
150
|
+
* by `InversifyExpressServer.build()` AFTER `initializeStudio()` runs,
|
|
151
|
+
* so the agent's first scan only catches static-source routes).
|
|
152
|
+
*
|
|
153
|
+
* No-ops when:
|
|
154
|
+
* - Studio isn't enabled, or
|
|
155
|
+
* - the installed agent is too old to expose `scanRoutes()`.
|
|
156
|
+
*/
|
|
157
|
+
export declare function rescanStudioRoutes(): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* Stop the Studio Agent
|
|
160
|
+
*/
|
|
161
|
+
export declare function stopStudio(): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
* Check if Studio is enabled
|
|
164
|
+
*/
|
|
165
|
+
export declare function isStudioEnabled(): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Get the Studio Agent instance
|
|
168
|
+
*/
|
|
169
|
+
export declare function getStudioAgent(): StudioAgentInstance | null;
|
|
170
|
+
export {};
|
package/lib/cjs/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./adapter-express";
|
|
1
|
+
export * from "./adapter-express/index.js";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract class ApplicationBase.
|
|
3
|
+
*
|
|
4
|
+
* ApplicationBase serves as the foundational structure for building
|
|
5
|
+
* server applications. It declares the lifecycle hooks that allow
|
|
6
|
+
* subclasses to configure services, handle post-server initialization,
|
|
7
|
+
* and perform cleanup when the server is shutting down. Extending
|
|
8
|
+
* classes are required to provide implementations for these methods
|
|
9
|
+
* to define specific behaviors for their particular use cases.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* class Application extends ApplicationBase {
|
|
13
|
+
* protected configureServices() { //... }
|
|
14
|
+
* protected postServerInitialization() { //... }
|
|
15
|
+
* protected serverShutdown(signal) {
|
|
16
|
+
* console.log(`Shutting down due to ${signal}`);
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* @export
|
|
21
|
+
* @abstract
|
|
22
|
+
*/
|
|
23
|
+
export class ApplicationBase {
|
|
24
|
+
}
|