express-cargo
Version:
express middleware for class-based request parsing
53 lines (52 loc) • 1.77 kB
JavaScript
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
export class ValidatorRule {
validate(value, instance) {
if (!this.validateFunction(value, instance)) {
let message = typeof this.message === 'string' ? this.message : this.message(this.propertyKey, value);
return new CargoFieldError(this.propertyKey, message);
}
return null;
}
constructor(propertyKey, type, validate, message){
_define_property(this, "type", void 0);
_define_property(this, "propertyKey", void 0);
_define_property(this, "validateFunction", void 0);
_define_property(this, "message", void 0);
this.propertyKey = propertyKey;
this.type = type;
this.validateFunction = validate;
this.message = message;
}
}
export class CargoFieldError extends Error {
constructor(field, message){
super(message), _define_property(this, "name", void 0), _define_property(this, "field", void 0);
this.name = 'CargoFieldError';
this.field = field;
}
}
export class CargoValidationError extends Error {
constructor(errors){
super('Cargo validation failed'), _define_property(this, "name", void 0), _define_property(this, "errors", void 0);
this.name = 'CargoValidationError';
this.errors = errors;
}
}
export class CargoTransformFieldError extends CargoFieldError {
constructor(field, message){
super(field, message);
this.name = 'CargoTransformFieldError';
}
}