sa2kit 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/README.md +1 -1
  2. package/dist/CollisionBalls-BpHufX3H.d.mts +41 -0
  3. package/dist/CollisionBalls-BpHufX3H.d.ts +41 -0
  4. package/dist/ConfigService-BxK06xP6.d.mts +262 -0
  5. package/dist/ConfigService-BxK06xP6.d.ts +262 -0
  6. package/dist/UniversalFileService-BpvbZitV.d.mts +139 -0
  7. package/dist/UniversalFileService-GsP6D3Rc.d.ts +139 -0
  8. package/dist/audioDetection/index.d.mts +449 -0
  9. package/dist/audioDetection/index.d.ts +449 -0
  10. package/dist/audioDetection/index.js +1244 -0
  11. package/dist/audioDetection/index.js.map +1 -0
  12. package/dist/audioDetection/index.mjs +1227 -0
  13. package/dist/audioDetection/index.mjs.map +1 -0
  14. package/dist/auth/legacy/core/index.d.mts +42 -0
  15. package/dist/auth/legacy/core/index.d.ts +42 -0
  16. package/dist/auth/legacy/core/index.js +242 -0
  17. package/dist/auth/legacy/core/index.js.map +1 -0
  18. package/dist/auth/legacy/core/index.mjs +226 -0
  19. package/dist/auth/legacy/core/index.mjs.map +1 -0
  20. package/dist/auth/legacy/db/index.d.mts +5 -0
  21. package/dist/auth/legacy/db/index.d.ts +5 -0
  22. package/dist/auth/legacy/db/index.js +261 -0
  23. package/dist/auth/legacy/db/index.js.map +1 -0
  24. package/dist/auth/legacy/db/index.mjs +250 -0
  25. package/dist/auth/legacy/db/index.mjs.map +1 -0
  26. package/dist/auth/legacy/index.d.mts +5 -0
  27. package/dist/auth/legacy/index.d.ts +5 -0
  28. package/dist/auth/legacy/index.js +1107 -0
  29. package/dist/auth/legacy/index.js.map +1 -0
  30. package/dist/auth/legacy/index.mjs +1086 -0
  31. package/dist/auth/legacy/index.mjs.map +1 -0
  32. package/dist/auth/legacy/logic/index.d.mts +9 -0
  33. package/dist/auth/legacy/logic/index.d.ts +9 -0
  34. package/dist/auth/legacy/logic/index.js +194 -0
  35. package/dist/auth/legacy/logic/index.js.map +1 -0
  36. package/dist/auth/legacy/logic/index.mjs +187 -0
  37. package/dist/auth/legacy/logic/index.mjs.map +1 -0
  38. package/dist/auth/legacy/miniapp/index.d.mts +5 -0
  39. package/dist/auth/legacy/miniapp/index.d.ts +5 -0
  40. package/dist/auth/legacy/miniapp/index.js +506 -0
  41. package/dist/auth/legacy/miniapp/index.js.map +1 -0
  42. package/dist/auth/legacy/miniapp/index.mjs +487 -0
  43. package/dist/auth/legacy/miniapp/index.mjs.map +1 -0
  44. package/dist/auth/legacy/routes/index.d.mts +53 -0
  45. package/dist/auth/legacy/routes/index.d.ts +53 -0
  46. package/dist/auth/legacy/routes/index.js +278 -0
  47. package/dist/auth/legacy/routes/index.js.map +1 -0
  48. package/dist/auth/legacy/routes/index.mjs +271 -0
  49. package/dist/auth/legacy/routes/index.mjs.map +1 -0
  50. package/dist/auth/legacy/schema/index.d.mts +401 -0
  51. package/dist/auth/legacy/schema/index.d.ts +401 -0
  52. package/dist/auth/legacy/schema/index.js +50 -0
  53. package/dist/auth/legacy/schema/index.js.map +1 -0
  54. package/dist/auth/legacy/schema/index.mjs +44 -0
  55. package/dist/auth/legacy/schema/index.mjs.map +1 -0
  56. package/dist/auth/legacy/server/index.d.mts +13 -0
  57. package/dist/auth/legacy/server/index.d.ts +13 -0
  58. package/dist/auth/legacy/server/index.js +21 -0
  59. package/dist/auth/legacy/server/index.js.map +1 -0
  60. package/dist/auth/legacy/server/index.mjs +19 -0
  61. package/dist/auth/legacy/server/index.mjs.map +1 -0
  62. package/dist/auth/legacy/services/index.d.mts +40 -0
  63. package/dist/auth/legacy/services/index.d.ts +40 -0
  64. package/dist/auth/legacy/services/index.js +258 -0
  65. package/dist/auth/legacy/services/index.js.map +1 -0
  66. package/dist/auth/legacy/services/index.mjs +252 -0
  67. package/dist/auth/legacy/services/index.mjs.map +1 -0
  68. package/dist/auth/legacy/ui/miniapp/index.d.mts +10 -0
  69. package/dist/auth/legacy/ui/miniapp/index.d.ts +10 -0
  70. package/dist/auth/legacy/ui/miniapp/index.js +298 -0
  71. package/dist/auth/legacy/ui/miniapp/index.js.map +1 -0
  72. package/dist/auth/legacy/ui/miniapp/index.mjs +290 -0
  73. package/dist/auth/legacy/ui/miniapp/index.mjs.map +1 -0
  74. package/dist/auth/legacy/ui/web/index.d.mts +22 -0
  75. package/dist/auth/legacy/ui/web/index.d.ts +22 -0
  76. package/dist/auth/legacy/ui/web/index.js +899 -0
  77. package/dist/auth/legacy/ui/web/index.js.map +1 -0
  78. package/dist/auth/legacy/ui/web/index.mjs +889 -0
  79. package/dist/auth/legacy/ui/web/index.mjs.map +1 -0
  80. package/dist/auth/legacy/web/index.d.mts +5 -0
  81. package/dist/auth/legacy/web/index.d.ts +5 -0
  82. package/dist/auth/legacy/web/index.js +1107 -0
  83. package/dist/auth/legacy/web/index.js.map +1 -0
  84. package/dist/auth/legacy/web/index.mjs +1086 -0
  85. package/dist/auth/legacy/web/index.mjs.map +1 -0
  86. package/dist/auth/rn/index.d.mts +64 -0
  87. package/dist/auth/rn/index.d.ts +64 -0
  88. package/dist/auth/rn/index.js +765 -0
  89. package/dist/auth/rn/index.js.map +1 -0
  90. package/dist/auth/rn/index.mjs +754 -0
  91. package/dist/auth/rn/index.mjs.map +1 -0
  92. package/dist/base-api-client-ACKKt13v.d.mts +277 -0
  93. package/dist/base-api-client-ACKKt13v.d.ts +277 -0
  94. package/dist/boothVaultService-Cn4WPhjg.d.mts +83 -0
  95. package/dist/boothVaultService-Cn4WPhjg.d.ts +83 -0
  96. package/dist/business/index.d.mts +6 -0
  97. package/dist/business/index.d.ts +6 -0
  98. package/dist/business/index.js +1682 -0
  99. package/dist/business/index.js.map +1 -0
  100. package/dist/business/index.mjs +1675 -0
  101. package/dist/business/index.mjs.map +1 -0
  102. package/dist/calendar/index.d.mts +1325 -0
  103. package/dist/calendar/index.d.ts +1325 -0
  104. package/dist/calendar/index.js +5964 -0
  105. package/dist/calendar/index.js.map +1 -0
  106. package/dist/calendar/index.mjs +5878 -0
  107. package/dist/calendar/index.mjs.map +1 -0
  108. package/dist/components/index.d.mts +405 -0
  109. package/dist/components/index.d.ts +405 -0
  110. package/dist/components/index.js +2516 -0
  111. package/dist/components/index.js.map +1 -0
  112. package/dist/components/index.mjs +2396 -0
  113. package/dist/components/index.mjs.map +1 -0
  114. package/dist/drizzle-schema-BNhqj2AZ.d.mts +1114 -0
  115. package/dist/drizzle-schema-BNhqj2AZ.d.ts +1114 -0
  116. package/dist/festivalCard/index.d.mts +75 -0
  117. package/dist/festivalCard/index.d.ts +75 -0
  118. package/dist/festivalCard/index.js +1492 -0
  119. package/dist/festivalCard/index.js.map +1 -0
  120. package/dist/festivalCard/index.mjs +1475 -0
  121. package/dist/festivalCard/index.mjs.map +1 -0
  122. package/dist/festivalCard/server/index.d.mts +120 -0
  123. package/dist/festivalCard/server/index.d.ts +120 -0
  124. package/dist/festivalCard/server/index.js +272 -0
  125. package/dist/festivalCard/server/index.js.map +1 -0
  126. package/dist/festivalCard/server/index.mjs +265 -0
  127. package/dist/festivalCard/server/index.mjs.map +1 -0
  128. package/dist/festivalCardService-CZomuQ4E.d.mts +80 -0
  129. package/dist/festivalCardService-CZomuQ4E.d.ts +80 -0
  130. package/dist/index-1Ag7IBXN.d.ts +144 -0
  131. package/dist/index-DNKZ7-R_.d.mts +184 -0
  132. package/dist/index-DNKZ7-R_.d.ts +184 -0
  133. package/dist/index-DSel44Ke.d.mts +93 -0
  134. package/dist/index-DSel44Ke.d.ts +93 -0
  135. package/dist/index-DdeZSeTJ.d.mts +144 -0
  136. package/dist/index-DrPcMJPc.d.mts +250 -0
  137. package/dist/index-DrPcMJPc.d.ts +250 -0
  138. package/dist/index.d.mts +5333 -0
  139. package/dist/index.d.ts +5333 -0
  140. package/dist/index.js +18809 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/index.mjs +18533 -0
  143. package/dist/index.mjs.map +1 -0
  144. package/dist/mikuContest/ui/web/index.d.mts +2 -0
  145. package/dist/mikuContest/ui/web/index.d.ts +2 -0
  146. package/dist/mikuContest/ui/web/index.js +353 -0
  147. package/dist/mikuContest/ui/web/index.js.map +1 -0
  148. package/dist/mikuContest/ui/web/index.mjs +343 -0
  149. package/dist/mikuContest/ui/web/index.mjs.map +1 -0
  150. package/dist/mikuFireworks3D/index.d.mts +268 -0
  151. package/dist/mikuFireworks3D/index.d.ts +268 -0
  152. package/dist/mikuFireworks3D/index.js +1267 -0
  153. package/dist/mikuFireworks3D/index.js.map +1 -0
  154. package/dist/mikuFireworks3D/index.mjs +1228 -0
  155. package/dist/mikuFireworks3D/index.mjs.map +1 -0
  156. package/dist/mikuFusionGame/index.d.mts +117 -0
  157. package/dist/mikuFusionGame/index.d.ts +117 -0
  158. package/dist/mikuFusionGame/index.js +1208 -0
  159. package/dist/mikuFusionGame/index.js.map +1 -0
  160. package/dist/mikuFusionGame/index.mjs +1195 -0
  161. package/dist/mikuFusionGame/index.mjs.map +1 -0
  162. package/dist/mmd/admin/index.d.mts +487 -0
  163. package/dist/mmd/admin/index.d.ts +487 -0
  164. package/dist/mmd/admin/index.js +1058 -0
  165. package/dist/mmd/admin/index.js.map +1 -0
  166. package/dist/mmd/admin/index.mjs +1027 -0
  167. package/dist/mmd/admin/index.mjs.map +1 -0
  168. package/dist/mmd/index.d.mts +2467 -0
  169. package/dist/mmd/index.d.ts +2467 -0
  170. package/dist/mmd/index.js +10119 -0
  171. package/dist/mmd/index.js.map +1 -0
  172. package/dist/mmd/index.mjs +10028 -0
  173. package/dist/mmd/index.mjs.map +1 -0
  174. package/dist/mmd/server/index.d.mts +139 -0
  175. package/dist/mmd/server/index.d.ts +139 -0
  176. package/dist/mmd/server/index.js +424 -0
  177. package/dist/mmd/server/index.js.map +1 -0
  178. package/dist/mmd/server/index.mjs +404 -0
  179. package/dist/mmd/server/index.mjs.map +1 -0
  180. package/dist/music/index.d.mts +74 -0
  181. package/dist/music/index.d.ts +74 -0
  182. package/dist/music/index.js +830 -0
  183. package/dist/music/index.js.map +1 -0
  184. package/dist/music/index.mjs +809 -0
  185. package/dist/music/index.mjs.map +1 -0
  186. package/dist/music/server/index.d.mts +1 -0
  187. package/dist/music/server/index.d.ts +1 -0
  188. package/dist/music/server/index.js +194 -0
  189. package/dist/music/server/index.js.map +1 -0
  190. package/dist/music/server/index.mjs +182 -0
  191. package/dist/music/server/index.mjs.map +1 -0
  192. package/dist/navigation/index.d.mts +93 -0
  193. package/dist/navigation/index.d.ts +93 -0
  194. package/dist/navigation/index.js +453 -0
  195. package/dist/navigation/index.js.map +1 -0
  196. package/dist/navigation/index.mjs +443 -0
  197. package/dist/navigation/index.mjs.map +1 -0
  198. package/dist/portfolio/index.d.mts +66 -0
  199. package/dist/portfolio/index.d.ts +66 -0
  200. package/dist/portfolio/index.js +736 -0
  201. package/dist/portfolio/index.js.map +1 -0
  202. package/dist/portfolio/index.mjs +724 -0
  203. package/dist/portfolio/index.mjs.map +1 -0
  204. package/dist/qqbot/server/index.d.mts +216 -0
  205. package/dist/qqbot/server/index.d.ts +216 -0
  206. package/dist/qqbot/server/index.js +394 -0
  207. package/dist/qqbot/server/index.js.map +1 -0
  208. package/dist/qqbot/server/index.mjs +385 -0
  209. package/dist/qqbot/server/index.mjs.map +1 -0
  210. package/dist/qqbot/ui/web/index.d.mts +10 -0
  211. package/dist/qqbot/ui/web/index.d.ts +10 -0
  212. package/dist/qqbot/ui/web/index.js +105 -0
  213. package/dist/qqbot/ui/web/index.js.map +1 -0
  214. package/dist/qqbot/ui/web/index.mjs +99 -0
  215. package/dist/qqbot/ui/web/index.mjs.map +1 -0
  216. package/dist/screenReceiver/index.d.mts +86 -0
  217. package/dist/screenReceiver/index.d.ts +86 -0
  218. package/dist/screenReceiver/index.js +281 -0
  219. package/dist/screenReceiver/index.js.map +1 -0
  220. package/dist/screenReceiver/index.mjs +273 -0
  221. package/dist/screenReceiver/index.mjs.map +1 -0
  222. package/dist/testYourself/admin/index.d.mts +58 -0
  223. package/dist/testYourself/admin/index.d.ts +58 -0
  224. package/dist/testYourself/admin/index.js +1009 -0
  225. package/dist/testYourself/admin/index.js.map +1 -0
  226. package/dist/testYourself/admin/index.mjs +1002 -0
  227. package/dist/testYourself/admin/index.mjs.map +1 -0
  228. package/dist/testYourself/index.d.mts +53 -0
  229. package/dist/testYourself/index.d.ts +53 -0
  230. package/dist/testYourself/index.js +2551 -0
  231. package/dist/testYourself/index.js.map +1 -0
  232. package/dist/testYourself/index.mjs +2531 -0
  233. package/dist/testYourself/index.mjs.map +1 -0
  234. package/dist/testYourself/server/index.d.mts +1029 -0
  235. package/dist/testYourself/server/index.d.ts +1029 -0
  236. package/dist/testYourself/server/index.js +825 -0
  237. package/dist/testYourself/server/index.js.map +1 -0
  238. package/dist/testYourself/server/index.mjs +816 -0
  239. package/dist/testYourself/server/index.mjs.map +1 -0
  240. package/dist/types-BTiaMsBz.d.mts +292 -0
  241. package/dist/types-DyG3ZV9V.d.mts +270 -0
  242. package/dist/types-DyG3ZV9V.d.ts +270 -0
  243. package/dist/types-ERmJyjx8.d.ts +292 -0
  244. package/dist/types-HorDyIRv.d.mts +303 -0
  245. package/dist/types-HorDyIRv.d.ts +303 -0
  246. package/dist/vocaloidBooth/index.d.mts +64 -0
  247. package/dist/vocaloidBooth/index.d.ts +64 -0
  248. package/dist/vocaloidBooth/index.js +376 -0
  249. package/dist/vocaloidBooth/index.js.map +1 -0
  250. package/dist/vocaloidBooth/index.mjs +362 -0
  251. package/dist/vocaloidBooth/index.mjs.map +1 -0
  252. package/dist/vocaloidBooth/server/index.d.mts +111 -0
  253. package/dist/vocaloidBooth/server/index.d.ts +111 -0
  254. package/dist/vocaloidBooth/server/index.js +247 -0
  255. package/dist/vocaloidBooth/server/index.js.map +1 -0
  256. package/dist/vocaloidBooth/server/index.mjs +237 -0
  257. package/dist/vocaloidBooth/server/index.mjs.map +1 -0
  258. package/dist/vocaloidBooth/web/index.d.mts +3 -0
  259. package/dist/vocaloidBooth/web/index.d.ts +3 -0
  260. package/dist/vocaloidBooth/web/index.js +376 -0
  261. package/dist/vocaloidBooth/web/index.js.map +1 -0
  262. package/dist/vocaloidBooth/web/index.mjs +362 -0
  263. package/dist/vocaloidBooth/web/index.mjs.map +1 -0
  264. package/package.json +1 -1
