@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.
Files changed (272) hide show
  1. package/README.md +2 -2
  2. package/dist/auth.d.ts +134 -0
  3. package/dist/cache/lru-cache.d.ts +139 -0
  4. package/dist/cache/middleware-memoization.d.ts +151 -0
  5. package/dist/cache/route-cache-warmer.d.ts +161 -0
  6. package/dist/cache/sqlite-cache.d.ts +209 -0
  7. package/dist/cache/streaming-cache.d.ts +132 -0
  8. package/dist/chunk-jhsk5c5b.js +15758 -0
  9. package/dist/cli/colors.d.ts +15 -0
  10. package/dist/cli/index.d.ts +10 -0
  11. package/dist/cli/middleware.d.ts +31 -0
  12. package/dist/cli/openapi.d.ts +17 -0
  13. package/dist/cli/router.d.ts +15 -0
  14. package/dist/cli/routes.d.ts +29 -0
  15. package/dist/cli/utils.d.ts +74 -0
  16. package/dist/cli.d.ts +1 -1
  17. package/dist/cli.js +2 -2
  18. package/dist/config.d.ts +7 -0
  19. package/dist/container/container.d.ts +273 -0
  20. package/dist/container/contextual-binding.d.ts +240 -0
  21. package/dist/container/decorators.d.ts +141 -0
  22. package/dist/container/service-provider.d.ts +285 -0
  23. package/dist/development/hot-reload.d.ts +187 -0
  24. package/dist/development/index.d.ts +167 -0
  25. package/dist/development/performance-profiler.d.ts +217 -0
  26. package/dist/development/route-debugger.d.ts +154 -0
  27. package/dist/development/route-inspector.d.ts +211 -0
  28. package/dist/development/typescript-utilities.d.ts +209 -0
  29. package/dist/docs.d.ts +11 -0
  30. package/dist/errors/circuit-breaker.d.ts +195 -0
  31. package/dist/errors/error-handler.d.ts +88 -0
  32. package/dist/errors/error-reporting.d.ts +144 -0
  33. package/dist/errors/exceptions.d.ts +184 -0
  34. package/dist/errors/graceful-degradation.d.ts +154 -0
  35. package/dist/errors/index.d.ts +9 -0
  36. package/dist/errors/router-errors.d.ts +110 -0
  37. package/dist/file-serving/static-files.d.ts +143 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +320 -206
  40. package/dist/middleware/auth.d.ts +63 -0
  41. package/dist/middleware/content_security_policy.d.ts +53 -0
  42. package/dist/middleware/cors.d.ts +5 -0
  43. package/dist/middleware/csrf.d.ts +7 -0
  44. package/dist/middleware/ddos_protection.d.ts +39 -0
  45. package/dist/middleware/file_security.d.ts +26 -0
  46. package/dist/middleware/file_upload.d.ts +38 -0
  47. package/dist/middleware/helmet.d.ts +54 -0
  48. package/dist/middleware/index.d.ts +44 -0
  49. package/dist/middleware/input_validation.d.ts +45 -0
  50. package/dist/middleware/json_body.d.ts +4 -0
  51. package/dist/middleware/performance_alerting.d.ts +87 -0
  52. package/dist/middleware/performance_dashboard.d.ts +87 -0
  53. package/dist/middleware/performance_monitor.d.ts +209 -0
  54. package/dist/middleware/pipeline.d.ts +131 -0
  55. package/dist/middleware/rate_limit.d.ts +36 -0
  56. package/dist/middleware/request_id.d.ts +4 -0
  57. package/dist/middleware/request_signing.d.ts +153 -0
  58. package/dist/middleware/request_tracer.d.ts +72 -0
  59. package/dist/middleware/response_cache.d.ts +97 -0
  60. package/dist/middleware/security.d.ts +69 -0
  61. package/dist/middleware/security_suite.d.ts +46 -0
  62. package/dist/middleware/session.d.ts +23 -0
  63. package/dist/model-binding/index.d.ts +2 -0
  64. package/dist/model-binding/model-middleware.d.ts +118 -0
  65. package/dist/model-binding/model-registry.d.ts +164 -0
  66. package/dist/model-binding.d.ts +185 -0
  67. package/dist/model-resolver-factory.d.ts +31 -0
  68. package/dist/observability/correlation.d.ts +187 -0
  69. package/dist/observability/health-checks.d.ts +186 -0
  70. package/dist/observability/index.d.ts +60 -0
  71. package/dist/observability/integration.d.ts +147 -0
  72. package/dist/observability/metrics.d.ts +184 -0
  73. package/dist/observability/tracing.d.ts +187 -0
  74. package/dist/optimization/bun-utilities.d.ts +224 -0
  75. package/dist/query-builder-integration.d.ts +36 -0
  76. package/dist/request/context.d.ts +34 -0
  77. package/dist/request/enhanced-request.d.ts +213 -0
  78. package/dist/request/macros.d.ts +300 -0
  79. package/dist/response/macros.d.ts +245 -0
  80. package/dist/response/response-factory.d.ts +133 -0
  81. package/dist/router/api-routes.d.ts +5 -0
  82. package/dist/router/file-based-routing.d.ts +118 -0
  83. package/dist/router/file-streaming.d.ts +5 -0
  84. package/dist/router/fluent-router.d.ts +315 -0
  85. package/dist/router/fluent-routing.d.ts +271 -0
  86. package/dist/router/group-organization.d.ts +5 -0
  87. package/dist/router/handler-resolver.d.ts +24 -0
  88. package/dist/router/http-methods.d.ts +10 -0
  89. package/dist/router/index.d.ts +113 -0
  90. package/dist/router/middleware-groups.d.ts +94 -0
  91. package/dist/router/middleware-integration.d.ts +112 -0
  92. package/dist/router/middleware.d.ts +5 -0
  93. package/dist/router/model-binding.d.ts +5 -0
  94. package/dist/router/optimized-route-matching.d.ts +6 -0
  95. package/dist/router/route-building.d.ts +5 -0
  96. package/dist/router/route-compiler.d.ts +153 -0
  97. package/dist/router/route-matching.d.ts +5 -0
  98. package/dist/router/route-trie.d.ts +114 -0
  99. package/dist/router/router.d.ts +276 -0
  100. package/dist/router/server.d.ts +5 -0
  101. package/dist/router/validation-integration.d.ts +170 -0
  102. package/dist/router/view-rendering.d.ts +5 -0
  103. package/dist/router/websocket.d.ts +5 -0
  104. package/dist/routing/route-caching.d.ts +129 -0
  105. package/dist/routing/route-throttling.d.ts +150 -0
  106. package/dist/routing/subdomain-routing.d.ts +206 -0
  107. package/dist/session/database-store.d.ts +51 -0
  108. package/dist/session/file-store.d.ts +22 -0
  109. package/dist/session/index.d.ts +106 -0
  110. package/dist/session/memory-store.d.ts +21 -0
  111. package/dist/session/redis-store.d.ts +31 -0
  112. package/dist/streaming/index.d.ts +3 -0
  113. package/dist/streaming/sse-handler.d.ts +138 -0
  114. package/dist/streaming/stream-handler.d.ts +114 -0
  115. package/dist/testing/auth-testing.d.ts +156 -0
  116. package/dist/testing/file-upload-testing.d.ts +190 -0
  117. package/dist/testing/index.d.ts +10 -0
  118. package/dist/testing/middleware-testing.d.ts +138 -0
  119. package/dist/testing/model-binding-testing.d.ts +186 -0
  120. package/dist/testing/performance-testing.d.ts +235 -0
  121. package/dist/testing/test-client.d.ts +117 -0
  122. package/dist/testing/test-request.d.ts +85 -0
  123. package/dist/testing/test-response.d.ts +90 -0
  124. package/dist/testing/types.d.ts +207 -0
  125. package/dist/testing/websocket-testing.d.ts +227 -0
  126. package/dist/types/controller-types.d.ts +208 -0
  127. package/dist/types/core.d.ts +543 -0
  128. package/dist/types/middleware-types.d.ts +227 -0
  129. package/dist/types/request-response-augmentation.d.ts +261 -0
  130. package/dist/types/route-inference.d.ts +168 -0
  131. package/dist/types.d.ts +1776 -0
  132. package/dist/url.d.ts +56 -0
  133. package/dist/utils/index.d.ts +1 -0
  134. package/dist/utils/query-preservation.d.ts +48 -0
  135. package/dist/utils.d.ts +69 -0
  136. package/dist/validation/validator.d.ts +140 -0
  137. package/dist/websocket/clustering.d.ts +185 -0
  138. package/package.json +18 -4
  139. package/src/auth.ts +469 -0
  140. package/src/cache/lru-cache.ts +457 -0
  141. package/src/cache/middleware-memoization.ts +531 -0
  142. package/src/cache/route-cache-warmer.ts +486 -0
  143. package/src/cache/sqlite-cache.ts +783 -0
  144. package/src/cache/streaming-cache.ts +572 -0
  145. package/src/cli/colors.ts +29 -0
  146. package/src/cli/index.ts +287 -0
  147. package/src/cli/middleware.ts +291 -0
  148. package/src/cli/openapi.ts +407 -0
  149. package/src/cli/router.ts +188 -0
  150. package/src/cli/routes.ts +265 -0
  151. package/src/cli/utils.ts +531 -0
  152. package/src/cli.ts +5 -0
  153. package/src/config.ts +322 -0
  154. package/src/container/container.ts +740 -0
  155. package/src/container/contextual-binding.ts +603 -0
  156. package/src/container/decorators.ts +359 -0
  157. package/src/container/service-provider.ts +596 -0
  158. package/src/development/hot-reload.ts +673 -0
  159. package/src/development/index.ts +499 -0
  160. package/src/development/performance-profiler.ts +717 -0
  161. package/src/development/route-debugger.ts +527 -0
  162. package/src/development/route-inspector.ts +749 -0
  163. package/src/development/typescript-utilities.ts +678 -0
  164. package/src/docs.ts +397 -0
  165. package/src/errors/circuit-breaker.ts +732 -0
  166. package/src/errors/error-handler.ts +569 -0
  167. package/src/errors/error-reporting.ts +672 -0
  168. package/src/errors/exceptions.ts +536 -0
  169. package/src/errors/graceful-degradation.ts +621 -0
  170. package/src/errors/index.ts +21 -0
  171. package/src/errors/router-errors.ts +632 -0
  172. package/src/file-serving/static-files.ts +581 -0
  173. package/src/index.ts +14 -0
  174. package/src/middleware/auth.ts +219 -0
  175. package/src/middleware/content_security_policy.ts +215 -0
  176. package/src/middleware/cors.ts +74 -0
  177. package/src/middleware/csrf.ts +108 -0
  178. package/src/middleware/ddos_protection.ts +255 -0
  179. package/src/middleware/file_security.ts +191 -0
  180. package/src/middleware/file_upload.ts +264 -0
  181. package/src/middleware/helmet.ts +268 -0
  182. package/src/middleware/index.ts +117 -0
  183. package/src/middleware/input_validation.ts +449 -0
  184. package/src/middleware/json_body.ts +37 -0
  185. package/src/middleware/performance_alerting.ts +538 -0
  186. package/src/middleware/performance_dashboard.ts +661 -0
  187. package/src/middleware/performance_monitor.ts +943 -0
  188. package/src/middleware/pipeline.ts +489 -0
  189. package/src/middleware/rate_limit.ts +245 -0
  190. package/src/middleware/request_id.ts +36 -0
  191. package/src/middleware/request_signing.ts +636 -0
  192. package/src/middleware/request_tracer.ts +636 -0
  193. package/src/middleware/response_cache.ts +743 -0
  194. package/src/middleware/security.ts +482 -0
  195. package/src/middleware/security_suite.ts +257 -0
  196. package/src/middleware/session.ts +91 -0
  197. package/src/model-binding/index.ts +18 -0
  198. package/src/model-binding/model-middleware.ts +425 -0
  199. package/src/model-binding/model-registry.ts +550 -0
  200. package/src/model-binding.ts +370 -0
  201. package/src/model-resolver-factory.ts +106 -0
  202. package/src/observability/correlation.ts +691 -0
  203. package/src/observability/health-checks.ts +729 -0
  204. package/src/observability/index.ts +184 -0
  205. package/src/observability/integration.ts +548 -0
  206. package/src/observability/metrics.ts +753 -0
  207. package/src/observability/tracing.ts +638 -0
  208. package/src/optimization/bun-utilities.ts +778 -0
  209. package/src/query-builder-integration.ts +137 -0
  210. package/src/request/context.ts +62 -0
  211. package/src/request/enhanced-request.ts +857 -0
  212. package/src/request/macros.ts +688 -0
  213. package/src/response/macros.ts +612 -0
  214. package/src/response/response-factory.ts +588 -0
  215. package/src/router/api-routes.ts +243 -0
  216. package/src/router/file-based-routing.ts +670 -0
  217. package/src/router/file-streaming.ts +372 -0
  218. package/src/router/fluent-router.ts +927 -0
  219. package/src/router/fluent-routing.ts +797 -0
  220. package/src/router/group-organization.ts +213 -0
  221. package/src/router/handler-resolver.ts +291 -0
  222. package/src/router/http-methods.ts +377 -0
  223. package/src/router/index.ts +185 -0
  224. package/src/router/middleware-groups.ts +222 -0
  225. package/src/router/middleware-integration.ts +399 -0
  226. package/src/router/middleware.ts +231 -0
  227. package/src/router/model-binding.ts +215 -0
  228. package/src/router/optimized-route-matching.ts +253 -0
  229. package/src/router/route-building.ts +212 -0
  230. package/src/router/route-compiler.ts +702 -0
  231. package/src/router/route-matching.ts +349 -0
  232. package/src/router/route-trie.ts +464 -0
  233. package/src/router/router.ts +1508 -0
  234. package/src/router/server.ts +406 -0
  235. package/src/router/validation-integration.ts +443 -0
  236. package/src/router/view-rendering.ts +233 -0
  237. package/src/router/websocket.ts +100 -0
  238. package/src/routing/route-caching.ts +402 -0
  239. package/src/routing/route-throttling.ts +469 -0
  240. package/src/routing/subdomain-routing.ts +492 -0
  241. package/src/session/database-store.ts +109 -0
  242. package/src/session/file-store.ts +148 -0
  243. package/src/session/index.ts +244 -0
  244. package/src/session/memory-store.ts +88 -0
  245. package/src/session/redis-store.ts +93 -0
  246. package/src/streaming/index.ts +17 -0
  247. package/src/streaming/sse-handler.ts +482 -0
  248. package/src/streaming/stream-handler.ts +552 -0
  249. package/src/testing/auth-testing.ts +446 -0
  250. package/src/testing/file-upload-testing.ts +543 -0
  251. package/src/testing/index.ts +10 -0
  252. package/src/testing/middleware-testing.ts +322 -0
  253. package/src/testing/model-binding-testing.ts +645 -0
  254. package/src/testing/performance-testing.ts +738 -0
  255. package/src/testing/test-client.ts +310 -0
  256. package/src/testing/test-request.ts +315 -0
  257. package/src/testing/test-response.ts +332 -0
  258. package/src/testing/types.ts +224 -0
  259. package/src/testing/websocket-testing.ts +590 -0
  260. package/src/types/controller-types.ts +385 -0
  261. package/src/types/core.ts +683 -0
  262. package/src/types/middleware-types.ts +419 -0
  263. package/src/types/request-response-augmentation.ts +489 -0
  264. package/src/types/route-inference.ts +357 -0
  265. package/src/types.ts +2049 -0
  266. package/src/url.ts +126 -0
  267. package/src/utils/index.ts +1 -0
  268. package/src/utils/query-preservation.ts +201 -0
  269. package/src/utils.ts +327 -0
  270. package/src/validation/validator.ts +685 -0
  271. package/src/websocket/clustering.ts +762 -0
  272. package/dist/chunk-cjdekj87.js +0 -25886
