1macro_rules! static_regex {
6 ($($(#[$meta:meta])* $vis:vis $name:ident = $re:literal;)+) => {
7 $(
8 $(#[$meta])*
9 $vis static $name: std::sync::LazyLock<regex::Regex> = std::sync::LazyLock::new(|| {
10 regex::Regex::new($re).expect(concat!("invalid regex ", stringify!($name)))
11 });
12 )+
13 };
14}
15
16pub mod availability;
17pub mod bulk;
18pub mod caa;
19pub mod cache;
20#[cfg(feature = "cli")]
21pub mod colors;
22pub mod config;
23pub mod confusables;
24mod dates;
25pub mod diff;
26pub mod dns;
27#[cfg(feature = "cli")]
28pub mod doctor;
29pub mod domain_info;
30#[cfg(feature = "cli")]
31pub mod drift;
32pub mod error;
33#[cfg(feature = "cli")]
34mod fsutil;
35pub mod headers;
36#[cfg(feature = "cli")]
37pub mod history;
38mod http;
39#[cfg(feature = "cli")]
40pub mod logging;
41pub mod lookup;
42pub mod net;
43#[cfg(feature = "cli")]
44pub mod output;
45pub mod posture;
46mod psl;
47pub mod rdap;
48pub mod retry;
49pub mod ssl;
50pub mod status;
51pub mod subdomains;
52pub mod takeover;
53pub mod tld;
54mod tls;
55pub mod validation;
56#[cfg(feature = "cli")]
57pub mod watchlist;
58#[cfg(feature = "cli")]
59pub mod webhook;
60pub mod whois;
61
62pub use availability::{AvailabilityChecker, AvailabilityResult};
63pub use cache::TtlCache;
64pub use config::SeerConfig;
65pub use error::{Result, SeerError};
66pub use retry::{is_retryable, RetryExecutor, RetryPolicy};
67pub use validation::normalize_domain;
68
69pub use dns::{
70 AuthenticationTier, DnsComparator, DnsComparison, DnsFollower, DnsNameservers, DnsQueryResult,
71 DnsRecord, DnsResolver, DnsStatus, DnsTrace, DnsTracer, DnssecChecker, DnssecReport,
72 FailedType, FollowConfig, FollowIteration, FollowResult, PropagationResult, RecordType,
73 TraceHop, WildcardProbe, MAX_FOLLOW_INTERVAL_SECS, MAX_FOLLOW_ITERATIONS,
74};
75pub use lookup::{LookupProgressCallback, LookupResult, SmartLookup};
76pub use rdap::{RdapClient, RdapResponse};
77pub use status::{CertificateInfo, DnsResolution, DomainExpiration, StatusClient, StatusResponse};
78pub use tld::{all_tlds, lookup_tld, lookup_tld_with, TldInfo};
79pub use whois::{WhoisClient, WhoisResponse};
80
81pub use bulk::{BulkExecutor, BulkOperation, BulkResult};
82pub use caa::{CaaPolicy, CaaRecord, IssuerCaaMatch};
83pub use confusables::{
84 find_confusables, generate_candidates, ConfusableCandidate, ConfusableReport,
85 RegisteredLookalike,
86};
87pub use diff::{DomainDiff, DomainDiffer};
88pub use domain_info::{
89 describe_epp_status, DomainInfo, DomainInfoSource, ExpiryStatus, StatusDescription,
90};
91#[cfg(feature = "cli")]
92pub use drift::{DriftReport, FieldChange};
93pub use headers::{
94 audit_headers, CookieFinding, Disclosure, HeaderFinding, HeaderReport, HeaderVerdict,
95 DEFAULT_HEADER_TIMEOUT,
96};
97#[cfg(feature = "cli")]
98pub use history::{HistoryEntry, LookupHistory};
99#[cfg(feature = "cli")]
100pub use output::{OutputFormat, OutputFormatter};
101pub use posture::{
102 lookup_email_posture, BimiPolicy, DanePolicy, DmarcPolicy, EmailPosture, MtaStsPolicy,
103 PostureVerdict, SpfPolicy,
104};
105pub use ssl::{CertDetail, CertWarning, CertWarningSeverity, SslChecker, SslReport};
106pub use subdomains::{
107 classify_subdomains, ClassifiedSubdomain, SubdomainClassification, SubdomainEnumerator,
108 SubdomainResult, SubdomainStatus,
109};
110#[cfg(feature = "cli")]
111pub use subdomains::{SubdomainBaseline, SubdomainBaselineDiff, SubdomainBaselines};
112pub use takeover::{
113 scan_takeover, TakeoverFinding, TakeoverReport, TakeoverVerdict, DEFAULT_TAKEOVER_TIMEOUT,
114};
115#[cfg(feature = "cli")]
116pub use watchlist::{
117 check_watchlist_with, check_watchlist_with_config, WatchReport, WatchResult, Watchlist,
118};