sa2kit 1.0.0

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 (218) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +298 -0
  3. package/dist/AliyunOSSProvider-7JLMJDXK.js +15 -0
  4. package/dist/AliyunOSSProvider-7JLMJDXK.js.map +1 -0
  5. package/dist/AliyunOSSProvider-GQMSDJGZ.mjs +6 -0
  6. package/dist/AliyunOSSProvider-GQMSDJGZ.mjs.map +1 -0
  7. package/dist/LocalStorageProvider-FVLLHBHO.mjs +6 -0
  8. package/dist/LocalStorageProvider-FVLLHBHO.mjs.map +1 -0
  9. package/dist/LocalStorageProvider-NBNHHWLY.js +15 -0
  10. package/dist/LocalStorageProvider-NBNHHWLY.js.map +1 -0
  11. package/dist/analytics/index.d.mts +1084 -0
  12. package/dist/analytics/index.d.ts +1084 -0
  13. package/dist/analytics/index.js +2595 -0
  14. package/dist/analytics/index.js.map +1 -0
  15. package/dist/analytics/index.mjs +2518 -0
  16. package/dist/analytics/index.mjs.map +1 -0
  17. package/dist/analytics/server/index.d.mts +499 -0
  18. package/dist/analytics/server/index.d.ts +499 -0
  19. package/dist/analytics/server/index.js +529 -0
  20. package/dist/analytics/server/index.js.map +1 -0
  21. package/dist/analytics/server/index.mjs +525 -0
  22. package/dist/analytics/server/index.mjs.map +1 -0
  23. package/dist/auth/client/index.d.mts +104 -0
  24. package/dist/auth/client/index.d.ts +104 -0
  25. package/dist/auth/client/index.js +21 -0
  26. package/dist/auth/client/index.js.map +1 -0
  27. package/dist/auth/client/index.mjs +4 -0
  28. package/dist/auth/client/index.mjs.map +1 -0
  29. package/dist/auth/components/index.d.mts +82 -0
  30. package/dist/auth/components/index.d.ts +82 -0
  31. package/dist/auth/components/index.js +93 -0
  32. package/dist/auth/components/index.js.map +1 -0
  33. package/dist/auth/components/index.mjs +86 -0
  34. package/dist/auth/components/index.mjs.map +1 -0
  35. package/dist/auth/hooks/index.d.mts +2 -0
  36. package/dist/auth/hooks/index.d.ts +2 -0
  37. package/dist/auth/hooks/index.js +17 -0
  38. package/dist/auth/hooks/index.js.map +1 -0
  39. package/dist/auth/hooks/index.mjs +4 -0
  40. package/dist/auth/hooks/index.mjs.map +1 -0
  41. package/dist/auth/index.d.mts +15 -0
  42. package/dist/auth/index.d.ts +15 -0
  43. package/dist/auth/index.js +110 -0
  44. package/dist/auth/index.js.map +1 -0
  45. package/dist/auth/index.mjs +9 -0
  46. package/dist/auth/index.mjs.map +1 -0
  47. package/dist/auth/middleware/index.d.mts +75 -0
  48. package/dist/auth/middleware/index.d.ts +75 -0
  49. package/dist/auth/middleware/index.js +15 -0
  50. package/dist/auth/middleware/index.js.map +1 -0
  51. package/dist/auth/middleware/index.mjs +6 -0
  52. package/dist/auth/middleware/index.mjs.map +1 -0
  53. package/dist/auth/routes/index.d.mts +163 -0
  54. package/dist/auth/routes/index.d.ts +163 -0
  55. package/dist/auth/routes/index.js +27 -0
  56. package/dist/auth/routes/index.js.map +1 -0
  57. package/dist/auth/routes/index.mjs +6 -0
  58. package/dist/auth/routes/index.mjs.map +1 -0
  59. package/dist/auth/schema/index.d.mts +789 -0
  60. package/dist/auth/schema/index.d.ts +789 -0
  61. package/dist/auth/schema/index.js +41 -0
  62. package/dist/auth/schema/index.js.map +1 -0
  63. package/dist/auth/schema/index.mjs +4 -0
  64. package/dist/auth/schema/index.mjs.map +1 -0
  65. package/dist/auth/services/index.d.mts +47 -0
  66. package/dist/auth/services/index.d.ts +47 -0
  67. package/dist/auth/services/index.js +34 -0
  68. package/dist/auth/services/index.js.map +1 -0
  69. package/dist/auth/services/index.mjs +5 -0
  70. package/dist/auth/services/index.mjs.map +1 -0
  71. package/dist/chunk-3RFBUDRA.js +507 -0
  72. package/dist/chunk-3RFBUDRA.js.map +1 -0
  73. package/dist/chunk-3XG5OHFD.mjs +37 -0
  74. package/dist/chunk-3XG5OHFD.mjs.map +1 -0
  75. package/dist/chunk-6BL3AZGD.js +285 -0
  76. package/dist/chunk-6BL3AZGD.js.map +1 -0
  77. package/dist/chunk-6FNUWAIV.js +394 -0
  78. package/dist/chunk-6FNUWAIV.js.map +1 -0
  79. package/dist/chunk-6PRFP5EG.js +171 -0
  80. package/dist/chunk-6PRFP5EG.js.map +1 -0
  81. package/dist/chunk-6VHWOPRR.mjs +90 -0
  82. package/dist/chunk-6VHWOPRR.mjs.map +1 -0
  83. package/dist/chunk-AIKEVVDR.mjs +122 -0
  84. package/dist/chunk-AIKEVVDR.mjs.map +1 -0
  85. package/dist/chunk-APY57REU.js +300 -0
  86. package/dist/chunk-APY57REU.js.map +1 -0
  87. package/dist/chunk-BJTO5JO5.mjs +10 -0
  88. package/dist/chunk-BJTO5JO5.mjs.map +1 -0
  89. package/dist/chunk-C64RY2OW.mjs +295 -0
  90. package/dist/chunk-C64RY2OW.mjs.map +1 -0
  91. package/dist/chunk-DGUM43GV.js +12 -0
  92. package/dist/chunk-DGUM43GV.js.map +1 -0
  93. package/dist/chunk-FV3FNHQY.js +92 -0
  94. package/dist/chunk-FV3FNHQY.js.map +1 -0
  95. package/dist/chunk-GSTLV3MB.mjs +316 -0
  96. package/dist/chunk-GSTLV3MB.mjs.map +1 -0
  97. package/dist/chunk-HEMA7SWK.mjs +212 -0
  98. package/dist/chunk-HEMA7SWK.mjs.map +1 -0
  99. package/dist/chunk-HWJ34NL6.js +43 -0
  100. package/dist/chunk-HWJ34NL6.js.map +1 -0
  101. package/dist/chunk-HXFFYNIF.mjs +385 -0
  102. package/dist/chunk-HXFFYNIF.mjs.map +1 -0
  103. package/dist/chunk-KGRQNEIR.mjs +183 -0
  104. package/dist/chunk-KGRQNEIR.mjs.map +1 -0
  105. package/dist/chunk-KH6RQ4J5.js +28 -0
  106. package/dist/chunk-KH6RQ4J5.js.map +1 -0
  107. package/dist/chunk-KQGP6BTS.mjs +165 -0
  108. package/dist/chunk-KQGP6BTS.mjs.map +1 -0
  109. package/dist/chunk-NMF4ANIC.js +365 -0
  110. package/dist/chunk-NMF4ANIC.js.map +1 -0
  111. package/dist/chunk-O26VCNS3.js +216 -0
  112. package/dist/chunk-O26VCNS3.js.map +1 -0
  113. package/dist/chunk-OLHGZXN3.mjs +86 -0
  114. package/dist/chunk-OLHGZXN3.mjs.map +1 -0
  115. package/dist/chunk-QU5OT4DF.js +88 -0
  116. package/dist/chunk-QU5OT4DF.js.map +1 -0
  117. package/dist/chunk-RCNNVNLT.mjs +356 -0
  118. package/dist/chunk-RCNNVNLT.mjs.map +1 -0
  119. package/dist/chunk-ROEYW4A7.js +186 -0
  120. package/dist/chunk-ROEYW4A7.js.map +1 -0
  121. package/dist/chunk-SVWQN2LR.js +131 -0
  122. package/dist/chunk-SVWQN2LR.js.map +1 -0
  123. package/dist/chunk-TKCYPDWU.js +338 -0
  124. package/dist/chunk-TKCYPDWU.js.map +1 -0
  125. package/dist/chunk-U2L6V7KD.mjs +273 -0
  126. package/dist/chunk-U2L6V7KD.mjs.map +1 -0
  127. package/dist/chunk-YVBU7QDJ.mjs +505 -0
  128. package/dist/chunk-YVBU7QDJ.mjs.map +1 -0
  129. package/dist/chunk-ZGVB35L2.mjs +25 -0
  130. package/dist/chunk-ZGVB35L2.mjs.map +1 -0
  131. package/dist/config/index.d.mts +64 -0
  132. package/dist/config/index.d.ts +64 -0
  133. package/dist/config/index.js +136 -0
  134. package/dist/config/index.js.map +1 -0
  135. package/dist/config/index.mjs +128 -0
  136. package/dist/config/index.mjs.map +1 -0
  137. package/dist/drizzle-auth-service-Bxlovhv8.d.ts +145 -0
  138. package/dist/drizzle-auth-service-DZY2F1sv.d.mts +145 -0
  139. package/dist/enums-Dume-V5Y.d.mts +16 -0
  140. package/dist/enums-Dume-V5Y.d.ts +16 -0
  141. package/dist/i18n/index.d.mts +416 -0
  142. package/dist/i18n/index.d.ts +416 -0
  143. package/dist/i18n/index.js +671 -0
  144. package/dist/i18n/index.js.map +1 -0
  145. package/dist/i18n/index.mjs +650 -0
  146. package/dist/i18n/index.mjs.map +1 -0
  147. package/dist/index-8VoHap_4.d.mts +105 -0
  148. package/dist/index-8VoHap_4.d.ts +105 -0
  149. package/dist/index.d.mts +4 -0
  150. package/dist/index.d.ts +4 -0
  151. package/dist/index.js +84 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/index.mjs +7 -0
  154. package/dist/index.mjs.map +1 -0
  155. package/dist/logger/index.d.mts +125 -0
  156. package/dist/logger/index.d.ts +125 -0
  157. package/dist/logger/index.js +29 -0
  158. package/dist/logger/index.js.map +1 -0
  159. package/dist/logger/index.mjs +4 -0
  160. package/dist/logger/index.mjs.map +1 -0
  161. package/dist/request/index.d.mts +51 -0
  162. package/dist/request/index.d.ts +51 -0
  163. package/dist/request/index.js +85 -0
  164. package/dist/request/index.js.map +1 -0
  165. package/dist/request/index.mjs +82 -0
  166. package/dist/request/index.mjs.map +1 -0
  167. package/dist/storage/index.d.mts +74 -0
  168. package/dist/storage/index.d.ts +74 -0
  169. package/dist/storage/index.js +46 -0
  170. package/dist/storage/index.js.map +1 -0
  171. package/dist/storage/index.mjs +5 -0
  172. package/dist/storage/index.mjs.map +1 -0
  173. package/dist/types-BINlP9MK.d.mts +286 -0
  174. package/dist/types-BINlP9MK.d.ts +286 -0
  175. package/dist/types-BaZccpvk.d.mts +48 -0
  176. package/dist/types-BaZccpvk.d.ts +48 -0
  177. package/dist/types-CbTsi9CZ.d.mts +31 -0
  178. package/dist/types-CbTsi9CZ.d.ts +31 -0
  179. package/dist/types-CoGG1rNV.d.mts +258 -0
  180. package/dist/types-CoGG1rNV.d.ts +258 -0
  181. package/dist/types-DAxQ1MeY.d.ts +70 -0
  182. package/dist/types-DT8LVCvE.d.mts +70 -0
  183. package/dist/types-DW9qar-w.d.mts +52 -0
  184. package/dist/types-DW9qar-w.d.ts +52 -0
  185. package/dist/universalExport/index.d.mts +235 -0
  186. package/dist/universalExport/index.d.ts +235 -0
  187. package/dist/universalExport/index.js +621 -0
  188. package/dist/universalExport/index.js.map +1 -0
  189. package/dist/universalExport/index.mjs +580 -0
  190. package/dist/universalExport/index.mjs.map +1 -0
  191. package/dist/universalExport/server/index.d.mts +429 -0
  192. package/dist/universalExport/server/index.d.ts +429 -0
  193. package/dist/universalExport/server/index.js +263 -0
  194. package/dist/universalExport/server/index.js.map +1 -0
  195. package/dist/universalExport/server/index.mjs +242 -0
  196. package/dist/universalExport/server/index.mjs.map +1 -0
  197. package/dist/universalFile/index.d.mts +310 -0
  198. package/dist/universalFile/index.d.ts +310 -0
  199. package/dist/universalFile/index.js +811 -0
  200. package/dist/universalFile/index.js.map +1 -0
  201. package/dist/universalFile/index.mjs +736 -0
  202. package/dist/universalFile/index.mjs.map +1 -0
  203. package/dist/universalFile/server/index.d.mts +2428 -0
  204. package/dist/universalFile/server/index.d.ts +2428 -0
  205. package/dist/universalFile/server/index.js +4578 -0
  206. package/dist/universalFile/server/index.js.map +1 -0
  207. package/dist/universalFile/server/index.mjs +4518 -0
  208. package/dist/universalFile/server/index.mjs.map +1 -0
  209. package/dist/useElectronStorage-Dj0rcorG.d.mts +65 -0
  210. package/dist/useElectronStorage-DwnNfIhl.d.ts +65 -0
  211. package/dist/utils/index.d.mts +188 -0
  212. package/dist/utils/index.d.ts +188 -0
  213. package/dist/utils/index.js +42 -0
  214. package/dist/utils/index.js.map +1 -0
  215. package/dist/utils/index.mjs +5 -0
  216. package/dist/utils/index.mjs.map +1 -0
  217. package/package.json +220 -0
  218. package/tailwind.animations.js +34 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 请求配置接口
