guardz
Version:
A simple and lightweight TypeScript type guard library for runtime type validation.
48 lines (47 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.reportValidationResults = void 0;
const createSimplifiedTree_1 = require("./createSimplifiedTree");
const isDefined_1 = require("../typeguards/isDefined");
const isNil_1 = require("../typeguards/isNil");
/**
* Report validation results using functional approach
* @param result - The validation result to report
* @param config - Optional configuration for error reporting
*/
const reportValidationResults = (result, config) => {
if (result.valid === true || (0, isNil_1.isNil)(config)) {
return;
}
const errorMode = config.errorMode || 'multi';
const reportJsonMode = (config, resultTree) => {
if ((0, isDefined_1.isDefined)(resultTree)) {
config.callbackOnError(JSON.stringify((0, createSimplifiedTree_1.createSimplifiedTree)(resultTree), null, 2));
}
};
const reportMultiMode = (config) => {
if (result.errors && Array.isArray(result.errors)) {
const errorMessages = result.errors.map(error => error.message);
const combinedMessage = errorMessages.join('; ');
config.callbackOnError(combinedMessage);
}
};
const reportSingleMode = (config) => {
if (result.errors && Array.isArray(result.errors) && result.errors.length > 0) {
const firstError = result.errors[0];
if (firstError) {
config.callbackOnError(firstError.message);
}
}
};
if (errorMode === 'json' && (0, isDefined_1.isDefined)(result.tree)) {
reportJsonMode(config, result.tree);
}
else if (errorMode === 'multi') {
reportMultiMode(config);
}
else {
reportSingleMode(config);
}
};
exports.reportValidationResults = reportValidationResults;