import type { IConstraint, ValidatorConstraintOptions } from "../types"; import type { ValidationArguments } from 'class-validator'; /** * @file Decorator Constraints - IsSemVerConstraint * @module grease/constraints/IsSemVer */ /** * Custom validator for the `IsSemVer` decorator. * * @implements {IConstraint} */ export default class IsSemVerConstraint implements IConstraint { /** * @static * @readonly * @property {ValidatorConstraintOptions} options - Custom constraint options */ static readonly options: ValidatorConstraintOptions; /** * Returns the default error message if validation fails. * * @param {ValidationArguments} args - Message builder arguments * @param {any[]} args.constraints - Validator constraints * @param {IsSemVerOptions} args.constraints.0 - Validation options * @return {string} Default error message */ defaultMessage(args: ValidationArguments): string; /** * Checks if `value` is a valid [semantic version][1]. * * If validation fails, the arguments context `args.constraints[0].context`, * will be modified. * * [1]: https://github.com/npm/node-semver * * @async * @param {any} value - Value to test against constraint * @param {ValidationArguments} args - Message builder arguments * @param {any[]} args.constraints - Validator constraints * @param {IsSemVerOptions} [args.constraints.0] - Validation options * @param {CleanConfig} [args.constraints.0.clean] - Remove tag prefix and any * leading or trailing whitespaces from value * @param {CMPConfig} [args.constraints.0.cmp] - Compare to another version * @param {CoerceOptions | boolean} [args.constraints.0.coerce] - Coerce * value to semantic version if possible * @param {GitSemverTagsOptions | boolean} [args.constraints.0.git] - Check if * value is semantic version tag pushed to the current repository * @param {boolean} [args.constraints.0.negit] - Check if value is semantic * version tag, but **not** pushed to the current repository * @param {SatisfiesConfig} [args.constraints.0.satisfies] - Check if value * is semantic version and satisfies specified range * @return {Promise} Promise containing boolean indicating if value * is valid semantic version (with or without tag prefix) */ validate(value: any, args: ValidationArguments): Promise; }