UNPKG

auto-cr-cmd

Version:

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

116 lines (115 loc) 4.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadIgnoreConfig = loadIgnoreConfig; exports.createIgnoreMatcher = createIgnoreMatcher; var fs_1 = __importDefault(require("fs")); var path_1 = __importDefault(require("path")); var picomatch_1 = __importDefault(require("picomatch")); var i18n_1 = require("../i18n"); var IGNORE_CANDIDATES = ['.autocrignore.json', '.autocrignore.js']; function loadIgnoreConfig(configPath) { var warnings = []; var t = (0, i18n_1.getTranslator)(); var resolvedPath = resolveConfigPath(configPath); if (!resolvedPath) { return { patterns: [], warnings: warnings, baseDir: process.cwd() }; } if (!fs_1.default.existsSync(resolvedPath)) { warnings.push(t.autocrignorePathMissing({ path: resolvedPath })); return { patterns: [], warnings: warnings, baseDir: process.cwd() }; } var baseDir = path_1.default.dirname(resolvedPath); try { var raw = readIgnoreFile(resolvedPath); var patterns = normalizeIgnorePayload(raw); if (!patterns.length) { warnings.push(t.autocrignoreInvalidFormat({ path: resolvedPath })); } return { path: resolvedPath, patterns: patterns, warnings: warnings, baseDir: baseDir }; } catch (error) { var detail = error instanceof Error ? error.message : String(error); warnings.push(t.autocrignoreLoadFailed({ path: resolvedPath, error: detail })); return { patterns: [], warnings: warnings, baseDir: baseDir }; } } function createIgnoreMatcher(patterns, baseDir) { if (baseDir === void 0) { baseDir = process.cwd(); } if (!patterns.length) { return function () { return false; }; } var cwd = baseDir; var matchers = patterns .map(function (pattern) { return (0, picomatch_1.default)(pattern, { dot: true, nocase: false, posix: true }); }) .filter(function (matcher) { return matcher !== null; }); return function (candidate) { var normalized = toPosix(candidate); var relative = toPosix(path_1.default.relative(cwd, candidate)); return matchers.some(function (matcher) { return matcher(normalized) || matcher(relative); }); }; } function resolveConfigPath(explicitPath) { if (explicitPath) { return path_1.default.isAbsolute(explicitPath) ? explicitPath : path_1.default.resolve(process.cwd(), explicitPath); } for (var _i = 0, IGNORE_CANDIDATES_1 = IGNORE_CANDIDATES; _i < IGNORE_CANDIDATES_1.length; _i++) { var candidate = IGNORE_CANDIDATES_1[_i]; var resolved = path_1.default.resolve(process.cwd(), candidate); if (fs_1.default.existsSync(resolved)) { return resolved; } } return null; } function readIgnoreFile(filePath) { if (filePath.endsWith('.json')) { var raw = fs_1.default.readFileSync(filePath, 'utf-8'); return JSON.parse(raw); } if (filePath.endsWith('.js')) { // eslint-disable-next-line @typescript-eslint/no-require-imports return require(filePath); } return []; } function normalizeIgnorePayload(payload) { var values = []; if (Array.isArray(payload)) { for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) { var entry = payload_1[_i]; var normalized = normalizeEntry(entry); if (normalized) values.push(normalized); } return values; } if (isRecord(payload) && payload.ignore) { return normalizeIgnorePayload(payload.ignore); } if (isRecord(payload) && payload.default) { return normalizeIgnorePayload(payload.default); } if (typeof payload === 'string') { return normalizeIgnorePayload(payload.split(/\r?\n/)); } return values; } function normalizeEntry(entry) { if (typeof entry !== 'string') { return null; } var trimmed = entry.trim(); if (!trimmed || trimmed.startsWith('#')) { return null; } return trimmed; } function isRecord(value) { return typeof value === 'object' && value !== null && !Array.isArray(value); } function toPosix(p) { return p.split(path_1.default.sep).join('/'); }