Files is the one library: every done file, the ones shared with me, or one folder's, picked in a side rail (sources, own folders, the storage meter) and mirrored to ?folder=. One table with every kind of value in its own column; Copy link, Share and Save in sight, every action on a right click: play, cut, rename in the row, move to an own folder or back home, keep, details, re-download, delete. The Downloads page keeps only the queue until the tray replaces it. The old /api/downloads library routes are gone: list shared, upload, the details PATCH, delete, the file and the usage now live under /api/files, and a listed file says which source it came from. The job's "expired" flag is gone with the state it described.
89 lines
3.1 KiB
TypeScript
89 lines
3.1 KiB
TypeScript
// The API façade. This file owns NO endpoint logic and NO types of its own — every domain lives in
|
|
// its own api/<domain>.ts module (types + method slice together). This barrel only:
|
|
// 1. re-exports the shared HTTP machinery from api/core,
|
|
// 2. re-exports each domain's TYPES (`export type *`) so consumers import them from "./api"
|
|
// unchanged,
|
|
// 3. spreads each domain's method slice into the single `api` object consumers call.
|
|
// A new endpoint therefore has nowhere to land except a domain module — the interleave that
|
|
// motivated the split cannot re-grow here. (lib/api/facade.test.ts guards that invariant.)
|
|
import { getActiveAccount, HttpError, setActiveAccount, setUnauthorizedHandler } from "./api/core";
|
|
|
|
// Re-export the shared HTTP machinery so consumers keep importing these from "./api" unchanged.
|
|
export { HttpError, getActiveAccount, setActiveAccount, setUnauthorizedHandler };
|
|
|
|
import { accountApi } from "./api/account";
|
|
export type * from "./api/account";
|
|
import { authApi } from "./api/auth";
|
|
export type * from "./api/auth";
|
|
export { loginBlocked, deadResetLink } from "./api/auth";
|
|
import { setupApi } from "./api/setup";
|
|
export type * from "./api/setup";
|
|
import { feedApi } from "./api/feed";
|
|
export type * from "./api/feed";
|
|
import { discoverApi } from "./api/discover";
|
|
export type * from "./api/discover";
|
|
export { DISCOVER_BUDGETS, HERO_TIERS, discoverCardKey } from "./api/discover";
|
|
export type * from "./api/tagModes";
|
|
export {
|
|
DEFAULT_TAG_MODES,
|
|
TAG_CATEGORIES,
|
|
NO_TAG_SENTINEL,
|
|
coerceTagModes,
|
|
coerceUntagged,
|
|
} from "./api/tagModes";
|
|
import { channelsApi } from "./api/channels";
|
|
export type * from "./api/channels";
|
|
import { syncApi } from "./api/sync";
|
|
export type * from "./api/sync";
|
|
import { playlistsApi } from "./api/playlists";
|
|
export type * from "./api/playlists";
|
|
import { tagsApi } from "./api/tags";
|
|
export type * from "./api/tags";
|
|
import { notificationsApi } from "./api/notifications";
|
|
export type * from "./api/notifications";
|
|
import { savedViewsApi } from "./api/savedViews";
|
|
export type * from "./api/savedViews";
|
|
import { quotaApi } from "./api/quota";
|
|
export type * from "./api/quota";
|
|
import { adminApi } from "./api/admin";
|
|
export type * from "./api/admin";
|
|
import { plexApi } from "./api/plex";
|
|
export type * from "./api/plex";
|
|
export {
|
|
EMPTY_PLEX_FILTERS,
|
|
plexFilterCount,
|
|
coercePlexFilters,
|
|
plexFiltersSignature,
|
|
plexFiltersToParams,
|
|
parsePlexFilters,
|
|
isIntrinsicReadOnly,
|
|
} from "./api/plex";
|
|
import { downloadsApi } from "./api/downloads";
|
|
export type * from "./api/downloads";
|
|
import { filesApi } from "./api/files";
|
|
export type * from "./api/files";
|
|
import { debugSessionsApi, diagnosticsApi } from "./api/diagnostics";
|
|
export type * from "./api/diagnostics";
|
|
export { DIAGNOSTICS_EVENTS_PATH } from "./api/diagnostics";
|
|
|
|
export const api = {
|
|
...accountApi,
|
|
...authApi,
|
|
...setupApi,
|
|
...feedApi,
|
|
...discoverApi,
|
|
...channelsApi,
|
|
...syncApi,
|
|
...playlistsApi,
|
|
...tagsApi,
|
|
...notificationsApi,
|
|
...savedViewsApi,
|
|
...quotaApi,
|
|
...adminApi,
|
|
...plexApi,
|
|
...downloadsApi,
|
|
...filesApi,
|
|
...diagnosticsApi,
|
|
...debugSessionsApi,
|
|
};
|