1mod auth;
8mod backoff;
9mod client;
10mod clock;
11pub mod config;
12mod consts;
13mod error;
14mod executor;
15mod extras;
16mod ffmpeg;
17mod fs;
18mod graph;
19mod hash;
20mod http;
21mod lineage;
22mod manifest;
23mod model;
24mod naming;
25pub mod reconcile;
26pub mod select;
27mod tag;
28
29#[cfg(test)]
30mod testutil;
31
32#[cfg(test)]
33mod sync_chaos;
34
35pub use auth::ClerkAuth;
36pub use client::{Playlist, SunoClient};
37pub use clock::Clock;
38pub use config::{
39 AccountConfig, AudioFormat, Config, Defaults, EffectiveSettings, FlagOverrides, SourceConfig,
40};
41pub use error::{Error, Result};
42pub use executor::{ExecOptions, ExecOutcome, Failure, Ports, RunStatus, execute};
43pub use extras::{M3u8Entry, render_m3u8};
44pub use ffmpeg::{Ffmpeg, FfmpegError, FfmpegErrorKind, WebpEncodeSettings};
45pub use fs::{FileStat, Filesystem, FsError, FsErrorKind};
46pub use graph::{AlbumArt, CacheEntry, LineageStore, Node, PlaylistState, StoredEdge};
47pub use hash::{art_hash, art_url_hash, content_hash, meta_hash};
48pub use http::{Http, HttpRequest, HttpResponse, Method, TransportError};
49pub use lineage::{
50 Edge, EdgeRole, EdgeType, LineageContext, Resolution, ResolveOpts, ResolveStatus, RootInfo,
51 edge_type, immediate_parent, lineage_edges, resolve_roots,
52};
53pub use manifest::{ArtifactState, Manifest, ManifestEntry};
54pub use model::{Clip, HistoryEntry};
55pub use naming::{
56 CharacterSet, DEFAULT_TEMPLATE, NamingConfig, NamingRequest, RenderedName, render_clip_name,
57 render_clip_names, sanitise_name,
58};
59pub use reconcile::{
60 Action, AlbumDesired, ArtifactKind, Desired, DesiredArtifact, LocalFile, Plan, PlaylistDesired,
61 SourceMode, SourceStatus, album_desired, deletion_allowed, plan_album_artifacts,
62 plan_playlist_artifacts, reconcile,
63};
64pub use tag::{TrackMetadata, tag_flac, tag_mp3};