@stacksjs/bun-router 0.0.5 → 0.0.7
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/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/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 +1 -1
- 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 +375 -227
- 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 +3 -2
- 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 +1524 -0
- package/src/router/server.ts +429 -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
|
@@ -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;
|