UNPKG

@apizr-io/class-utils

Version:

Package containing all class-validator function with all custom apizr class validation functions

87 lines 4.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IsLower = exports.IsGreater = void 0; const class_validator_1 = require("class-validator"); const validateGreaterLower = (value, args, comparator, validationOptions) => { const [relatedPropertyName] = args.constraints; if (typeof value !== 'number') { throw new Error(`Value ${value} is not a number`); } if (typeof relatedPropertyName === 'string') { if (!(relatedPropertyName in args.object)) { throw new Error(`Property ${relatedPropertyName} not found in object`); } const relatedValue = args.object[relatedPropertyName]; if (typeof relatedValue !== 'number') { throw new Error(`Invalid property ${relatedPropertyName} type: ${typeof relatedValue}`); } if (comparator(value, relatedValue)) { return true; } return (validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.allowEqual) ? value === relatedValue : false; } if (typeof relatedPropertyName === 'number') { if (comparator(value, relatedPropertyName)) { return true; } return (validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.allowEqual) ? value === relatedPropertyName : false; } throw new Error(`Invalid related property type: ${typeof relatedPropertyName}`); }; function IsGreater(valueOrProperty, validationOptions) { return (object, propertyName) => { (0, class_validator_1.registerDecorator)({ name: 'isGreater', target: object.constructor, propertyName, constraints: [valueOrProperty], options: { message: (args) => { const [relatedPropertyName] = args.constraints; const targetValue = typeof relatedPropertyName === 'number' ? relatedPropertyName : args.object[relatedPropertyName]; const example = `${args.value} >${(validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.allowEqual) ? '=' : ''} ${targetValue} is false`; return `Number ${args.property} must be greater${(validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.allowEqual) ? ' or equal' : ''} than ${relatedPropertyName} (${example})`; }, ...validationOptions, }, validator: { validate(value, args) { return validateGreaterLower(value, args, (value, relatedValue) => value > relatedValue, validationOptions); }, }, }); }; } exports.IsGreater = IsGreater; function IsLower(valueOrProperty, validationOptions) { return (object, propertyName) => { (0, class_validator_1.registerDecorator)({ name: 'isLower', target: object.constructor, propertyName, constraints: [valueOrProperty], options: { message: (args) => { const [relatedPropertyName] = args.constraints; const targetValue = typeof relatedPropertyName === 'number' ? relatedPropertyName : args.object[relatedPropertyName]; const example = `${args.value} <${(validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.allowEqual) ? '=' : ''} ${targetValue} is false`; return `Number ${args.property} must be lower${(validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.allowEqual) ? ' or equal' : ''} than ${relatedPropertyName} (${example})`; }, ...validationOptions, }, validator: { validate(value, args) { return validateGreaterLower(value, args, (value, relatedValue) => value < relatedValue, validationOptions); }, }, }); }; } exports.IsLower = IsLower; //# sourceMappingURL=number.decorator.js.map