This package has been deprecated

Author message:

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

validation-operator
TypeScript icon, indicating that this package has built-in type declarations

5.0.1 • Public • Published

validation-operator

Build Status npm version GitHub version

Higher-Order runtime validation for parameter and return values.

  • Parameter validation enhancer
  • Result validation enhancer
  • Joi schema supported
  • Use with lodash.flow for better readability
  • Typescript definitions included

Usage

Installation

npm install --save validation-operator
# or 
yarn add validation-operator

Example 1 (parameter validation)

const { validateParams } = require("validation-operator");
const Joi = require("joi");
const db = require("./db");
 
const userRepository = {
    create: validateParams(Joi.object({
            username: Joi.string().required(),
            password: Joi.string().required(),
        }))(({ username, password }) => {
                /* username and password validated */
                return db.create({ username, password });
            }),
};
 
const user = userRepository.create({ username: "foo", password: "bar" });

Example 2 (multiple parameter validation)

const { validateParams } = require("validation-operator/joi");
const Joi = require("joi");
const db = require("./db");
 
const userRepository = {
    create: validateParams(
            Joi.string().required(),
            Joi.string().required(),
        )((username, password) => {
            /* username and password validated */
            return db.create({ username, password });
        }),
};
 
const user = userRepository.create("foo", "bar");

Example 3 (result validation)

const { validateResult } = require("validation-operator");
const Joi = require("joi");
const db = require("./db");
 
const userRepository = {
    findById: validateResult(Joi.object({
            id: Joi.string().uuid().required(),
            username: Joi.string().required(),
            password: Joi.string().required(),
        })(function (_id) {
            return db.find({ _id });
        }),
};
 
const user = userRepository.findById("xxxxxx");
/* user validated */

Example 5 (Typescript)

import { validateResult } from "validation-operator";
import * as Joi from "joi";
import db from "./db";
 
interface User {
    username: string,
    password: string,
}
 
interface UserRepository {
    findById(_id: string): User
}
 
 
class UserRepositoryImpl implements UserRepository {
    findById = validateResult(Joi.object({
            id: Joi.string().uuid().required(),
            username: Joi.string().required(),
            password: Joi.string().required(),
        })(function (this: UserRepositoryImpl, _id: string): User {
            return db.find({ _id });
        })
}
 
const userRepository = new UserRepositoryImpl();
 
const userUser = userRepository.findById("xxxxxx");
/* user validated */

Example 6 (usage with lodash.flow)

const { validateParams, ValidateResult } = require("validation-operator");
const Joi = require("joi");
const flow = require("lodash.flow");
const db = require("./db");
 
const userRepository = {
    create: flow([
                validateParams(
                    Joi.string().required(),
                    Joi.string().required(),
                ),
                validateResult(
                    Joi.object({
                        id: Joi.string().required(),
                        username: Joi.string().required(),
                        password: Joi.string().required(),
                    })
                ),
        ])(function(username, password) {
            /* username and password validated */
            return db.create({ username, password });
        }),
};
 
const user = userRepository.create("foo", "bar");
/* user validated */

Readme

Keywords

none

Package Sidebar

Install

npm i validation-operator

Weekly Downloads

2

Version

5.0.1

License

MIT

Unpacked Size

133 kB

Total Files

13

Last publish

Collaborators

  • rafaelkallis