UNPKG

auto-cr-cmd

Version:

Fast automated code review CLI powered by SWC-based static analysis

75 lines (74 loc) 3.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadCustomRules = loadCustomRules; var fs_1 = __importDefault(require("fs")); var path_1 = __importDefault(require("path")); var consola_1 = require("consola"); var file_1 = require("../utils/file"); var i18n_1 = require("../i18n"); var auto_cr_rules_1 = require("auto-cr-rules"); var SUPPORTED_EXTENSIONS = ['.js', '.cjs', '.mjs']; function loadCustomRules(ruleDir) { var t = (0, i18n_1.getTranslator)(); if (!ruleDir) { return []; } var absolutePath = path_1.default.isAbsolute(ruleDir) ? ruleDir : path_1.default.resolve(process.cwd(), ruleDir); if (!fs_1.default.existsSync(absolutePath)) { consola_1.consola.warn(t.customRuleDirMissing({ path: absolutePath })); return []; } var ruleFiles = (0, file_1.getAllFiles)(absolutePath, [], SUPPORTED_EXTENSIONS); var loaded = []; for (var _i = 0, ruleFiles_1 = ruleFiles; _i < ruleFiles_1.length; _i++) { var file = ruleFiles_1[_i]; try { // eslint-disable-next-line @typescript-eslint/no-require-imports var moduleExports = require(file); var rules = extractRules(moduleExports, file); if (!rules.length) { consola_1.consola.warn(t.customRuleNoExport({ file: file })); continue; } loaded.push.apply(loaded, rules); } catch (error) { consola_1.consola.warn(t.customRuleLoadFailed({ file: file }), error instanceof Error ? error.message : error); } } return loaded; } function extractRules(moduleExports, origin) { var collected = []; collected.push.apply(collected, normalizeCandidate(moduleExports, origin)); if (moduleExports && typeof moduleExports === 'object') { var withDefault = moduleExports; if (withDefault.default !== undefined) { collected.push.apply(collected, normalizeCandidate(withDefault.default, "".concat(origin, ":default"))); } if (withDefault.rules !== undefined) { collected.push.apply(collected, normalizeCandidate(withDefault.rules, "".concat(origin, ":rules"))); } if (withDefault.rule !== undefined) { collected.push.apply(collected, normalizeCandidate(withDefault.rule, "".concat(origin, ":rule"))); } } return collected; } function normalizeCandidate(candidate, origin) { if (!candidate) { return []; } if (Array.isArray(candidate)) { return candidate .map(function (item, index) { return (0, auto_cr_rules_1.toRule)(item, "".concat(origin, "#").concat(index)); }) .filter(function (rule) { return rule !== null; }); } var rule = (0, auto_cr_rules_1.toRule)(candidate, origin); return rule ? [rule] : []; }