3
+ */
4
+ interface RequestConfig {
5
+ /** 请求 URL */
6
+ url: string;
7
+ /** HTTP 方法 */
8
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
9
+ /** 请求头 */
10
+ headers?: Record<string, string>;
11
+ /** 请求体 */
12
+ body?: any;
13
+ /** 查询参数 */
14
+ params?: Record<string, any>;
15
+ }
16
+ /**
17
+ * 请求适配器接口
18
+ * 用于抽象不同平台的网络请求实现
19
+ * - Mobile/Desktop: fetch API
20
+ * - Miniapp: Taro.request
21
+ */
22
+ interface RequestAdapter {
23
+ /**
24
+ * 发送 HTTP 请求
25
+ * @param config 请求配置
26
+ * @returns 响应数据
27
+ */
28
+ request<T = any>(config: RequestConfig): Promise<T>;
29
+ }
30
+
31
+ export type { RequestAdapter as R, RequestConfig as a };
@@ -0,0 +1,258 @@
1
+ /**
2
+ * 通用文件服务类型定义
3
+ *
4
+ * 定义了文件存储、上传、下载等核心接口和类型
5
+ */
6
+ /** 文件存储类型 */
7
+ type StorageType = 'local' | 'aliyun-oss' | 'aws-s3' | 'qcloud-cos';
8
+ /** CDN提供者类型 */
9
+ type CDNType = 'none' | 'aliyun-cdn' | 'aws-cloudfront' | 'qcloud-cdn';
10
+ /** 文件处理类型 */
11
+ type ProcessorType = 'image' | 'audio' | 'video' | 'document';
12
+ /** 文件上传状态 */
13
+ type UploadStatus = 'pending' | 'uploading' | 'processing' | 'completed' | 'failed';
14
+ /** 访问权限类型 */
15
+ type AccessPermission = 'public' | 'private' | 'authenticated' | 'owner-only';
16
+ /** 文件元数据基础接口 */
17
+ interface FileMetadata {
18
+ /** 文件ID */
19
+ id: string;
20
+ /** 原始文件名 */
21
+ originalName: string;
22
+ /** 存储文件名 */
23
+ storageName: string;
24
+ /** 文件大小(字节) */
25
+ size: number;
26
+ /** MIME类型 */
27
+ mimeType: string;
28
+ /** 文件扩展名 */
29
+ extension: string;
30
+ /** 文件哈希值 */
31
+ hash?: string;
32
+ /** 上传时间 */
33
+ uploadTime: Date;
34
+ /** 访问权限 */
35
+ permission: AccessPermission;
36
+ /** 上传者ID */
37
+ uploaderId: string;
38
+ /** 模块标识 */
39
+ moduleId: string;
40
+ /** 业务标识 */
41
+ businessId?: string;
42
+ /** 存储提供者 */
43
+ storageProvider: StorageType;
44
+ /** 存储路径 */
45
+ storagePath: string;
46
+ /** CDN URL */
47
+ cdnUrl?: string;
48
+ /** 访问次数 */
49
+ accessCount: number;
50
+ /** 最后访问时间 */
51
+ lastAccessTime?: Date;
52
+ /** 过期时间 */
53
+ expiresAt?: Date;
54
+ /** 自定义元数据 */
55
+ metadata?: Record<string, any>;
56
+ }
57
+ /** 上传文件信息(客户端使用) */
58
+ interface UploadFileInfo {
59
+ /** 文件对象 */
60
+ file: File;
61
+ /** 模块标识 */
62
+ moduleId: string;
63
+ /** 业务标识 */
64
+ businessId?: string;
65
+ /** 访问权限 */
66
+ permission?: AccessPermission;
67
+ /** 自定义存储路径 */
68
+ customPath?: string;
69
+ /** 自定义元数据 */
70
+ metadata?: Record<string, any>;
71
+ /** 是否需要处理 */
72
+ needsProcessing?: boolean;
73
+ /** 处理选项 */
74
+ processingOptions?: ProcessingOptions;
75
+ }
76
+ /** 文件处理选项基础接口 */
77
+ interface ProcessingOptions {
78
+ /** 处理器类型 */
79
+ type: ProcessorType;
80
+ /** 处理参数 */
81
+ params?: Record<string, any>;
82
+ }
83
+ /** 图片处理选项 */
84
+ interface ImageProcessingOptions extends ProcessingOptions {
85
+ type: 'image';
86
+ /** 压缩质量 0-100 */
87
+ quality?: number;
88
+ /** 目标宽度 */
89
+ width?: number;
90
+ /** 目标高度 */
91
+ height?: number;
92
+ /** 格式转换 */
93
+ format?: 'jpeg' | 'png' | 'webp' | 'avif';
94
+ /** 是否添加水印 */
95
+ watermark?: boolean;
96
+ /** 水印配置 */
97
+ watermarkOptions?: {
98
+ text?: string;
99
+ image?: string;
100
+ position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
101
+ opacity?: number;
102
+ };
103
+ }
104
+ /** 音频处理选项 */
105
+ interface AudioProcessingOptions extends ProcessingOptions {
106
+ type: 'audio';
107
+ /** 比特率 */
108
+ bitrate?: number;
109
+ /** 格式转换 */
110
+ format?: 'mp3' | 'wav' | 'ogg' | 'aac';
111
+ /** 采样率 */
112
+ sampleRate?: number;
113
+ /** 声道数 */
114
+ channels?: number;
115
+ }
116
+ /** 视频处理选项 */
117
+ interface VideoProcessingOptions extends ProcessingOptions {
118
+ type: 'video';
119
+ /** 视频质量 */
120
+ quality?: number;
121
+ /** 格式转换 */
122
+ format?: 'mp4' | 'avi' | 'mov' | 'webm';
123
+ /** 生成缩略图 */
124
+ generateThumbnail?: boolean;
125
+ /** 缩略图时间点(秒) */
126
+ thumbnailTime?: number;
127
+ }
128
+ /** 上传进度 */
129
+ interface UploadProgress {
130
+ /** 文件ID */
131
+ fileId: string;
132
+ /** 上传状态 */
133
+ status: UploadStatus;
134
+ /** 进度百分比(0-100) */
135
+ progress: number;
136
+ /** 已上传字节数 */
137
+ uploadedBytes: number;
138
+ /** 总字节数 */
139
+ totalBytes: number;
140
+ /** 上传速度(字节/秒) */
141
+ speed: number;
142
+ /** 剩余时间(秒) */
143
+ remainingTime: number;
144
+ /** 错误信息 */
145
+ error?: string;
146
+ }
147
+ /** 上传结果 */
148
+ interface UploadResult {
149
+ /** 是否成功 */
150
+ success: boolean;
151
+ /** 文件元数据 */
152
+ file?: FileMetadata;
153
+ /** 文件访问URL */
154
+ url?: string;
155
+ /** 错误信息 */
156
+ error?: string;
157
+ }
158
+ /** 文件查询选项 */
159
+ interface FileQueryOptions {
160
+ /** 模块标识 */
161
+ moduleId?: string;
162
+ /** 业务标识 */
163
+ businessId?: string;
164
+ /** 上传者ID */
165
+ uploaderId?: string;
166
+ /** MIME类型过滤 */
167
+ mimeType?: string;
168
+ /** 最小文件大小 */
169
+ minSize?: number;
170
+ /** 最大文件大小 */
171
+ maxSize?: number;
172
+ /** 开始时间 */
173
+ startTime?: Date;
174
+ /** 结束时间 */
175
+ endTime?: Date;
176
+ /** 搜索关键词 */
177
+ keyword?: string;
178
+ /** 标签 */
179
+ tags?: string[];
180
+ /** 排序字段 */
181
+ sortBy?: string;
182
+ /** 排序方向 */
183
+ sortOrder?: 'asc' | 'desc';
184
+ /** 页码 */
185
+ page?: number;
186
+ /** 每页数量 */
187
+ pageSize?: number;
188
+ }
189
+ /** 分页结果 */
190
+ interface PaginatedResult<T> {
191
+ /** 数据项 */
192
+ items: T[];
193
+ /** 总数 */
194
+ total: number;
195
+ /** 当前页码 */
196
+ page: number;
197
+ /** 每页数量 */
198
+ pageSize: number;
199
+ /** 总页数 */
200
+ totalPages: number;
201
+ /** 是否有下一页 */
202
+ hasNext: boolean;
203
+ /** 是否有上一页 */
204
+ hasPrev: boolean;
205
+ }
206
+ /** 批量操作结果 */
207
+ interface BatchOperationResult {
208
+ /** 成功数量 */
209
+ successCount: number;
210
+ /** 失败数量 */
211
+ failureCount: number;
212
+ /** 失败详情 */
213
+ failures: Array<{
214
+ fileId: string;
215
+ error: string;
216
+ }>;
217
+ }
218
+ /** 文件事件类型 */
219
+ type FileEventType = 'upload:start' | 'upload:progress' | 'upload:complete' | 'upload:error' | 'download:start' | 'download:complete' | 'download:error' | 'delete:complete' | 'processing:start' | 'processing:complete' | 'processing:error';
220
+ /** 文件事件 */
221
+ interface FileEvent {
222
+ /** 事件类型 */
223
+ type: FileEventType;
224
+ /** 文件ID */
225
+ fileId: string;
226
+ /** 事件时间 */
227
+ timestamp: Date;
228
+ /** 事件数据 */
229
+ data?: Record<string, any>;
230
+ /** 错误信息 */
231
+ error?: string;
232
+ }
233
+ /** 文件事件监听器 */
234
+ type FileEventListener = (event: FileEvent) => void | Promise<void>;
235
+ /** 文件服务基础异常 */
236
+ declare class FileServiceError extends Error {
237
+ readonly code: string;
238
+ readonly details?: Record<string, any> | undefined;
239
+ constructor(message: string, code: string, details?: Record<string, any> | undefined);
240
+ }
241
+ /** 文件上传错误 */
242
+ declare class FileUploadError extends FileServiceError {
243
+ constructor(message: string, details?: Record<string, any>);
244
+ }
245
+ /** 文件处理错误 */
246
+ declare class FileProcessingError extends FileServiceError {
247
+ constructor(message: string, details?: Record<string, any>);
248
+ }
249
+ /** 存储提供者错误 */
250
+ declare class StorageProviderError extends FileServiceError {
251
+ constructor(message: string, details?: Record<string, any>);
252
+ }
253
+ /** CDN提供者错误 */
254
+ declare class CDNProviderError extends FileServiceError {
255
+ constructor(message: string, details?: Record<string, any>);
256
+ }
257
+
258
+ export { type AccessPermission as A, type BatchOperationResult as B, CDNProviderError as C, type FileMetadata as F, type ImageProcessingOptions as I, type PaginatedResult as P, StorageProviderError as S, type UploadFileInfo as U, type VideoProcessingOptions as V, type UploadProgress as a, type FileQueryOptions as b, FileServiceError as c, FileUploadError as d, FileProcessingError as e, type StorageType as f, type CDNType as g, type ProcessorType as h, type UploadStatus as i, type ProcessingOptions as j, type AudioProcessingOptions as k, type UploadResult as l, type FileEventType as m, type FileEvent as n, type FileEventListener as o };
@@ -0,0 +1,258 @@
1
+ /**
2
+ * 通用文件服务类型定义
3
+ *
4
+ * 定义了文件存储、上传、下载等核心接口和类型
5
+ */
6
+ /** 文件存储类型 */
7
+ type StorageType = 'local' | 'aliyun-oss' | 'aws-s3' | 'qcloud-cos';
8
+ /** CDN提供者类型 */
9
+ type CDNType = 'none' | 'aliyun-cdn' | 'aws-cloudfront' | 'qcloud-cdn';
10
+ /** 文件处理类型 */
11
+ type ProcessorType = 'image' | 'audio' | 'video' | 'document';
12
+ /** 文件上传状态 */
13
+ type UploadStatus = 'pending' | 'uploading' | 'processing' | 'completed' | 'failed';
14
+ /** 访问权限类型 */
15
+ type AccessPermission = 'public' | 'private' | 'authenticated' | 'owner-only';
16
+ /** 文件元数据基础接口 */
17
+ interface FileMetadata {
18
+ /** 文件ID */
19
+ id: string;
20
+ /** 原始文件名 */
21
+ originalName: string;
22
+ /** 存储文件名 */
23
+ storageName: string;
24
+ /** 文件大小(字节) */
25
+ size: number;
26
+ /** MIME类型 */
27
+ mimeType: string;
28
+ /** 文件扩展名 */
29
+ extension: string;
30
+ /** 文件哈希值 */
31
+ hash?: string;
32
+ /** 上传时间 */
33
+ uploadTime: Date;
34
+ /** 访问权限 */
35
+ permission: AccessPermission;
36
+ /** 上传者ID */
37
+ uploaderId: string;
38
+ /** 模块标识 */
39
+ moduleId: string;
40
+ /** 业务标识 */
41
+ businessId?: string;
42
+ /** 存储提供者 */
43
+ storageProvider: StorageType;
44
+ /** 存储路径 */
45
+ storagePath: string;
46
+ /** CDN URL */
47
+ cdnUrl?: string;
48
+ /** 访问次数 */
49
+ accessCount: number;
50
+ /** 最后访问时间 */
51
+ lastAccessTime?: Date;
52
+ /** 过期时间 */
53
+ expiresAt?: Date;
54
+ /** 自定义元数据 */
55
+ metadata?: Record<string, any>;
56
+ }
57
+ /** 上传文件信息(客户端使用) */
58
+ interface UploadFileInfo {
59
+ /** 文件对象 */
60
+ file: File;
61
+ /** 模块标识 */
62
+ moduleId: string;
63
+ /** 业务标识 */
64
+ businessId?: string;
65
+ /** 访问权限 */
66
+ permission?: AccessPermission;
67
+ /** 自定义存储路径 */
68
+ customPath?: string;
69
+ /** 自定义元数据 */
70
+ metadata?: Record<string, any>;
71
+ /** 是否需要处理 */
72
+ needsProcessing?: boolean;
73
+ /** 处理选项 */
74
+ processingOptions?: ProcessingOptions;
75
+ }
76
+ /** 文件处理选项基础接口 */
77
+ interface ProcessingOptions {
78
+ /** 处理器类型 */
79
+ type: ProcessorType;
80
+ /** 处理参数 */
81
+ params?: Record<string, any>;
82
+ }
83
+ /** 图片处理选项 */
84
+ interface ImageProcessingOptions extends ProcessingOptions {
85
+ type: 'image';
86
+ /** 压缩质量 0-100 */
87
+ quality?: number;
88
+ /** 目标宽度 */
89
+ width?: number;
90
+ /** 目标高度 */
91
+ height?: number;
92
+ /** 格式转换 */
93
+ format?: 'jpeg' | 'png' | 'webp' | 'avif';
94
+ /** 是否添加水印 */
95
+ watermark?: boolean;
96
+ /** 水印配置 */
97
+ watermarkOptions?: {
98
+ text?: string;
99
+ image?: string;
100
+ position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
101
+ opacity?: number;
102
+ };
103
+ }
104
+ /** 音频处理选项 */
105
+ interface AudioProcessingOptions extends ProcessingOptions {
106
+ type: 'audio';
107
+ /** 比特率 */
108
+ bitrate?: number;
109
+ /** 格式转换 */
110
+ format?: 'mp3' | 'wav' | 'ogg' | 'aac';
111
+ /** 采样率 */
112
+ sampleRate?: number;
113
+ /** 声道数 */
114
+ channels?: number;
115
+ }
116
+ /** 视频处理选项 */
117
+ interface VideoProcessingOptions extends ProcessingOptions {
118
+ type: 'video';
119
+ /** 视频质量 */
120
+ quality?: number;
121
+ /** 格式转换 */
122
+ format?: 'mp4' | 'avi' | 'mov' | 'webm';
123
+ /** 生成缩略图 */
124
+ generateThumbnail?: boolean;
125
+ /** 缩略图时间点(秒) */
126
+ thumbnailTime?: number;
127
+ }
128
+ /** 上传进度 */
129
+ interface UploadProgress {
130
+ /** 文件ID */
131
+ fileId: string;
132
+ /** 上传状态 */
133
+ status: UploadStatus;
134
+ /** 进度百分比(0-100) */
135
+ progress: number;
136
+ /** 已上传字节数 */
137
+ uploadedBytes: number;
138
+ /** 总字节数 */
139
+ totalBytes: number;
140
+ /** 上传速度(字节/秒) */
141
+ speed: number;
142
+ /** 剩余时间(秒) */
143
+ remainingTime: number;
144
+ /** 错误信息 */
145
+ error?: string;
146
+ }
147
+ /** 上传结果 */
148
+ interface UploadResult {
149
+ /** 是否成功 */
150
+ success: boolean;
151
+ /** 文件元数据 */
152
+ file?: FileMetadata;
153
+ /** 文件访问URL */
154
+ url?: string;
155
+ /** 错误信息 */
156
+ error?: string;
157
+ }
158
+ /** 文件查询选项 */
159
+ interface FileQueryOptions {
160
+ /** 模块标识 */
161
+ moduleId?: string;
162
+ /** 业务标识 */
163
+ businessId?: string;
164
+ /** 上传者ID */
165
+ uploaderId?: string;
166
+ /** MIME类型过滤 */
167
+ mimeType?: string;
168
+ /** 最小文件大小 */
169
+ minSize?: number;
170
+ /** 最大文件大小 */
171
+ maxSize?: number;
172
+ /** 开始时间 */
173
+ startTime?: Date;
174
+ /** 结束时间 */
175
+ endTime?: Date;
176
+ /** 搜索关键词 */
177
+ keyword?: string;
178
+ /** 标签 */
179
+ tags?: string[];
180
+ /** 排序字段 */
181
+ sortBy?: string;
182
+ /** 排序方向 */
183
+ sortOrder?: 'asc' | 'desc';
184
+ /** 页码 */
185
+ page?: number;
186
+ /** 每页数量 */
187
+ pageSize?: number;
188
+ }
189
+ /** 分页结果 */
190
+ interface PaginatedResult<T> {
191
+ /** 数据项 */
192
+ items: T[];
193
+ /** 总数 */
194
+ total: number;
195
+ /** 当前页码 */
196
+ page: number;
197
+ /** 每页数量 */
198
+ pageSize: number;
199
+ /** 总页数 */
200
+ totalPages: number;
201
+ /** 是否有下一页 */
202
+ hasNext: boolean;
203
+ /** 是否有上一页 */
204
+ hasPrev: boolean;
205
+ }
206
+ /** 批量操作结果 */
207
+ interface BatchOperationResult {
208
+ /** 成功数量 */
209
+ successCount: number;
210
+ /** 失败数量 */
211
+ failureCount: number;
212
+ /** 失败详情 */
213
+ failures: Array<{
214
+ fileId: string;
215
+ error: string;
216
+ }>;
217
+ }
218
+ /** 文件事件类型 */
219
+ type FileEventType = 'upload:start' | 'upload:progress' | 'upload:complete' | 'upload:error' | 'download:start' | 'download:complete' | 'download:error' | 'delete:complete' | 'processing:start' | 'processing:complete' | 'processing:error';
220
+ /** 文件事件 */
221
+ interface FileEvent {
222
+ /** 事件类型 */
223
+ type: FileEventType;
224
+ /** 文件ID */
225
+ fileId: string;
226
+ /** 事件时间 */
227
+ timestamp: Date;
228
+ /** 事件数据 */
229
+ data?: Record<string, any>;
230
+ /** 错误信息 */
231
+ error?: string;
232
+ }
233
+ /** 文件事件监听器 */
234
+ type FileEventListener = (event: FileEvent) => void | Promise<void>;
235
+ /** 文件服务基础异常 */
236
+ declare class FileServiceError extends Error {
237
+ readonly code: string;
238
+ readonly details?: Record<string, any> | undefined;
239
+ constructor(message: string, code: string, details?: Record<string, any> | undefined);
240
+ }
241
+ /** 文件上传错误 */
242
+ declare class FileUploadError extends FileServiceError {
243
+ constructor(message: string, details?: Record<string, any>);
244
+ }
245
+ /** 文件处理错误 */
246
+ declare class FileProcessingError extends FileServiceError {
247
+ constructor(message: string, details?: Record<string, any>);
248
+ }
249
+ /** 存储提供者错误 */
250
+ declare class StorageProviderError extends FileServiceError {
251
+ constructor(message: string, details?: Record<string, any>);
252
+ }
253
+ /** CDN提供者错误 */
254
+ declare class CDNProviderError extends FileServiceError {
255
+ constructor(message: string, details?: Record<string, any>);
256
+ }
257
+
258
+ export { type AccessPermission as A, type BatchOperationResult as B, CDNProviderError as C, type FileMetadata as F, type ImageProcessingOptions as I, type PaginatedResult as P, StorageProviderError as S, type UploadFileInfo as U, type VideoProcessingOptions as V, type UploadProgress as a, type FileQueryOptions as b, FileServiceError as c, FileUploadError as d, FileProcessingError as e, type StorageType as f, type CDNType as g, type ProcessorType as h, type UploadStatus as i, type ProcessingOptions as j, type AudioProcessingOptions as k, type UploadResult as l, type FileEventType as m, type FileEvent as n, type FileEventListener as o };
@@ -0,0 +1,70 @@
1
+ import { U as User } from './types-DW9qar-w.js';
2
+
3
+ /**
4
+ * Auth Components - Types
5
+ * 组件类型定义
6
+ */
7
+
8
+ /**
9
+ * 登录表单状态
10
+ */
11
+ interface LoginFormState {
12
+ email: string;
13
+ password: string;
14
+ loading: boolean;
15
+ error: string | null;
16
+ handleEmailChange: (value: string) => void;
17
+ handlePasswordChange: (value: string) => void;
18
+ handleSubmit: (e?: React.FormEvent) => Promise<void>;
19
+ }
20
+ /**
21
+ * 注册表单状态
22
+ */
23
+ interface RegisterFormState {
24
+ email: string;
25
+ password: string;
26
+ username: string;
27
+ loading: boolean;
28
+ error: string | null;
29
+ handleEmailChange: (value: string) => void;
30
+ handlePasswordChange: (value: string) => void;
31
+ handleUsernameChange: (value: string) => void;
32
+ handleSubmit: (e?: React.FormEvent) => Promise<void>;
33
+ }
34
+ /**
35
+ * 表单基础属性
36
+ */
37
+ interface BaseFormProps {
38
+ /**
39
+ * API 客户端实例
40
+ */
41
+ apiClient: any;
42
+ /**
43
+ * 成功回调
44
+ */
45
+ onSuccess?: (user: User) => void;
46
+ /**
47
+ * 错误回调
48
+ */
49
+ onError?: (error: string) => void;
50
+ }
51
+ /**
52
+ * Headless 登录表单属性
53
+ */
54
+ interface HeadlessLoginFormProps extends BaseFormProps {
55
+ /**
56
+ * Render prop 函数
57
+ */
58
+ children: (state: LoginFormState) => React.ReactNode;
59
+ }
60
+ /**
61
+ * Headless 注册表单属性
62
+ */
63
+ interface HeadlessRegisterFormProps extends BaseFormProps {
64
+ /**
65
+ * Render prop 函数
66
+ */
67
+ children: (state: RegisterFormState) => React.ReactNode;
68
+ }
69
+
70
+ export type { BaseFormProps as B, HeadlessLoginFormProps as H, LoginFormState as L, RegisterFormState as R, HeadlessRegisterFormProps as a };
@@ -0,0 +1,70 @@
1
+ import { U as User } from './types-DW9qar-w.mjs';
2
+
3
+ /**
4
+ * Auth Components - Types
5
+ * 组件类型定义
6
+ */
7
+
8
+ /**
9
+ * 登录表单状态
10
+ */
11
+ interface LoginFormState {
12
+ email: string;
13
+ password: string;
14
+ loading: boolean;
15
+ error: string | null;
16
+ handleEmailChange: (value: string) => void;
17
+ handlePasswordChange: (value: string) => void;
18
+ handleSubmit: (e?: React.FormEvent) => Promise<void>;
19
+ }
20
+ /**
21
+ * 注册表单状态
22
+ */
23
+ interface RegisterFormState {
24
+ email: string;
25
+ password: string;
26
+ username: string;
27
+ loading: boolean;
28
+ error: string | null;
29
+ handleEmailChange: (value: string) => void;
30
+ handlePasswordChange: (value: string) => void;
31
+ handleUsernameChange: (value: string) => void;
32
+ handleSubmit: (e?: React.FormEvent) => Promise<void>;
33
+ }
34
+ /**
35
+ * 表单基础属性
36
+ */
37
+ interface BaseFormProps {
38
+ /**
39
+ * API 客户端实例
40
+ */
41
+ apiClient: any;
42
+ /**
43
+ * 成功回调
44
+ */
45
+ onSuccess?: (user: User) => void;
46
+ /**
47
+ * 错误回调
48
+ */
49
+ onError?: (error: string) => void;
50
+ }
51
+ /**
52
+ * Headless 登录表单属性
53
+ */
54
+ interface HeadlessLoginFormProps extends BaseFormProps {
55
+ /**
56
+ * Render prop 函数
57
+ */
58
+ children: (state: LoginFormState) => React.ReactNode;
59
+ }
60
+ /**
61
+ * Headless 注册表单属性
62
+ */
63
+ interface HeadlessRegisterFormProps extends BaseFormProps {
64
+ /**
65
+ * Render prop 函数
66
+ */
67
+ children: (state: RegisterFormState) => React.ReactNode;
68
+ }
69
+
70
+ export type { BaseFormProps as B, HeadlessLoginFormProps as H, LoginFormState as L, RegisterFormState as R, HeadlessRegisterFormProps as a };