objectypes
Version:
A type-safe library to transform and validate objects
51 lines (50 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectHandler = void 0;
/* eslint-disable no-useless-constructor */
const build_object_1 = require("./build-object/build-object");
const extract_object_1 = require("./extract-object");
const validate_object_1 = require("./validate-object");
class ObjectHandler {
constructor(klass) {
this.klass = klass;
}
buildValidationErrorResult(errors) {
const { presenceErrors, typeErrors } = errors;
const presenceErrorSummary = presenceErrors.length > 0
? `properties ('${presenceErrors.join(`, `)}') are missing`
: undefined;
const typeErrorSummary = typeErrors.length > 0
? typeErrors
.map(errors => {
const { expectedType, propertyKey, propertyType } = errors;
return (`'${propertyKey}' type '${propertyType}' is not` +
` assignable to ${expectedType}`);
})
.join(', ')
: undefined;
const finalSumarry = presenceErrorSummary
? presenceErrorSummary
: typeErrorSummary !== null && typeErrorSummary !== void 0 ? typeErrorSummary : '';
const errorSummary = presenceErrorSummary && typeErrorSummary
? `${presenceErrorSummary}. ${typeErrorSummary}`
: finalSumarry;
return { presenceErrors, typeErrors, summary: errorSummary };
}
validate(obj) {
const errors = (0, validate_object_1.validateObject)(this.klass, obj);
const { presenceErrors, typeErrors } = errors;
const valid = presenceErrors.length === 0 && typeErrors.length === 0;
if (!valid) {
return this.buildValidationErrorResult(errors);
}
return undefined;
}
build(jsonObj) {
return (0, build_object_1.buildObject)(this.klass, jsonObj);
}
extract(obj) {
return (0, extract_object_1.extractObject)(obj, this.klass);
}
}
exports.ObjectHandler = ObjectHandler;