@stacksjs/bun-router 0.0.14 → 0.0.15
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/README.md +261 -584
- package/bin/cli.ts +9 -0
- package/dist/auth.d.ts +134 -0
- package/dist/cache/lru-cache.d.ts +139 -0
- package/dist/cache/middleware-memoization.d.ts +151 -0
- package/dist/cache/route-cache-warmer.d.ts +161 -0
- package/dist/cache/sqlite-cache.d.ts +209 -0
- package/dist/cache/streaming-cache.d.ts +132 -0
- package/dist/chunk-j0e7z7hd.js +18053 -0
- package/dist/cli/colors.d.ts +15 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/middleware.d.ts +31 -0
- package/dist/cli/openapi.d.ts +17 -0
- package/dist/cli/router.d.ts +15 -0
- package/dist/cli/routes.d.ts +29 -0
- package/dist/cli/utils.d.ts +74 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +3360 -0
- package/dist/config.d.ts +7 -0
- package/dist/container/container.d.ts +273 -0
- package/dist/container/contextual-binding.d.ts +240 -0
- package/dist/container/decorators.d.ts +141 -0
- package/dist/container/service-provider.d.ts +285 -0
- package/dist/development/hot-reload.d.ts +187 -0
- package/dist/development/index.d.ts +167 -0
- package/dist/development/performance-profiler.d.ts +217 -0
- package/dist/development/route-debugger.d.ts +154 -0
- package/dist/development/route-inspector.d.ts +211 -0
- package/dist/development/typescript-utilities.d.ts +209 -0
- package/dist/docs.d.ts +11 -0
- package/dist/errors/circuit-breaker.d.ts +195 -0
- package/dist/errors/error-handler.d.ts +88 -0
- package/dist/errors/error-reporting.d.ts +144 -0
- package/dist/errors/exceptions.d.ts +184 -0
- package/dist/errors/graceful-degradation.d.ts +154 -0
- package/dist/errors/index.d.ts +9 -0
- package/dist/errors/router-errors.d.ts +110 -0
- package/dist/file-serving/static-files.d.ts +143 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +13968 -0
- package/dist/middleware/auth.d.ts +63 -0
- package/dist/middleware/content_security_policy.d.ts +53 -0
- package/dist/middleware/cors.d.ts +5 -0
- package/dist/middleware/csrf.d.ts +7 -0
- package/dist/middleware/ddos_protection.d.ts +39 -0
- package/dist/middleware/file_security.d.ts +26 -0
- package/dist/middleware/file_upload.d.ts +38 -0
- package/dist/middleware/helmet.d.ts +54 -0
- package/dist/middleware/index.d.ts +44 -0
- package/dist/middleware/input_validation.d.ts +45 -0
- package/dist/middleware/json_body.d.ts +4 -0
- package/dist/middleware/performance_alerting.d.ts +87 -0
- package/dist/middleware/performance_dashboard.d.ts +87 -0
- package/dist/middleware/performance_monitor.d.ts +209 -0
- package/dist/middleware/pipeline.d.ts +131 -0
- package/dist/middleware/rate_limit.d.ts +36 -0
- package/dist/middleware/request_id.d.ts +4 -0
- package/dist/middleware/request_signing.d.ts +153 -0
- package/dist/middleware/request_tracer.d.ts +72 -0
- package/dist/middleware/response_cache.d.ts +97 -0
- package/dist/middleware/security.d.ts +69 -0
- package/dist/middleware/security_suite.d.ts +46 -0
- package/dist/middleware/session.d.ts +23 -0
- package/dist/model-binding/index.d.ts +2 -0
- package/dist/model-binding/model-middleware.d.ts +118 -0
- package/dist/model-binding/model-registry.d.ts +164 -0
- package/dist/model-binding.d.ts +185 -0
- package/dist/model-resolver-factory.d.ts +31 -0
- package/dist/observability/correlation.d.ts +187 -0
- package/dist/observability/health-checks.d.ts +186 -0
- package/dist/observability/index.d.ts +60 -0
- package/dist/observability/integration.d.ts +147 -0
- package/dist/observability/metrics.d.ts +184 -0
- package/dist/observability/tracing.d.ts +187 -0
- package/dist/optimization/bun-utilities.d.ts +224 -0
- package/dist/query-builder-integration.d.ts +36 -0
- package/dist/request/context.d.ts +34 -0
- package/dist/request/enhanced-request.d.ts +213 -0
- package/dist/request/macros.d.ts +300 -0
- package/dist/response/macros.d.ts +256 -0
- package/dist/response/response-factory.d.ts +133 -0
- package/dist/router/api-routes.d.ts +5 -0
- package/dist/router/file-based-routing.d.ts +118 -0
- package/dist/router/file-streaming.d.ts +5 -0
- package/dist/router/fluent-router.d.ts +315 -0
- package/dist/router/fluent-routing.d.ts +271 -0
- package/dist/router/group-organization.d.ts +5 -0
- package/dist/router/handler-resolver.d.ts +24 -0
- package/dist/router/http-methods.d.ts +10 -0
- package/dist/router/index.d.ts +114 -0
- package/dist/router/middleware-groups.d.ts +94 -0
- package/dist/router/middleware-integration.d.ts +112 -0
- package/dist/router/middleware.d.ts +5 -0
- package/dist/router/model-binding.d.ts +5 -0
- package/dist/router/optimized-route-matching.d.ts +6 -0
- package/dist/router/route-building.d.ts +5 -0
- package/dist/router/route-compiler.d.ts +153 -0
- package/dist/router/route-matching.d.ts +5 -0
- package/dist/router/route-trie.d.ts +114 -0
- package/dist/router/router.d.ts +317 -0
- package/dist/router/server.d.ts +5 -0
- package/dist/router/validation-integration.d.ts +170 -0
- package/dist/router/view-rendering.d.ts +5 -0
- package/dist/router/websocket.d.ts +5 -0
- package/dist/routing/route-caching.d.ts +129 -0
- package/dist/routing/route-throttling.d.ts +150 -0
- package/dist/routing/subdomain-routing.d.ts +206 -0
- package/dist/session/database-store.d.ts +51 -0
- package/dist/session/file-store.d.ts +22 -0
- package/dist/session/index.d.ts +106 -0
- package/dist/session/memory-store.d.ts +21 -0
- package/dist/session/redis-store.d.ts +31 -0
- package/dist/streaming/index.d.ts +3 -0
- package/dist/streaming/sse-handler.d.ts +138 -0
- package/dist/streaming/stream-handler.d.ts +114 -0
- package/dist/testing/auth-testing.d.ts +156 -0
- package/dist/testing/file-upload-testing.d.ts +190 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/middleware-testing.d.ts +138 -0
- package/dist/testing/model-binding-testing.d.ts +186 -0
- package/dist/testing/performance-testing.d.ts +235 -0
- package/dist/testing/test-client.d.ts +117 -0
- package/dist/testing/test-request.d.ts +85 -0
- package/dist/testing/test-response.d.ts +90 -0
- package/dist/testing/types.d.ts +207 -0
- package/dist/testing/websocket-testing.d.ts +227 -0
- package/dist/types/controller-types.d.ts +208 -0
- package/dist/types/core.d.ts +543 -0
- package/dist/types/middleware-types.d.ts +227 -0
- package/dist/types/request-response-augmentation.d.ts +261 -0
- package/dist/types/route-inference.d.ts +168 -0
- package/dist/types.d.ts +1794 -0
- package/dist/url.d.ts +56 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/query-preservation.d.ts +48 -0
- package/dist/utils.d.ts +69 -0
- package/dist/validation/validator.d.ts +140 -0
- package/dist/websocket/clustering.d.ts +185 -0
- package/package.json +45 -44
- package/src/auth.ts +469 -0
- package/src/cache/lru-cache.ts +457 -0
- package/src/cache/middleware-memoization.ts +531 -0
- package/src/cache/route-cache-warmer.ts +486 -0
- package/src/cache/sqlite-cache.ts +783 -0
- package/src/cache/streaming-cache.ts +572 -0
- package/src/cli/colors.ts +29 -0
- package/src/cli/index.ts +287 -0
- package/src/cli/middleware.ts +291 -0
- package/src/cli/openapi.ts +407 -0
- package/src/cli/router.ts +188 -0
- package/src/cli/routes.ts +265 -0
- package/src/cli/utils.ts +531 -0
- package/src/cli.ts +5 -0
- package/src/config.ts +322 -0
- package/src/container/container.ts +740 -0
- package/src/container/contextual-binding.ts +603 -0
- package/src/container/decorators.ts +359 -0
- package/src/container/service-provider.ts +596 -0
- package/src/development/hot-reload.ts +673 -0
- package/src/development/index.ts +499 -0
- package/src/development/performance-profiler.ts +717 -0
- package/src/development/route-debugger.ts +527 -0
- package/src/development/route-inspector.ts +749 -0
- package/src/development/typescript-utilities.ts +682 -0
- package/src/docs.ts +397 -0
- package/src/errors/circuit-breaker.ts +732 -0
- package/src/errors/error-handler.ts +569 -0
- package/src/errors/error-reporting.ts +672 -0
- package/src/errors/exceptions.ts +536 -0
- package/src/errors/graceful-degradation.ts +621 -0
- package/src/errors/index.ts +21 -0
- package/src/errors/router-errors.ts +632 -0
- package/src/file-serving/static-files.ts +581 -0
- package/src/index.ts +14 -0
- package/src/middleware/auth.ts +220 -0
- package/src/middleware/content_security_policy.ts +215 -0
- package/src/middleware/cors.ts +74 -0
- package/src/middleware/csrf.ts +108 -0
- package/src/middleware/ddos_protection.ts +255 -0
- package/src/middleware/file_security.ts +191 -0
- package/src/middleware/file_upload.ts +275 -0
- package/src/middleware/helmet.ts +268 -0
- package/src/middleware/index.ts +117 -0
- package/src/middleware/input_validation.ts +449 -0
- package/src/middleware/json_body.ts +37 -0
- package/src/middleware/performance_alerting.ts +538 -0
- package/src/middleware/performance_dashboard.ts +661 -0
- package/src/middleware/performance_monitor.ts +943 -0
- package/src/middleware/pipeline.ts +489 -0
- package/src/middleware/rate_limit.ts +245 -0
- package/src/middleware/request_id.ts +36 -0
- package/src/middleware/request_signing.ts +636 -0
- package/src/middleware/request_tracer.ts +636 -0
- package/src/middleware/response_cache.ts +743 -0
- package/src/middleware/security.ts +482 -0
- package/src/middleware/security_suite.ts +257 -0
- package/src/middleware/session.ts +91 -0
- package/src/model-binding/index.ts +18 -0
- package/src/model-binding/model-middleware.ts +425 -0
- package/src/model-binding/model-registry.ts +550 -0
- package/src/model-binding.ts +370 -0
- package/src/model-resolver-factory.ts +106 -0
- package/src/observability/correlation.ts +691 -0
- package/src/observability/health-checks.ts +729 -0
- package/src/observability/index.ts +184 -0
- package/src/observability/integration.ts +548 -0
- package/src/observability/metrics.ts +753 -0
- package/src/observability/tracing.ts +638 -0
- package/src/optimization/bun-utilities.ts +778 -0
- package/src/query-builder-integration.ts +137 -0
- package/src/request/context.ts +62 -0
- package/src/request/enhanced-request.ts +857 -0
- package/src/request/macros.ts +688 -0
- package/src/response/macros.ts +665 -0
- package/src/response/response-factory.ts +596 -0
- package/src/router/api-routes.ts +243 -0
- package/src/router/file-based-routing.ts +690 -0
- package/src/router/file-streaming.ts +383 -0
- package/src/router/fluent-router.ts +927 -0
- package/src/router/fluent-routing.ts +797 -0
- package/src/router/group-organization.ts +213 -0
- package/src/router/handler-resolver.ts +291 -0
- package/src/router/http-methods.ts +377 -0
- package/src/router/index.ts +187 -0
- package/src/router/middleware-groups.ts +222 -0
- package/src/router/middleware-integration.ts +399 -0
- package/src/router/middleware.ts +231 -0
- package/src/router/model-binding.ts +215 -0
- package/src/router/optimized-route-matching.ts +253 -0
- package/src/router/route-building.ts +221 -0
- package/src/router/route-compiler.ts +702 -0
- package/src/router/route-matching.ts +349 -0
- package/src/router/route-trie.ts +464 -0
- package/src/router/router.ts +1604 -0
- package/src/router/server.ts +462 -0
- package/src/router/validation-integration.ts +443 -0
- package/src/router/view-rendering.ts +233 -0
- package/src/router/websocket.ts +100 -0
- package/src/routing/route-caching.ts +402 -0
- package/src/routing/route-throttling.ts +469 -0
- package/src/routing/subdomain-routing.ts +492 -0
- package/src/session/database-store.ts +109 -0
- package/src/session/file-store.ts +148 -0
- package/src/session/index.ts +244 -0
- package/src/session/memory-store.ts +88 -0
- package/src/session/redis-store.ts +93 -0
- package/src/streaming/index.ts +17 -0
- package/src/streaming/sse-handler.ts +482 -0
- package/src/streaming/stream-handler.ts +552 -0
- package/src/testing/auth-testing.ts +446 -0
- package/src/testing/file-upload-testing.ts +543 -0
- package/src/testing/index.ts +10 -0
- package/src/testing/middleware-testing.ts +322 -0
- package/src/testing/model-binding-testing.ts +645 -0
- package/src/testing/performance-testing.ts +738 -0
- package/src/testing/test-client.ts +310 -0
- package/src/testing/test-request.ts +315 -0
- package/src/testing/test-response.ts +332 -0
- package/src/testing/types.ts +224 -0
- package/src/testing/websocket-testing.ts +590 -0
- package/src/types/controller-types.ts +385 -0
- package/src/types/core.ts +683 -0
- package/src/types/middleware-types.ts +419 -0
- package/src/types/request-response-augmentation.ts +489 -0
- package/src/types/route-inference.ts +357 -0
- package/src/types.ts +2067 -0
- package/src/url.ts +126 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/query-preservation.ts +201 -0
- package/src/utils.ts +327 -0
- package/src/validation/validator.ts +685 -0
- package/src/websocket/clustering.ts +762 -0
- package/CHANGELOG.md +0 -770
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability & Monitoring - Request Correlation IDs across Services
|
|
3
|
+
*
|
|
4
|
+
* Enterprise-grade request correlation for distributed systems tracing
|
|
5
|
+
*/
|
|
6
|
+
import type { EnhancedRequest } from '../types';
|
|
7
|
+
export interface CorrelationConfig {
|
|
8
|
+
headerName?: string;
|
|
9
|
+
generateId?: () => string;
|
|
10
|
+
propagateHeaders?: string[];
|
|
11
|
+
enableLogging?: boolean;
|
|
12
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
13
|
+
maxIdLength?: number;
|
|
14
|
+
validateId?: (id: string) => boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface CorrelationContext {
|
|
17
|
+
correlationId: string;
|
|
18
|
+
parentId?: string;
|
|
19
|
+
spanId?: string;
|
|
20
|
+
traceId?: string;
|
|
21
|
+
userId?: string;
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
requestId?: string;
|
|
24
|
+
metadata: Record<string, any>;
|
|
25
|
+
startTime: number;
|
|
26
|
+
headers: Record<string, string>;
|
|
27
|
+
}
|
|
28
|
+
export interface ServiceCall {
|
|
29
|
+
serviceName: string;
|
|
30
|
+
method: string;
|
|
31
|
+
url: string;
|
|
32
|
+
correlationId: string;
|
|
33
|
+
parentId?: string;
|
|
34
|
+
startTime: number;
|
|
35
|
+
endTime?: number;
|
|
36
|
+
duration?: number;
|
|
37
|
+
status?: number;
|
|
38
|
+
error?: string;
|
|
39
|
+
metadata?: Record<string, any>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Correlation ID manager
|
|
43
|
+
*/
|
|
44
|
+
export declare class CorrelationManager {
|
|
45
|
+
private config;
|
|
46
|
+
private contexts;
|
|
47
|
+
private serviceCalls;
|
|
48
|
+
private activeRequests;
|
|
49
|
+
constructor(config?: CorrelationConfig);
|
|
50
|
+
/**
|
|
51
|
+
* Generate UUID v4
|
|
52
|
+
*/
|
|
53
|
+
private generateUUID;
|
|
54
|
+
/**
|
|
55
|
+
* Validate correlation ID format
|
|
56
|
+
*/
|
|
57
|
+
private isValidId;
|
|
58
|
+
/**
|
|
59
|
+
* Extract correlation context from request
|
|
60
|
+
*/
|
|
61
|
+
extractContext(req: EnhancedRequest): CorrelationContext;
|
|
62
|
+
/**
|
|
63
|
+
* Get correlation context by ID
|
|
64
|
+
*/
|
|
65
|
+
getContext(correlationId: string): CorrelationContext | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Update correlation context
|
|
68
|
+
*/
|
|
69
|
+
updateContext(correlationId: string, updates: Partial<CorrelationContext>): void;
|
|
70
|
+
/**
|
|
71
|
+
* Add metadata to correlation context
|
|
72
|
+
*/
|
|
73
|
+
addMetadata(correlationId: string, metadata: Record<string, any>): void;
|
|
74
|
+
/**
|
|
75
|
+
* Create child correlation context
|
|
76
|
+
*/
|
|
77
|
+
createChildContext(parentId: string, serviceName: string): CorrelationContext;
|
|
78
|
+
/**
|
|
79
|
+
* Record service call
|
|
80
|
+
*/
|
|
81
|
+
recordServiceCall(call: Omit<ServiceCall, 'startTime'>): void;
|
|
82
|
+
/**
|
|
83
|
+
* Complete service call
|
|
84
|
+
*/
|
|
85
|
+
completeServiceCall(correlationId: string, serviceName: string, status: number, error?: string, metadata?: Record<string, any>): void;
|
|
86
|
+
/**
|
|
87
|
+
* Get service calls for correlation ID
|
|
88
|
+
*/
|
|
89
|
+
getServiceCalls(correlationId: string): ServiceCall[];
|
|
90
|
+
/**
|
|
91
|
+
* Finish correlation context
|
|
92
|
+
*/
|
|
93
|
+
finishContext(correlationId: string, status?: number, error?: string): void;
|
|
94
|
+
/**
|
|
95
|
+
* Create HTTP client with correlation propagation
|
|
96
|
+
*/
|
|
97
|
+
createHttpClient(correlationId: string): {
|
|
98
|
+
fetch: (url: string, options?: RequestInit) => Promise<Response>;
|
|
99
|
+
get: (url: string, options?: RequestInit) => Promise<Response>;
|
|
100
|
+
post: (url: string, options?: RequestInit) => Promise<Response>;
|
|
101
|
+
put: (url: string, options?: RequestInit) => Promise<Response>;
|
|
102
|
+
delete: (url: string, options?: RequestInit) => Promise<Response>;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Get correlation trace
|
|
106
|
+
*/
|
|
107
|
+
getTrace(correlationId: string): {
|
|
108
|
+
context: CorrelationContext;
|
|
109
|
+
serviceCalls: ServiceCall[];
|
|
110
|
+
children: string[];
|
|
111
|
+
} | null;
|
|
112
|
+
/**
|
|
113
|
+
* Get full trace tree
|
|
114
|
+
*/
|
|
115
|
+
getFullTrace(rootCorrelationId: string): any;
|
|
116
|
+
/**
|
|
117
|
+
* Cleanup old contexts
|
|
118
|
+
*/
|
|
119
|
+
cleanup(maxAge?: number): void;
|
|
120
|
+
/**
|
|
121
|
+
* Get statistics
|
|
122
|
+
*/
|
|
123
|
+
getStats(): {
|
|
124
|
+
activeContexts: number;
|
|
125
|
+
totalContexts: number;
|
|
126
|
+
totalServiceCalls: number;
|
|
127
|
+
averageCallsPerContext: number;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Log with correlation context
|
|
131
|
+
*/
|
|
132
|
+
private log;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Initialize global correlation manager
|
|
136
|
+
*/
|
|
137
|
+
export declare function initializeCorrelation(config?: CorrelationConfig): CorrelationManager;
|
|
138
|
+
/**
|
|
139
|
+
* Get global correlation manager
|
|
140
|
+
*/
|
|
141
|
+
export declare function getCorrelationManager(): CorrelationManager | null;
|
|
142
|
+
/**
|
|
143
|
+
* Correlation middleware factory
|
|
144
|
+
*/
|
|
145
|
+
export declare function createCorrelationMiddleware(config?: Partial<CorrelationConfig>): (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
|
|
146
|
+
/**
|
|
147
|
+
* Correlation helper functions
|
|
148
|
+
*/
|
|
149
|
+
export declare const CorrelationHelpers: {
|
|
150
|
+
/**
|
|
151
|
+
* Get correlation ID from request
|
|
152
|
+
*/
|
|
153
|
+
getId: (req: EnhancedRequest) => string | null;
|
|
154
|
+
/**
|
|
155
|
+
* Get correlation context from request
|
|
156
|
+
*/
|
|
157
|
+
getContext: (req: EnhancedRequest) => CorrelationContext | null;
|
|
158
|
+
/**
|
|
159
|
+
* Get HTTP client from request
|
|
160
|
+
*/
|
|
161
|
+
getHttpClient: (req: EnhancedRequest) => any;
|
|
162
|
+
/**
|
|
163
|
+
* Add metadata to current correlation
|
|
164
|
+
*/
|
|
165
|
+
addMetadata: (req: EnhancedRequest, metadata: Record<string, any>) => void;
|
|
166
|
+
/**
|
|
167
|
+
* Create child context for service call
|
|
168
|
+
*/
|
|
169
|
+
createChild: (req: EnhancedRequest, serviceName: string) => CorrelationContext | null;
|
|
170
|
+
/**
|
|
171
|
+
* Get trace for current request
|
|
172
|
+
*/
|
|
173
|
+
getTrace: (req: EnhancedRequest) => any;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Correlation endpoint handlers
|
|
177
|
+
*/
|
|
178
|
+
export declare const CorrelationEndpoints: {
|
|
179
|
+
/**
|
|
180
|
+
* Get correlation trace endpoint
|
|
181
|
+
*/
|
|
182
|
+
trace: (req: EnhancedRequest) => Promise<Response>;
|
|
183
|
+
/**
|
|
184
|
+
* Get correlation statistics endpoint
|
|
185
|
+
*/
|
|
186
|
+
stats: (_req: EnhancedRequest) => Promise<Response>;
|
|
187
|
+
};
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability & Monitoring - Health Check Endpoints with Dependency Checks
|
|
3
|
+
*
|
|
4
|
+
* Enterprise-grade health monitoring with dependency validation and detailed reporting
|
|
5
|
+
*/
|
|
6
|
+
import type { EnhancedRequest } from '../types';
|
|
7
|
+
export interface HealthCheckConfig {
|
|
8
|
+
timeout?: number;
|
|
9
|
+
retries?: number;
|
|
10
|
+
interval?: number;
|
|
11
|
+
gracePeriod?: number;
|
|
12
|
+
dependencies?: DependencyConfig[];
|
|
13
|
+
customChecks?: CustomHealthCheck[];
|
|
14
|
+
}
|
|
15
|
+
export interface DependencyConfig {
|
|
16
|
+
name: string;
|
|
17
|
+
type: 'http' | 'database' | 'redis' | 'queue' | 'file' | 'custom';
|
|
18
|
+
url?: string;
|
|
19
|
+
timeout?: number;
|
|
20
|
+
retries?: number;
|
|
21
|
+
critical?: boolean;
|
|
22
|
+
metadata?: Record<string, any>;
|
|
23
|
+
check?: () => Promise<HealthCheckResult>;
|
|
24
|
+
}
|
|
25
|
+
export interface CustomHealthCheck {
|
|
26
|
+
name: string;
|
|
27
|
+
check: () => Promise<HealthCheckResult>;
|
|
28
|
+
critical?: boolean;
|
|
29
|
+
timeout?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface HealthCheckResult {
|
|
32
|
+
status: 'healthy' | 'unhealthy' | 'degraded';
|
|
33
|
+
message?: string;
|
|
34
|
+
duration?: number;
|
|
35
|
+
metadata?: Record<string, any>;
|
|
36
|
+
error?: string;
|
|
37
|
+
timestamp: number;
|
|
38
|
+
}
|
|
39
|
+
export interface HealthStatus {
|
|
40
|
+
status: 'healthy' | 'unhealthy' | 'degraded';
|
|
41
|
+
timestamp: number;
|
|
42
|
+
uptime: number;
|
|
43
|
+
version?: string;
|
|
44
|
+
environment?: string;
|
|
45
|
+
checks: Record<string, HealthCheckResult>;
|
|
46
|
+
dependencies: Record<string, HealthCheckResult>;
|
|
47
|
+
summary: {
|
|
48
|
+
total: number;
|
|
49
|
+
healthy: number;
|
|
50
|
+
unhealthy: number;
|
|
51
|
+
degraded: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Health check manager
|
|
56
|
+
*/
|
|
57
|
+
export declare class HealthCheckManager {
|
|
58
|
+
private config;
|
|
59
|
+
private dependencies;
|
|
60
|
+
private customChecks;
|
|
61
|
+
private lastResults;
|
|
62
|
+
private startTime;
|
|
63
|
+
constructor(config?: HealthCheckConfig);
|
|
64
|
+
/**
|
|
65
|
+
* Add a dependency check
|
|
66
|
+
*/
|
|
67
|
+
addDependency(config: DependencyConfig): void;
|
|
68
|
+
/**
|
|
69
|
+
* Add a custom health check
|
|
70
|
+
*/
|
|
71
|
+
addCustomCheck(check: CustomHealthCheck): void;
|
|
72
|
+
/**
|
|
73
|
+
* Remove a dependency check
|
|
74
|
+
*/
|
|
75
|
+
removeDependency(name: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Remove a custom check
|
|
78
|
+
*/
|
|
79
|
+
removeCustomCheck(name: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Perform all health checks
|
|
82
|
+
*/
|
|
83
|
+
checkHealth(): Promise<HealthStatus>;
|
|
84
|
+
/**
|
|
85
|
+
* Check a specific dependency
|
|
86
|
+
*/
|
|
87
|
+
private checkDependency;
|
|
88
|
+
/**
|
|
89
|
+
* Check HTTP dependency
|
|
90
|
+
*/
|
|
91
|
+
private checkHttpDependency;
|
|
92
|
+
/**
|
|
93
|
+
* Check database dependency
|
|
94
|
+
*/
|
|
95
|
+
private checkDatabaseDependency;
|
|
96
|
+
/**
|
|
97
|
+
* Check Redis dependency
|
|
98
|
+
*/
|
|
99
|
+
private checkRedisDependency;
|
|
100
|
+
/**
|
|
101
|
+
* Check queue dependency
|
|
102
|
+
*/
|
|
103
|
+
private checkQueueDependency;
|
|
104
|
+
/**
|
|
105
|
+
* Check file system dependency
|
|
106
|
+
*/
|
|
107
|
+
private checkFileDependency;
|
|
108
|
+
/**
|
|
109
|
+
* Run custom health check
|
|
110
|
+
*/
|
|
111
|
+
private runCustomCheck;
|
|
112
|
+
/**
|
|
113
|
+
* Execute a promise with timeout
|
|
114
|
+
*/
|
|
115
|
+
private executeWithTimeout;
|
|
116
|
+
/**
|
|
117
|
+
* Check if a result is from a critical check
|
|
118
|
+
*/
|
|
119
|
+
private isCriticalCheck;
|
|
120
|
+
/**
|
|
121
|
+
* Get the last health check results
|
|
122
|
+
*/
|
|
123
|
+
getLastResults(): Map<string, HealthCheckResult>;
|
|
124
|
+
/**
|
|
125
|
+
* Get uptime in seconds
|
|
126
|
+
*/
|
|
127
|
+
getUptime(): number;
|
|
128
|
+
/**
|
|
129
|
+
* Reset start time (for testing)
|
|
130
|
+
*/
|
|
131
|
+
resetStartTime(): void;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Initialize global health check manager
|
|
135
|
+
*/
|
|
136
|
+
export declare function initializeHealthChecks(config?: HealthCheckConfig): HealthCheckManager;
|
|
137
|
+
/**
|
|
138
|
+
* Get global health check manager
|
|
139
|
+
*/
|
|
140
|
+
export declare function getHealthManager(): HealthCheckManager | null;
|
|
141
|
+
/**
|
|
142
|
+
* Health check endpoint handlers
|
|
143
|
+
*/
|
|
144
|
+
export declare const HealthEndpoints: {
|
|
145
|
+
/**
|
|
146
|
+
* Basic health check endpoint
|
|
147
|
+
*/
|
|
148
|
+
health: (_req: EnhancedRequest) => Promise<Response>;
|
|
149
|
+
/**
|
|
150
|
+
* Readiness probe endpoint
|
|
151
|
+
*/
|
|
152
|
+
ready: (_req: EnhancedRequest) => Promise<Response>;
|
|
153
|
+
/**
|
|
154
|
+
* Liveness probe endpoint
|
|
155
|
+
*/
|
|
156
|
+
live: (_req: EnhancedRequest) => Promise<Response>;
|
|
157
|
+
/**
|
|
158
|
+
* Startup probe endpoint
|
|
159
|
+
*/
|
|
160
|
+
startup: (_req: EnhancedRequest) => Promise<Response>;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Built-in dependency check factories
|
|
164
|
+
*/
|
|
165
|
+
export declare const DependencyChecks: {
|
|
166
|
+
/**
|
|
167
|
+
* HTTP service dependency
|
|
168
|
+
*/
|
|
169
|
+
httpService: (name: string, url: string, options?: Partial<DependencyConfig>) => DependencyConfig;
|
|
170
|
+
/**
|
|
171
|
+
* Database dependency
|
|
172
|
+
*/
|
|
173
|
+
database: (name: string, options?: Partial<DependencyConfig>) => DependencyConfig;
|
|
174
|
+
/**
|
|
175
|
+
* Redis dependency
|
|
176
|
+
*/
|
|
177
|
+
redis: (name: string, options?: Partial<DependencyConfig>) => DependencyConfig;
|
|
178
|
+
/**
|
|
179
|
+
* File system dependency
|
|
180
|
+
*/
|
|
181
|
+
fileSystem: (name: string, path: string, options?: Partial<DependencyConfig>) => DependencyConfig;
|
|
182
|
+
/**
|
|
183
|
+
* Custom dependency with function
|
|
184
|
+
*/
|
|
185
|
+
custom: (name: string, checkFn: () => Promise<HealthCheckResult>, options?: Partial<DependencyConfig>) => DependencyConfig;
|
|
186
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability & Monitoring - Main Exports
|
|
3
|
+
*
|
|
4
|
+
* Enterprise-grade observability features for distributed systems
|
|
5
|
+
*/
|
|
6
|
+
import type { EnhancedRequest } from '../types';
|
|
7
|
+
import type { ObservabilityConfig, ObservabilityManager } from './integration';
|
|
8
|
+
export { type CorrelationConfig, type CorrelationContext, CorrelationEndpoints, CorrelationHelpers, CorrelationManager, createCorrelationMiddleware, getCorrelationManager, initializeCorrelation, type ServiceCall, } from './correlation';
|
|
9
|
+
export { type CustomHealthCheck, DependencyChecks, type DependencyConfig, getHealthManager, type HealthCheckConfig, HealthCheckManager, type HealthCheckResult, HealthEndpoints, type HealthStatus, initializeHealthChecks, } from './health-checks';
|
|
10
|
+
export { getObservabilityManager, initializeObservability, type ObservabilityConfig, ObservabilityIntegration, ObservabilityManager, ObservabilityPresets, ObservabilityUtils, } from './integration';
|
|
11
|
+
export { Counter, createMetricsHandler, createMetricsMiddleware, Gauge, getMetricsRegistry, Histogram, type HistogramBucket, initializeMetrics, type MetricConfig, type MetricLabels, MetricsRegistry, Summary, type SummaryQuantile, } from './metrics';
|
|
12
|
+
export { createTracingMiddleware, DistributedTracer, getTracer, initializeTracer, type Span, type SpanContext, type TraceConfig, type TraceData, TraceHelpers, } from './tracing';
|
|
13
|
+
/**
|
|
14
|
+
* Quick setup functions for common use cases
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Initialize observability with development preset
|
|
18
|
+
*/
|
|
19
|
+
export declare function setupDevelopmentObservability(): Promise<ObservabilityManager>;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize observability with production preset
|
|
22
|
+
*/
|
|
23
|
+
export declare function setupProductionObservability(): Promise<ObservabilityManager>;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize observability with Kubernetes preset
|
|
26
|
+
*/
|
|
27
|
+
export declare function setupKubernetesObservability(): Promise<ObservabilityManager>;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize observability with microservices preset
|
|
30
|
+
*/
|
|
31
|
+
export declare function setupMicroservicesObservability(): Promise<ObservabilityManager>;
|
|
32
|
+
/**
|
|
33
|
+
* Initialize observability from environment variables
|
|
34
|
+
*/
|
|
35
|
+
export declare function setupObservabilityFromEnv(): Promise<ObservabilityManager>;
|
|
36
|
+
/**
|
|
37
|
+
* Create a complete observability middleware stack
|
|
38
|
+
*/
|
|
39
|
+
export declare function createObservabilityStack(config?: ObservabilityConfig): Promise<{
|
|
40
|
+
middleware: (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
|
|
41
|
+
endpoints: Record<string, (req: EnhancedRequest) => Promise<Response>>;
|
|
42
|
+
manager: ObservabilityManager;
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Default export for convenience
|
|
46
|
+
*/
|
|
47
|
+
declare const observabilityDefault: {
|
|
48
|
+
setupDevelopmentObservability: typeof setupDevelopmentObservability;
|
|
49
|
+
setupProductionObservability: typeof setupProductionObservability;
|
|
50
|
+
setupKubernetesObservability: typeof setupKubernetesObservability;
|
|
51
|
+
setupMicroservicesObservability: typeof setupMicroservicesObservability;
|
|
52
|
+
setupObservabilityFromEnv: typeof setupObservabilityFromEnv;
|
|
53
|
+
createObservabilityStack: typeof createObservabilityStack;
|
|
54
|
+
initializeObservability: Promise<any>;
|
|
55
|
+
getObservabilityManager: Promise<any>;
|
|
56
|
+
ObservabilityPresets: Promise<any>;
|
|
57
|
+
ObservabilityIntegration: Promise<any>;
|
|
58
|
+
ObservabilityUtils: Promise<any>;
|
|
59
|
+
};
|
|
60
|
+
export default observabilityDefault;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability & Monitoring - Integration Layer
|
|
3
|
+
*
|
|
4
|
+
* Unified integration for tracing, metrics, health checks, and correlation
|
|
5
|
+
*/
|
|
6
|
+
import type { EnhancedRequest } from '../types';
|
|
7
|
+
import type { CorrelationConfig } from './correlation';
|
|
8
|
+
import type { HealthCheckConfig } from './health-checks';
|
|
9
|
+
import type { MetricConfig } from './metrics';
|
|
10
|
+
import type { TraceConfig } from './tracing';
|
|
11
|
+
export interface ObservabilityConfig {
|
|
12
|
+
tracing?: TraceConfig;
|
|
13
|
+
metrics?: MetricConfig;
|
|
14
|
+
healthChecks?: HealthCheckConfig;
|
|
15
|
+
correlation?: CorrelationConfig;
|
|
16
|
+
enableTracing?: boolean;
|
|
17
|
+
enableMetrics?: boolean;
|
|
18
|
+
enableHealthChecks?: boolean;
|
|
19
|
+
enableCorrelation?: boolean;
|
|
20
|
+
endpoints?: {
|
|
21
|
+
metrics?: string;
|
|
22
|
+
health?: string;
|
|
23
|
+
ready?: string;
|
|
24
|
+
live?: string;
|
|
25
|
+
startup?: string;
|
|
26
|
+
trace?: string;
|
|
27
|
+
correlationStats?: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Observability manager - coordinates all observability features
|
|
32
|
+
*/
|
|
33
|
+
export declare class ObservabilityManager {
|
|
34
|
+
private config;
|
|
35
|
+
private initialized;
|
|
36
|
+
constructor(config?: ObservabilityConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Initialize all observability components
|
|
39
|
+
*/
|
|
40
|
+
initialize(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Create observability middleware stack
|
|
43
|
+
*/
|
|
44
|
+
createMiddleware(): (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
|
|
45
|
+
/**
|
|
46
|
+
* Create observability route handlers
|
|
47
|
+
*/
|
|
48
|
+
createRouteHandlers(): Record<string, (req: EnhancedRequest) => Promise<Response>>;
|
|
49
|
+
/**
|
|
50
|
+
* Get observability status
|
|
51
|
+
*/
|
|
52
|
+
getStatus(): {
|
|
53
|
+
initialized: boolean;
|
|
54
|
+
components: {
|
|
55
|
+
tracing: boolean;
|
|
56
|
+
metrics: boolean;
|
|
57
|
+
healthChecks: boolean;
|
|
58
|
+
correlation: boolean;
|
|
59
|
+
};
|
|
60
|
+
endpoints: string[];
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Initialize global observability
|
|
65
|
+
*/
|
|
66
|
+
export declare function initializeObservability(config?: ObservabilityConfig): ObservabilityManager;
|
|
67
|
+
/**
|
|
68
|
+
* Get global observability manager
|
|
69
|
+
*/
|
|
70
|
+
export declare function getObservabilityManager(): ObservabilityManager | null;
|
|
71
|
+
/**
|
|
72
|
+
* Observability presets for common configurations
|
|
73
|
+
*/
|
|
74
|
+
export declare const ObservabilityPresets: {
|
|
75
|
+
/**
|
|
76
|
+
* Development preset - console logging, basic metrics
|
|
77
|
+
*/
|
|
78
|
+
development: () => ObservabilityConfig;
|
|
79
|
+
/**
|
|
80
|
+
* Production preset - optimized for performance
|
|
81
|
+
*/
|
|
82
|
+
production: () => ObservabilityConfig;
|
|
83
|
+
/**
|
|
84
|
+
* Kubernetes preset - optimized for k8s deployment
|
|
85
|
+
*/
|
|
86
|
+
kubernetes: () => ObservabilityConfig;
|
|
87
|
+
/**
|
|
88
|
+
* Microservices preset - enhanced correlation and tracing
|
|
89
|
+
*/
|
|
90
|
+
microservices: () => ObservabilityConfig;
|
|
91
|
+
/**
|
|
92
|
+
* Minimal preset - basic observability
|
|
93
|
+
*/
|
|
94
|
+
minimal: () => ObservabilityConfig;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Router integration helpers
|
|
98
|
+
*/
|
|
99
|
+
export declare const ObservabilityIntegration: {
|
|
100
|
+
/**
|
|
101
|
+
* Add observability to router
|
|
102
|
+
*/
|
|
103
|
+
enhance: (router: any, config?: ObservabilityConfig) => {
|
|
104
|
+
manager: ObservabilityManager;
|
|
105
|
+
middleware: (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
|
|
106
|
+
handlers: Record<string, (req: EnhancedRequest) => Promise<Response>>;
|
|
107
|
+
status: ReturnType<ObservabilityManager["getStatus"]>;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Create observability-enabled route builder
|
|
111
|
+
*/
|
|
112
|
+
createRouteBuilder: (config?: ObservabilityConfig) => {
|
|
113
|
+
/**
|
|
114
|
+
* Create route with observability
|
|
115
|
+
*/
|
|
116
|
+
route: (method: string, path: string, handler: (req: EnhancedRequest) => Promise<Response>) => {
|
|
117
|
+
method: string;
|
|
118
|
+
path: string;
|
|
119
|
+
handler: (req: EnhancedRequest) => Promise<Response>;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Get observability endpoints
|
|
123
|
+
*/
|
|
124
|
+
getEndpoints: () => Record<string, (req: EnhancedRequest) => Promise<Response>>;
|
|
125
|
+
/**
|
|
126
|
+
* Get manager instance
|
|
127
|
+
*/
|
|
128
|
+
getManager: () => ObservabilityManager;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Utility functions for observability
|
|
133
|
+
*/
|
|
134
|
+
export declare const ObservabilityUtils: {
|
|
135
|
+
/**
|
|
136
|
+
* Create observability configuration from environment
|
|
137
|
+
*/
|
|
138
|
+
fromEnvironment: () => ObservabilityConfig;
|
|
139
|
+
/**
|
|
140
|
+
* Validate observability configuration
|
|
141
|
+
*/
|
|
142
|
+
validateConfig: (config: ObservabilityConfig) => string[];
|
|
143
|
+
/**
|
|
144
|
+
* Get observability summary
|
|
145
|
+
*/
|
|
146
|
+
getSummary: () => any;
|
|
147
|
+
};
|