mod address;
mod catalog;
mod credentials;
#[allow(unused_imports, unused_macros)]
mod disabled;
mod factory;
#[cfg(any(
feature = "aac",
feature = "cloudflare",
feature = "convex",
feature = "digitalocean",
feature = "doppler",
feature = "infisical",
feature = "netlify",
feature = "openbao",
feature = "pulumi",
feature = "railway",
feature = "scaleway",
feature = "setec",
feature = "vault",
feature = "vercel"
))]
mod http;
#[macro_use]
pub mod macros;
mod path;
mod preflight;
mod registry;
mod runtime;
mod traits;
mod url;
pub use address::Address;
pub(crate) use address::{OwnedAddress, flat_item};
pub(crate) use credentials::ProviderCredentials;
pub(crate) use credentials::credential_env_value;
pub(crate) use credentials::credential_or_env;
pub(crate) use credentials::credential_or_envs;
#[cfg(any(
feature = "cloudflare",
feature = "openbao",
feature = "scaleway",
feature = "vault",
feature = "vercel"
))]
pub(crate) use credentials::preferred_env;
pub(crate) use factory::external_provider_from_spec;
pub(crate) use factory::provider_from_spec;
#[cfg(test)]
pub(crate) use factory::provider_from_url;
#[cfg(test)]
pub(crate) use factory::provider_from_url_with_discovery;
pub(crate) use factory::provider_url_from_spec;
pub(crate) use factory::reject_uri_credential;
pub use macros::PROVIDER_REGISTRY;
pub use macros::ProviderMetadata;
pub use macros::ProviderRegistration;
pub use macros::declared_flag;
pub use macros::declared_read_capability;
#[cfg(any(feature = "awssm", feature = "infisical", feature = "scaleway", test))]
#[cfg(any(feature = "awssm", feature = "infisical", feature = "scaleway", test))]
pub(crate) use path::join_slash_path;
pub(crate) use preflight::ProviderWithPreflight;
pub use registry::ProviderInfo;
pub(crate) use registry::credential_names_for_spec;
pub(crate) use registry::deleting_provider_names;
pub(crate) use registry::provider_display_name_for_spec;
#[cfg(feature = "cli")]
pub use registry::providers;
pub(crate) use registry::spec_names_known_provider;
#[cfg(any(feature = "cli", test))]
pub(crate) use registry::spec_provider_reads;
pub(crate) use registry::spec_uses_dynamic_credentials;
pub(crate) use registry::static_delete_capability;
pub(crate) use runtime::block_on;
pub(crate) use runtime::write_child_stdin;
pub use traits::DiscoveryContext;
#[cfg(test)]
pub(crate) use traits::GET_EACH_CONCURRENCY_ENV;
pub use traits::ProducedValuePersistence;
pub use traits::Provider;
pub use traits::ProviderValue;
pub(crate) use traits::exists_each;
#[cfg(test)]
pub(crate) use traits::get_each;
pub(crate) use traits::get_each_concurrency;
pub(crate) use traits::get_each_with;
pub(crate) use traits::map_concurrently;
pub(crate) use traits::same_configured_entries;
pub(crate) use traits::same_storage_container;
pub(crate) use url::ProviderUrl;
pub(crate) use url::URI_ENCODE_SET;
pub(crate) fn require_utf8<'a>(
provider: &str,
value: &'a crate::SecretBytes,
) -> crate::Result<&'a str> {
std::str::from_utf8(value.expose_secret()).map_err(|_| {
crate::MonosecretError::ProviderOperationFailed(format!(
"provider '{provider}' requires UTF-8 secret values"
))
})
}
pub(crate) fn strip_one_trailing_newline(text: &str) -> &str {
text.strip_suffix('\n').unwrap_or(text)
}
#[cfg(feature = "aac")]
pub mod aac;
#[cfg(feature = "age")]
pub mod age;
#[cfg(feature = "akv")]
pub mod akv;
#[cfg(feature = "awsps")]
pub mod awsps;
#[cfg(feature = "awssm")]
pub mod awssm;
#[cfg(feature = "bw")]
pub mod bw;
#[cfg(feature = "bws")]
pub mod bws;
#[cfg(feature = "cloudflare")]
pub mod cloudflare;
#[cfg(feature = "convex")]
pub mod convex;
pub mod dashlane;
#[cfg(feature = "digitalocean")]
pub mod digitalocean;
#[cfg(feature = "doppler")]
pub mod doppler;
pub mod dotenv;
#[cfg(feature = "ejson")]
pub mod ejson;
pub mod env;
pub mod external;
pub mod file;
pub mod fly;
#[cfg(feature = "gcsm")]
pub mod gcsm;
pub mod gopass;
#[cfg(feature = "infisical")]
pub mod infisical;
#[cfg(feature = "kdbx")]
pub mod kdbx;
#[cfg(feature = "keeper")]
pub mod keeper;
#[cfg(feature = "keyring")]
pub mod keyring;
#[cfg(feature = "kubernetes")]
pub mod kubernetes;
pub mod lastpass;
#[cfg(feature = "netlify")]
pub mod netlify;
pub mod null;
pub mod onepassword;
pub mod onepassword_env;
#[cfg(feature = "openbao")]
pub mod openbao;
pub mod pass;
pub mod passbolt;
pub mod protonpass;
#[cfg(feature = "pulumi")]
pub mod pulumi;
#[cfg(feature = "railway")]
pub mod railway;
#[cfg(feature = "scaleway")]
pub mod scaleway;
#[cfg(feature = "setec")]
pub mod setec;
#[cfg(feature = "sops")]
pub mod sops;
pub mod systemd_credential;
#[cfg(feature = "vault")]
pub mod vault;
#[cfg(any(feature = "openbao", feature = "vault"))]
mod vault_common;
#[cfg(feature = "vercel")]
pub mod vercel;
#[cfg(test)]
pub(crate) mod tests;