express-cargo
Version:
express middleware for class-based request parsing
77 lines (76 loc) • 2.33 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get CargoFieldError () {
return CargoFieldError;
},
get CargoTransformFieldError () {
return CargoTransformFieldError;
},
get CargoValidationError () {
return CargoValidationError;
},
get ValidatorRule () {
return ValidatorRule;
}
});
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;
}
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;
}
}
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;
}
}
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;
}
}
class CargoTransformFieldError extends CargoFieldError {
constructor(field, message){
super(field, message);
this.name = 'CargoTransformFieldError';
}
}