1mod auth;
8mod backoff;
9mod client;
10mod clock;
11pub mod config;
12mod consts;
13pub mod desired;
14mod downloadable;
15mod error;
16mod executor;
17mod extras;
18mod ffmpeg;
19mod fs;
20mod graph;
21mod hash;
22mod http;
23mod limiter;
24mod lineage;
25mod lyrics;
26mod manifest;
27mod model;
28mod naming;
29mod orphans;
30mod pathkey;
31pub mod reconcile;
32pub mod select;
33mod synced;
34mod tag;
35mod tag_alac;
36
37#[cfg(test)]
38mod testutil;
39
40#[cfg(test)]
41mod sync_chaos;
42
43pub use auth::{ClerkAuth, TOKEN_EXPIRY_WARN_DAYS, TokenExpiry, classify_token_expiry};
44pub use client::{BillingInfo, Playlist, Stem, SunoClient};
45pub use clock::Clock;
46pub use config::{
47 AccountConfig, AreaMode, AreasConfig, AudioFormat, Config, Defaults, EffectiveSettings,
48 FlagOverrides, SourceConfig, StemFormat, VideoCoverRetention,
49};
50pub use desired::{
51 ArtifactToggles, LIKED_PLAYLIST_ID, PlaylistInput, build_desired, build_playlist_desired,
52 clip_stems,
53};
54pub use downloadable::is_downloadable;
55pub use error::{Error, Result};
56pub use executor::{ExecOptions, ExecOutcome, Failure, Ports, RunStatus, execute};
57pub use extras::{
58 INDEX_SCHEMA_VERSION, M3u8Entry, render_clip_details, render_clip_lrc, render_clip_lyrics,
59 render_library_index, render_m3u8, render_synced_lrc,
60};
61pub use ffmpeg::{Ffmpeg, FfmpegError, FfmpegErrorKind, WebpEncodeSettings};
62pub use fs::{FileStat, Filesystem, FsError, FsErrorKind};
63pub use graph::{
64 AdoptDecision, AlbumArt, CacheEntry, LineageStore, Node, Owner, OwnerGate, PlaylistState,
65 StoredEdge, adopt_decision, owner_gate,
66};
67pub use hash::{
68 SYNCED_LRC_VERSION, art_hash, art_url_hash, content_hash, meta_hash, synced_lrc_source_hash,
69};
70pub use http::{Http, HttpRequest, HttpResponse, Method, TransportError};
71pub use lineage::{
72 AttributionEdge, Edge, EdgeRole, EdgeType, LineageContext, Resolution, ResolveOpts,
73 ResolveStatus, RootInfo, attribution_edges, edge_type, immediate_parent, lineage_edges,
74 resolve_roots,
75};
76pub use lyrics::{AlignedLine, AlignedLineWord, AlignedLyrics, AlignedWord};
77pub use manifest::{ArtifactState, Manifest, ManifestEntry, SyncedLyricsCheck};
78pub use model::{Clip, ClipRoot, HistoryEntry, MediaUrl};
79pub use naming::{
80 CharacterSet, DEFAULT_TEMPLATE, NamingConfig, NamingRequest, RenderedName, render_clip_name,
81 render_clip_names, sanitise_name, stem_file_path, stems_folder,
82};
83pub use orphans::untracked_audio;
84pub use reconcile::{
85 Action, AlbumDesired, ArtifactKind, Desired, DesiredArtifact, DesiredStem, LocalFile, Plan,
86 PlaylistDesired, SourceMode, SourceStatus, album_desired, area_authoritative,
87 area_fully_enumerated, deletion_allowed, narrows_downloads, plan_album_artifacts,
88 plan_playlist_artifacts, reconcile,
89};
90pub use synced::{
91 PendingCheck, SYNCED_LRC_RECHECK_SECS, apply_synced_lrc, preview_synced_lrc,
92 synced_lyrics_targets,
93};
94pub use tag::{TrackMetadata, tag_flac, tag_mp3};
95pub use tag_alac::tag_alac;