UNPKG

gherkin-lint-ts

Version:

Gherkin features linter written in Typescript

67 lines 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runAllEnabledRules = exports.isWarn = exports.isRuleEnabled = exports.doesRuleExist = exports.getRule = exports.getAllRules = void 0; // Operations on rules const types_1 = require("../types"); const glob = require("glob"); const path = require("path"); // Needed to transpile TS files if in JS // eslint-disable-next-line import/no-unassigned-import require("ts-node/register/transpile-only"); function getAllRules(additionalRulesDirs) { let rules = {}; const rulesDirs = [ path.join(__dirname, "..", "rules"), ].concat(additionalRulesDirs || []); rulesDirs.forEach(rulesDir => { rulesDir = path.resolve(rulesDir); glob.sync(`${rulesDir}/*.{js,ts}`).forEach(file => { if (!file.includes(".d.ts")) { const rule = require(file); rules[rule.name] = rule; } }); }); return rules; } exports.getAllRules = getAllRules; function getRule(rule, additionalRulesDirs) { return getAllRules(additionalRulesDirs)[rule]; } exports.getRule = getRule; function doesRuleExist(rule, additionalRulesDirs) { return getRule(rule, additionalRulesDirs) !== undefined; } exports.doesRuleExist = doesRuleExist; function isRuleEnabled(ruleConfig) { if (Array.isArray(ruleConfig)) { return ["error", "warn"].includes(ruleConfig[0]); } return ["error", "warn"].includes(ruleConfig); } exports.isRuleEnabled = isRuleEnabled; function isWarn(ruleConfig) { if (Array.isArray(ruleConfig)) { return ruleConfig[0] === "warn"; } return ruleConfig === "warn"; } exports.isWarn = isWarn; function runAllEnabledRules(feature, file, configuration, additionalRulesDirs) { let errors = []; const rules = getAllRules(additionalRulesDirs); Object.keys(rules).forEach(ruleName => { let rule = rules[ruleName]; if (isRuleEnabled(configuration[rule.name])) { const ruleConfig = Array.isArray(configuration[rule.name]) ? configuration[rule.name][1] : {}; const ruleErrors = rule.run(feature, file, ruleConfig); if (ruleErrors) { ruleErrors.forEach(it => it.errorLevel = isWarn(configuration[rule.name]) ? types_1.ErrorLevel.Warn : types_1.ErrorLevel.Error); errors = errors.concat(ruleErrors); } } }); return errors; } exports.runAllEnabledRules = runAllEnabledRules; //# sourceMappingURL=rules.js.map