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