mirror of
https://github.com/openstf/stf
synced 2025-10-03 17:59:28 +02:00
51 lines
1,019 B
JavaScript
51 lines
1,019 B
JavaScript
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()
|
|
}
|
|
}
|