ubon
Version:
Security scanner for AI-generated apps (Cursor, Lovable, Windsurf, v0). Catches hardcoded secrets, prompt injection, hallucinated imports, Server Actions / Edge runtime mistakes, and the vibe-coded vulnerabilities traditional linters miss.
105 lines • 4.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.REMOVED_PROFILES = exports.PROFILES = void 0;
exports.resolveScanners = resolveScanners;
const security_scanner_1 = require("../scanners/security-scanner");
const ast_security_scanner_1 = require("../scanners/ast-security-scanner");
const accessibility_scanner_1 = require("../scanners/accessibility-scanner");
const development_scanner_1 = require("../scanners/development-scanner");
const vibe_scanner_1 = require("../scanners/vibe-scanner");
const ai_scanner_1 = require("../scanners/ai-scanner");
const framework_scanner_1 = require("../scanners/framework-scanner");
const env_scanner_1 = require("../scanners/env-scanner");
const iac_scanner_1 = require("../scanners/iac-scanner");
const osv_scanner_1 = require("../scanners/osv-scanner");
const react_security_scanner_1 = require("../scanners/react-security-scanner");
const react_patterns_scanner_1 = require("../scanners/react-patterns-scanner");
const lovable_supabase_scanner_1 = require("../scanners/lovable-supabase-scanner");
const vite_scanner_1 = require("../scanners/vite-scanner");
const agent_settings_scanner_1 = require("../scanners/agent-settings-scanner");
const baseJsScanners = () => [
new security_scanner_1.SecurityScanner(),
new ast_security_scanner_1.AstSecurityScanner(),
new accessibility_scanner_1.AccessibilityScanner(),
new development_scanner_1.DevelopmentScanner(),
new vibe_scanner_1.VibeScanner(),
new ai_scanner_1.AIScanner(),
new framework_scanner_1.FrameworkScanner(),
new react_patterns_scanner_1.ReactPatternsScanner(),
new agent_settings_scanner_1.AgentSettingsScanner(),
new env_scanner_1.EnvScanner(),
new iac_scanner_1.IacScanner()
];
exports.PROFILES = {
auto: ({ fast }) => {
const arr = baseJsScanners();
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
},
next: ({ fast }) => {
const arr = baseJsScanners();
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
},
react: ({ fast }) => {
const arr = [new react_security_scanner_1.ReactSecurityScanner(), ...baseJsScanners()];
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
},
sveltekit: ({ fast }) => {
const arr = baseJsScanners();
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
},
astro: ({ fast }) => {
const arr = baseJsScanners();
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
},
remix: ({ fast }) => {
const arr = baseJsScanners();
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
},
hono: ({ fast }) => {
const arr = baseJsScanners();
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
},
lovable: ({ fast }) => {
const arr = [
new lovable_supabase_scanner_1.LovableSupabaseScanner(),
new vite_scanner_1.ViteScanner(),
new react_security_scanner_1.ReactSecurityScanner(),
...baseJsScanners()
];
if (!fast)
arr.push(new osv_scanner_1.OSVScanner());
return arr;
}
};
/**
* Profiles that existed in v2.x and were removed in v3.0.0. Kept here so
* `--profile python|rails|vue` produces a clear error pointing at the
* migration guide instead of silently falling back to `auto`.
*/
exports.REMOVED_PROFILES = {
python: 'Use Bandit (or your preferred Python security scanner) for Python projects.',
rails: 'Use Brakeman for Ruby on Rails projects.',
vue: 'Use eslint-plugin-vue (and audit your Supabase/Pinia state) for Vue projects.'
};
function resolveScanners(profile, fast) {
const name = profile || 'auto';
const builder = exports.PROFILES[name];
if (!builder)
return exports.PROFILES.auto({ fast: !!fast });
return builder({ fast: !!fast });
}
//# sourceMappingURL=profiles.js.map