Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei # Conflicts: # packages/adapters/src/tmdb/index.ts
75 lines
2.5 KiB
TypeScript
75 lines
2.5 KiB
TypeScript
import type { z } from "zod";
|
|
import { browserApi } from "./api/browser.ts";
|
|
import { contentApi } from "./api/content.ts";
|
|
import { episodeMappingApi } from "./api/episode-mapping.ts";
|
|
import { executionApi } from "./api/execution.ts";
|
|
import { instancesApi } from "./api/instances.ts";
|
|
import { libraryApi } from "./api/library.ts";
|
|
import { logsApi } from "./api/logs.ts";
|
|
import { opsApi } from "./api/ops.ts";
|
|
import { organizeApi } from "./api/organize.ts";
|
|
import { platformApi } from "./api/platform.ts";
|
|
import { reviewApi } from "./api/review.ts";
|
|
import { rulesApi } from "./api/rules.ts";
|
|
import { schedulesApi } from "./api/schedules.ts";
|
|
import { API_PREFIX, type EndpointDef } from "./api/shared.ts";
|
|
import { sourcesApi } from "./api/sources.ts";
|
|
import { subtitlesApi } from "./api/subtitles.ts";
|
|
import { systemApi } from "./api/system.ts";
|
|
|
|
export type { EndpointAuth, EndpointDef, HttpMethod } from "./api/shared.ts";
|
|
export {
|
|
API_PREFIX,
|
|
DecisionSummary,
|
|
DecisionSummaryGroup,
|
|
IdentityRevisionList,
|
|
OkResult,
|
|
ReleaseIdentityResult,
|
|
TaskAccepted,
|
|
} from "./api/shared.ts";
|
|
export * from "./discover.ts";
|
|
export * from "./search.ts";
|
|
|
|
// 所有 REST 端点的路径常量与请求/响应 schema 汇总,按领域分在 ./api/*.ts。
|
|
// 合并顺序即路由注册顺序(静态路径须先于同前缀的 {id} 路径),调整分组顺序前先看 server 的路由注册。
|
|
export const Api = {
|
|
...contentApi,
|
|
...instancesApi,
|
|
...sourcesApi,
|
|
...rulesApi,
|
|
...executionApi,
|
|
...reviewApi,
|
|
...opsApi,
|
|
...organizeApi,
|
|
...platformApi,
|
|
...systemApi,
|
|
...logsApi,
|
|
...libraryApi,
|
|
...browserApi,
|
|
...schedulesApi,
|
|
...subtitlesApi,
|
|
...episodeMappingApi,
|
|
} as const;
|
|
|
|
/** 用参数填充 `{name}` 路径占位,返回带 API_PREFIX 的完整路径 */
|
|
export function buildPath(path: string, params: Record<string, string> = {}): string {
|
|
const filled = path.replace(/\{(\w+)\}/g, (_, k: string) => {
|
|
const v = params[k];
|
|
if (v === undefined) throw new Error(`缺少路径参数 ${k}`);
|
|
return encodeURIComponent(v);
|
|
});
|
|
return `${API_PREFIX}${filled}`;
|
|
}
|
|
|
|
/** 扁平列出全部端点(生成 OpenAPI、权限表与测试用) */
|
|
export function listEndpoints(): EndpointDef[] {
|
|
return Object.values(Api).flatMap((group) => Object.values(group) as EndpointDef[]);
|
|
}
|
|
|
|
export type EndpointBody<E extends EndpointDef> = E["body"] extends z.ZodType ? z.input<E["body"]> : never;
|
|
export type EndpointResponse<E extends EndpointDef> = z.infer<E["response"]>;
|
|
|
|
export * from "./files.ts";
|
|
export * from "./mcp.ts";
|
|
export * from "./schedules.ts";
|