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 phone;
27mod ssn;
28mod url;
29mod user_path;
30
31pub use api_key::{ApiKeyRecognizer, AwsAccessKeyRecognizer, JwtRecognizer};
32pub use credit_card::{card_brand, luhn_valid, CardBrand, CreditCardRecognizer};
33pub use crypto::CryptoAddressRecognizer;
34pub use date_of_birth::DateOfBirthRecognizer;
35pub use email::EmailRecognizer;
36pub use hostname::HostnameRecognizer;
37pub use iban::{iban_country_length, iban_mod97_valid, IbanRecognizer};
38pub use ip_address::IpAddressRecognizer;
39pub use mac_address::MacAddressRecognizer;
40pub use phone::PhoneRecognizer;
41pub use ssn::SsnRecognizer;
42pub use url::UrlRecognizer;
43pub use user_path::UserPathRecognizer;
44
45use cloakrs_core::RecognizerRegistry;
46
47/// Returns the crate version.
48#[must_use]
49pub fn version() -> &'static str {
50    env!("CARGO_PKG_VERSION")
51}
52
53/// Builds a registry containing the Sprint 2 universal recognizers.
54///
55/// # Examples
56///
57/// ```
58/// let registry = cloakrs_patterns::default_registry();
59/// assert!(!registry.is_empty());
60/// ```
61#[must_use]
62pub fn default_registry() -> RecognizerRegistry {
63    let mut registry = RecognizerRegistry::new();
64    register_default_recognizers(&mut registry);
65    registry
66}
67
68/// Registers the Sprint 2 recognizers into an existing registry.
69pub fn register_default_recognizers(registry: &mut RecognizerRegistry) {
70    registry.register(EmailRecognizer);
71    registry.register(PhoneRecognizer);
72    registry.register(CreditCardRecognizer);
73    registry.register(IbanRecognizer);
74    registry.register(IpAddressRecognizer);
75    registry.register(UrlRecognizer);
76    registry.register(HostnameRecognizer);
77    registry.register(UserPathRecognizer);
78    registry.register(AwsAccessKeyRecognizer);
79    registry.register(JwtRecognizer);
80    registry.register(ApiKeyRecognizer);
81    registry.register(MacAddressRecognizer);
82    registry.register(CryptoAddressRecognizer);
83    registry.register(DateOfBirthRecognizer);
84    registry.register(url::UrlQueryEmailRecognizer);
85    registry.register(url::UrlQuerySsnRecognizer);
86    registry.register(SsnRecognizer);
87}