@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,287 @@
1
+ // Typed request interface
2
+ export declare interface TypedRequest<TPath extends string = string, TQuery extends Record<string, any> = Record<string, never>, TBody = unknown, TContext = Record<string, never>> extends Omit<Request, 'body'> {
3
+ params: ExtractTypedParams<TPath>
4
+ query: ExtractQueryParams<TQuery>
5
+ body: TBody
6
+ context: TContext
7
+ }
8
+ // Route definition with type inference
9
+ export declare interface TypedRoute<TPath extends string, TQuery extends Record<string, any> = Record<string, never>, TBody = unknown, TContext = Record<string, never>> {
10
+ method: RouteMethod
11
+ path: ValidateRoutePattern<TPath>
12
+ handler: RouteHandler<TPath, TQuery, TBody, TContext>
13
+ middleware?: TypedMiddleware<any, any, any, TContext>[]
14
+ schema?: {
15
+ params?: RouteParamSchema<ExtractTypedParams<TPath>>
16
+ query?: TQuery
17
+ body?: BodySchema<TBody>
18
+ response?: ResponseSchema
19
+ }
20
+ }
21
+ // Body schema types
22
+ export declare interface BodySchema<T = unknown> {
23
+ type: 'json' | 'form' | 'text' | 'buffer' | 'stream'
24
+ schema?: T extends object ? {
25
+ [K in keyof T]: {
26
+ type: T[K] extends string ? 'string' :
27
+ T[K] extends number ? 'number' :
28
+ T[K] extends boolean ? 'boolean' :
29
+ T[K] extends Date ? 'date' :
30
+ T[K] extends Array<infer _U> ? 'array' : 'object'
31
+ required?: boolean
32
+ items?: T[K] extends Array<infer _U> ? BodySchema<_U> : never
33
+ properties?: T[K] extends object ? BodySchema<T[K]> : never
34
+ }
35
+ } : never
36
+ required?: (keyof T)[]
37
+ additionalProperties?: boolean
38
+ }
39
+ // Response schema types
40
+ export declare interface ResponseSchema {
41
+
42
+ }
43
+ // Route group types
44
+ export declare interface RouteGroup<TPrefix extends string = '', TContext = object> {
45
+ prefix: TPrefix
46
+ middleware?: TypedMiddleware<any, any, any, TContext>[]
47
+ routes: TypedRoute<any, any, any, TContext>[]
48
+ }
49
+ // Middleware type (forward declaration - will be defined in middleware types)
50
+ export declare interface TypedMiddleware<TRequest = any, TResponse = any, TNext = any, _TContext = Record<string, never>> {
51
+ (request: TRequest, next: TNext): Promise<TResponse> | TResponse
52
+ }
53
+ // Route builder helper types
54
+ export declare interface RouteBuilder<TContext = object> {
55
+ get: <TPath extends string, TQuery extends Record<string, any> = object>(
56
+ path: ValidateRoutePattern<TPath>,
57
+ handler: RouteHandler<TPath, TQuery, never, TContext>
58
+ ) => TypedRoute<TPath, TQuery, never, TContext>
59
+ post: <TPath extends string, TQuery extends Record<string, any> = object, TBody = unknown>(
60
+ path: ValidateRoutePattern<TPath>,
61
+ handler: RouteHandler<TPath, TQuery, TBody, TContext>
62
+ ) => TypedRoute<TPath, TQuery, TBody, TContext>
63
+ put: <TPath extends string, TQuery extends Record<string, any> = object, TBody = unknown>(
64
+ path: ValidateRoutePattern<TPath>,
65
+ handler: RouteHandler<TPath, TQuery, TBody, TContext>
66
+ ) => TypedRoute<TPath, TQuery, TBody, TContext>
67
+ patch: <TPath extends string, TQuery extends Record<string, any> = object, TBody = unknown>(
68
+ path: ValidateRoutePattern<TPath>,
69
+ handler: RouteHandler<TPath, TQuery, TBody, TContext>
70
+ ) => TypedRoute<TPath, TQuery, TBody, TContext>
71
+ delete: <TPath extends string, TQuery extends Record<string, any> = object>(
72
+ path: ValidateRoutePattern<TPath>,
73
+ handler: RouteHandler<TPath, TQuery, never, TContext>
74
+ ) => TypedRoute<TPath, TQuery, never, TContext>
75
+ }
76
+ // Type-safe route registration
77
+ export declare interface TypeSafeRouter<TContext = object> {
78
+ register: <TPath extends string, TQuery extends Record<string, any> = object, TBody = unknown>(
79
+ route: TypedRoute<TPath, TQuery, TBody, TContext>
80
+ ) => void
81
+ group: <TPrefix extends string>(
82
+ prefix: TPrefix,
83
+ configure: (builder: RouteBuilder<TContext>) => void
84
+ ) => RouteGroup<TPrefix, TContext>
85
+ use: <TNewContext>(
86
+ middleware: TypedMiddleware<any, any, any, TNewContext>
87
+ ) => TypeSafeRouter<TContext & TNewContext>
88
+ }
89
+ // OpenAPI schema generation types
90
+ export declare interface GenerateOpenAPISchema<T extends TypedRoute<any, any, any, any>> {
91
+ paths: {
92
+ [K in T extends TypedRoute<infer Path, any, any, any> ? Path : never]: {
93
+ [M in T extends TypedRoute<any, any, any, any> ? Lowercase<T['method']> : never]: {
94
+ parameters?: Array<{
95
+ name: string
96
+ in: 'path' | 'query'
97
+ required: boolean
98
+ schema: { type: string, format?: string }
99
+ }>
100
+ requestBody?: {
101
+ content: {
102
+ 'application/json': { schema: any }
103
+ }
104
+ }
105
+ responses: {
106
+ [status: number]: {
107
+ description: string
108
+ content?: {
109
+ 'application/json': { schema: any }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * Route Parameter Type Inference
119
+ *
120
+ * Advanced TypeScript utilities for inferring route parameter types from URL patterns
121
+ */
122
+ // Base types for route parameter extraction
123
+ export type ExtractRouteParams<T extends string> = T extends `${infer _Start}:${infer Param}/${infer Rest}`
124
+ ? { [K in Param]: string } & ExtractRouteParams<`/${Rest}`>
125
+ : T extends `${infer _Start}:${infer Param}?${infer Rest}`
126
+ ? { [K in Param]?: string } & ExtractRouteParams<Rest>
127
+ : T extends `${infer _Start}:${infer Param}`
128
+ ? { [K in Param]: string }
129
+ : T extends `${infer _Start}*${infer Rest}`
130
+ ? { '*': string } & ExtractRouteParams<Rest>
131
+ : Record<string, never>
132
+ // Advanced parameter extraction with type constraints
133
+ export type ExtractTypedParams<T extends string> = T extends `${infer _Start}:${infer Param}<${infer Type}>${infer Rest}`
134
+ ? { [K in Param]: ParseParamType<Type> } & ExtractTypedParams<Rest>
135
+ : T extends `${infer _Start}:${infer Param}/${infer Rest}`
136
+ ? { [K in Param]: string } & ExtractTypedParams<`/${Rest}`>
137
+ : T extends `${infer _Start}:${infer Param}?${infer Rest}`
138
+ ? { [K in Param]?: string } & ExtractTypedParams<Rest>
139
+ : T extends `${infer _Start}:${infer Param}`
140
+ ? { [K in Param]: string }
141
+ : Record<string, never>
142
+ // Type parsing for parameter constraints
143
+ export type ParseParamType<T extends string> = T extends 'number' | 'int' | 'integer' ? number :
144
+ T extends 'boolean' | 'bool' ? boolean :
145
+ T extends 'date' ? Date :
146
+ T extends 'uuid' ? string :
147
+ T extends 'email' ? string :
148
+ T extends 'url' ? string :
149
+ T extends `enum(${infer Values})` ? ParseEnumValues<Values> :
150
+ T extends `range(${infer _Min},${infer _Max})` ? number :
151
+ T extends `length(${infer _MinMax})` ? string :
152
+ T extends `pattern(${infer _Pattern})` ? string :
153
+ string
154
+ // Enum value parsing
155
+ export type ParseEnumValues<T extends string> = T extends `${infer First}|${infer Rest}`
156
+ ? First | ParseEnumValues<Rest>
157
+ : T
158
+ // Query parameter extraction
159
+ export type ExtractQueryParams<T extends Record<string, any>> = {
160
+ [K in keyof T]: T[K] extends 'string' ? string :
161
+ T[K] extends 'number' ? number :
162
+ T[K] extends 'boolean' ? boolean :
163
+ T[K] extends 'string[]' ? string[] :
164
+ T[K] extends 'number[]' ? number[] :
165
+ T[K] extends { type: infer Type, required: true } ?
166
+ Type extends 'string' ? string :
167
+ Type extends 'number' ? number :
168
+ Type extends 'boolean' ? boolean : string :
169
+ T[K] extends { type: infer Type, required: false } ?
170
+ Type extends 'string' ? string | undefined :
171
+ Type extends 'number' ? number | undefined :
172
+ Type extends 'boolean' ? boolean | undefined : string | undefined :
173
+ string
174
+ }
175
+ // Route pattern validation
176
+ export type ValidateRoutePattern<T extends string> = T extends `${infer _}:${infer _Param}:${infer _}`
177
+ ? `Invalid route pattern: consecutive parameters not allowed in "${T}"`
178
+ : T extends `${infer _}::${infer _}`
179
+ ? `Invalid route pattern: empty parameter name in "${T}"`
180
+ : T extends `${infer _}:${infer Param}`
181
+ ? Param extends `${infer Name}${infer Rest}`
182
+ ? Name extends ''
183
+ ? `Invalid route pattern: empty parameter name in "${T}"`
184
+ : Rest extends `<${infer Type}>`
185
+ ? ValidateParamType<Type> extends never
186
+ ? `Invalid parameter type "${Type}" in route "${T}"`
187
+ : T
188
+ : T
189
+ : T
190
+ : T
191
+ // Parameter type validation
192
+ export type ValidateParamType<T extends string> = T extends 'string' | 'number' | 'int' | 'integer' | 'boolean' | 'bool' | 'date' | 'uuid' | 'email' | 'url'
193
+ ? T
194
+ : T extends `enum(${infer Values})`
195
+ ? Values extends '' ? never : T
196
+ : T extends `range(${infer Min},${infer Max})`
197
+ ? Min extends `${number}`
198
+ ? Max extends `${number}` ? T : never
199
+ : never
200
+ : T extends `length(${infer MinMax})`
201
+ ? MinMax extends `${number}` | `${number},${number}` ? T : never
202
+ : T extends `pattern(${infer Pattern})`
203
+ ? Pattern extends '' ? never : T
204
+ : never
205
+ // Route method types
206
+ export type RouteMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS'
207
+ // Route handler type with inferred parameters
208
+ export type RouteHandler<TPath extends string, TQuery extends Record<string, any> = Record<string, never>, TBody = unknown, TContext = Record<string, never>> = (request: TypedRequest<TPath, TQuery, TBody, TContext>) => Promise<Response> | Response
209
+ // Parameter schema for validation
210
+ export type RouteParamSchema<T extends Record<string, any>> = {
211
+ [K in keyof T]: {
212
+ type: T[K] extends string ? 'string' :
213
+ T[K] extends number ? 'number' :
214
+ T[K] extends boolean ? 'boolean' :
215
+ T[K] extends Date ? 'date' : 'string'
216
+ required?: boolean
217
+ pattern?: string
218
+ min?: number
219
+ max?: number
220
+ enum?: T[K][]
221
+ transform?: (value: string) => T[K]
222
+ validate?: (value: T[K]) => boolean | string
223
+ }
224
+ }
225
+ // Utility types for route building
226
+ export type InferRouteParams<T> = T extends TypedRoute<infer Path, any, any, any>
227
+ ? ExtractTypedParams<Path>
228
+ : never
229
+ export type InferRouteQuery<T> = T extends TypedRoute<any, infer Query, any, any>
230
+ ? ExtractQueryParams<Query>
231
+ : never
232
+ export type InferRouteBody<T> = T extends TypedRoute<any, any, infer Body, any>
233
+ ? Body
234
+ : never
235
+ export type InferRouteContext<T> = T extends TypedRoute<any, any, any, infer Context>
236
+ ? Context
237
+ : never
238
+ // Advanced pattern matching types
239
+ export type MatchRoute<TPattern extends string, TPath extends string> = TPattern extends `${infer Start}:${infer _Param}/${infer Rest}`
240
+ ? TPath extends `${Start}${infer Value}/${infer PathRest}`
241
+ ? Value extends ''
242
+ ? false
243
+ : MatchRoute<`/${Rest}`, `/${PathRest}`>
244
+ : false
245
+ : TPattern extends `${infer Start}:${infer _Param}`
246
+ ? TPath extends `${Start}${infer Value}`
247
+ ? Value extends '' ? false : true
248
+ : false
249
+ : TPattern extends TPath
250
+ ? true
251
+ : false
252
+ // Route parameter extraction at runtime
253
+ export type ExtractParamsFromPath<TPattern extends string, TPath extends string> = TPattern extends `${infer Start}:${infer _Param}/${infer Rest}`
254
+ ? TPath extends `${Start}${infer Value}/${infer PathRest}`
255
+ ? { [K in _Param]: Value } & ExtractParamsFromPath<`/${Rest}`, `/${PathRest}`>
256
+ : Record<string, never>
257
+ : TPattern extends `${infer Start}:${infer _Param}`
258
+ ? TPath extends `${Start}${infer Value}`
259
+ ? { [K in _Param]: Value }
260
+ : Record<string, never>
261
+ : Record<string, never>
262
+ // Compile-time route validation
263
+ export type ValidateRoutes<T extends readonly TypedRoute<any, any, any, any>[]> = {
264
+ [K in keyof T]: T[K] extends TypedRoute<infer Path, any, any, any>
265
+ ? ValidateRoutePattern<Path> extends `Invalid ${string}`
266
+ ? ValidateRoutePattern<Path>
267
+ : T[K]
268
+ : T[K]
269
+ }
270
+ // Route conflict detection
271
+ export type DetectRouteConflicts<T extends readonly TypedRoute<any, any, any, any>[]> = {
272
+ [K in keyof T]: {
273
+ [J in keyof T]: K extends J
274
+ ? never
275
+ : T[K] extends TypedRoute<infer Path1, any, any, any>
276
+ ? T[J] extends TypedRoute<infer Path2, any, any, any>
277
+ ? Path1 extends Path2
278
+ ? `Route conflict: "${Path1}" is defined multiple times`
279
+ : never
280
+ : never
281
+ : never
282
+ }[keyof T]
283
+ }[keyof T]
284
+ // Type utilities for testing
285
+ export type AssertEqual<T, U> = T extends U ? U extends T ? true : false : false
286
+ export type AssertExtends<T, U> = T extends U ? true : false
287
+ export type AssertNotEqual<T, U> = AssertEqual<T, U> extends true ? false : true