Expand description
ยงDDEX Builder - Deterministic DDEX XML Generation
A high-performance, memory-safe DDEX XML builder that generates deterministic, byte-perfect XML using DB-C14N/1.0 canonicalization. Built in Rust with comprehensive security features and bindings for JavaScript, Python, and WebAssembly.
ยงKey Features
- ๐ Security First: XXE protection, input validation, rate limiting, and comprehensive security measures
- โก High Performance: Sub-millisecond generation for typical releases, memory-optimized streaming
- ๐ฏ Deterministic Output: Guaranteed byte-perfect reproducibility using DB-C14N/1.0
- ๐ Round-trip Fidelity: Perfect compatibility with ddex-parser for Parse โ Build โ Parse workflows
- ๐ ๏ธ Partner Presets: Pre-configured settings for Spotify, YouTube, Apple Music, and other platforms
- ๐ Multi-platform: Native Rust, Node.js, Python, and WebAssembly bindings
- ๐ Version Support: Full support for ERN 3.8.2, 4.2, 4.3 with automatic conversion
ยงQuick Start
use ddex_builder::{Builder, DdexVersion};
use ddex_builder::builder::{BuildRequest, OutputFormat};
// Create a builder with Spotify preset
let mut builder = Builder::new();
builder.preset("spotify_audio_43")?;
// Build DDEX XML
let request = BuildRequest {
source_xml: r#"<SoundRecording>...</SoundRecording>"#.to_string(),
output_format: OutputFormat::Xml,
preset: Some("spotify_audio_43".to_string()),
validate_schema: true,
};
let result = builder.build_internal(&request)?;
println!("Generated DDEX XML: {}", result.xml);
ยงSecurity Features
DDEX Builder includes comprehensive security measures:
use ddex_builder::{InputValidator, SecurityConfig, ApiSecurityManager};
// Configure security settings
let security_config = SecurityConfig {
max_xml_size: 10_000_000, // 10MB limit
max_json_depth: 32, // Prevent deep nesting attacks
rate_limiting_enabled: true,
max_requests_per_minute: 100,
validate_urls: true,
block_private_ips: true,
..Default::default()
};
// Validate inputs
let validator = InputValidator::new(security_config.clone());
validator.validate_xml_content(&xml_input)?;
// API security management
let mut api_security = ApiSecurityManager::new(security_config);
api_security.validate_request("build", "client_id", xml_input.len())?;
ยงArchitecture Overview
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DDEX Builder โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Input Layer โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ XML Parser โ โ JSON Parser โ โ Presets โ โ
โ โ (Security) โ โ (Validation) โ โ (Partners) โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Processing Layer โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ AST Builder โ โ Reference โ โ Version โ โ
โ โ (Elements) โ โ Linker โ โ Converter โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Output Layer โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ XML โ โ DB-C14N โ โ Output โ โ
โ โ Generator โ โ Canonicalize โ โ Sanitizer โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยงPerformance Characteristics
- Parse 10KB: <5ms
- Parse 100KB: <10ms
- Parse 1MB: <50ms
- Build typical release: <15ms
- Memory usage: <50MB for large files with streaming
- WASM bundle size: <500KB
ยงVersion Support
DDEX Version | Support Level | Notes |
---|---|---|
ERN 3.8.2 | โ Full | Legacy support |
ERN 4.2 | โ Full | Enhanced features |
ERN 4.3 | โ Full | Latest standard |
ยงPartner Presets
Pre-configured settings for major platforms:
spotify_audio_43
- Spotify audio releases (ERN 4.3)youtube_video_43
- YouTube video content (ERN 4.3)apple_music_43
- Apple Music releases (ERN 4.3)universal_basic
- Universal Music basic presetsony_enhanced
- Sony Music enhanced features
See the User Guide for detailed preset documentation.
Re-exportsยง
pub use builder::DDEXBuilder;
pub use builder::BuildOptions;
pub use builder::BuildRequest;
pub use builder::BuildResult;
pub use canonical::DB_C14N;
pub use determinism::DeterminismConfig;
pub use error::BuildError;
pub use error::BuildWarning;
pub use guarantees::DeterminismGuarantee;
pub use guarantees::DeterminismGuaranteeValidator;
pub use guarantees::GuaranteeReport;
pub use presets::PartnerPreset;
pub use linker::ReferenceLinker;
pub use linker::LinkerConfig;
pub use linker::EntityType;
pub use linker::LinkerError;
pub use id_generator::StableHashGenerator;
pub use id_generator::StableHashConfig;
pub use id_generator::HashAlgorithm;
pub use preflight::PreflightValidator;
pub use preflight::ValidationConfig;
pub use preflight::ValidationResult;
pub use preflight::PreflightLevel;
pub use diff::DiffEngine;
pub use diff::DiffConfig;
pub use diff::VersionCompatibility;
pub use diff::types::ChangeSet;
pub use diff::types::SemanticChange;
pub use diff::types::DiffPath;
pub use diff::types::ChangeType;
pub use diff::types::ImpactLevel;
pub use diff::formatter::DiffFormatter;
pub use messages::UpdateReleaseMessage;
pub use messages::UpdateGenerator;
pub use messages::UpdateAction;
pub use messages::UpdateConfig;
pub use messages::ValidationStatus;
pub use schema::SchemaGenerator;
pub use schema::JsonSchema;
pub use schema::SchemaConfig;
pub use schema::SchemaDraft;
pub use schema::SchemaCommand;
pub use versions::VersionManager;
pub use versions::VersionConverter;
pub use versions::ConverterResult as ConversionResult;
pub use versions::ConversionOptions;
pub use presets::DdexVersion;
pub use security::InputValidator;
pub use security::SecurityConfig;
pub use security::RateLimiter;
pub use security::SecureTempFile;
pub use security::OutputSanitizer;
pub use api_security::ApiSecurityManager;
pub use api_security::ApiSecurityConfig;
pub use api_security::FfiDataType;
pub use api_security::BatchStats;
pub use fidelity::FidelityConfig;
pub use fidelity::PreservationLevel;
pub use fidelity::FidelityStatistics;
pub use verification::BuildVerifier;
pub use verification::VerificationStatistics;
pub use round_trip::RoundTripTester;
pub use round_trip::FidelityAnalysis;
Modulesยง
- api_
security - API Security Features for DDEX Builder
- ast
- Abstract Syntax Tree for DDEX XML generation
- builder
- Main builder implementation
- caching
- Caching optimizations for DDEX Builder
- canonical
- DB-C14N/1.0 - DDEX Builder Canonicalization
- determinism
- Determinism Configuration and Enforcement
- diff
- Semantic diff engine for DDEX messages
- error
- Error types for DDEX Builder
- fidelity
- Perfect Fidelity Engine for DDEX Builder
- generator
- AST Generation Engine
- guarantees
- Determinism guarantees and validation for DDEX Builder
- id_
generator - Stable hash-based ID generation for deterministic DDEX messages
- linker
- Reference linker for automatic ID generation and relationship management
- memory_
optimization - Memory optimization techniques for DDEX Builder
- messages
- DDEX Message Types
- namespace_
minimizer - Namespace Minimizer for DDEX Builder
- optimized_
strings - Optimized string handling for DDEX Builder performance
- parallel_
processing - Parallel processing optimizations for DDEX Builder
- preflight
- Comprehensive preflight validation for DDEX messages
- presets
- DDEX Configuration Presets
- round_
trip - Round-trip testing for Perfect Fidelity Engine
- schema
- JSON Schema Generation for DDEX Models
- security
- Security module for DDEX Builder
- streaming
- Streaming DDEX XML builder for large catalogs
- verification
- Build Verification for Perfect Fidelity Engine
- versions
- Multi-version DDEX support and conversion
Structsยง
- Build
Statistics - Building statistics collected during the build process
- Builder
- The main DDEX Builder for creating deterministic XML output.
- Custom
Canonicalization Rules - Custom canonicalization rules for specialized use cases
- DbC14N
Config - DB-C14N/1.0 configuration
- Fidelity
Build Result - Perfect Fidelity Engine build result
- Fidelity
Options - Perfect Fidelity Engine configuration options
- Round
Trip Result - Round-trip test result
- Verification
Config - Build verification configuration
- Verification
Issue - Verification issue (error or warning)
- Verification
Result - Build verification result
Enumsยง
- Canonicalization
Algorithm - Canonicalization algorithms supported by the Perfect Fidelity Engine
- Namespace
Handling - Namespace handling strategies
- Verification
Severity - Verification issue severity
Constantsยง
- DB_
C14N_ VERSION - Version of the DB-C14N specification
Functionsยง
- fidelity_
engine_ info - Get Perfect Fidelity Engine information
- version_
info - Version information for the builder