valmate
Version:
A lightweight Express middleware for flexible request validation with custom rules.
107 lines (71 loc) β’ 2.37 kB
Markdown
# Valmate π§ͺ
**Valmate** is a safe, flexible, and lightweight Express.js middleware to validate incoming requests using simple custom rules. It also includes safeguards to prevent incorrect usage outside of Express route handlers.
## π Installation
```bash
npm install valmate
```
## π¦ Usage
```js
import express from 'express';
import valmate from 'valmate';
const app = express();
app.use(express.json());
app.post(
'/api/user',
valmate([
{
test: (req) => !!req.body.username,
errorMessage: 'Username is required',
},
{
test: (req) => req.body.email?.includes('@'),
errorMessage: 'Valid email is required',
},
]),
(req, res) => {
res.json({ success: true, message: 'Data is valid!' });
}
);
```
## π§° API
### `valmate(validations: Array)`
| Field | Type | Required | Default | Description |
| -------------- | ------------------ | -------- | --------------- | ----------------------------------------- |
| `test` | `(req) => boolean` | β
| β | Function that checks the request validity |
| `errorMessage` | `string` | β | `'Bad request'` | Message to return if validation fails |
| `statusCode` | `number` | β | `400` | HTTP status to return if validation fails |
Returns an Express middleware function `(req, res, next) => {}`
## β
Example with Custom Status Code
```js
valmate([
{
test: (req) => req.body.token === 'secret',
errorMessage: 'Unauthorized access',
statusCode: 401,
},
]);
```
## π§ͺ Runtime Safeguards
Valmate includes checks to make sure itβs used properly:
β
Throws if validations is not an array
β
Throws if used outside of an Express route handler
β
Logs a warning if a validation rule is missing or invalid
You'll see helpful errors like:
```
[valmate] Middleware must be used in an Express route. Check if you are calling it outside of Express context.
```
## π‘ Why use Valmate?
- β‘ Lightweight and dependency-free
- π§ Simple rule-based logic
- π§± Plug-and-play in Express routes
- π‘ Clear error messages and runtime protection
## π License
MIT License
Β© 2025 [Amarjeet Baraik](https://github.com/developer-amarjeetBaraik)