@stacksjs/bun-router 0.0.4 → 0.0.6
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 +2 -2
- 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-jhsk5c5b.js +15758 -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 -1
- package/dist/cli.js +2 -2
- 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 +2 -0
- package/dist/index.js +320 -206
- 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 +245 -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 +113 -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 +276 -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 +1776 -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 +18 -4
- 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 +678 -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 +219 -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 +264 -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 +612 -0
- package/src/response/response-factory.ts +588 -0
- package/src/router/api-routes.ts +243 -0
- package/src/router/file-based-routing.ts +670 -0
- package/src/router/file-streaming.ts +372 -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 +185 -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 +212 -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 +1508 -0
- package/src/router/server.ts +406 -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 +2049 -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/dist/chunk-cjdekj87.js +0 -25886
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hot Reload Development
|
|
3
|
+
*
|
|
4
|
+
* Hot reload for development using Bun's --hot mode with state preservation
|
|
5
|
+
*/
|
|
6
|
+
export interface HotReloadConfig {
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
watchPaths?: string[];
|
|
9
|
+
ignorePaths?: string[];
|
|
10
|
+
extensions?: string[];
|
|
11
|
+
debounceMs?: number;
|
|
12
|
+
preserveState?: boolean;
|
|
13
|
+
onReload?: (changedFiles: string[]) => void;
|
|
14
|
+
onError?: (error: Error) => void;
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface HotReloadState {
|
|
18
|
+
reloadCount: number;
|
|
19
|
+
lastReload: number;
|
|
20
|
+
changedFiles: string[];
|
|
21
|
+
preservedState: Record<string, any>;
|
|
22
|
+
watchers: Map<string, any>;
|
|
23
|
+
}
|
|
24
|
+
declare global {
|
|
25
|
+
var __HOT_RELOAD_STATE__: HotReloadState | undefined;
|
|
26
|
+
var __HOT_RELOAD_PRESERVE__: Record<string, any>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Hot reload manager for development
|
|
30
|
+
*/
|
|
31
|
+
export declare class HotReloadManager {
|
|
32
|
+
private config;
|
|
33
|
+
private state;
|
|
34
|
+
private debounceTimer?;
|
|
35
|
+
private isReloading;
|
|
36
|
+
constructor(config?: HotReloadConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Initialize or restore hot reload state
|
|
39
|
+
*/
|
|
40
|
+
private initializeState;
|
|
41
|
+
/**
|
|
42
|
+
* Setup file watchers
|
|
43
|
+
*/
|
|
44
|
+
private setupWatchers;
|
|
45
|
+
/**
|
|
46
|
+
* Handle file change event
|
|
47
|
+
*/
|
|
48
|
+
private handleFileChange;
|
|
49
|
+
/**
|
|
50
|
+
* Check if file should be ignored
|
|
51
|
+
*/
|
|
52
|
+
private shouldIgnoreFile;
|
|
53
|
+
/**
|
|
54
|
+
* Check if file should be watched
|
|
55
|
+
*/
|
|
56
|
+
private shouldWatchFile;
|
|
57
|
+
/**
|
|
58
|
+
* Trigger hot reload
|
|
59
|
+
*/
|
|
60
|
+
private triggerReload;
|
|
61
|
+
/**
|
|
62
|
+
* Preserve state across reloads
|
|
63
|
+
*/
|
|
64
|
+
preserveState<T>(key: string, value: T): void;
|
|
65
|
+
/**
|
|
66
|
+
* Restore preserved state
|
|
67
|
+
*/
|
|
68
|
+
restoreState<T>(key: string, defaultValue?: T): T | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Clear preserved state
|
|
71
|
+
*/
|
|
72
|
+
clearState(key?: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Get hot reload statistics
|
|
75
|
+
*/
|
|
76
|
+
getStats(): {
|
|
77
|
+
reloadCount: number;
|
|
78
|
+
lastReload: number;
|
|
79
|
+
uptime: number;
|
|
80
|
+
watchedPaths: string[];
|
|
81
|
+
preservedKeys: string[];
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Stop hot reload
|
|
85
|
+
*/
|
|
86
|
+
stop(): void;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Hot reload middleware for preserving server state
|
|
90
|
+
*/
|
|
91
|
+
export declare function createHotReloadMiddleware(hotReload: HotReloadManager): (request: Request, next: () => Promise<Response>) => Promise<Response>;
|
|
92
|
+
/**
|
|
93
|
+
* Hot reload utilities
|
|
94
|
+
*/
|
|
95
|
+
export declare const HotReloadUtils: {
|
|
96
|
+
/**
|
|
97
|
+
* Check if running in hot reload mode
|
|
98
|
+
*/
|
|
99
|
+
isHotReloadEnabled: () => boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Get current reload count
|
|
102
|
+
*/
|
|
103
|
+
getReloadCount: () => number;
|
|
104
|
+
/**
|
|
105
|
+
* Create hot-reloadable module cache
|
|
106
|
+
*/
|
|
107
|
+
createModuleCache: <T>() => {
|
|
108
|
+
get: (key: string) => T | undefined;
|
|
109
|
+
set: (key: string, value: T) => void;
|
|
110
|
+
clear: () => void;
|
|
111
|
+
delete: (key: string) => boolean;
|
|
112
|
+
has: (key: string) => boolean;
|
|
113
|
+
size: () => number;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Create hot-reloadable configuration
|
|
117
|
+
*/
|
|
118
|
+
createHotConfig: <T>(initialConfig: T, configPath?: string) => {
|
|
119
|
+
get: () => T;
|
|
120
|
+
reload: () => Promise<T>;
|
|
121
|
+
onChange: (callback: (config: T) => void) => void;
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Hot reload helpers for common patterns
|
|
126
|
+
*/
|
|
127
|
+
export declare const HotReloadHelpers: {
|
|
128
|
+
/**
|
|
129
|
+
* Create hot-reloadable route handlers
|
|
130
|
+
*/
|
|
131
|
+
createHotHandler: (handlerPath: string) => (request: Request) => Promise<Response>;
|
|
132
|
+
/**
|
|
133
|
+
* Create hot-reloadable middleware
|
|
134
|
+
*/
|
|
135
|
+
createHotMiddleware: (middlewarePath: string) => (request: Request, next: () => Promise<Response>) => Promise<Response>;
|
|
136
|
+
/**
|
|
137
|
+
* Create development server with hot reload
|
|
138
|
+
*/
|
|
139
|
+
createDevelopmentServer: (config?: {
|
|
140
|
+
port?: number;
|
|
141
|
+
hostname?: string;
|
|
142
|
+
hotReload?: HotReloadConfig;
|
|
143
|
+
onReload?: () => void;
|
|
144
|
+
}) => {
|
|
145
|
+
server: ReturnType<typeof Bun.serve>;
|
|
146
|
+
hotReload: HotReloadManager;
|
|
147
|
+
stop: () => void;
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Hot reload decorators for classes and methods
|
|
152
|
+
*/
|
|
153
|
+
export declare const HotReloadDecorators: {
|
|
154
|
+
/**
|
|
155
|
+
* Class decorator for hot-reloadable classes
|
|
156
|
+
*/
|
|
157
|
+
hotReloadable: <T extends new (...args: any[]) => any>(constructor: T) => T;
|
|
158
|
+
/**
|
|
159
|
+
* Method decorator for hot-reloadable methods
|
|
160
|
+
*/
|
|
161
|
+
hotMethod: (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Initialize global hot reload
|
|
165
|
+
*/
|
|
166
|
+
export declare function initializeHotReload(config?: HotReloadConfig): HotReloadManager;
|
|
167
|
+
/**
|
|
168
|
+
* Get global hot reload instance
|
|
169
|
+
*/
|
|
170
|
+
export declare function getHotReload(): HotReloadManager | null;
|
|
171
|
+
/**
|
|
172
|
+
* Hot reload factory functions
|
|
173
|
+
*/
|
|
174
|
+
export declare const HotReloadFactory: {
|
|
175
|
+
/**
|
|
176
|
+
* Create development hot reload
|
|
177
|
+
*/
|
|
178
|
+
createDevelopment: () => HotReloadManager;
|
|
179
|
+
/**
|
|
180
|
+
* Create production hot reload (disabled)
|
|
181
|
+
*/
|
|
182
|
+
createProduction: () => HotReloadManager;
|
|
183
|
+
/**
|
|
184
|
+
* Create testing hot reload
|
|
185
|
+
*/
|
|
186
|
+
createTesting: () => HotReloadManager;
|
|
187
|
+
};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Development Tools - Main Integration
|
|
3
|
+
*
|
|
4
|
+
* Unified development tools with router integration and middleware
|
|
5
|
+
*/
|
|
6
|
+
import type { EnhancedRequest } from '../types';
|
|
7
|
+
import { PerformanceProfiler, PerformanceProfilingHelpers } from './performance-profiler';
|
|
8
|
+
import { RouteDebugger, RouteDebugHelpers } from './route-debugger';
|
|
9
|
+
import { RouteInspectionHelpers, RouteInspector } from './route-inspector';
|
|
10
|
+
import { TypeScriptHelpers, TypeScriptUtilities } from './typescript-utilities';
|
|
11
|
+
export interface DevelopmentConfig {
|
|
12
|
+
debug?: {
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
15
|
+
includeHeaders?: boolean;
|
|
16
|
+
includeBody?: boolean;
|
|
17
|
+
colorOutput?: boolean;
|
|
18
|
+
};
|
|
19
|
+
profiling?: {
|
|
20
|
+
enabled?: boolean;
|
|
21
|
+
sampleRate?: number;
|
|
22
|
+
includeMemory?: boolean;
|
|
23
|
+
includeCpu?: boolean;
|
|
24
|
+
};
|
|
25
|
+
inspection?: {
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
trackStats?: boolean;
|
|
28
|
+
generateReports?: boolean;
|
|
29
|
+
};
|
|
30
|
+
typescript?: {
|
|
31
|
+
generateTypes?: boolean;
|
|
32
|
+
validateTypes?: boolean;
|
|
33
|
+
generateSchemas?: boolean;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Development tools manager
|
|
38
|
+
*/
|
|
39
|
+
export declare class DevelopmentTools {
|
|
40
|
+
private debugger;
|
|
41
|
+
private inspector;
|
|
42
|
+
private profiler;
|
|
43
|
+
private tsUtils;
|
|
44
|
+
private config;
|
|
45
|
+
constructor(config?: DevelopmentConfig);
|
|
46
|
+
/**
|
|
47
|
+
* Create development middleware stack
|
|
48
|
+
*/
|
|
49
|
+
createMiddleware(): Array<(req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>>;
|
|
50
|
+
/**
|
|
51
|
+
* Register route with all development tools
|
|
52
|
+
*/
|
|
53
|
+
registerRoute(method: string, pattern: string, handler: (...args: any[]) => any, middleware?: ((..._args: any[]) => any)[], options?: any): string;
|
|
54
|
+
/**
|
|
55
|
+
* Get route debugging information
|
|
56
|
+
*/
|
|
57
|
+
debug(): {
|
|
58
|
+
listRoutes: typeof RouteInspectionHelpers.listRoutes;
|
|
59
|
+
analyzeRoutes: typeof RouteInspectionHelpers.analyzeRoutes;
|
|
60
|
+
exportRoutes: typeof RouteInspectionHelpers.exportRoutes;
|
|
61
|
+
getDebugSession: (requestId: string) => import('./route-debugger').RouteDebugInfo | undefined;
|
|
62
|
+
clearSessions: () => void;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Get route listing and analysis
|
|
66
|
+
*/
|
|
67
|
+
routes(): {
|
|
68
|
+
list: (filter?: any) => import('./route-inspector').RouteMetadata[];
|
|
69
|
+
analyze: () => import('./route-inspector').RouteAnalysis;
|
|
70
|
+
export: (format?: 'json' | 'csv' | 'markdown' | 'openapi') => string;
|
|
71
|
+
groups: () => import('./route-inspector').RouteGroup[];
|
|
72
|
+
find: (method: string, path: string) => import('./route-inspector').RouteMetadata[];
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Get performance profiling information
|
|
76
|
+
*/
|
|
77
|
+
profile(): {
|
|
78
|
+
getMetrics: () => import('./performance-profiler').PerformanceMetrics;
|
|
79
|
+
getProfiles: (filter?: any) => import('./performance-profiler').RouteProfile[];
|
|
80
|
+
generateReport: () => string;
|
|
81
|
+
clear: () => void;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Get TypeScript utilities
|
|
85
|
+
*/
|
|
86
|
+
typescript(): {
|
|
87
|
+
generateTypes: () => string;
|
|
88
|
+
generateSchemas: () => Record<string, import('./typescript-utilities').ValidationSchema>;
|
|
89
|
+
generateOpenAPI: () => any;
|
|
90
|
+
generateRouteBuilder: () => string;
|
|
91
|
+
validateRequest: (req: EnhancedRequest, routeKey: string) => {
|
|
92
|
+
valid: boolean;
|
|
93
|
+
errors: string[];
|
|
94
|
+
warnings: string[];
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Generate comprehensive development report
|
|
99
|
+
*/
|
|
100
|
+
generateReport(): string;
|
|
101
|
+
/**
|
|
102
|
+
* Clear all development data
|
|
103
|
+
*/
|
|
104
|
+
clear(): void;
|
|
105
|
+
/**
|
|
106
|
+
* Create inspection middleware
|
|
107
|
+
*/
|
|
108
|
+
private createInspectionMiddleware;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Router extension for development tools
|
|
112
|
+
*/
|
|
113
|
+
export declare class DevelopmentRouter {
|
|
114
|
+
private devTools;
|
|
115
|
+
private routes;
|
|
116
|
+
constructor(config?: DevelopmentConfig);
|
|
117
|
+
/**
|
|
118
|
+
* Enable debugging for next route
|
|
119
|
+
*/
|
|
120
|
+
debug(): {
|
|
121
|
+
get: (pattern: string, handler: (...args: any[]) => any) => any;
|
|
122
|
+
post: (pattern: string, handler: (...args: any[]) => any) => any;
|
|
123
|
+
put: (pattern: string, handler: (...args: any[]) => any) => any;
|
|
124
|
+
patch: (pattern: string, handler: (...args: any[]) => any) => any;
|
|
125
|
+
delete: (pattern: string, handler: (...args: any[]) => any) => any;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Enable profiling for route group
|
|
129
|
+
*/
|
|
130
|
+
profile(): {
|
|
131
|
+
group: (callback: () => void) => void;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Get all registered routes
|
|
135
|
+
*/
|
|
136
|
+
getRoutes(): import('./route-inspector').RouteMetadata[];
|
|
137
|
+
/**
|
|
138
|
+
* Register route with development tools
|
|
139
|
+
*/
|
|
140
|
+
private registerRoute;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Development presets for common configurations
|
|
144
|
+
*/
|
|
145
|
+
export declare const DevelopmentPresets: {
|
|
146
|
+
/**
|
|
147
|
+
* Full development mode with all features enabled
|
|
148
|
+
*/
|
|
149
|
+
development: () => DevelopmentConfig;
|
|
150
|
+
/**
|
|
151
|
+
* Production debugging with minimal overhead
|
|
152
|
+
*/
|
|
153
|
+
production: () => DevelopmentConfig;
|
|
154
|
+
/**
|
|
155
|
+
* Performance testing configuration
|
|
156
|
+
*/
|
|
157
|
+
performance: () => DevelopmentConfig;
|
|
158
|
+
/**
|
|
159
|
+
* TypeScript development configuration
|
|
160
|
+
*/
|
|
161
|
+
typescript: () => DevelopmentConfig;
|
|
162
|
+
};
|
|
163
|
+
export { PerformanceProfiler, PerformanceProfilingHelpers, RouteDebugger, RouteDebugHelpers, RouteInspectionHelpers, RouteInspector, TypeScriptHelpers, TypeScriptUtilities, };
|
|
164
|
+
export type { ProfileConfig as ProfilerConfig, PerformanceMetrics as ProfilerMetrics, RouteProfile as ProfilerRouteProfile, } from './performance-profiler';
|
|
165
|
+
export type { RouteDebugConfig, RouteDebugInfo, } from './route-debugger';
|
|
166
|
+
export type { RouteAnalysis as InspectorRouteAnalysis, RouteMetadata as InspectorRouteMetadata, RouteGroup, } from './route-inspector';
|
|
167
|
+
export type { TypeScriptConfig as TSConfig, RouteTypeInfo as TSRouteTypeInfo, TypeDefinition as TSTypeDefinition, ValidationSchema as TSValidationSchema, } from './typescript-utilities';
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Development Tools - Performance Profiler
|
|
3
|
+
*
|
|
4
|
+
* Performance profiling, benchmarking, and optimization analysis
|
|
5
|
+
*/
|
|
6
|
+
import type { EnhancedRequest } from '../types';
|
|
7
|
+
export interface ProfileConfig {
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
sampleRate?: number;
|
|
10
|
+
includeMemory?: boolean;
|
|
11
|
+
includeCpu?: boolean;
|
|
12
|
+
includeGc?: boolean;
|
|
13
|
+
trackSlowQueries?: boolean;
|
|
14
|
+
slowQueryThreshold?: number;
|
|
15
|
+
maxProfiles?: number;
|
|
16
|
+
outputFormat?: 'console' | 'json' | 'flamegraph';
|
|
17
|
+
}
|
|
18
|
+
export interface ProfilePoint {
|
|
19
|
+
name: string;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
duration?: number;
|
|
22
|
+
memory?: NodeJS.MemoryUsage;
|
|
23
|
+
cpu?: NodeJS.CpuUsage;
|
|
24
|
+
metadata?: Record<string, any>;
|
|
25
|
+
}
|
|
26
|
+
export interface RouteProfile {
|
|
27
|
+
id: string;
|
|
28
|
+
requestId: string;
|
|
29
|
+
method: string;
|
|
30
|
+
path: string;
|
|
31
|
+
pattern: string;
|
|
32
|
+
startTime: number;
|
|
33
|
+
endTime?: number;
|
|
34
|
+
totalDuration?: number;
|
|
35
|
+
phases: {
|
|
36
|
+
routeMatching: ProfilePoint[];
|
|
37
|
+
middlewareExecution: ProfilePoint[];
|
|
38
|
+
handlerExecution: ProfilePoint[];
|
|
39
|
+
responseGeneration: ProfilePoint[];
|
|
40
|
+
};
|
|
41
|
+
memory: {
|
|
42
|
+
initial: NodeJS.MemoryUsage;
|
|
43
|
+
peak: NodeJS.MemoryUsage;
|
|
44
|
+
final?: NodeJS.MemoryUsage;
|
|
45
|
+
allocations: number;
|
|
46
|
+
};
|
|
47
|
+
cpu: {
|
|
48
|
+
initial: NodeJS.CpuUsage;
|
|
49
|
+
final?: NodeJS.CpuUsage;
|
|
50
|
+
userTime: number;
|
|
51
|
+
systemTime: number;
|
|
52
|
+
};
|
|
53
|
+
gc?: {
|
|
54
|
+
collections: number;
|
|
55
|
+
duration: number;
|
|
56
|
+
reclaimedMemory: number;
|
|
57
|
+
};
|
|
58
|
+
queries?: Array<{
|
|
59
|
+
query: string;
|
|
60
|
+
duration: number;
|
|
61
|
+
timestamp: number;
|
|
62
|
+
}>;
|
|
63
|
+
warnings: string[];
|
|
64
|
+
recommendations: string[];
|
|
65
|
+
}
|
|
66
|
+
export interface PerformanceMetrics {
|
|
67
|
+
averageResponseTime: number;
|
|
68
|
+
p50ResponseTime: number;
|
|
69
|
+
p95ResponseTime: number;
|
|
70
|
+
p99ResponseTime: number;
|
|
71
|
+
requestsPerSecond: number;
|
|
72
|
+
memoryUsageAverage: number;
|
|
73
|
+
memoryUsagePeak: number;
|
|
74
|
+
cpuUsageAverage: number;
|
|
75
|
+
gcPressure: number;
|
|
76
|
+
slowestRoutes: Array<{
|
|
77
|
+
pattern: string;
|
|
78
|
+
averageTime: number;
|
|
79
|
+
count: number;
|
|
80
|
+
}>;
|
|
81
|
+
memoryLeaks: Array<{
|
|
82
|
+
route: string;
|
|
83
|
+
memoryGrowth: number;
|
|
84
|
+
requests: number;
|
|
85
|
+
}>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Performance profiler for route analysis
|
|
89
|
+
*/
|
|
90
|
+
export declare class PerformanceProfiler {
|
|
91
|
+
private config;
|
|
92
|
+
private profiles;
|
|
93
|
+
private activeProfiles;
|
|
94
|
+
private metrics;
|
|
95
|
+
private gcObserver?;
|
|
96
|
+
private memoryBaseline;
|
|
97
|
+
constructor(config?: ProfileConfig);
|
|
98
|
+
/**
|
|
99
|
+
* Start profiling a request
|
|
100
|
+
*/
|
|
101
|
+
startProfiling(req: EnhancedRequest, pattern: string): string | null;
|
|
102
|
+
/**
|
|
103
|
+
* Record a profile point
|
|
104
|
+
*/
|
|
105
|
+
recordPoint(profileId: string, phase: keyof RouteProfile['phases'], name: string, metadata?: Record<string, any>): void;
|
|
106
|
+
/**
|
|
107
|
+
* Start timing a specific operation
|
|
108
|
+
*/
|
|
109
|
+
startTiming(profileId: string, phase: keyof RouteProfile['phases'], name: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* End timing a specific operation
|
|
112
|
+
*/
|
|
113
|
+
endTiming(profileId: string, phase: keyof RouteProfile['phases'], timingId: string): void;
|
|
114
|
+
/**
|
|
115
|
+
* Record database query
|
|
116
|
+
*/
|
|
117
|
+
recordQuery(profileId: string, query: string, duration: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* Finish profiling a request
|
|
120
|
+
*/
|
|
121
|
+
finishProfiling(profileId: string, _response?: Response): RouteProfile | null;
|
|
122
|
+
/**
|
|
123
|
+
* Get profile by ID
|
|
124
|
+
*/
|
|
125
|
+
getProfile(profileId: string): RouteProfile | undefined;
|
|
126
|
+
/**
|
|
127
|
+
* Get all profiles
|
|
128
|
+
*/
|
|
129
|
+
getProfiles(filter?: {
|
|
130
|
+
method?: string;
|
|
131
|
+
pattern?: string;
|
|
132
|
+
minDuration?: number;
|
|
133
|
+
maxDuration?: number;
|
|
134
|
+
hasWarnings?: boolean;
|
|
135
|
+
}): RouteProfile[];
|
|
136
|
+
/**
|
|
137
|
+
* Get performance metrics
|
|
138
|
+
*/
|
|
139
|
+
getMetrics(): PerformanceMetrics;
|
|
140
|
+
/**
|
|
141
|
+
* Generate performance report
|
|
142
|
+
*/
|
|
143
|
+
generateReport(): string;
|
|
144
|
+
/**
|
|
145
|
+
* Clear all profiles and reset metrics
|
|
146
|
+
*/
|
|
147
|
+
clear(): void;
|
|
148
|
+
/**
|
|
149
|
+
* Determine if request should be profiled
|
|
150
|
+
*/
|
|
151
|
+
private shouldProfile;
|
|
152
|
+
/**
|
|
153
|
+
* Generate unique profile ID
|
|
154
|
+
*/
|
|
155
|
+
private generateProfileId;
|
|
156
|
+
/**
|
|
157
|
+
* Extract request ID from request
|
|
158
|
+
*/
|
|
159
|
+
private extractRequestId;
|
|
160
|
+
/**
|
|
161
|
+
* Initialize metrics structure
|
|
162
|
+
*/
|
|
163
|
+
private initializeMetrics;
|
|
164
|
+
/**
|
|
165
|
+
* Setup garbage collection observer
|
|
166
|
+
*/
|
|
167
|
+
private setupGcObserver;
|
|
168
|
+
/**
|
|
169
|
+
* Generate recommendations for a profile
|
|
170
|
+
*/
|
|
171
|
+
private generateRecommendations;
|
|
172
|
+
/**
|
|
173
|
+
* Update performance metrics
|
|
174
|
+
*/
|
|
175
|
+
private updateMetrics;
|
|
176
|
+
/**
|
|
177
|
+
* Cleanup old profiles
|
|
178
|
+
*/
|
|
179
|
+
private cleanupProfiles;
|
|
180
|
+
/**
|
|
181
|
+
* Log profile information
|
|
182
|
+
*/
|
|
183
|
+
private logProfile;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Initialize global performance profiler
|
|
187
|
+
*/
|
|
188
|
+
export declare function initializePerformanceProfiler(config?: ProfileConfig): PerformanceProfiler;
|
|
189
|
+
/**
|
|
190
|
+
* Get global performance profiler
|
|
191
|
+
*/
|
|
192
|
+
export declare function getPerformanceProfiler(): PerformanceProfiler | null;
|
|
193
|
+
/**
|
|
194
|
+
* Performance profiling middleware factory
|
|
195
|
+
*/
|
|
196
|
+
export declare function createPerformanceProfilingMiddleware(config?: ProfileConfig): (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
|
|
197
|
+
/**
|
|
198
|
+
* Performance profiling helpers
|
|
199
|
+
*/
|
|
200
|
+
export declare const PerformanceProfilingHelpers: {
|
|
201
|
+
/**
|
|
202
|
+
* Record timing from request context
|
|
203
|
+
*/
|
|
204
|
+
startTiming: (req: EnhancedRequest, phase: keyof RouteProfile["phases"], name: string) => string | null;
|
|
205
|
+
/**
|
|
206
|
+
* End timing from request context
|
|
207
|
+
*/
|
|
208
|
+
endTiming: (req: EnhancedRequest, phase: keyof RouteProfile["phases"], timingId: string) => void;
|
|
209
|
+
/**
|
|
210
|
+
* Record database query from request context
|
|
211
|
+
*/
|
|
212
|
+
recordQuery: (req: EnhancedRequest, query: string, duration: number) => void;
|
|
213
|
+
/**
|
|
214
|
+
* Record profile point from request context
|
|
215
|
+
*/
|
|
216
|
+
recordPoint: (req: EnhancedRequest, phase: keyof RouteProfile["phases"], name: string, metadata?: Record<string, any>) => void;
|
|
217
|
+
};
|