@@ -0,0 +1,292 @@
1
+ import { S as StorageType$1, C as CDNType$1, F as FileMetadata, A as AccessPermission, U as UploadStatus, P as ProcessorType$1, a as UploadFileInfo$1, b as ProcessingOptions$1 } from './types-DyG3ZV9V.js';
2
+
3
+ /**
4
+ * UniversalFile Server 端类型定义
5
+ */
6
+
7
+ type StorageType = StorageType$1;
8
+ type CDNType = CDNType$1;
9
+ type ProcessorType = ProcessorType$1;
10
+ type UploadFileInfo = UploadFileInfo$1;
11
+ type ProcessingOptions = ProcessingOptions$1;
12
+ /** 存储提供者接口 */
13
+ interface IStorageProvider {
14
+ /** 提供者类型 */
15
+ readonly type: StorageType;
16
+ /** 初始化 */
17
+ initialize(config: StorageConfig): Promise<void>;
18
+ /** 上传文件 */
19
+ upload(fileInfo: UploadFileInfo, path: string): Promise<StorageResult>;
20
+ /** 下载文件 */
21
+ download(path: string): Promise<Buffer>;
22
+ /** 删除文件 */
23
+ delete(path: string): Promise<StorageResult>;
24
+ /** 获取文件信息 */
25
+ getFileInfo(path: string): Promise<StorageResult>;
26
+ /** 生成访问URL */
27
+ getAccessUrl(path: string, expiresIn?: number): Promise<string>;
28
+ /** 生成预签名上传URL */
29
+ getUploadUrl(path: string, expiresIn?: number): Promise<string>;
30
+ /** 检查文件是否存在 */
31
+ exists(path: string): Promise<boolean>;
32
+ /** 列出文件 */
33
+ list(prefix: string, maxKeys?: number): Promise<string[]>;
34
+ }
35
+ /** CDN 提供者接口 */
36
+ interface ICDNProvider {
37
+ /** 提供者类型 */
38
+ readonly type: CDNType;
39
+ /** 初始化 */
40
+ initialize(config: CDNConfig): Promise<void>;
41
+ /** 生成CDN URL */
42
+ generateUrl(originalUrl: string): Promise<string>;
43
+ /** 刷新缓存 */
44
+ refreshCache(urls: string[]): Promise<CDNResult>;
45
+ /** 预热缓存 */
46
+ preheatCache(urls: string[]): Promise<CDNResult>;
47
+ /** 获取访问统计 */
48
+ getAccessStats(startTime: Date, endTime: Date): Promise<CDNResult>;
49
+ }
50
+ /** 文件处理器接口 */
51
+ interface IFileProcessor {
52
+ /** 处理器类型 */
53
+ readonly type: ProcessorType;
54
+ /** 初始化 */
55
+ initialize(): Promise<void>;
56
+ /** 处理文件 */
57
+ process(inputPath: string, outputPath: string, options: ProcessingOptions): Promise<ProcessingResult>;
58
+ /** 检查文件是否支持处理 */
59
+ supports(mimeType: string): boolean;
60
+ /** 获取文件信息 */
61
+ getFileInfo(filePath: string): Promise<Record<string, any>>;
62
+ }
63
+ /** 存储配置基础接口 */
64
+ interface StorageConfig {
65
+ /** 存储类型 */
66
+ type: StorageType;
67
+ /** 是否启用 */
68
+ enabled: boolean;
69
+ }
70
+ /** 阿里云 OSS 配置 */
71
+ interface AliyunOSSConfig extends StorageConfig {
72
+ type: 'aliyun-oss';
73
+ /** 地域 */
74
+ region: string;
75
+ /** 存储桶名称 */
76
+ bucket: string;
77
+ /** 访问密钥ID */
78
+ accessKeyId: string;
79
+ /** 访问密钥密码 */
80
+ accessKeySecret: string;
81
+ /** 自定义域名 */
82
+ customDomain?: string;
83
+ /** 是否使用HTTPS */
84
+ secure?: boolean;
85
+ /** 是否使用内网访问 */
86
+ internal?: boolean;
87
+ }
88
+ /** CDN配置基础接口 */
89
+ interface CDNConfig {
90
+ /** CDN类型 */
91
+ type: CDNType;
92
+ /** 是否启用 */
93
+ enabled: boolean;
94
+ }
95
+ /** 缓存配置 */
96
+ interface CacheConfig {
97
+ /** 是否启用缓存 */
98
+ enabled: boolean;
99
+ /** 最大缓存大小 */
100
+ maxSize?: number;
101
+ /** 缓存 TTL(秒) */
102
+ ttl?: number;
103
+ /** 是否使用 Redis */
104
+ useRedis?: boolean;
105
+ /** Redis 配置 */
106
+ redisConfig?: {
107
+ host: string;
108
+ port: number;
109
+ password?: string;
110
+ db?: number;
111
+ };
112
+ }
113
+ /** 文件服务配置 */
114
+ /** 缓存配置扩展 */
115
+ interface CacheConfig {
116
+ /** 是否启用缓存 */
117
+ enabled: boolean;
118
+ /** 元数据缓存TTL(秒) */
119
+ metadataTTL?: number;
120
+ /** URL缓存TTL(秒) */
121
+ urlTTL?: number;
122
+ /** 最大缓存条目数 */
123
+ maxSize?: number;
124
+ }
125
+ interface UniversalFileServiceConfig {
126
+ /** 存储配置 */
127
+ storage: StorageConfig;
128
+ /** CDN 配置(可选) */
129
+ cdn?: CDNConfig;
130
+ /** 缓存配置(可选) */
131
+ cache?: CacheConfig;
132
+ /** 数据库持久化配置(可选) */
133
+ persistence?: FileServicePersistenceConfig;
134
+ /** 启用的处理器 */
135
+ processors?: ProcessorType[];
136
+ /** 数据库连接(可选) @deprecated 使用 persistence.repository 代替 */
137
+ db?: any;
138
+ /** 最大文件大小(字节) */
139
+ maxFileSize?: number;
140
+ /** 允许的文件类型 */
141
+ allowedMimeTypes?: string[];
142
+ /** 是否启用监控 */
143
+ enableMonitoring?: boolean;
144
+ /** 存储提供者映射(内部使用) */
145
+ storageProviders?: Map<StorageType, IStorageProvider>;
146
+ /** 默认存储类型 */
147
+ defaultStorage?: StorageType;
148
+ /** 默认CDN类型 */
149
+ defaultCDN?: CDNType;
150
+ }
151
+ /** 存储结果 */
152
+ /** 存储操作结果 */
153
+ interface StorageResult {
154
+ /** 是否成功 */
155
+ success: boolean;
156
+ /** 存储路径 */
157
+ path?: string;
158
+ /** 访问URL */
159
+ url?: string;
160
+ /** 文件大小 */
161
+ size?: number;
162
+ /** 错误信息 */
163
+ error?: string;
164
+ /** 额外数据 */
165
+ data?: Record<string, any>;
166
+ }
167
+ /** CDN 结果 */
168
+ /** CDN操作结果 */
169
+ interface CDNResult {
170
+ /** 是否成功 */
171
+ success: boolean;
172
+ /** CDN URL */
173
+ url?: string;
174
+ /** 错误信息 */
175
+ error?: string;
176
+ /** 额外数据 */
177
+ data?: Record<string, any>;
178
+ }
179
+ /** 处理结果 */
180
+ interface ProcessingResult {
181
+ /** 是否成功 */
182
+ success: boolean;
183
+ /** 处理后的文件路径 */
184
+ processedPath?: string;
185
+ /** 处理后的文件大小 */
186
+ processedSize?: number;
187
+ /** 缩略图路径 */
188
+ thumbnailPath?: string;
189
+ /** 错误信息 */
190
+ error?: string;
191
+ /** 处理耗时(毫秒) */
192
+ processingTime?: number;
193
+ /** 额外数据 */
194
+ data?: Record<string, any>;
195
+ }
196
+ /** 文件查询选项 */
197
+ interface FileQueryOptions {
198
+ /** 模块 ID */
199
+ moduleId?: string;
200
+ /** 业务 ID */
201
+ businessId?: string;
202
+ /** 上传者 ID */
203
+ uploaderId?: string;
204
+ /** 文件类型 */
205
+ mimeType?: string;
206
+ /** 访问权限 */
207
+ permission?: AccessPermission;
208
+ /** 状态 */
209
+ status?: UploadStatus;
210
+ /** 分页 */
211
+ page?: number;
212
+ pageSize?: number;
213
+ /** 排序 */
214
+ orderBy?: string;
215
+ orderDirection?: 'asc' | 'desc';
216
+ }
217
+ /** 分页结果 */
218
+ interface PaginatedResult<T> {
219
+ /** 数据列表 */
220
+ items: T[];
221
+ /** 总数 */
222
+ total: number;
223
+ /** 当前页 */
224
+ page: number;
225
+ /** 每页大小 */
226
+ pageSize: number;
227
+ /** 总页数 */
228
+ totalPages: number;
229
+ }
230
+ /**
231
+ * 文件元数据数据库持久化接口
232
+ *
233
+ * 实现此接口以提供自定义的数据库持久化支持
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * // Drizzle ORM 实现
238
+ * class DrizzleFileRepository implements IFileMetadataRepository {
239
+ * async save(metadata: FileMetadata): Promise<void> {
240
+ * await db.insert(fileMetadata).values(metadata);
241
+ * }
242
+ * // ... 其他方法
243
+ * }
244
+ * ```
245
+ */
246
+ interface IFileMetadataRepository {
247
+ /**
248
+ * 保存文件元数据到数据库
249
+ */
250
+ save(metadata: FileMetadata): Promise<void>;
251
+ /**
252
+ * 从数据库获取文件元数据
253
+ */
254
+ get(fileId: string): Promise<FileMetadata | null>;
255
+ /**
256
+ * 查询文件列表
257
+ */
258
+ query(options: FileQueryOptions): Promise<PaginatedResult<FileMetadata>>;
259
+ /**
260
+ * 从数据库删除文件元数据
261
+ */
262
+ delete(fileId: string): Promise<void>;
263
+ /**
264
+ * 批量删除文件元数据
265
+ */
266
+ batchDelete(fileIds: string[]): Promise<void>;
267
+ }
268
+ /**
269
+ * 数据库持久化配置
270
+ */
271
+ interface FileServicePersistenceConfig {
272
+ /**
273
+ * 是否启用持久化
274
+ */
275
+ enabled: boolean;
276
+ /**
277
+ * 持久化仓储实现
278
+ */
279
+ repository: IFileMetadataRepository;
280
+ /**
281
+ * 是否自动持久化(默认 true)
282
+ * 如果为 true,文件上传完成后自动保存到数据库
283
+ */
284
+ autoPersist?: boolean;
285
+ /**
286
+ * 是否优先使用缓存(默认 false)
287
+ * 如果为 true,查询时优先从缓存获取
288
+ */
289
+ cacheFirst?: boolean;
290
+ }
291
+
292
+ export type { AliyunOSSConfig as A, IStorageProvider as I, UniversalFileServiceConfig as U, ICDNProvider as a, IFileProcessor as b };
@@ -0,0 +1,303 @@
1
+ import { Vector3 } from 'three';
2
+
3
+ /** MMD 资源配置 */
4
+ interface MMDResources {
5
+ /** 模型文件路径 (.pmx/.pmd) */
6
+ modelPath: string;
7
+ /** 动作文件路径 (.vmd) - 可选 */
8
+ motionPath?: string;
9
+ /** 相机动画路径 (.vmd) - 可选 */
10
+ cameraPath?: string;
11
+ /** 音频文件路径 - 可选 */
12
+ audioPath?: string;
13
+ /** 舞台/场景模型路径 (.pmx/.x) - 可选 */
14
+ stageModelPath?: string | string[];
15
+ /** 舞台/场景动作路径 (.vmd) - 可选 */
16
+ stageMotionPath?: string;
17
+ /** 附加动作文件 - 可选 */
18
+ additionalMotions?: string[];
19
+ }
20
+ /** 资源列表项 - 用于预设切换 */
21
+ interface MMDResourceItem {
22
+ id: string;
23
+ name: string;
24
+ resources: MMDResources;
25
+ thumbnail?: string;
26
+ description?: string;
27
+ }
28
+ /** 资源选项 - 用于自由组合 */
29
+ interface ResourceOption {
30
+ id: string;
31
+ name: string;
32
+ path: string;
33
+ thumbnail?: string;
34
+ }
35
+ interface MMDResourceOptions {
36
+ models: ResourceOption[];
37
+ motions: ResourceOption[];
38
+ cameras?: ResourceOption[];
39
+ audios?: ResourceOption[];
40
+ stages?: ResourceOption[];
41
+ }
42
+ /** 舞台/场景配置 */
43
+ interface MMDStage {
44
+ /** 背景颜色 */
45
+ backgroundColor?: string;
46
+ /** 背景图片 URL */
47
+ backgroundImage?: string;
48
+ /** 是否启用物理模拟 (默认 true) */
49
+ enablePhysics?: boolean;
50
+ /** 物理引擎路径 (ammo.wasm.js 的路径) */
51
+ physicsPath?: string;
52
+ /** 是否启用阴影 (默认 true) */
53
+ enableShadow?: boolean;
54
+ /** 环境光强度 (默认 0.5) */
55
+ ambientLightIntensity?: number;
56
+ /** 方向光强度 (默认 0.8) */
57
+ directionalLightIntensity?: number;
58
+ /** 方向光位置 (默认 { x: 0, y: 10, z: 0 }) */
59
+ directionalLightPosition?: {
60
+ x: number;
61
+ y: number;
62
+ z: number;
63
+ } | Vector3;
64
+ /** 半球光强度 (默认关闭,设置值以启用) */
65
+ hemisphereLightIntensity?: number;
66
+ /** 半球光天空颜色 (默认 0xffffff) */
67
+ hemisphereLightSkyColor?: string | number;
68
+ /** 半球光地面颜色 (默认 0x444444) */
69
+ hemisphereLightGroundColor?: string | number;
70
+ /** 侧面补光强度 (默认关闭,设置值以启用) */
71
+ sideLightIntensity?: number;
72
+ /** 侧面补光位置 (默认 { x: -3, y: 8, z: 8 }) */
73
+ sideLightPosition?: {
74
+ x: number;
75
+ y: number;
76
+ z: number;
77
+ } | Vector3;
78
+ /** 色调映射类型 (默认 'ACESFilmic') */
79
+ toneMapping?: 'None' | 'Linear' | 'Reinhard' | 'Cineon' | 'ACESFilmic';
80
+ /** 色调映射曝光度 (默认 1.0) */
81
+ toneMappingExposure?: number;
82
+ /** 相机初始位置 */
83
+ cameraPosition?: {
84
+ x: number;
85
+ y: number;
86
+ z: number;
87
+ } | Vector3;
88
+ /** 相机目标点 */
89
+ cameraTarget?: {
90
+ x: number;
91
+ y: number;
92
+ z: number;
93
+ } | Vector3;
94
+ /** 渲染特效模式 (默认 'default') */
95
+ renderEffect?: 'default' | 'outline';
96
+ /** 描边效果配置 */
97
+ outlineOptions?: OutlineOptions;
98
+ /** 材质自发光强度 (默认 0) */
99
+ emissiveIntensity?: number;
100
+ /** 颜色亮度系数 (默认 1.0) */
101
+ colorBrightness?: number;
102
+ /** 颜色饱和度系数 (默认 1.0) */
103
+ colorSaturation?: number;
104
+ /** 高光强度 Shininess (默认 30) */
105
+ shininess?: number;
106
+ /** 高光颜色强度 (默认 0.5) */
107
+ specularIntensity?: number;
108
+ /** 反射率 (默认 0.5) */
109
+ reflectivity?: number;
110
+ /** 金属度 PBR (默认 0) */
111
+ metalness?: number;
112
+ /** 粗糙度 PBR (默认 0.8) */
113
+ roughness?: number;
114
+ /** 环境光遮蔽强度 (默认 1.0) */
115
+ aoMapIntensity?: number;
116
+ /** 边缘光强度 (默认 0) */
117
+ rimLightIntensity?: number;
118
+ /** 边缘光颜色 (默认 '#ffffff') */
119
+ rimLightColor?: string;
120
+ /** 模型是否接收阴影 (默认 true) */
121
+ modelReceiveShadow?: boolean;
122
+ /** 阴影偏移 (默认 -0.0001) */
123
+ shadowBias?: number;
124
+ /**
125
+ * FX效果文件路径 (.fx文件,MME格式)
126
+ * 注意:
127
+ * - .fx 文件用于模型级效果(应用到人物模型)
128
+ * - .x 文件用于场景级渲染(渲染整个环境,包括模型)
129
+ * 如需同时使用多个效果,请使用 fxConfigs
130
+ */
131
+ fxPath?: string;
132
+ /** FX纹理基础路径 */
133
+ fxTexturePath?: string;
134
+ /**
135
+ * 多个FX效果配置(高级用法)
136
+ * 支持同时应用多个.fx和.x文件
137
+ */
138
+ fxConfigs?: Array<{
139
+ path: string;
140
+ texturePath?: string;
141
+ type?: 'fx' | 'x' | 'auto';
142
+ priority?: number;
143
+ target?: 'all' | 'model' | 'stage' | 'scene' | string[];
144
+ description?: string;
145
+ }>;
146
+ }
147
+ /** 移动端优化配置 */
148
+ interface MobileOptimization {
149
+ /** 是否启用优化 (默认 true) */
150
+ enabled: boolean;
151
+ /** 像素比 (默认 1.0, 桌面端通常为 window.devicePixelRatio) */
152
+ pixelRatio?: number;
153
+ /** 是否强制关闭物理引擎 (默认 false) */
154
+ disablePhysics?: boolean;
155
+ /** 是否降低阴影质量 (默认 true) */
156
+ reduceShadowQuality?: boolean;
157
+ }
158
+ /** 描边效果配置 */
159
+ interface OutlineOptions {
160
+ /** 是否启用描边 (默认 false) */
161
+ enabled?: boolean;
162
+ /** 描边粗细 (默认 0.003) */
163
+ thickness?: number;
164
+ /** 描边颜色 (默认 '#000000') */
165
+ color?: string;
166
+ }
167
+ /** MMDPlayerBase Ref 接口 */
168
+ interface MMDPlayerBaseRef {
169
+ /** 开始播放 */
170
+ play: () => void;
171
+ /** 暂停播放 */
172
+ pause: () => void;
173
+ /** 停止播放 (重置到开头) */
174
+ stop: () => void;
175
+ /** 跳转到指定时间 (秒) */
176
+ seek: (time: number) => void;
177
+ /** 获取当前播放时间 */
178
+ getCurrentTime: () => number;
179
+ /** 获取总时长 */
180
+ getDuration: () => number;
181
+ /** 获取播放状态 */
182
+ isPlaying: () => boolean;
183
+ /** 截图并返回 Base64 字符串 */
184
+ snapshot: () => string;
185
+ /** 重置相机到初始位置 */
186
+ resetCamera: () => void;
187
+ }
188
+ /** 基础播放器属性 */
189
+ interface MMDPlayerBaseProps {
190
+ /** 资源配置 */
191
+ resources: MMDResources;
192
+ /** 舞台配置 */
193
+ stage?: MMDStage;
194
+ /** 移动端优化配置 */
195
+ mobileOptimization?: MobileOptimization;
196
+ /** 播放控制 */
197
+ autoPlay?: boolean;
198
+ loop?: boolean;
199
+ volume?: number;
200
+ muted?: boolean;
201
+ /** 调试与辅助 */
202
+ showAxes?: boolean;
203
+ /** 渲染特效配置 */
204
+ renderEffect?: 'default' | 'outline';
205
+ /** 描边效果配置 */
206
+ outlineOptions?: OutlineOptions;
207
+ /** FX效果文件路径 */
208
+ fxPath?: string;
209
+ /** FX纹理基础路径 */
210
+ fxTexturePath?: string;
211
+ /** 多个FX效果配置(高级用法) */
212
+ fxConfigs?: Array<{
213
+ path: string;
214
+ texturePath?: string;
215
+ type?: 'fx' | 'x' | 'auto';
216
+ priority?: number;
217
+ target?: 'all' | 'model' | 'stage' | 'scene' | string[];
218
+ description?: string;
219
+ }>;
220
+ /** 事件回调 */
221
+ onLoad?: () => void;
222
+ onLoadProgress?: (progress: number, item: string) => void;
223
+ onError?: (error: Error) => void;
224
+ onPlay?: () => void;
225
+ onPause?: () => void;
226
+ onEnded?: () => void;
227
+ onTimeUpdate?: (time: number) => void;
228
+ onCameraChange?: (isManual: boolean) => void;
229
+ /** 样式 */
230
+ className?: string;
231
+ style?: React.CSSProperties;
232
+ }
233
+ /** 增强播放器属性 */
234
+ interface MMDPlayerEnhancedProps extends Omit<MMDPlayerBaseProps, 'resources'> {
235
+ /** 单一资源模式 */
236
+ resources?: MMDResources;
237
+ /** 列表模式资源 */
238
+ resourcesList?: MMDResourceItem[];
239
+ /** 自由组合模式选项 */
240
+ resourceOptions?: MMDResourceOptions;
241
+ /** 列表模式下的默认 ID */
242
+ defaultResourceId?: string;
243
+ /** 自由组合模式下的默认选择 */
244
+ defaultSelection?: {
245
+ modelId?: string;
246
+ motionId?: string;
247
+ cameraId?: string;
248
+ audioId?: string;
249
+ stageId?: string;
250
+ };
251
+ /** 是否显示调试信息面板 */
252
+ showDebugInfo?: boolean;
253
+ }
254
+ /** 播放列表节点 */
255
+ interface MMDPlaylistNode {
256
+ id: string;
257
+ name: string;
258
+ resources: MMDResources;
259
+ /** 节点特定的舞台配置(可选,覆盖全局配置) */
260
+ stage?: MMDStage;
261
+ /** 该节点是否循环播放 */
262
+ loop?: boolean;
263
+ /** 预计时长(秒)- 用于进度计算 */
264
+ duration?: number;
265
+ /** 缩略图 */
266
+ thumbnail?: string;
267
+ }
268
+ /** 播放列表配置 */
269
+ interface MMDPlaylistConfig {
270
+ id: string;
271
+ name: string;
272
+ nodes: MMDPlaylistNode[];
273
+ /** 整个播放列表是否循环 */
274
+ loop?: boolean;
275
+ /** 预加载策略
276
+ * - 'none': 不预加载 (默认)
277
+ * - 'next': 预加载下一个节点
278
+ * - 'all': 预加载所有节点
279
+ */
280
+ preload?: 'none' | 'next' | 'all';
281
+ /** 是否自动播放 */
282
+ autoPlay?: boolean;
283
+ }
284
+ /** 播放列表组件属性 */
285
+ interface MMDPlaylistProps {
286
+ /** 播放列表配置 */
287
+ playlist: MMDPlaylistConfig;
288
+ /** 舞台配置 */
289
+ stage?: MMDStage;
290
+ /** 移动端优化配置 */
291
+ mobileOptimization?: MobileOptimization;
292
+ /** 事件回调 */
293
+ onNodeChange?: (node: MMDPlaylistNode, index: number) => void;
294
+ onPlaylistComplete?: () => void;
295
+ onError?: (error: Error) => void;
296
+ /** 是否显示调试信息面板 */
297
+ showDebugInfo?: boolean;
298
+ /** 样式 */
299
+ className?: string;
300
+ style?: React.CSSProperties;
301
+ }
302
+
303
+ export type { MMDPlaylistConfig as M, OutlineOptions as O, ResourceOption as R, MMDResourceItem as a, MMDPlaylistNode as b, MMDResourceOptions as c, MMDResources as d, MMDPlayerBaseProps as e, MMDPlayerBaseRef as f, MMDPlayerEnhancedProps as g, MMDPlaylistProps as h, MMDStage as i, MobileOptimization as j };