Skip to content

Commit 46496e0

Browse files
authored
Merge pull request #4 from BackendStack21/adding-ts-types
feat: Adding TypeScript types
2 parents 78764c5 + 1f8d4ff commit 46496e0

File tree

6 files changed

+119
-5
lines changed

6 files changed

+119
-5
lines changed

common.d.ts

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { Pattern, Methods } from 'trouter'
2+
3+
export interface IRouterConfig {
4+
defaultRoute?: RequestHandler
5+
errorHandler?: (err: Error) => Response | Promise<Response>
6+
port?: number
7+
}
8+
9+
export type StepFunction = (error?: unknown) => Response | Promise<Response>
10+
11+
type ZeroRequest = Request & {
12+
params: Record<string, string>
13+
query: Record<string, string>
14+
ctx?: Record<string, any>
15+
}
16+
17+
export type RequestHandler = (
18+
req: ZeroRequest,
19+
next: StepFunction
20+
) => Response | Promise<Response>
21+
22+
export interface IRouter {
23+
fetch: (req: Request) => Response | Promise<Response>
24+
25+
use(...handlers: RequestHandler[]): this
26+
use(router: IRouter): this
27+
use(pattern: Pattern, ...handlers: RequestHandler[]): this
28+
use(prefix: Pattern, router: IRouter): this
29+
30+
on(method: Methods, pattern: Pattern, ...middlewares: RequestHandler[]): this
31+
32+
all(pattern: Pattern, ...handlers: RequestHandler[]): this
33+
get(pattern: Pattern, ...handlers: RequestHandler[]): this
34+
head(pattern: Pattern, ...handlers: RequestHandler[]): this
35+
patch(pattern: Pattern, ...handlers: RequestHandler[]): this
36+
options(pattern: Pattern, ...handlers: RequestHandler[]): this
37+
connect(pattern: Pattern, ...handlers: RequestHandler[]): this
38+
delete(pattern: Pattern, ...handlers: RequestHandler[]): this
39+
trace(pattern: Pattern, ...handlers: RequestHandler[]): this
40+
post(pattern: Pattern, ...handlers: RequestHandler[]): this
41+
put(pattern: Pattern, ...handlers: RequestHandler[]): this
42+
}

demos/basic.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { StepFunction, ZeroRequest } from "../index"
2+
import http from '../index'
3+
4+
const { router } = http({})
5+
router.use((req: ZeroRequest, next: StepFunction) => {
6+
req.ctx = {
7+
engine: 'bun'
8+
}
9+
10+
return next()
11+
})
12+
router.get('/:id', async (req: ZeroRequest) => {
13+
return Response.json(req.params)
14+
})
15+
router.post('/', async (req: ZeroRequest) => {
16+
return new Response('POST')
17+
})
18+
router.delete('/:id', async (req: ZeroRequest) => {
19+
return Response.json(req.params, {
20+
status: 200
21+
})
22+
})
23+
24+
export default router

index.d.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { IRouter, IRouterConfig } from './common'
2+
3+
export default function zero(config?: IRouterConfig): {
4+
router: IRouter
5+
}
6+
7+
export * from './common'

lib/router/sequential.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { IRouter, IRouterConfig } from './../../index'
2+
3+
export default function createSequentialRouter(config?: IRouterConfig): IRouter

package-lock.json

+42-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
],
2424
"devDependencies": {
2525
"0http-bun": "^1.0.3",
26+
"bun-types": "^1.1.8",
2627
"mitata": "^0.1.11"
2728
},
2829
"keywords": [

0 commit comments

Comments
 (0)