1.1.0 • Published 11 months ago

@nlfmt/rapid v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

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.

1.1.0

11 months ago

1.0.0

11 months ago

0.0.1

11 months ago