@stacksjs/bun-router 0.0.2

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 (131) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +397 -0
  3. package/bin/cli.ts +9 -0
  4. package/dist/auth.d.ts +77 -0
  5. package/dist/cache/lru-cache.d.ts +88 -0
  6. package/dist/cache/middleware-memoization.d.ts +101 -0
  7. package/dist/cache/route-cache-warmer.d.ts +125 -0
  8. package/dist/cache/sqlite-cache.d.ts +114 -0
  9. package/dist/cache/streaming-cache.d.ts +86 -0
  10. package/dist/chunk-r15a48wc.js +25448 -0
  11. package/dist/cli/colors.d.ts +12 -0
  12. package/dist/cli/index.d.ts +10 -0
  13. package/dist/cli/middleware.d.ts +31 -0
  14. package/dist/cli/openapi.d.ts +17 -0
  15. package/dist/cli/router.d.ts +15 -0
  16. package/dist/cli/routes.d.ts +30 -0
  17. package/dist/cli/utils.d.ts +68 -0
  18. package/dist/cli.d.ts +0 -0
  19. package/dist/cli.js +3195 -0
  20. package/dist/config.d.ts +274 -0
  21. package/dist/container/container.d.ts +141 -0
  22. package/dist/container/contextual-binding.d.ts +112 -0
  23. package/dist/container/decorators.d.ts +114 -0
  24. package/dist/container/service-provider.d.ts +221 -0
  25. package/dist/development/hot-reload.d.ts +129 -0
  26. package/dist/development/index.d.ts +144 -0
  27. package/dist/development/performance-profiler.d.ts +152 -0
  28. package/dist/development/route-debugger.d.ts +102 -0
  29. package/dist/development/route-inspector.d.ts +142 -0
  30. package/dist/development/typescript-utilities.d.ts +116 -0
  31. package/dist/docs.d.ts +10 -0
  32. package/dist/errors/circuit-breaker.d.ts +138 -0
  33. package/dist/errors/error-handler.d.ts +57 -0
  34. package/dist/errors/error-reporting.d.ts +135 -0
  35. package/dist/errors/exceptions.d.ts +178 -0
  36. package/dist/errors/graceful-degradation.d.ts +130 -0
  37. package/dist/errors/index.d.ts +6 -0
  38. package/dist/errors/router-errors.d.ts +97 -0
  39. package/dist/file-serving/static-files.d.ts +98 -0
  40. package/dist/index.d.ts +10 -0
  41. package/dist/index.js +13417 -0
  42. package/dist/middleware/auth.d.ts +34 -0
  43. package/dist/middleware/content_security_policy.d.ts +54 -0
  44. package/dist/middleware/cors.d.ts +5 -0
  45. package/dist/middleware/csrf.d.ts +7 -0
  46. package/dist/middleware/ddos_protection.d.ts +47 -0
  47. package/dist/middleware/file_security.d.ts +23 -0
  48. package/dist/middleware/file_upload.d.ts +41 -0
  49. package/dist/middleware/helmet.d.ts +54 -0
  50. package/dist/middleware/index.d.ts +55 -0
  51. package/dist/middleware/input_validation.d.ts +46 -0
  52. package/dist/middleware/json_body.d.ts +4 -0
  53. package/dist/middleware/performance_alerting.d.ts +88 -0
  54. package/dist/middleware/performance_dashboard.d.ts +97 -0
  55. package/dist/middleware/performance_monitor.d.ts +236 -0
  56. package/dist/middleware/pipeline.d.ts +90 -0
  57. package/dist/middleware/rate_limit.d.ts +33 -0
  58. package/dist/middleware/request_id.d.ts +4 -0
  59. package/dist/middleware/request_signing.d.ts +96 -0
  60. package/dist/middleware/request_tracer.d.ts +76 -0
  61. package/dist/middleware/response_cache.d.ts +90 -0
  62. package/dist/middleware/security.d.ts +70 -0
  63. package/dist/middleware/security_suite.d.ts +46 -0
  64. package/dist/middleware/session.d.ts +7 -0
  65. package/dist/model-binding/index.d.ts +17 -0
  66. package/dist/model-binding/model-middleware.d.ts +80 -0
  67. package/dist/model-binding/model-registry.d.ts +125 -0
  68. package/dist/model-binding.d.ts +123 -0
  69. package/dist/model-resolver-factory.d.ts +31 -0
  70. package/dist/observability/correlation.d.ts +131 -0
  71. package/dist/observability/health-checks.d.ts +129 -0
  72. package/dist/observability/index.d.ts +92 -0
  73. package/dist/observability/integration.d.ts +112 -0
  74. package/dist/observability/metrics.d.ts +135 -0
  75. package/dist/observability/tracing.d.ts +112 -0
  76. package/dist/optimization/bun-utilities.d.ts +106 -0
  77. package/dist/query-builder-integration.d.ts +24 -0
  78. package/dist/request/enhanced-request.d.ts +143 -0
  79. package/dist/request/macros.d.ts +267 -0
  80. package/dist/response/macros.d.ts +207 -0
  81. package/dist/response/response-factory.d.ts +93 -0
  82. package/dist/router/file-based-routing.d.ts +40 -0
  83. package/dist/router/file-streaming.d.ts +6 -0
  84. package/dist/router/fluent-router.d.ts +179 -0
  85. package/dist/router/fluent-routing.d.ts +198 -0
  86. package/dist/router/group-organization.d.ts +5 -0
  87. package/dist/router/handler-resolver.d.ts +13 -0
  88. package/dist/router/http-methods.d.ts +10 -0
  89. package/dist/router/index.d.ts +114 -0
  90. package/dist/router/middleware-integration.d.ts +86 -0
  91. package/dist/router/middleware.d.ts +5 -0
  92. package/dist/router/model-binding.d.ts +7 -0
  93. package/dist/router/optimized-route-matching.d.ts +6 -0
  94. package/dist/router/route-building.d.ts +5 -0
  95. package/dist/router/route-compiler.d.ts +67 -0
  96. package/dist/router/route-matching.d.ts +5 -0
  97. package/dist/router/route-trie.d.ts +69 -0
  98. package/dist/router/router.d.ts +133 -0
  99. package/dist/router/server.d.ts +5 -0
  100. package/dist/router/validation-integration.d.ts +116 -0
  101. package/dist/router/view-rendering.d.ts +5 -0
  102. package/dist/router/websocket.d.ts +5 -0
  103. package/dist/routing/route-caching.d.ts +105 -0
  104. package/dist/routing/route-throttling.d.ts +112 -0
  105. package/dist/routing/subdomain-routing.d.ts +159 -0
  106. package/dist/streaming/index.d.ts +15 -0
  107. package/dist/streaming/sse-handler.d.ts +81 -0
  108. package/dist/streaming/stream-handler.d.ts +81 -0
  109. package/dist/testing/auth-testing.d.ts +107 -0
  110. package/dist/testing/file-upload-testing.d.ts +139 -0
  111. package/dist/testing/index.d.ts +10 -0
  112. package/dist/testing/middleware-testing.d.ts +99 -0
  113. package/dist/testing/model-binding-testing.d.ts +132 -0
  114. package/dist/testing/performance-testing.d.ts +202 -0
  115. package/dist/testing/test-client.d.ts +58 -0
  116. package/dist/testing/test-request.d.ts +43 -0
  117. package/dist/testing/test-response.d.ts +45 -0
  118. package/dist/testing/types.d.ts +206 -0
  119. package/dist/testing/websocket-testing.d.ts +170 -0
  120. package/dist/types/controller-types.d.ts +303 -0
  121. package/dist/types/core.d.ts +526 -0
  122. package/dist/types/middleware-types.d.ts +315 -0
  123. package/dist/types/request-response-augmentation.d.ts +373 -0
  124. package/dist/types/route-inference.d.ts +287 -0
  125. package/dist/types.d.ts +1620 -0
  126. package/dist/utils/index.d.ts +1 -0
  127. package/dist/utils/query-preservation.d.ts +31 -0
  128. package/dist/utils.d.ts +69 -0
  129. package/dist/validation/validator.d.ts +169 -0
  130. package/dist/websocket/clustering.d.ts +114 -0
  131. package/package.json +81 -0
