UNPKG

ubon

Version:

Security scanner for AI-generated React/Next.js and Python apps. Catches hardcoded secrets, accessibility issues, and vulnerabilities that traditional linters miss.

46 lines (45 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadConfig = loadConfig; exports.mergeOptions = mergeOptions; const fs_1 = require("fs"); const path_1 = require("path"); function loadConfig(directory) { try { const jsonPath = (0, path_1.join)(directory, 'ubon.config.json'); if ((0, fs_1.existsSync)(jsonPath)) { const data = JSON.parse((0, fs_1.readFileSync)(jsonPath, 'utf-8')); return data; } const jsPath = (0, path_1.join)(directory, 'ubon.config.js'); if ((0, fs_1.existsSync)(jsPath)) { // eslint-disable-next-line @typescript-eslint/no-var-requires const data = require(jsPath); return (data && data.default) ? data.default : data; } const pkgPath = (0, path_1.join)(directory, 'package.json'); if ((0, fs_1.existsSync)(pkgPath)) { const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, 'utf-8')); if (pkg.ubon && typeof pkg.ubon === 'object') { return pkg.ubon; } } } catch { // ignore config errors, fall back to defaults/CLI } return {}; } function mergeOptions(config, cli) { const merged = { ...config, ...cli }; // For arrays, prefer CLI if provided, else config merged.enabledRules = cli.enabledRules !== undefined ? cli.enabledRules : config.enabledRules; merged.disabledRules = cli.disabledRules !== undefined ? cli.disabledRules : config.disabledRules; merged.changedFiles = cli.changedFiles !== undefined ? cli.changedFiles : config.changedFiles; // For numbers and booleans, CLI undefined means use config merged.minConfidence = cli.minConfidence !== undefined ? cli.minConfidence : config.minConfidence; merged.useBaseline = cli.useBaseline !== undefined ? cli.useBaseline : config.useBaseline; merged.baselinePath = cli.baselinePath !== undefined ? cli.baselinePath : config.baselinePath; merged.failOn = cli.failOn !== undefined ? cli.failOn : config.failOn; return merged; }