export default class Validator {
    objectType;
    fieldsToCheck;
    constructor(objectType, fieldsToCheck) {
        this.objectType = objectType;
        this.fieldsToCheck = fieldsToCheck;
    }
    validate(object, _options) {
        if (!object) {
            throw new Error(`No ${this.objectType}.`);
        }
        checkForAbsentAttributes(this, object);
    }
}
function checkForAbsentAttributes(validator, object) {
    const absentAttributes = [];
    validator.fieldsToCheck.forEach(attribute => {
        if (!object[attribute]) {
            absentAttributes.push(attribute);
        }
    });
    if (absentAttributes.length !== 0) {
        const plural = absentAttributes.length > 1;
        throw new Error(`The ${validator.objectType} attribute${plural ? 's' : ''} ${absentAttributes.join(', ')} ${plural ? 'were not' : 'was not'} found.`);
    }
}
