@uploadx/core
Version:
Node.js resumable upload middleware
38 lines (37 loc) • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Validator = void 0;
exports.isValidationError = isValidationError;
const errors_1 = require("./errors");
const http_1 = require("./http");
const capitalize = (s) => s && s[0].toUpperCase() + s.slice(1);
function isValidationError(error) {
return error.name === 'ValidationError';
}
class Validator {
constructor(prefix = 'ValidationError') {
this.prefix = prefix;
this._validators = {};
}
add(config) {
for (const [key, validator] of Object.entries(config)) {
const code = `${this.prefix}${capitalize(key)}`;
this._validators[code] = { ...this._validators[code], ...validator };
if (typeof this._validators[code].isValid !== 'function') {
throw new Error('Validation config "isValid" is missing, or it is not a function!');
}
}
}
async verify(t) {
for (const [code, validator] of Object.entries(this._validators)) {
if (!(await validator.isValid(t))) {
return Promise.reject({
name: 'ValidationError',
code,
...(0, http_1.tupleToResponse)(validator.response || errors_1.ErrorMap.UnprocessableEntity)
});
}
}
}
}
exports.Validator = Validator;