@stacksjs/bun-router 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/dist/auth.d.ts +134 -0
  2. package/dist/cache/lru-cache.d.ts +139 -0
  3. package/dist/cache/middleware-memoization.d.ts +151 -0
  4. package/dist/cache/route-cache-warmer.d.ts +161 -0
  5. package/dist/cache/sqlite-cache.d.ts +209 -0
  6. package/dist/cache/streaming-cache.d.ts +132 -0
  7. package/dist/cli/colors.d.ts +15 -0
  8. package/dist/cli/index.d.ts +10 -0
  9. package/dist/cli/middleware.d.ts +31 -0
  10. package/dist/cli/openapi.d.ts +17 -0
  11. package/dist/cli/router.d.ts +15 -0
  12. package/dist/cli/routes.d.ts +29 -0
  13. package/dist/cli/utils.d.ts +74 -0
  14. package/dist/cli.d.ts +1 -1
  15. package/dist/cli.js +1 -1
  16. package/dist/config.d.ts +7 -0
  17. package/dist/container/container.d.ts +273 -0
  18. package/dist/container/contextual-binding.d.ts +240 -0
  19. package/dist/container/decorators.d.ts +141 -0
  20. package/dist/container/service-provider.d.ts +285 -0
  21. package/dist/development/hot-reload.d.ts +187 -0
  22. package/dist/development/index.d.ts +167 -0
  23. package/dist/development/performance-profiler.d.ts +217 -0
  24. package/dist/development/route-debugger.d.ts +154 -0
  25. package/dist/development/route-inspector.d.ts +211 -0
  26. package/dist/development/typescript-utilities.d.ts +209 -0
  27. package/dist/docs.d.ts +11 -0
  28. package/dist/errors/circuit-breaker.d.ts +195 -0
  29. package/dist/errors/error-handler.d.ts +88 -0
  30. package/dist/errors/error-reporting.d.ts +144 -0
  31. package/dist/errors/exceptions.d.ts +184 -0
  32. package/dist/errors/graceful-degradation.d.ts +154 -0
  33. package/dist/errors/index.d.ts +9 -0
  34. package/dist/errors/router-errors.d.ts +110 -0
  35. package/dist/file-serving/static-files.d.ts +143 -0
  36. package/dist/index.d.ts +2 -0
  37. package/dist/index.js +319 -205
  38. package/dist/middleware/auth.d.ts +63 -0
  39. package/dist/middleware/content_security_policy.d.ts +53 -0
  40. package/dist/middleware/cors.d.ts +5 -0
  41. package/dist/middleware/csrf.d.ts +7 -0
  42. package/dist/middleware/ddos_protection.d.ts +39 -0
  43. package/dist/middleware/file_security.d.ts +26 -0
  44. package/dist/middleware/file_upload.d.ts +38 -0
  45. package/dist/middleware/helmet.d.ts +54 -0
  46. package/dist/middleware/index.d.ts +44 -0
  47. package/dist/middleware/input_validation.d.ts +45 -0
  48. package/dist/middleware/json_body.d.ts +4 -0
  49. package/dist/middleware/performance_alerting.d.ts +87 -0
  50. package/dist/middleware/performance_dashboard.d.ts +87 -0
  51. package/dist/middleware/performance_monitor.d.ts +209 -0
  52. package/dist/middleware/pipeline.d.ts +131 -0
  53. package/dist/middleware/rate_limit.d.ts +36 -0
  54. package/dist/middleware/request_id.d.ts +4 -0
  55. package/dist/middleware/request_signing.d.ts +153 -0
  56. package/dist/middleware/request_tracer.d.ts +72 -0
  57. package/dist/middleware/response_cache.d.ts +97 -0
  58. package/dist/middleware/security.d.ts +69 -0
  59. package/dist/middleware/security_suite.d.ts +46 -0
  60. package/dist/middleware/session.d.ts +23 -0
  61. package/dist/model-binding/index.d.ts +2 -0
  62. package/dist/model-binding/model-middleware.d.ts +118 -0
  63. package/dist/model-binding/model-registry.d.ts +164 -0
  64. package/dist/model-binding.d.ts +185 -0
  65. package/dist/model-resolver-factory.d.ts +31 -0
  66. package/dist/observability/correlation.d.ts +187 -0
  67. package/dist/observability/health-checks.d.ts +186 -0
  68. package/dist/observability/index.d.ts +60 -0
  69. package/dist/observability/integration.d.ts +147 -0
  70. package/dist/observability/metrics.d.ts +184 -0
  71. package/dist/observability/tracing.d.ts +187 -0
  72. package/dist/optimization/bun-utilities.d.ts +224 -0
  73. package/dist/query-builder-integration.d.ts +36 -0
  74. package/dist/request/context.d.ts +34 -0
  75. package/dist/request/enhanced-request.d.ts +213 -0
  76. package/dist/request/macros.d.ts +300 -0
  77. package/dist/response/macros.d.ts +245 -0
  78. package/dist/response/response-factory.d.ts +133 -0
  79. package/dist/router/api-routes.d.ts +5 -0
  80. package/dist/router/file-based-routing.d.ts +118 -0
  81. package/dist/router/file-streaming.d.ts +5 -0
  82. package/dist/router/fluent-router.d.ts +315 -0
  83. package/dist/router/fluent-routing.d.ts +271 -0
  84. package/dist/router/group-organization.d.ts +5 -0
  85. package/dist/router/handler-resolver.d.ts +24 -0
  86. package/dist/router/http-methods.d.ts +10 -0
  87. package/dist/router/index.d.ts +113 -0
  88. package/dist/router/middleware-groups.d.ts +94 -0
  89. package/dist/router/middleware-integration.d.ts +112 -0
  90. package/dist/router/middleware.d.ts +5 -0
  91. package/dist/router/model-binding.d.ts +5 -0
  92. package/dist/router/optimized-route-matching.d.ts +6 -0
  93. package/dist/router/route-building.d.ts +5 -0
  94. package/dist/router/route-compiler.d.ts +153 -0
  95. package/dist/router/route-matching.d.ts +5 -0
  96. package/dist/router/route-trie.d.ts +114 -0
  97. package/dist/router/router.d.ts +276 -0
  98. package/dist/router/server.d.ts +5 -0
  99. package/dist/router/validation-integration.d.ts +170 -0
  100. package/dist/router/view-rendering.d.ts +5 -0
  101. package/dist/router/websocket.d.ts +5 -0
  102. package/dist/routing/route-caching.d.ts +129 -0
  103. package/dist/routing/route-throttling.d.ts +150 -0
  104. package/dist/routing/subdomain-routing.d.ts +206 -0
  105. package/dist/session/database-store.d.ts +51 -0
  106. package/dist/session/file-store.d.ts +22 -0
  107. package/dist/session/index.d.ts +106 -0
  108. package/dist/session/memory-store.d.ts +21 -0
  109. package/dist/session/redis-store.d.ts +31 -0
  110. package/dist/streaming/index.d.ts +3 -0
  111. package/dist/streaming/sse-handler.d.ts +138 -0
  112. package/dist/streaming/stream-handler.d.ts +114 -0
  113. package/dist/testing/auth-testing.d.ts +156 -0
  114. package/dist/testing/file-upload-testing.d.ts +190 -0
  115. package/dist/testing/index.d.ts +10 -0
  116. package/dist/testing/middleware-testing.d.ts +138 -0
  117. package/dist/testing/model-binding-testing.d.ts +186 -0
  118. package/dist/testing/performance-testing.d.ts +235 -0
  119. package/dist/testing/test-client.d.ts +117 -0
  120. package/dist/testing/test-request.d.ts +85 -0
  121. package/dist/testing/test-response.d.ts +90 -0
  122. package/dist/testing/types.d.ts +207 -0
  123. package/dist/testing/websocket-testing.d.ts +227 -0
  124. package/dist/types/controller-types.d.ts +208 -0
  125. package/dist/types/core.d.ts +543 -0
  126. package/dist/types/middleware-types.d.ts +227 -0
  127. package/dist/types/request-response-augmentation.d.ts +261 -0
  128. package/dist/types/route-inference.d.ts +168 -0
  129. package/dist/types.d.ts +1776 -0
  130. package/dist/url.d.ts +56 -0
  131. package/dist/utils/index.d.ts +1 -0
  132. package/dist/utils/query-preservation.d.ts +48 -0
  133. package/dist/utils.d.ts +69 -0
  134. package/dist/validation/validator.d.ts +140 -0
  135. package/dist/websocket/clustering.d.ts +185 -0
  136. package/package.json +3 -2
  137. package/src/auth.ts +469 -0
  138. package/src/cache/lru-cache.ts +457 -0
  139. package/src/cache/middleware-memoization.ts +531 -0
  140. package/src/cache/route-cache-warmer.ts +486 -0
  141. package/src/cache/sqlite-cache.ts +783 -0
  142. package/src/cache/streaming-cache.ts +572 -0
  143. package/src/cli/colors.ts +29 -0
  144. package/src/cli/index.ts +287 -0
  145. package/src/cli/middleware.ts +291 -0
  146. package/src/cli/openapi.ts +407 -0
  147. package/src/cli/router.ts +188 -0
  148. package/src/cli/routes.ts +265 -0
  149. package/src/cli/utils.ts +531 -0
  150. package/src/cli.ts +5 -0
  151. package/src/config.ts +322 -0
  152. package/src/container/container.ts +740 -0
  153. package/src/container/contextual-binding.ts +603 -0
  154. package/src/container/decorators.ts +359 -0
  155. package/src/container/service-provider.ts +596 -0
  156. package/src/development/hot-reload.ts +673 -0
  157. package/src/development/index.ts +499 -0
  158. package/src/development/performance-profiler.ts +717 -0
  159. package/src/development/route-debugger.ts +527 -0
  160. package/src/development/route-inspector.ts +749 -0
  161. package/src/development/typescript-utilities.ts +678 -0
  162. package/src/docs.ts +397 -0
  163. package/src/errors/circuit-breaker.ts +732 -0
  164. package/src/errors/error-handler.ts +569 -0
  165. package/src/errors/error-reporting.ts +672 -0
  166. package/src/errors/exceptions.ts +536 -0
  167. package/src/errors/graceful-degradation.ts +621 -0
  168. package/src/errors/index.ts +21 -0
  169. package/src/errors/router-errors.ts +632 -0
  170. package/src/file-serving/static-files.ts +581 -0
  171. package/src/index.ts +14 -0
  172. package/src/middleware/auth.ts +219 -0
  173. package/src/middleware/content_security_policy.ts +215 -0
  174. package/src/middleware/cors.ts +74 -0
  175. package/src/middleware/csrf.ts +108 -0
  176. package/src/middleware/ddos_protection.ts +255 -0
  177. package/src/middleware/file_security.ts +191 -0
  178. package/src/middleware/file_upload.ts +264 -0
  179. package/src/middleware/helmet.ts +268 -0
  180. package/src/middleware/index.ts +117 -0
  181. package/src/middleware/input_validation.ts +449 -0
  182. package/src/middleware/json_body.ts +37 -0
  183. package/src/middleware/performance_alerting.ts +538 -0
  184. package/src/middleware/performance_dashboard.ts +661 -0
  185. package/src/middleware/performance_monitor.ts +943 -0
  186. package/src/middleware/pipeline.ts +489 -0
  187. package/src/middleware/rate_limit.ts +245 -0
  188. package/src/middleware/request_id.ts +36 -0
  189. package/src/middleware/request_signing.ts +636 -0
  190. package/src/middleware/request_tracer.ts +636 -0
  191. package/src/middleware/response_cache.ts +743 -0
  192. package/src/middleware/security.ts +482 -0
  193. package/src/middleware/security_suite.ts +257 -0
  194. package/src/middleware/session.ts +91 -0
  195. package/src/model-binding/index.ts +18 -0
  196. package/src/model-binding/model-middleware.ts +425 -0
  197. package/src/model-binding/model-registry.ts +550 -0
  198. package/src/model-binding.ts +370 -0
  199. package/src/model-resolver-factory.ts +106 -0
  200. package/src/observability/correlation.ts +691 -0
  201. package/src/observability/health-checks.ts +729 -0
  202. package/src/observability/index.ts +184 -0
  203. package/src/observability/integration.ts +548 -0
  204. package/src/observability/metrics.ts +753 -0
  205. package/src/observability/tracing.ts +638 -0
  206. package/src/optimization/bun-utilities.ts +778 -0
  207. package/src/query-builder-integration.ts +137 -0
  208. package/src/request/context.ts +62 -0
  209. package/src/request/enhanced-request.ts +857 -0
  210. package/src/request/macros.ts +688 -0
  211. package/src/response/macros.ts +612 -0
  212. package/src/response/response-factory.ts +588 -0
  213. package/src/router/api-routes.ts +243 -0
  214. package/src/router/file-based-routing.ts +670 -0
  215. package/src/router/file-streaming.ts +372 -0
  216. package/src/router/fluent-router.ts +927 -0
  217. package/src/router/fluent-routing.ts +797 -0
  218. package/src/router/group-organization.ts +213 -0
  219. package/src/router/handler-resolver.ts +291 -0
  220. package/src/router/http-methods.ts +377 -0
  221. package/src/router/index.ts +185 -0
  222. package/src/router/middleware-groups.ts +222 -0
  223. package/src/router/middleware-integration.ts +399 -0
  224. package/src/router/middleware.ts +231 -0
  225. package/src/router/model-binding.ts +215 -0
  226. package/src/router/optimized-route-matching.ts +253 -0
  227. package/src/router/route-building.ts +212 -0
  228. package/src/router/route-compiler.ts +702 -0
  229. package/src/router/route-matching.ts +349 -0
  230. package/src/router/route-trie.ts +464 -0
  231. package/src/router/router.ts +1508 -0
  232. package/src/router/server.ts +406 -0
  233. package/src/router/validation-integration.ts +443 -0
  234. package/src/router/view-rendering.ts +233 -0
  235. package/src/router/websocket.ts +100 -0
  236. package/src/routing/route-caching.ts +402 -0
  237. package/src/routing/route-throttling.ts +469 -0
  238. package/src/routing/subdomain-routing.ts +492 -0
  239. package/src/session/database-store.ts +109 -0
  240. package/src/session/file-store.ts +148 -0
  241. package/src/session/index.ts +244 -0
  242. package/src/session/memory-store.ts +88 -0
  243. package/src/session/redis-store.ts +93 -0
  244. package/src/streaming/index.ts +17 -0
  245. package/src/streaming/sse-handler.ts +482 -0
  246. package/src/streaming/stream-handler.ts +552 -0
  247. package/src/testing/auth-testing.ts +446 -0
  248. package/src/testing/file-upload-testing.ts +543 -0
  249. package/src/testing/index.ts +10 -0
  250. package/src/testing/middleware-testing.ts +322 -0
  251. package/src/testing/model-binding-testing.ts +645 -0
  252. package/src/testing/performance-testing.ts +738 -0
  253. package/src/testing/test-client.ts +310 -0
  254. package/src/testing/test-request.ts +315 -0
  255. package/src/testing/test-response.ts +332 -0
  256. package/src/testing/types.ts +224 -0
  257. package/src/testing/websocket-testing.ts +590 -0
  258. package/src/types/controller-types.ts +385 -0
  259. package/src/types/core.ts +683 -0
  260. package/src/types/middleware-types.ts +419 -0
  261. package/src/types/request-response-augmentation.ts +489 -0
  262. package/src/types/route-inference.ts +357 -0
  263. package/src/types.ts +2049 -0
  264. package/src/url.ts +126 -0
  265. package/src/utils/index.ts +1 -0
  266. package/src/utils/query-preservation.ts +201 -0
  267. package/src/utils.ts +327 -0
  268. package/src/validation/validator.ts +685 -0
  269. package/src/websocket/clustering.ts +762 -0
package/dist/auth.d.ts ADDED
@@ -0,0 +1,134 @@
1
+ import type { EnhancedRequest, JwtPayload } from './types';
2
+ export interface JwtVerifyOptions {
3
+ issuer?: string;
4
+ audience?: string;
5
+ subject?: string;
6
+ algorithms?: string[];
7
+ expiresIn?: string | number;
8
+ notBefore?: string | number;
9
+ ignoreExpiration?: boolean;
10
+ allowInvalidAsymmetricKeyTypes?: boolean;
11
+ }
12
+ export interface JwtSignOptions {
13
+ algorithm?: 'HS256' | 'HS384' | 'HS512' | 'RS256' | 'RS384' | 'RS512' | 'ES256' | 'ES384' | 'ES512' | 'PS256' | 'PS384' | 'PS512' | 'none';
14
+ expiresIn?: string | number;
15
+ notBefore?: string | number;
16
+ audience?: string | string[];
17
+ issuer?: string;
18
+ subject?: string;
19
+ keyid?: string;
20
+ jwtid?: string;
21
+ noTimestamp?: boolean;
22
+ header?: Record<string, any>;
23
+ encoding?: string;
24
+ }
25
+ export interface ApiKeyOptions {
26
+ source?: 'header' | 'query' | 'cookie';
27
+ keyName?: string;
28
+ keyPrefix?: string;
29
+ }
30
+ export interface OAuth2Config {
31
+ clientId: string;
32
+ clientSecret: string;
33
+ authorizeUrl: string;
34
+ tokenUrl: string;
35
+ redirectUri: string;
36
+ scope?: string;
37
+ state?: string;
38
+ }
39
+ export type { JwtPayload };
40
+ /**
41
+ * Simple JWT implementation for signing and verifying tokens
42
+ */
43
+ export declare class JWT {
44
+ private secret;
45
+ constructor(secret: string);
46
+ /**
47
+ * Sign payload into a JWT token
48
+ */
49
+ sign(payload: Record<string, any>, options?: JwtSignOptions): string;
50
+ /**
51
+ * Verify a JWT token and return the decoded payload
52
+ */
53
+ verify(token: string, options?: JwtVerifyOptions): Record<string, any> | null;
54
+ /**
55
+ * Decode a JWT token without verifying the signature
56
+ */
57
+ decode(token: string): {
58
+ header: Record<string, any>;
59
+ payload: Record<string, any>;
60
+ } | null;
61
+ /**
62
+ * Simple signature creation - Note: This is NOT secure for production
63
+ * In a real app, use Bun's crypto functionality or a dedicated JWT library
64
+ */
65
+ private createSignature;
66
+ /**
67
+ * Parse timespan string to seconds
68
+ */
69
+ private parseTimespan;
70
+ }
71
+ /**
72
+ * API Key manager to generate, validate and handle API keys
73
+ */
74
+ export declare class ApiKeyManager {
75
+ private keys;
76
+ private options;
77
+ constructor(options?: ApiKeyOptions);
78
+ /**
79
+ * Generate a new API key
80
+ */
81
+ generateKey(owner: string, scopes?: string[], expiresIn?: number): string;
82
+ /**
83
+ * Validate an API key
84
+ */
85
+ validateKey(key: string, requiredScopes?: string[]): boolean;
86
+ /**
87
+ * Get key information
88
+ */
89
+ getKeyInfo(key: string): {
90
+ owner: string;
91
+ scopes: string[];
92
+ expiresAt?: Date;
93
+ } | null;
94
+ /**
95
+ * Revoke an API key
96
+ */
97
+ revokeKey(key: string): boolean;
98
+ /**
99
+ * Extract API key from request based on configured source
100
+ */
101
+ extractFromRequest(req: EnhancedRequest): string | null;
102
+ /**
103
+ * Generate a random string for keys
104
+ */
105
+ private randomString;
106
+ }
107
+ /**
108
+ * OAuth2 helper for authorization code flow
109
+ */
110
+ export declare class OAuth2Helper {
111
+ private config;
112
+ constructor(config: OAuth2Config);
113
+ /**
114
+ * Generate authorization URL for redirect
115
+ */
116
+ getAuthorizationUrl(additionalParams?: Record<string, string>): string;
117
+ /**
118
+ * Exchange authorization code for access token
119
+ */
120
+ exchangeCodeForToken(code: string): Promise<Record<string, any>>;
121
+ /**
122
+ * Refresh an access token using a refresh token
123
+ */
124
+ refreshToken(refreshToken: string): Promise<Record<string, any>>;
125
+ }
126
+ /**
127
+ * Authentication helpers namespace
128
+ */
129
+ declare const Auth: {
130
+ JWT: typeof JWT;
131
+ ApiKeyManager: typeof ApiKeyManager;
132
+ OAuth2Helper: typeof OAuth2Helper;
133
+ };
134
+ export default Auth;
@@ -0,0 +1,139 @@
1
+ /**
2
+ * High-performance LRU (Least Recently Used) cache implementation
3
+ * Optimized for Bun runtime with configurable size limits and TTL support
4
+ */
5
+ export interface LRUCacheOptions {
6
+ maxSize: number;
7
+ ttl?: number;
8
+ onEvict?: (key: string, value: any) => void;
9
+ allowStale?: boolean;
10
+ updateAgeOnGet?: boolean;
11
+ }
12
+ export interface CacheEntry<T = any> {
13
+ value: T;
14
+ timestamp: number;
15
+ accessCount: number;
16
+ lastAccessed: number;
17
+ ttl?: number;
18
+ }
19
+ export interface CacheStats {
20
+ size: number;
21
+ maxSize: number;
22
+ hits: number;
23
+ misses: number;
24
+ evictions: number;
25
+ hitRate: number;
26
+ memoryUsage: number;
27
+ }
28
+ /**
29
+ * High-performance LRU cache with TTL support and detailed statistics
30
+ */
31
+ export declare class LRUCache<T = any> {
32
+ private options;
33
+ private cache;
34
+ private head;
35
+ private tail;
36
+ private stats;
37
+ constructor(options: LRUCacheOptions);
38
+ /**
39
+ * Get value from cache
40
+ */
41
+ get(key: string): T | undefined;
42
+ /**
43
+ * Set value in cache
44
+ */
45
+ set(key: string, value: T, ttl?: number): void;
46
+ /**
47
+ * Delete key from cache
48
+ */
49
+ delete(key: string): boolean;
50
+ /**
51
+ * Check if key exists in cache (without updating access time)
52
+ */
53
+ has(key: string): boolean;
54
+ /**
55
+ * Clear all entries from cache
56
+ */
57
+ clear(): void;
58
+ /**
59
+ * Get all keys in cache (ordered by recency)
60
+ */
61
+ keys(): string[];
62
+ /**
63
+ * Get all values in cache (ordered by recency)
64
+ */
65
+ values(): T[];
66
+ /**
67
+ * Get cache statistics
68
+ */
69
+ getStats(): CacheStats;
70
+ /**
71
+ * Reset statistics
72
+ */
73
+ resetStats(): void;
74
+ /**
75
+ * Prune expired entries
76
+ */
77
+ prune(): number;
78
+ /**
79
+ * Get entries sorted by access frequency
80
+ */
81
+ getFrequentlyUsed(limit?: number): Array<{
82
+ key: string;
83
+ value: T;
84
+ accessCount: number;
85
+ }>;
86
+ /**
87
+ * Resize cache (may trigger evictions)
88
+ */
89
+ resize(newMaxSize: number): void;
90
+ /**
91
+ * Check if entry is expired
92
+ */
93
+ private isExpired;
94
+ /**
95
+ * Move node to front of list (most recently used)
96
+ */
97
+ private moveToFront;
98
+ /**
99
+ * Add node to front of list
100
+ */
101
+ private addToFront;
102
+ /**
103
+ * Remove node from list
104
+ */
105
+ private removeNode;
106
+ /**
107
+ * Evict least recently used entry
108
+ */
109
+ private evictLRU;
110
+ /**
111
+ * Estimate memory usage in bytes
112
+ */
113
+ private estimateMemoryUsage;
114
+ /**
115
+ * Estimate size of a value in bytes
116
+ */
117
+ private estimateValueSize;
118
+ }
119
+ /**
120
+ * Factory function to create LRU cache with common configurations
121
+ */
122
+ export declare const createLRUCache: {
123
+ /**
124
+ * Create a small cache for frequently accessed items
125
+ */
126
+ small: <T = any>(ttl?: number) => LRUCache<T>;
127
+ /**
128
+ * Create a medium cache for general purpose use
129
+ */
130
+ medium: <T = any>(ttl?: number) => LRUCache<T>;
131
+ /**
132
+ * Create a large cache for heavy caching scenarios
133
+ */
134
+ large: <T = any>(ttl?: number) => LRUCache<T>;
135
+ /**
136
+ * Create a custom configured cache
137
+ */
138
+ custom: <T = any>(options: LRUCacheOptions) => LRUCache<T>;
139
+ };
@@ -0,0 +1,151 @@
1
+ import type { EnhancedRequest, MiddlewareHandler } from '../types';
2
+ import type { LRUCacheOptions } from './lru-cache';
3
+ /**
4
+ * Middleware result memoization for expensive operations
5
+ * Caches middleware results based on request characteristics
6
+ */
7
+ export interface MemoizationOptions extends Omit<LRUCacheOptions, 'maxSize'> {
8
+ maxSize: number;
9
+ keyGenerator?: (req: EnhancedRequest) => string;
10
+ shouldMemoize?: (req: EnhancedRequest, result: any) => boolean;
11
+ resultSerializer?: (result: any) => any;
12
+ resultDeserializer?: (serialized: any) => any;
13
+ }
14
+ export interface MemoizedResult<T = any> {
15
+ value: T;
16
+ timestamp: number;
17
+ requestFingerprint: string;
18
+ executionTime: number;
19
+ hitCount: number;
20
+ }
21
+ export interface MemoizationStats {
22
+ totalRequests: number;
23
+ cacheHits: number;
24
+ cacheMisses: number;
25
+ hitRate: number;
26
+ averageExecutionTime: number;
27
+ totalTimeSaved: number;
28
+ memoryUsage: number;
29
+ }
30
+ /**
31
+ * Middleware memoization system for caching expensive operations
32
+ */
33
+ export declare class MiddlewareMemoizer {
34
+ private options;
35
+ private cache;
36
+ private stats;
37
+ constructor(options: MemoizationOptions);
38
+ /**
39
+ * Create a memoized version of a middleware function
40
+ */
41
+ memoize<_T = any>(middleware: MiddlewareHandler, options?: {
42
+ name?: string;
43
+ keyGenerator?: (req: EnhancedRequest) => string;
44
+ shouldMemoize?: (req: EnhancedRequest, result: any) => boolean;
45
+ ttl?: number;
46
+ }): MiddlewareHandler;
47
+ /**
48
+ * Create a memoized async function (not middleware)
49
+ */
50
+ memoizeFunction<TArgs extends any[], TResult>(fn: (...args: TArgs) => Promise<TResult>, options?: {
51
+ name?: string;
52
+ keyGenerator?: (...args: TArgs) => string;
53
+ shouldMemoize?: (result: TResult, ...args: TArgs) => boolean;
54
+ ttl?: number;
55
+ }): (...args: TArgs) => Promise<TResult>;
56
+ /**
57
+ * Invalidate cached results by pattern
58
+ */
59
+ invalidate(pattern: string | RegExp): number;
60
+ /**
61
+ * Invalidate cached results for specific user
62
+ */
63
+ invalidateForUser(userId: string): number;
64
+ /**
65
+ * Invalidate cached results by tag
66
+ */
67
+ invalidateByTag(tag: string): number;
68
+ /**
69
+ * Get most frequently used cached results
70
+ */
71
+ getPopularResults(limit?: number): Array<{
72
+ key: string;
73
+ hitCount: number;
74
+ executionTime: number;
75
+ timeSaved: number;
76
+ }>;
77
+ /**
78
+ * Get memoization statistics
79
+ */
80
+ getStats(): MemoizationStats;
81
+ /**
82
+ * Clear cache and reset statistics
83
+ */
84
+ clear(): void;
85
+ /**
86
+ * Prune expired entries
87
+ */
88
+ prune(): number;
89
+ /**
90
+ * Generate cache key for middleware
91
+ */
92
+ private generateCacheKey;
93
+ /**
94
+ * Generate request fingerprint for cache validation
95
+ */
96
+ private generateRequestFingerprint;
97
+ /**
98
+ * Update hit rate statistics
99
+ */
100
+ private updateHitRate;
101
+ }
102
+ /**
103
+ * Common memoization patterns and utilities
104
+ */
105
+ export declare class MemoizationPatterns {
106
+ /**
107
+ * Memoize database queries
108
+ */
109
+ static createDatabaseMemoizer(options?: MemoizationOptions): MiddlewareMemoizer;
110
+ /**
111
+ * Memoize API calls
112
+ */
113
+ static createApiMemoizer(options?: MemoizationOptions): MiddlewareMemoizer;
114
+ /**
115
+ * Memoize authentication checks
116
+ */
117
+ static createAuthMemoizer(options?: MemoizationOptions): MiddlewareMemoizer;
118
+ /**
119
+ * Memoize rate limiting checks
120
+ */
121
+ static createRateLimitMemoizer(options?: MemoizationOptions): MiddlewareMemoizer;
122
+ /**
123
+ * Memoize expensive computations
124
+ */
125
+ static createComputationMemoizer(options?: MemoizationOptions): MiddlewareMemoizer;
126
+ }
127
+ /**
128
+ * Decorator for memoizing class methods
129
+ */
130
+ export declare function Memoize(options?: {
131
+ memoizer: MiddlewareMemoizer;
132
+ keyGenerator?: (...args: any[]) => string;
133
+ ttl?: number;
134
+ }): MethodDecorator;
135
+ /**
136
+ * Factory functions for creating memoizers
137
+ */
138
+ export declare const createMemoizer: {
139
+ /**
140
+ * Create memoizer for development
141
+ */
142
+ development: () => MiddlewareMemoizer;
143
+ /**
144
+ * Create memoizer for production
145
+ */
146
+ production: () => MiddlewareMemoizer;
147
+ /**
148
+ * Create custom memoizer
149
+ */
150
+ custom: (options: MemoizationOptions) => MiddlewareMemoizer;
151
+ };
@@ -0,0 +1,161 @@
1
+ import type { LRUCache } from './lru-cache';
2
+ import type { StreamingCache } from './streaming-cache';
3
+ /**
4
+ * Route cache warming system for pre-populating caches with common routes
5
+ */
6
+ export interface WarmupRoute {
7
+ path: string;
8
+ method: string;
9
+ priority: number;
10
+ frequency: number;
11
+ params?: Record<string, string>;
12
+ query?: Record<string, string>;
13
+ headers?: Record<string, string>;
14
+ warmupData?: any;
15
+ }
16
+ export interface AnalyticsRoute {
17
+ path: string;
18
+ method: string;
19
+ frequency: number;
20
+ }
21
+ export interface RecentRoute {
22
+ path: string;
23
+ method: string;
24
+ timestamp: number;
25
+ }
26
+ export interface PrecomputeRoute {
27
+ path: string;
28
+ method: string;
29
+ computeFunction: () => Promise<any>;
30
+ cacheKey?: string;
31
+ ttl?: number;
32
+ }
33
+ export interface UserSegment {
34
+ segment: string;
35
+ commonRoutes: string[];
36
+ priority: number;
37
+ }
38
+ export interface TimeRange {
39
+ start: number;
40
+ end: number;
41
+ }
42
+ export interface TimeBasedPattern {
43
+ timeRange: TimeRange;
44
+ routes: string[];
45
+ priority: number;
46
+ }
47
+ export interface GeographicPattern {
48
+ region: string;
49
+ routes: string[];
50
+ priority: number;
51
+ }
52
+ export interface IntelligentWarmupPatterns {
53
+ userSegments?: UserSegment[];
54
+ timeBasedPatterns?: TimeBasedPattern[];
55
+ geographicPatterns?: GeographicPattern[];
56
+ }
57
+ export interface WarmupConfig {
58
+ enabled: boolean;
59
+ maxConcurrency: number;
60
+ warmupTimeout: number;
61
+ retryAttempts: number;
62
+ retryDelay: number;
63
+ scheduleInterval?: number;
64
+ priorityThreshold: number;
65
+ }
66
+ export interface WarmupStats {
67
+ totalRoutes: number;
68
+ successfulWarmups: number;
69
+ failedWarmups: number;
70
+ averageWarmupTime: number;
71
+ lastWarmupTime: number;
72
+ cacheHitRateImprovement: number;
73
+ }
74
+ /**
75
+ * Route cache warmer for pre-populating caches with frequently accessed routes
76
+ */
77
+ export declare class RouteCacheWarmer {
78
+ private config;
79
+ private routes;
80
+ private routeCache;
81
+ private streamingCache?;
82
+ private stats;
83
+ private warmupTimer?;
84
+ constructor(config: WarmupConfig, routeCache: LRUCache<any>, streamingCache?: StreamingCache);
85
+ /**
86
+ * Register routes for cache warming
87
+ */
88
+ registerRoutes(routes: WarmupRoute[]): void;
89
+ /**
90
+ * Register a single route for cache warming
91
+ */
92
+ registerRoute(route: WarmupRoute): void;
93
+ /**
94
+ * Warm cache with registered routes
95
+ */
96
+ warmCache(options?: {
97
+ routes?: string[];
98
+ maxRoutes?: number;
99
+ skipLowPriority?: boolean;
100
+ }): Promise<WarmupStats>;
101
+ /**
102
+ * Warm specific route patterns based on analytics
103
+ */
104
+ warmFromAnalytics(analytics: {
105
+ topRoutes: AnalyticsRoute[];
106
+ recentRoutes: RecentRoute[];
107
+ }): Promise<void>;
108
+ /**
109
+ * Pre-compute and cache expensive route operations
110
+ */
111
+ precomputeRoutes(routes: PrecomputeRoute[]): Promise<number>;
112
+ /**
113
+ * Warm cache based on route patterns and user behavior
114
+ */
115
+ intelligentWarmup(patterns: IntelligentWarmupPatterns): Promise<void>;
116
+ /**
117
+ * Get cache warming statistics
118
+ */
119
+ getStats(): WarmupStats;
120
+ /**
121
+ * Clear warmup statistics
122
+ */
123
+ resetStats(): void;
124
+ /**
125
+ * Stop periodic warmup
126
+ */
127
+ stop(): void;
128
+ /**
129
+ * Warm routes with concurrency control
130
+ */
131
+ private warmRoutesWithConcurrency;
132
+ /**
133
+ * Warm a single route
134
+ */
135
+ private warmSingleRoute;
136
+ /**
137
+ * Build URL for route warming
138
+ */
139
+ private buildRouteUrl;
140
+ /**
141
+ * Schedule periodic cache warmup
142
+ */
143
+ private schedulePeriodicWarmup;
144
+ }
145
+ /**
146
+ * Factory functions for creating route cache warmers
147
+ */
148
+ export declare const createRouteCacheWarmer: {
149
+ /**
150
+ * Create warmer for development environment
151
+ */
152
+ development: (routeCache: LRUCache<any>, streamingCache?: StreamingCache) => RouteCacheWarmer;
153
+ /**
154
+ * Create warmer for production environment
155
+ */
156
+ production: (routeCache: LRUCache<any>, streamingCache?: StreamingCache) => RouteCacheWarmer;
157
+ /**
158
+ * Create warmer with custom configuration
159
+ */
160
+ custom: (config: WarmupConfig, routeCache: LRUCache<any>, streamingCache?: StreamingCache) => RouteCacheWarmer;
161
+ };