ut-tools
Version:
Build and Release management automation package.
32 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertValidRule = exports.assertValidRuleset = void 0;
const tslib_1 = require("tslib");
const json_1 = require("@stoplight/json");
const ajv_1 = require("./ajv");
const errors_1 = require("./errors");
const es_aggregate_error_1 = (0, tslib_1.__importDefault)(require("es-aggregate-error"));
function assertValidRuleset(ruleset, format = 'js') {
var _a;
if (!(0, json_1.isPlainObject)(ruleset)) {
throw new errors_1.RulesetValidationError('invalid-ruleset-definition', 'Provided ruleset is not an object', []);
}
if (!('rules' in ruleset) && !('extends' in ruleset) && !('overrides' in ruleset)) {
throw new errors_1.RulesetValidationError('invalid-ruleset-definition', 'Ruleset must have rules or extends or overrides defined', []);
}
const validate = (0, ajv_1.createValidator)(format);
if (!validate(ruleset)) {
throw new es_aggregate_error_1.default((0, errors_1.convertAjvErrors)((_a = validate.errors) !== null && _a !== void 0 ? _a : []));
}
}
exports.assertValidRuleset = assertValidRuleset;
function isRuleDefinition(rule) {
return typeof rule === 'object' && rule !== null && !Array.isArray(rule) && ('given' in rule || 'then' in rule);
}
function assertValidRule(rule, name) {
if (!isRuleDefinition(rule)) {
throw new errors_1.RulesetValidationError('invalid-rule-definition', 'Rule definition expected', ['rules', name]);
}
}
exports.assertValidRule = assertValidRule;
//# sourceMappingURL=assertions.js.map