Skip to main content

cloakrs_patterns/
lib.rs

1//! Universal PII recognizers for cloakrs.
2//!
3//! This crate provides recognizers for email, phone, credit cards, IBAN, IP
4//! addresses, URLs, secrets, MAC addresses, hostnames, user home paths, crypto
5//! wallet addresses, and dates of birth.
6//!
7//! # Examples
8//!
9//! ```
10//! use cloakrs_core::EntityType;
11//!
12//! let findings = cloakrs_patterns::default_registry().scan_all("email jane@example.com");
13//! assert!(findings.iter().any(|finding| finding.entity_type == EntityType::Email));
14//! ```
15
16mod api_key;
17mod common;
18mod credit_card;
19mod crypto;
20mod date_of_birth;
21mod email;
22mod hostname;
23mod iban;
24mod ip_address;
25mod mac_address;
26mod person_name;
27mod phone;
28mod physical_address;
29mod ssn;
30mod url;
31mod user_path;
32
33pub use api_key::{ApiKeyRecognizer, AwsAccessKeyRecognizer, JwtRecognizer};
34pub use credit_card::{card_brand, luhn_valid, CardBrand, CreditCardRecognizer};
35pub use crypto::CryptoAddressRecognizer;
36pub use date_of_birth::DateOfBirthRecognizer;
37pub use email::EmailRecognizer;
38pub use hostname::HostnameRecognizer;
39pub use iban::{iban_country_length, iban_mod97_valid, IbanRecognizer};
40pub use ip_address::IpAddressRecognizer;
41pub use mac_address::MacAddressRecognizer;
42pub use person_name::PersonNameRecognizer;
43pub use phone::PhoneRecognizer;
44pub use physical_address::PhysicalAddressRecognizer;
45pub use ssn::SsnRecognizer;
46pub use url::UrlRecognizer;
47pub use user_path::UserPathRecognizer;
48
49use cloakrs_core::RecognizerRegistry;
50
51/// Returns the crate version.
52#[must_use]
53pub fn version() -> &'static str {
54    env!("CARGO_PKG_VERSION")
55}
56
57/// Builds a registry containing the Sprint 2 universal recognizers.
58///
59/// # Examples
60///
61/// ```
62/// let registry = cloakrs_patterns::default_registry();
63/// assert!(!registry.is_empty());
64/// ```
65#[must_use]
66pub fn default_registry() -> RecognizerRegistry {
67    let mut registry = RecognizerRegistry::new();
68    register_default_recognizers(&mut registry);
69    registry
70}
71
72/// Registers the Sprint 2 recognizers into an existing registry.
73pub fn register_default_recognizers(registry: &mut RecognizerRegistry) {
74    registry.register(EmailRecognizer);
75    registry.register(PhoneRecognizer);
76    registry.register(CreditCardRecognizer);
77    registry.register(IbanRecognizer);
78    registry.register(IpAddressRecognizer);
79    registry.register(UrlRecognizer);
80    registry.register(HostnameRecognizer);
81    registry.register(UserPathRecognizer);
82    registry.register(PersonNameRecognizer);
83    registry.register(PhysicalAddressRecognizer);
84    registry.register(AwsAccessKeyRecognizer);
85    registry.register(JwtRecognizer);
86    registry.register(ApiKeyRecognizer);
87    registry.register(MacAddressRecognizer);
88    registry.register(CryptoAddressRecognizer);
89    registry.register(DateOfBirthRecognizer);
90    registry.register(url::UrlQueryEmailRecognizer);
91    registry.register(url::UrlQuerySsnRecognizer);
92    registry.register(SsnRecognizer);
93}