@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.
Files changed (273) hide show
  1. package/README.md +261 -584
  2. package/bin/cli.ts +9 -0
  3. package/dist/auth.d.ts +134 -0
  4. package/dist/cache/lru-cache.d.ts +139 -0
  5. package/dist/cache/middleware-memoization.d.ts +151 -0
  6. package/dist/cache/route-cache-warmer.d.ts +161 -0
  7. package/dist/cache/sqlite-cache.d.ts +209 -0
  8. package/dist/cache/streaming-cache.d.ts +132 -0
  9. package/dist/chunk-j0e7z7hd.js +18053 -0
  10. package/dist/cli/colors.d.ts +15 -0
  11. package/dist/cli/index.d.ts +10 -0
  12. package/dist/cli/middleware.d.ts +31 -0
  13. package/dist/cli/openapi.d.ts +17 -0
  14. package/dist/cli/router.d.ts +15 -0
  15. package/dist/cli/routes.d.ts +29 -0
  16. package/dist/cli/utils.d.ts +74 -0
  17. package/dist/cli.d.ts +1 -0
  18. package/dist/cli.js +3360 -0
  19. package/dist/config.d.ts +7 -0
  20. package/dist/container/container.d.ts +273 -0
  21. package/dist/container/contextual-binding.d.ts +240 -0
  22. package/dist/container/decorators.d.ts +141 -0
  23. package/dist/container/service-provider.d.ts +285 -0
  24. package/dist/development/hot-reload.d.ts +187 -0
  25. package/dist/development/index.d.ts +167 -0
  26. package/dist/development/performance-profiler.d.ts +217 -0
  27. package/dist/development/route-debugger.d.ts +154 -0
  28. package/dist/development/route-inspector.d.ts +211 -0
  29. package/dist/development/typescript-utilities.d.ts +209 -0
  30. package/dist/docs.d.ts +11 -0
  31. package/dist/errors/circuit-breaker.d.ts +195 -0
  32. package/dist/errors/error-handler.d.ts +88 -0
  33. package/dist/errors/error-reporting.d.ts +144 -0
  34. package/dist/errors/exceptions.d.ts +184 -0
  35. package/dist/errors/graceful-degradation.d.ts +154 -0
  36. package/dist/errors/index.d.ts +9 -0
  37. package/dist/errors/router-errors.d.ts +110 -0
  38. package/dist/file-serving/static-files.d.ts +143 -0
  39. package/dist/index.d.ts +14 -0
  40. package/dist/index.js +13968 -0
  41. package/dist/middleware/auth.d.ts +63 -0
  42. package/dist/middleware/content_security_policy.d.ts +53 -0
  43. package/dist/middleware/cors.d.ts +5 -0
  44. package/dist/middleware/csrf.d.ts +7 -0
  45. package/dist/middleware/ddos_protection.d.ts +39 -0
  46. package/dist/middleware/file_security.d.ts +26 -0
  47. package/dist/middleware/file_upload.d.ts +38 -0
  48. package/dist/middleware/helmet.d.ts +54 -0
  49. package/dist/middleware/index.d.ts +44 -0
  50. package/dist/middleware/input_validation.d.ts +45 -0
  51. package/dist/middleware/json_body.d.ts +4 -0
  52. package/dist/middleware/performance_alerting.d.ts +87 -0
  53. package/dist/middleware/performance_dashboard.d.ts +87 -0
  54. package/dist/middleware/performance_monitor.d.ts +209 -0
  55. package/dist/middleware/pipeline.d.ts +131 -0
  56. package/dist/middleware/rate_limit.d.ts +36 -0
  57. package/dist/middleware/request_id.d.ts +4 -0
  58. package/dist/middleware/request_signing.d.ts +153 -0
  59. package/dist/middleware/request_tracer.d.ts +72 -0
  60. package/dist/middleware/response_cache.d.ts +97 -0
  61. package/dist/middleware/security.d.ts +69 -0
  62. package/dist/middleware/security_suite.d.ts +46 -0
  63. package/dist/middleware/session.d.ts +23 -0
  64. package/dist/model-binding/index.d.ts +2 -0
  65. package/dist/model-binding/model-middleware.d.ts +118 -0
  66. package/dist/model-binding/model-registry.d.ts +164 -0
  67. package/dist/model-binding.d.ts +185 -0
  68. package/dist/model-resolver-factory.d.ts +31 -0
  69. package/dist/observability/correlation.d.ts +187 -0
  70. package/dist/observability/health-checks.d.ts +186 -0
  71. package/dist/observability/index.d.ts +60 -0
  72. package/dist/observability/integration.d.ts +147 -0
  73. package/dist/observability/metrics.d.ts +184 -0
  74. package/dist/observability/tracing.d.ts +187 -0
  75. package/dist/optimization/bun-utilities.d.ts +224 -0
  76. package/dist/query-builder-integration.d.ts +36 -0
  77. package/dist/request/context.d.ts +34 -0
  78. package/dist/request/enhanced-request.d.ts +213 -0
  79. package/dist/request/macros.d.ts +300 -0
  80. package/dist/response/macros.d.ts +256 -0
  81. package/dist/response/response-factory.d.ts +133 -0
  82. package/dist/router/api-routes.d.ts +5 -0
  83. package/dist/router/file-based-routing.d.ts +118 -0
  84. package/dist/router/file-streaming.d.ts +5 -0
  85. package/dist/router/fluent-router.d.ts +315 -0
  86. package/dist/router/fluent-routing.d.ts +271 -0
  87. package/dist/router/group-organization.d.ts +5 -0
  88. package/dist/router/handler-resolver.d.ts +24 -0
  89. package/dist/router/http-methods.d.ts +10 -0
  90. package/dist/router/index.d.ts +114 -0
  91. package/dist/router/middleware-groups.d.ts +94 -0
  92. package/dist/router/middleware-integration.d.ts +112 -0
  93. package/dist/router/middleware.d.ts +5 -0
  94. package/dist/router/model-binding.d.ts +5 -0
  95. package/dist/router/optimized-route-matching.d.ts +6 -0
  96. package/dist/router/route-building.d.ts +5 -0
  97. package/dist/router/route-compiler.d.ts +153 -0
  98. package/dist/router/route-matching.d.ts +5 -0
  99. package/dist/router/route-trie.d.ts +114 -0
  100. package/dist/router/router.d.ts +317 -0
  101. package/dist/router/server.d.ts +5 -0
  102. package/dist/router/validation-integration.d.ts +170 -0
  103. package/dist/router/view-rendering.d.ts +5 -0
  104. package/dist/router/websocket.d.ts +5 -0
  105. package/dist/routing/route-caching.d.ts +129 -0
  106. package/dist/routing/route-throttling.d.ts +150 -0
  107. package/dist/routing/subdomain-routing.d.ts +206 -0
  108. package/dist/session/database-store.d.ts +51 -0
  109. package/dist/session/file-store.d.ts +22 -0
  110. package/dist/session/index.d.ts +106 -0
  111. package/dist/session/memory-store.d.ts +21 -0
  112. package/dist/session/redis-store.d.ts +31 -0
  113. package/dist/streaming/index.d.ts +3 -0
  114. package/dist/streaming/sse-handler.d.ts +138 -0
  115. package/dist/streaming/stream-handler.d.ts +114 -0
  116. package/dist/testing/auth-testing.d.ts +156 -0
  117. package/dist/testing/file-upload-testing.d.ts +190 -0
  118. package/dist/testing/index.d.ts +10 -0
  119. package/dist/testing/middleware-testing.d.ts +138 -0
  120. package/dist/testing/model-binding-testing.d.ts +186 -0
  121. package/dist/testing/performance-testing.d.ts +235 -0
  122. package/dist/testing/test-client.d.ts +117 -0
  123. package/dist/testing/test-request.d.ts +85 -0
  124. package/dist/testing/test-response.d.ts +90 -0
  125. package/dist/testing/types.d.ts +207 -0
  126. package/dist/testing/websocket-testing.d.ts +227 -0
  127. package/dist/types/controller-types.d.ts +208 -0
  128. package/dist/types/core.d.ts +543 -0
  129. package/dist/types/middleware-types.d.ts +227 -0
  130. package/dist/types/request-response-augmentation.d.ts +261 -0
  131. package/dist/types/route-inference.d.ts +168 -0
  132. package/dist/types.d.ts +1794 -0
  133. package/dist/url.d.ts +56 -0
  134. package/dist/utils/index.d.ts +1 -0
  135. package/dist/utils/query-preservation.d.ts +48 -0
  136. package/dist/utils.d.ts +69 -0
  137. package/dist/validation/validator.d.ts +140 -0
  138. package/dist/websocket/clustering.d.ts +185 -0
  139. package/package.json +45 -44
  140. package/src/auth.ts +469 -0
  141. package/src/cache/lru-cache.ts +457 -0
  142. package/src/cache/middleware-memoization.ts +531 -0
  143. package/src/cache/route-cache-warmer.ts +486 -0
  144. package/src/cache/sqlite-cache.ts +783 -0
  145. package/src/cache/streaming-cache.ts +572 -0
  146. package/src/cli/colors.ts +29 -0
  147. package/src/cli/index.ts +287 -0
  148. package/src/cli/middleware.ts +291 -0
  149. package/src/cli/openapi.ts +407 -0
  150. package/src/cli/router.ts +188 -0
  151. package/src/cli/routes.ts +265 -0
  152. package/src/cli/utils.ts +531 -0
  153. package/src/cli.ts +5 -0
  154. package/src/config.ts +322 -0
  155. package/src/container/container.ts +740 -0
  156. package/src/container/contextual-binding.ts +603 -0
  157. package/src/container/decorators.ts +359 -0
  158. package/src/container/service-provider.ts +596 -0
  159. package/src/development/hot-reload.ts +673 -0
  160. package/src/development/index.ts +499 -0
  161. package/src/development/performance-profiler.ts +717 -0
  162. package/src/development/route-debugger.ts +527 -0
  163. package/src/development/route-inspector.ts +749 -0
  164. package/src/development/typescript-utilities.ts +682 -0
  165. package/src/docs.ts +397 -0
  166. package/src/errors/circuit-breaker.ts +732 -0
  167. package/src/errors/error-handler.ts +569 -0
  168. package/src/errors/error-reporting.ts +672 -0
  169. package/src/errors/exceptions.ts +536 -0
  170. package/src/errors/graceful-degradation.ts +621 -0
  171. package/src/errors/index.ts +21 -0
  172. package/src/errors/router-errors.ts +632 -0
  173. package/src/file-serving/static-files.ts +581 -0
  174. package/src/index.ts +14 -0
  175. package/src/middleware/auth.ts +220 -0
  176. package/src/middleware/content_security_policy.ts +215 -0
  177. package/src/middleware/cors.ts +74 -0
  178. package/src/middleware/csrf.ts +108 -0
  179. package/src/middleware/ddos_protection.ts +255 -0
  180. package/src/middleware/file_security.ts +191 -0
  181. package/src/middleware/file_upload.ts +275 -0
  182. package/src/middleware/helmet.ts +268 -0
  183. package/src/middleware/index.ts +117 -0
  184. package/src/middleware/input_validation.ts +449 -0
  185. package/src/middleware/json_body.ts +37 -0
  186. package/src/middleware/performance_alerting.ts +538 -0
  187. package/src/middleware/performance_dashboard.ts +661 -0
  188. package/src/middleware/performance_monitor.ts +943 -0
  189. package/src/middleware/pipeline.ts +489 -0
  190. package/src/middleware/rate_limit.ts +245 -0
  191. package/src/middleware/request_id.ts +36 -0
  192. package/src/middleware/request_signing.ts +636 -0
  193. package/src/middleware/request_tracer.ts +636 -0
  194. package/src/middleware/response_cache.ts +743 -0
  195. package/src/middleware/security.ts +482 -0
  196. package/src/middleware/security_suite.ts +257 -0
  197. package/src/middleware/session.ts +91 -0
  198. package/src/model-binding/index.ts +18 -0
  199. package/src/model-binding/model-middleware.ts +425 -0
  200. package/src/model-binding/model-registry.ts +550 -0
  201. package/src/model-binding.ts +370 -0
  202. package/src/model-resolver-factory.ts +106 -0
  203. package/src/observability/correlation.ts +691 -0
  204. package/src/observability/health-checks.ts +729 -0
  205. package/src/observability/index.ts +184 -0
  206. package/src/observability/integration.ts +548 -0
  207. package/src/observability/metrics.ts +753 -0
  208. package/src/observability/tracing.ts +638 -0
  209. package/src/optimization/bun-utilities.ts +778 -0
  210. package/src/query-builder-integration.ts +137 -0
  211. package/src/request/context.ts +62 -0
  212. package/src/request/enhanced-request.ts +857 -0
  213. package/src/request/macros.ts +688 -0
  214. package/src/response/macros.ts +665 -0
  215. package/src/response/response-factory.ts +596 -0
  216. package/src/router/api-routes.ts +243 -0
  217. package/src/router/file-based-routing.ts +690 -0
  218. package/src/router/file-streaming.ts +383 -0
  219. package/src/router/fluent-router.ts +927 -0
  220. package/src/router/fluent-routing.ts +797 -0
  221. package/src/router/group-organization.ts +213 -0
  222. package/src/router/handler-resolver.ts +291 -0
  223. package/src/router/http-methods.ts +377 -0
  224. package/src/router/index.ts +187 -0
  225. package/src/router/middleware-groups.ts +222 -0
  226. package/src/router/middleware-integration.ts +399 -0
  227. package/src/router/middleware.ts +231 -0
  228. package/src/router/model-binding.ts +215 -0
  229. package/src/router/optimized-route-matching.ts +253 -0
  230. package/src/router/route-building.ts +221 -0
  231. package/src/router/route-compiler.ts +702 -0
  232. package/src/router/route-matching.ts +349 -0
  233. package/src/router/route-trie.ts +464 -0
  234. package/src/router/router.ts +1604 -0
  235. package/src/router/server.ts +462 -0
  236. package/src/router/validation-integration.ts +443 -0
  237. package/src/router/view-rendering.ts +233 -0
  238. package/src/router/websocket.ts +100 -0
  239. package/src/routing/route-caching.ts +402 -0
  240. package/src/routing/route-throttling.ts +469 -0
  241. package/src/routing/subdomain-routing.ts +492 -0
  242. package/src/session/database-store.ts +109 -0
  243. package/src/session/file-store.ts +148 -0
  244. package/src/session/index.ts +244 -0
  245. package/src/session/memory-store.ts +88 -0
  246. package/src/session/redis-store.ts +93 -0
  247. package/src/streaming/index.ts +17 -0
  248. package/src/streaming/sse-handler.ts +482 -0
  249. package/src/streaming/stream-handler.ts +552 -0
  250. package/src/testing/auth-testing.ts +446 -0
  251. package/src/testing/file-upload-testing.ts +543 -0
  252. package/src/testing/index.ts +10 -0
  253. package/src/testing/middleware-testing.ts +322 -0
  254. package/src/testing/model-binding-testing.ts +645 -0
  255. package/src/testing/performance-testing.ts +738 -0
  256. package/src/testing/test-client.ts +310 -0
  257. package/src/testing/test-request.ts +315 -0
  258. package/src/testing/test-response.ts +332 -0
  259. package/src/testing/types.ts +224 -0
  260. package/src/testing/websocket-testing.ts +590 -0
  261. package/src/types/controller-types.ts +385 -0
  262. package/src/types/core.ts +683 -0
  263. package/src/types/middleware-types.ts +419 -0
  264. package/src/types/request-response-augmentation.ts +489 -0
  265. package/src/types/route-inference.ts +357 -0
  266. package/src/types.ts +2067 -0
  267. package/src/url.ts +126 -0
  268. package/src/utils/index.ts +1 -0
  269. package/src/utils/query-preservation.ts +201 -0
  270. package/src/utils.ts +327 -0
  271. package/src/validation/validator.ts +685 -0
  272. package/src/websocket/clustering.ts +762 -0
  273. package/CHANGELOG.md +0 -770
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Observability & Monitoring - Custom Metrics Collection with Prometheus Format
3
+ *
4
+ * Enterprise-grade metrics collection and Prometheus-compatible exposition
5
+ */
6
+ import type { EnhancedRequest } from '../types';
7
+ export interface MetricConfig {
8
+ prefix?: string;
9
+ labels?: Record<string, string>;
10
+ enableDefaultMetrics?: boolean;
11
+ collectInterval?: number;
12
+ maxHistogramBuckets?: number;
13
+ maxSummaryAge?: number;
14
+ }
15
+ export interface MetricLabels {
16
+ [key: string]: string;
17
+ }
18
+ export interface HistogramBucket {
19
+ le: number;
20
+ count: number;
21
+ }
22
+ export interface SummaryQuantile {
23
+ quantile: number;
24
+ value: number;
25
+ }
26
+ /**
27
+ * Base metric interface
28
+ */
29
+ export declare abstract class Metric {
30
+ readonly name: string;
31
+ readonly help: string;
32
+ readonly type: string;
33
+ readonly labels: MetricLabels;
34
+ constructor(name: string, help: string, type: string, labels?: MetricLabels);
35
+ abstract getValue(): number | string;
36
+ abstract reset(): void;
37
+ abstract toPrometheusString(): string;
38
+ }
39
+ /**
40
+ * Counter metric - monotonically increasing value
41
+ */
42
+ export declare class Counter extends Metric {
43
+ private value;
44
+ private labeledCounters;
45
+ constructor(name: string, help: string, labels?: MetricLabels);
46
+ inc(value?: number, labels?: MetricLabels): void;
47
+ getValue(): number;
48
+ reset(): void;
49
+ private getLabelKey;
50
+ toPrometheusString(): string;
51
+ }
52
+ /**
53
+ * Gauge metric - can go up and down
54
+ */
55
+ export declare class Gauge extends Metric {
56
+ private value;
57
+ private labeledGauges;
58
+ constructor(name: string, help: string, labels?: MetricLabels);
59
+ set(value: number, labels?: MetricLabels): void;
60
+ inc(value?: number, labels?: MetricLabels): void;
61
+ dec(value?: number, labels?: MetricLabels): void;
62
+ getValue(): number;
63
+ reset(): void;
64
+ private getLabelKey;
65
+ toPrometheusString(): string;
66
+ }
67
+ /**
68
+ * Histogram metric - tracks distribution of values
69
+ */
70
+ export declare class Histogram extends Metric {
71
+ private buckets;
72
+ private sum;
73
+ private count;
74
+ private readonly bucketBounds;
75
+ constructor(name: string, help: string, buckets?: number[], labels?: MetricLabels);
76
+ observe(value: number, _labels?: MetricLabels): void;
77
+ getValue(): number;
78
+ getCount(): number;
79
+ getSum(): number;
80
+ getBuckets(): HistogramBucket[];
81
+ reset(): void;
82
+ toPrometheusString(): string;
83
+ }
84
+ /**
85
+ * Summary metric - tracks quantiles over sliding time window
86
+ */
87
+ export declare class Summary extends Metric {
88
+ private observations;
89
+ private sum;
90
+ private count;
91
+ private readonly quantiles;
92
+ private readonly maxAge;
93
+ constructor(name: string, help: string, quantiles?: number[], maxAge?: number, // 10 minutes
94
+ labels?: MetricLabels);
95
+ observe(value: number, _labels?: MetricLabels): void;
96
+ getValue(): number;
97
+ getCount(): number;
98
+ getSum(): number;
99
+ getQuantiles(): SummaryQuantile[];
100
+ private cleanOldObservations;
101
+ reset(): void;
102
+ toPrometheusString(): string;
103
+ }
104
+ /**
105
+ * Metrics registry
106
+ */
107
+ export declare class MetricsRegistry {
108
+ private metrics;
109
+ private config;
110
+ private defaultMetrics;
111
+ constructor(config?: MetricConfig);
112
+ /**
113
+ * Register a metric
114
+ */
115
+ register(metric: Metric): void;
116
+ /**
117
+ * Get a metric by name
118
+ */
119
+ get(name: string): Metric | undefined;
120
+ /**
121
+ * Create and register a counter
122
+ */
123
+ createCounter(name: string, help: string, labels?: MetricLabels): Counter;
124
+ /**
125
+ * Create and register a gauge
126
+ */
127
+ createGauge(name: string, help: string, labels?: MetricLabels): Gauge;
128
+ /**
129
+ * Create and register a histogram
130
+ */
131
+ createHistogram(name: string, help: string, buckets?: number[], labels?: MetricLabels): Histogram;
132
+ /**
133
+ * Create and register a summary
134
+ */
135
+ createSummary(name: string, help: string, quantiles?: number[], maxAge?: number, labels?: MetricLabels): Summary;
136
+ /**
137
+ * Register default system metrics
138
+ */
139
+ private registerDefaultMetrics;
140
+ /**
141
+ * Collect system metrics
142
+ */
143
+ private collectSystemMetrics;
144
+ /**
145
+ * Get all metrics in Prometheus format
146
+ */
147
+ toPrometheusString(): string;
148
+ /**
149
+ * Get metrics as JSON
150
+ */
151
+ toJSON(): Record<string, any>;
152
+ /**
153
+ * Reset all metrics
154
+ */
155
+ reset(): void;
156
+ /**
157
+ * Get metric names
158
+ */
159
+ getMetricNames(): string[];
160
+ /**
161
+ * Remove a metric
162
+ */
163
+ unregister(name: string): boolean;
164
+ /**
165
+ * Clear all metrics
166
+ */
167
+ clear(): void;
168
+ }
169
+ /**
170
+ * Initialize global metrics registry
171
+ */
172
+ export declare function initializeMetrics(config?: MetricConfig): MetricsRegistry;
173
+ /**
174
+ * Get global metrics registry
175
+ */
176
+ export declare function getMetricsRegistry(): MetricsRegistry | null;
177
+ /**
178
+ * Metrics middleware factory
179
+ */
180
+ export declare function createMetricsMiddleware(_config?: Partial<MetricConfig>): (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
181
+ /**
182
+ * Metrics endpoint handler
183
+ */
184
+ export declare function createMetricsHandler(): (req: EnhancedRequest) => Promise<Response>;
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Observability & Monitoring - Distributed Tracing with OpenTelemetry
3
+ *
4
+ * Enterprise-grade distributed tracing for request correlation and performance monitoring
5
+ */
6
+ import type { EnhancedRequest } from '../types';
7
+ export interface TraceConfig {
8
+ serviceName: string;
9
+ serviceVersion?: string;
10
+ environment?: string;
11
+ endpoint?: string;
12
+ headers?: Record<string, string>;
13
+ sampleRate?: number;
14
+ enableConsoleExporter?: boolean;
15
+ enableJaegerExporter?: boolean;
16
+ enableOTLPExporter?: boolean;
17
+ jaegerEndpoint?: string;
18
+ otlpEndpoint?: string;
19
+ attributes?: Record<string, any>;
20
+ }
21
+ export interface SpanContext {
22
+ traceId: string;
23
+ spanId: string;
24
+ parentSpanId?: string;
25
+ flags: number;
26
+ baggage?: Record<string, string>;
27
+ }
28
+ export interface Span {
29
+ traceId: string;
30
+ spanId: string;
31
+ parentSpanId?: string;
32
+ operationName: string;
33
+ startTime: number;
34
+ endTime?: number;
35
+ duration?: number;
36
+ tags: Record<string, any>;
37
+ logs: Array<{
38
+ timestamp: number;
39
+ fields: Record<string, any>;
40
+ }>;
41
+ status: 'ok' | 'error' | 'timeout';
42
+ statusMessage?: string;
43
+ }
44
+ export interface TraceData {
45
+ traceId: string;
46
+ spans: Span[];
47
+ startTime: number;
48
+ endTime?: number;
49
+ duration?: number;
50
+ serviceName: string;
51
+ environment: string;
52
+ }
53
+ /**
54
+ * Distributed tracing implementation
55
+ */
56
+ export declare class DistributedTracer {
57
+ private config;
58
+ private activeSpans;
59
+ private traces;
60
+ private spanCounter;
61
+ constructor(config: TraceConfig);
62
+ /**
63
+ * Generate trace ID
64
+ */
65
+ generateTraceId(): string;
66
+ /**
67
+ * Generate span ID
68
+ */
69
+ generateSpanId(): string;
70
+ /**
71
+ * Start a new trace
72
+ */
73
+ startTrace(operationName: string, parentContext?: SpanContext): Span;
74
+ /**
75
+ * Start a child span
76
+ */
77
+ startChildSpan(operationName: string, parentSpan: Span): Span;
78
+ /**
79
+ * Finish a span
80
+ */
81
+ finishSpan(span: Span): void;
82
+ /**
83
+ * Add tags to span
84
+ */
85
+ setSpanTags(span: Span, tags: Record<string, any>): void;
86
+ /**
87
+ * Add log to span
88
+ */
89
+ logToSpan(span: Span, fields: Record<string, any>): void;
90
+ /**
91
+ * Set span status
92
+ */
93
+ setSpanStatus(span: Span, status: 'ok' | 'error' | 'timeout', message?: string): void;
94
+ /**
95
+ * Extract trace context from headers
96
+ */
97
+ extractTraceContext(headers: Headers): SpanContext | null;
98
+ /**
99
+ * Inject trace context into headers
100
+ */
101
+ injectTraceContext(span: Span, headers: Record<string, string>): void;
102
+ /**
103
+ * Parse W3C traceparent header
104
+ */
105
+ private parseTraceParent;
106
+ /**
107
+ * Parse Jaeger trace header
108
+ */
109
+ private parseJaegerTrace;
110
+ /**
111
+ * Parse B3 trace headers
112
+ */
113
+ private parseB3Trace;
114
+ /**
115
+ * Check if span should be sampled
116
+ */
117
+ private shouldSample;
118
+ /**
119
+ * Export span to configured exporters
120
+ */
121
+ private exportSpan;
122
+ /**
123
+ * Export to console
124
+ */
125
+ private exportToConsole;
126
+ /**
127
+ * Export to Jaeger (simplified)
128
+ */
129
+ private exportToJaeger;
130
+ /**
131
+ * Export to OTLP endpoint
132
+ */
133
+ private exportToOTLP;
134
+ /**
135
+ * Convert hex string to bytes
136
+ */
137
+ private hexToBytes;
138
+ /**
139
+ * Get active spans
140
+ */
141
+ getActiveSpans(): Span[];
142
+ /**
143
+ * Get trace by ID
144
+ */
145
+ getTrace(traceId: string): TraceData | undefined;
146
+ /**
147
+ * Get all traces
148
+ */
149
+ getAllTraces(): TraceData[];
150
+ /**
151
+ * Clear old traces (cleanup)
152
+ */
153
+ cleanup(maxAge?: number): void;
154
+ }
155
+ /**
156
+ * Initialize global tracer
157
+ */
158
+ export declare function initializeTracer(config: TraceConfig): DistributedTracer;
159
+ /**
160
+ * Get global tracer
161
+ */
162
+ export declare function getTracer(): DistributedTracer | null;
163
+ /**
164
+ * Tracing middleware factory
165
+ */
166
+ export declare function createTracingMiddleware(_config?: Partial<TraceConfig>): (req: EnhancedRequest, next: () => Promise<Response>) => Promise<Response>;
167
+ /**
168
+ * Trace helper functions
169
+ */
170
+ export declare const TraceHelpers: {
171
+ /**
172
+ * Start a span within a request context
173
+ */
174
+ startSpan: (req: EnhancedRequest, operationName: string) => Span | null;
175
+ /**
176
+ * Finish a span
177
+ */
178
+ finishSpan: (req: EnhancedRequest, span: Span) => void;
179
+ /**
180
+ * Add tags to current span
181
+ */
182
+ addTags: (req: EnhancedRequest, tags: Record<string, any>) => void;
183
+ /**
184
+ * Log to current span
185
+ */
186
+ log: (req: EnhancedRequest, fields: Record<string, any>) => void;
187
+ };
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Bun Runtime Optimization Utilities
3
+ *
4
+ * Generic optimization utilities leveraging Bun's runtime capabilities
5
+ */
6
+ import { Buffer } from 'node:buffer';
7
+ export interface BunOptimizationConfig {
8
+ enableJIT?: boolean;
9
+ enableGC?: boolean;
10
+ memoryLimit?: number;
11
+ cpuLimit?: number;
12
+ enableProfiling?: boolean;
13
+ enableTracing?: boolean;
14
+ }
15
+ export interface PerformanceMetrics {
16
+ memoryUsage: {
17
+ rss: number;
18
+ heapUsed: number;
19
+ heapTotal: number;
20
+ external: number;
21
+ arrayBuffers: number;
22
+ };
23
+ cpuUsage: {
24
+ user: number;
25
+ system: number;
26
+ };
27
+ eventLoop: {
28
+ delay: number;
29
+ utilization: number;
30
+ };
31
+ gc: {
32
+ collections: number;
33
+ duration: number;
34
+ freed: number;
35
+ };
36
+ bunSpecific: {
37
+ jitCompilations: number;
38
+ nativeCallsOptimized: number;
39
+ fileSystemCacheHits: number;
40
+ };
41
+ }
42
+ /**
43
+ * Bun runtime optimizer
44
+ */
45
+ export declare class BunOptimizer {
46
+ private config;
47
+ private metrics;
48
+ private gcObserver?;
49
+ private performanceObserver?;
50
+ constructor(config?: BunOptimizationConfig);
51
+ /**
52
+ * Initialize performance metrics
53
+ */
54
+ private initializeMetrics;
55
+ /**
56
+ * Setup Bun-specific optimizations
57
+ */
58
+ private setupOptimizations;
59
+ /**
60
+ * Enable JIT compilation optimizations
61
+ */
62
+ private enableJITOptimizations;
63
+ /**
64
+ * Warm up common code paths for JIT
65
+ */
66
+ private warmupCodePaths;
67
+ /**
68
+ * Enable native call optimizations
69
+ */
70
+ private enableNativeOptimizations;
71
+ /**
72
+ * Configure garbage collection
73
+ */
74
+ private configureGarbageCollection;
75
+ /**
76
+ * Set memory limits
77
+ */
78
+ private setMemoryLimits;
79
+ /**
80
+ * Setup performance monitoring
81
+ */
82
+ private setupMonitoring;
83
+ /**
84
+ * Get current performance metrics
85
+ */
86
+ getMetrics(): PerformanceMetrics;
87
+ /**
88
+ * Optimize specific function
89
+ */
90
+ optimizeFunction<T extends (...args: any[]) => any>(fn: T, options?: {
91
+ memoize?: boolean;
92
+ warmup?: boolean;
93
+ profile?: boolean;
94
+ }): T;
95
+ /**
96
+ * Create optimized buffer operations
97
+ */
98
+ createBufferOptimizer(): {
99
+ /**
100
+ * Get buffer from pool or create new one
101
+ */
102
+ getBuffer: (size: number) => Buffer;
103
+ /**
104
+ * Return buffer to pool
105
+ */
106
+ returnBuffer: (buffer: Buffer) => void;
107
+ /**
108
+ * Clear buffer pools
109
+ */
110
+ clearPools: () => void;
111
+ /**
112
+ * Get pool statistics
113
+ */
114
+ getStats: () => Record<number, number>;
115
+ };
116
+ /**
117
+ * Create optimized JSON operations
118
+ */
119
+ createJSONOptimizer(): {
120
+ /**
121
+ * Optimized JSON parse with caching
122
+ */
123
+ parse: (text: string) => any;
124
+ /**
125
+ * Optimized JSON stringify with caching
126
+ */
127
+ stringify: (value: any) => string;
128
+ /**
129
+ * Clear JSON caches
130
+ */
131
+ clearCaches: () => void;
132
+ /**
133
+ * Get cache statistics
134
+ */
135
+ getStats: () => {
136
+ parseCache: number;
137
+ stringifyCache: number;
138
+ };
139
+ };
140
+ /**
141
+ * Create worker pool for CPU-intensive tasks
142
+ */
143
+ createWorkerPool(workerScript: string, poolSize?: number): {
144
+ /**
145
+ * Execute task in worker
146
+ */
147
+ execute: <T>(data: any) => Promise<T>;
148
+ /**
149
+ * Terminate all workers
150
+ */
151
+ terminate: () => void;
152
+ /**
153
+ * Get pool statistics
154
+ */
155
+ getStats: () => {
156
+ poolSize: number;
157
+ queueSize: number;
158
+ activeWorkers: number;
159
+ };
160
+ };
161
+ /**
162
+ * Generate performance report
163
+ */
164
+ generateReport(): string;
165
+ /**
166
+ * Cleanup resources
167
+ */
168
+ cleanup(): void;
169
+ }
170
+ /**
171
+ * Bun optimization utilities
172
+ */
173
+ export declare const BunUtils: {
174
+ /**
175
+ * Check if running in Bun runtime
176
+ */
177
+ isBun: () => boolean;
178
+ /**
179
+ * Get Bun version
180
+ */
181
+ getBunVersion: () => string;
182
+ /**
183
+ * Optimize async function with Bun-specific features
184
+ */
185
+ optimizeAsync: <T extends (...args: any[]) => Promise<any>>(fn: T) => T;
186
+ /**
187
+ * Create optimized stream processor
188
+ */
189
+ createStreamProcessor: () => {
190
+ /**
191
+ * Process readable stream with Bun optimizations
192
+ */
193
+ processStream: (stream: ReadableStream) => Promise<Uint8Array>;
194
+ /**
195
+ * Create optimized transform stream
196
+ */
197
+ createTransformStream: <T, U>(transformer: (chunk: T) => U | Promise<U>) => TransformStream<T, U>;
198
+ };
199
+ };
200
+ /**
201
+ * Bun optimization factory functions
202
+ */
203
+ export declare const BunOptimizationFactory: {
204
+ /**
205
+ * Create development optimizer
206
+ */
207
+ createDevelopment: () => BunOptimizer;
208
+ /**
209
+ * Create production optimizer
210
+ */
211
+ createProduction: () => BunOptimizer;
212
+ /**
213
+ * Create testing optimizer
214
+ */
215
+ createTesting: () => BunOptimizer;
216
+ };
217
+ /**
218
+ * Initialize global Bun optimizer
219
+ */
220
+ export declare function initializeBunOptimizer(config?: BunOptimizationConfig): BunOptimizer;
221
+ /**
222
+ * Get global Bun optimizer
223
+ */
224
+ export declare function getBunOptimizer(): BunOptimizer | null;
@@ -0,0 +1,36 @@
1
+ import type { Model, QueryBuilderModelResolver } from './model-binding';
2
+ /**
3
+ * Integration layer for bun-query-builder with model binding
4
+ */
5
+ export declare class QueryBuilderIntegration {
6
+ private queryBuilder;
7
+ private resolvers;
8
+ constructor(queryBuilder: any);
9
+ /**
10
+ * Register a model resolver and inject the query builder
11
+ */
12
+ registerResolver<TModel extends Model>(name: string, resolver: QueryBuilderModelResolver<TModel>): void;
13
+ /**
14
+ * Get a registered resolver
15
+ */
16
+ getResolver<TModel extends Model>(name: string): QueryBuilderModelResolver<TModel> | undefined;
17
+ /**
18
+ * Resolve a model by name and ID
19
+ */
20
+ resolveModel<TModel extends Model>(name: string, id: string | number, keyName?: string, context?: Record<string, Model>): Promise<TModel | null>;
21
+ /**
22
+ * Resolve a model or throw an error
23
+ */
24
+ resolveModelOrFail<TModel extends Model>(name: string, id: string | number, keyName?: string, context?: Record<string, Model>): Promise<TModel>;
25
+ }
26
+ /**
27
+ * Create a query builder integration instance
28
+ */
29
+ export declare function createQueryBuilderIntegration(queryBuilder: any): QueryBuilderIntegration;
30
+ /**
31
+ * Helper to create a basic model resolver using the query builder
32
+ */
33
+ export declare function createBasicResolver<TModel extends Model>(tableName: string, options?: {
34
+ keyName?: string;
35
+ transform?: (row: any) => TModel;
36
+ }): QueryBuilderModelResolver<TModel>;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Request Context
3
+ *
4
+ * AsyncLocalStorage-backed access to the current request. The Router wires
5
+ * `runWithRequest()` automatically around handler/middleware invocation and
6
+ * calls `setCurrentRequest()` once the request has been enhanced with route
7
+ * params. User code reaches the active request via `request()` or
8
+ * `getCurrentRequest()` without having to thread it through call stacks.
9
+ */
10
+ import type { EnhancedRequest } from '../types';
11
+ /**
12
+ * Run `fn` inside an AsyncLocalStorage scope where `request()` and
13
+ * `getCurrentRequest()` resolve to `initial`. The Router calls this around
14
+ * each request automatically.
15
+ */
16
+ export declare function runWithRequest<T>(initial: EnhancedRequest | Request, fn: () => T | Promise<T>): T | Promise<T>;
17
+ /**
18
+ * Update the request stored in the current context. The Router calls this
19
+ * after enhancing the request with matched route params, so subsequent
20
+ * `request()` calls see the enhanced object.
21
+ */
22
+ export declare function setCurrentRequest(req: EnhancedRequest): void;
23
+ /**
24
+ * Returns the active request, or `undefined` when called outside a request
25
+ * scope. Prefer `request()` when the request is required.
26
+ */
27
+ export declare function getCurrentRequest(): EnhancedRequest | undefined;
28
+ /**
29
+ * Returns the active request. Throws when called outside a request scope —
30
+ * typically that means it was called before the Router established context
31
+ * (e.g. during module initialization) or inside a fire-and-forget callback
32
+ * that escaped the AsyncLocalStorage frame.
33
+ */
34
+ export declare function request(): EnhancedRequest;