"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Ajv = require("ajv"); const format_verror_1 = require("./util/format-verror"); const ajv = new Ajv({ allErrors: true, format: "full", jsonPointers: true }); const validator = ajv.compile(require("../schema.json")); class BadJSONLicenseSpecError extends format_verror_1.PrettyVError { } exports.BadJSONLicenseSpecError = BadJSONLicenseSpecError; function specFromJSON(spec, options) { if (typeof spec === "string") { try { spec = JSON.parse(spec); } catch (e) { if (!(e instanceof Error)) e = new Error(e); throw new BadJSONLicenseSpecError(e, "JSON license specification is not well formed"); } } const dataPath = options && options.specSourceURL || ""; try { if (!validator(spec, dataPath)) { throw new BadJSONLicenseSpecError({ info: { errors: validator.errors } }, "JSON license specification is not valid:\n· %s", ajv.errorsText(validator.errors, { dataVar: "", separator: "\n· " })); } } finally { delete ajv.errors; delete validator.errors; } return spec; } exports.default = specFromJSON; //# sourceMappingURL=specFromJSON.js.map