sa2kit 2.0.4 → 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 (347) hide show
  1. package/dist/{UniversalFileService-GsP6D3Rc.d.ts → UniversalFileService-CC4d3wkc.d.ts} +2 -2
  2. package/dist/{UniversalFileService-BpvbZitV.d.mts → UniversalFileService-CzAE_G4V.d.mts} +2 -2
  3. package/dist/auth/client/index.d.mts +8 -27
  4. package/dist/auth/client/index.d.ts +8 -27
  5. package/dist/auth/client/index.js +9 -4
  6. package/dist/auth/client/index.mjs +2 -1
  7. package/dist/auth/components/index.d.mts +8 -225
  8. package/dist/auth/components/index.d.ts +8 -225
  9. package/dist/auth/components/index.js +62 -319
  10. package/dist/auth/components/index.js.map +1 -1
  11. package/dist/auth/components/index.mjs +6 -316
  12. package/dist/auth/components/index.mjs.map +1 -1
  13. package/dist/auth/hooks/index.d.mts +11 -29
  14. package/dist/auth/hooks/index.d.ts +11 -29
  15. package/dist/auth/hooks/index.js +14 -3
  16. package/dist/auth/hooks/index.mjs +4 -1
  17. package/dist/auth/index.d.mts +17 -14
  18. package/dist/auth/index.d.ts +17 -14
  19. package/dist/auth/index.js +51 -90
  20. package/dist/auth/index.mjs +8 -7
  21. package/dist/auth/rn/index.d.mts +3087 -18
  22. package/dist/auth/rn/index.d.ts +3087 -18
  23. package/dist/auth/rn/index.js +396 -477
  24. package/dist/auth/rn/index.js.map +1 -1
  25. package/dist/auth/rn/index.mjs +384 -475
  26. package/dist/auth/rn/index.mjs.map +1 -1
  27. package/dist/auth/schema/index.d.mts +3 -788
  28. package/dist/auth/schema/index.d.ts +3 -788
  29. package/dist/auth/schema/index.js +17 -9
  30. package/dist/auth/schema/index.mjs +1 -1
  31. package/dist/auth/services/index.d.mts +1 -48
  32. package/dist/auth/services/index.d.ts +1 -48
  33. package/dist/auth/services/index.js +3 -20
  34. package/dist/auth/services/index.mjs +1 -2
  35. package/dist/{base-api-client-B3wZZoaH.d.ts → base-api-client-BpmcQt4Q.d.ts} +1 -1
  36. package/dist/{base-api-client-ACKKt13v.d.mts → base-api-client-CFIhZK4C.d.mts} +1 -1
  37. package/dist/{base-api-client-ACKKt13v.d.ts → base-api-client-CFIhZK4C.d.ts} +1 -1
  38. package/dist/{base-api-client-DrL35Ea2.d.mts → base-api-client-DXLsq2yz.d.mts} +1 -1
  39. package/dist/business/index.d.mts +1 -5
  40. package/dist/business/index.d.ts +1 -5
  41. package/dist/business/index.js +34 -1135
  42. package/dist/business/index.js.map +1 -1
  43. package/dist/business/index.mjs +5 -1105
  44. package/dist/business/index.mjs.map +1 -1
  45. package/dist/calendar/routes/index.d.mts +74 -1
  46. package/dist/calendar/routes/index.d.ts +74 -1
  47. package/dist/calendar/routes/index.js +186 -97
  48. package/dist/calendar/routes/index.js.map +1 -1
  49. package/dist/calendar/routes/index.mjs +178 -99
  50. package/dist/calendar/routes/index.mjs.map +1 -1
  51. package/dist/{chunk-IIVNHQEI.mjs → chunk-5GBDDXYL.mjs} +4 -3
  52. package/dist/chunk-5GBDDXYL.mjs.map +1 -0
  53. package/dist/chunk-7E3J7VAD.mjs +3 -0
  54. package/dist/chunk-7E3J7VAD.mjs.map +1 -0
  55. package/dist/chunk-B3CZ3HXJ.mjs +126 -0
  56. package/dist/chunk-B3CZ3HXJ.mjs.map +1 -0
  57. package/dist/chunk-CAYOQDBR.js +78 -0
  58. package/dist/chunk-CAYOQDBR.js.map +1 -0
  59. package/dist/{chunk-PTMSDNGO.mjs → chunk-CX2GHCAI.mjs} +4 -75
  60. package/dist/chunk-CX2GHCAI.mjs.map +1 -0
  61. package/dist/chunk-EBHPTFG6.mjs +82 -0
  62. package/dist/chunk-EBHPTFG6.mjs.map +1 -0
  63. package/dist/chunk-FOQEQWX5.js +4 -0
  64. package/dist/chunk-FOQEQWX5.js.map +1 -0
  65. package/dist/{chunk-YGI7UU2D.mjs → chunk-G4NFB2QA.mjs} +2 -2
  66. package/dist/chunk-G4NFB2QA.mjs.map +1 -0
  67. package/dist/chunk-G5HJGXGC.mjs +39 -0
  68. package/dist/chunk-G5HJGXGC.mjs.map +1 -0
  69. package/dist/{chunk-GSNGCENJ.js → chunk-GQZHGSRR.js} +2 -39
  70. package/dist/chunk-GQZHGSRR.js.map +1 -0
  71. package/dist/chunk-GS7XLKET.js +41 -0
  72. package/dist/chunk-GS7XLKET.js.map +1 -0
  73. package/dist/{chunk-7B5SI4OF.mjs → chunk-IBWDBBX5.mjs} +4 -3
  74. package/dist/chunk-IBWDBBX5.mjs.map +1 -0
  75. package/dist/chunk-IS7O4LPI.js +146 -0
  76. package/dist/chunk-IS7O4LPI.js.map +1 -0
  77. package/dist/chunk-LGHUCQIU.js +93 -0
  78. package/dist/chunk-LGHUCQIU.js.map +1 -0
  79. package/dist/chunk-LHJKLUM7.mjs +18 -0
  80. package/dist/chunk-LHJKLUM7.mjs.map +1 -0
  81. package/dist/chunk-LKBIVQBT.mjs +34 -0
  82. package/dist/chunk-LKBIVQBT.mjs.map +1 -0
  83. package/dist/chunk-MIDXG6LS.js +32 -0
  84. package/dist/chunk-MIDXG6LS.js.map +1 -0
  85. package/dist/chunk-MWSAH7ZG.mjs +42 -0
  86. package/dist/chunk-MWSAH7ZG.mjs.map +1 -0
  87. package/dist/{chunk-HCI6JQOU.mjs → chunk-MZOGYD4N.mjs} +7 -4
  88. package/dist/chunk-MZOGYD4N.mjs.map +1 -0
  89. package/dist/chunk-NDGHXVGS.js +25 -0
  90. package/dist/chunk-NDGHXVGS.js.map +1 -0
  91. package/dist/chunk-Q5VFBPMG.mjs +76 -0
  92. package/dist/chunk-Q5VFBPMG.mjs.map +1 -0
  93. package/dist/chunk-QDUBO567.js +1148 -0
  94. package/dist/chunk-QDUBO567.js.map +1 -0
  95. package/dist/{chunk-3CSCIRQY.js → chunk-QP5N3ER6.js} +6 -5
  96. package/dist/chunk-QP5N3ER6.js.map +1 -0
  97. package/dist/chunk-RWCD2CAD.mjs +1132 -0
  98. package/dist/chunk-RWCD2CAD.mjs.map +1 -0
  99. package/dist/{chunk-VQ54PUQV.js → chunk-S37OK2QG.js} +2 -2
  100. package/dist/chunk-S37OK2QG.js.map +1 -0
  101. package/dist/chunk-S3PUP7N4.js +20 -0
  102. package/dist/chunk-S3PUP7N4.js.map +1 -0
  103. package/dist/{chunk-QQ2WFYOD.js → chunk-S6YSGVWD.js} +4 -76
  104. package/dist/chunk-S6YSGVWD.js.map +1 -0
  105. package/dist/chunk-SFDJNKWC.js +22 -0
  106. package/dist/chunk-SFDJNKWC.js.map +1 -0
  107. package/dist/chunk-TTYCVBIQ.mjs +144 -0
  108. package/dist/chunk-TTYCVBIQ.mjs.map +1 -0
  109. package/dist/{chunk-HBF4HPRK.js → chunk-TXMX6PZR.js} +7 -3
  110. package/dist/chunk-TXMX6PZR.js.map +1 -0
  111. package/dist/chunk-VHN7PF5I.js +20 -0
  112. package/dist/chunk-VHN7PF5I.js.map +1 -0
  113. package/dist/chunk-VJNDOYEC.js +41 -0
  114. package/dist/chunk-VJNDOYEC.js.map +1 -0
  115. package/dist/chunk-XBZIS3MV.mjs +13 -0
  116. package/dist/chunk-XBZIS3MV.mjs.map +1 -0
  117. package/dist/chunk-XFOZ56FB.mjs +20 -0
  118. package/dist/chunk-XFOZ56FB.mjs.map +1 -0
  119. package/dist/chunk-Z23HAXHL.js +136 -0
  120. package/dist/chunk-Z23HAXHL.js.map +1 -0
  121. package/dist/chunk-ZF7DKR5A.mjs +26 -0
  122. package/dist/chunk-ZF7DKR5A.mjs.map +1 -0
  123. package/dist/common/auth/client/index.d.mts +3239 -0
  124. package/dist/common/auth/client/index.d.ts +3239 -0
  125. package/dist/common/auth/client/index.js +26 -0
  126. package/dist/common/auth/client/index.mjs +5 -0
  127. package/dist/common/auth/components/index.d.mts +374 -0
  128. package/dist/common/auth/components/index.d.ts +374 -0
  129. package/dist/common/auth/components/index.js +70 -0
  130. package/dist/common/auth/components/index.mjs +9 -0
  131. package/dist/common/auth/hooks/index.d.mts +75 -0
  132. package/dist/common/auth/hooks/index.d.ts +75 -0
  133. package/dist/common/auth/hooks/index.js +28 -0
  134. package/dist/common/auth/hooks/index.js.map +1 -0
  135. package/dist/common/auth/hooks/index.mjs +7 -0
  136. package/dist/common/auth/hooks/index.mjs.map +1 -0
  137. package/dist/common/auth/index.d.mts +14 -6
  138. package/dist/common/auth/index.d.ts +14 -6
  139. package/dist/common/auth/index.js +17 -8
  140. package/dist/common/auth/index.mjs +4 -3
  141. package/dist/common/auth/react/index.d.mts +3056 -0
  142. package/dist/common/auth/react/index.d.ts +3056 -0
  143. package/dist/common/auth/react/index.js +31 -0
  144. package/dist/common/auth/react/index.js.map +1 -0
  145. package/dist/common/auth/react/index.mjs +21 -0
  146. package/dist/common/auth/react/index.mjs.map +1 -0
  147. package/dist/common/auth/rn/index.d.mts +3138 -0
  148. package/dist/common/auth/rn/index.d.ts +3138 -0
  149. package/dist/common/auth/rn/index.js +348 -0
  150. package/dist/common/auth/rn/index.js.map +1 -0
  151. package/dist/common/auth/rn/index.mjs +327 -0
  152. package/dist/common/auth/rn/index.mjs.map +1 -0
  153. package/dist/common/auth/schema/index.d.mts +1479 -0
  154. package/dist/common/auth/schema/index.d.ts +1479 -0
  155. package/dist/common/auth/schema/index.js +49 -0
  156. package/dist/common/auth/schema/index.js.map +1 -0
  157. package/dist/common/auth/schema/index.mjs +4 -0
  158. package/dist/common/auth/schema/index.mjs.map +1 -0
  159. package/dist/common/auth/server/index.d.mts +7 -30
  160. package/dist/common/auth/server/index.d.ts +7 -30
  161. package/dist/common/auth/server/index.js +36 -79
  162. package/dist/common/auth/server/index.mjs +2 -5
  163. package/dist/common/auth/services/index.d.mts +14 -0
  164. package/dist/common/auth/services/index.d.ts +14 -0
  165. package/dist/common/auth/services/index.js +17 -0
  166. package/dist/common/auth/services/index.js.map +1 -0
  167. package/dist/common/auth/services/index.mjs +4 -0
  168. package/dist/common/auth/services/index.mjs.map +1 -0
  169. package/dist/common/index.d.mts +13 -5
  170. package/dist/common/index.d.ts +13 -5
  171. package/dist/common/index.js +19 -16
  172. package/dist/common/index.mjs +11 -8
  173. package/dist/common/request/index.js +5 -4
  174. package/dist/common/request/index.mjs +3 -2
  175. package/dist/common/storage/index.js +13 -12
  176. package/dist/common/storage/index.mjs +3 -2
  177. package/dist/festivalCard/index.d.mts +3 -3
  178. package/dist/festivalCard/index.d.ts +3 -3
  179. package/dist/festivalCard/routes/index.d.mts +1 -1
  180. package/dist/festivalCard/routes/index.d.ts +1 -1
  181. package/dist/festivalCard/server/index.d.mts +2 -2
  182. package/dist/festivalCard/server/index.d.ts +2 -2
  183. package/dist/{festivalCardService-BFCRhJrq.d.ts → festivalCardService-B3GsnNpV.d.ts} +1 -1
  184. package/dist/{festivalCardService-GriR2VMc.d.mts → festivalCardService-CWhrLNE9.d.mts} +1 -1
  185. package/dist/{index-DPYkrKZf.d.mts → index-BcjDRcKp.d.mts} +11 -6
  186. package/dist/{index-Bnh6VqFv.d.ts → index-BlpXrrTy.d.ts} +11 -6
  187. package/dist/{index-1Ag7IBXN.d.ts → index-DZ5iJtNO.d.mts} +2 -44
  188. package/dist/{index-DdeZSeTJ.d.mts → index-DZ5iJtNO.d.ts} +2 -44
  189. package/dist/index.d.mts +6296 -40
  190. package/dist/index.d.ts +6296 -40
  191. package/dist/index.js +1378 -2508
  192. package/dist/index.js.map +1 -1
  193. package/dist/index.mjs +1073 -2203
  194. package/dist/index.mjs.map +1 -1
  195. package/dist/mmd/admin/index.d.mts +1 -1
  196. package/dist/mmd/admin/index.d.ts +1 -1
  197. package/dist/mmd/index.d.mts +1 -1
  198. package/dist/mmd/index.d.ts +1 -1
  199. package/dist/mmd/server/index.d.mts +3 -3
  200. package/dist/mmd/server/index.d.ts +3 -3
  201. package/dist/request/index.js +4 -3
  202. package/dist/request/index.mjs +2 -1
  203. package/dist/session-BCXvGCnm.d.mts +81 -0
  204. package/dist/session-BCXvGCnm.d.ts +81 -0
  205. package/dist/storage/index.js +12 -11
  206. package/dist/storage/index.mjs +2 -1
  207. package/dist/{types-DyG3ZV9V.d.mts → types-B6B210gX.d.mts} +1 -1
  208. package/dist/{types-DyG3ZV9V.d.ts → types-B6B210gX.d.ts} +1 -1
  209. package/dist/{types-BTiaMsBz.d.mts → types-Bdnte5EN.d.mts} +1 -1
  210. package/dist/{types-tQfupO6d.d.mts → types-Cs0CLvrH.d.mts} +1 -1
  211. package/dist/{types-tQfupO6d.d.ts → types-Cs0CLvrH.d.ts} +1 -1
  212. package/dist/{types-ERmJyjx8.d.ts → types-_rFX1atk.d.ts} +1 -1
  213. package/dist/types.legacy-J-j-_ig_.d.mts +25 -0
  214. package/dist/types.legacy-J-j-_ig_.d.ts +25 -0
  215. package/dist/useAuthActions-7S5dL7Oh.d.mts +77 -0
  216. package/dist/useAuthActions-7S5dL7Oh.d.ts +77 -0
  217. package/dist/vocaloidBooth/server/index.d.mts +3 -3
  218. package/dist/vocaloidBooth/server/index.d.ts +3 -3
  219. package/package.json +44 -76
  220. package/dist/auth/legacy/core/index.d.mts +0 -42
  221. package/dist/auth/legacy/core/index.d.ts +0 -42
  222. package/dist/auth/legacy/core/index.js +0 -242
  223. package/dist/auth/legacy/core/index.js.map +0 -1
  224. package/dist/auth/legacy/core/index.mjs +0 -226
  225. package/dist/auth/legacy/core/index.mjs.map +0 -1
  226. package/dist/auth/legacy/db/index.d.mts +0 -5
  227. package/dist/auth/legacy/db/index.d.ts +0 -5
  228. package/dist/auth/legacy/db/index.js +0 -261
  229. package/dist/auth/legacy/db/index.js.map +0 -1
  230. package/dist/auth/legacy/db/index.mjs +0 -250
  231. package/dist/auth/legacy/db/index.mjs.map +0 -1
  232. package/dist/auth/legacy/index.d.mts +0 -5
  233. package/dist/auth/legacy/index.d.ts +0 -5
  234. package/dist/auth/legacy/index.js +0 -1107
  235. package/dist/auth/legacy/index.js.map +0 -1
  236. package/dist/auth/legacy/index.mjs +0 -1086
  237. package/dist/auth/legacy/index.mjs.map +0 -1
  238. package/dist/auth/legacy/logic/index.d.mts +0 -9
  239. package/dist/auth/legacy/logic/index.d.ts +0 -9
  240. package/dist/auth/legacy/logic/index.js +0 -194
  241. package/dist/auth/legacy/logic/index.js.map +0 -1
  242. package/dist/auth/legacy/logic/index.mjs +0 -187
  243. package/dist/auth/legacy/logic/index.mjs.map +0 -1
  244. package/dist/auth/legacy/miniapp/index.d.mts +0 -5
  245. package/dist/auth/legacy/miniapp/index.d.ts +0 -5
  246. package/dist/auth/legacy/miniapp/index.js +0 -506
  247. package/dist/auth/legacy/miniapp/index.js.map +0 -1
  248. package/dist/auth/legacy/miniapp/index.mjs +0 -487
  249. package/dist/auth/legacy/miniapp/index.mjs.map +0 -1
  250. package/dist/auth/legacy/routes/index.d.mts +0 -53
  251. package/dist/auth/legacy/routes/index.d.ts +0 -53
  252. package/dist/auth/legacy/routes/index.js +0 -278
  253. package/dist/auth/legacy/routes/index.js.map +0 -1
  254. package/dist/auth/legacy/routes/index.mjs +0 -271
  255. package/dist/auth/legacy/routes/index.mjs.map +0 -1
  256. package/dist/auth/legacy/schema/index.d.mts +0 -401
  257. package/dist/auth/legacy/schema/index.d.ts +0 -401
  258. package/dist/auth/legacy/schema/index.js +0 -50
  259. package/dist/auth/legacy/schema/index.js.map +0 -1
  260. package/dist/auth/legacy/schema/index.mjs +0 -44
  261. package/dist/auth/legacy/schema/index.mjs.map +0 -1
  262. package/dist/auth/legacy/server/index.d.mts +0 -13
  263. package/dist/auth/legacy/server/index.d.ts +0 -13
  264. package/dist/auth/legacy/server/index.js +0 -21
  265. package/dist/auth/legacy/server/index.js.map +0 -1
  266. package/dist/auth/legacy/server/index.mjs +0 -19
  267. package/dist/auth/legacy/server/index.mjs.map +0 -1
  268. package/dist/auth/legacy/services/index.d.mts +0 -40
  269. package/dist/auth/legacy/services/index.d.ts +0 -40
  270. package/dist/auth/legacy/services/index.js +0 -258
  271. package/dist/auth/legacy/services/index.js.map +0 -1
  272. package/dist/auth/legacy/services/index.mjs +0 -252
  273. package/dist/auth/legacy/services/index.mjs.map +0 -1
  274. package/dist/auth/legacy/ui/miniapp/index.d.mts +0 -10
  275. package/dist/auth/legacy/ui/miniapp/index.d.ts +0 -10
  276. package/dist/auth/legacy/ui/miniapp/index.js +0 -298
  277. package/dist/auth/legacy/ui/miniapp/index.js.map +0 -1
  278. package/dist/auth/legacy/ui/miniapp/index.mjs +0 -290
  279. package/dist/auth/legacy/ui/miniapp/index.mjs.map +0 -1
  280. package/dist/auth/legacy/ui/web/index.d.mts +0 -22
  281. package/dist/auth/legacy/ui/web/index.d.ts +0 -22
  282. package/dist/auth/legacy/ui/web/index.js +0 -899
  283. package/dist/auth/legacy/ui/web/index.js.map +0 -1
  284. package/dist/auth/legacy/ui/web/index.mjs +0 -889
  285. package/dist/auth/legacy/ui/web/index.mjs.map +0 -1
  286. package/dist/auth/legacy/web/index.d.mts +0 -5
  287. package/dist/auth/legacy/web/index.d.ts +0 -5
  288. package/dist/auth/legacy/web/index.js +0 -1107
  289. package/dist/auth/legacy/web/index.js.map +0 -1
  290. package/dist/auth/legacy/web/index.mjs +0 -1086
  291. package/dist/auth/legacy/web/index.mjs.map +0 -1
  292. package/dist/auth/middleware/index.d.mts +0 -75
  293. package/dist/auth/middleware/index.d.ts +0 -75
  294. package/dist/auth/middleware/index.js +0 -15
  295. package/dist/auth/middleware/index.mjs +0 -6
  296. package/dist/auth/routes/index.d.mts +0 -261
  297. package/dist/auth/routes/index.d.ts +0 -261
  298. package/dist/auth/routes/index.js +0 -59
  299. package/dist/auth/routes/index.mjs +0 -6
  300. package/dist/chunk-37HYTHEC.mjs +0 -90
  301. package/dist/chunk-37HYTHEC.mjs.map +0 -1
  302. package/dist/chunk-3CSCIRQY.js.map +0 -1
  303. package/dist/chunk-5WV35FPV.js +0 -131
  304. package/dist/chunk-5WV35FPV.js.map +0 -1
  305. package/dist/chunk-7B5SI4OF.mjs.map +0 -1
  306. package/dist/chunk-DCRD5CZB.js +0 -573
  307. package/dist/chunk-DCRD5CZB.js.map +0 -1
  308. package/dist/chunk-DDX4JKFS.js +0 -19
  309. package/dist/chunk-DDX4JKFS.js.map +0 -1
  310. package/dist/chunk-DV6M7MFP.js +0 -283
  311. package/dist/chunk-DV6M7MFP.js.map +0 -1
  312. package/dist/chunk-EQXPL7TN.mjs +0 -78
  313. package/dist/chunk-EQXPL7TN.mjs.map +0 -1
  314. package/dist/chunk-GSNGCENJ.js.map +0 -1
  315. package/dist/chunk-HBF4HPRK.js.map +0 -1
  316. package/dist/chunk-HCI6JQOU.mjs.map +0 -1
  317. package/dist/chunk-I44HXJ3X.mjs +0 -17
  318. package/dist/chunk-I44HXJ3X.mjs.map +0 -1
  319. package/dist/chunk-IIVNHQEI.mjs.map +0 -1
  320. package/dist/chunk-IJ4YYWE3.mjs +0 -122
  321. package/dist/chunk-IJ4YYWE3.mjs.map +0 -1
  322. package/dist/chunk-J4BEIZUC.js +0 -92
  323. package/dist/chunk-J4BEIZUC.js.map +0 -1
  324. package/dist/chunk-OKPWFVXC.js +0 -24
  325. package/dist/chunk-OKPWFVXC.js.map +0 -1
  326. package/dist/chunk-PNOTQAYK.mjs +0 -560
  327. package/dist/chunk-PNOTQAYK.mjs.map +0 -1
  328. package/dist/chunk-PTMSDNGO.mjs.map +0 -1
  329. package/dist/chunk-Q2IAL7YV.js +0 -36
  330. package/dist/chunk-Q2IAL7YV.js.map +0 -1
  331. package/dist/chunk-QQ2WFYOD.js.map +0 -1
  332. package/dist/chunk-VQ54PUQV.js.map +0 -1
  333. package/dist/chunk-W5JEGA76.mjs +0 -33
  334. package/dist/chunk-W5JEGA76.mjs.map +0 -1
  335. package/dist/chunk-YGI7UU2D.mjs.map +0 -1
  336. package/dist/chunk-ZCLQSI5F.mjs +0 -271
  337. package/dist/chunk-ZCLQSI5F.mjs.map +0 -1
  338. package/dist/drizzle-auth-service-D-pljzCD.d.mts +0 -145
  339. package/dist/drizzle-auth-service-D3qryE_I.d.ts +0 -145
  340. package/dist/index-DNKZ7-R_.d.mts +0 -184
  341. package/dist/index-DNKZ7-R_.d.ts +0 -184
  342. package/dist/types-C5vUWf9u.d.ts +0 -70
  343. package/dist/types-IYCqCk2g.d.mts +0 -70
  344. /package/dist/{auth/middleware → common/auth/client}/index.js.map +0 -0
  345. /package/dist/{auth/middleware → common/auth/client}/index.mjs.map +0 -0
  346. /package/dist/{auth/routes → common/auth/components}/index.js.map +0 -0
  347. /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"]}