sa2kit 3.0.0 → 3.1.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 (198) hide show
  1. package/dist/ai/llm/ui/miniapp/index.d.mts +2 -2
  2. package/dist/ai/llm/ui/miniapp/index.d.ts +2 -2
  3. package/dist/ai/llm/ui/rn/index.d.mts +2 -2
  4. package/dist/ai/llm/ui/rn/index.d.ts +2 -2
  5. package/dist/ai/llm/ui/web/index.d.mts +3 -3
  6. package/dist/ai/llm/ui/web/index.d.ts +3 -3
  7. package/dist/analytics/index.d.mts +1 -1
  8. package/dist/analytics/index.d.ts +1 -1
  9. package/dist/{chunk-QP5N3ER6.js → chunk-3CSCIRQY.js} +5 -6
  10. package/dist/chunk-3CSCIRQY.js.map +1 -0
  11. package/dist/{chunk-RJP2BRJD.mjs → chunk-4OOANEJV.mjs} +2 -2
  12. package/dist/{chunk-RJP2BRJD.mjs.map → chunk-4OOANEJV.mjs.map} +1 -1
  13. package/dist/chunk-5FUAQLGC.mjs +14 -0
  14. package/dist/chunk-5FUAQLGC.mjs.map +1 -0
  15. package/dist/{chunk-S732H246.js → chunk-6PMXAK7F.js} +2 -2
  16. package/dist/{chunk-S732H246.js.map → chunk-6PMXAK7F.js.map} +1 -1
  17. package/dist/chunk-6YLCRWKM.mjs +8 -0
  18. package/dist/chunk-6YLCRWKM.mjs.map +1 -0
  19. package/dist/{chunk-IBWDBBX5.mjs → chunk-7B5SI4OF.mjs} +3 -4
  20. package/dist/chunk-7B5SI4OF.mjs.map +1 -0
  21. package/dist/chunk-EQXPL7TN.mjs +78 -0
  22. package/dist/chunk-EQXPL7TN.mjs.map +1 -0
  23. package/dist/{chunk-GQZHGSRR.js → chunk-GSNGCENJ.js} +39 -2
  24. package/dist/chunk-GSNGCENJ.js.map +1 -0
  25. package/dist/chunk-HQLKOXG7.js +16 -0
  26. package/dist/chunk-HQLKOXG7.js.map +1 -0
  27. package/dist/{chunk-S3PUP7N4.js → chunk-PA4ELVGI.js} +2 -2
  28. package/dist/{chunk-S3PUP7N4.js.map → chunk-PA4ELVGI.js.map} +1 -1
  29. package/dist/{chunk-WZDTNDYR.js → chunk-QSKLQX6H.js} +11 -11
  30. package/dist/{chunk-WZDTNDYR.js.map → chunk-QSKLQX6H.js.map} +1 -1
  31. package/dist/{chunk-LHJKLUM7.mjs → chunk-TNJ6LYX7.mjs} +2 -2
  32. package/dist/{chunk-LHJKLUM7.mjs.map → chunk-TNJ6LYX7.mjs.map} +1 -1
  33. package/dist/{chunk-J77KR2EV.mjs → chunk-WJ7IMUEJ.mjs} +3 -3
  34. package/dist/{chunk-J77KR2EV.mjs.map → chunk-WJ7IMUEJ.mjs.map} +1 -1
  35. package/dist/chunk-YTGUIRRH.js +10 -0
  36. package/dist/chunk-YTGUIRRH.js.map +1 -0
  37. package/dist/common/auth/client/index.d.mts +1 -31
  38. package/dist/common/auth/client/index.d.ts +1 -31
  39. package/dist/common/auth/client/index.js +2 -15
  40. package/dist/common/auth/client/index.mjs +1 -2
  41. package/dist/common/auth/components/index.d.mts +14 -248
  42. package/dist/common/auth/components/index.d.ts +14 -248
  43. package/dist/common/auth/components/index.js +878 -49
  44. package/dist/common/auth/components/index.js.map +1 -1
  45. package/dist/common/auth/components/index.mjs +871 -5
  46. package/dist/common/auth/components/index.mjs.map +1 -1
  47. package/dist/common/auth/hooks/index.d.mts +2 -29
  48. package/dist/common/auth/hooks/index.d.ts +2 -29
  49. package/dist/common/auth/hooks/index.js +2 -11
  50. package/dist/common/auth/hooks/index.mjs +1 -2
  51. package/dist/common/auth/index.d.mts +5 -9
  52. package/dist/common/auth/index.d.ts +5 -9
  53. package/dist/common/auth/index.js +7 -28
  54. package/dist/common/auth/index.mjs +3 -4
  55. package/dist/common/auth/react/index.d.mts +3 -3
  56. package/dist/common/auth/react/index.d.ts +3 -3
  57. package/dist/common/auth/rn/index.d.mts +3 -19
  58. package/dist/common/auth/rn/index.d.ts +3 -19
  59. package/dist/common/auth/rn/index.js +0 -32
  60. package/dist/common/auth/rn/index.js.map +1 -1
  61. package/dist/common/auth/rn/index.mjs +1 -30
  62. package/dist/common/auth/rn/index.mjs.map +1 -1
  63. package/dist/common/auth/server/index.d.mts +81 -2
  64. package/dist/common/auth/server/index.d.ts +81 -2
  65. package/dist/common/auth/server/index.js +128 -37
  66. package/dist/common/auth/server/index.js.map +1 -1
  67. package/dist/common/auth/server/index.mjs +124 -1
  68. package/dist/common/auth/server/index.mjs.map +1 -1
  69. package/dist/common/auth/services/index.js +12 -9
  70. package/dist/common/auth/services/index.js.map +1 -1
  71. package/dist/common/auth/services/index.mjs +10 -1
  72. package/dist/common/auth/services/index.mjs.map +1 -1
  73. package/dist/common/file/server/index.js +32 -32
  74. package/dist/common/file/server/index.mjs +3 -3
  75. package/dist/common/index.d.mts +5 -8
  76. package/dist/common/index.d.ts +5 -8
  77. package/dist/common/index.js +12 -14
  78. package/dist/common/index.mjs +6 -8
  79. package/dist/common/request/index.js +4 -5
  80. package/dist/common/request/index.mjs +2 -3
  81. package/dist/i18n/index.d.mts +1 -1
  82. package/dist/i18n/index.d.ts +1 -1
  83. package/dist/imageCrop/index.d.mts +3 -3
  84. package/dist/imageCrop/index.d.ts +3 -3
  85. package/dist/index-Bd7cKF1j.d.mts +50 -0
  86. package/dist/{index-CLB80GCP.d.ts → index-D0cqaQEH.d.mts} +5 -5
  87. package/dist/{index-CLB80GCP.d.mts → index-D0cqaQEH.d.ts} +5 -5
  88. package/dist/index-DRQxtCDw.d.ts +50 -0
  89. package/dist/{index-BxZauNN_.d.mts → index-DoUo8IrU.d.mts} +8 -8
  90. package/dist/{index-BxZauNN_.d.ts → index-DoUo8IrU.d.ts} +8 -8
  91. package/dist/index.d.mts +152 -131
  92. package/dist/index.d.ts +152 -131
  93. package/dist/index.js +105 -554
  94. package/dist/index.js.map +1 -1
  95. package/dist/index.mjs +106 -555
  96. package/dist/index.mjs.map +1 -1
  97. package/dist/ossFile/server/index.js +32 -32
  98. package/dist/ossFile/server/index.mjs +3 -3
  99. package/dist/request/index.js +3 -4
  100. package/dist/request/index.mjs +1 -2
  101. package/dist/universalExport/index.d.mts +3 -3
  102. package/dist/universalExport/index.d.ts +3 -3
  103. package/dist/universalFile/index.d.mts +5 -5
  104. package/dist/universalFile/index.d.ts +5 -5
  105. package/dist/universalFile/server/index.js +62 -62
  106. package/dist/universalFile/server/index.mjs +2 -2
  107. package/package.json +1 -36
  108. package/dist/auth/client/index.d.mts +0 -13
  109. package/dist/auth/client/index.d.ts +0 -13
  110. package/dist/auth/client/index.js +0 -26
  111. package/dist/auth/client/index.js.map +0 -1
  112. package/dist/auth/client/index.mjs +0 -5
  113. package/dist/auth/client/index.mjs.map +0 -1
  114. package/dist/auth/components/index.d.mts +0 -10
  115. package/dist/auth/components/index.d.ts +0 -10
  116. package/dist/auth/components/index.js +0 -70
  117. package/dist/auth/components/index.js.map +0 -1
  118. package/dist/auth/components/index.mjs +0 -9
  119. package/dist/auth/components/index.mjs.map +0 -1
  120. package/dist/auth/hooks/index.d.mts +0 -13
  121. package/dist/auth/hooks/index.d.ts +0 -13
  122. package/dist/auth/hooks/index.js +0 -28
  123. package/dist/auth/hooks/index.js.map +0 -1
  124. package/dist/auth/hooks/index.mjs +0 -7
  125. package/dist/auth/hooks/index.mjs.map +0 -1
  126. package/dist/auth/index.d.mts +0 -21
  127. package/dist/auth/index.d.ts +0 -21
  128. package/dist/auth/index.js +0 -112
  129. package/dist/auth/index.js.map +0 -1
  130. package/dist/auth/index.mjs +0 -11
  131. package/dist/auth/index.mjs.map +0 -1
  132. package/dist/auth/rn/index.d.mts +0 -3133
  133. package/dist/auth/rn/index.d.ts +0 -3133
  134. package/dist/auth/rn/index.js +0 -684
  135. package/dist/auth/rn/index.js.map +0 -1
  136. package/dist/auth/rn/index.mjs +0 -663
  137. package/dist/auth/rn/index.mjs.map +0 -1
  138. package/dist/auth/schema/index.d.mts +0 -4
  139. package/dist/auth/schema/index.d.ts +0 -4
  140. package/dist/auth/schema/index.js +0 -49
  141. package/dist/auth/schema/index.js.map +0 -1
  142. package/dist/auth/schema/index.mjs +0 -4
  143. package/dist/auth/schema/index.mjs.map +0 -1
  144. package/dist/auth/services/index.d.mts +0 -1
  145. package/dist/auth/services/index.d.ts +0 -1
  146. package/dist/auth/services/index.js +0 -17
  147. package/dist/auth/services/index.js.map +0 -1
  148. package/dist/auth/services/index.mjs +0 -4
  149. package/dist/auth/services/index.mjs.map +0 -1
  150. package/dist/base-api-client-BpmcQt4Q.d.ts +0 -103
  151. package/dist/base-api-client-CFIhZK4C.d.mts +0 -277
  152. package/dist/base-api-client-CFIhZK4C.d.ts +0 -277
  153. package/dist/base-api-client-DXLsq2yz.d.mts +0 -103
  154. package/dist/chunk-7E3J7VAD.mjs +0 -3
  155. package/dist/chunk-7E3J7VAD.mjs.map +0 -1
  156. package/dist/chunk-B3CZ3HXJ.mjs +0 -126
  157. package/dist/chunk-B3CZ3HXJ.mjs.map +0 -1
  158. package/dist/chunk-FOQEQWX5.js +0 -4
  159. package/dist/chunk-FOQEQWX5.js.map +0 -1
  160. package/dist/chunk-G4NFB2QA.mjs +0 -212
  161. package/dist/chunk-G4NFB2QA.mjs.map +0 -1
  162. package/dist/chunk-G5HJGXGC.mjs +0 -39
  163. package/dist/chunk-G5HJGXGC.mjs.map +0 -1
  164. package/dist/chunk-GQZHGSRR.js.map +0 -1
  165. package/dist/chunk-GS7XLKET.js +0 -41
  166. package/dist/chunk-GS7XLKET.js.map +0 -1
  167. package/dist/chunk-IBWDBBX5.mjs.map +0 -1
  168. package/dist/chunk-MWSAH7ZG.mjs +0 -42
  169. package/dist/chunk-MWSAH7ZG.mjs.map +0 -1
  170. package/dist/chunk-MZOGYD4N.mjs +0 -186
  171. package/dist/chunk-MZOGYD4N.mjs.map +0 -1
  172. package/dist/chunk-QDUBO567.js +0 -1148
  173. package/dist/chunk-QDUBO567.js.map +0 -1
  174. package/dist/chunk-QP5N3ER6.js.map +0 -1
  175. package/dist/chunk-RWCD2CAD.mjs +0 -1132
  176. package/dist/chunk-RWCD2CAD.mjs.map +0 -1
  177. package/dist/chunk-S37OK2QG.js +0 -216
  178. package/dist/chunk-S37OK2QG.js.map +0 -1
  179. package/dist/chunk-SFDJNKWC.js +0 -22
  180. package/dist/chunk-SFDJNKWC.js.map +0 -1
  181. package/dist/chunk-TXMX6PZR.js +0 -190
  182. package/dist/chunk-TXMX6PZR.js.map +0 -1
  183. package/dist/chunk-VHN7PF5I.js +0 -20
  184. package/dist/chunk-VHN7PF5I.js.map +0 -1
  185. package/dist/chunk-XBZIS3MV.mjs +0 -13
  186. package/dist/chunk-XBZIS3MV.mjs.map +0 -1
  187. package/dist/chunk-XFOZ56FB.mjs +0 -20
  188. package/dist/chunk-XFOZ56FB.mjs.map +0 -1
  189. package/dist/chunk-Z23HAXHL.js +0 -136
  190. package/dist/chunk-Z23HAXHL.js.map +0 -1
  191. package/dist/index-BcjDRcKp.d.mts +0 -40
  192. package/dist/index-BlpXrrTy.d.ts +0 -40
  193. package/dist/session-BCXvGCnm.d.mts +0 -81
  194. package/dist/session-BCXvGCnm.d.ts +0 -81
  195. package/dist/types-C_W_CoUD.d.ts +0 -99
  196. package/dist/types-DCRvasyH.d.mts +0 -99
  197. package/dist/types.legacy-J-j-_ig_.d.mts +0 -25
  198. package/dist/types.legacy-J-j-_ig_.d.ts +0 -25
