UNPKG

@vulcan-sql/core

Version:
54 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnumValidator = void 0; const tslib_1 = require("tslib"); const models_1 = require("../../../models/index"); const Joi = require("joi"); const errors_1 = require("../../utils/errors"); const constraints_1 = require("../constraints"); let EnumValidator = class EnumValidator extends models_1.InputValidator { constructor() { super(...arguments); this.argsValidator = Joi.object({ items: Joi.array().min(1).required(), }); } validateSchema(args) { try { // validate arguments schema Joi.assert(args, this.argsValidator); } catch (e) { if (e instanceof Joi.ValidationError) throw new errors_1.ConfigurationError(`The arguments schema for "enum" type validator is invalid: ${e.message}`, { nestedError: e }); else throw new errors_1.ConfigurationError('The arguments schema for "enum" type validator is invalid', { nestedError: e }); } } validateData(value, args) { // It there is no value, ignore the check. if (value === undefined || value === null) return; // Only allow the values in items property const schema = Joi.valid(...args.items.map((item) => String(item))); try { Joi.assert(String(value), schema); } catch (e) { if (e instanceof Joi.ValidationError) throw new errors_1.UserError(`The input data for "enum" type validator is invalid: ${e.message}`, { nestedError: e }); else throw new errors_1.UserError('The input data for "enum" type validator is invalid', { nestedError: e }); } } getConstraints(args) { const constraints = [constraints_1.Constraint.Enum(args.items)]; return constraints; } }; EnumValidator = tslib_1.__decorate([ (0, models_1.VulcanInternalExtension)(), (0, models_1.VulcanExtensionId)('enum') ], EnumValidator); exports.EnumValidator = EnumValidator; //# sourceMappingURL=enumValidator.js.map