32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
"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;
|