blob: f242f3a68036396cc30060478c3185343561e967 [file] [log] [blame]
var util = require('util')
var Promise = require('bluebird')
function ValidationError(message, errors) {
Error.call(this, message)
this.name = 'ValidationError'
this.errors = errors
Error.captureStackTrace(this, ValidationError)
}
util.inherits(ValidationError, Error)
module.exports.ValidationError = ValidationError
module.exports.validate = function(req, rules) {
return new Promise(function(resolve, reject) {
rules()
var errors = req.validationErrors()
if (!errors) {
resolve()
}
else {
reject(new ValidationError('validation error', errors))
}
})
}
module.exports.limit = function(limit, handler) {
var queue = []
var running = 0
/* eslint no-use-before-define: 0 */
function maybeNext() {
while (running < limit && queue.length) {
running += 1
handler.apply(null, queue.shift()).finally(done)
}
}
function done() {
running -= 1
maybeNext()
}
return function() {
queue.push(arguments)
maybeNext()
}
}