@@ -0,0 +1,125 @@
1
+ import type { LRUCache } from './lru-cache';
2
+ import type { StreamingCache } from './streaming-cache';
3
+ /**
4
+ * Factory functions for creating route cache warmers
5
+ */
6
+ export declare const createRouteCacheWarmer: {
7
+ /**
8
+ * Create warmer for development environment
9
+ */
10
+ development: (routeCache: LRUCache<any>, streamingCache?: StreamingCache) => any;
11
+ /**
12
+ * Create warmer for production environment
13
+ */
14
+ production: (routeCache: LRUCache<any>, streamingCache?: StreamingCache) => any;
15
+ /**
16
+ * Create warmer with custom configuration
17
+ */
18
+ custom: ( config: WarmupConfig, routeCache: LRUCache<any>, streamingCache?: StreamingCache, ) => any
19
+ };
20
+ /**
21
+ * Route cache warming system for pre-populating caches with common routes
22
+ */
23
+ export declare interface WarmupRoute {
24
+ path: string
25
+ method: string
26
+ priority: number
27
+ frequency: number
28
+ params?: Record<string, string>
29
+ query?: Record<string, string>
30
+ headers?: Record<string, string>
31
+ warmupData?: any
32
+ }
33
+ export declare interface AnalyticsRoute {
34
+ path: string
35
+ method: string
36
+ frequency: number
37
+ }
38
+ export declare interface RecentRoute {
39
+ path: string
40
+ method: string
41
+ timestamp: number
42
+ }
43
+ export declare interface PrecomputeRoute {
44
+ path: string
45
+ method: string
46
+ computeFunction: () => Promise<any>
47
+ cacheKey?: string
48
+ ttl?: number
49
+ }
50
+ export declare interface UserSegment {
51
+ segment: string
52
+ commonRoutes: string[]
53
+ priority: number
54
+ }
55
+ export declare interface TimeRange {
56
+ start: number
57
+ end: number
58
+ }
59
+ export declare interface TimeBasedPattern {
60
+ timeRange: TimeRange
61
+ routes: string[]
62
+ priority: number
63
+ }
64
+ export declare interface GeographicPattern {
65
+ region: string
66
+ routes: string[]
67
+ priority: number
68
+ }
69
+ export declare interface IntelligentWarmupPatterns {
70
+ userSegments?: UserSegment[]
71
+ timeBasedPatterns?: TimeBasedPattern[]
72
+ geographicPatterns?: GeographicPattern[]
73
+ }
74
+ export declare interface WarmupConfig {
75
+ enabled: boolean
76
+ maxConcurrency: number
77
+ warmupTimeout: number
78
+ retryAttempts: number
79
+ retryDelay: number
80
+ scheduleInterval?: number
81
+ priorityThreshold: number
82
+ }
83
+ export declare interface WarmupStats {
84
+ totalRoutes: number
85
+ successfulWarmups: number
86
+ failedWarmups: number
87
+ averageWarmupTime: number
88
+ lastWarmupTime: number
89
+ cacheHitRateImprovement: number
90
+ }
91
+ /**
92
+ * Route cache warmer for pre-populating caches with frequently accessed routes
93
+ */
94
+ export declare class RouteCacheWarmer {
95
+ private routes: WarmupRoute[];
96
+ private routeCache: LRUCache<any>;
97
+ private streamingCache?: StreamingCache;
98
+ private stats: WarmupStats;
99
+ private warmupTimer?: Timer;
100
+ private config: WarmupConfig;
101
+ constructor(config: WarmupConfig, routeCache: LRUCache<any>, streamingCache?: StreamingCache);
102
+ registerRoutes(routes: WarmupRoute[]): void;
103
+ registerRoute(route: WarmupRoute): void;
104
+ warmCache(options?: {
105
+ routes?: string[] // Specific routes to warm (by path)
106
+ maxRoutes?: number // Maximum number of routes to warm
107
+ skipLowPriority?: boolean
108
+ }): Promise<WarmupStats>;
109
+ warmFromAnalytics(analytics: {
110
+ topRoutes: AnalyticsRoute[]
111
+ recentRoutes: RecentRoute[]
112
+ }): Promise<void>;
113
+ precomputeRoutes(routes: PrecomputeRoute[]): Promise<number>;
114
+ intelligentWarmup(patterns: IntelligentWarmupPatterns): Promise<void>;
115
+ getStats(): WarmupStats;
116
+ resetStats(): void;
117
+ stop(): void;
118
+ private warmRoutesWithConcurrency(routes: WarmupRoute[]): Promise<{
119
+ successful: number
120
+ failed: number
121
+ }>;
122
+ private warmSingleRoute(route: WarmupRoute): Promise<void>;
123
+ private buildRouteUrl(route: WarmupRoute): string;
124
+ private schedulePeriodicWarmup(): void;
125
+ }
@@ -0,0 +1,114 @@
1
+ import { Database } from 'bun:sqlite';
2
+ /**
3
+ * Cache middleware factory
4
+ */
5
+ export declare function createSQLiteCacheMiddleware(cache: SQLiteCache, options?: {
6
+ keyGenerator?: (request: Request) => string
7
+ ttl?: number
8
+ skipMethods?: string[]
9
+ skipPaths?: string[]
10
+ skipHeaders?: string[]
11
+ }): void;
12
+ /**
13
+ * SQLite cache helpers
14
+ */
15
+ export declare const SQLiteCacheHelpers: {
16
+ /**
17
+ * Create session cache
18
+ */
19
+ createSessionCache: (cache: SQLiteCache) => unknown;
20
+ /**
21
+ * Create rate limiting cache
22
+ */
23
+ createRateLimitCache: (cache: SQLiteCache) => unknown;
24
+ /**
25
+ * Create query result cache
26
+ */
27
+ createQueryCache: (cache: SQLiteCache) => unknown
28
+ };
29
+ export declare interface SQLiteCacheConfig {
30
+ filename?: string
31
+ memory?: boolean
32
+ wal?: boolean
33
+ synchronous?: 'OFF' | 'NORMAL' | 'FULL'
34
+ journalMode?: 'DELETE' | 'TRUNCATE' | 'PERSIST' | 'MEMORY' | 'WAL' | 'OFF'
35
+ cacheSize?: number
36
+ pageSize?: number
37
+ maxSize?: number
38
+ defaultTTL?: number
39
+ cleanupInterval?: number
40
+ compression?: boolean
41
+ }
42
+ export declare interface CacheEntry {
43
+ key: string
44
+ value: string
45
+ expires: number
46
+ created: number
47
+ accessed: number
48
+ hits: number
49
+ size: number
50
+ compressed: boolean
51
+ }
52
+ export declare interface CacheStats {
53
+ totalEntries: number
54
+ totalSize: number
55
+ hitRate: number
56
+ missRate: number
57
+ evictions: number
58
+ compressionRatio: number
59
+ averageAccessTime: number
60
+ }
61
+ /**
62
+ * High-performance SQLite-based cache
63
+ */
64
+ export declare class SQLiteCache {
65
+ private db: Database;
66
+ private config: Required<SQLiteCacheConfig>;
67
+ private stats: CacheStats;
68
+ private cleanupTimer?: Timer;
69
+ private preparedStatements: {
70
+ get: any
71
+ set: any
72
+ delete: any
73
+ exists: any
74
+ clear: any
75
+ cleanup: any
76
+ stats: any
77
+ touch: any
78
+ };
79
+ constructor(config?: SQLiteCacheConfig);
80
+ get<T = any>(key: string): T | null;
81
+ set<T = any>(key: string, value: T, ttl?: number): boolean;
82
+ delete(key: string): boolean;
83
+ has(key: string): boolean;
84
+ clear(): boolean;
85
+ getStats(): CacheStats;
86
+ keys(pattern?: string): string[];
87
+ mget<T = any>(keys: string[]): Record<string, T | null>;
88
+ mset<T = any>(entries: Record<string, T>, ttl?: number): boolean;
89
+ increment(key: string, delta?: number, ttl?: number): number | null;
90
+ decrement(key: string, delta?: number, ttl?: number): number | null;
91
+ setnx<T = any>(key: string, value: T, ttl?: number): boolean;
92
+ getdel<T = any>(key: string): T | null;
93
+ expire(key: string, ttl: number): boolean;
94
+ ttl(key: string): number;
95
+ cleanup(): number;
96
+ close(): void;
97
+ private initializeDatabase(): void;
98
+ private prepareStatements(): void;
99
+ private startCleanupTimer(): void;
100
+ private evictIfNeeded(newEntrySize: number): void;
101
+ private updateCacheStats(): void;
102
+ private updateStats(operation: 'hit' | 'miss' | 'set', responseTime: number): void;
103
+ private compress(value: string): string | null;
104
+ private decompress(value: string): string;
105
+ }
106
+ /**
107
+ * SQLite cache factory
108
+ */
109
+ export declare class SQLiteCacheFactory {
110
+ static createMemoryCache(config?: Partial<SQLiteCacheConfig>): SQLiteCache;
111
+ static createPersistentCache(filename: string, config?: Partial<SQLiteCacheConfig>): SQLiteCache;
112
+ static createHighPerformanceCache(config?: Partial<SQLiteCacheConfig>): SQLiteCache;
113
+ static createDevelopmentCache(config?: Partial<SQLiteCacheConfig>): SQLiteCache;
114
+ }
@@ -0,0 +1,86 @@
1
+ import { LRUCache } from './lru-cache';
2
+ import type { LRUCacheOptions } from './lru-cache';
3
+ /**
4
+ * Factory functions for creating streaming caches with common configurations
5
+ */
6
+ export declare const createStreamingCache: {
7
+ /**
8
+ * Create cache optimized for API responses
9
+ */
10
+ api: (maxSize: number?) => any;
11
+ /**
12
+ * Create cache optimized for static assets
13
+ */
14
+ assets: (maxSize: number?) => any;
15
+ /**
16
+ * Create cache optimized for HTML pages
17
+ */
18
+ pages: (maxSize: number?) => any;
19
+ /**
20
+ * Create custom configured streaming cache
21
+ */
22
+ custom: (options: StreamingCacheOptions) => any
23
+ };
24
+ /**
25
+ * Response streaming cache for large responses
26
+ * Optimized for handling large payloads with memory-efficient streaming
27
+ */
28
+ export declare interface StreamingCacheOptions extends Omit<LRUCacheOptions, 'maxSize'> {
29
+ maxSize: number
30
+ maxResponseSize: number
31
+ chunkSize: number
32
+ compressionEnabled: boolean
33
+ compressionThreshold: number
34
+ }
35
+ export declare interface CachedResponse {
36
+ status: number
37
+ statusText: string
38
+ headers: Record<string, string>
39
+ body: Uint8Array | null
40
+ compressed: boolean
41
+ originalSize: number
42
+ timestamp: number
43
+ etag?: string
44
+ }
45
+ export declare interface StreamingCacheStats {
46
+ totalResponses: number
47
+ totalSize: number
48
+ compressionRatio: number
49
+ averageResponseSize: number
50
+ largestResponse: number
51
+ streamingHits: number
52
+ streamingMisses: number
53
+ }
54
+ /**
55
+ * High-performance streaming cache for large HTTP responses
56
+ */
57
+ export declare class StreamingCache {
58
+ private cache: LRUCache<CachedResponse>;
59
+ private stats: StreamingCacheStats;
60
+ private options: StreamingCacheOptions;
61
+ constructor(options: StreamingCacheOptions);
62
+ cacheResponse(key: string, response: Response, options?: {
63
+ ttl?: number
64
+ forceCache?: boolean
65
+ generateETag?: boolean
66
+ }): Promise<void>;
67
+ getStreamingResponse(key: string): Promise<Response | null>;
68
+ shouldCache(response: Response): boolean;
69
+ warmCache(routes: Array<{
70
+ key: string
71
+ url: string
72
+ method?: string
73
+ headers?: Record<string, string>
74
+ }>): Promise<number>;
75
+ createConditionalResponse(key: string, ifNoneMatch?: string): Response | null;
76
+ getStats(): StreamingCacheStats & { lruStats: any };
77
+ clear(): void;
78
+ prune(): number;
79
+ private createStreamingResponse(body: Uint8Array, cachedResponse: CachedResponse, headers: Headers): Response;
80
+ private extractHeaders(response: Response): Record<string, string>;
81
+ private compressData(data: Uint8Array): Promise<Uint8Array>;
82
+ private decompressData(data: Uint8Array): Promise<Uint8Array>;
83
+ private generateETag(data: Uint8Array): Promise<string>;
84
+ private updateStatsOnCache(originalSize: number, compressedSize: number): void;
85
+ private updateStatsOnEviction(cachedResponse: CachedResponse): void;
86
+ }