UNPKG

@vulcan-sql/core

Version:
49 lines 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RequiredValidator = 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"); // required means disallow undefined as value let RequiredValidator = class RequiredValidator extends models_1.InputValidator { constructor() { super(...arguments); // Validator for arguments schema in schema.yaml, should match RequiredInputArgs this.argsValidator = Joi.object({ disallow: Joi.array().items(Joi.any()).optional(), }); } validateSchema(args) { try { // validate arguments schema Joi.assert(args, this.argsValidator); } catch (_a) { throw new errors_1.ConfigurationError('The arguments schema for "required" type validator is incorrect'); } } validateData(value, args) { let schema = Joi.any().required(); try { // if args.exclude existed, check value is if (args === null || args === void 0 ? void 0 : args.disallow) { schema = schema.invalid(...args.disallow); } Joi.assert(value, schema); } catch (_a) { throw new errors_1.UserError('The input parameter is invalid, it should be required'); } } getConstraints() { return [constraints_1.Constraint.Required()]; } }; RequiredValidator = tslib_1.__decorate([ (0, models_1.VulcanInternalExtension)(), (0, models_1.VulcanExtensionId)('required') ], RequiredValidator); exports.RequiredValidator = RequiredValidator; //# sourceMappingURL=requiredValidator.js.map