@stacksjs/bun-router 0.0.13 → 0.0.14
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/CHANGELOG.md +770 -0
- package/README.md +584 -261
- package/package.json +43 -47
- package/bin/cli.ts +0 -9
- package/dist/auth.d.ts +0 -134
- package/dist/cache/lru-cache.d.ts +0 -139
- package/dist/cache/middleware-memoization.d.ts +0 -151
- package/dist/cache/route-cache-warmer.d.ts +0 -161
- package/dist/cache/sqlite-cache.d.ts +0 -209
- package/dist/cache/streaming-cache.d.ts +0 -132
- package/dist/chunk-1mvtv6jw.js +0 -13012
- package/dist/cli/colors.d.ts +0 -15
- package/dist/cli/index.d.ts +0 -10
- package/dist/cli/middleware.d.ts +0 -31
- package/dist/cli/openapi.d.ts +0 -17
- package/dist/cli/router.d.ts +0 -15
- package/dist/cli/routes.d.ts +0 -29
- package/dist/cli/utils.d.ts +0 -74
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -3195
- package/dist/config.d.ts +0 -7
- package/dist/container/container.d.ts +0 -273
- package/dist/container/contextual-binding.d.ts +0 -240
- package/dist/container/decorators.d.ts +0 -141
- package/dist/container/service-provider.d.ts +0 -285
- package/dist/development/hot-reload.d.ts +0 -187
- package/dist/development/index.d.ts +0 -167
- package/dist/development/performance-profiler.d.ts +0 -217
- package/dist/development/route-debugger.d.ts +0 -154
- package/dist/development/route-inspector.d.ts +0 -211
- package/dist/development/typescript-utilities.d.ts +0 -209
- package/dist/docs.d.ts +0 -11
- package/dist/errors/circuit-breaker.d.ts +0 -195
- package/dist/errors/error-handler.d.ts +0 -88
- package/dist/errors/error-reporting.d.ts +0 -144
- package/dist/errors/exceptions.d.ts +0 -184
- package/dist/errors/graceful-degradation.d.ts +0 -154
- package/dist/errors/index.d.ts +0 -9
- package/dist/errors/router-errors.d.ts +0 -110
- package/dist/file-serving/static-files.d.ts +0 -143
- package/dist/index.d.ts +0 -14
- package/dist/index.js +0 -13933
- package/dist/middleware/auth.d.ts +0 -63
- package/dist/middleware/content_security_policy.d.ts +0 -53
- package/dist/middleware/cors.d.ts +0 -5
- package/dist/middleware/csrf.d.ts +0 -7
- package/dist/middleware/ddos_protection.d.ts +0 -39
- package/dist/middleware/file_security.d.ts +0 -26
- package/dist/middleware/file_upload.d.ts +0 -38
- package/dist/middleware/helmet.d.ts +0 -54
- package/dist/middleware/index.d.ts +0 -44
- package/dist/middleware/input_validation.d.ts +0 -45
- package/dist/middleware/json_body.d.ts +0 -4
- package/dist/middleware/performance_alerting.d.ts +0 -87
- package/dist/middleware/performance_dashboard.d.ts +0 -87
- package/dist/middleware/performance_monitor.d.ts +0 -209
- package/dist/middleware/pipeline.d.ts +0 -131
- package/dist/middleware/rate_limit.d.ts +0 -36
- package/dist/middleware/request_id.d.ts +0 -4
- package/dist/middleware/request_signing.d.ts +0 -153
- package/dist/middleware/request_tracer.d.ts +0 -72
- package/dist/middleware/response_cache.d.ts +0 -97
- package/dist/middleware/security.d.ts +0 -69
- package/dist/middleware/security_suite.d.ts +0 -46
- package/dist/middleware/session.d.ts +0 -23
- package/dist/model-binding/index.d.ts +0 -2
- package/dist/model-binding/model-middleware.d.ts +0 -118
- package/dist/model-binding/model-registry.d.ts +0 -164
- package/dist/model-binding.d.ts +0 -185
- package/dist/model-resolver-factory.d.ts +0 -31
- package/dist/observability/correlation.d.ts +0 -187
- package/dist/observability/health-checks.d.ts +0 -186
- package/dist/observability/index.d.ts +0 -60
- package/dist/observability/integration.d.ts +0 -147
- package/dist/observability/metrics.d.ts +0 -184
- package/dist/observability/tracing.d.ts +0 -187
- package/dist/optimization/bun-utilities.d.ts +0 -224
- package/dist/query-builder-integration.d.ts +0 -36
- package/dist/request/context.d.ts +0 -34
- package/dist/request/enhanced-request.d.ts +0 -213
- package/dist/request/macros.d.ts +0 -300
- package/dist/response/macros.d.ts +0 -245
- package/dist/response/response-factory.d.ts +0 -133
- package/dist/router/api-routes.d.ts +0 -5
- package/dist/router/file-based-routing.d.ts +0 -118
- package/dist/router/file-streaming.d.ts +0 -5
- package/dist/router/fluent-router.d.ts +0 -315
- package/dist/router/fluent-routing.d.ts +0 -271
- package/dist/router/group-organization.d.ts +0 -5
- package/dist/router/handler-resolver.d.ts +0 -24
- package/dist/router/http-methods.d.ts +0 -10
- package/dist/router/index.d.ts +0 -114
- package/dist/router/middleware-groups.d.ts +0 -94
- package/dist/router/middleware-integration.d.ts +0 -112
- package/dist/router/middleware.d.ts +0 -5
- package/dist/router/model-binding.d.ts +0 -5
- package/dist/router/optimized-route-matching.d.ts +0 -6
- package/dist/router/route-building.d.ts +0 -5
- package/dist/router/route-compiler.d.ts +0 -153
- package/dist/router/route-matching.d.ts +0 -5
- package/dist/router/route-trie.d.ts +0 -114
- package/dist/router/router.d.ts +0 -294
- package/dist/router/server.d.ts +0 -5
- package/dist/router/validation-integration.d.ts +0 -170
- package/dist/router/view-rendering.d.ts +0 -5
- package/dist/router/websocket.d.ts +0 -5
- package/dist/routing/route-caching.d.ts +0 -129
- package/dist/routing/route-throttling.d.ts +0 -150
- package/dist/routing/subdomain-routing.d.ts +0 -206
- package/dist/session/database-store.d.ts +0 -51
- package/dist/session/file-store.d.ts +0 -22
- package/dist/session/index.d.ts +0 -106
- package/dist/session/memory-store.d.ts +0 -21
- package/dist/session/redis-store.d.ts +0 -31
- package/dist/streaming/index.d.ts +0 -3
- package/dist/streaming/sse-handler.d.ts +0 -138
- package/dist/streaming/stream-handler.d.ts +0 -114
- package/dist/testing/auth-testing.d.ts +0 -156
- package/dist/testing/file-upload-testing.d.ts +0 -190
- package/dist/testing/index.d.ts +0 -10
- package/dist/testing/middleware-testing.d.ts +0 -138
- package/dist/testing/model-binding-testing.d.ts +0 -186
- package/dist/testing/performance-testing.d.ts +0 -235
- package/dist/testing/test-client.d.ts +0 -117
- package/dist/testing/test-request.d.ts +0 -85
- package/dist/testing/test-response.d.ts +0 -90
- package/dist/testing/types.d.ts +0 -207
- package/dist/testing/websocket-testing.d.ts +0 -227
- package/dist/types/controller-types.d.ts +0 -208
- package/dist/types/core.d.ts +0 -543
- package/dist/types/middleware-types.d.ts +0 -227
- package/dist/types/request-response-augmentation.d.ts +0 -261
- package/dist/types/route-inference.d.ts +0 -168
- package/dist/types.d.ts +0 -1782
- package/dist/url.d.ts +0 -56
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/query-preservation.d.ts +0 -48
- package/dist/utils.d.ts +0 -69
- package/dist/validation/validator.d.ts +0 -140
- package/dist/websocket/clustering.d.ts +0 -185
- package/src/auth.ts +0 -469
- package/src/cache/lru-cache.ts +0 -457
- package/src/cache/middleware-memoization.ts +0 -531
- package/src/cache/route-cache-warmer.ts +0 -486
- package/src/cache/sqlite-cache.ts +0 -783
- package/src/cache/streaming-cache.ts +0 -572
- package/src/cli/colors.ts +0 -29
- package/src/cli/index.ts +0 -287
- package/src/cli/middleware.ts +0 -291
- package/src/cli/openapi.ts +0 -407
- package/src/cli/router.ts +0 -188
- package/src/cli/routes.ts +0 -265
- package/src/cli/utils.ts +0 -531
- package/src/cli.ts +0 -5
- package/src/config.ts +0 -322
- package/src/container/container.ts +0 -740
- package/src/container/contextual-binding.ts +0 -603
- package/src/container/decorators.ts +0 -359
- package/src/container/service-provider.ts +0 -596
- package/src/development/hot-reload.ts +0 -673
- package/src/development/index.ts +0 -499
- package/src/development/performance-profiler.ts +0 -717
- package/src/development/route-debugger.ts +0 -527
- package/src/development/route-inspector.ts +0 -749
- package/src/development/typescript-utilities.ts +0 -682
- package/src/docs.ts +0 -397
- package/src/errors/circuit-breaker.ts +0 -732
- package/src/errors/error-handler.ts +0 -569
- package/src/errors/error-reporting.ts +0 -672
- package/src/errors/exceptions.ts +0 -536
- package/src/errors/graceful-degradation.ts +0 -621
- package/src/errors/index.ts +0 -21
- package/src/errors/router-errors.ts +0 -632
- package/src/file-serving/static-files.ts +0 -581
- package/src/index.ts +0 -14
- package/src/middleware/auth.ts +0 -219
- package/src/middleware/content_security_policy.ts +0 -215
- package/src/middleware/cors.ts +0 -74
- package/src/middleware/csrf.ts +0 -108
- package/src/middleware/ddos_protection.ts +0 -255
- package/src/middleware/file_security.ts +0 -191
- package/src/middleware/file_upload.ts +0 -264
- package/src/middleware/helmet.ts +0 -268
- package/src/middleware/index.ts +0 -117
- package/src/middleware/input_validation.ts +0 -449
- package/src/middleware/json_body.ts +0 -37
- package/src/middleware/performance_alerting.ts +0 -538
- package/src/middleware/performance_dashboard.ts +0 -661
- package/src/middleware/performance_monitor.ts +0 -943
- package/src/middleware/pipeline.ts +0 -489
- package/src/middleware/rate_limit.ts +0 -245
- package/src/middleware/request_id.ts +0 -36
- package/src/middleware/request_signing.ts +0 -636
- package/src/middleware/request_tracer.ts +0 -636
- package/src/middleware/response_cache.ts +0 -743
- package/src/middleware/security.ts +0 -482
- package/src/middleware/security_suite.ts +0 -257
- package/src/middleware/session.ts +0 -91
- package/src/model-binding/index.ts +0 -18
- package/src/model-binding/model-middleware.ts +0 -425
- package/src/model-binding/model-registry.ts +0 -550
- package/src/model-binding.ts +0 -370
- package/src/model-resolver-factory.ts +0 -106
- package/src/observability/correlation.ts +0 -691
- package/src/observability/health-checks.ts +0 -729
- package/src/observability/index.ts +0 -184
- package/src/observability/integration.ts +0 -548
- package/src/observability/metrics.ts +0 -753
- package/src/observability/tracing.ts +0 -638
- package/src/optimization/bun-utilities.ts +0 -778
- package/src/query-builder-integration.ts +0 -137
- package/src/request/context.ts +0 -62
- package/src/request/enhanced-request.ts +0 -857
- package/src/request/macros.ts +0 -688
- package/src/response/macros.ts +0 -612
- package/src/response/response-factory.ts +0 -596
- package/src/router/api-routes.ts +0 -243
- package/src/router/file-based-routing.ts +0 -670
- package/src/router/file-streaming.ts +0 -372
- package/src/router/fluent-router.ts +0 -927
- package/src/router/fluent-routing.ts +0 -797
- package/src/router/group-organization.ts +0 -213
- package/src/router/handler-resolver.ts +0 -291
- package/src/router/http-methods.ts +0 -377
- package/src/router/index.ts +0 -187
- package/src/router/middleware-groups.ts +0 -222
- package/src/router/middleware-integration.ts +0 -399
- package/src/router/middleware.ts +0 -231
- package/src/router/model-binding.ts +0 -215
- package/src/router/optimized-route-matching.ts +0 -253
- package/src/router/route-building.ts +0 -212
- package/src/router/route-compiler.ts +0 -702
- package/src/router/route-matching.ts +0 -349
- package/src/router/route-trie.ts +0 -464
- package/src/router/router.ts +0 -1581
- package/src/router/server.ts +0 -462
- package/src/router/validation-integration.ts +0 -443
- package/src/router/view-rendering.ts +0 -233
- package/src/router/websocket.ts +0 -100
- package/src/routing/route-caching.ts +0 -402
- package/src/routing/route-throttling.ts +0 -469
- package/src/routing/subdomain-routing.ts +0 -492
- package/src/session/database-store.ts +0 -109
- package/src/session/file-store.ts +0 -148
- package/src/session/index.ts +0 -244
- package/src/session/memory-store.ts +0 -88
- package/src/session/redis-store.ts +0 -93
- package/src/streaming/index.ts +0 -17
- package/src/streaming/sse-handler.ts +0 -482
- package/src/streaming/stream-handler.ts +0 -552
- package/src/testing/auth-testing.ts +0 -446
- package/src/testing/file-upload-testing.ts +0 -543
- package/src/testing/index.ts +0 -10
- package/src/testing/middleware-testing.ts +0 -322
- package/src/testing/model-binding-testing.ts +0 -645
- package/src/testing/performance-testing.ts +0 -738
- package/src/testing/test-client.ts +0 -310
- package/src/testing/test-request.ts +0 -315
- package/src/testing/test-response.ts +0 -332
- package/src/testing/types.ts +0 -224
- package/src/testing/websocket-testing.ts +0 -590
- package/src/types/controller-types.ts +0 -385
- package/src/types/core.ts +0 -683
- package/src/types/middleware-types.ts +0 -419
- package/src/types/request-response-augmentation.ts +0 -489
- package/src/types/route-inference.ts +0 -357
- package/src/types.ts +0 -2055
- package/src/url.ts +0 -126
- package/src/utils/index.ts +0 -1
- package/src/utils/query-preservation.ts +0 -201
- package/src/utils.ts +0 -327
- package/src/validation/validator.ts +0 -685
- package/src/websocket/clustering.ts +0 -762
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Request/Response Enhancements - Response Macros
|
|
3
|
-
*
|
|
4
|
-
* Laravel-style response macros for common response patterns
|
|
5
|
-
*/
|
|
6
|
-
export interface ResponseMacro {
|
|
7
|
-
name: string;
|
|
8
|
-
handler: (...args: any[]) => Response;
|
|
9
|
-
}
|
|
10
|
-
export interface ApiResponse<T = any> {
|
|
11
|
-
data?: T;
|
|
12
|
-
message?: string;
|
|
13
|
-
error?: string;
|
|
14
|
-
errors?: Record<string, string[]>;
|
|
15
|
-
meta?: Record<string, any>;
|
|
16
|
-
links?: Record<string, string>;
|
|
17
|
-
timestamp?: string;
|
|
18
|
-
}
|
|
19
|
-
export interface PaginatedResponse<T = any> extends ApiResponse<T[]> {
|
|
20
|
-
meta: {
|
|
21
|
-
current_page: number;
|
|
22
|
-
per_page: number;
|
|
23
|
-
total: number;
|
|
24
|
-
last_page: number;
|
|
25
|
-
from: number;
|
|
26
|
-
to: number;
|
|
27
|
-
path: string;
|
|
28
|
-
first_page_url: string;
|
|
29
|
-
last_page_url: string;
|
|
30
|
-
next_page_url?: string;
|
|
31
|
-
prev_page_url?: string;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Response macro registry
|
|
36
|
-
*/
|
|
37
|
-
declare class ResponseMacroRegistry {
|
|
38
|
-
private macros;
|
|
39
|
-
/**
|
|
40
|
-
* Register a response macro
|
|
41
|
-
*/
|
|
42
|
-
register(name: string, handler: (...args: any[]) => Response): void;
|
|
43
|
-
/**
|
|
44
|
-
* Get a registered macro
|
|
45
|
-
*/
|
|
46
|
-
get(name: string): ResponseMacro | undefined;
|
|
47
|
-
/**
|
|
48
|
-
* Check if macro exists
|
|
49
|
-
*/
|
|
50
|
-
has(name: string): boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Get all registered macros
|
|
53
|
-
*/
|
|
54
|
-
all(): ResponseMacro[];
|
|
55
|
-
/**
|
|
56
|
-
* Remove a macro
|
|
57
|
-
*/
|
|
58
|
-
remove(name: string): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Clear all macros
|
|
61
|
-
*/
|
|
62
|
-
clear(): void;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Global response macro registry
|
|
66
|
-
*/
|
|
67
|
-
export declare const responseMacroRegistry: ResponseMacroRegistry;
|
|
68
|
-
/**
|
|
69
|
-
* Response class with macro support
|
|
70
|
-
*/
|
|
71
|
-
export declare class ResponseWithMacros extends Response {
|
|
72
|
-
/**
|
|
73
|
-
* Register a response macro
|
|
74
|
-
*/
|
|
75
|
-
static macro(name: string, handler: (...args: any[]) => Response): void;
|
|
76
|
-
/**
|
|
77
|
-
* Call a registered macro
|
|
78
|
-
*/
|
|
79
|
-
static callMacro(name: string, ...args: any[]): Response;
|
|
80
|
-
/**
|
|
81
|
-
* Check if macro exists
|
|
82
|
-
*/
|
|
83
|
-
static hasMacro(name: string): boolean;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Built-in response macros
|
|
87
|
-
*/
|
|
88
|
-
export declare const BuiltInResponseMacros: {
|
|
89
|
-
/**
|
|
90
|
-
* Success response with data
|
|
91
|
-
*/
|
|
92
|
-
success: (data?: any, message?: string, status?: number) => Response;
|
|
93
|
-
/**
|
|
94
|
-
* Error response with message and errors
|
|
95
|
-
*/
|
|
96
|
-
error: (message: string, errors?: Record<string, string[]>, status?: number) => Response;
|
|
97
|
-
/**
|
|
98
|
-
* Validation error response
|
|
99
|
-
*/
|
|
100
|
-
validationError: (errors: Record<string, string[]>, message?: string) => Response;
|
|
101
|
-
/**
|
|
102
|
-
* Not found response
|
|
103
|
-
*/
|
|
104
|
-
notFound: (message?: string) => Response;
|
|
105
|
-
/**
|
|
106
|
-
* Unauthorized response
|
|
107
|
-
*/
|
|
108
|
-
unauthorized: (message?: string) => Response;
|
|
109
|
-
/**
|
|
110
|
-
* Forbidden response
|
|
111
|
-
*/
|
|
112
|
-
forbidden: (message?: string) => Response;
|
|
113
|
-
/**
|
|
114
|
-
* Internal server error response
|
|
115
|
-
*/
|
|
116
|
-
serverError: (message?: string) => Response;
|
|
117
|
-
/**
|
|
118
|
-
* Created response
|
|
119
|
-
*/
|
|
120
|
-
created: (data?: any, message?: string) => Response;
|
|
121
|
-
/**
|
|
122
|
-
* Updated response
|
|
123
|
-
*/
|
|
124
|
-
updated: (data?: any, message?: string) => Response;
|
|
125
|
-
/**
|
|
126
|
-
* Deleted response
|
|
127
|
-
*/
|
|
128
|
-
deleted: (message?: string) => Response;
|
|
129
|
-
/**
|
|
130
|
-
* No content response
|
|
131
|
-
*/
|
|
132
|
-
noContent: () => Response;
|
|
133
|
-
/**
|
|
134
|
-
* Accepted response
|
|
135
|
-
*/
|
|
136
|
-
accepted: (data?: any, message?: string) => Response;
|
|
137
|
-
/**
|
|
138
|
-
* Paginated response
|
|
139
|
-
*/
|
|
140
|
-
paginated: <T>(data: T[], pagination: {
|
|
141
|
-
current_page: number;
|
|
142
|
-
per_page: number;
|
|
143
|
-
total: number;
|
|
144
|
-
path: string;
|
|
145
|
-
}, message?: string) => Response;
|
|
146
|
-
/**
|
|
147
|
-
* JSON response with custom headers
|
|
148
|
-
*/
|
|
149
|
-
json: (data: any, status?: number, headers?: Record<string, string>) => Response;
|
|
150
|
-
/**
|
|
151
|
-
* HTML response
|
|
152
|
-
*/
|
|
153
|
-
html: (content: string, status?: number, headers?: Record<string, string>) => Response;
|
|
154
|
-
/**
|
|
155
|
-
* Plain text response
|
|
156
|
-
*/
|
|
157
|
-
text: (content: string, status?: number, headers?: Record<string, string>) => Response;
|
|
158
|
-
/**
|
|
159
|
-
* XML response
|
|
160
|
-
*/
|
|
161
|
-
xml: (content: string, status?: number, headers?: Record<string, string>) => Response;
|
|
162
|
-
/**
|
|
163
|
-
* Redirect response
|
|
164
|
-
*/
|
|
165
|
-
redirect: (url: string, status?: number) => Response;
|
|
166
|
-
/**
|
|
167
|
-
* Permanent redirect response
|
|
168
|
-
*/
|
|
169
|
-
permanentRedirect: (url: string) => Response;
|
|
170
|
-
/**
|
|
171
|
-
* Download response
|
|
172
|
-
*/
|
|
173
|
-
download: (data: ArrayBuffer | Uint8Array | string, filename: string, contentType?: string) => Response;
|
|
174
|
-
/**
|
|
175
|
-
* Stream response
|
|
176
|
-
*/
|
|
177
|
-
stream: (stream: ReadableStream, contentType?: string, headers?: Record<string, string>) => Response;
|
|
178
|
-
/**
|
|
179
|
-
* Cache response with headers
|
|
180
|
-
*/
|
|
181
|
-
cache: (data: any, maxAge?: number, isPublic?: boolean, etag?: string) => Response;
|
|
182
|
-
/**
|
|
183
|
-
* CORS response
|
|
184
|
-
*/
|
|
185
|
-
cors: (data: any, origin?: string, methods?: string, headers?: string) => Response;
|
|
186
|
-
/**
|
|
187
|
-
* Server-Sent Events response
|
|
188
|
-
*/
|
|
189
|
-
sse: (data: string, event?: string, id?: string) => Response;
|
|
190
|
-
/**
|
|
191
|
-
* Health check response
|
|
192
|
-
*/
|
|
193
|
-
health: (status?: "healthy" | "unhealthy" | "degraded", checks?: Record<string, any>) => Response;
|
|
194
|
-
};
|
|
195
|
-
/**
|
|
196
|
-
* Register all built-in macros
|
|
197
|
-
*/
|
|
198
|
-
export declare function registerBuiltInResponseMacros(): void;
|
|
199
|
-
/**
|
|
200
|
-
* Response macro factory functions
|
|
201
|
-
*/
|
|
202
|
-
export declare const ResponseMacroFactory: {
|
|
203
|
-
/**
|
|
204
|
-
* Create API response macro
|
|
205
|
-
*/
|
|
206
|
-
api: (defaultMeta?: Record<string, any>) => (data?: any, message?: string, status?: number) => Response;
|
|
207
|
-
/**
|
|
208
|
-
* Create versioned API response macro
|
|
209
|
-
*/
|
|
210
|
-
versionedApi: (version: string) => (data?: any, message?: string, status?: number) => Response;
|
|
211
|
-
/**
|
|
212
|
-
* Create custom error response macro
|
|
213
|
-
*/
|
|
214
|
-
customError: (defaultStatus?: number, defaultMessage?: string) => (message?: string, errors?: Record<string, string[]>, status?: number) => Response;
|
|
215
|
-
};
|
|
216
|
-
/**
|
|
217
|
-
* Response helper utilities
|
|
218
|
-
*/
|
|
219
|
-
export declare const ResponseHelpers: {
|
|
220
|
-
/**
|
|
221
|
-
* Check if response is successful
|
|
222
|
-
*/
|
|
223
|
-
isSuccess: (response: Response) => boolean;
|
|
224
|
-
/**
|
|
225
|
-
* Check if response is error
|
|
226
|
-
*/
|
|
227
|
-
isError: (response: Response) => boolean;
|
|
228
|
-
/**
|
|
229
|
-
* Get response body as JSON
|
|
230
|
-
*/
|
|
231
|
-
getJson: (response: Response) => Promise<any>;
|
|
232
|
-
/**
|
|
233
|
-
* Get response body as text
|
|
234
|
-
*/
|
|
235
|
-
getText: (response: Response) => Promise<string>;
|
|
236
|
-
/**
|
|
237
|
-
* Clone response with new headers
|
|
238
|
-
*/
|
|
239
|
-
withHeaders: (response: Response, headers: Record<string, string>) => Response;
|
|
240
|
-
/**
|
|
241
|
-
* Clone response with new status
|
|
242
|
-
*/
|
|
243
|
-
withStatus: (response: Response, status: number, statusText?: string) => Response;
|
|
244
|
-
};
|
|
245
|
-
export {};
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Response Factory
|
|
3
|
-
*
|
|
4
|
-
* Implements fluent response helpers with full TypeScript support
|
|
5
|
-
*/
|
|
6
|
-
import type { ContentType, ResponseStatus } from '../types';
|
|
7
|
-
/**
|
|
8
|
-
* JSON response options
|
|
9
|
-
*/
|
|
10
|
-
export interface JsonResponseOptions {
|
|
11
|
-
status?: ResponseStatus;
|
|
12
|
-
headers?: Record<string, string>;
|
|
13
|
-
pretty?: boolean;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Download response options
|
|
17
|
-
*/
|
|
18
|
-
export interface DownloadOptions {
|
|
19
|
-
filename?: string;
|
|
20
|
-
headers?: Record<string, string>;
|
|
21
|
-
disposition?: 'attachment' | 'inline';
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Stream download options
|
|
25
|
-
*/
|
|
26
|
-
export interface StreamDownloadOptions extends DownloadOptions {
|
|
27
|
-
contentType?: ContentType;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Cookie options for response
|
|
31
|
-
*/
|
|
32
|
-
export interface ResponseCookieOptions {
|
|
33
|
-
maxAge?: number;
|
|
34
|
-
expires?: Date;
|
|
35
|
-
httpOnly?: boolean;
|
|
36
|
-
secure?: boolean;
|
|
37
|
-
path?: string;
|
|
38
|
-
domain?: string;
|
|
39
|
-
sameSite?: 'strict' | 'lax' | 'none';
|
|
40
|
-
}
|
|
41
|
-
export interface ResponseFactory {
|
|
42
|
-
json: <T>(data: T, options?: JsonResponseOptions | ResponseStatus) => Response;
|
|
43
|
-
noContent: (headers?: Record<string, string>) => Response;
|
|
44
|
-
download: (filePath: string, filename?: string, headers?: Record<string, string>) => Promise<Response>;
|
|
45
|
-
file: (filePath: string, headers?: Record<string, string>) => Promise<Response>;
|
|
46
|
-
streamDownload: (generator: () => AsyncGenerator<string | Uint8Array, void, unknown>, filename: string, options?: StreamDownloadOptions) => Response;
|
|
47
|
-
redirect: (url: string, status?: 301 | 302 | 303 | 307 | 308) => Response;
|
|
48
|
-
redirectPermanent: (url: string) => Response;
|
|
49
|
-
redirectTemporary: (url: string) => Response;
|
|
50
|
-
back: (request: Request, fallback?: string) => Response;
|
|
51
|
-
view: (html: string, status?: ResponseStatus, headers?: Record<string, string>) => Response;
|
|
52
|
-
text: (text: string, status?: ResponseStatus, headers?: Record<string, string>) => Response;
|
|
53
|
-
xml: (xml: string, status?: ResponseStatus, headers?: Record<string, string>) => Response;
|
|
54
|
-
success: <T>(data?: T, message?: string, status?: ResponseStatus) => Response;
|
|
55
|
-
error: (message: string, status?: ResponseStatus, errors?: Record<string, string[]>) => Response;
|
|
56
|
-
paginate: <T>(data: T[], options: {
|
|
57
|
-
page: number;
|
|
58
|
-
perPage: number;
|
|
59
|
-
total: number;
|
|
60
|
-
path: string;
|
|
61
|
-
}) => Response;
|
|
62
|
-
created: <T>(data?: T, location?: string) => Response;
|
|
63
|
-
accepted: <T>(data?: T) => Response;
|
|
64
|
-
notFound: (message?: string) => Response;
|
|
65
|
-
unauthorized: (message?: string) => Response;
|
|
66
|
-
forbidden: (message?: string) => Response;
|
|
67
|
-
badRequest: (message?: string, errors?: Record<string, string[]>) => Response;
|
|
68
|
-
validationError: (errors: Record<string, string[]>, message?: string) => Response;
|
|
69
|
-
unprocessableEntity: (message?: string, errors?: Record<string, string[]>) => Response;
|
|
70
|
-
serverError: (message?: string) => Response;
|
|
71
|
-
tooManyRequests: (message?: string, retryAfter?: number) => Response;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Response factory with common response helpers
|
|
75
|
-
*/
|
|
76
|
-
export declare const response: ResponseFactory;
|
|
77
|
-
/**
|
|
78
|
-
* Fluent response builder
|
|
79
|
-
*/
|
|
80
|
-
export declare class ResponseBuilder {
|
|
81
|
-
private _status;
|
|
82
|
-
private _headers;
|
|
83
|
-
private _cookies;
|
|
84
|
-
private _deleteCookies;
|
|
85
|
-
/**
|
|
86
|
-
* Set response status
|
|
87
|
-
*/
|
|
88
|
-
status(code: ResponseStatus): this;
|
|
89
|
-
/**
|
|
90
|
-
* Add a header
|
|
91
|
-
*/
|
|
92
|
-
header(name: string, value: string): this;
|
|
93
|
-
/**
|
|
94
|
-
* Add multiple headers
|
|
95
|
-
*/
|
|
96
|
-
withHeaders(headers: Record<string, string>): this;
|
|
97
|
-
/**
|
|
98
|
-
* Add a cookie
|
|
99
|
-
*/
|
|
100
|
-
cookie(name: string, value: string, options?: ResponseCookieOptions): this;
|
|
101
|
-
/**
|
|
102
|
-
* Remove a cookie
|
|
103
|
-
*/
|
|
104
|
-
withoutCookie(name: string, options?: Pick<ResponseCookieOptions, 'path' | 'domain'>): this;
|
|
105
|
-
/**
|
|
106
|
-
* Build JSON response
|
|
107
|
-
*/
|
|
108
|
-
json<T>(data: T): Response;
|
|
109
|
-
/**
|
|
110
|
-
* Build text response
|
|
111
|
-
*/
|
|
112
|
-
text(content: string): Response;
|
|
113
|
-
/**
|
|
114
|
-
* Build HTML response
|
|
115
|
-
*/
|
|
116
|
-
html(content: string): Response;
|
|
117
|
-
/**
|
|
118
|
-
* Build no content response
|
|
119
|
-
*/
|
|
120
|
-
noContent(): Response;
|
|
121
|
-
/**
|
|
122
|
-
* Apply cookies to response
|
|
123
|
-
*/
|
|
124
|
-
private applyCookies;
|
|
125
|
-
/**
|
|
126
|
-
* Serialize cookie to string
|
|
127
|
-
*/
|
|
128
|
-
private serializeCookie;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Create a new response builder
|
|
132
|
-
*/
|
|
133
|
-
export declare function responseBuilder(): ResponseBuilder;
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import type { EnhancedRequest } from '../types';
|
|
2
|
-
import type { Router } from './router';
|
|
3
|
-
/**
|
|
4
|
-
* File-based routing configuration
|
|
5
|
-
*/
|
|
6
|
-
export interface FileBasedRoutingConfig {
|
|
7
|
-
/**
|
|
8
|
-
* Whether automatic file-based routing is enabled
|
|
9
|
-
* Default: true (auto-enabled when views directory is detected)
|
|
10
|
-
*/
|
|
11
|
-
enabled?: boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Directory containing view files for automatic routing
|
|
14
|
-
* Default: auto-detected from 'src/views', 'views', 'resources/views'
|
|
15
|
-
*/
|
|
16
|
-
viewsPath?: string;
|
|
17
|
-
/**
|
|
18
|
-
* File extensions to treat as routable pages
|
|
19
|
-
* Default: ['.stx', '.html']
|
|
20
|
-
*/
|
|
21
|
-
extensions?: string[];
|
|
22
|
-
/**
|
|
23
|
-
* Files/directories to exclude from routing
|
|
24
|
-
* Default: ['_', 'components', 'layouts', 'partials', 'scripts', 'styles']
|
|
25
|
-
*/
|
|
26
|
-
exclude?: string[];
|
|
27
|
-
/**
|
|
28
|
-
* Directory containing component files for STX rendering
|
|
29
|
-
* Default: join(viewsPath, 'components')
|
|
30
|
-
*/
|
|
31
|
-
componentsDir?: string;
|
|
32
|
-
/**
|
|
33
|
-
* Directory containing layout files for STX rendering
|
|
34
|
-
* Default: join(viewsPath, 'layouts')
|
|
35
|
-
*/
|
|
36
|
-
layoutsDir?: string;
|
|
37
|
-
/**
|
|
38
|
-
* Directory containing partial files for STX rendering
|
|
39
|
-
* Default: join(viewsPath, 'partials')
|
|
40
|
-
*/
|
|
41
|
-
partialsDir?: string;
|
|
42
|
-
/**
|
|
43
|
-
* Custom render function for view files
|
|
44
|
-
* If not provided, attempts to use STX renderer or serves raw content
|
|
45
|
-
*/
|
|
46
|
-
render?: (filePath: string, data: Record<string, unknown>, request: EnhancedRequest) => Promise<Response>;
|
|
47
|
-
}
|
|
48
|
-
interface DiscoveredRoute {
|
|
49
|
-
filePath: string;
|
|
50
|
-
routePath: string;
|
|
51
|
-
params: string[];
|
|
52
|
-
isIndex: boolean;
|
|
53
|
-
isDynamic: boolean;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Default directories to scan for views (in order of priority)
|
|
57
|
-
*/
|
|
58
|
-
declare const DEFAULT_VIEW_DIRECTORIES: string[];
|
|
59
|
-
/**
|
|
60
|
-
* Default exclusion patterns for non-routable files/directories
|
|
61
|
-
*/
|
|
62
|
-
declare const DEFAULT_EXCLUDES: string[];
|
|
63
|
-
/**
|
|
64
|
-
* Default routable file extensions
|
|
65
|
-
*/
|
|
66
|
-
declare const DEFAULT_EXTENSIONS: string[];
|
|
67
|
-
/**
|
|
68
|
-
* Auto-detect the views directory from common conventions
|
|
69
|
-
*/
|
|
70
|
-
declare function detectViewsDirectory(cwd?: string): string | null;
|
|
71
|
-
/**
|
|
72
|
-
* Recursively discovers all routable files in a directory
|
|
73
|
-
*/
|
|
74
|
-
declare function discoverRoutes(dir: string, viewsDir: string, extensions: string[], exclude: string[]): DiscoveredRoute[];
|
|
75
|
-
/**
|
|
76
|
-
* Registers file-based routing extension on the Router class
|
|
77
|
-
*/
|
|
78
|
-
export declare function registerFileBasedRouting(RouterClass: typeof Router): void;
|
|
79
|
-
declare module './router' {
|
|
80
|
-
interface Router {
|
|
81
|
-
_viewsDir?: string | null;
|
|
82
|
-
_fileRoutingConfig?: FileBasedRoutingConfig | null;
|
|
83
|
-
_fileBasedRoutes?: DiscoveredRoute[];
|
|
84
|
-
_fileRoutesInitialized?: boolean;
|
|
85
|
-
/**
|
|
86
|
-
* Internal: Initialize file-based routing (called by serve())
|
|
87
|
-
*/
|
|
88
|
-
_initFileRoutes(): Promise<void>;
|
|
89
|
-
/**
|
|
90
|
-
* Configure file-based routing
|
|
91
|
-
* @param config - Path to views directory or full configuration object
|
|
92
|
-
* @example
|
|
93
|
-
* router.views('src/views')
|
|
94
|
-
* router.views({ viewsPath: 'src/views', extensions: ['.stx'] })
|
|
95
|
-
*/
|
|
96
|
-
views(config: FileBasedRoutingConfig | string): Router;
|
|
97
|
-
/**
|
|
98
|
-
* Disable automatic file-based routing
|
|
99
|
-
*/
|
|
100
|
-
disableFileRouting(): Router;
|
|
101
|
-
/**
|
|
102
|
-
* Get the list of discovered file-based routes
|
|
103
|
-
*/
|
|
104
|
-
getFileRoutes(): DiscoveredRoute[];
|
|
105
|
-
/**
|
|
106
|
-
* Manually trigger file-based route discovery
|
|
107
|
-
* @param viewsPath - Optional path to views directory
|
|
108
|
-
* @param options - Additional configuration options
|
|
109
|
-
*/
|
|
110
|
-
fileRoutes(viewsPath?: string, options?: Omit<FileBasedRoutingConfig, 'viewsPath'>): Promise<Router>;
|
|
111
|
-
/**
|
|
112
|
-
* Legacy: Load file-based routes with configuration
|
|
113
|
-
*/
|
|
114
|
-
loadFileRoutes(config?: FileBasedRoutingConfig): Promise<Router>;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
export type { DiscoveredRoute };
|
|
118
|
-
export { detectViewsDirectory, discoverRoutes, DEFAULT_VIEW_DIRECTORIES, DEFAULT_EXCLUDES, DEFAULT_EXTENSIONS };
|