New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

koa-validator

Package Overview
Dependencies
Maintainers
2
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa-validator - npm Package Compare versions

Comparing version 0.5.2 to 0.5.5

316

lib/validator.js

@@ -5,3 +5,2 @@ var validator = require('validator')

, extend = require('./extend')
, sanitizers = [

@@ -24,161 +23,26 @@ 'trim'

// extend validator
extendCheck(extend.check);
extendSanitize(extend.sanitize);
// expose
module.exports = koaValidator;
module.exports.validator = validator;
module.exports.extendSanitize = extendSanitize;
module.exports.extendCheck = extendCheck;
// main function
function koaValidator(options){
var errorFormatter = makeError;
options = options || {};
options.errorFormatter = options.errorFormatter || function(param, msg, value){
return {
param: param
, msg: msg
, value: value
};
};
function getParams(ctx, name){
return ctx.params && ctx.params[name];
}
function getQuery(ctx, name){
return ctx.query && ctx.query[name];
}
function getBody(ctx, name){
return ctx.request.body && ctx.request.body[name];
}
function getHeader(ctx, name){
var toCheck;
if (name === 'referrer' || name === 'referer') {
toCheck = ctx.headers.referer;
} else {
toCheck = ctx.headers[name];
if(options.errorFormatter){
if(!is.isFunction(options.errorFormatter)){
throw new Error('errorFormatter must be a function');
}else{
errorFormatter = options.errorFormatter;
}
return toCheck || '';
}
function updateParams(ctx, name, value){
return ctx.params[name] = value;
// route params like /user/:id
if (ctx.params && ctx.params.hasOwnProperty(name) &&
undefined !== ctx.params[name]) {
return ctx.params[name] = value;
}
return false;
}
function updateQuery(ctx, name, value){
return ctx.query[name] = value;
// query string params
if (undefined !== ctx.query[name]) {
return ctx.query[name] = value;
}
return false;
}
function updateBody(ctx, name, value){
return ctx.request.body[name] = value;
// request body params via connect.bodyParser
if (ctx.request.body && undefined !== ctx.request.body[name]) {
return ctx.request.body[name] = value;
}
return false;
}
function makeSanitize(field){
var getter = field === 'params' ? getParams :
field === 'query' ? getQuery :
getBody
, updater = field === 'params' ? updateParams :
field === 'query' ? updateQuery :
updateBody
;
return function(name){
var ctx = this
, value = getter(ctx, name)
, methods = {}
;
Object.keys(validator).forEach(function(methodName){
if(methodName.match(/^to/) || sanitizers.indexOf(methodName) !== -1){
methods[methodName] = function(){
var args = [value].concat(Array.prototype.slice.call(arguments));
var result = validator[methodName].apply(validator, args);
updater(ctx, name, result)
return result;
};
}
});
return methods;
}
}
function makeCheck(field){
var getter = field === 'params' ? getParams :
field === 'query' ? getQuery :
field === 'body' ? getBody :
getHeader
;
return function(param, failMsg){
var ctx = this
, value
;
if(!Array.isArray(param)){
param = typeof param === 'number' ?
[param] :
param.split('.').filter(function(e){
return e !== '';
});
}
param.map(function(item){
if(value === undefined){
value = getter(ctx, item);
}else{
value = value[item];
}
});
param = param.join('.');
var errorHandler = function(msg){
var error = options.errorFormatter(param, msg, value);
if (ctx._validationErrors === undefined) {
ctx._validationErrors = [];
}
ctx._validationErrors.push(error);
if (ctx.onErrorCallback) {
ctx.onErrorCallback(msg);
}
return this;
};
var methods = {};
Object.keys(validator).forEach(function(methodName) {
if (methodName.match(/^is/) || checkers.indexOf(methodName) !== -1) {
methods[methodName] = function() {
var args = [value].concat(Array.prototype.slice.call(arguments));
var isCorrect = validator[methodName].apply(validator, args);
if (!isCorrect) {
errorHandler(failMsg || 'Invalid value');
}
return methods;
}
}
});
return methods;
};
}
return function *validator(next){

@@ -191,6 +55,6 @@ var ctx = this;

ctx.checkParams = makeCheck('params');
ctx.checkQuery = makeCheck('query');
ctx.checkBody = makeCheck('body');
ctx.checkHeader = makeCheck('header');
ctx.checkParams = makeCheck('params', errorFormatter);
ctx.checkQuery = makeCheck('query', errorFormatter);
ctx.checkBody = makeCheck('body', errorFormatter);
ctx.checkHeader = makeCheck('header', errorFormatter);

@@ -224,2 +88,139 @@ ctx.assertParams = ctx.checkParams;

function getParams(ctx, name){
return ctx.params && ctx.params[name];
}
function getQuery(ctx, name){
return ctx.query && ctx.query[name];
}
function getBody(ctx, name){
return ctx.request.body && ctx.request.body[name];
}
function getHeader(ctx, name){
var toCheck;
if (name === 'referrer' || name === 'referer') {
toCheck = ctx.headers.referer;
} else {
toCheck = ctx.headers[name];
}
return toCheck || '';
}
function updateParams(ctx, name, value){
return ctx.params[name] = value;
}
function updateQuery(ctx, name, value){
return ctx.query[name] = value;
}
function updateBody(ctx, name, value){
return ctx.request.body[name] = value;
}
function makeSanitize(field){
var getter = field === 'params' ? getParams :
field === 'query' ? getQuery :
getBody
, updater = field === 'params' ? updateParams :
field === 'query' ? updateQuery :
updateBody
;
return function(name){
var ctx = this
, value = getter(ctx, name)
, methods = {}
;
Object.keys(validator).forEach(function(methodName){
if(methodName.match(/^to/) || sanitizers.indexOf(methodName) !== -1){
methods[methodName] = function(){
var args = [value].concat(Array.prototype.slice.call(arguments));
var result = validator[methodName].apply(validator, args);
updater(ctx, name, result)
return result;
};
}
});
return methods;
}
}
function makeCheck(field, errorFormatter){
var getter = field === 'params' ? getParams :
field === 'query' ? getQuery :
field === 'body' ? getBody :
getHeader
;
return function(param, failMsg){
var ctx = this
, value
;
if(!Array.isArray(param)){
param = typeof param === 'number' ?
[param] :
param.split('.').filter(function(e){
return e !== '';
});
}
param.map(function(item){
if(value === undefined){
value = getter(ctx, item);
}else{
value = value[item];
}
});
param = param.join('.');
var errorHandler = function(msg){
var error = errorFormatter(param, msg, value);
if (ctx._validationErrors === undefined) {
ctx._validationErrors = [];
}
ctx._validationErrors.push(error);
if (ctx.onErrorCallback) {
ctx.onErrorCallback(msg);
}
return this;
};
var methods = {};
Object.keys(validator).forEach(function(methodName) {
if (methodName.match(/^is/) || checkers.indexOf(methodName) !== -1) {
methods[methodName] = function() {
var args = [value].concat(Array.prototype.slice.call(arguments));
var isCorrect = validator[methodName].apply(validator, args);
if (!isCorrect) {
errorHandler(failMsg || 'Invalid value');
}
return methods;
}
}
});
return methods;
};
}
function makeError(param, msg, value){
return {
param: param
, msg: msg
, value: value
};
}
function extendCheck(name, fn){

@@ -277,6 +278,1 @@ var objs = {};

}
module.exports = koaValidator;
module.exports.validator = validator;
module.exports.extendSanitize = extendSanitize;
module.exports.extendCheck = extendCheck;
{
"name": "koa-validator",
"version": "0.5.2",
"version": "0.5.5",
"description": "a koa port of express-validator",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc