pub mod accessibility;
pub mod advanced_analytics;
pub mod advanced_charts;
pub mod advanced_memory;
pub mod advanced_chart_types;
pub mod canvas2d_renderer;
pub mod canvas_surface;
pub mod chart;
pub mod chart_config;
pub mod cross_browser;
pub mod graph_features;
pub mod interactivity;
pub mod performance_advanced;
pub mod performance_optimizations;
pub mod smooth_animations;
pub mod data_pipeline;
pub mod data_processing;
pub mod data_sources;
pub mod debugger;
pub mod dev_server;
pub mod dev_tools;
pub mod export_system;
pub mod gpu_accelerator;
pub mod headless_renderer;
pub mod helios_chart;
pub mod interactions;
pub mod line_chart_renderer;
pub mod ml_intelligence;
pub mod plugin_system;
pub mod production;
pub mod profiler;
pub mod renderer;
pub mod rendering;
pub mod security;
pub mod streaming;
pub mod styling;
pub mod wasm_optimizer;
pub mod webgpu_real;
pub mod webgpu_renderer;
pub use rendering as render;
pub mod gpu;
pub mod intelligence;
pub mod nl_processor;
pub mod utils;
pub use chart::{
BarWidth, ChartConfig, ChartSpec, ChartSpecBuilder, DataReference, Encoding, Interpolation,
MarkType,
};
pub use chart_config::{
ChartRenderResult, RenderResult as ChartConfigRenderResult, WebGpuRenderResult,
};
pub use data_pipeline::{DataPipeline, GpuBuffers, PipelineError, PipelineResult};
pub use helios_chart::{create_helios_chart, HeliosChart, HeliosChartProps};
pub use polars::prelude::DataFrame;
pub use renderer::{
Canvas2DRenderer, RenderStatus, Renderer as ChartRenderer, RendererBackend, WebGl2Renderer,
WebGpuRenderer,
};
pub use accessibility::{
AltTextGenerator, AccessibilityError, AccessibilityConfig, AlternativeFormats,
KeyboardManager, ScreenReaderManager, WCAGChecker, WCAGLevel, ComplianceReport,
PerformanceConfig as AccessibilityPerformanceConfig, PerformanceMonitor as AccessibilityPerformanceMonitor,
};
pub use advanced_analytics::{
AnalyticsError, MLModel, MLPipeline, StatisticalAnalyzer, TimeSeriesAnalysis,
CorrelationAnalysis, DataPoint, DataSeries, ModelInfo, ModelType,
};
pub use advanced_chart_types::*;
pub use interactivity::{
Viewport as InteractivityViewport, Tooltip, TooltipStyle as InteractivityTooltipStyle,
TooltipData as InteractivityTooltipData, BrushSelection, CrossFilter, FilterEvent,
DataPoint as InteractivityDataPoint, InteractiveChart,
};
pub use performance_optimizations::{
VirtualScroller, DataSampler, WebGLRenderer, WebGPURenderer, Buffer as PerformanceBuffer,
RenderBatch, MemoryPool, PerformanceMonitor as PerformanceOptimizationsMonitor,
PerformanceMetric as PerformanceOptimizationsMetric, PerformanceReport,
};
pub use graph_features::{
GraphNode, GraphEdge, CentralityMeasures, NetworkMetrics, VisualizationMetrics,
ForceDirectedLayout, GraphAlgorithms, GraphClusterer, ClusteringAlgorithm as GraphClusteringAlgorithm,
NetworkAnalyzer, GraphManipulator,
};
pub use data_sources::{
DataSourceManager, DataSourceFactory, DataSourceConfigBuilder, DataSource as DataSourceTrait,
Connection, Transaction, DataStream, PostgresAdapter, ClickHouseAdapter, ConnectionConfig,
Credentials, TableInfo, ColumnInfo, QueryResult, DataSourceStats,
};
pub use debugger::*;
pub use dev_tools::{
DevToolsError, ProfileData, CodeTemplate, LiveReloadConfig, HeliosDev, DevToolsConfig,
PerformanceProfiler as DevToolsPerformanceProfiler, ProfileScope, CodeGenerator,
CodeLinter, LintRule, LintResult,
};
pub use export_system::*;
pub use smooth_animations::{
EasingFunctions, TweenAnimation, EasingType, StateTransition, AnimationOrchestrator,
AnimationRenderer, AnimationBatch, Color as AnimationColor, Point2D as AnimationPoint2D,
Size as AnimationSize, PerformanceMetrics as AnimationPerformanceMetrics,
};
pub use ml_intelligence::{
TimeSeriesPoint, ForecastResult, ChartRecommendation, MLForecaster, ChartRecommendationEngine,
DataAnalysis as MLDataAnalysis, DataType as MLDataType, TrendType as MLTrendType,
DataAnalyzer as MLDataAnalyzer, MLPerformanceMonitor, MLPerformanceStats,
};
pub use performance_advanced::{
PerformanceOptimizer, PerformanceOptimizerStats, PerformanceBenchmark, BenchmarkSummary,
RuntimePoolStats, MemoryPoolStats,
};
pub use plugin_system::{
ChartPlugin, DataSourcePlugin, ExportPlugin, MLPlugin, PluginError, PluginManager,
PluginMetadata, RenderResult as PluginRenderResult, ThemePlugin, TransformPlugin,
};
pub use styling::*;
pub use advanced_memory::*;
pub use cross_browser::*;
pub use dev_server::*;
pub use gpu::*;
pub use gpu_accelerator::{
GpuMemoryUsage, BufferPoolStats, PerformanceMetrics as GpuPerformanceMetrics,
GpuBuffer, OptimizedGpuBuffer, OptimizedGpuRenderer, Point2D as GpuPoint2D,
GpuAccelerationEngine,
};
pub use intelligence::{
ClusterAnalyzer, ClusteringAlgorithm as IntelligenceClusteringAlgorithm, ClusteringResults,
ClusterStats, ClusteringConfig as IntelligenceClusteringConfig, AnomalyDetector, AnomalyMethod,
DataStatistics, AnomalyPoint, AnomalyReason, AnomalyResults, TimeSeriesForecaster,
TrendAnalysis as IntelligenceTrendAnalysis, TrendType as IntelligenceTrendType,
TrendDirection as IntelligenceTrendDirection, SeasonalityAnalysis, TimeSeriesDecomposition,
MLPipeline as IntelligenceMLPipeline, ModelType as IntelligenceModelType, MLConfig, MLResults,
MLError,
};
pub use interactions::*;
pub use nl_processor::*;
pub use profiler::*;
pub use render::*;
pub use utils::*;
#[derive(Debug, thiserror::Error)]
pub enum HeliosError {
#[error("Data processing error: {0}")]
DataProcessing(#[from] data_processing::DataError),
#[error("Rendering error: {0}")]
Rendering(#[from] rendering::RenderError),
#[error("Validation error: {0}")]
Validation(#[from] chart::ValidationError),
#[error("ML error: {0}")]
MachineLearning(#[from] intelligence::MLError),
#[error("Chart rendering error: {0}")]
ChartRendering(#[from] chart_config::ChartRenderError),
#[error("Configuration error: {0}")]
Configuration(String),
#[error("Performance budget exceeded: {details}")]
PerformanceBudget { details: String },
}
impl HeliosError {
pub fn is_recoverable(&self) -> bool {
matches!(
self,
HeliosError::Configuration(_) | HeliosError::PerformanceBudget { .. } )
}
pub fn user_message(&self) -> String {
match self {
HeliosError::DataProcessing(e) => format!("Data processing failed: {}", e),
HeliosError::Rendering(e) => format!("Rendering failed: {}", e),
HeliosError::Validation(e) => format!("Invalid configuration: {}", e),
HeliosError::MachineLearning(e) => format!("ML processing failed: {}", e),
HeliosError::ChartRendering(e) => format!("Chart rendering failed: {}", e),
HeliosError::Configuration(msg) => format!("Configuration error: {}", msg),
HeliosError::PerformanceBudget { details } => {
format!("Performance limit exceeded: {}", details)
} }
}
pub fn suggested_actions(&self) -> Vec<String> {
match self {
HeliosError::DataProcessing(_) => vec![
"Check data format and structure".to_string(),
"Verify data types match chart requirements".to_string(),
"Consider reducing data size".to_string(),
],
HeliosError::Rendering(_) => vec![
"Check WebGPU/WebGL support".to_string(),
"Reduce chart complexity".to_string(),
"Enable performance mode".to_string(),
],
HeliosError::Validation(_) => vec![
"Review chart specification".to_string(),
"Check required fields are provided".to_string(),
"Validate data types".to_string(),
],
HeliosError::MachineLearning(_) => vec![
"Check ML model availability".to_string(),
"Verify input data format".to_string(),
"Consider reducing data size".to_string(),
],
HeliosError::ChartRendering(_) => vec![
"Check rendering backend support".to_string(),
"Verify chart configuration".to_string(),
"Try different renderer backend".to_string(),
],
HeliosError::Configuration(_) => vec![
"Review configuration parameters".to_string(),
"Check for typos in field names".to_string(),
"Verify parameter ranges".to_string(),
],
HeliosError::PerformanceBudget { .. } => vec![
"Reduce data size".to_string(),
"Enable performance mode".to_string(),
"Use streaming for large datasets".to_string(),
],
}
}
}
pub type Result<T> = std::result::Result<T, HeliosError>;
pub type LazyFrame = polars::prelude::LazyFrame;
pub type Color = [f32; 4]; pub type Point2D = [f32; 2];
pub type Point3D = [f32; 3];
pub type Rect = [f32; 4]; pub type Transform2D = [[f32; 3]; 2];
pub async fn init() -> Result<()> {
#[cfg(target_arch = "wasm32")]
{
console_error_panic_hook::set_once();
}
let _renderer = ChartRenderer::auto_detect()?;
#[cfg(feature = "ml")]
let _ml_pipeline = MLPipeline::new().await?;
Ok(())
}
pub fn version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
pub fn build_info() -> BuildInfo {
BuildInfo {
version: version().to_string(),
features: get_enabled_features(),
target: std::env::consts::ARCH.to_string(),
os: std::env::consts::OS.to_string(),
}
}
#[derive(Debug, Clone)]
pub struct BuildInfo {
pub version: String,
pub features: Vec<String>,
pub target: String,
pub os: String,
}
fn get_enabled_features() -> Vec<String> {
let features = vec![
#[cfg(feature = "webgpu")]
"webgpu".to_string(),
#[cfg(feature = "webgl2")]
"webgl2".to_string(),
#[cfg(feature = "canvas2d")]
"canvas2d".to_string(),
#[cfg(feature = "simd")]
"simd".to_string(),
#[cfg(feature = "debug")]
"debug".to_string(),
#[cfg(feature = "ml")]
"ml".to_string(),
];
features
}
pub use wasm_optimizer::*;