@vulcan-sql/core
Version:
Core package of VulcanSQL
49 lines • 1.82 kB
JavaScript
;
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