UNPKG

valmate

Version:

A lightweight Express middleware for flexible request validation with custom rules.

107 lines (71 loc) β€’ 2.37 kB
# 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)