1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! Cross-file semantic analysis for Vue projects.
//!
//! This module provides cross-file analysis capabilities that track relationships
//! between Vue components across multiple files. These analyses are **opt-in** due
//! to their performance overhead.
//!
//! ## Features
//!
//! - **Dependency Graph**: Track import/export relationships between files
//! - **Module Registry**: Cache analyzed file results for incremental updates
//! - **Cross-File Analyzers**:
//! - Fallthrough Attributes: Detect unused `$attrs` and `inheritAttrs` issues
//! - Component Emits: Track emit call flows across component boundaries
//! - Event Bubbling: Analyze event propagation through component trees
//! - Provide/Inject: Match provide() calls with inject() consumers
//! - Unique Element IDs: Detect duplicate ID attributes across components
//! - Server/Client Boundaries: Identify SSR hydration boundary issues
//! - Error/Suspense Boundaries: Track error and async handling scopes
//!
//! ## Usage
//!
//! ```ignore
//! use vize_croquis::cross_file::{CrossFileAnalyzer, CrossFileOptions};
//!
//! // Create analyzer with opt-in features
//! let options = CrossFileOptions::default()
//! .with_provide_inject(true)
//! .with_fallthrough_attrs(true);
//!
//! let mut analyzer = CrossFileAnalyzer::new(options);
//!
//! // Add files to analyze
//! analyzer.add_file("src/components/Parent.vue", parent_source);
//! analyzer.add_file("src/components/Child.vue", child_source);
//!
//! // Run cross-file analysis
//! let result = analyzer.analyze();
//! ```
//!
//! ## Performance Considerations
//!
//! Cross-file analysis has higher overhead than single-file analysis:
//! - Maintains a module registry with file caching
//! - Builds and traverses dependency graphs
//! - May require multiple passes over component trees
//!
//! Enable only the analyzers you need to minimize overhead.
// Analyzer implementations
// Re-exports
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
// Re-export analyzer types
pub use ;