sa2kit 2.0.3 → 3.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 (348) hide show
  1. package/README.md +1 -1
  2. package/dist/{UniversalFileService-GsP6D3Rc.d.ts → UniversalFileService-CC4d3wkc.d.ts} +2 -2
  3. package/dist/{UniversalFileService-BpvbZitV.d.mts → UniversalFileService-CzAE_G4V.d.mts} +2 -2
  4. package/dist/auth/client/index.d.mts +8 -27
  5. package/dist/auth/client/index.d.ts +8 -27
  6. package/dist/auth/client/index.js +9 -4
  7. package/dist/auth/client/index.mjs +2 -1
  8. package/dist/auth/components/index.d.mts +8 -225
  9. package/dist/auth/components/index.d.ts +8 -225
  10. package/dist/auth/components/index.js +62 -319
  11. package/dist/auth/components/index.js.map +1 -1
  12. package/dist/auth/components/index.mjs +6 -316
  13. package/dist/auth/components/index.mjs.map +1 -1
  14. package/dist/auth/hooks/index.d.mts +11 -29
  15. package/dist/auth/hooks/index.d.ts +11 -29
  16. package/dist/auth/hooks/index.js +14 -3
  17. package/dist/auth/hooks/index.mjs +4 -1
  18. package/dist/auth/index.d.mts +17 -14
  19. package/dist/auth/index.d.ts +17 -14
  20. package/dist/auth/index.js +51 -90
  21. package/dist/auth/index.mjs +8 -7
  22. package/dist/auth/rn/index.d.mts +3087 -18
  23. package/dist/auth/rn/index.d.ts +3087 -18
  24. package/dist/auth/rn/index.js +396 -477
  25. package/dist/auth/rn/index.js.map +1 -1
  26. package/dist/auth/rn/index.mjs +384 -475
  27. package/dist/auth/rn/index.mjs.map +1 -1
  28. package/dist/auth/schema/index.d.mts +3 -788
  29. package/dist/auth/schema/index.d.ts +3 -788
  30. package/dist/auth/schema/index.js +17 -9
  31. package/dist/auth/schema/index.mjs +1 -1
  32. package/dist/auth/services/index.d.mts +1 -48
  33. package/dist/auth/services/index.d.ts +1 -48
  34. package/dist/auth/services/index.js +3 -20
  35. package/dist/auth/services/index.mjs +1 -2
  36. package/dist/{base-api-client-B3wZZoaH.d.ts → base-api-client-BpmcQt4Q.d.ts} +1 -1
  37. package/dist/{base-api-client-ACKKt13v.d.mts → base-api-client-CFIhZK4C.d.mts} +1 -1
  38. package/dist/{base-api-client-ACKKt13v.d.ts → base-api-client-CFIhZK4C.d.ts} +1 -1
  39. package/dist/{base-api-client-DrL35Ea2.d.mts → base-api-client-DXLsq2yz.d.mts} +1 -1
  40. package/dist/business/index.d.mts +1 -5
  41. package/dist/business/index.d.ts +1 -5
  42. package/dist/business/index.js +34 -1135
  43. package/dist/business/index.js.map +1 -1
  44. package/dist/business/index.mjs +5 -1105
  45. package/dist/business/index.mjs.map +1 -1
  46. package/dist/calendar/routes/index.d.mts +74 -1
  47. package/dist/calendar/routes/index.d.ts +74 -1
  48. package/dist/calendar/routes/index.js +186 -97
  49. package/dist/calendar/routes/index.js.map +1 -1
  50. package/dist/calendar/routes/index.mjs +178 -99
  51. package/dist/calendar/routes/index.mjs.map +1 -1
  52. package/dist/{chunk-IIVNHQEI.mjs → chunk-5GBDDXYL.mjs} +4 -3
  53. package/dist/chunk-5GBDDXYL.mjs.map +1 -0
  54. package/dist/chunk-7E3J7VAD.mjs +3 -0
  55. package/dist/chunk-7E3J7VAD.mjs.map +1 -0
  56. package/dist/chunk-B3CZ3HXJ.mjs +126 -0
  57. package/dist/chunk-B3CZ3HXJ.mjs.map +1 -0
  58. package/dist/chunk-CAYOQDBR.js +78 -0
  59. package/dist/chunk-CAYOQDBR.js.map +1 -0
  60. package/dist/{chunk-PTMSDNGO.mjs → chunk-CX2GHCAI.mjs} +4 -75
  61. package/dist/chunk-CX2GHCAI.mjs.map +1 -0
  62. package/dist/chunk-EBHPTFG6.mjs +82 -0
  63. package/dist/chunk-EBHPTFG6.mjs.map +1 -0
  64. package/dist/chunk-FOQEQWX5.js +4 -0
  65. package/dist/chunk-FOQEQWX5.js.map +1 -0
  66. package/dist/{chunk-YGI7UU2D.mjs → chunk-G4NFB2QA.mjs} +2 -2
  67. package/dist/chunk-G4NFB2QA.mjs.map +1 -0
  68. package/dist/chunk-G5HJGXGC.mjs +39 -0
  69. package/dist/chunk-G5HJGXGC.mjs.map +1 -0
  70. package/dist/{chunk-GSNGCENJ.js → chunk-GQZHGSRR.js} +2 -39
  71. package/dist/chunk-GQZHGSRR.js.map +1 -0
  72. package/dist/chunk-GS7XLKET.js +41 -0
  73. package/dist/chunk-GS7XLKET.js.map +1 -0
  74. package/dist/{chunk-7B5SI4OF.mjs → chunk-IBWDBBX5.mjs} +4 -3
  75. package/dist/chunk-IBWDBBX5.mjs.map +1 -0
  76. package/dist/chunk-IS7O4LPI.js +146 -0
  77. package/dist/chunk-IS7O4LPI.js.map +1 -0
  78. package/dist/chunk-LGHUCQIU.js +93 -0
  79. package/dist/chunk-LGHUCQIU.js.map +1 -0
  80. package/dist/chunk-LHJKLUM7.mjs +18 -0
  81. package/dist/chunk-LHJKLUM7.mjs.map +1 -0
  82. package/dist/chunk-LKBIVQBT.mjs +34 -0
  83. package/dist/chunk-LKBIVQBT.mjs.map +1 -0
  84. package/dist/chunk-MIDXG6LS.js +32 -0
  85. package/dist/chunk-MIDXG6LS.js.map +1 -0
  86. package/dist/chunk-MWSAH7ZG.mjs +42 -0
  87. package/dist/chunk-MWSAH7ZG.mjs.map +1 -0
  88. package/dist/{chunk-HCI6JQOU.mjs → chunk-MZOGYD4N.mjs} +7 -4
  89. package/dist/chunk-MZOGYD4N.mjs.map +1 -0
  90. package/dist/chunk-NDGHXVGS.js +25 -0
  91. package/dist/chunk-NDGHXVGS.js.map +1 -0
  92. package/dist/chunk-Q5VFBPMG.mjs +76 -0
  93. package/dist/chunk-Q5VFBPMG.mjs.map +1 -0
  94. package/dist/chunk-QDUBO567.js +1148 -0
  95. package/dist/chunk-QDUBO567.js.map +1 -0
  96. package/dist/{chunk-3CSCIRQY.js → chunk-QP5N3ER6.js} +6 -5
  97. package/dist/chunk-QP5N3ER6.js.map +1 -0
  98. package/dist/chunk-RWCD2CAD.mjs +1132 -0
  99. package/dist/chunk-RWCD2CAD.mjs.map +1 -0
  100. package/dist/{chunk-VQ54PUQV.js → chunk-S37OK2QG.js} +2 -2
  101. package/dist/chunk-S37OK2QG.js.map +1 -0
  102. package/dist/chunk-S3PUP7N4.js +20 -0
  103. package/dist/chunk-S3PUP7N4.js.map +1 -0
  104. package/dist/{chunk-QQ2WFYOD.js → chunk-S6YSGVWD.js} +4 -76
  105. package/dist/chunk-S6YSGVWD.js.map +1 -0
  106. package/dist/chunk-SFDJNKWC.js +22 -0
  107. package/dist/chunk-SFDJNKWC.js.map +1 -0
  108. package/dist/chunk-TTYCVBIQ.mjs +144 -0
  109. package/dist/chunk-TTYCVBIQ.mjs.map +1 -0
  110. package/dist/{chunk-HBF4HPRK.js → chunk-TXMX6PZR.js} +7 -3
  111. package/dist/chunk-TXMX6PZR.js.map +1 -0
  112. package/dist/chunk-VHN7PF5I.js +20 -0
  113. package/dist/chunk-VHN7PF5I.js.map +1 -0
  114. package/dist/chunk-VJNDOYEC.js +41 -0
  115. package/dist/chunk-VJNDOYEC.js.map +1 -0
  116. package/dist/chunk-XBZIS3MV.mjs +13 -0
  117. package/dist/chunk-XBZIS3MV.mjs.map +1 -0
  118. package/dist/chunk-XFOZ56FB.mjs +20 -0
  119. package/dist/chunk-XFOZ56FB.mjs.map +1 -0
  120. package/dist/chunk-Z23HAXHL.js +136 -0
  121. package/dist/chunk-Z23HAXHL.js.map +1 -0
  122. package/dist/chunk-ZF7DKR5A.mjs +26 -0
  123. package/dist/chunk-ZF7DKR5A.mjs.map +1 -0
  124. package/dist/common/auth/client/index.d.mts +3239 -0
  125. package/dist/common/auth/client/index.d.ts +3239 -0
  126. package/dist/common/auth/client/index.js +26 -0
  127. package/dist/common/auth/client/index.mjs +5 -0
  128. package/dist/common/auth/components/index.d.mts +374 -0
  129. package/dist/common/auth/components/index.d.ts +374 -0
  130. package/dist/common/auth/components/index.js +70 -0
  131. package/dist/common/auth/components/index.mjs +9 -0
  132. package/dist/common/auth/hooks/index.d.mts +75 -0
  133. package/dist/common/auth/hooks/index.d.ts +75 -0
  134. package/dist/common/auth/hooks/index.js +28 -0
  135. package/dist/common/auth/hooks/index.js.map +1 -0
  136. package/dist/common/auth/hooks/index.mjs +7 -0
  137. package/dist/common/auth/hooks/index.mjs.map +1 -0
  138. package/dist/common/auth/index.d.mts +14 -6
  139. package/dist/common/auth/index.d.ts +14 -6
  140. package/dist/common/auth/index.js +17 -8
  141. package/dist/common/auth/index.mjs +4 -3
  142. package/dist/common/auth/react/index.d.mts +3056 -0
  143. package/dist/common/auth/react/index.d.ts +3056 -0
  144. package/dist/common/auth/react/index.js +31 -0
  145. package/dist/common/auth/react/index.js.map +1 -0
  146. package/dist/common/auth/react/index.mjs +21 -0
  147. package/dist/common/auth/react/index.mjs.map +1 -0
  148. package/dist/common/auth/rn/index.d.mts +3138 -0
  149. package/dist/common/auth/rn/index.d.ts +3138 -0
  150. package/dist/common/auth/rn/index.js +348 -0
  151. package/dist/common/auth/rn/index.js.map +1 -0
  152. package/dist/common/auth/rn/index.mjs +327 -0
  153. package/dist/common/auth/rn/index.mjs.map +1 -0
  154. package/dist/common/auth/schema/index.d.mts +1479 -0
  155. package/dist/common/auth/schema/index.d.ts +1479 -0
  156. package/dist/common/auth/schema/index.js +49 -0
  157. package/dist/common/auth/schema/index.js.map +1 -0
  158. package/dist/common/auth/schema/index.mjs +4 -0
  159. package/dist/common/auth/schema/index.mjs.map +1 -0
  160. package/dist/common/auth/server/index.d.mts +7 -30
  161. package/dist/common/auth/server/index.d.ts +7 -30
  162. package/dist/common/auth/server/index.js +36 -79
  163. package/dist/common/auth/server/index.mjs +2 -5
  164. package/dist/common/auth/services/index.d.mts +14 -0
  165. package/dist/common/auth/services/index.d.ts +14 -0
  166. package/dist/common/auth/services/index.js +17 -0
  167. package/dist/common/auth/services/index.js.map +1 -0
  168. package/dist/common/auth/services/index.mjs +4 -0
  169. package/dist/common/auth/services/index.mjs.map +1 -0
  170. package/dist/common/index.d.mts +13 -5
  171. package/dist/common/index.d.ts +13 -5
  172. package/dist/common/index.js +19 -16
  173. package/dist/common/index.mjs +11 -8
  174. package/dist/common/request/index.js +5 -4
  175. package/dist/common/request/index.mjs +3 -2
  176. package/dist/common/storage/index.js +13 -12
  177. package/dist/common/storage/index.mjs +3 -2
  178. package/dist/festivalCard/index.d.mts +3 -3
  179. package/dist/festivalCard/index.d.ts +3 -3
  180. package/dist/festivalCard/routes/index.d.mts +1 -1
  181. package/dist/festivalCard/routes/index.d.ts +1 -1
  182. package/dist/festivalCard/server/index.d.mts +2 -2
  183. package/dist/festivalCard/server/index.d.ts +2 -2
  184. package/dist/{festivalCardService-BFCRhJrq.d.ts → festivalCardService-B3GsnNpV.d.ts} +1 -1
  185. package/dist/{festivalCardService-GriR2VMc.d.mts → festivalCardService-CWhrLNE9.d.mts} +1 -1
  186. package/dist/{index-DPYkrKZf.d.mts → index-BcjDRcKp.d.mts} +11 -6
  187. package/dist/{index-Bnh6VqFv.d.ts → index-BlpXrrTy.d.ts} +11 -6
  188. package/dist/{index-1Ag7IBXN.d.ts → index-DZ5iJtNO.d.mts} +2 -44
  189. package/dist/{index-DdeZSeTJ.d.mts → index-DZ5iJtNO.d.ts} +2 -44
  190. package/dist/index.d.mts +6296 -40
  191. package/dist/index.d.ts +6296 -40
  192. package/dist/index.js +1378 -2508
  193. package/dist/index.js.map +1 -1
  194. package/dist/index.mjs +1073 -2203
  195. package/dist/index.mjs.map +1 -1
  196. package/dist/mmd/admin/index.d.mts +1 -1
  197. package/dist/mmd/admin/index.d.ts +1 -1
  198. package/dist/mmd/index.d.mts +1 -1
  199. package/dist/mmd/index.d.ts +1 -1
  200. package/dist/mmd/server/index.d.mts +3 -3
  201. package/dist/mmd/server/index.d.ts +3 -3
  202. package/dist/request/index.js +4 -3
  203. package/dist/request/index.mjs +2 -1
  204. package/dist/session-BCXvGCnm.d.mts +81 -0
  205. package/dist/session-BCXvGCnm.d.ts +81 -0
  206. package/dist/storage/index.js +12 -11
  207. package/dist/storage/index.mjs +2 -1
  208. package/dist/{types-DyG3ZV9V.d.mts → types-B6B210gX.d.mts} +1 -1
  209. package/dist/{types-DyG3ZV9V.d.ts → types-B6B210gX.d.ts} +1 -1
  210. package/dist/{types-BTiaMsBz.d.mts → types-Bdnte5EN.d.mts} +1 -1
  211. package/dist/{types-tQfupO6d.d.mts → types-Cs0CLvrH.d.mts} +1 -1
  212. package/dist/{types-tQfupO6d.d.ts → types-Cs0CLvrH.d.ts} +1 -1
  213. package/dist/{types-ERmJyjx8.d.ts → types-_rFX1atk.d.ts} +1 -1
  214. package/dist/types.legacy-J-j-_ig_.d.mts +25 -0
  215. package/dist/types.legacy-J-j-_ig_.d.ts +25 -0
  216. package/dist/useAuthActions-7S5dL7Oh.d.mts +77 -0
  217. package/dist/useAuthActions-7S5dL7Oh.d.ts +77 -0
  218. package/dist/vocaloidBooth/server/index.d.mts +3 -3
  219. package/dist/vocaloidBooth/server/index.d.ts +3 -3
  220. package/package.json +59 -76
  221. package/dist/auth/legacy/core/index.d.mts +0 -42
  222. package/dist/auth/legacy/core/index.d.ts +0 -42
  223. package/dist/auth/legacy/core/index.js +0 -242
  224. package/dist/auth/legacy/core/index.js.map +0 -1
  225. package/dist/auth/legacy/core/index.mjs +0 -226
  226. package/dist/auth/legacy/core/index.mjs.map +0 -1
  227. package/dist/auth/legacy/db/index.d.mts +0 -5
  228. package/dist/auth/legacy/db/index.d.ts +0 -5
  229. package/dist/auth/legacy/db/index.js +0 -261
  230. package/dist/auth/legacy/db/index.js.map +0 -1
  231. package/dist/auth/legacy/db/index.mjs +0 -250
  232. package/dist/auth/legacy/db/index.mjs.map +0 -1
  233. package/dist/auth/legacy/index.d.mts +0 -5
  234. package/dist/auth/legacy/index.d.ts +0 -5
  235. package/dist/auth/legacy/index.js +0 -1107
  236. package/dist/auth/legacy/index.js.map +0 -1
  237. package/dist/auth/legacy/index.mjs +0 -1086
  238. package/dist/auth/legacy/index.mjs.map +0 -1
  239. package/dist/auth/legacy/logic/index.d.mts +0 -9
  240. package/dist/auth/legacy/logic/index.d.ts +0 -9
  241. package/dist/auth/legacy/logic/index.js +0 -194
  242. package/dist/auth/legacy/logic/index.js.map +0 -1
  243. package/dist/auth/legacy/logic/index.mjs +0 -187
  244. package/dist/auth/legacy/logic/index.mjs.map +0 -1
  245. package/dist/auth/legacy/miniapp/index.d.mts +0 -5
  246. package/dist/auth/legacy/miniapp/index.d.ts +0 -5
  247. package/dist/auth/legacy/miniapp/index.js +0 -506
  248. package/dist/auth/legacy/miniapp/index.js.map +0 -1
  249. package/dist/auth/legacy/miniapp/index.mjs +0 -487
  250. package/dist/auth/legacy/miniapp/index.mjs.map +0 -1
  251. package/dist/auth/legacy/routes/index.d.mts +0 -53
  252. package/dist/auth/legacy/routes/index.d.ts +0 -53
  253. package/dist/auth/legacy/routes/index.js +0 -278
  254. package/dist/auth/legacy/routes/index.js.map +0 -1
  255. package/dist/auth/legacy/routes/index.mjs +0 -271
  256. package/dist/auth/legacy/routes/index.mjs.map +0 -1
  257. package/dist/auth/legacy/schema/index.d.mts +0 -401
  258. package/dist/auth/legacy/schema/index.d.ts +0 -401
  259. package/dist/auth/legacy/schema/index.js +0 -50
  260. package/dist/auth/legacy/schema/index.js.map +0 -1
  261. package/dist/auth/legacy/schema/index.mjs +0 -44
  262. package/dist/auth/legacy/schema/index.mjs.map +0 -1
  263. package/dist/auth/legacy/server/index.d.mts +0 -13
  264. package/dist/auth/legacy/server/index.d.ts +0 -13
  265. package/dist/auth/legacy/server/index.js +0 -21
  266. package/dist/auth/legacy/server/index.js.map +0 -1
  267. package/dist/auth/legacy/server/index.mjs +0 -19
  268. package/dist/auth/legacy/server/index.mjs.map +0 -1
  269. package/dist/auth/legacy/services/index.d.mts +0 -40
  270. package/dist/auth/legacy/services/index.d.ts +0 -40
  271. package/dist/auth/legacy/services/index.js +0 -258
  272. package/dist/auth/legacy/services/index.js.map +0 -1
  273. package/dist/auth/legacy/services/index.mjs +0 -252
  274. package/dist/auth/legacy/services/index.mjs.map +0 -1
  275. package/dist/auth/legacy/ui/miniapp/index.d.mts +0 -10
  276. package/dist/auth/legacy/ui/miniapp/index.d.ts +0 -10
  277. package/dist/auth/legacy/ui/miniapp/index.js +0 -298
  278. package/dist/auth/legacy/ui/miniapp/index.js.map +0 -1
  279. package/dist/auth/legacy/ui/miniapp/index.mjs +0 -290
  280. package/dist/auth/legacy/ui/miniapp/index.mjs.map +0 -1
  281. package/dist/auth/legacy/ui/web/index.d.mts +0 -22
  282. package/dist/auth/legacy/ui/web/index.d.ts +0 -22
  283. package/dist/auth/legacy/ui/web/index.js +0 -899
  284. package/dist/auth/legacy/ui/web/index.js.map +0 -1
  285. package/dist/auth/legacy/ui/web/index.mjs +0 -889
  286. package/dist/auth/legacy/ui/web/index.mjs.map +0 -1
  287. package/dist/auth/legacy/web/index.d.mts +0 -5
  288. package/dist/auth/legacy/web/index.d.ts +0 -5
  289. package/dist/auth/legacy/web/index.js +0 -1107
  290. package/dist/auth/legacy/web/index.js.map +0 -1
  291. package/dist/auth/legacy/web/index.mjs +0 -1086
  292. package/dist/auth/legacy/web/index.mjs.map +0 -1
  293. package/dist/auth/middleware/index.d.mts +0 -75
  294. package/dist/auth/middleware/index.d.ts +0 -75
  295. package/dist/auth/middleware/index.js +0 -15
  296. package/dist/auth/middleware/index.mjs +0 -6
  297. package/dist/auth/routes/index.d.mts +0 -261
  298. package/dist/auth/routes/index.d.ts +0 -261
  299. package/dist/auth/routes/index.js +0 -59
  300. package/dist/auth/routes/index.mjs +0 -6
  301. package/dist/chunk-37HYTHEC.mjs +0 -90
  302. package/dist/chunk-37HYTHEC.mjs.map +0 -1
  303. package/dist/chunk-3CSCIRQY.js.map +0 -1
  304. package/dist/chunk-5WV35FPV.js +0 -131
  305. package/dist/chunk-5WV35FPV.js.map +0 -1
  306. package/dist/chunk-7B5SI4OF.mjs.map +0 -1
  307. package/dist/chunk-DCRD5CZB.js +0 -573
  308. package/dist/chunk-DCRD5CZB.js.map +0 -1
  309. package/dist/chunk-DDX4JKFS.js +0 -19
  310. package/dist/chunk-DDX4JKFS.js.map +0 -1
  311. package/dist/chunk-DV6M7MFP.js +0 -283
  312. package/dist/chunk-DV6M7MFP.js.map +0 -1
  313. package/dist/chunk-EQXPL7TN.mjs +0 -78
  314. package/dist/chunk-EQXPL7TN.mjs.map +0 -1
  315. package/dist/chunk-GSNGCENJ.js.map +0 -1
  316. package/dist/chunk-HBF4HPRK.js.map +0 -1
  317. package/dist/chunk-HCI6JQOU.mjs.map +0 -1
  318. package/dist/chunk-I44HXJ3X.mjs +0 -17
  319. package/dist/chunk-I44HXJ3X.mjs.map +0 -1
  320. package/dist/chunk-IIVNHQEI.mjs.map +0 -1
  321. package/dist/chunk-IJ4YYWE3.mjs +0 -122
  322. package/dist/chunk-IJ4YYWE3.mjs.map +0 -1
  323. package/dist/chunk-J4BEIZUC.js +0 -92
  324. package/dist/chunk-J4BEIZUC.js.map +0 -1
  325. package/dist/chunk-OKPWFVXC.js +0 -24
  326. package/dist/chunk-OKPWFVXC.js.map +0 -1
  327. package/dist/chunk-PNOTQAYK.mjs +0 -560
  328. package/dist/chunk-PNOTQAYK.mjs.map +0 -1
  329. package/dist/chunk-PTMSDNGO.mjs.map +0 -1
  330. package/dist/chunk-Q2IAL7YV.js +0 -36
  331. package/dist/chunk-Q2IAL7YV.js.map +0 -1
  332. package/dist/chunk-QQ2WFYOD.js.map +0 -1
  333. package/dist/chunk-VQ54PUQV.js.map +0 -1
  334. package/dist/chunk-W5JEGA76.mjs +0 -33
  335. package/dist/chunk-W5JEGA76.mjs.map +0 -1
  336. package/dist/chunk-YGI7UU2D.mjs.map +0 -1
  337. package/dist/chunk-ZCLQSI5F.mjs +0 -271
  338. package/dist/chunk-ZCLQSI5F.mjs.map +0 -1
  339. package/dist/drizzle-auth-service-D-pljzCD.d.mts +0 -145
  340. package/dist/drizzle-auth-service-D3qryE_I.d.ts +0 -145
  341. package/dist/index-DNKZ7-R_.d.mts +0 -184
  342. package/dist/index-DNKZ7-R_.d.ts +0 -184
  343. package/dist/types-C5vUWf9u.d.ts +0 -70
  344. package/dist/types-IYCqCk2g.d.mts +0 -70
  345. /package/dist/{auth/middleware → common/auth/client}/index.js.map +0 -0
  346. /package/dist/{auth/middleware → common/auth/client}/index.mjs.map +0 -0
  347. /package/dist/{auth/routes → common/auth/components}/index.js.map +0 -0
  348. /package/dist/{auth/routes → common/auth/components}/index.mjs.map +0 -0
