#![allow(clippy::missing_errors_doc)] #![allow(clippy::missing_const_for_fn)] #![allow(clippy::must_use_candidate)] #![warn(clippy::default_trait_access)]
#![warn(clippy::doc_markdown)]
#![warn(clippy::explicit_iter_loop)]
#![warn(clippy::future_not_send)]
#![warn(clippy::implicit_clone)]
#![warn(clippy::literal_string_with_formatting_args)]
#![warn(clippy::match_same_arms)]
#![warn(clippy::min_ident_chars)]
#![warn(clippy::needless_raw_strings)]
#![warn(clippy::option_if_let_else)]
#![warn(clippy::redundant_clone)]
#![warn(clippy::ref_option)]
#![warn(clippy::redundant_closure)]
#![warn(clippy::uninlined_format_args)]
#![warn(clippy::unnecessary_wraps)]
#![warn(clippy::unused_async)]
pub mod auth;
pub mod cache;
#[cfg(feature = "grpc")]
pub mod chat_stream;
#[cfg(feature = "grpc")]
pub mod chats;
pub mod client;
pub mod error;
#[cfg(feature = "grpc")]
pub mod files;
pub mod filters;
#[cfg(feature = "grpc")]
pub(crate) mod grpc_util;
mod http_client;
pub mod keystore;
pub mod members;
#[cfg(feature = "grpc")]
#[doc(hidden)]
pub mod mock;
pub mod objects;
pub mod paged;
#[cfg(feature = "grpc")]
pub mod process_watcher;
pub mod properties;
pub mod search;
pub mod spaces;
pub mod tags;
pub mod templates;
pub mod types;
pub mod validation;
pub mod verify;
pub mod views;
pub mod test_util;
pub type Result<T, E = crate::error::AnytypeError> = std::result::Result<T, E>;
pub mod prelude {
pub use super::{ANYTYPE_API_VERSION, ANYTYPE_DESKTOP_URL, ANYTYPE_HEADLESS_URL};
pub use crate::error::*;
pub use crate::{
cache::AnytypeCache,
client::{AnytypeClient, ClientConfig},
filters::{Condition, Filter, FilterExpression, FilterOperator, Sort, SortDirection},
http_client::HttpMetricsSnapshot,
keystore::{HttpCredentials, KeyStore, KeyStoreType},
members::{Member, MemberRole, MemberStatus},
objects::{Color, DataModel, Icon, Object, ObjectLayout, object_link, object_link_shared},
paged::{PagedResult, PaginatedResponse, PaginationMeta},
properties::{Property, PropertyFormat, PropertyValue, PropertyWithValue, SetProperty},
spaces::{Space, SpaceModel},
tags::{CreateTagRequest, Tag},
types::{CreateTypeProperty, Type, TypeLayout},
validation::ValidationLimits,
verify::VerifyConfig,
views::{View, ViewLayout},
};
#[cfg(feature = "grpc")]
pub use crate::{
chat_stream::{
BackoffPolicy, ChatEvent, ChatEventStream, ChatStreamBuilder, ChatStreamControl,
ChatStreamHandle,
},
chats::{
ChatClient, ChatGetRequest, ChatListRequest, ChatListResult, ChatMessage,
ChatMessagesPage, ChatReadAllRequest, ChatReadType, ChatResolveRequest,
ChatSearchRequest, ChatSpaceRequest, ChatState, ChatToggleReactionRequest,
MessageAttachment, MessageAttachmentType, MessageContent, MessageReaction,
MessageTextMark, MessageTextMarkType, MessageTextRange, MessageTextStyle,
},
client::find_grpc,
files::{FileObject, FileStyle, FileType, FilesClient},
keystore::GrpcCredentials,
process_watcher::{
ProcessCompletionFallback, ProcessKind, ProcessWatchCancelToken, ProcessWatchProgress,
ProcessWatchRequest, ProcessWatcher, ProcessWatcherTimeouts,
},
spaces::{
BackupExportFormat, BackupSpaceRequest, DeleteAllArchivedResult, SpaceBackupResult,
},
};
}
pub const ANYTYPE_API_VERSION: &str = "2025-11-08";
pub const ANYTYPE_DESKTOP_URL: &str = "http://127.0.0.1:31009";
pub const ANYTYPE_HEADLESS_URL: &str = "http://127.0.0.1:31012";
pub(crate) mod config {
pub const ANYTYPE_URL_ENV: &str = "ANYTYPE_URL";
pub const ANYTYPE_API_HEADER: &str = "Anytype-Version";
pub const DEFAULT_SERVICE_NAME: &str = "anytype_rust";
pub const RATE_LIMIT_WAIT_WARN_SECS: u64 = 5;
pub const RATE_LIMIT_WAIT_MAX_SECS: u64 = 30;
pub const RATE_LIMIT_MAX_RETRIES_ENV: &str = "ANYTYPE_RATE_LIMIT_MAX_RETRIES";
pub const RATE_LIMIT_MAX_RETRIES_DEFAULT: u32 = 5;
pub const MAX_PAGINATION_LIMIT: u32 = 1000;
pub const DEFAULT_PAGINATION_LIMIT: u32 = 100;
pub const MAX_RETRIES: u32 = 3;
pub const VALIDATION_MARKDOWN_MAX_LEN: u64 = 10 * 1024 * 1024;
pub const VALIDATION_NAME_MAX_LEN: u32 = 4096;
pub const VALIDATION_TAG_MAX_COUNT: u32 = 4096;
pub const VALIDATION_TAG_MAX_LEN: u32 = 1024;
pub const VALIDATION_OID_MIN_LEN: u32 = 20;
pub const VALIDATION_OID_MAX_LEN: u32 = 200;
pub const VALIDATION_MAX_QUERY_LEN: u32 = 4000;
#[doc(hidden)]
pub const ANYTYPE_TEST_URL_ENV: &str = "ANYTYPE_TEST_URL";
#[doc(hidden)]
pub const ANYTYPE_TEST_URL: &str = super::ANYTYPE_HEADLESS_URL;
#[doc(hidden)]
#[allow(dead_code)]
pub const ANYTYPE_TEST_KEY_SERVICE: &str = "anytype_test";
}
#[doc(hidden)]
#[macro_export]
macro_rules! test_assert {
($cond:expr, $msg:expr) => {
if !$cond {
return Err($crate::test_util::TestError::Assertion {
message: $msg.to_string(),
});
}
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! test_assert_eq {
($left:expr, $right:expr, $msg:expr) => {
if $left != $right {
return Err($crate::test_util::TestError::Assertion {
message: format!("{}: expected {:?}, got {:?}", $msg, $right, $left),
});
}
};
}