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.

79 lines (78 loc) 2.1 kB
export interface ScanResult { type: 'error' | 'warning' | 'info'; category: 'security' | 'links' | 'performance' | 'accessibility' | 'seo'; message: string; file?: string; line?: number; range?: { startLine: number; startColumn: number; endLine: number; endColumn: number; }; severity: 'high' | 'medium' | 'low'; ruleId: string; confidence: number; match?: string; fingerprint?: string; fix?: string; fixEdits?: FixEdit[]; helpUri?: string; suppressed?: boolean; suppressionReason?: string; } export interface ScanOptions { directory: string; port?: number; skipBuild?: boolean; include?: string[]; exclude?: string[]; verbose?: boolean; minConfidence?: number; enabledRules?: string[]; disabledRules?: string[]; failOn?: 'none' | 'warning' | 'error'; baselinePath?: string; updateBaseline?: boolean; useBaseline?: boolean; changedFiles?: string[]; gitChangedSince?: string; profile?: 'auto' | 'react' | 'next' | 'python' | 'vue' | 'rails'; gitHistoryDepth?: number; crawlInternal?: boolean; crawlStartUrl?: string; crawlDepth?: number; crawlTimeoutMs?: number; fast?: boolean; skipPatterns?: string[]; maxFileSize?: number; focusCritical?: boolean; focusSecurity?: boolean; focusNew?: boolean; detailed?: boolean; quickTopN?: number; json?: boolean; color?: 'auto' | 'always' | 'never'; groupBy?: 'category' | 'file' | 'rule' | 'severity'; minSeverity?: 'low' | 'medium' | 'high'; maxIssues?: number; showContext?: boolean; explain?: boolean; showConfidence?: boolean; showSuppressed?: boolean; ignoreSuppressed?: boolean; clearCache?: boolean; noCache?: boolean; } export interface FixEdit { file: string; startLine: number; startColumn: number; endLine: number; endColumn: number; replacement: string; } export interface Scanner { name: string; scan(options: ScanOptions): Promise<ScanResult[]>; }