-
Notifications
You must be signed in to change notification settings - Fork 0
crates csv anonymizer core
Active contributors: Douwe de Vries
csv-anonymizer-core is the reusable Rust engine for local analysis, preview, transformation, direct input workflows, Smart replacement orchestration, and privacy reporting. It is used by csv-anonymizer-app and csv-anonymizer-tauri.
| Path | Role |
|---|---|
crates/csv-anonymizer-core/src/lib.rs |
Public module and type exports for downstream crates. |
crates/csv-anonymizer-core/src/service.rs |
AnonymizerService facade for CSV analysis, preflight, preview, anonymization, and reports. |
crates/csv-anonymizer-core/src/types.rs |
Core DTOs, enums, params, report types, and process control types. |
crates/csv-anonymizer-core/src/detection.rs |
Column detection entry points, PII risk classification, empty-value handling, and privacy span exports. |
crates/csv-anonymizer-core/src/csv_io.rs |
CSV sampling, row counting, streaming processing, normalization, atomic output writing, and spreadsheet formula neutralization. |
crates/csv-anonymizer-core/src/direct_input/mod.rs |
Pasted data and quick data workflows for CSV, JSON, XML, YAML, plain text, logs, and generated values. |
crates/csv-anonymizer-core/src/strategies/mod.rs |
Strategy dispatch for redaction, masking, tokenization, pseudonymization, pass-through, and Local AI fallback. |
crates/csv-anonymizer-core/src/smart.rs |
Smart replacement provider trait, replacement map, validation, batching, and missing-value checks. |
-
AnonymizerServiceis the service facade used by Tauri and CLI callers. -
ColumnMetadatacombines detector output, privacy evidence, selection state, and default strategy. -
AnonymizationStrategycontrols how selected values transform. See Transform strategy. -
PrivacyReportdescribes transformed columns, replacement counts, readiness, evidence, utility metrics, and notes. See Privacy report. -
SmartReplacementProvideris the trait implemented outside the core by the Tauri Local AI provider. -
SmartReplacementMapstores accepted Local AI replacements and rejection counts for reuse during preview and output. -
ProcessControllets callers receive row progress and request cancellation during streaming transforms.
graph TD
Service[AnonymizerService] --> CSV[csv_io]
Service --> Metadata[metadata]
Metadata --> Detection[detection]
Service --> Preview[preview]
Service --> Smart[smart replacement]
Service --> Strategies[strategies]
CSV --> Strategies
Strategies --> Report[TransformReport]
Service --> Privacy[release_report and report_notes]
Direct[direct_input] --> Metadata
Direct --> Smart
Direct --> Strategies
Direct --> Privacy
For CSV files, AnonymizerService reads a bounded sample, builds Column metadata, validates selected columns, applies any ColumnControl overrides, optionally prepares Smart replacements, then streams the full file through csv_io::process_file_with_control. The full-file path preserves streaming behavior and emits progress through ProcessControl.
For pasted and quick workflows, direct_input resolves the input format, analyzes or transforms in memory, and reuses the same metadata, strategy, Smart replacement, and privacy report primitives.
-
Tauri command shell calls
AnonymizerServiceanddirect_inputfunctions from command handlers. -
Background jobs passes
ProcessControlinto streaming anonymization for progress and cancellation. - csv-anonymizer-app uses the service for CLI analysis, anonymization, and smoke output.
-
src-tauri/src/local_ai/provider.rsimplementsSmartReplacementProviderfor Ollama. -
frontend/src/types.tsmirrors public DTOs fromtypes.rs;scripts/check-contracts.mjschecks critical contract alignment.
- Change public exports in
crates/csv-anonymizer-core/src/lib.rs. - Change CSV file service behavior in
crates/csv-anonymizer-core/src/service.rs. - Change frontend or command DTOs in
crates/csv-anonymizer-core/src/types.rsand mirror them infrontend/src/types.ts. - Change detection rules or PII risk classification in
crates/csv-anonymizer-core/src/detection.rsand its submodules. - Change CSV normalization, streaming, row counting, or formula neutralization in
crates/csv-anonymizer-core/src/csv_io.rs. - Change pasted-data or quick workflows in
crates/csv-anonymizer-core/src/direct_input/mod.rsand submodules. - Change transformations in
crates/csv-anonymizer-core/src/strategies/mod.rsand its strategy submodules. - Change Smart replacement batching or validation in
crates/csv-anonymizer-core/src/smart.rs.
crates/csv-anonymizer-core/src/lib.rscrates/csv-anonymizer-core/src/service.rscrates/csv-anonymizer-core/src/types.rscrates/csv-anonymizer-core/src/detection.rscrates/csv-anonymizer-core/src/csv_io.rscrates/csv-anonymizer-core/src/direct_input/mod.rscrates/csv-anonymizer-core/src/strategies/mod.rscrates/csv-anonymizer-core/src/smart.rs