Add DAST scanning and code knowledge graph features across the stack: - compliance-dast and compliance-graph workspace crates - Agent API handlers and routes for DAST targets/scans and graph builds - Core models and traits for DAST and graph domains - Dashboard pages for DAST targets/findings/overview and graph explorer/impact - Toast notification system with auto-dismiss for async action feedback - Button click animations and disabled states for better UX Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
31 lines
773 B
Rust
31 lines
773 B
Rust
use std::path::Path;
|
|
|
|
use crate::error::CoreError;
|
|
use crate::models::graph::{CodeEdge, CodeNode};
|
|
|
|
/// Output from parsing a single file
|
|
#[derive(Debug, Default)]
|
|
pub struct ParseOutput {
|
|
pub nodes: Vec<CodeNode>,
|
|
pub edges: Vec<CodeEdge>,
|
|
}
|
|
|
|
/// Trait for language-specific code parsers
|
|
#[allow(async_fn_in_trait)]
|
|
pub trait LanguageParser: Send + Sync {
|
|
/// Language name (e.g., "rust", "python", "javascript")
|
|
fn language(&self) -> &str;
|
|
|
|
/// File extensions this parser handles
|
|
fn extensions(&self) -> &[&str];
|
|
|
|
/// Parse a single file and extract nodes + edges
|
|
fn parse_file(
|
|
&self,
|
|
file_path: &Path,
|
|
source: &str,
|
|
repo_id: &str,
|
|
graph_build_id: &str,
|
|
) -> Result<ParseOutput, CoreError>;
|
|
}
|