-
Notifications
You must be signed in to change notification settings - Fork 295
Expand file tree
/
Copy pathindex.js
More file actions
86 lines (82 loc) · 3.47 KB
/
index.js
File metadata and controls
86 lines (82 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/**
* 控制器路由注册模块
* 统一管理和注册所有控制器路由
* 提供应用程序的所有API端点和功能模块
*/
import formBody from '@fastify/formbody';
import websocket from '@fastify/websocket';
// 懒加载辅助函数
const lazyRegister = (fastify, importFn, options) => {
fastify.register(async (instance, opts) => {
const module = await importFn();
const plugin = module.default || module;
// 使用传入的 options (全局配置)
await instance.register(plugin, options);
});
};
/**
* 注册所有路由控制器
* 将各个功能模块的路由注册到Fastify实例中
* @param {Object} fastify - Fastify应用实例
* @param {Object} options - 路由配置选项
*/
export const registerRoutes = (fastify, options) => {
// 注册插件以支持 application/x-www-form-urlencoded
fastify.register(formBody);
// 注册WebSocket插件
fastify.register(websocket);
// WebSocket实时日志控制器-最早引入才能全局拦截console日志
lazyRegister(fastify, () => import('./websocket.js'), options);
// 静态文件服务控制器
lazyRegister(fastify, () => import('./static.js'), options);
// 文档服务控制器
lazyRegister(fastify, () => import('./docs.js'), options);
// 配置管理控制器
lazyRegister(fastify, () => import('./config.js'), options);
// API接口控制器
lazyRegister(fastify, () => import('./api.js'), options);
// 媒体代理控制器
lazyRegister(fastify, () => import('./mediaProxy.js'), options);
// 根路径控制器
lazyRegister(fastify, () => import('./root.js'), options);
// 编码器控制器
lazyRegister(fastify, () => import('./encoder.js'), options);
// 解码器控制器
lazyRegister(fastify, () => import('./decoder.js'), options);
// 认证编码控制器
lazyRegister(fastify, () => import('./authcoder.js'), options);
// Web界面控制器
lazyRegister(fastify, () => import('./web.js'), options);
// HTTP请求控制器
lazyRegister(fastify, () => import('./http.js'), options);
// 剪贴板推送控制器
lazyRegister(fastify, () => import('./clipboard-pusher.js'), options);
// 任务控制器(已注释)
// lazyRegister(fastify, () => import('./tasker.js'), options);
// 定时任务控制器
lazyRegister(fastify, () => import('./cron-tasker.js'), options);
// 源检查控制器
lazyRegister(fastify, () => import('./source-checker.js'), options);
// 图片存储控制器
lazyRegister(fastify, () => import('./image-store.js'), options);
// WebDAV 代理控制器
lazyRegister(fastify, () => import('./webdav-proxy.js'), options);
// FTP 代理控制器
lazyRegister(fastify, () => import('./ftp-proxy.js'), options);
// 文件代理控制器
lazyRegister(fastify, () => import('./file-proxy.js'), options);
lazyRegister(fastify, () => import('./m3u8-proxy.js'), options);
// 注册统一代理路由
lazyRegister(fastify, () => import('./unified-proxy.js'), options);
// 注册GitHub Release路由
lazyRegister(fastify, () => import('./github.js'), options);
};
/**
* 注册弹幕路由控制器
* 将弹幕功能模块的路由注册到Fastify实例中
* @param {Object} wsApp - Ws实时弹幕预览应用实例
* @param {Object} options - 路由配置选项
*/
export const registerWsRoutes = (wsApp, options) => {
lazyRegister(wsApp, () => import("./websocketServer.js"), options);
}