@@ -0,0 +1,144 @@
1
+ import { getAuthClientError, errorMessage } from './chunk-ZF7DKR5A.mjs';
2
+ import { useCallback } from 'react';
3
+
4
+ function clientApi(client) {
5
+ return client;
6
+ }
7
+ function useAuthActions(authClient) {
8
+ const signInWithEmail = useCallback(
9
+ async (email, password) => {
10
+ try {
11
+ const result = await clientApi(authClient).signIn.email({ email, password });
12
+ const err = getAuthClientError(result, "\u767B\u5F55\u5931\u8D25");
13
+ return err ? { success: false, error: err } : { success: true };
14
+ } catch (e) {
15
+ return { success: false, error: errorMessage(e, "\u767B\u5F55\u5931\u8D25") };
16
+ }
17
+ },
18
+ [authClient]
19
+ );
20
+ const signInWithPhonePassword = useCallback(
21
+ async (phoneNumber, password) => {
22
+ try {
23
+ const result = await clientApi(authClient).signIn.phoneNumber({ phoneNumber, password });
24
+ const err = getAuthClientError(result, "\u767B\u5F55\u5931\u8D25");
25
+ return err ? { success: false, error: err } : { success: true };
26
+ } catch (e) {
27
+ return { success: false, error: errorMessage(e, "\u767B\u5F55\u5931\u8D25") };
28
+ }
29
+ },
30
+ [authClient]
31
+ );
32
+ const signUpWithEmail = useCallback(
33
+ async (email, password, name) => {
34
+ try {
35
+ const result = await clientApi(authClient).signUp.email({ email, password, name });
36
+ const err = getAuthClientError(result, "\u6CE8\u518C\u5931\u8D25");
37
+ return err ? { success: false, error: err } : { success: true };
38
+ } catch (e) {
39
+ return { success: false, error: errorMessage(e, "\u6CE8\u518C\u5931\u8D25") };
40
+ }
41
+ },
42
+ [authClient]
43
+ );
44
+ const sendPhoneOtp = useCallback(
45
+ async (phoneNumber) => {
46
+ try {
47
+ const result = await clientApi(authClient).phoneNumber.sendOtp({ phoneNumber });
48
+ const err = getAuthClientError(result, "\u9A8C\u8BC1\u7801\u53D1\u9001\u5931\u8D25");
49
+ return err ? { success: false, error: err } : { success: true };
50
+ } catch (e) {
51
+ return { success: false, error: errorMessage(e, "\u9A8C\u8BC1\u7801\u53D1\u9001\u5931\u8D25") };
52
+ }
53
+ },
54
+ [authClient]
55
+ );
56
+ const verifyPhoneOtp = useCallback(
57
+ async (phoneNumber, code) => {
58
+ try {
59
+ const result = await clientApi(authClient).phoneNumber.verify({ phoneNumber, code });
60
+ const err = getAuthClientError(result, "\u9A8C\u8BC1\u5931\u8D25");
61
+ return err ? { success: false, error: err } : { success: true };
62
+ } catch (e) {
63
+ return { success: false, error: errorMessage(e, "\u9A8C\u8BC1\u5931\u8D25") };
64
+ }
65
+ },
66
+ [authClient]
67
+ );
68
+ const sendEmailOtp = useCallback(
69
+ async (email, type = "sign-in") => {
70
+ try {
71
+ const result = await clientApi(authClient).emailOtp.sendVerificationOtp({ email, type });
72
+ const err = getAuthClientError(result, "\u9A8C\u8BC1\u7801\u53D1\u9001\u5931\u8D25");
73
+ return err ? { success: false, error: err } : { success: true };
74
+ } catch (e) {
75
+ return { success: false, error: errorMessage(e, "\u9A8C\u8BC1\u7801\u53D1\u9001\u5931\u8D25") };
76
+ }
77
+ },
78
+ [authClient]
79
+ );
80
+ const signInWithEmailOtp = useCallback(
81
+ async (email, otp) => {
82
+ try {
83
+ const result = await clientApi(authClient).signIn.emailOtp({ email, otp });
84
+ const err = getAuthClientError(result, "\u767B\u5F55\u5931\u8D25");
85
+ return err ? { success: false, error: err } : { success: true };
86
+ } catch (e) {
87
+ return { success: false, error: errorMessage(e, "\u767B\u5F55\u5931\u8D25") };
88
+ }
89
+ },
90
+ [authClient]
91
+ );
92
+ const requestPhonePasswordReset = useCallback(
93
+ async (phoneNumber) => {
94
+ try {
95
+ const result = await clientApi(authClient).phoneNumber.requestPasswordReset({ phoneNumber });
96
+ const err = getAuthClientError(result, "\u53D1\u9001\u9A8C\u8BC1\u7801\u5931\u8D25");
97
+ return err ? { success: false, error: err } : { success: true };
98
+ } catch (e) {
99
+ return { success: false, error: errorMessage(e, "\u53D1\u9001\u9A8C\u8BC1\u7801\u5931\u8D25") };
100
+ }
101
+ },
102
+ [authClient]
103
+ );
104
+ const resetPhonePassword = useCallback(
105
+ async (phoneNumber, otp, newPassword) => {
106
+ try {
107
+ const result = await clientApi(authClient).phoneNumber.resetPassword({
108
+ phoneNumber,
109
+ otp,
110
+ newPassword
111
+ });
112
+ const err = getAuthClientError(result, "\u91CD\u7F6E\u5BC6\u7801\u5931\u8D25");
113
+ return err ? { success: false, error: err } : { success: true };
114
+ } catch (e) {
115
+ return { success: false, error: errorMessage(e, "\u91CD\u7F6E\u5BC6\u7801\u5931\u8D25") };
116
+ }
117
+ },
118
+ [authClient]
119
+ );
120
+ const signOut = useCallback(async () => {
121
+ try {
122
+ await clientApi(authClient).signOut();
123
+ return { success: true };
124
+ } catch (e) {
125
+ return { success: false, error: errorMessage(e, "\u9000\u51FA\u5931\u8D25") };
126
+ }
127
+ }, [authClient]);
128
+ return {
129
+ signInWithEmail,
130
+ signInWithPhonePassword,
131
+ signUpWithEmail,
132
+ sendPhoneOtp,
133
+ verifyPhoneOtp,
134
+ sendEmailOtp,
135
+ signInWithEmailOtp,
136
+ requestPhonePasswordReset,
137
+ resetPhonePassword,
138
+ signOut
139
+ };
140
+ }
141
+
142
+ export { useAuthActions };
143
+ //# sourceMappingURL=chunk-TTYCVBIQ.mjs.map
144
+ //# sourceMappingURL=chunk-TTYCVBIQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/auth/hooks/useAuthActions.ts"],"names":[],"mappings":"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","file":"chunk-TTYCVBIQ.mjs","sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { errorMessage, getAuthClientError } from '../components/utils';\n\n/** Better Auth 客户端(vanilla 或 React 均可) */\nexport type AuthActionsClient = Record<string, unknown>;\n\nfunction clientApi(client: AuthActionsClient) {\n return client as {\n signIn: {\n email: (input: { email: string; password: string }) => Promise<unknown>;\n phoneNumber: (input: { phoneNumber: string; password: string }) => Promise<unknown>;\n emailOtp: (input: { email: string; otp: string }) => Promise<unknown>;\n };\n signUp: { email: (input: { email: string; password: string; name: string }) => Promise<unknown> };\n phoneNumber: {\n sendOtp: (input: { phoneNumber: string }) => Promise<unknown>;\n verify: (input: { phoneNumber: string; code: string }) => Promise<unknown>;\n requestPasswordReset: (input: { phoneNumber: string }) => Promise<unknown>;\n resetPassword: (input: { phoneNumber: string; otp: string; newPassword: string }) => Promise<unknown>;\n };\n emailOtp: {\n sendVerificationOtp: (input: {\n email: string;\n type: 'sign-in' | 'email-verification' | 'forget-password';\n }) => Promise<unknown>;\n };\n signOut: () => Promise<unknown>;\n };\n}\n\nexport function useAuthActions(authClient: AuthActionsClient) {\n const signInWithEmail = useCallback(\n async (email: string, password: string) => {\n try {\n const result = await clientApi(authClient).signIn.email({ email, password });\n const err = getAuthClientError(result, '登录失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '登录失败') };\n }\n },\n [authClient],\n );\n\n const signInWithPhonePassword = useCallback(\n async (phoneNumber: string, password: string) => {\n try {\n const result = await clientApi(authClient).signIn.phoneNumber({ phoneNumber, password });\n const err = getAuthClientError(result, '登录失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '登录失败') };\n }\n },\n [authClient],\n );\n\n const signUpWithEmail = useCallback(\n async (email: string, password: string, name: string) => {\n try {\n const result = await clientApi(authClient).signUp.email({ email, password, name });\n const err = getAuthClientError(result, '注册失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '注册失败') };\n }\n },\n [authClient],\n );\n\n const sendPhoneOtp = useCallback(\n async (phoneNumber: string) => {\n try {\n const result = await clientApi(authClient).phoneNumber.sendOtp({ phoneNumber });\n const err = getAuthClientError(result, '验证码发送失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '验证码发送失败') };\n }\n },\n [authClient],\n );\n\n const verifyPhoneOtp = useCallback(\n async (phoneNumber: string, code: string) => {\n try {\n const result = await clientApi(authClient).phoneNumber.verify({ phoneNumber, code });\n const err = getAuthClientError(result, '验证失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '验证失败') };\n }\n },\n [authClient],\n );\n\n const sendEmailOtp = useCallback(\n async (email: string, type: 'sign-in' | 'email-verification' | 'forget-password' = 'sign-in') => {\n try {\n const result = await clientApi(authClient).emailOtp.sendVerificationOtp({ email, type });\n const err = getAuthClientError(result, '验证码发送失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '验证码发送失败') };\n }\n },\n [authClient],\n );\n\n const signInWithEmailOtp = useCallback(\n async (email: string, otp: string) => {\n try {\n const result = await clientApi(authClient).signIn.emailOtp({ email, otp });\n const err = getAuthClientError(result, '登录失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '登录失败') };\n }\n },\n [authClient],\n );\n\n const requestPhonePasswordReset = useCallback(\n async (phoneNumber: string) => {\n try {\n const result = await clientApi(authClient).phoneNumber.requestPasswordReset({ phoneNumber });\n const err = getAuthClientError(result, '发送验证码失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '发送验证码失败') };\n }\n },\n [authClient],\n );\n\n const resetPhonePassword = useCallback(\n async (phoneNumber: string, otp: string, newPassword: string) => {\n try {\n const result = await clientApi(authClient).phoneNumber.resetPassword({\n phoneNumber,\n otp,\n newPassword,\n });\n const err = getAuthClientError(result, '重置密码失败');\n return err ? { success: false as const, error: err } : { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '重置密码失败') };\n }\n },\n [authClient],\n );\n\n const signOut = useCallback(async () => {\n try {\n await clientApi(authClient).signOut();\n return { success: true as const };\n } catch (e) {\n return { success: false as const, error: errorMessage(e, '退出失败') };\n }\n }, [authClient]);\n\n return {\n signInWithEmail,\n signInWithPhonePassword,\n signUpWithEmail,\n sendPhoneOtp,\n verifyPhoneOtp,\n sendEmailOtp,\n signInWithEmailOtp,\n requestPhonePasswordReset,\n resetPhonePassword,\n signOut,\n };\n}\n\nexport type UseAuthActionsReturn = ReturnType<typeof useAuthActions>;\n"]}
@@ -2,7 +2,10 @@
2
2
 
