@nlfmt/rapid
v1.1.0
Published
Rapidly create typesafe routes for your express application
Downloads
5
Maintainers
Readme
Rapid
Rapidly create typesafe routes for your express application.
Installation
Just add the package @nlfmt/rapid
using your favorite package manager
pnpm add @nlfmt/rapid
Features
Zod
Rapid uses Zod to validate the request body, query parameters, cookies and route parameters for you.
This allows you to define the shape of the data you expect to receive and Rapid will automatically validate it for you.
Typesafe reusable Middleware
Using Rapid, you can define Middleware functions that add context to the route handler.
They can build on top of each other easily and are fully typesafe.
Examples
import { createRouter } from "@nlfmt/rapid"
import express from "express"
import z from "zod"
apiRouter
.path("/user/:userId")
.params({
// rapid automatically infers the param names from the url
userId: z.string().min(1),
})
.body(
z.object({
username: z.string().regex(
/^[a-zA-Z1-9_.]{3,}$/g,
"Username can only contain letters, underscores and dots"
),
password: z.string().min(6)
})
)
// rapid performs the input validation for you
// and types `body`, `params` and more accordingly
.put(({ body, params }) => {
const user = db.user.findById(params.userId)
if (!user)
throw new ApiError({
code: 404,
name: "NOT_FOUND",
message: "User not found",
})
return db.user.updateById(params.userId, body)
})
const app = express()
app.use(express.json())
app.use("/api", apiRouter.router)
app.listen(3000)
For more examples, check out the examples directory.
License
This project is licensed under the MIT License - see the LICENSE file for details.