@@ -0,0 +1,499 @@
1
+ /**
2
+ * Development Tools - Main Integration
3
+ *
4
+ * Unified development tools with router integration and middleware
5
+ */
6
+
7
+ import type { EnhancedRequest } from '../types'
8
+ import { createPerformanceProfilingMiddleware, initializePerformanceProfiler, PerformanceProfiler, PerformanceProfilingHelpers } from './performance-profiler'
9
+ import { createRouteDebugMiddleware, initializeRouteDebugger, RouteDebugger, RouteDebugHelpers } from './route-debugger'
10
+ import { initializeRouteInspector, RouteInspectionHelpers, RouteInspector } from './route-inspector'
11
+ import { initializeTypeScriptUtilities, TypeScriptHelpers, TypeScriptUtilities } from './typescript-utilities'
12
+
13
+ export interface DevelopmentConfig {
14
+ debug?: {
15
+ enabled?: boolean
16
+ logLevel?: 'debug' | 'info' | 'warn' | 'error'
17
+ includeHeaders?: boolean
18
+ includeBody?: boolean
19
+ colorOutput?: boolean
20
+ }
21
+ profiling?: {
22
+ enabled?: boolean
23
+ sampleRate?: number
24
+ includeMemory?: boolean
25
+ includeCpu?: boolean
26
+ }
27
+ inspection?: {
28
+ enabled?: boolean
29
+ trackStats?: boolean
30
+ generateReports?: boolean
31
+ }
32
+ typescript?: {
33
+ generateTypes?: boolean
34
+ validateTypes?: boolean
35
+ generateSchemas?: boolean
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Development tools manager
41
+ */
42
+ export class DevelopmentTools {
43
+ private debugger: RouteDebugger
44
+ private inspector: RouteInspector
45
+ private profiler: PerformanceProfiler
46
+ private tsUtils: TypeScriptUtilities
47
+ private config: DevelopmentConfig
48
+
49
+ constructor(config: DevelopmentConfig = {}) {
50
+ this.config = {
51
+ debug: { enabled: true, ...config.debug },
52
+ profiling: { enabled: true, sampleRate: 0.1, ...config.profiling },
53
+ inspection: { enabled: true, trackStats: true, ...config.inspection },
54
+ typescript: { generateTypes: true, ...config.typescript },
55
+ ...config,
56
+ }
57
+
58
+ // Initialize components
59
+ this.debugger = initializeRouteDebugger(this.config.debug)
60
+ this.inspector = initializeRouteInspector()
61
+ this.profiler = initializePerformanceProfiler(this.config.profiling)
62
+ this.tsUtils = initializeTypeScriptUtilities(this.config.typescript)
63
+ }
64
+
65
+ /**
66
+ * Create development middleware stack
67
+ */
68
+ createMiddleware(): Array<(req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>> {
69
+ const middleware: Array<(req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>> = []
70
+
71
+ // Add debugging middleware
72
+ if (this.config.debug?.enabled) {
73
+ middleware.push(createRouteDebugMiddleware(this.config.debug))
74
+ }
75
+
76
+ // Add profiling middleware
77
+ if (this.config.profiling?.enabled) {
78
+ middleware.push(createPerformanceProfilingMiddleware(this.config.profiling))
79
+ }
80
+
81
+ // Add inspection middleware
82
+ if (this.config.inspection?.enabled) {
83
+ middleware.push(this.createInspectionMiddleware())
84
+ }
85
+
86
+ return middleware
87
+ }
88
+
89
+ /**
90
+ * Register route with all development tools
91
+ */
92
+ registerRoute(
93
+ method: string,
94
+ pattern: string,
95
+ handler: (...args: any[]) => any,
96
+ middleware: ((..._args: any[]) => any)[] = [],
97
+ options: any = {},
98
+ ): string {
99
+ // Register with debugger
100
+ this.debugger.registerRoute(method, pattern, handler, middleware)
101
+
102
+ // Register with inspector
103
+ const routeId = this.inspector.registerRoute(method, pattern, handler, middleware, options)
104
+
105
+ // Register with TypeScript utilities
106
+ this.tsUtils.registerRouteTypes(method, pattern, options.types || {})
107
+
108
+ return routeId
109
+ }
110
+
111
+ /**
112
+ * Get route debugging information
113
+ */
114
+ debug(): {
115
+ listRoutes: typeof RouteInspectionHelpers.listRoutes
116
+ analyzeRoutes: typeof RouteInspectionHelpers.analyzeRoutes
117
+ exportRoutes: typeof RouteInspectionHelpers.exportRoutes
118
+ getDebugSession: (requestId: string) => import('./route-debugger').RouteDebugInfo | undefined
119
+ clearSessions: () => void
120
+ } {
121
+ const debuggerInstance = this.debugger
122
+ return {
123
+ listRoutes: RouteInspectionHelpers.listRoutes,
124
+ analyzeRoutes: RouteInspectionHelpers.analyzeRoutes,
125
+ exportRoutes: RouteInspectionHelpers.exportRoutes,
126
+ getDebugSession: (requestId: string): import('./route-debugger').RouteDebugInfo | undefined => debuggerInstance.getDebugSession(requestId),
127
+ clearSessions: (): void => debuggerInstance.clearSessions(),
128
+ }
129
+ }
130
+
131
+ /**
132
+ * Get route listing and analysis
133
+ */
134
+ routes(): {
135
+ list: (filter?: any) => import('./route-inspector').RouteMetadata[]
136
+ analyze: () => import('./route-inspector').RouteAnalysis
137
+ export: (format?: 'json' | 'csv' | 'markdown' | 'openapi') => string
138
+ groups: () => import('./route-inspector').RouteGroup[]
139
+ find: (method: string, path: string) => import('./route-inspector').RouteMetadata[]
140
+ } {
141
+ const inspectorInstance = this.inspector
142
+ return {
143
+ list: (filter?: any): import('./route-inspector').RouteMetadata[] => inspectorInstance.getRoutes(filter),
144
+ analyze: (): import('./route-inspector').RouteAnalysis => inspectorInstance.analyzeRoutes(),
145
+ export: (format?: 'json' | 'csv' | 'markdown' | 'openapi'): string => inspectorInstance.exportRoutes(format),
146
+ groups: (): import('./route-inspector').RouteGroup[] => inspectorInstance.getGroups(),
147
+ find: (method: string, path: string): import('./route-inspector').RouteMetadata[] => inspectorInstance.findMatchingRoutes(method, path),
148
+ }
149
+ }
150
+
151
+ /**
152
+ * Get performance profiling information
153
+ */
154
+ profile(): {
155
+ getMetrics: () => import('./performance-profiler').PerformanceMetrics
156
+ getProfiles: (filter?: any) => import('./performance-profiler').RouteProfile[]
157
+ generateReport: () => string
158
+ clear: () => void
159
+ } {
160
+ const profilerInstance = this.profiler
161
+ return {
162
+ getMetrics: (): import('./performance-profiler').PerformanceMetrics => profilerInstance.getMetrics(),
163
+ getProfiles: (filter?: any): import('./performance-profiler').RouteProfile[] => profilerInstance.getProfiles(filter),
164
+ generateReport: (): string => profilerInstance.generateReport(),
165
+ clear: (): void => profilerInstance.clear(),
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Get TypeScript utilities
171
+ */
172
+ typescript(): {
173
+ generateTypes: () => string
174
+ generateSchemas: () => Record<string, import('./typescript-utilities').ValidationSchema>
175
+ generateOpenAPI: () => any
176
+ generateRouteBuilder: () => string
177
+ validateRequest: (req: EnhancedRequest, routeKey: string) => { valid: boolean, errors: string[], warnings: string[] }
178
+ } {
179
+ const tsUtilsInstance = this.tsUtils
180
+ return {
181
+ generateTypes: (): string => tsUtilsInstance.generateRouteTypes(),
182
+ generateSchemas: (): Record<string, import('./typescript-utilities').ValidationSchema> => tsUtilsInstance.generateValidationSchemas(),
183
+ generateOpenAPI: (): any => tsUtilsInstance.generateOpenAPISchema(),
184
+ generateRouteBuilder: (): string => tsUtilsInstance.generateRouteBuilder(),
185
+ validateRequest: (req: EnhancedRequest, routeKey: string): { valid: boolean, errors: string[], warnings: string[] } => tsUtilsInstance.validateRequest(req, routeKey),
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Generate comprehensive development report
191
+ */
192
+ generateReport(): string {
193
+ let report = '# Development Tools Report\n\n'
194
+
195
+ // Route analysis
196
+ const analysis = this.inspector.analyzeRoutes()
197
+ report += '## Route Analysis\n'
198
+ report += `- Total Routes: ${analysis.totalRoutes}\n`
199
+ report += `- Routes by Method: ${JSON.stringify(analysis.routesByMethod)}\n`
200
+ report += `- Unused Routes: ${analysis.unusedRoutes.length}\n`
201
+ report += `- Slow Routes: ${analysis.slowRoutes.length}\n`
202
+ report += `- Error-prone Routes: ${analysis.errorProneRoutes.length}\n\n`
203
+
204
+ // Performance metrics
205
+ const metrics = this.profiler.getMetrics()
206
+ report += '## Performance Metrics\n'
207
+ report += `- Average Response Time: ${metrics.averageResponseTime.toFixed(2)}ms\n`
208
+ report += `- P95 Response Time: ${metrics.p95ResponseTime.toFixed(2)}ms\n`
209
+ report += `- P99 Response Time: ${metrics.p99ResponseTime.toFixed(2)}ms\n`
210
+ report += `- Memory Usage (Avg): ${(metrics.memoryUsageAverage / 1024 / 1024).toFixed(2)}MB\n`
211
+ report += `- Memory Usage (Peak): ${(metrics.memoryUsagePeak / 1024 / 1024).toFixed(2)}MB\n\n`
212
+
213
+ // Recommendations
214
+ if (analysis.recommendations.length > 0) {
215
+ report += '## Recommendations\n'
216
+ analysis.recommendations.forEach((rec, index) => {
217
+ report += `${index + 1}. ${rec}\n`
218
+ })
219
+ report += '\n'
220
+ }
221
+
222
+ // TypeScript information
223
+ const routeTypes = this.tsUtils.getRouteTypes()
224
+ report += '## TypeScript Information\n'
225
+ report += `- Routes with Type Information: ${routeTypes.length}\n`
226
+ report += `- Generated Type Definitions: Available\n`
227
+ report += `- Validation Schemas: Available\n\n`
228
+
229
+ return report
230
+ }
231
+
232
+ /**
233
+ * Clear all development data
234
+ */
235
+ clear(): void {
236
+ this.debugger.clearSessions()
237
+ this.inspector.clear()
238
+ this.profiler.clear()
239
+ this.tsUtils.clear()
240
+ }
241
+
242
+ /**
243
+ * Create inspection middleware
244
+ */
245
+ private createInspectionMiddleware() {
246
+ return async (req: EnhancedRequest, next: () => Promise<Response>): Promise<Response> => {
247
+ const startTime = performance.now()
248
+ const _pattern = (req as any).route?.pattern || req.url
249
+ const routeId = (req as any).route?.id
250
+
251
+ try {
252
+ const response = await next()
253
+
254
+ if (routeId && this.config.inspection?.trackStats) {
255
+ const duration = performance.now() - startTime
256
+ this.inspector.recordRouteAccess(routeId, duration, false)
257
+ }
258
+
259
+ return response
260
+ }
261
+ catch (error) {
262
+ if (routeId && this.config.inspection?.trackStats) {
263
+ const duration = performance.now() - startTime
264
+ this.inspector.recordRouteAccess(routeId, duration, true)
265
+ }
266
+ throw error
267
+ }
268
+ }
269
+ }
270
+ }
271
+
272
+ /**
273
+ * Router extension for development tools
274
+ */
275
+ export class DevelopmentRouter {
276
+ private devTools: DevelopmentTools
277
+ private routes = new Map<string, any>()
278
+
279
+ constructor(config?: DevelopmentConfig) {
280
+ this.devTools = new DevelopmentTools(config)
281
+ }
282
+
283
+ /**
284
+ * Enable debugging for next route
285
+ */
286
+ debug(): {
287
+ get: (pattern: string, handler: (...args: any[]) => any) => any
288
+ post: (pattern: string, handler: (...args: any[]) => any) => any
289
+ put: (pattern: string, handler: (...args: any[]) => any) => any
290
+ patch: (pattern: string, handler: (...args: any[]) => any) => any
291
+ delete: (pattern: string, handler: (...args: any[]) => any) => any
292
+ } {
293
+ return {
294
+ get: (pattern: string, handler: (...args: any[]) => any): any => this.registerRoute('GET', pattern, handler, { debug: true }),
295
+ post: (pattern: string, handler: (...args: any[]) => any): any => this.registerRoute('POST', pattern, handler, { debug: true }),
296
+ put: (pattern: string, handler: (...args: any[]) => any): any => this.registerRoute('PUT', pattern, handler, { debug: true }),
297
+ patch: (pattern: string, handler: (...args: any[]) => any): any => this.registerRoute('PATCH', pattern, handler, { debug: true }),
298
+ delete: (pattern: string, handler: (...args: any[]) => any): any => this.registerRoute('DELETE', pattern, handler, { debug: true }),
299
+ }
300
+ }
301
+
302
+ /**
303
+ * Enable profiling for route group
304
+ */
305
+ profile(): {
306
+ group: (callback: () => void) => void
307
+ } {
308
+ return {
309
+ group: (callback: () => void): void => {
310
+ // Enable profiling for routes registered in callback
311
+ const originalRegister = this.registerRoute.bind(this)
312
+ this.registerRoute = (method: string, pattern: string, handler: (...args: any[]) => any, options: any = {}): any => {
313
+ return originalRegister(method, pattern, handler, { ...options, profile: true })
314
+ }
315
+
316
+ callback()
317
+
318
+ // Restore original register function
319
+ this.registerRoute = originalRegister
320
+ },
321
+ }
322
+ }
323
+
324
+ /**
325
+ * Get all registered routes
326
+ */
327
+ getRoutes(): import('./route-inspector').RouteMetadata[] {
328
+ return this.devTools.routes().list()
329
+ }
330
+
331
+ /**
332
+ * Register route with development tools
333
+ */
334
+ private registerRoute(method: string, pattern: string, handler: (...args: any[]) => any, options: any = {}) {
335
+ const routeId = this.devTools.registerRoute(method, pattern, handler, [], options)
336
+
337
+ const route = {
338
+ id: routeId,
339
+ method,
340
+ pattern,
341
+ handler,
342
+ options,
343
+ }
344
+
345
+ this.routes.set(`${method}:${pattern}`, route)
346
+
347
+ console.log(`🔧 Registered ${method} ${pattern} with development tools`)
348
+
349
+ return route
350
+ }
351
+ }
352
+
353
+ /**
354
+ * Development presets for common configurations
355
+ */
356
+ export const DevelopmentPresets = {
357
+ /**
358
+ * Full development mode with all features enabled
359
+ */
360
+ development: (): DevelopmentConfig => ({
361
+ debug: {
362
+ enabled: true,
363
+ logLevel: 'debug',
364
+ includeHeaders: true,
365
+ includeBody: true,
366
+ colorOutput: true,
367
+ },
368
+ profiling: {
369
+ enabled: true,
370
+ sampleRate: 1.0, // Profile all requests in development
371
+ includeMemory: true,
372
+ includeCpu: true,
373
+ },
374
+ inspection: {
375
+ enabled: true,
376
+ trackStats: true,
377
+ generateReports: true,
378
+ },
379
+ typescript: {
380
+ generateTypes: true,
381
+ validateTypes: true,
382
+ generateSchemas: true,
383
+ },
384
+ }),
385
+
386
+ /**
387
+ * Production debugging with minimal overhead
388
+ */
389
+ production: (): DevelopmentConfig => ({
390
+ debug: {
391
+ enabled: true,
392
+ logLevel: 'warn',
393
+ includeHeaders: false,
394
+ includeBody: false,
395
+ colorOutput: false,
396
+ },
397
+ profiling: {
398
+ enabled: true,
399
+ sampleRate: 0.01, // 1% sampling in production
400
+ includeMemory: false,
401
+ includeCpu: false,
402
+ },
403
+ inspection: {
404
+ enabled: true,
405
+ trackStats: true,
406
+ generateReports: false,
407
+ },
408
+ typescript: {
409
+ generateTypes: false,
410
+ validateTypes: false,
411
+ generateSchemas: false,
412
+ },
413
+ }),
414
+
415
+ /**
416
+ * Performance testing configuration
417
+ */
418
+ performance: (): DevelopmentConfig => ({
419
+ debug: {
420
+ enabled: false,
421
+ },
422
+ profiling: {
423
+ enabled: true,
424
+ sampleRate: 1.0,
425
+ includeMemory: true,
426
+ includeCpu: true,
427
+ },
428
+ inspection: {
429
+ enabled: true,
430
+ trackStats: true,
431
+ generateReports: true,
432
+ },
433
+ typescript: {
434
+ generateTypes: false,
435
+ validateTypes: false,
436
+ generateSchemas: false,
437
+ },
438
+ }),
439
+
440
+ /**
441
+ * TypeScript development configuration
442
+ */
443
+ typescript: (): DevelopmentConfig => ({
444
+ debug: {
445
+ enabled: true,
446
+ logLevel: 'info',
447
+ },
448
+ profiling: {
449
+ enabled: false,
450
+ },
451
+ inspection: {
452
+ enabled: true,
453
+ trackStats: false,
454
+ generateReports: false,
455
+ },
456
+ typescript: {
457
+ generateTypes: true,
458
+ validateTypes: true,
459
+ generateSchemas: true,
460
+ },
461
+ }),
462
+ }
463
+
464
+ // Export all components
465
+ export {
466
+ PerformanceProfiler,
467
+ PerformanceProfilingHelpers,
468
+ RouteDebugger,
469
+ RouteDebugHelpers,
470
+ RouteInspectionHelpers,
471
+ RouteInspector,
472
+ TypeScriptHelpers,
473
+ TypeScriptUtilities,
474
+ }
475
+
476
+ export type {
477
+ ProfileConfig as ProfilerConfig,
478
+ PerformanceMetrics as ProfilerMetrics,
479
+ RouteProfile as ProfilerRouteProfile,
480
+ } from './performance-profiler'
481
+
482
+ // Export types
483
+ export type {
484
+ RouteDebugConfig,
485
+ RouteDebugInfo,
486
+ } from './route-debugger'
487
+
488
+ export type {
489
+ RouteAnalysis as InspectorRouteAnalysis,
490
+ RouteMetadata as InspectorRouteMetadata,
491
+ RouteGroup,
492
+ } from './route-inspector'
493
+
494
+ export type {
495
+ TypeScriptConfig as TSConfig,
496
+ RouteTypeInfo as TSRouteTypeInfo,
497
+ TypeDefinition as TSTypeDefinition,
498
+ ValidationSchema as TSValidationSchema,
499
+ } from './typescript-utilities'