UNPKG

objectypes

Version:

A type-safe library to transform and validate objects

51 lines (50 loc) 2.05 kB
"use strict"; 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;