UNPKG

@qualifyze/airtable

Version:
51 lines 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SimpleValidationContext = void 0; class SimpleValidationContext { constructor(dataDescription) { this.listOfErrors = []; this.dataDescription = dataDescription; } addError(error) { this.listOfErrors.push(error); return this; } addValidation(validator, data) { const isValid = validator.isValid(data); if (!isValid) { this.addError(validator.getValidationError() || new Error("Unknown validation error")); } return isValid; } createErrorString(indent = "\t") { return this.listOfErrors .map((error, index, array) => { const prefix = array.length > 1 ? `#${index + 1} ` : ""; const message = (error.message || error).toString(); return `${indent}${prefix}${message}`.split("\n").join(`\n${indent}`); }) .join("\n"); } getValidationError() { const numberOfErrors = this.listOfErrors.length; if (numberOfErrors === 0) { return null; } const friendlyNumberOfErrors = numberOfErrors > 1 ? `${numberOfErrors} errors` : "an error"; return new Error(`Encountered ${friendlyNumberOfErrors} while validating "${this.dataDescription}":\n${this.createErrorString()}`); } // eslint-disable-next-line @typescript-eslint/ban-types isObject(input) { if (typeof input !== "object") { this.addError(new Error(`Encountered unexpected ${typeof input} where an object was expected`)); return false; } if (input === null) { this.addError(new Error("Encountered unexpected null where an object was expected")); return false; } return true; } } exports.SimpleValidationContext = SimpleValidationContext; //# sourceMappingURL=simple-validation-context.js.map