/** * Orbit — multi-user listen-together feature. * * This file is a re-export shim. Implementation lives under `utils/orbit/`: * * - `constants.ts` — cadence + TTL ms values. * - `helpers.ts` — pure utilities (id gen, serialisation, key fns). * - `stateMath.ts` — pure state transforms (shuffle, drift, sweep merge). * - `remote.ts` — Navidrome playlist comment I/O. * - `shareLink.ts` — invite magic-string encode/decode. * - `host.ts` — host session lifecycle (start, end, settings, enqueue). * - `moderation.ts` — host kicks / soft-removes / mutes. * - `guest.ts` — guest join/leave + suggestion pipeline + host * approve/decline reactions. * - `sweep.ts` — host-side outbox sweep loop. * - `cleanup.ts` — app-start orphan playlist sweep. * * Importers everywhere else in the codebase keep using `'../utils/orbit'`; * this shim re-exports every public symbol unchanged. */ export { ORBIT_HEARTBEAT_ALIVE_MS, ORBIT_ORPHAN_TTL_MS, ORBIT_REMOVED_TTL_MS, ORBIT_SHUFFLE_INTERVAL_MS, } from './orbit/constants'; export { generateSessionId, OrbitStateTooLarge, serialiseOrbitState, suggestionKey, } from './orbit/helpers'; export { isOrbitPlaybackSyncActive } from './orbit/sessionActive'; export { applyOutboxSnapshotsToState, computeOrbitDriftMs, effectiveShuffleIntervalMs, maybeShuffleQueue, patchOrbitState, } from './orbit/stateMath'; export { findSessionPlaylistId, readOrbitState, writeOrbitHeartbeat, writeOrbitState, } from './orbit/remote'; export { buildOrbitShareLink, parseOrbitShareLink, type OrbitShareLink, } from './orbit/shareLink'; export { endOrbitSession, hostEnqueueToOrbit, startOrbitSession, triggerOrbitShuffleNow, updateOrbitSettings, type StartOrbitArgs, } from './orbit/host'; export { kickOrbitParticipant, removeOrbitParticipant, setOrbitSuggestionBlocked, } from './orbit/moderation'; export { approveOrbitSuggestion, declineOrbitSuggestion, evaluateOrbitSuggestGate, joinOrbitSession, leaveOrbitSession, OrbitJoinError, OrbitSuggestBlockedError, suggestOrbitTrack, type OrbitSuggestGateReason, } from './orbit/guest'; export { sweepGuestOutboxes } from './orbit/sweep'; export { cleanupOrphanedOrbitPlaylists } from './orbit/cleanup';