pub mod aad;
pub mod garnet_aad_authenticator;
pub mod garnet_acl_authenticator;
pub mod garnet_acl_with_aad_authenticator;
pub mod garnet_acl_with_password_authenticator;
pub mod garnet_no_auth_authenticator;
pub mod garnet_password_authenticator;
pub mod i_garnet_authenticator;
pub mod settings;
pub use aad::issuer_signing_token_provider::{AadError, DocumentFetch, IssuerSigningTokenProvider};
pub use garnet_aad_authenticator::GarnetAadAuthenticator;
pub use garnet_acl_authenticator::GarnetAclAuthenticator;
pub use garnet_acl_with_aad_authenticator::GarnetAclWithAadAuthenticator;
pub use garnet_acl_with_password_authenticator::GarnetAclWithPasswordAuthenticator;
pub use garnet_no_auth_authenticator::GarnetNoAuthAuthenticator;
pub use garnet_password_authenticator::GarnetPasswordAuthenticator;
pub use i_garnet_authenticator::IGarnetAuthenticator;
pub(crate) fn ascii_sanitize(bytes: &[u8]) -> String {
bytes
.iter()
.map(|&b| if b.is_ascii() { b as char } else { '?' })
.collect()
}