npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

koa-req-validation

v0.17.0

Published

A request validation middleware for Koa.

Downloads

79

Readme

koa-req-validation

Node.js CI npm package Libraries.io dependency status for latest release codecov Known Vulnerabilities

A validator middleware for koa. Inspired by express-validator.

Installation

The koa-req-validation requires validator, @koa/router and koa-bodyparser as peer dependencies.

Install peer dependencies

npm install validator@13 koa-bodyparser@4 @koa/router@10

Install koa-req-validation

npm install koa-req-validation

Getting started

A basic usage example

import Router, { RouterContext } from "@koa/router";
import { query, validationResults } from "koa-req-validation";

// ...

const router = new Router();

router.get(
    "/api/hello",
    query("name")
        .isLength({ min: 3, max: 20 })
        .withMessage("The name has to be between 3 and 20 characters")
        .build(), // <-- This is required at the end of each validation
    async (ctx: RouterContext) => {
        const result = validationResults(ctx);
        if (result.hasErrors()) {
            throw new RequestError(422, result.mapped());
        }
        const { name } = ctx.query;
        ctx.body = `Hello ${name}`;
    }
);

See the demo for other examples.

Documentation

This module offers various validation and sanitation functions. Please note the following things:

  • Nested objects can now be validated
    • Support has been added to the ValidationResult.passedData() output as well
  • The order matters
    • The validations and sanitations are being run in order they've been called in the validation chain
  • No sanitations are run for a chain after some of the validations has failed
    • This is due to the fact that some of the sanitizers rely on "valid" value (for example valid email address)
  • The sanitized values can be accessed only through ValidationResult.passedData()
    • The request body is treated as immutable in the validation middleware
const result = validationResults(ctx);
if (result.hasErrors()) {
    throw new RequestError(422, result.mapped());
}
const passed = result.passedData();

See the generated TypeDoc and ValidationChain for API documentation.

Issues

We use GitHub for issue tracking. Please look from previously submitted issues if someone else has already submitted the same issue.

Changelog

Please see releases.

Contribution

All contributions to the project are welcome.

Licence

ISC Licence