3
3
  var react = require('react');
4
4
 
5
- // src/common/auth/hooks/useAuth.ts
5
+ // src/common/auth/hooks/useSession.ts
6
+ function useSession(authClient) {
7
+ return authClient.useSession();
8
+ }
6
9
  function useAuth(apiClient) {
7
10
  const [user, setUser] = react.useState(null);
8
11
  const [isLoggedIn, setIsLoggedIn] = react.useState(false);
@@ -182,5 +185,6 @@ function useAuthForm(initialValues) {
182
185
 
183
186
  exports.useAuth = useAuth;
184
187
  exports.useAuthForm = useAuthForm;
185
- //# sourceMappingURL=chunk-HBF4HPRK.js.map
186
- //# sourceMappingURL=chunk-HBF4HPRK.js.map
188
+ exports.useSession = useSession;
189
+ //# sourceMappingURL=chunk-TXMX6PZR.js.map
190
+ //# sourceMappingURL=chunk-TXMX6PZR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/auth/hooks/useSession.ts","../src/common/auth/hooks/useAuth.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"chunk-TXMX6PZR.js","sourcesContent":["'use client';\n\nimport type { Sa2kitAuthClient } from '../react';\n\n/**\n * 薄封装 Better Auth React `useSession`\n */\nexport function useSession(authClient: Sa2kitAuthClient) {\n return authClient.useSession();\n}\n\nexport type UseSessionReturn = ReturnType<typeof useSession>;\n","'use client';\n\nimport { useState, useEffect, useCallback } from 'react';\nimport type { User, IAuthClient as BaseApiClient, AuthResult, UseAuthReturn } from '../types';\n\nexport type { User, BaseApiClient, AuthResult, UseAuthReturn };\n\nexport function useAuth(apiClient: BaseApiClient): UseAuthReturn {\n const [user, setUser] = useState<User | null>(null);\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [loading, setLoading] = useState(false);\n const [checkingAuth, setCheckingAuth] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n /**\n * 检查认证状态\n */\n const checkAuthStatus = useCallback(async () => {\n try {\n setCheckingAuth(true);\n setError(null);\n\n const isAuth = await apiClient.isAuthenticated();\n\n if (isAuth) {\n // 验证 token 并获取用户信息\n const response = await apiClient.getCurrentUser();\n\n if (response.success && response.data) {\n setUser(response.data);\n setIsLoggedIn(true);\n } else {\n // Token 无效,清除登录状态\n await apiClient.clearUserData();\n setUser(null);\n setIsLoggedIn(false);\n }\n } else {\n setUser(null);\n setIsLoggedIn(false);\n }\n } catch (err) {\n console.error('检查登录状态失败:', err);\n setError(err instanceof Error ? err.message : '检查登录状态失败');\n setUser(null);\n setIsLoggedIn(false);\n } finally {\n setCheckingAuth(false);\n }\n }, [apiClient]);\n\n /**\n * 用户登录\n */\n const login = useCallback(\n async (email: string, password: string): Promise<AuthResult> => {\n setLoading(true);\n setError(null);\n\n try {\n const response = await apiClient.login(email, password);\n\n if (response.success && response.data) {\n setUser(response.data.user);\n setIsLoggedIn(true);\n return { success: true };\n } else {\n const errorMsg = response.error || '登录失败';\n setError(errorMsg);\n return { success: false, error: errorMsg };\n }\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : '登录失败,请重试';\n setError(errorMsg);\n return { success: false, error: errorMsg };\n } finally {\n setLoading(false);\n }\n },\n [apiClient]\n );\n\n /**\n * 用户注册\n */\n const register = useCallback(\n async (email: string, password: string, username: string): Promise<AuthResult> => {\n setLoading(true);\n setError(null);\n\n try {\n const response = await apiClient.register(email, password, username);\n\n if (response.success && response.data) {\n setUser(response.data.user);\n setIsLoggedIn(true);\n return { success: true };\n } else {\n const errorMsg = response.error || '注册失败';\n setError(errorMsg);\n return { success: false, error: errorMsg };\n }\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : '注册失败,请重试';\n setError(errorMsg);\n return { success: false, error: errorMsg };\n } finally {\n setLoading(false);\n }\n },\n [apiClient]\n );\n\n /**\n * 用户登出\n */\n const logout = useCallback(async () => {\n setLoading(true);\n setError(null);\n\n try {\n await apiClient.logout();\n setUser(null);\n setIsLoggedIn(false);\n } catch (err) {\n console.error('登出失败:', err);\n setError(err instanceof Error ? err.message : '登出失败');\n // 即使登出失败,也清除本地状态\n setUser(null);\n setIsLoggedIn(false);\n } finally {\n setLoading(false);\n }\n }, [apiClient]);\n\n /**\n * 清除错误信息\n */\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n // 组件挂载时检查认证状态\n useEffect(() => {\n checkAuthStatus();\n }, [checkAuthStatus]);\n\n return {\n // 状态\n user,\n isLoggedIn,\n loading,\n checkingAuth,\n error,\n\n // 操作方法\n login,\n register,\n logout,\n refresh: checkAuthStatus,\n clearError,\n };\n}\n\n/**\n * 表单验证 Hook\n *\n * @example\n * ```typescript\n * const { values, errors, handleChange, handleBlur, validate } = useAuthForm({\n * email: '',\n * password: ''\n * })\n * ```\n */\nexport function useAuthForm<T extends Record<string, any>>(initialValues: T) {\n const [values, setValues] = useState<T>(initialValues);\n const [errors, setErrors] = useState<Partial<Record<keyof T, string>>>({});\n const [touched, setTouched] = useState<Partial<Record<keyof T, boolean>>>({});\n\n const handleChange = useCallback(\n (field: keyof T, value: any) => {\n setValues((prev: T) => ({ ...prev, [field]: value }));\n // 清除该字段的错误\n if (errors[field]) {\n setErrors((prev: Partial<Record<keyof T, string>>) => {\n const newErrors = { ...prev };\n delete newErrors[field];\n return newErrors;\n });\n }\n },\n [errors]\n );\n\n const handleBlur = useCallback((field: keyof T) => {\n setTouched((prev: Partial<Record<keyof T, boolean>>) => ({ ...prev, [field]: true }));\n }, []);\n\n const validate = useCallback(\n (validationRules: Partial<Record<keyof T, (value: any) => string | undefined>>) => {\n const newErrors: Partial<Record<keyof T, string>> = {};\n\n Object.keys(validationRules).forEach((key) => {\n const field = key as keyof T;\n const rule = validationRules[field];\n if (rule) {\n const error = rule(values[field]);\n if (error) {\n newErrors[field] = error;\n }\n }\n });\n\n setErrors(newErrors);\n return Object.keys(newErrors).length === 0;\n },\n [values]\n );\n\n const reset = useCallback(() => {\n setValues(initialValues);\n setErrors({});\n setTouched({});\n }, [initialValues]);\n\n return {\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n validate,\n reset,\n setValues,\n setErrors,\n };\n}\n\n"]}
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var bcrypt = require('bcryptjs');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var bcrypt__default = /*#__PURE__*/_interopDefault(bcrypt);
8
+
9
+ // src/common/auth/services/password-utils.ts
10
+ async function hashPassword(password, saltRounds = 12) {
11
+ return bcrypt__default.default.hash(password, saltRounds);
12
+ }
13
+ async function verifyPassword(password, hashedPassword) {
14
+ return bcrypt__default.default.compare(password, hashedPassword);
15
+ }
16
+
17
+ exports.hashPassword = hashPassword;
18
+ exports.verifyPassword = verifyPassword;
19
+ //# sourceMappingURL=chunk-VHN7PF5I.js.map
20
+ //# sourceMappingURL=chunk-VHN7PF5I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/auth/services/password-utils.ts"],"names":["bcrypt"],"mappings":";;;;;;;;;AAUA,eAAsB,YAAA,CAAa,QAAA,EAAkB,UAAA,GAAqB,EAAA,EAAqB;AAC7F,EAAA,OAAOA,uBAAA,CAAO,IAAA,CAAK,QAAA,EAAU,UAAU,CAAA;AACzC;AAKA,eAAsB,cAAA,CAAe,UAAkB,cAAA,EAA0C;AAC/F,EAAA,OAAOA,uBAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,cAAc,CAAA;AAChD","file":"chunk-VHN7PF5I.js","sourcesContent":["/**\n * Auth Services - Password Utilities\n * 密码哈希相关工具函数\n */\n\nimport bcrypt from 'bcryptjs';\n\n/**\n * 哈希密码\n */\nexport async function hashPassword(password: string, saltRounds: number = 12): Promise<string> {\n return bcrypt.hash(password, saltRounds);\n}\n\n/**\n * 验证密码\n */\nexport async function verifyPassword(password: string, hashedPassword: string): Promise<boolean> {\n return bcrypt.compare(password, hashedPassword);\n}\n\n"]}
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ var chunkIS7O4LPI_js = require('./chunk-IS7O4LPI.js');
4
+ var React = require('react');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var React__default = /*#__PURE__*/_interopDefault(React);
9
+
10
+ var AuthContext = React.createContext(null);
11
+ function AuthProvider({ authClient, children }) {
12
+ const session = authClient.useSession();
13
+ const actions = chunkIS7O4LPI_js.useAuthActions(authClient);
14
+ const user = session.data?.user ?? null;
15
+ const value = React.useMemo(
16
+ () => ({
17
+ authClient,
18
+ user,
19
+ isAuthenticated: !!user,
20
+ loading: session.isPending,
21
+ refreshSession: async () => {
22
+ await session.refetch();
23
+ },
24
+ ...actions
25
+ }),
26
+ [authClient, user, session.isPending, session.refetch, actions]
27
+ );
28
+ return /* @__PURE__ */ React__default.default.createElement(AuthContext.Provider, { value }, children);
29
+ }
30
+ function useAuthContext() {
31
+ const ctx = React.useContext(AuthContext);
32
+ if (!ctx) {
33
+ throw new Error("useAuthContext \u5FC5\u987B\u5728 AuthProvider \u5185\u4F7F\u7528");
34
+ }
35
+ return ctx;
36
+ }
37
+
38
+ exports.AuthProvider = AuthProvider;
39
+ exports.useAuthContext = useAuthContext;
40
+ //# sourceMappingURL=chunk-VJNDOYEC.js.map
41
+ //# sourceMappingURL=chunk-VJNDOYEC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/auth/context/AuthProvider.tsx"],"names":["createContext","useAuthActions","useMemo","React","useContext"],"mappings":";;;;;;;;;AAwBA,IAAM,WAAA,GAAcA,oBAAuC,IAAI,CAAA;AAOxD,SAAS,YAAA,CAAa,EAAE,UAAA,EAAY,QAAA,EAAS,EAAsB;AACxE,EAAA,MAAM,OAAA,GAAU,WAAW,UAAA,EAAW;AACtC,EAAA,MAAM,OAAA,GAAUC,gCAAe,UAAU,CAAA;AAEzC,EAAA,MAAM,IAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,IAAA,IAAiC,IAAA;AAE7D,EAAA,MAAM,KAAA,GAAQC,aAAA;AAAA,IACZ,OAAO;AAAA,MACL,UAAA;AAAA,MACA,IAAA;AAAA,MACA,eAAA,EAAiB,CAAC,CAAC,IAAA;AAAA,MACnB,SAAS,OAAA,CAAQ,SAAA;AAAA,MACjB,gBAAgB,YAAY;AAC1B,QAAA,MAAM,QAAQ,OAAA,EAAQ;AAAA,MACxB,CAAA;AAAA,MACA,GAAG;AAAA,KACL,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,IAAA,EAAM,QAAQ,SAAA,EAAW,OAAA,CAAQ,SAAS,OAAO;AAAA,GAChE;AAEA,EAAA,uBAAOC,sBAAA,CAAA,aAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,SAAe,QAAS,CAAA;AACvD;AAEO,SAAS,cAAA,GAAmC;AACjD,EAAA,MAAM,GAAA,GAAMC,iBAAW,WAAW,CAAA;AAClC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,mEAAqC,CAAA;AAAA,EACvD;AACA,EAAA,OAAO,GAAA;AACT","file":"chunk-VJNDOYEC.js","sourcesContent":["'use client';\n\nimport React, { createContext, useContext, useMemo } from 'react';\nimport type { Sa2kitAuthClient } from '../react';\nimport { useAuthActions, type UseAuthActionsReturn } from '../hooks/useAuthActions';\n\nexport type AuthUser = {\n id: string;\n email?: string;\n name?: string;\n phoneNumber?: string | null;\n role?: string;\n image?: string | null;\n [key: string]: unknown;\n};\n\nexport type AuthContextValue = UseAuthActionsReturn & {\n authClient: Sa2kitAuthClient;\n user: AuthUser | null;\n isAuthenticated: boolean;\n loading: boolean;\n refreshSession: () => Promise<void>;\n};\n\nconst AuthContext = createContext<AuthContextValue | null>(null);\n\nexport type AuthProviderProps = {\n authClient: Sa2kitAuthClient;\n children: React.ReactNode;\n};\n\nexport function AuthProvider({ authClient, children }: AuthProviderProps) {\n const session = authClient.useSession();\n const actions = useAuthActions(authClient);\n\n const user = (session.data?.user as AuthUser | undefined) ?? null;\n\n const value = useMemo<AuthContextValue>(\n () => ({\n authClient,\n user,\n isAuthenticated: !!user,\n loading: session.isPending,\n refreshSession: async () => {\n await session.refetch();\n },\n ...actions,\n }),\n [authClient, user, session.isPending, session.refetch, actions],\n );\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n\nexport function useAuthContext(): AuthContextValue {\n const ctx = useContext(AuthContext);\n if (!ctx) {\n throw new Error('useAuthContext 必须在 AuthProvider 内使用');\n }\n return ctx;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import bcrypt from 'bcryptjs';
2
+
3
+ // src/common/auth/services/password-utils.ts
4
+ async function hashPassword(password, saltRounds = 12) {
5
+ return bcrypt.hash(password, saltRounds);
6
+ }
7
+ async function verifyPassword(password, hashedPassword) {
8
+ return bcrypt.compare(password, hashedPassword);
9
+ }
10
+
11
+ export { hashPassword, verifyPassword };
12
+ //# sourceMappingURL=chunk-XBZIS3MV.mjs.map
13
+ //# sourceMappingURL=chunk-XBZIS3MV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/auth/services/password-utils.ts"],"names":[],"mappings":";;;AAUA,eAAsB,YAAA,CAAa,QAAA,EAAkB,UAAA,GAAqB,EAAA,EAAqB;AAC7F,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,QAAA,EAAU,UAAU,CAAA;AACzC;AAKA,eAAsB,cAAA,CAAe,UAAkB,cAAA,EAA0C;AAC/F,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,cAAc,CAAA;AAChD","file":"chunk-XBZIS3MV.mjs","sourcesContent":["/**\n * Auth Services - Password Utilities\n * 密码哈希相关工具函数\n */\n\nimport bcrypt from 'bcryptjs';\n\n/**\n * 哈希密码\n */\nexport async function hashPassword(password: string, saltRounds: number = 12): Promise<string> {\n return bcrypt.hash(password, saltRounds);\n}\n\n/**\n * 验证密码\n */\nexport async function verifyPassword(password: string, hashedPassword: string): Promise<boolean> {\n return bcrypt.compare(password, hashedPassword);\n}\n\n"]}
@@ -0,0 +1,20 @@
1
+ import { createSa2kitAuthClient } from './chunk-LHJKLUM7.mjs';
2
+ import { STORAGE_KEYS, BaseApiClient, API_ROUTES } from './chunk-G4NFB2QA.mjs';
3
+ import { useSession, useAuthForm, useAuth } from './chunk-MZOGYD4N.mjs';
4
+ import { __export } from './chunk-MAI35PU6.mjs';
5
+
6
+ // src/common/auth/index.ts
7
+ var auth_exports = {};
8
+ __export(auth_exports, {
9
+ API_ROUTES: () => API_ROUTES,
10
+ BaseApiClient: () => BaseApiClient,
11
+ STORAGE_KEYS: () => STORAGE_KEYS,
12
+ createSa2kitAuthClient: () => createSa2kitAuthClient,
13
+ useAuth: () => useAuth,
14
+ useAuthForm: () => useAuthForm,
15
+ useSession: () => useSession
16
+ });
17
+
18
+ export { auth_exports };
19
+ //# sourceMappingURL=chunk-XFOZ56FB.mjs.map
20
+ //# sourceMappingURL=chunk-XFOZ56FB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/auth/index.ts"],"names":[],"mappings":";;;;;;AAAA,IAAA,YAAA,GAAA;AAAA,QAAA,CAAA,YAAA,EAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA;AAAA,CAAA,CAAA","file":"chunk-XFOZ56FB.mjs","sourcesContent":["/**\n * @package sa2kit/common/auth\n *\n * Browser / client 安全入口(Better Auth 3.0)\n */\nexport { createSa2kitAuthClient, type Sa2kitAuthClient, type Sa2kitAuthClientOptions } from './client';\nexport { useSession, type UseSessionReturn } from './hooks/useSession';\n\n/** @deprecated 3.0 请使用 createSa2kitAuthClient + useSession */\nexport { useAuth, useAuthForm } from './hooks/useAuth';\n/** @deprecated 3.0 请使用 createSa2kitAuthClient */\nexport { BaseApiClient, API_ROUTES, STORAGE_KEYS } from './client';\n\nexport type { LoginFormState, RegisterFormState } from './components/types';\nexport * from './types';\n"]}
@@ -0,0 +1,136 @@
1
+ 'use strict';
2
+
3
+ var chunkLGHUCQIU_js = require('./chunk-LGHUCQIU.js');
4
+ var betterAuth = require('better-auth');
5
+ var drizzleAdapter = require('@better-auth/drizzle-adapter');
6
+ var plugins = require('better-auth/plugins');
7
+ var nextJs = require('better-auth/next-js');
8
+
9
+ // src/common/auth/server/plugins/dev-otp.ts
10
+ function createDevOtpLogger(enabled) {
11
+ if (!enabled || process.env.NODE_ENV === "production") {
12
+ return void 0;
13
+ }
14
+ return (channel, target, code) => {
15
+ console.info(`[sa2kit/auth][dev-otp][${channel}] ${target} => ${code}`);
16
+ };
17
+ }
18
+ var defaultPhoneValidator = (phoneNumber2) => /^1\d{10}$/.test(phoneNumber2);
19
+ var defaultTempEmailFromPhone = (phoneNumber2) => `${phoneNumber2.replace(/\D/g, "")}@phone.sa2kit.local`;
20
+
21
+ // src/common/auth/server/create-auth.ts
22
+ function createSa2kitAuth(config) {
23
+ if (!config.secret || config.secret.length < 32) {
24
+ throw new Error("createSa2kitAuth: secret \u81F3\u5C11 32 \u5B57\u7B26");
25
+ }
26
+ const devLog = createDevOtpLogger(config.logOtpInDev ?? process.env.NODE_ENV !== "production");
27
+ const phoneValidator = config.phoneNumberValidator ?? defaultPhoneValidator;
28
+ const auth = betterAuth.betterAuth({
29
+ appName: "sa2kit",
30
+ baseURL: config.baseURL,
31
+ basePath: config.basePath ?? "/api/auth",
32
+ secret: config.secret,
33
+ trustedOrigins: config.trustedOrigins,
34
+ database: drizzleAdapter.drizzleAdapter(config.db, {
35
+ provider: "pg",
36
+ schema: chunkLGHUCQIU_js.authDrizzleSchema
37
+ }),
38
+ emailAndPassword: {
39
+ enabled: true
40
+ },
41
+ user: {
42
+ additionalFields: {
43
+ role: {
44
+ type: "string",
45
+ required: false,
46
+ defaultValue: "USER",
47
+ input: false
48
+ }
49
+ }
50
+ },
51
+ plugins: [
52
+ plugins.bearer(),
53
+ plugins.emailOTP({
54
+ async sendVerificationOTP({ email, otp, type }) {
55
+ devLog?.("email", `${email} (${type})`, otp);
56
+ if (config.email?.sendVerificationOTP) {
57
+ await config.email.sendVerificationOTP(email, otp, type);
58
+ }
59
+ }
60
+ }),
61
+ plugins.phoneNumber({
62
+ allowedAttempts: 5,
63
+ phoneNumberValidator: phoneValidator,
64
+ async sendOTP({ phoneNumber: phone, code }) {
65
+ devLog?.("sms", phone, code);
66
+ if (config.sms?.sendOTP) {
67
+ void config.sms.sendOTP(phone, code);
68
+ }
69
+ },
70
+ signUpOnVerification: {
71
+ getTempEmail: defaultTempEmailFromPhone,
72
+ getTempName: (phone) => phone
73
+ }
74
+ })
75
+ ]
76
+ });
77
+ return auth;
78
+ }
79
+ function mountNextAuthHandler(auth) {
80
+ return nextJs.toNextJsHandler(auth);
81
+ }
82
+
83
+ // src/common/auth/server/handler/hono.ts
84
+ function mountAuthHandler(auth) {
85
+ return (request) => auth.handler(request);
86
+ }
87
+ function createAuthRouteHandlers(auth) {
88
+ const handler = mountAuthHandler(auth);
89
+ return {
90
+ GET: handler,
91
+ POST: handler,
92
+ PUT: handler,
93
+ PATCH: handler,
94
+ DELETE: handler
95
+ };
96
+ }
97
+
98
+ // src/common/auth/server/session.ts
99
+ async function getSessionUser(auth, request) {
100
+ const session2 = await auth.api.getSession({ headers: request.headers });
101
+ if (!session2?.user) return null;
102
+ const user2 = session2.user;
103
+ return {
104
+ id: user2.id,
105
+ email: user2.email,
106
+ name: user2.name,
107
+ role: user2.role,
108
+ phoneNumber: user2.phoneNumber ?? null
109
+ };
110
+ }
111
+ async function getSessionUserNumeric(auth, request) {
112
+ const user2 = await getSessionUser(auth, request);
113
+ if (!user2) return null;
114
+ const numericId = Number.parseInt(user2.id, 10);
115
+ if (Number.isNaN(numericId)) return null;
116
+ const { id: _id, ...rest } = user2;
117
+ return { ...rest, id: numericId };
118
+ }
119
+ function createSessionValidator(auth) {
120
+ return {
121
+ getSessionUser: (request) => getSessionUser(auth, request),
122
+ getSessionUserNumeric: (request) => getSessionUserNumeric(auth, request)
123
+ };
124
+ }
125
+
126
+ exports.createAuthRouteHandlers = createAuthRouteHandlers;
127
+ exports.createSa2kitAuth = createSa2kitAuth;
128
+ exports.createSessionValidator = createSessionValidator;
129
+ exports.defaultPhoneValidator = defaultPhoneValidator;
130
+ exports.defaultTempEmailFromPhone = defaultTempEmailFromPhone;
131
+ exports.getSessionUser = getSessionUser;
132
+ exports.getSessionUserNumeric = getSessionUserNumeric;
133
+ exports.mountAuthHandler = mountAuthHandler;
134
+ exports.mountNextAuthHandler = mountNextAuthHandler;
135
+ //# sourceMappingURL=chunk-Z23HAXHL.js.map
136
+ //# sourceMappingURL=chunk-Z23HAXHL.js.map
@@ -0,0 +1 @@
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","betterAuth","drizzleAdapter","authDrizzleSchema","bearer","emailOTP","toNextJsHandler","session","user"],"mappings":"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","file":"chunk-Z23HAXHL.js","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"]}
@@ -0,0 +1,26 @@
1
+ // src/common/auth/components/utils.ts
2
+ function validatePhoneNumber(phone) {
3
+ return /^1[3-9]\d{9}$/.test(phone.trim());
4
+ }
5
+ function validatePassword(password) {
6
+ if (!password) return { valid: false, message: "\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A" };
7
+ if (password.length < 6) return { valid: false, message: "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11 6 \u4F4D" };
8
+ return { valid: true };
9
+ }
10
+ function validateEmail(email) {
11
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email.trim());
12
+ }
13
+ function getAuthClientError(result, fallback) {
14
+ const r = result;
15
+ if (!r?.error) return null;
16
+ return r.error.message ?? r.error.statusText ?? fallback;
17
+ }
18
+ function errorMessage(error, fallback) {
19
+ if (error instanceof Error && error.message) return error.message;
20
+ if (typeof error === "string") return error;
21
+ return fallback;
22
+ }
23
+
24
+ export { errorMessage, getAuthClientError, validateEmail, validatePassword, validatePhoneNumber };
25
+ //# sourceMappingURL=chunk-ZF7DKR5A.mjs.map
26
+ //# sourceMappingURL=chunk-ZF7DKR5A.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/auth/components/utils.ts"],"names":[],"mappings":";AACO,SAAS,oBAAoB,KAAA,EAAwB;AAC1D,EAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,CAAA;AAC1C;AAEO,SAAS,iBAAiB,QAAA,EAAwD;AACvF,EAAA,IAAI,CAAC,QAAA,EAAU,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,SAAS,sCAAA,EAAS;AACxD,EAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,SAAS,+CAAA,EAAa;AACtE,EAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AACvB;AAEO,SAAS,cAAc,KAAA,EAAwB;AACpD,EAAA,OAAO,4BAAA,CAA6B,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,CAAA;AACvD;AAOO,SAAS,kBAAA,CAAmB,QAAiB,QAAA,EAAiC;AACnF,EAAA,MAAM,CAAA,GAAI,MAAA;AACV,EAAA,IAAI,CAAC,CAAA,EAAG,KAAA,EAAO,OAAO,IAAA;AACtB,EAAA,OAAO,CAAA,CAAE,KAAA,CAAM,OAAA,IAAW,CAAA,CAAE,MAAM,UAAA,IAAc,QAAA;AAClD;AAEO,SAAS,YAAA,CAAa,OAAgB,QAAA,EAA0B;AACrE,EAAA,IAAI,KAAA,YAAiB,KAAA,IAAS,KAAA,CAAM,OAAA,SAAgB,KAAA,CAAM,OAAA;AAC1D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,OAAO,QAAA;AACT","file":"chunk-ZF7DKR5A.mjs","sourcesContent":["/** 中国大陆手机号 */\nexport function validatePhoneNumber(phone: string): boolean {\n return /^1[3-9]\\d{9}$/.test(phone.trim());\n}\n\nexport function validatePassword(password: string): { valid: boolean; message?: string } {\n if (!password) return { valid: false, message: '密码不能为空' };\n if (password.length < 6) return { valid: false, message: '密码长度至少 6 位' };\n return { valid: true };\n}\n\nexport function validateEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email.trim());\n}\n\ntype AuthClientResult = {\n error?: { message?: string; statusText?: string } | null;\n data?: unknown;\n};\n\nexport function getAuthClientError(result: unknown, fallback: string): string | null {\n const r = result as AuthClientResult | null | undefined;\n if (!r?.error) return null;\n return r.error.message ?? r.error.statusText ?? fallback;\n}\n\nexport function errorMessage(error: unknown, fallback: string): string {\n if (error instanceof Error && error.message) return error.message;\n if (typeof error === 'string') return error;\n return fallback;\n}\n"]}