"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const jsonschema_1 = __importDefault(require("jsonschema")); const json_schema_defaults_1 = __importDefault(require("json-schema-defaults")); const configSchema_1 = __importDefault(require("../constants/configSchema")); const error_1 = __importDefault(require("../utils/error")); const mergeDefaults_1 = __importDefault(require("../utils/mergeDefaults")); /** Validate a book.json content And return a mix with the default value @param {Object} bookJson @return {Object} */ function validateConfig(bookJson) { const v = new jsonschema_1.default.Validator(); const result = v.validate(bookJson, configSchema_1.default, { propertyName: "config" }); // Throw error if (result.errors.length > 0) { throw new error_1.default.ConfigurationError(new Error(result.errors[0].stack)); } // Insert default values const defaults = (0, json_schema_defaults_1.default)(configSchema_1.default); return (0, mergeDefaults_1.default)(bookJson, defaults); } exports.default = validateConfig;