@@ -1,277 +0,0 @@
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
- /**
32
- * 存储适配器类型定义
33
- */
34
- /**
35
- * 存储适配器接口
36
- * 用于抽象不同平台的本地存储实现
37
- */
38
- interface StorageAdapter {
39
- /**
40
- * 获取存储的值
41
- * @param key 存储键
42
- * @returns 存储的值,不存在则返回 null
43
- */
44
- getItem(key: string): Promise<string | null>;
45
- /**
46
- * 设置存储的值
47
- * @param key 存储键
48
- * @param value 要存储的值
49
- */
50
- setItem(key: string, value: string): Promise<void>;
51
- /**
52
- * 删除存储的值
53
- * @param key 存储键
54
- */
55
- removeItem(key: string): Promise<void>;
56
- /**
57
- * 清空所有存储(可选)
58
- */
59
- clear?(): Promise<void>;
60
- /**
61
- * 监听存储变化(可选,部分平台支持)
62
- */
63
- addChangeListener?(callback: (key: string, value: string | null) => void): () => void;
64
- /**
65
- * 移除存储变化监听器(可选)
66
- */
67
- removeChangeListener?(callback: (key: string, value: string | null) => void): void;
68
- }
69
- /**
70
- * 存储事件
71
- */
72
- interface StorageChangeEvent {
73
- key: string;
74
- value: any;
75
- oldValue?: any;
76
- }
77
-
78
- /**
79
- * 类型定义
80
- */
81
- type UserRole = 'USER' | 'ADMIN' | 'SUPER_ADMIN';
82
-
83
- /**
84
- * Auth 模块类型定义
85
- * Auth Module Types
86
- */
87
-
88
- /**
89
- * 用户基础信息(核心字段)
90
- * Base User Information
91
- */
92
- interface BaseUser {
93
- id: string;
94
- email: string;
95
- username: string;
96
- role: UserRole;
97
- }
98
- /**
99
- * 扩展用户信息(可选字段)
100
- * Extended User Information
101
- */
102
- interface User extends BaseUser {
103
- nickname?: string;
104
- avatar?: string;
105
- createdAt?: string;
106
- updatedAt?: string;
107
- [key: string]: any;
108
- }
109
- /**
110
- * 登录表单数据
111
- * Login Form Data
112
- */
113
- interface LoginForm {
114
- email: string;
115
- password: string;
116
- rememberMe?: boolean;
117
- }
118
- /**
119
- * 注册表单数据
120
- * Register Form Data
121
- */
122
- interface RegisterForm {
123
- email: string;
124
- username: string;
125
- password: string;
126
- confirmPassword?: string;
127
- nickname?: string;
128
- }
129
- /**
130
- * API 响应类型
131
- */
132
- interface ApiResponse<T = any> {
133
- success: boolean;
134
- data?: T;
135
- error?: string;
136
- message?: string;
137
- }
138
- /**
139
- * 认证响应类型
140
- */
141
- interface AuthResponse {
142
- user: User;
143
- token: string;
144
- }
145
- /**
146
- * API 客户端基础接口
147
- */
148
- interface IAuthClient {
149
- isAuthenticated(): Promise<boolean>;
150
- getCurrentUser(): Promise<ApiResponse<User>>;
151
- login(email: string, password: string): Promise<ApiResponse<AuthResponse>>;
152
- register(email: string, password: string, username: string): Promise<ApiResponse<AuthResponse>>;
153
- logout(): Promise<void>;
154
- clearUserData(): Promise<void>;
155
- }
156
- /**
157
- * 认证操作结果接口
158
- */
159
- interface AuthResult {
160
- success: boolean;
161
- error?: string;
162
- }
163
- /**
164
- * useAuth Hook 返回值接口
165
- */
166
- interface UseAuthReturn {
167
- user: User | null;
168
- isLoggedIn: boolean;
169
- loading: boolean;
170
- checkingAuth: boolean;
171
- error: string | null;
172
- login: (email: string, password: string) => Promise<AuthResult>;
173
- register: (email: string, password: string, username: string) => Promise<AuthResult>;
174
- logout: () => Promise<void>;
175
- refresh: () => Promise<void>;
176
- clearError: () => void;
177
- }
178
-
179
- /**
180
- * Auth Client - Base API Client
181
- * 基础 API 客户端
182
- */
183
-
184
- /**
185
- * 基础 API 客户端
186
- * 提供统一的 API 调用逻辑,通过适配器模式支持多平台
187
- *
188
- * @example
189
- * ```typescript
190
- * import { BaseApiClient } from '@qhr123/sa2kit/common/auth/client';
191
- * import { WebStorageAdapter } from '@qhr123/sa2kit/storage';
192
- * import { WebRequestAdapter } from '@qhr123/sa2kit/request';
193
- *
194
- * const apiClient = new BaseApiClient(
195
- * new WebStorageAdapter(),
196
- * new WebRequestAdapter(),
197
- * '/api'
198
- * );
199
- *
200
- * await apiClient.init();
201
- * const result = await apiClient.login('user@example.com', 'password');
202
- * ```
203
- */
204
- declare class BaseApiClient implements IAuthClient {
205
- private storage;
206
- private request;
207
- private baseUrl;
208
- private token;
209
- private user;
210
- constructor(storage: StorageAdapter, request: RequestAdapter, baseUrl: string);
211
- /**
212
- * 初始化 - 从存储中加载 token 和用户信息
213
- */
214
- init(): Promise<void>;
215
- /**
216
- * 设置认证 token
217
- */
218
- setToken(token: string | null): Promise<void>;
219
- /**
220
- * 设置用户信息
221
- */
222
- setUser(user: User | null): Promise<void>;
223
- /**
224
- * 获取当前 token
225
- */
226
- getToken(): string | null;
227
- /**
228
- * 获取当前用户
229
- */
230
- getUser(): User | null;
231
- /**
232
- * 检查是否已登录
233
- */
234
- isAuthenticated(): Promise<boolean>;
235
- /**
236
- * 清除用户数据
237
- */
238
- clearUserData(): Promise<void>;
239
- /**
240
- * 发送请求的通用方法
241
- */
242
- private sendRequest;
243
- /**
244
- * 用户注册
245
- */
246
- register(email: string, password: string, username: string): Promise<ApiResponse<AuthResponse>>;
247
- /**
248
- * 用户登录
249
- */
250
- login(email: string, password: string): Promise<ApiResponse<AuthResponse>>;
251
- /**
252
- * 用户退出登录
253
- */
254
- logout(): Promise<void>;
255
- /**
256
- * 获取当前用户信息
257
- */
258
- getCurrentUser(): Promise<ApiResponse<User>>;
259
- /**
260
- * 发送 GET 请求
261
- */
262
- get<T = any>(url: string, params?: Record<string, any>): Promise<ApiResponse<T>>;
263
- /**
264
- * 发送 POST 请求
265
- */
266
- post<T = any>(url: string, body?: any): Promise<ApiResponse<T>>;
267
- /**
268
- * 发送 PUT 请求
269
- */
270
- put<T = any>(url: string, body?: any): Promise<ApiResponse<T>>;
271
- /**
272
- * 发送 DELETE 请求
273
- */
274
- delete<T = any>(url: string): Promise<ApiResponse<T>>;
275
- }
276
-
277
- export { type ApiResponse as A, BaseApiClient as B, type IAuthClient as I, type LoginForm as L, type RequestAdapter as R, type StorageAdapter as S, type UseAuthReturn as U, type RequestConfig as a, type StorageChangeEvent as b, type AuthResponse as c, type AuthResult as d, type BaseUser as e, type RegisterForm as f, type User as g, type UserRole as h };
@@ -1,103 +0,0 @@
1
- import { S as StorageAdapter } from './types-BaZccpvk.mjs';
2
- import { R as RequestAdapter } from './types-CbTsi9CZ.mjs';
3
- import { I as IAuthClient, U as User, b as ApiResponse, c as AuthResponse } from './types-DCRvasyH.mjs';
4
-
5
- /**
6
- * Auth Client - Base API Client
7
- * 基础 API 客户端
8
- */
9
-
10
- /**
11
- * 基础 API 客户端
12
- * 提供统一的 API 调用逻辑,通过适配器模式支持多平台
13
- *
14
- * @example
15
- * ```typescript
16
- * import { BaseApiClient } from '@qhr123/sa2kit/common/auth/client';
17
- * import { WebStorageAdapter } from '@qhr123/sa2kit/storage';
18
- * import { WebRequestAdapter } from '@qhr123/sa2kit/request';
19
- *
20
- * const apiClient = new BaseApiClient(
21
- * new WebStorageAdapter(),
22
- * new WebRequestAdapter(),
23
- * '/api'
24
- * );
25
- *
26
- * await apiClient.init();
27
- * const result = await apiClient.login('user@example.com', 'password');
28
- * ```
29
- */
30
- declare class BaseApiClient implements IAuthClient {
31
- private storage;
32
- private request;
33
- private baseUrl;
34
- private token;
35
- private user;
36
- constructor(storage: StorageAdapter, request: RequestAdapter, baseUrl: string);
37
- /**
38
- * 初始化 - 从存储中加载 token 和用户信息
39
- */
40
- init(): Promise<void>;
41
- /**
42
- * 设置认证 token
43
- */
44
- setToken(token: string | null): Promise<void>;
45
- /**
46
- * 设置用户信息
47
- */
48
- setUser(user: User | null): Promise<void>;
49
- /**
50
- * 获取当前 token
51
- */
52
- getToken(): string | null;
53
- /**
54
- * 获取当前用户
55
- */
56
- getUser(): User | null;
57
- /**
58
- * 检查是否已登录
59
- */
60
- isAuthenticated(): Promise<boolean>;
61
- /**
62
- * 清除用户数据
63
- */
64
- clearUserData(): Promise<void>;
65
- /**
66
- * 发送请求的通用方法
67
- */
68
- private sendRequest;
69
- /**
70
- * 用户注册
71
- */
72
- register(email: string, password: string, username: string): Promise<ApiResponse<AuthResponse>>;
73
- /**
74
- * 用户登录
75
- */
76
- login(email: string, password: string): Promise<ApiResponse<AuthResponse>>;
77
- /**
78
- * 用户退出登录
79
- */
80
- logout(): Promise<void>;
81
- /**
82
- * 获取当前用户信息
83
- */
84
- getCurrentUser(): Promise<ApiResponse<User>>;
85
- /**
86
- * 发送 GET 请求
87
- */
88
- get<T = any>(url: string, params?: Record<string, any>): Promise<ApiResponse<T>>;
89
- /**
90
- * 发送 POST 请求
91
- */
92
- post<T = any>(url: string, body?: any): Promise<ApiResponse<T>>;
93
- /**
94
- * 发送 PUT 请求
95
- */
96
- put<T = any>(url: string, body?: any): Promise<ApiResponse<T>>;
97
- /**
98
- * 发送 DELETE 请求
99
- */
100
- delete<T = any>(url: string): Promise<ApiResponse<T>>;
101
- }
102
-
103
- export { BaseApiClient as B };
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=chunk-7E3J7VAD.mjs.map
3
- //# sourceMappingURL=chunk-7E3J7VAD.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-7E3J7VAD.mjs"}
@@ -1,126 +0,0 @@
1
- import { authDrizzleSchema } from './chunk-EBHPTFG6.mjs';
2
- import { betterAuth } from 'better-auth';
3
- import { drizzleAdapter } from '@better-auth/drizzle-adapter';
4
- import { bearer, emailOTP, phoneNumber } from 'better-auth/plugins';
5
- import { toNextJsHandler } from 'better-auth/next-js';
6
-
7
- // src/common/auth/server/plugins/dev-otp.ts
8
- function createDevOtpLogger(enabled) {
9
- if (!enabled || process.env.NODE_ENV === "production") {
10
- return void 0;
11
- }
12
- return (channel, target, code) => {
13
- console.info(`[sa2kit/auth][dev-otp][${channel}] ${target} => ${code}`);
14
- };
15
- }
16
- var defaultPhoneValidator = (phoneNumber2) => /^1\d{10}$/.test(phoneNumber2);
17
- var defaultTempEmailFromPhone = (phoneNumber2) => `${phoneNumber2.replace(/\D/g, "")}@phone.sa2kit.local`;
18
-
19
- // src/common/auth/server/create-auth.ts
20
- function createSa2kitAuth(config) {
21
- if (!config.secret || config.secret.length < 32) {
22
- throw new Error("createSa2kitAuth: secret \u81F3\u5C11 32 \u5B57\u7B26");
23
- }
24
- const devLog = createDevOtpLogger(config.logOtpInDev ?? process.env.NODE_ENV !== "production");
25
- const phoneValidator = config.phoneNumberValidator ?? defaultPhoneValidator;
26
- const auth = betterAuth({
27
- appName: "sa2kit",
28
- baseURL: config.baseURL,
29
- basePath: config.basePath ?? "/api/auth",
30
- secret: config.secret,
31
- trustedOrigins: config.trustedOrigins,
32
- database: drizzleAdapter(config.db, {
33
- provider: "pg",
34
- schema: authDrizzleSchema
35
- }),
36
- emailAndPassword: {
37
- enabled: true
38
- },
39
- user: {
40
- additionalFields: {
41
- role: {
42
- type: "string",
43
- required: false,
44
- defaultValue: "USER",
45
- input: false
46
- }
47
- }
48
- },
49
- plugins: [
50
- bearer(),
51
- emailOTP({
52
- async sendVerificationOTP({ email, otp, type }) {
53
- devLog?.("email", `${email} (${type})`, otp);
54
- if (config.email?.sendVerificationOTP) {
55
- await config.email.sendVerificationOTP(email, otp, type);
56
- }
57
- }
58
- }),
59
- phoneNumber({
60
- allowedAttempts: 5,
61
- phoneNumberValidator: phoneValidator,
62
- async sendOTP({ phoneNumber: phone, code }) {
63
- devLog?.("sms", phone, code);
64
- if (config.sms?.sendOTP) {
65
- void config.sms.sendOTP(phone, code);
66
- }
67
- },
68
- signUpOnVerification: {
69
- getTempEmail: defaultTempEmailFromPhone,
70
- getTempName: (phone) => phone
71
- }
72
- })
73
- ]
74
- });
75
- return auth;
76
- }
77
- function mountNextAuthHandler(auth) {
78
- return toNextJsHandler(auth);
79
- }
80
-
81
- // src/common/auth/server/handler/hono.ts
82
- function mountAuthHandler(auth) {
83
- return (request) => auth.handler(request);
84
- }
85
- function createAuthRouteHandlers(auth) {
86
- const handler = mountAuthHandler(auth);
87
- return {
88
- GET: handler,
89
- POST: handler,
90
- PUT: handler,
91
- PATCH: handler,
92
- DELETE: handler
93
- };
94
- }
95
-
96
- // src/common/auth/server/session.ts
97
- async function getSessionUser(auth, request) {
98
- const session2 = await auth.api.getSession({ headers: request.headers });
99
- if (!session2?.user) return null;
100
- const user2 = session2.user;
101
- return {
102
- id: user2.id,
103
- email: user2.email,
104
- name: user2.name,
105
- role: user2.role,
106
- phoneNumber: user2.phoneNumber ?? null
107
- };
108
- }
109
- async function getSessionUserNumeric(auth, request) {
110
- const user2 = await getSessionUser(auth, request);
111
- if (!user2) return null;
112
- const numericId = Number.parseInt(user2.id, 10);
113
- if (Number.isNaN(numericId)) return null;
114
- const { id: _id, ...rest } = user2;
115
- return { ...rest, id: numericId };
116
- }
117
- function createSessionValidator(auth) {
118
- return {
119
- getSessionUser: (request) => getSessionUser(auth, request),
120
- getSessionUserNumeric: (request) => getSessionUserNumeric(auth, request)
121
- };
122
- }
123
-
124
- export { createAuthRouteHandlers, createSa2kitAuth, createSessionValidator, defaultPhoneValidator, defaultTempEmailFromPhone, getSessionUser, getSessionUserNumeric, mountAuthHandler, mountNextAuthHandler };
125
- //# sourceMappingURL=chunk-B3CZ3HXJ.mjs.map
126
- //# sourceMappingURL=chunk-B3CZ3HXJ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/auth/server/plugins/dev-otp.ts","../src/common/auth/server/create-auth.ts","../src/common/auth/server/handler/next.ts","../src/common/auth/server/handler/hono.ts","../src/common/auth/server/session.ts"],"names":["phoneNumber","session","user"],"mappings":"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","file":"chunk-B3CZ3HXJ.mjs","sourcesContent":["/**\n * 开发 / 测试环境 OTP 输出(禁止生产依赖)\n */\nexport function createDevOtpLogger(enabled: boolean) {\n if (!enabled || process.env.NODE_ENV === 'production') {\n return undefined;\n }\n return (channel: 'sms' | 'email', target: string, code: string) => {\n console.info(`[sa2kit/auth][dev-otp][${channel}] ${target} => ${code}`);\n };\n}\n\nexport const defaultPhoneValidator = (phoneNumber: string) => /^1\\d{10}$/.test(phoneNumber);\n\nexport const defaultTempEmailFromPhone = (phoneNumber: string) =>\n `${phoneNumber.replace(/\\D/g, '')}@phone.sa2kit.local`;\n","/**\n * Better Auth 服务端工厂(sa2kit 3.0 SSOT)\n */\nimport { betterAuth } from 'better-auth';\nimport { drizzleAdapter } from '@better-auth/drizzle-adapter';\nimport { emailOTP } from 'better-auth/plugins';\nimport { phoneNumber } from 'better-auth/plugins';\nimport { bearer } from 'better-auth/plugins';\nimport { authDrizzleSchema } from '../schema';\nimport type { Sa2kitAuthConfig, Sa2kitAuthInstance } from './types';\nimport {\n createDevOtpLogger,\n defaultPhoneValidator,\n defaultTempEmailFromPhone,\n} from './plugins/dev-otp';\n\nexport type { Sa2kitAuthInstance } from './types';\n\nexport function createSa2kitAuth(config: Sa2kitAuthConfig): Sa2kitAuthInstance {\n if (!config.secret || config.secret.length < 32) {\n throw new Error('createSa2kitAuth: secret 至少 32 字符');\n }\n\n const devLog = createDevOtpLogger(config.logOtpInDev ?? process.env.NODE_ENV !== 'production');\n const phoneValidator = config.phoneNumberValidator ?? defaultPhoneValidator;\n\n const auth = betterAuth({\n appName: 'sa2kit',\n baseURL: config.baseURL,\n basePath: config.basePath ?? '/api/auth',\n secret: config.secret,\n trustedOrigins: config.trustedOrigins,\n database: drizzleAdapter(config.db as never, {\n provider: 'pg',\n schema: authDrizzleSchema,\n }),\n emailAndPassword: {\n enabled: true,\n },\n user: {\n additionalFields: {\n role: {\n type: 'string',\n required: false,\n defaultValue: 'USER',\n input: false,\n },\n },\n },\n plugins: [\n bearer(),\n emailOTP({\n async sendVerificationOTP({ email, otp, type }) {\n devLog?.('email', `${email} (${type})`, otp);\n if (config.email?.sendVerificationOTP) {\n await config.email.sendVerificationOTP(email, otp, type);\n }\n },\n }),\n phoneNumber({\n allowedAttempts: 5,\n phoneNumberValidator: phoneValidator,\n async sendOTP({ phoneNumber: phone, code }) {\n devLog?.('sms', phone, code);\n if (config.sms?.sendOTP) {\n void config.sms.sendOTP(phone, code);\n }\n },\n signUpOnVerification: {\n getTempEmail: defaultTempEmailFromPhone,\n getTempName: (phone) => phone,\n },\n }),\n ],\n }) as unknown as Sa2kitAuthInstance;\n\n return auth;\n}\n","/**\n * Next.js App Router handler 挂载\n */\nimport { toNextJsHandler } from 'better-auth/next-js';\nimport type { Sa2kitAuthInstance } from '../create-auth';\n\nexport function mountNextAuthHandler(auth: Sa2kitAuthInstance) {\n return toNextJsHandler(auth);\n}\n","/**\n * Hono / 通用 fetch handler\n */\nimport type { Sa2kitAuthInstance } from '../create-auth';\n\nexport function mountAuthHandler(auth: Sa2kitAuthInstance) {\n return (request: Request) => auth.handler(request);\n}\n\nexport function createAuthRouteHandlers(auth: Sa2kitAuthInstance) {\n const handler = mountAuthHandler(auth);\n return {\n GET: handler,\n POST: handler,\n PUT: handler,\n PATCH: handler,\n DELETE: handler,\n };\n}\n","/**\n * 从 Request 解析 Better Auth session(替代自研 JWT validateApiAuth)\n */\nimport type { Sa2kitAuthInstance } from './types';\n\nexport type SessionUser = {\n id: string;\n email: string;\n name: string;\n role?: string;\n phoneNumber?: string | null;\n};\n\nexport async function getSessionUser(\n auth: Sa2kitAuthInstance,\n request: Request,\n): Promise<SessionUser | null> {\n const session = await auth.api.getSession({ headers: request.headers });\n if (!session?.user) return null;\n\n const user = session.user as SessionUser & { role?: string };\n return {\n id: user.id,\n email: user.email,\n name: user.name,\n role: user.role,\n phoneNumber: (user as { phoneNumber?: string | null }).phoneNumber ?? null,\n };\n}\n\nexport type SessionUserNumeric = Omit<SessionUser, 'id'> & { id: number };\n\n/** 兼容 numeric id 消费方(legacy calendar 等) */\nexport async function getSessionUserNumeric(\n auth: Sa2kitAuthInstance,\n request: Request,\n): Promise<SessionUserNumeric | null> {\n const user = await getSessionUser(auth, request);\n if (!user) return null;\n const numericId = Number.parseInt(user.id, 10);\n if (Number.isNaN(numericId)) return null;\n const { id: _id, ...rest } = user;\n return { ...rest, id: numericId };\n}\n\nexport function createSessionValidator(auth: Sa2kitAuthInstance) {\n return {\n getSessionUser: (request: Request) => getSessionUser(auth, request),\n getSessionUserNumeric: (request: Request) => getSessionUserNumeric(auth, request),\n };\n}\n"]}
@@ -1,4 +0,0 @@
1
- 'use strict';
2
-
3
- //# sourceMappingURL=chunk-FOQEQWX5.js.map
4
- //# sourceMappingURL=chunk-FOQEQWX5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-FOQEQWX5.js"}