@stacksjs/bun-router 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/auth.d.ts +134 -0
- package/dist/cache/lru-cache.d.ts +139 -0
- package/dist/cache/middleware-memoization.d.ts +151 -0
- package/dist/cache/route-cache-warmer.d.ts +161 -0
- package/dist/cache/sqlite-cache.d.ts +209 -0
- package/dist/cache/streaming-cache.d.ts +132 -0
- package/dist/chunk-jhsk5c5b.js +15758 -0
- package/dist/cli/colors.d.ts +15 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/middleware.d.ts +31 -0
- package/dist/cli/openapi.d.ts +17 -0
- package/dist/cli/router.d.ts +15 -0
- package/dist/cli/routes.d.ts +29 -0
- package/dist/cli/utils.d.ts +74 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +2 -2
- package/dist/config.d.ts +7 -0
- package/dist/container/container.d.ts +273 -0
- package/dist/container/contextual-binding.d.ts +240 -0
- package/dist/container/decorators.d.ts +141 -0
- package/dist/container/service-provider.d.ts +285 -0
- package/dist/development/hot-reload.d.ts +187 -0
- package/dist/development/index.d.ts +167 -0
- package/dist/development/performance-profiler.d.ts +217 -0
- package/dist/development/route-debugger.d.ts +154 -0
- package/dist/development/route-inspector.d.ts +211 -0
- package/dist/development/typescript-utilities.d.ts +209 -0
- package/dist/docs.d.ts +11 -0
- package/dist/errors/circuit-breaker.d.ts +195 -0
- package/dist/errors/error-handler.d.ts +88 -0
- package/dist/errors/error-reporting.d.ts +144 -0
- package/dist/errors/exceptions.d.ts +184 -0
- package/dist/errors/graceful-degradation.d.ts +154 -0
- package/dist/errors/index.d.ts +9 -0
- package/dist/errors/router-errors.d.ts +110 -0
- package/dist/file-serving/static-files.d.ts +143 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +320 -206
- package/dist/middleware/auth.d.ts +63 -0
- package/dist/middleware/content_security_policy.d.ts +53 -0
- package/dist/middleware/cors.d.ts +5 -0
- package/dist/middleware/csrf.d.ts +7 -0
- package/dist/middleware/ddos_protection.d.ts +39 -0
- package/dist/middleware/file_security.d.ts +26 -0
- package/dist/middleware/file_upload.d.ts +38 -0
- package/dist/middleware/helmet.d.ts +54 -0
- package/dist/middleware/index.d.ts +44 -0
- package/dist/middleware/input_validation.d.ts +45 -0
- package/dist/middleware/json_body.d.ts +4 -0
- package/dist/middleware/performance_alerting.d.ts +87 -0
- package/dist/middleware/performance_dashboard.d.ts +87 -0
- package/dist/middleware/performance_monitor.d.ts +209 -0
- package/dist/middleware/pipeline.d.ts +131 -0
- package/dist/middleware/rate_limit.d.ts +36 -0
- package/dist/middleware/request_id.d.ts +4 -0
- package/dist/middleware/request_signing.d.ts +153 -0
- package/dist/middleware/request_tracer.d.ts +72 -0
- package/dist/middleware/response_cache.d.ts +97 -0
- package/dist/middleware/security.d.ts +69 -0
- package/dist/middleware/security_suite.d.ts +46 -0
- package/dist/middleware/session.d.ts +23 -0
- package/dist/model-binding/index.d.ts +2 -0
- package/dist/model-binding/model-middleware.d.ts +118 -0
- package/dist/model-binding/model-registry.d.ts +164 -0
- package/dist/model-binding.d.ts +185 -0
- package/dist/model-resolver-factory.d.ts +31 -0
- package/dist/observability/correlation.d.ts +187 -0
- package/dist/observability/health-checks.d.ts +186 -0
- package/dist/observability/index.d.ts +60 -0
- package/dist/observability/integration.d.ts +147 -0
- package/dist/observability/metrics.d.ts +184 -0
- package/dist/observability/tracing.d.ts +187 -0
- package/dist/optimization/bun-utilities.d.ts +224 -0
- package/dist/query-builder-integration.d.ts +36 -0
- package/dist/request/context.d.ts +34 -0
- package/dist/request/enhanced-request.d.ts +213 -0
- package/dist/request/macros.d.ts +300 -0
- package/dist/response/macros.d.ts +245 -0
- package/dist/response/response-factory.d.ts +133 -0
- package/dist/router/api-routes.d.ts +5 -0
- package/dist/router/file-based-routing.d.ts +118 -0
- package/dist/router/file-streaming.d.ts +5 -0
- package/dist/router/fluent-router.d.ts +315 -0
- package/dist/router/fluent-routing.d.ts +271 -0
- package/dist/router/group-organization.d.ts +5 -0
- package/dist/router/handler-resolver.d.ts +24 -0
- package/dist/router/http-methods.d.ts +10 -0
- package/dist/router/index.d.ts +113 -0
- package/dist/router/middleware-groups.d.ts +94 -0
- package/dist/router/middleware-integration.d.ts +112 -0
- package/dist/router/middleware.d.ts +5 -0
- package/dist/router/model-binding.d.ts +5 -0
- package/dist/router/optimized-route-matching.d.ts +6 -0
- package/dist/router/route-building.d.ts +5 -0
- package/dist/router/route-compiler.d.ts +153 -0
- package/dist/router/route-matching.d.ts +5 -0
- package/dist/router/route-trie.d.ts +114 -0
- package/dist/router/router.d.ts +276 -0
- package/dist/router/server.d.ts +5 -0
- package/dist/router/validation-integration.d.ts +170 -0
- package/dist/router/view-rendering.d.ts +5 -0
- package/dist/router/websocket.d.ts +5 -0
- package/dist/routing/route-caching.d.ts +129 -0
- package/dist/routing/route-throttling.d.ts +150 -0
- package/dist/routing/subdomain-routing.d.ts +206 -0
- package/dist/session/database-store.d.ts +51 -0
- package/dist/session/file-store.d.ts +22 -0
- package/dist/session/index.d.ts +106 -0
- package/dist/session/memory-store.d.ts +21 -0
- package/dist/session/redis-store.d.ts +31 -0
- package/dist/streaming/index.d.ts +3 -0
- package/dist/streaming/sse-handler.d.ts +138 -0
- package/dist/streaming/stream-handler.d.ts +114 -0
- package/dist/testing/auth-testing.d.ts +156 -0
- package/dist/testing/file-upload-testing.d.ts +190 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/middleware-testing.d.ts +138 -0
- package/dist/testing/model-binding-testing.d.ts +186 -0
- package/dist/testing/performance-testing.d.ts +235 -0
- package/dist/testing/test-client.d.ts +117 -0
- package/dist/testing/test-request.d.ts +85 -0
- package/dist/testing/test-response.d.ts +90 -0
- package/dist/testing/types.d.ts +207 -0
- package/dist/testing/websocket-testing.d.ts +227 -0
- package/dist/types/controller-types.d.ts +208 -0
- package/dist/types/core.d.ts +543 -0
- package/dist/types/middleware-types.d.ts +227 -0
- package/dist/types/request-response-augmentation.d.ts +261 -0
- package/dist/types/route-inference.d.ts +168 -0
- package/dist/types.d.ts +1776 -0
- package/dist/url.d.ts +56 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/query-preservation.d.ts +48 -0
- package/dist/utils.d.ts +69 -0
- package/dist/validation/validator.d.ts +140 -0
- package/dist/websocket/clustering.d.ts +185 -0
- package/package.json +18 -4
- package/src/auth.ts +469 -0
- package/src/cache/lru-cache.ts +457 -0
- package/src/cache/middleware-memoization.ts +531 -0
- package/src/cache/route-cache-warmer.ts +486 -0
- package/src/cache/sqlite-cache.ts +783 -0
- package/src/cache/streaming-cache.ts +572 -0
- package/src/cli/colors.ts +29 -0
- package/src/cli/index.ts +287 -0
- package/src/cli/middleware.ts +291 -0
- package/src/cli/openapi.ts +407 -0
- package/src/cli/router.ts +188 -0
- package/src/cli/routes.ts +265 -0
- package/src/cli/utils.ts +531 -0
- package/src/cli.ts +5 -0
- package/src/config.ts +322 -0
- package/src/container/container.ts +740 -0
- package/src/container/contextual-binding.ts +603 -0
- package/src/container/decorators.ts +359 -0
- package/src/container/service-provider.ts +596 -0
- package/src/development/hot-reload.ts +673 -0
- package/src/development/index.ts +499 -0
- package/src/development/performance-profiler.ts +717 -0
- package/src/development/route-debugger.ts +527 -0
- package/src/development/route-inspector.ts +749 -0
- package/src/development/typescript-utilities.ts +678 -0
- package/src/docs.ts +397 -0
- package/src/errors/circuit-breaker.ts +732 -0
- package/src/errors/error-handler.ts +569 -0
- package/src/errors/error-reporting.ts +672 -0
- package/src/errors/exceptions.ts +536 -0
- package/src/errors/graceful-degradation.ts +621 -0
- package/src/errors/index.ts +21 -0
- package/src/errors/router-errors.ts +632 -0
- package/src/file-serving/static-files.ts +581 -0
- package/src/index.ts +14 -0
- package/src/middleware/auth.ts +219 -0
- package/src/middleware/content_security_policy.ts +215 -0
- package/src/middleware/cors.ts +74 -0
- package/src/middleware/csrf.ts +108 -0
- package/src/middleware/ddos_protection.ts +255 -0
- package/src/middleware/file_security.ts +191 -0
- package/src/middleware/file_upload.ts +264 -0
- package/src/middleware/helmet.ts +268 -0
- package/src/middleware/index.ts +117 -0
- package/src/middleware/input_validation.ts +449 -0
- package/src/middleware/json_body.ts +37 -0
- package/src/middleware/performance_alerting.ts +538 -0
- package/src/middleware/performance_dashboard.ts +661 -0
- package/src/middleware/performance_monitor.ts +943 -0
- package/src/middleware/pipeline.ts +489 -0
- package/src/middleware/rate_limit.ts +245 -0
- package/src/middleware/request_id.ts +36 -0
- package/src/middleware/request_signing.ts +636 -0
- package/src/middleware/request_tracer.ts +636 -0
- package/src/middleware/response_cache.ts +743 -0
- package/src/middleware/security.ts +482 -0
- package/src/middleware/security_suite.ts +257 -0
- package/src/middleware/session.ts +91 -0
- package/src/model-binding/index.ts +18 -0
- package/src/model-binding/model-middleware.ts +425 -0
- package/src/model-binding/model-registry.ts +550 -0
- package/src/model-binding.ts +370 -0
- package/src/model-resolver-factory.ts +106 -0
- package/src/observability/correlation.ts +691 -0
- package/src/observability/health-checks.ts +729 -0
- package/src/observability/index.ts +184 -0
- package/src/observability/integration.ts +548 -0
- package/src/observability/metrics.ts +753 -0
- package/src/observability/tracing.ts +638 -0
- package/src/optimization/bun-utilities.ts +778 -0
- package/src/query-builder-integration.ts +137 -0
- package/src/request/context.ts +62 -0
- package/src/request/enhanced-request.ts +857 -0
- package/src/request/macros.ts +688 -0
- package/src/response/macros.ts +612 -0
- package/src/response/response-factory.ts +588 -0
- package/src/router/api-routes.ts +243 -0
- package/src/router/file-based-routing.ts +670 -0
- package/src/router/file-streaming.ts +372 -0
- package/src/router/fluent-router.ts +927 -0
- package/src/router/fluent-routing.ts +797 -0
- package/src/router/group-organization.ts +213 -0
- package/src/router/handler-resolver.ts +291 -0
- package/src/router/http-methods.ts +377 -0
- package/src/router/index.ts +185 -0
- package/src/router/middleware-groups.ts +222 -0
- package/src/router/middleware-integration.ts +399 -0
- package/src/router/middleware.ts +231 -0
- package/src/router/model-binding.ts +215 -0
- package/src/router/optimized-route-matching.ts +253 -0
- package/src/router/route-building.ts +212 -0
- package/src/router/route-compiler.ts +702 -0
- package/src/router/route-matching.ts +349 -0
- package/src/router/route-trie.ts +464 -0
- package/src/router/router.ts +1508 -0
- package/src/router/server.ts +406 -0
- package/src/router/validation-integration.ts +443 -0
- package/src/router/view-rendering.ts +233 -0
- package/src/router/websocket.ts +100 -0
- package/src/routing/route-caching.ts +402 -0
- package/src/routing/route-throttling.ts +469 -0
- package/src/routing/subdomain-routing.ts +492 -0
- package/src/session/database-store.ts +109 -0
- package/src/session/file-store.ts +148 -0
- package/src/session/index.ts +244 -0
- package/src/session/memory-store.ts +88 -0
- package/src/session/redis-store.ts +93 -0
- package/src/streaming/index.ts +17 -0
- package/src/streaming/sse-handler.ts +482 -0
- package/src/streaming/stream-handler.ts +552 -0
- package/src/testing/auth-testing.ts +446 -0
- package/src/testing/file-upload-testing.ts +543 -0
- package/src/testing/index.ts +10 -0
- package/src/testing/middleware-testing.ts +322 -0
- package/src/testing/model-binding-testing.ts +645 -0
- package/src/testing/performance-testing.ts +738 -0
- package/src/testing/test-client.ts +310 -0
- package/src/testing/test-request.ts +315 -0
- package/src/testing/test-response.ts +332 -0
- package/src/testing/types.ts +224 -0
- package/src/testing/websocket-testing.ts +590 -0
- package/src/types/controller-types.ts +385 -0
- package/src/types/core.ts +683 -0
- package/src/types/middleware-types.ts +419 -0
- package/src/types/request-response-augmentation.ts +489 -0
- package/src/types/route-inference.ts +357 -0
- package/src/types.ts +2049 -0
- package/src/url.ts +126 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/query-preservation.ts +201 -0
- package/src/utils.ts +327 -0
- package/src/validation/validator.ts +685 -0
- package/src/websocket/clustering.ts +762 -0
- package/dist/chunk-cjdekj87.js +0 -25886
|
@@ -0,0 +1,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
|
+
};
|