dd_sds/
lib.rs

1// This blocks accidental use of `println`. If one is actually needed, you can
2// override with `#[allow(clippy::print_stdout)]`.
3#![deny(clippy::print_stdout)]
4#![allow(clippy::new_without_default)]
5
6#[cfg(feature = "sds-bindings-utils")]
7mod bindings_utils;
8#[cfg(feature = "dd-sds")]
9mod encoding;
10#[cfg(feature = "dd-sds")]
11mod event;
12#[cfg(feature = "dd-sds")]
13mod match_action;
14
15#[cfg(feature = "dd-sds")]
16mod ast_utils;
17#[cfg(feature = "dd-sds")]
18mod event_json;
19#[cfg(feature = "dd-sds")]
20mod match_validation;
21#[cfg(feature = "dd-sds")]
22mod normalization;
23#[cfg(feature = "dd-sds")]
24mod observability;
25#[cfg(feature = "dd-sds")]
26mod parser;
27#[cfg(feature = "dd-sds")]
28mod path;
29#[cfg(feature = "dd-sds")]
30mod proximity_keywords;
31#[cfg(feature = "dd-sds")]
32mod rule_match;
33#[cfg(feature = "dd-sds")]
34mod scanner;
35#[cfg(feature = "dd-sds")]
36pub(crate) mod scoped_ruleset;
37#[cfg(feature = "dd-sds")]
38mod secondary_validation;
39#[cfg(feature = "dd-sds")]
40mod simple_event;
41#[cfg(feature = "dd-sds")]
42mod stats;
43#[cfg(feature = "dd-sds")]
44mod tokio;
45#[cfg(feature = "dd-sds")]
46mod validation;
47
48#[cfg(feature = "dd_sds_go")]
49mod native;
50#[cfg(feature = "dd_sds_go")]
51pub use native::{
52    GoError, RuleDoublePtr, RuleList, RulePtr, convert_panic_to_go_error, handle_go_error,
53    handle_panic_ptr_return, read_json,
54};
55
56#[cfg(feature = "sds-bindings-utils")]
57pub use bindings_utils::{
58    BinaryEvent, encode_async_response, encode_response, encode_response_in_place,
59};
60
61#[cfg(feature = "dd-sds")]
62pub use simple_event::SimpleEvent;
63
64// This is the public API of the SDS core library
65#[cfg(feature = "dd-sds")]
66pub use encoding::{EncodeIndices, Encoding, Utf8Encoding};
67#[cfg(feature = "dd-sds")]
68pub use event::{Event, EventVisitor, VisitStringResult};
69#[cfg(feature = "dd-sds")]
70pub use match_action::{MatchAction, PartialRedactDirection};
71
72#[cfg(feature = "dd-sds")]
73pub use match_validation::{
74    config::AwsConfig,
75    config::AwsType,
76    config::CustomHttpConfig,
77    config::HttpMethod,
78    config::HttpStatusCodeRange,
79    config::HttpValidatorOption,
80    config::InternalMatchValidationType,
81    config::MatchValidationType,
82    config::RequestHeader,
83    config_v2::{
84        BodyMatcher, CustomHttpConfigV2, HttpCallConfig, HttpRequestConfig, HttpResponseConfig,
85        MatchPairingConfig, PairedValidatorConfig, ResponseCondition, ResponseConditionResult,
86        ResponseConditionType, StatusCodeMatcher, TemplateVariable, TemplatedMatchString,
87        is_valid_body_matcher_path,
88    },
89    match_status::{HttpErrorInfo, MatchStatus, UnknownResponseTypeInfo, ValidationError},
90};
91#[cfg(feature = "dd-sds")]
92pub use observability::labels::Labels;
93#[cfg(feature = "dd-sds")]
94pub use path::{Path, PathSegment};
95#[cfg(feature = "dd-sds")]
96pub use rule_match::{ReplacementType, RuleMatch};
97#[cfg(feature = "dd-sds")]
98pub use scanner::shared_pool::{SharedPool, SharedPoolGuard};
99
100#[cfg(feature = "dd-sds")]
101pub use scanner::suppression::Suppressions;
102#[cfg(feature = "dd-sds")]
103pub use scanner::{
104    CompiledRule, MatchEmitter, Precedence, RootCompiledRule, RootRuleConfig, RuleResult,
105    RuleStatus, ScanOptionBuilder, Scanner, ScannerBuilder, SharedData, StringMatch,
106    StringMatchesCtx,
107    config::RuleConfig,
108    error::{CreateScannerError, ScannerError},
109    regex_rule::config::{
110        ClaimRequirement, JwtClaimsValidatorConfig, ProximityKeywordsConfig, RegexRuleConfig,
111        SecondaryValidator,
112    },
113    regex_rule::{RegexCacheKey, RegexCacheValue, RegexCaches, SharedRegex, get_memoized_regex},
114    scope::Scope,
115};
116#[cfg(feature = "dd-sds")]
117pub use scoped_ruleset::ExclusionCheck;
118#[cfg(feature = "dd-sds")]
119pub use tokio::TOKIO_RUNTIME;
120#[cfg(feature = "dd-sds")]
121pub use validation::{
122    RegexValidationError, get_regex_complexity_estimate_very_slow, validate_regex,
123};
124
125#[cfg(feature = "dd-sds")]
126pub use scanner::debug_scan::debug_scan;
127
128#[cfg(all(feature = "dd-sds", any(feature = "testing", feature = "bench")))]
129pub use crate::{
130    scoped_ruleset::{ContentVisitor, RuleIndexVisitor, ScopedRuleSet},
131    secondary_validation::{LuhnChecksum, Validator},
132};