UNPKG

fhirbuilder

Version:
38 lines (37 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModelValidator = void 0; const BaseValidator_1 = require("./BaseValidator"); const remove_undefined_attributes_util_1 = require("../../utils/remove-undefined-attributes.util"); const operation_outcome_exception_1 = require("../../../commons/exceptions/operation-outcome.exception"); /** * @description Validates a model based on the model definition * @param options - the options to validate the model * @param options.dataToValidate - the model to validate * @param options.path - the path to the model * @param options.modelDefinition - the model definition * @param options.errors - the errors array * @param options.additionalValidation - additional validation functions * @returns {void} */ const ModelValidator = (options) => { const { dataToValidate, path, modelDefinition, additionalValidation } = options; if (typeof dataToValidate !== 'object') { options.errors.push(new operation_outcome_exception_1.OperationOutcomeIssueException({ severity: 'error', code: 'invalid', diagnostics: `Expected data to be of type object, received ${typeof dataToValidate}`, details: { text: `Path: ${path}`, }, })); } const cleanData = (0, remove_undefined_attributes_util_1.RemoveUndefinedAttributes)(dataToValidate); if (!options.errors) options.errors = []; (0, BaseValidator_1.BaseValidator)(cleanData, modelDefinition, path, options.errors); if (additionalValidation?.length) { additionalValidation.forEach((validation) => validation(cleanData, path, options.errors)); } }; exports.ModelValidator = ModelValidator;