aven-core 0.1.13

Core library for the Aven local-first task manager
Documentation
pub(crate) mod blocking;
pub(crate) mod decode;
pub(crate) mod lifecycle;
pub(crate) mod optimization;
pub(crate) mod storage;
pub(crate) mod validation;

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum AttachmentBytesState {
    Present,
    PendingDownload,
    Unavailable,
}

pub use blocking::{run as run_blocking, run_preview};
pub use decode::{decode_first_frame, validate_image_blocking};
pub use lifecycle::{
    ByteCount, DEFAULT_MAINTENANCE_LIMIT, DEFAULT_ORIGINAL_QUOTA_BYTES,
    DEFAULT_PREVIEW_QUOTA_BYTES, LifecyclePolicy, LifecycleReport, PruneSummary,
    prune_preview_cache,
};
pub use optimization::{ImageOptimizationPolicy, OptimizedBytes, optimize_image_bytes};
pub use storage::{object_path, sha256_hex};
pub use validation::{
    MAX_ALT_TEXT_LEN, MAX_BLOB_BYTES, MAX_FILENAME_LEN, SUPPORTED_MEDIA_TYPES, validate_alt_text,
    validate_attachment_id, validate_blob_size, validate_dimensions, validate_filename,
    validate_media_type, validate_sha256,
};

pub fn default_blob_dir(database_path: &std::path::Path) -> std::path::PathBuf {
    let mut value = database_path.as_os_str().to_os_string();
    value.push(".blobs");
    std::path::PathBuf::from(value)
}