tslint-ban-snippets
Version:
A custom tslint rule to ban configurable lists of code snippets.
43 lines • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConfigFactory = void 0;
var ruleIds_1 = require("../ruleIds");
var SNIPPETS_PROP = "snippets";
var REGEX_SNIPPETS_PROP = "regexSnippets";
var ConfigFactory;
(function (ConfigFactory) {
function createForBanSnippetsRule(options) {
var config = createFromArguments(options, ruleIds_1.BAN_SNIPPETS_RULE_ID);
validate(config, "banned", ruleIds_1.BAN_SNIPPETS_RULE_ID);
config.banned.forEach(function (b) { return validateSnippetsList(b, ruleIds_1.BAN_SNIPPETS_RULE_ID); });
return config;
}
ConfigFactory.createForBanSnippetsRule = createForBanSnippetsRule;
function validate(config, prop, ruleId) {
if (!hasProp(config, prop)) {
throw new Error("invalid config for rule ".concat(ruleId, " - ").concat(prop, " is missing"));
}
}
function hasProp(config, prop) {
return config[prop] !== undefined;
}
function validateSnippetsList(config, ruleId) {
// either snippets OR regexSnippets is required
var hasSnippets = hasProp(config, SNIPPETS_PROP);
var hasRegexSnippets = hasProp(config, REGEX_SNIPPETS_PROP);
var isValid = hasSnippets || hasRegexSnippets;
var hasBoth = hasSnippets && hasRegexSnippets;
if (!isValid || hasBoth) {
throw new Error("invalid config for rule ".concat(ruleId, " - either ").concat(SNIPPETS_PROP, " or ").concat(REGEX_SNIPPETS_PROP, " must be set"));
}
}
function createFromArguments(options, ruleId) {
var args = options.ruleArguments;
if (args.length !== 1) {
throw new Error("tslint rule is misconfigured (".concat(ruleId, ") - options.ruleArguments length is ").concat(args.length));
}
var config = args[0];
return config;
}
})(ConfigFactory = exports.ConfigFactory || (exports.ConfigFactory = {}));
//# sourceMappingURL=ConfigFactory.js.map