@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,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Embedded Caching
|
|
3
|
+
*
|
|
4
|
+
* High-performance embedded caching using Bun's SQLite integration
|
|
5
|
+
*/
|
|
6
|
+
export interface SQLiteCacheConfig {
|
|
7
|
+
filename?: string;
|
|
8
|
+
memory?: boolean;
|
|
9
|
+
wal?: boolean;
|
|
10
|
+
synchronous?: 'OFF' | 'NORMAL' | 'FULL';
|
|
11
|
+
journalMode?: 'DELETE' | 'TRUNCATE' | 'PERSIST' | 'MEMORY' | 'WAL' | 'OFF';
|
|
12
|
+
cacheSize?: number;
|
|
13
|
+
pageSize?: number;
|
|
14
|
+
maxSize?: number;
|
|
15
|
+
defaultTTL?: number;
|
|
16
|
+
cleanupInterval?: number;
|
|
17
|
+
compression?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface CacheEntry {
|
|
20
|
+
key: string;
|
|
21
|
+
value: string;
|
|
22
|
+
expires: number;
|
|
23
|
+
created: number;
|
|
24
|
+
accessed: number;
|
|
25
|
+
hits: number;
|
|
26
|
+
size: number;
|
|
27
|
+
compressed: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface CacheStats {
|
|
30
|
+
totalEntries: number;
|
|
31
|
+
totalSize: number;
|
|
32
|
+
hitRate: number;
|
|
33
|
+
missRate: number;
|
|
34
|
+
evictions: number;
|
|
35
|
+
compressionRatio: number;
|
|
36
|
+
averageAccessTime: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* High-performance SQLite-based cache
|
|
40
|
+
*/
|
|
41
|
+
export declare class SQLiteCache {
|
|
42
|
+
private db;
|
|
43
|
+
private config;
|
|
44
|
+
private stats;
|
|
45
|
+
private cleanupTimer?;
|
|
46
|
+
private preparedStatements;
|
|
47
|
+
constructor(config?: SQLiteCacheConfig);
|
|
48
|
+
/**
|
|
49
|
+
* Get value from cache
|
|
50
|
+
*/
|
|
51
|
+
get<T = any>(key: string): T | null;
|
|
52
|
+
/**
|
|
53
|
+
* Set value in cache
|
|
54
|
+
*/
|
|
55
|
+
set<T = any>(key: string, value: T, ttl?: number): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Delete value from cache
|
|
58
|
+
*/
|
|
59
|
+
delete(key: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Check if key exists in cache
|
|
62
|
+
*/
|
|
63
|
+
has(key: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Clear all cache entries
|
|
66
|
+
*/
|
|
67
|
+
clear(): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Get cache statistics
|
|
70
|
+
*/
|
|
71
|
+
getStats(): CacheStats;
|
|
72
|
+
/**
|
|
73
|
+
* Get all keys matching pattern
|
|
74
|
+
*/
|
|
75
|
+
keys(pattern?: string): string[];
|
|
76
|
+
/**
|
|
77
|
+
* Get multiple values at once
|
|
78
|
+
*/
|
|
79
|
+
mget<T = any>(keys: string[]): Record<string, T | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Set multiple values at once
|
|
82
|
+
*/
|
|
83
|
+
mset<T = any>(entries: Record<string, T>, ttl?: number): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Increment numeric value
|
|
86
|
+
*/
|
|
87
|
+
increment(key: string, delta?: number, ttl?: number): number | null;
|
|
88
|
+
/**
|
|
89
|
+
* Decrement numeric value
|
|
90
|
+
*/
|
|
91
|
+
decrement(key: string, delta?: number, ttl?: number): number | null;
|
|
92
|
+
/**
|
|
93
|
+
* Set value only if key doesn't exist
|
|
94
|
+
*/
|
|
95
|
+
setnx<T = any>(key: string, value: T, ttl?: number): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Get and delete value atomically
|
|
98
|
+
*/
|
|
99
|
+
getdel<T = any>(key: string): T | null;
|
|
100
|
+
/**
|
|
101
|
+
* Update TTL for existing key
|
|
102
|
+
*/
|
|
103
|
+
expire(key: string, ttl: number): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Get TTL for key
|
|
106
|
+
*/
|
|
107
|
+
ttl(key: string): number;
|
|
108
|
+
/**
|
|
109
|
+
* Cleanup expired entries
|
|
110
|
+
*/
|
|
111
|
+
cleanup(): number;
|
|
112
|
+
/**
|
|
113
|
+
* Close database connection
|
|
114
|
+
*/
|
|
115
|
+
close(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Initialize SQLite database
|
|
118
|
+
*/
|
|
119
|
+
private initializeDatabase;
|
|
120
|
+
/**
|
|
121
|
+
* Prepare SQL statements
|
|
122
|
+
*/
|
|
123
|
+
private prepareStatements;
|
|
124
|
+
/**
|
|
125
|
+
* Start cleanup timer
|
|
126
|
+
*/
|
|
127
|
+
private startCleanupTimer;
|
|
128
|
+
/**
|
|
129
|
+
* Evict entries if cache is too large
|
|
130
|
+
*/
|
|
131
|
+
private evictIfNeeded;
|
|
132
|
+
/**
|
|
133
|
+
* Update cache statistics
|
|
134
|
+
*/
|
|
135
|
+
private updateCacheStats;
|
|
136
|
+
/**
|
|
137
|
+
* Update operation statistics
|
|
138
|
+
*/
|
|
139
|
+
private updateStats;
|
|
140
|
+
/**
|
|
141
|
+
* Compress string value
|
|
142
|
+
*/
|
|
143
|
+
private compress;
|
|
144
|
+
/**
|
|
145
|
+
* Decompress string value
|
|
146
|
+
*/
|
|
147
|
+
private decompress;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* SQLite cache factory
|
|
151
|
+
*/
|
|
152
|
+
export declare class SQLiteCacheFactory {
|
|
153
|
+
/**
|
|
154
|
+
* Create in-memory cache
|
|
155
|
+
*/
|
|
156
|
+
static createMemoryCache(config?: Partial<SQLiteCacheConfig>): SQLiteCache;
|
|
157
|
+
/**
|
|
158
|
+
* Create persistent cache
|
|
159
|
+
*/
|
|
160
|
+
static createPersistentCache(filename: string, config?: Partial<SQLiteCacheConfig>): SQLiteCache;
|
|
161
|
+
/**
|
|
162
|
+
* Create high-performance cache
|
|
163
|
+
*/
|
|
164
|
+
static createHighPerformanceCache(config?: Partial<SQLiteCacheConfig>): SQLiteCache;
|
|
165
|
+
/**
|
|
166
|
+
* Create development cache with debugging
|
|
167
|
+
*/
|
|
168
|
+
static createDevelopmentCache(config?: Partial<SQLiteCacheConfig>): SQLiteCache;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Cache middleware factory
|
|
172
|
+
*/
|
|
173
|
+
export declare function createSQLiteCacheMiddleware(cache: SQLiteCache, options?: {
|
|
174
|
+
keyGenerator?: (request: Request) => string;
|
|
175
|
+
ttl?: number;
|
|
176
|
+
skipMethods?: string[];
|
|
177
|
+
skipPaths?: string[];
|
|
178
|
+
skipHeaders?: string[];
|
|
179
|
+
}): (request: Request, next: () => Promise<Response>) => Promise<Response>;
|
|
180
|
+
/**
|
|
181
|
+
* SQLite cache helpers
|
|
182
|
+
*/
|
|
183
|
+
export declare const SQLiteCacheHelpers: {
|
|
184
|
+
/**
|
|
185
|
+
* Create session cache
|
|
186
|
+
*/
|
|
187
|
+
createSessionCache: (cache: SQLiteCache) => {
|
|
188
|
+
get: (sessionId: string) => any;
|
|
189
|
+
set: (sessionId: string, data: any, ttl?: number) => void;
|
|
190
|
+
delete: (sessionId: string) => boolean;
|
|
191
|
+
touch: (sessionId: string, ttl?: number) => boolean;
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Create rate limiting cache
|
|
195
|
+
*/
|
|
196
|
+
createRateLimitCache: (cache: SQLiteCache) => {
|
|
197
|
+
increment: (key: string, window?: number) => number;
|
|
198
|
+
get: (key: string) => number;
|
|
199
|
+
reset: (key: string) => boolean;
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Create query result cache
|
|
203
|
+
*/
|
|
204
|
+
createQueryCache: (cache: SQLiteCache) => {
|
|
205
|
+
get: (query: string, params: any[]) => any;
|
|
206
|
+
set: (query: string, params: any[], result: any, ttl?: number) => void;
|
|
207
|
+
invalidate: (pattern: string) => void;
|
|
208
|
+
};
|
|
209
|
+
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { LRUCacheOptions } from './lru-cache';
|
|
2
|
+
/**
|
|
3
|
+
* Response streaming cache for large responses
|
|
4
|
+
* Optimized for handling large payloads with memory-efficient streaming
|
|
5
|
+
*/
|
|
6
|
+
export interface StreamingCacheOptions extends Omit<LRUCacheOptions, 'maxSize'> {
|
|
7
|
+
maxSize: number;
|
|
8
|
+
maxResponseSize: number;
|
|
9
|
+
chunkSize: number;
|
|
10
|
+
compressionEnabled: boolean;
|
|
11
|
+
compressionThreshold: number;
|
|
12
|
+
}
|
|
13
|
+
export interface CachedResponse {
|
|
14
|
+
status: number;
|
|
15
|
+
statusText: string;
|
|
16
|
+
headers: Record<string, string>;
|
|
17
|
+
body: Uint8Array | null;
|
|
18
|
+
compressed: boolean;
|
|
19
|
+
originalSize: number;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
etag?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface StreamingCacheStats {
|
|
24
|
+
totalResponses: number;
|
|
25
|
+
totalSize: number;
|
|
26
|
+
compressionRatio: number;
|
|
27
|
+
averageResponseSize: number;
|
|
28
|
+
largestResponse: number;
|
|
29
|
+
streamingHits: number;
|
|
30
|
+
streamingMisses: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* High-performance streaming cache for large HTTP responses
|
|
34
|
+
*/
|
|
35
|
+
export declare class StreamingCache {
|
|
36
|
+
private options;
|
|
37
|
+
private cache;
|
|
38
|
+
private stats;
|
|
39
|
+
constructor(options: StreamingCacheOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Cache a response with streaming support
|
|
42
|
+
*/
|
|
43
|
+
cacheResponse(key: string, response: Response, options?: {
|
|
44
|
+
ttl?: number;
|
|
45
|
+
forceCache?: boolean;
|
|
46
|
+
generateETag?: boolean;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Get cached response as a streaming response
|
|
50
|
+
*/
|
|
51
|
+
getStreamingResponse(key: string): Promise<Response | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Check if response should be cached based on headers and size
|
|
54
|
+
*/
|
|
55
|
+
shouldCache(response: Response): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Warm cache with common routes
|
|
58
|
+
*/
|
|
59
|
+
warmCache(routes: Array<{
|
|
60
|
+
key: string;
|
|
61
|
+
url: string;
|
|
62
|
+
method?: string;
|
|
63
|
+
headers?: Record<string, string>;
|
|
64
|
+
}>): Promise<number>;
|
|
65
|
+
/**
|
|
66
|
+
* Create conditional response based on ETag
|
|
67
|
+
*/
|
|
68
|
+
createConditionalResponse(key: string, ifNoneMatch?: string): Response | null;
|
|
69
|
+
/**
|
|
70
|
+
* Get cache statistics
|
|
71
|
+
*/
|
|
72
|
+
getStats(): StreamingCacheStats & {
|
|
73
|
+
lruStats: any;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Clear cache and reset statistics
|
|
77
|
+
*/
|
|
78
|
+
clear(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Prune expired entries
|
|
81
|
+
*/
|
|
82
|
+
prune(): number;
|
|
83
|
+
/**
|
|
84
|
+
* Create streaming response for large payloads
|
|
85
|
+
*/
|
|
86
|
+
private createStreamingResponse;
|
|
87
|
+
/**
|
|
88
|
+
* Extract headers from response (excluding hop-by-hop headers)
|
|
89
|
+
*/
|
|
90
|
+
private extractHeaders;
|
|
91
|
+
/**
|
|
92
|
+
* Compress data using gzip
|
|
93
|
+
*/
|
|
94
|
+
private compressData;
|
|
95
|
+
/**
|
|
96
|
+
* Decompress data using gzip
|
|
97
|
+
*/
|
|
98
|
+
private decompressData;
|
|
99
|
+
/**
|
|
100
|
+
* Generate ETag for response body
|
|
101
|
+
*/
|
|
102
|
+
private generateETag;
|
|
103
|
+
/**
|
|
104
|
+
* Update statistics when caching a response
|
|
105
|
+
*/
|
|
106
|
+
private updateStatsOnCache;
|
|
107
|
+
/**
|
|
108
|
+
* Update statistics when evicting a response
|
|
109
|
+
*/
|
|
110
|
+
private updateStatsOnEviction;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Factory functions for creating streaming caches with common configurations
|
|
114
|
+
*/
|
|
115
|
+
export declare const createStreamingCache: {
|
|
116
|
+
/**
|
|
117
|
+
* Create cache optimized for API responses
|
|
118
|
+
*/
|
|
119
|
+
api: (maxSize?: number) => StreamingCache;
|
|
120
|
+
/**
|
|
121
|
+
* Create cache optimized for static assets
|
|
122
|
+
*/
|
|
123
|
+
assets: (maxSize?: number) => StreamingCache;
|
|
124
|
+
/**
|
|
125
|
+
* Create cache optimized for HTML pages
|
|
126
|
+
*/
|
|
127
|
+
pages: (maxSize?: number) => StreamingCache;
|
|
128
|
+
/**
|
|
129
|
+
* Create custom configured streaming cache
|
|
130
|
+
*/
|
|
131
|
+
custom: (options: StreamingCacheOptions) => StreamingCache;
|
|
132
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple color utility for CLI output without external dependencies
|
|
3
|
+
*/
|
|
4
|
+
export declare const chalk: {
|
|
5
|
+
red: (text: string) => string;
|
|
6
|
+
green: (text: string) => string;
|
|
7
|
+
yellow: (text: string) => string;
|
|
8
|
+
blue: (text: string) => string;
|
|
9
|
+
cyan: (text: string) => string;
|
|
10
|
+
white: (text: string) => string;
|
|
11
|
+
gray: (text: string) => string;
|
|
12
|
+
bold: (text: string) => string;
|
|
13
|
+
dim: (text: string) => string;
|
|
14
|
+
hex: (_color: string) => (text: string) => string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CLI } from '@stacksjs/clapp';
|
|
2
|
+
/**
|
|
3
|
+
* Create and configure the CLI
|
|
4
|
+
*/
|
|
5
|
+
export declare function createCLI(): CLI;
|
|
6
|
+
export * from './middleware';
|
|
7
|
+
export * from './openapi';
|
|
8
|
+
export * from './router';
|
|
9
|
+
export * from './routes';
|
|
10
|
+
export * from './utils';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for the middleware:types command
|
|
3
|
+
*/
|
|
4
|
+
export interface GenerateMiddlewareTypesOptions {
|
|
5
|
+
output?: string;
|
|
6
|
+
watch?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Options for the middleware:map command
|
|
10
|
+
*/
|
|
11
|
+
export interface MapMiddlewareOptions {
|
|
12
|
+
output?: string;
|
|
13
|
+
dir?: string;
|
|
14
|
+
watch?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate TypeScript types for middleware configurations
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateMiddlewareTypes(outputPath: string): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Generate middleware type mappings for user project
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateMiddlewareMap(directoryPath: string, outputPath: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Watch for changes in the directory and regenerate middleware map
|
|
26
|
+
*/
|
|
27
|
+
export declare function watchDirectoryForMiddleware(directoryPath: string, outputPath: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Watch for changes in the middleware directory and regenerate types
|
|
30
|
+
*/
|
|
31
|
+
export declare function watchMiddlewareDirectory(outputPath: string): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for the openapi command
|
|
3
|
+
*/
|
|
4
|
+
export interface OpenAPIOptions {
|
|
5
|
+
output?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
version?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
basePath?: string;
|
|
10
|
+
servers?: string;
|
|
11
|
+
tags?: boolean;
|
|
12
|
+
security?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Generate OpenAPI specification for API routes
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateOpenAPISpec(options: OpenAPIOptions): Promise<void>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for the router:types command
|
|
3
|
+
*/
|
|
4
|
+
export interface GenerateRouterTypesOptions {
|
|
5
|
+
output?: string;
|
|
6
|
+
watch?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Generate TypeScript types for router extensions
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateRouterTypes(outputPath: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Watch for changes in router files and regenerate types
|
|
14
|
+
*/
|
|
15
|
+
export declare function watchRouterFiles(outputPath: string): Promise<void>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for the route:list command
|
|
3
|
+
*/
|
|
4
|
+
export interface RouteListOptions {
|
|
5
|
+
verbose?: boolean;
|
|
6
|
+
extraVerbose?: boolean;
|
|
7
|
+
path?: string;
|
|
8
|
+
exceptVendor?: boolean;
|
|
9
|
+
onlyVendor?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Options for the route:types command
|
|
13
|
+
*/
|
|
14
|
+
export interface GenerateRouteTypesOptions {
|
|
15
|
+
output?: string;
|
|
16
|
+
watch?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Display all registered routes in a formatted table
|
|
20
|
+
*/
|
|
21
|
+
export declare function displayRoutes(options: RouteListOptions): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Generate TypeScript types for route names
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateRouteTypes(outputPath: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Watch for changes in the routes directory and regenerate types
|
|
28
|
+
*/
|
|
29
|
+
export declare function watchRoutesDirectory(outputPath: string): Promise<void>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats console output with consistent styling
|
|
3
|
+
*/
|
|
4
|
+
export declare const format: {
|
|
5
|
+
success: (message: string) => string;
|
|
6
|
+
info: (message: string) => string;
|
|
7
|
+
warning: (message: string) => string;
|
|
8
|
+
error: (message: string) => string;
|
|
9
|
+
dim: (message: string) => string;
|
|
10
|
+
bold: (message: string) => string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Logger for CLI commands with consistent styling
|
|
14
|
+
*/
|
|
15
|
+
export declare const logger: {
|
|
16
|
+
success: (message: string) => void;
|
|
17
|
+
info: (message: string) => void;
|
|
18
|
+
warning: (message: string) => void;
|
|
19
|
+
error: (message: string) => void;
|
|
20
|
+
debug: (message: string) => void;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Load router instance from the application
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadRouter(): Promise<any>;
|
|
26
|
+
/**
|
|
27
|
+
* Setup a debounced file watcher
|
|
28
|
+
*/
|
|
29
|
+
export declare function setupDebouncedWatcher(_callback: () => Promise<void>, _debounceTime?: number): {
|
|
30
|
+
timeoutId: NodeJS.Timeout | null;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Utility to get method color for console output
|
|
34
|
+
*/
|
|
35
|
+
export declare function getMethodColor(method: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Pad a string to a specified length
|
|
38
|
+
*/
|
|
39
|
+
export declare function padString(str: string, length: number): string;
|
|
40
|
+
/**
|
|
41
|
+
* Check router health and configuration
|
|
42
|
+
*/
|
|
43
|
+
export declare function checkRouterHealth(options: {
|
|
44
|
+
verbose?: boolean;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Test routes by making HTTP requests
|
|
48
|
+
*/
|
|
49
|
+
export declare function testRoutes(options: {
|
|
50
|
+
baseUrl?: string;
|
|
51
|
+
filter?: string;
|
|
52
|
+
method?: string;
|
|
53
|
+
timeout?: number;
|
|
54
|
+
}): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Debug route matching for a specific path
|
|
57
|
+
*/
|
|
58
|
+
export declare function debugRoute(path: string, options: {
|
|
59
|
+
method?: string;
|
|
60
|
+
verbose?: boolean;
|
|
61
|
+
}): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Clear route caches
|
|
64
|
+
*/
|
|
65
|
+
export declare function clearCaches(options: {
|
|
66
|
+
stats?: boolean;
|
|
67
|
+
}): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Validate route definitions and configuration
|
|
70
|
+
*/
|
|
71
|
+
export declare function validateRoutes(options: {
|
|
72
|
+
strict?: boolean;
|
|
73
|
+
fix?: boolean;
|
|
74
|
+
}): Promise<void>;
|
package/dist/cli.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
package/dist/cli.js
CHANGED
|
@@ -1879,7 +1879,7 @@ var prefix = getPrefix();
|
|
|
1879
1879
|
var color18 = __toESM(require_picocolors(), 1);
|
|
1880
1880
|
var import_picocolors19 = __toESM(require_picocolors(), 1);
|
|
1881
1881
|
// package.json
|
|
1882
|
-
var version = "0.0.
|
|
1882
|
+
var version = "0.0.7";
|
|
1883
1883
|
|
|
1884
1884
|
// src/cli/middleware.ts
|
|
1885
1885
|
import fs from "fs/promises";
|
package/dist/config.d.ts
ADDED