@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,315 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fluent Routing Extensions
|
|
3
|
-
*
|
|
4
|
-
* Implements fluent routing patterns with full TypeScript support
|
|
5
|
-
*/
|
|
6
|
-
import type { EnhancedRequest, MiddlewareHandler, Route, RouteHandler } from '../types';
|
|
7
|
-
import type { Router } from './router';
|
|
8
|
-
/**
|
|
9
|
-
* Controller class interface
|
|
10
|
-
*/
|
|
11
|
-
export interface ControllerClass {
|
|
12
|
-
new (): Controller;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Base controller interface
|
|
16
|
-
*/
|
|
17
|
-
export interface Controller {
|
|
18
|
-
[key: string]: RouteHandler | unknown;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Resource controller methods
|
|
22
|
-
*/
|
|
23
|
-
export type ResourceMethod = 'index' | 'create' | 'store' | 'show' | 'edit' | 'update' | 'destroy';
|
|
24
|
-
/**
|
|
25
|
-
* API resource methods (no create/edit views)
|
|
26
|
-
*/
|
|
27
|
-
export type ApiResourceMethod = 'index' | 'store' | 'show' | 'update' | 'destroy';
|
|
28
|
-
/**
|
|
29
|
-
* Singleton resource methods
|
|
30
|
-
*/
|
|
31
|
-
export type SingletonMethod = 'show' | 'edit' | 'update';
|
|
32
|
-
/**
|
|
33
|
-
* Resource configuration
|
|
34
|
-
*/
|
|
35
|
-
export interface ResourceOptions {
|
|
36
|
-
only?: ResourceMethod[];
|
|
37
|
-
except?: ResourceMethod[];
|
|
38
|
-
middleware?: (string | MiddlewareHandler)[];
|
|
39
|
-
names?: Partial<Record<ResourceMethod, string>>;
|
|
40
|
-
parameters?: Record<string, string>;
|
|
41
|
-
shallow?: boolean;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Route builder for fluent API
|
|
45
|
-
*/
|
|
46
|
-
export interface FluentRoute {
|
|
47
|
-
name: (name: string) => FluentRoute;
|
|
48
|
-
middleware: (...middleware: (string | MiddlewareHandler)[]) => FluentRoute;
|
|
49
|
-
withoutMiddleware: (...middleware: string[]) => FluentRoute;
|
|
50
|
-
where: (param: string, pattern: string | RegExp) => FluentRoute;
|
|
51
|
-
whereNumber: (param: string) => FluentRoute;
|
|
52
|
-
whereAlpha: (param: string) => FluentRoute;
|
|
53
|
-
whereAlphaNumeric: (param: string) => FluentRoute;
|
|
54
|
-
whereUuid: (param: string) => FluentRoute;
|
|
55
|
-
whereSlug: (param: string) => FluentRoute;
|
|
56
|
-
can: (ability: string, model?: string) => FluentRoute;
|
|
57
|
-
missing: (handler: (req: EnhancedRequest) => Response) => FluentRoute;
|
|
58
|
-
withTrashed: () => FluentRoute;
|
|
59
|
-
scopeBindings: () => FluentRoute;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Group builder for fluent API
|
|
63
|
-
*/
|
|
64
|
-
export interface GroupBuilder {
|
|
65
|
-
prefix: (prefix: string) => GroupBuilder;
|
|
66
|
-
name: (name: string) => GroupBuilder;
|
|
67
|
-
middleware: (...middleware: (string | MiddlewareHandler)[]) => GroupBuilder;
|
|
68
|
-
domain: (domain: string) => GroupBuilder;
|
|
69
|
-
controller: (controller: ControllerClass) => GroupBuilder;
|
|
70
|
-
routes: (callback: (router: FluentRouter) => void) => void;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Fluent router with chainable API
|
|
74
|
-
*/
|
|
75
|
-
export declare class FluentRouter {
|
|
76
|
-
private router;
|
|
77
|
-
private currentPrefix;
|
|
78
|
-
private currentNamePrefix;
|
|
79
|
-
private currentMiddleware;
|
|
80
|
-
private currentDomain;
|
|
81
|
-
private currentController;
|
|
82
|
-
private excludedMiddleware;
|
|
83
|
-
constructor(router: Router);
|
|
84
|
-
/**
|
|
85
|
-
* Register a GET route
|
|
86
|
-
*/
|
|
87
|
-
get(path: string, handler: RouteHandler | string | Response): FluentRouteBuilder;
|
|
88
|
-
/**
|
|
89
|
-
* Register a POST route
|
|
90
|
-
*/
|
|
91
|
-
post(path: string, handler: RouteHandler | string): FluentRouteBuilder;
|
|
92
|
-
/**
|
|
93
|
-
* Register a PUT route
|
|
94
|
-
*/
|
|
95
|
-
put(path: string, handler: RouteHandler | string): FluentRouteBuilder;
|
|
96
|
-
/**
|
|
97
|
-
* Register a PATCH route
|
|
98
|
-
*/
|
|
99
|
-
patch(path: string, handler: RouteHandler | string): FluentRouteBuilder;
|
|
100
|
-
/**
|
|
101
|
-
* Register a DELETE route
|
|
102
|
-
*/
|
|
103
|
-
delete(path: string, handler: RouteHandler | string): FluentRouteBuilder;
|
|
104
|
-
/**
|
|
105
|
-
* Register an OPTIONS route
|
|
106
|
-
*/
|
|
107
|
-
options(path: string, handler: RouteHandler | string): FluentRouteBuilder;
|
|
108
|
-
/**
|
|
109
|
-
* Register a route for any HTTP method
|
|
110
|
-
*/
|
|
111
|
-
any(path: string, handler: RouteHandler | string): FluentRouteBuilder;
|
|
112
|
-
/**
|
|
113
|
-
* Register a route for multiple HTTP methods
|
|
114
|
-
*/
|
|
115
|
-
match(methods: string[], path: string, handler: RouteHandler | string): FluentRouteBuilder;
|
|
116
|
-
/**
|
|
117
|
-
* Register a resource controller
|
|
118
|
-
*/
|
|
119
|
-
resource(name: string, Controller: ControllerClass, options?: ResourceOptions): this;
|
|
120
|
-
/**
|
|
121
|
-
* Register an API resource controller (no create/edit views)
|
|
122
|
-
*/
|
|
123
|
-
apiResource(name: string, controller: ControllerClass, options?: ResourceOptions): this;
|
|
124
|
-
/**
|
|
125
|
-
* Register a singleton resource (no index, create, store, destroy)
|
|
126
|
-
*/
|
|
127
|
-
singleton(name: string, Controller: ControllerClass, options?: ResourceOptions): this;
|
|
128
|
-
/**
|
|
129
|
-
* Create a route group with prefix
|
|
130
|
-
*/
|
|
131
|
-
prefix(prefix: string): GroupBuilderImpl;
|
|
132
|
-
/**
|
|
133
|
-
* Create a route group with name prefix
|
|
134
|
-
*/
|
|
135
|
-
name(namePrefix: string): GroupBuilderImpl;
|
|
136
|
-
/**
|
|
137
|
-
* Create a route group with middleware
|
|
138
|
-
*/
|
|
139
|
-
middleware(...middleware: (string | MiddlewareHandler)[]): GroupBuilderImpl;
|
|
140
|
-
/**
|
|
141
|
-
* Create a route group for a domain
|
|
142
|
-
*/
|
|
143
|
-
domain(domain: string): GroupBuilderImpl;
|
|
144
|
-
/**
|
|
145
|
-
* Create a route group with a controller
|
|
146
|
-
*/
|
|
147
|
-
controller(controller: ControllerClass): GroupBuilderImpl;
|
|
148
|
-
/**
|
|
149
|
-
* Create a route group
|
|
150
|
-
*/
|
|
151
|
-
group(options: GroupOptions, callback: (router: FluentRouter) => void): this;
|
|
152
|
-
/**
|
|
153
|
-
* Check if a named route exists
|
|
154
|
-
*/
|
|
155
|
-
has(name: string): boolean;
|
|
156
|
-
/**
|
|
157
|
-
* Get the current route (from request context)
|
|
158
|
-
*/
|
|
159
|
-
current(): Route | null;
|
|
160
|
-
/**
|
|
161
|
-
* Get the current route name
|
|
162
|
-
*/
|
|
163
|
-
currentRouteName(): string | null;
|
|
164
|
-
/**
|
|
165
|
-
* Get URL for a named route
|
|
166
|
-
*/
|
|
167
|
-
route(name: string, params?: Record<string, string | number>): string;
|
|
168
|
-
/**
|
|
169
|
-
* Register a fallback route
|
|
170
|
-
*/
|
|
171
|
-
fallback(handler: RouteHandler): this;
|
|
172
|
-
private addRoute;
|
|
173
|
-
/**
|
|
174
|
-
* Create a pattern object for route matching
|
|
175
|
-
*/
|
|
176
|
-
private createPattern;
|
|
177
|
-
private buildPath;
|
|
178
|
-
private buildMiddleware;
|
|
179
|
-
private resolveHandler;
|
|
180
|
-
private resolveMiddleware;
|
|
181
|
-
private getResourceMethods;
|
|
182
|
-
private getResourceRoute;
|
|
183
|
-
private getSingletonRoute;
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Fluent route builder for chaining route configuration
|
|
187
|
-
*/
|
|
188
|
-
export declare class FluentRouteBuilder implements FluentRoute {
|
|
189
|
-
private router;
|
|
190
|
-
private path;
|
|
191
|
-
private method;
|
|
192
|
-
private routeName;
|
|
193
|
-
private routeMiddleware;
|
|
194
|
-
private excludedMiddleware;
|
|
195
|
-
private constraints;
|
|
196
|
-
private missingHandler;
|
|
197
|
-
private includeTrashed;
|
|
198
|
-
private scopeBindingsEnabled;
|
|
199
|
-
private ability;
|
|
200
|
-
private abilityModel;
|
|
201
|
-
constructor(router: Router, path: string, method: string);
|
|
202
|
-
/**
|
|
203
|
-
* Set the route name
|
|
204
|
-
*/
|
|
205
|
-
name(name: string): this;
|
|
206
|
-
/**
|
|
207
|
-
* Add middleware to the route
|
|
208
|
-
*/
|
|
209
|
-
middleware(...middleware: (string | MiddlewareHandler)[]): this;
|
|
210
|
-
/**
|
|
211
|
-
* Exclude middleware from the route
|
|
212
|
-
*/
|
|
213
|
-
withoutMiddleware(...middleware: string[]): this;
|
|
214
|
-
/**
|
|
215
|
-
* Add a parameter constraint
|
|
216
|
-
*/
|
|
217
|
-
where(param: string, pattern: string | RegExp): this;
|
|
218
|
-
/**
|
|
219
|
-
* Constrain parameter to numbers
|
|
220
|
-
*/
|
|
221
|
-
whereNumber(param: string): this;
|
|
222
|
-
/**
|
|
223
|
-
* Constrain parameter to letters
|
|
224
|
-
*/
|
|
225
|
-
whereAlpha(param: string): this;
|
|
226
|
-
/**
|
|
227
|
-
* Constrain parameter to alphanumeric
|
|
228
|
-
*/
|
|
229
|
-
whereAlphaNumeric(param: string): this;
|
|
230
|
-
/**
|
|
231
|
-
* Constrain parameter to UUID
|
|
232
|
-
*/
|
|
233
|
-
whereUuid(param: string): this;
|
|
234
|
-
/**
|
|
235
|
-
* Constrain parameter to slug format
|
|
236
|
-
*/
|
|
237
|
-
whereSlug(param: string): this;
|
|
238
|
-
/**
|
|
239
|
-
* Add authorization check
|
|
240
|
-
*/
|
|
241
|
-
can(ability: string, model?: string): this;
|
|
242
|
-
/**
|
|
243
|
-
* Handle missing model binding
|
|
244
|
-
*/
|
|
245
|
-
missing(handler: (req: EnhancedRequest) => Response): this;
|
|
246
|
-
/**
|
|
247
|
-
* Include soft-deleted models
|
|
248
|
-
*/
|
|
249
|
-
withTrashed(): this;
|
|
250
|
-
/**
|
|
251
|
-
* Enable scoped bindings
|
|
252
|
-
*/
|
|
253
|
-
scopeBindings(): this;
|
|
254
|
-
private findRoute;
|
|
255
|
-
}
|
|
256
|
-
interface GroupOptions {
|
|
257
|
-
prefix?: string;
|
|
258
|
-
as?: string;
|
|
259
|
-
middleware?: (string | MiddlewareHandler)[];
|
|
260
|
-
domain?: string;
|
|
261
|
-
controller?: ControllerClass;
|
|
262
|
-
}
|
|
263
|
-
declare class GroupBuilderImpl implements GroupBuilder {
|
|
264
|
-
private fluentRouter;
|
|
265
|
-
private options;
|
|
266
|
-
constructor(router: FluentRouter);
|
|
267
|
-
prefix(prefix: string): this;
|
|
268
|
-
name(name: string): this;
|
|
269
|
-
middleware(...middleware: (string | MiddlewareHandler)[]): this;
|
|
270
|
-
domain(domain: string): this;
|
|
271
|
-
controller(controller: ControllerClass): this;
|
|
272
|
-
routes(callback: (router: FluentRouter) => void): void;
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Extend Router with fluent routing methods
|
|
276
|
-
*/
|
|
277
|
-
export declare function registerFluentRouting(RouterClass: typeof import('./router').Router): void;
|
|
278
|
-
declare module './router' {
|
|
279
|
-
interface Router {
|
|
280
|
-
/**
|
|
281
|
-
* Get fluent router instance
|
|
282
|
-
*/
|
|
283
|
-
fluent: () => FluentRouter;
|
|
284
|
-
/**
|
|
285
|
-
* Register a controller-based resource
|
|
286
|
-
* Note: Use `resourceController` to avoid conflict with existing `resource` method
|
|
287
|
-
*/
|
|
288
|
-
resourceController: (name: string, controller: ControllerClass, options?: ResourceOptions) => Router;
|
|
289
|
-
/**
|
|
290
|
-
* Register an API resource controller (no create/edit views)
|
|
291
|
-
*/
|
|
292
|
-
apiResourceController: (name: string, controller: ControllerClass, options?: ResourceOptions) => Router;
|
|
293
|
-
/**
|
|
294
|
-
* Register a singleton resource
|
|
295
|
-
*/
|
|
296
|
-
singletonResource: (name: string, controller: ControllerClass, options?: ResourceOptions) => Router;
|
|
297
|
-
/**
|
|
298
|
-
* Check if a named route exists
|
|
299
|
-
*/
|
|
300
|
-
hasRoute: (name: string) => boolean;
|
|
301
|
-
/**
|
|
302
|
-
* Get the current route
|
|
303
|
-
*/
|
|
304
|
-
currentRoute: () => Route | null;
|
|
305
|
-
/**
|
|
306
|
-
* Get the current route name
|
|
307
|
-
*/
|
|
308
|
-
currentRouteName: () => string | null;
|
|
309
|
-
/**
|
|
310
|
-
* Get URL for a named route
|
|
311
|
-
*/
|
|
312
|
-
routeUrl: (name: string, params?: Record<string, string | number>) => string;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
export {};
|
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
import type { BunQueryBuilderModel } from '../model-binding';
|
|
2
|
-
import type { RouteCacheConfig } from '../routing/route-caching';
|
|
3
|
-
import type { ThrottleConfig } from '../routing/route-throttling';
|
|
4
|
-
import type { EnhancedRequest, MiddlewareHandler, RouteHandler, ThrottlePattern } from '../types';
|
|
5
|
-
import { RouteCacheFactory } from '../routing/route-caching';
|
|
6
|
-
import { ThrottleFactory } from '../routing/route-throttling';
|
|
7
|
-
/**
|
|
8
|
-
* Fluent route builder with chainable API
|
|
9
|
-
*/
|
|
10
|
-
export declare class FluentRouteBuilder {
|
|
11
|
-
private method;
|
|
12
|
-
private path;
|
|
13
|
-
private handler;
|
|
14
|
-
private middleware;
|
|
15
|
-
private cacheConfig?;
|
|
16
|
-
private throttleConfig?;
|
|
17
|
-
private routeName?;
|
|
18
|
-
private modelBindings;
|
|
19
|
-
constructor(method: string, path: string, handler: RouteHandler);
|
|
20
|
-
/**
|
|
21
|
-
* Add middleware to route
|
|
22
|
-
*/
|
|
23
|
-
addMiddleware(middleware: MiddlewareHandler | MiddlewareHandler[]): this;
|
|
24
|
-
/**
|
|
25
|
-
* Add route caching with tags
|
|
26
|
-
*/
|
|
27
|
-
cached(tags?: string[], config?: Partial<RouteCacheConfig>): this;
|
|
28
|
-
/**
|
|
29
|
-
* Add route throttling with narrow type checking
|
|
30
|
-
*/
|
|
31
|
-
throttle(limit: ThrottlePattern | ThrottleConfig, _name?: string): this;
|
|
32
|
-
/**
|
|
33
|
-
* Set route name
|
|
34
|
-
*/
|
|
35
|
-
name(name: string): this;
|
|
36
|
-
/**
|
|
37
|
-
* Bind models to route parameters
|
|
38
|
-
*/
|
|
39
|
-
model(parameter: string, model: BunQueryBuilderModel): this;
|
|
40
|
-
/**
|
|
41
|
-
* Build the final route configuration
|
|
42
|
-
*/
|
|
43
|
-
build(): {
|
|
44
|
-
method: string;
|
|
45
|
-
path: string;
|
|
46
|
-
handler: RouteHandler;
|
|
47
|
-
middleware: MiddlewareHandler[];
|
|
48
|
-
name?: string;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Middleware condition function type
|
|
53
|
-
*/
|
|
54
|
-
export type MiddlewareCondition = (_request: EnhancedRequest) => boolean | Promise<boolean>;
|
|
55
|
-
/**
|
|
56
|
-
* Conditional middleware wrapper
|
|
57
|
-
*/
|
|
58
|
-
export interface ConditionalMiddleware {
|
|
59
|
-
condition: MiddlewareCondition;
|
|
60
|
-
middleware: MiddlewareHandler[];
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Builder for conditional middleware
|
|
64
|
-
*/
|
|
65
|
-
export declare class FluentConditionalBuilder {
|
|
66
|
-
private router;
|
|
67
|
-
private condition;
|
|
68
|
-
constructor(router: FluentRouter, condition: MiddlewareCondition);
|
|
69
|
-
middleware(middlewareName: string): this;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Builder for middleware with parameters
|
|
73
|
-
*/
|
|
74
|
-
export declare class FluentMiddlewareBuilder {
|
|
75
|
-
private router;
|
|
76
|
-
private middleware;
|
|
77
|
-
constructor(router: FluentRouter, middleware: MiddlewareHandler[]);
|
|
78
|
-
get(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
79
|
-
post(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
80
|
-
put(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
81
|
-
delete(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
82
|
-
patch(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Builder for route groups with middleware
|
|
86
|
-
*/
|
|
87
|
-
export declare class FluentRouteGroupBuilder {
|
|
88
|
-
private router;
|
|
89
|
-
private groupMiddleware;
|
|
90
|
-
constructor(router: FluentRouter, groupMiddleware: MiddlewareHandler[]);
|
|
91
|
-
get(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
92
|
-
post(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
93
|
-
put(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
94
|
-
delete(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
95
|
-
patch(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Fluent router with chainable API and advanced features
|
|
99
|
-
*/
|
|
100
|
-
export declare class FluentRouter {
|
|
101
|
-
private routes;
|
|
102
|
-
private globalMiddleware;
|
|
103
|
-
private subdomainRouter;
|
|
104
|
-
private routeGroups;
|
|
105
|
-
private middlewareGroups;
|
|
106
|
-
private namedMiddleware;
|
|
107
|
-
private conditionalMiddleware;
|
|
108
|
-
constructor();
|
|
109
|
-
/**
|
|
110
|
-
* Setup default named middleware with parameter support
|
|
111
|
-
*/
|
|
112
|
-
private setupDefaultMiddleware;
|
|
113
|
-
/**
|
|
114
|
-
* Register a middleware group
|
|
115
|
-
*/
|
|
116
|
-
middlewareGroup(name: string, middlewareNames: string[]): this;
|
|
117
|
-
/**
|
|
118
|
-
* Apply middleware group to routes
|
|
119
|
-
*/
|
|
120
|
-
middlewareGroupRoutes(name: string): FluentRouteGroupBuilder;
|
|
121
|
-
/**
|
|
122
|
-
* Conditional middleware execution
|
|
123
|
-
*/
|
|
124
|
-
when(condition: MiddlewareCondition): FluentConditionalBuilder;
|
|
125
|
-
/**
|
|
126
|
-
* Apply middleware with parameters
|
|
127
|
-
*/
|
|
128
|
-
middleware(middlewareName: string): FluentMiddlewareBuilder;
|
|
129
|
-
/**
|
|
130
|
-
* Add global middleware
|
|
131
|
-
*/
|
|
132
|
-
use(middleware: MiddlewareHandler): this;
|
|
133
|
-
/**
|
|
134
|
-
* Create a GET route
|
|
135
|
-
*/
|
|
136
|
-
get(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
137
|
-
/**
|
|
138
|
-
* Create a POST route
|
|
139
|
-
*/
|
|
140
|
-
post(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
141
|
-
/**
|
|
142
|
-
* Create a PUT route
|
|
143
|
-
*/
|
|
144
|
-
put(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
145
|
-
/**
|
|
146
|
-
* Create a DELETE route
|
|
147
|
-
*/
|
|
148
|
-
delete(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
149
|
-
/**
|
|
150
|
-
* Create a PATCH route
|
|
151
|
-
*/
|
|
152
|
-
patch(path: string, handler: RouteHandler): FluentRouteBuilder;
|
|
153
|
-
/**
|
|
154
|
-
* Register a built route
|
|
155
|
-
*/
|
|
156
|
-
register(builder: FluentRouteBuilder): this;
|
|
157
|
-
/**
|
|
158
|
-
* Create a cached route
|
|
159
|
-
*/
|
|
160
|
-
cached(tags?: string[], config?: Partial<RouteCacheConfig>): {
|
|
161
|
-
get: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
162
|
-
post: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
163
|
-
put: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
164
|
-
delete: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
165
|
-
patch: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
166
|
-
};
|
|
167
|
-
/**
|
|
168
|
-
* Create a throttled route
|
|
169
|
-
*/
|
|
170
|
-
throttled(limit: ThrottlePattern | ThrottleConfig): {
|
|
171
|
-
get: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
172
|
-
post: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
173
|
-
put: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
174
|
-
delete: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
175
|
-
patch: (path: string, handler: RouteHandler) => FluentRouteBuilder;
|
|
176
|
-
};
|
|
177
|
-
/**
|
|
178
|
-
* Create route group with shared attributes
|
|
179
|
-
*/
|
|
180
|
-
group(config: {
|
|
181
|
-
prefix?: string;
|
|
182
|
-
middleware?: MiddlewareHandler[];
|
|
183
|
-
name?: string;
|
|
184
|
-
domain?: string;
|
|
185
|
-
}, callback: (router: FluentRouter) => void): this;
|
|
186
|
-
/**
|
|
187
|
-
* Create subdomain routing group
|
|
188
|
-
*/
|
|
189
|
-
domain(pattern: string): {
|
|
190
|
-
routes: (callback: (router: FluentRouter) => void) => FluentRouter;
|
|
191
|
-
};
|
|
192
|
-
/**
|
|
193
|
-
* Create resource routes (Laravel-style)
|
|
194
|
-
*/
|
|
195
|
-
resource(name: string, controller: any, options?: {
|
|
196
|
-
only?: string[];
|
|
197
|
-
except?: string[];
|
|
198
|
-
model?: BunQueryBuilderModel;
|
|
199
|
-
}): this;
|
|
200
|
-
/**
|
|
201
|
-
* Get all registered routes
|
|
202
|
-
*/
|
|
203
|
-
getRoutes(): Array<{
|
|
204
|
-
method: string;
|
|
205
|
-
path: string;
|
|
206
|
-
handler: RouteHandler;
|
|
207
|
-
middleware: MiddlewareHandler[];
|
|
208
|
-
name?: string;
|
|
209
|
-
}>;
|
|
210
|
-
/**
|
|
211
|
-
* Handle incoming request
|
|
212
|
-
*/
|
|
213
|
-
handle(request: EnhancedRequest): Promise<Response | null>;
|
|
214
|
-
/**
|
|
215
|
-
* Check if route matches request
|
|
216
|
-
*/
|
|
217
|
-
private matchesRoute;
|
|
218
|
-
/**
|
|
219
|
-
* Execute route with middleware
|
|
220
|
-
*/
|
|
221
|
-
private executeRoute;
|
|
222
|
-
}
|
|
223
|
-
/** API route options */
|
|
224
|
-
export interface ApiRouteOptions {
|
|
225
|
-
method?: string;
|
|
226
|
-
cache?: string[];
|
|
227
|
-
throttle?: string;
|
|
228
|
-
}
|
|
229
|
-
/** Protected route options */
|
|
230
|
-
export interface ProtectedRouteOptions {
|
|
231
|
-
method?: string;
|
|
232
|
-
roles?: string[];
|
|
233
|
-
}
|
|
234
|
-
/** Upload route options */
|
|
235
|
-
export interface UploadRouteOptions {
|
|
236
|
-
maxSize?: number;
|
|
237
|
-
allowedTypes?: string[];
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Factory functions for common route patterns
|
|
241
|
-
*/
|
|
242
|
-
export declare const RouteFactory: {
|
|
243
|
-
api: (path: string, handler: RouteHandler, options?: ApiRouteOptions) => FluentRouteBuilder;
|
|
244
|
-
protected: (path: string, handler: RouteHandler, options?: ProtectedRouteOptions) => FluentRouteBuilder;
|
|
245
|
-
upload: (path: string, handler: RouteHandler, options?: UploadRouteOptions) => FluentRouteBuilder;
|
|
246
|
-
};
|
|
247
|
-
/**
|
|
248
|
-
* Utility functions
|
|
249
|
-
*/
|
|
250
|
-
export declare const RouterUtils: {
|
|
251
|
-
/**
|
|
252
|
-
* Generate route URL with parameters
|
|
253
|
-
*/
|
|
254
|
-
route: (name: string, params?: Record<string, string>, query?: Record<string, string>) => string;
|
|
255
|
-
/**
|
|
256
|
-
* Redirect response
|
|
257
|
-
*/
|
|
258
|
-
redirect: (url: string, status?: number) => Response;
|
|
259
|
-
/**
|
|
260
|
-
* JSON response
|
|
261
|
-
*/
|
|
262
|
-
json: (data: any, status?: number) => Response;
|
|
263
|
-
};
|
|
264
|
-
/**
|
|
265
|
-
* Global router instance
|
|
266
|
-
*/
|
|
267
|
-
export declare const router: FluentRouter;
|
|
268
|
-
/**
|
|
269
|
-
* Export commonly used factory functions
|
|
270
|
-
*/
|
|
271
|
-
export { RouteCacheFactory, ThrottleFactory };
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Handler Resolver
|
|
3
|
-
*
|
|
4
|
-
* Resolves route handlers from various formats:
|
|
5
|
-
* - Functions returning Response
|
|
6
|
-
* - Functions returning strings/objects (auto-wrapped)
|
|
7
|
-
* - String file paths like 'UserAction.ts' or './actions/UserAction'
|
|
8
|
-
* - Controller@method patterns like 'UserController@index'
|
|
9
|
-
* - Class constructors with handle() method
|
|
10
|
-
* - Class instances with handle() method
|
|
11
|
-
*/
|
|
12
|
-
import type { EnhancedRequest, RouterConfig } from '../types';
|
|
13
|
-
/**
|
|
14
|
-
* Wraps a value in a Response object if it's not already a Response
|
|
15
|
-
*/
|
|
16
|
-
export declare function wrapResponse(value: unknown): Response;
|
|
17
|
-
/**
|
|
18
|
-
* Resolves and executes a handler, returning a Response
|
|
19
|
-
*/
|
|
20
|
-
export declare function resolveHandler(handler: unknown, req: EnhancedRequest, config: RouterConfig): Promise<Response>;
|
|
21
|
-
/**
|
|
22
|
-
* Creates a handler resolver bound to a specific config
|
|
23
|
-
*/
|
|
24
|
-
export declare function createHandlerResolver(config: RouterConfig): (handler: unknown, req: EnhancedRequest) => Promise<Response>;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Router } from './router';
|
|
2
|
-
/**
|
|
3
|
-
* HTTP methods extension for Router class
|
|
4
|
-
* Uses a class extension pattern instead of prototype manipulation
|
|
5
|
-
*/
|
|
6
|
-
export declare function registerHttpMethods(RouterClass: typeof Router): void;
|
|
7
|
-
/**
|
|
8
|
-
* Register redirect methods on the Router class
|
|
9
|
-
*/
|
|
10
|
-
export declare function registerRedirectMethods(RouterClass: typeof Router): void;
|