UNPKG

@uploadx/core

Version:
38 lines (37 loc) 1.38 kB
"use strict"; 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;