1
1
import { type Route , type RouteCallback , type RouteGroupOptions } from '@stacksjs/types'
2
2
import { handleRequest } from './server'
3
-
3
+ import { projectPath } from '@stacksjs/path'
4
+ import { readTextFile } from '@stacksjs/storage'
4
5
export class Router {
5
6
private routes : Route [ ] = [ ]
6
7
@@ -14,32 +15,31 @@ export class Router {
14
15
15
16
public get ( url : string , callback : RouteCallback ) : void {
16
17
this . addRoute ( 'GET' , url , callback )
17
- handleRequest ( this . getRoutes ( ) )
18
18
}
19
19
20
20
public post ( url : string , callback : RouteCallback ) : void {
21
21
this . addRoute ( 'POST' , url , callback )
22
- handleRequest ( this . getRoutes ( ) )
23
22
}
24
23
25
24
public view ( url : string , callback : RouteCallback ) : void {
26
25
this . addRoute ( 'GET' , url , callback )
27
- handleRequest ( this . getRoutes ( ) )
26
+ }
27
+
28
+ public redirect ( url : string , callback : RouteCallback ) : void {
29
+ this . addRoute ( 'GET' , url , callback )
30
+ handleRequest ( this . getRoutes ( ) , true )
28
31
}
29
32
30
33
public delete ( url : string , callback : RouteCallback ) : void {
31
34
this . addRoute ( 'DELETE' , url , callback )
32
- handleRequest ( this . getRoutes ( ) )
33
35
}
34
36
35
37
public patch ( url : string , callback : RouteCallback ) : void {
36
38
this . addRoute ( 'PATCH' , url , callback )
37
- handleRequest ( this . getRoutes ( ) )
38
39
}
39
40
40
41
public put ( url : string , callback : RouteCallback ) : void {
41
42
this . addRoute ( 'PUT' , url , callback )
42
- handleRequest ( this . getRoutes ( ) )
43
43
}
44
44
45
45
public group ( options : RouteGroupOptions , callback : ( ) => void ) : void {
@@ -74,9 +74,11 @@ export class Router {
74
74
// this.routes.push({ method: 'after', pattern: /^$/, callback, paramNames: [] })
75
75
// }
76
76
77
- public getRoutes ( ) : Route [ ] {
77
+ public async getRoutes ( ) : Route [ ] {
78
+ const routeFileData = ( await readTextFile ( projectPath ( 'routes/web.ts' ) ) ) . data
79
+
78
80
return this . routes
79
81
}
80
82
}
81
83
82
- export const route = new Router ( )
84
+ export const route : Router = new Router ( ) satisfies Router
0 commit comments