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
@@ -1,487 +0,0 @@
1
- import React4, { createContext, useState, useRef, useCallback, useEffect, useContext } from 'react';
2
- import { View, Text, Button, Input } from '@tarojs/components';
3
-
4
- // src/business/auth-legacy/ui/miniapp/components/LoginModal.tsx
5
- var AuthContext = createContext(void 0);
6
- function extractUser(data) {
7
- return data?.user ?? data?.data?.user ?? null;
8
- }
9
- function extractValid(data) {
10
- if (typeof data?.valid === "boolean") return data.valid;
11
- if (typeof data?.data?.valid === "boolean") return data.data.valid;
12
- return false;
13
- }
14
- function AuthProvider({ children }) {
15
- const [user, setUser] = useState(null);
16
- const [loading, setLoading] = useState(true);
17
- const [isAuthenticated, setIsAuthenticated] = useState(false);
18
- const isMountedRef = useRef(true);
19
- const safeSetState = useCallback((updater) => {
20
- if (isMountedRef.current) {
21
- updater();
22
- }
23
- }, []);
24
- const validateSession = useCallback(async () => {
25
- console.log("\u{1F50D} [AuthContext] \u5F00\u59CB\u9A8C\u8BC1\u4F1A\u8BDD...");
26
- try {
27
- const response = await fetch("/api/auth/validate");
28
- console.log("\u{1F4E1} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u54CD\u5E94\u72B6\u6001:", response.status);
29
- const data = await response.json();
30
- console.log("\u{1F4C4} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u54CD\u5E94\u6570\u636E:", data);
31
- const resolvedUser = extractUser(data);
32
- const resolvedValid = extractValid(data);
33
- safeSetState(() => {
34
- if (resolvedValid && resolvedUser) {
35
- console.log("\u2705 [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u6210\u529F, \u7528\u6237:", resolvedUser);
36
- setUser(resolvedUser);
37
- setIsAuthenticated(true);
38
- } else {
39
- console.log("\u274C [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u5931\u8D25:", data.message);
40
- setUser(null);
41
- setIsAuthenticated(false);
42
- }
43
- setLoading(false);
44
- });
45
- } catch (error) {
46
- console.error("\u{1F4A5} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u5F02\u5E38:", error);
47
- safeSetState(() => {
48
- setUser(null);
49
- setIsAuthenticated(false);
50
- setLoading(false);
51
- });
52
- }
53
- }, [safeSetState]);
54
- const login = useCallback(async (credentials) => {
55
- console.log("\u{1F511} [AuthContext] \u5F00\u59CB\u767B\u5F55...");
56
- console.log("\u{1F4DD} [AuthContext] \u767B\u5F55\u51ED\u636E:", { phone: credentials.phone, password: "***" });
57
- try {
58
- console.log("\u{1F4E4} [AuthContext] \u53D1\u9001\u767B\u5F55\u8BF7\u6C42\u5230 /api/auth/login");
59
- const response = await fetch("/api/auth/login", {
60
- method: "POST",
61
- headers: { "Content-Type": "application/json" },
62
- body: JSON.stringify(credentials)
63
- });
64
- console.log("\u{1F4E1} [AuthContext] \u6536\u5230\u54CD\u5E94\uFF0C\u72B6\u6001\u7801:", response.status);
65
- const data = await response.json();
66
- console.log("\u{1F4C4} [AuthContext] \u54CD\u5E94\u6570\u636E:", data);
67
- const resolvedUser = extractUser(data);
68
- if (data.success && resolvedUser) {
69
- console.log("\u2705 [AuthContext] \u767B\u5F55\u6210\u529F, \u5F00\u59CB\u66F4\u65B0\u5168\u5C40\u72B6\u6001");
70
- console.log("\u{1F464} [AuthContext] \u7528\u6237\u6570\u636E:", resolvedUser);
71
- console.log("\u{1F4CA} [AuthContext] \u66F4\u65B0\u524D\u72B6\u6001:", {
72
- currentUser: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
73
- currentIsAuthenticated: isAuthenticated,
74
- currentLoading: loading
75
- });
76
- console.log("\u{1F504} [AuthContext] \u6267\u884C\u5168\u5C40\u72B6\u6001\u66F4\u65B0...");
77
- safeSetState(() => {
78
- console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u7528\u6237:", resolvedUser);
79
- setUser(resolvedUser);
80
- console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u8BA4\u8BC1\u72B6\u6001: true");
81
- setIsAuthenticated(true);
82
- console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u52A0\u8F7D\u72B6\u6001: false");
83
- setLoading(false);
84
- console.log("\u2705 [AuthContext] \u5168\u5C40\u72B6\u6001\u66F4\u65B0\u5B8C\u6210");
85
- });
86
- setTimeout(() => {
87
- console.log("\u{1F389} [AuthContext] \u5EF6\u8FDF\u786E\u8BA4 - \u5168\u5C40\u767B\u5F55\u72B6\u6001\u5E94\u8BE5\u5DF2\u66F4\u65B0:", {
88
- user: resolvedUser,
89
- isAuthenticated: true
90
- });
91
- }, 0);
92
- console.log("\u{1F680} [AuthContext] \u8FD4\u56DE\u6210\u529F\u7ED3\u679C");
93
- return { success: true, user: resolvedUser };
94
- } else {
95
- console.log("\u274C [AuthContext] \u767B\u5F55\u5931\u8D25:", data.message);
96
- return { success: false, message: data.message };
97
- }
98
- } catch (error) {
99
- console.error("\u{1F4A5} [AuthContext] \u767B\u5F55\u5F02\u5E38:", error);
100
- return { success: false, message: "\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" };
101
- }
102
- }, [safeSetState, user, isAuthenticated, loading]);
103
- const register = useCallback(async (userData) => {
104
- console.log("\u{1F4DD} [AuthContext] \u5F00\u59CB\u6CE8\u518C...");
105
- try {
106
- const response = await fetch("/api/auth/register", {
107
- method: "POST",
108
- headers: { "Content-Type": "application/json" },
109
- body: JSON.stringify(userData)
110
- });
111
- const data = await response.json();
112
- console.log("\u{1F4E1} [AuthContext] \u6CE8\u518C\u54CD\u5E94:", data);
113
- const resolvedUser = extractUser(data);
114
- if (data.success && resolvedUser) {
115
- console.log("\u2705 [AuthContext] \u6CE8\u518C\u6210\u529F, \u7ACB\u5373\u66F4\u65B0\u5168\u5C40\u72B6\u6001");
116
- safeSetState(() => {
117
- setUser(resolvedUser);
118
- setIsAuthenticated(true);
119
- setLoading(false);
120
- });
121
- console.log("\u{1F680} [AuthContext] \u8FD4\u56DE\u6CE8\u518C\u6210\u529F\u7ED3\u679C");
122
- return { success: true, user: resolvedUser };
123
- } else {
124
- console.log("\u274C [AuthContext] \u6CE8\u518C\u5931\u8D25:", data.message);
125
- return { success: false, message: data.message };
126
- }
127
- } catch (error) {
128
- console.error("\u{1F4A5} [AuthContext] \u6CE8\u518C\u5F02\u5E38:", error);
129
- return { success: false, message: "\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" };
130
- }
131
- }, [safeSetState]);
132
- const logout = useCallback(async () => {
133
- console.log("\u{1F6AA} [AuthContext] \u5F00\u59CB\u767B\u51FA...");
134
- try {
135
- await fetch("/api/auth/logout", { method: "POST" });
136
- safeSetState(() => {
137
- setUser(null);
138
- setIsAuthenticated(false);
139
- });
140
- console.log("\u2705 [AuthContext] \u767B\u51FA\u6210\u529F, \u5168\u5C40\u72B6\u6001\u5DF2\u6E05\u9664");
141
- } catch (error) {
142
- console.error("\u{1F4A5} [AuthContext] \u767B\u51FA\u5931\u8D25:", error);
143
- }
144
- }, [safeSetState]);
145
- const refreshUser = useCallback(() => {
146
- console.log("\u{1F504} [AuthContext] \u5237\u65B0\u7528\u6237\u4FE1\u606F...");
147
- setLoading(true);
148
- validateSession();
149
- }, [validateSession]);
150
- useEffect(() => {
151
- isMountedRef.current = true;
152
- return () => {
153
- isMountedRef.current = false;
154
- };
155
- }, []);
156
- useEffect(() => {
157
- console.log("\u{1F680} [AuthContext] \u521D\u59CB\u5316, \u5F00\u59CB\u9A8C\u8BC1\u4F1A\u8BDD");
158
- validateSession();
159
- }, [validateSession]);
160
- useEffect(() => {
161
- console.log("\u{1F4CA} [AuthContext] \u5168\u5C40\u72B6\u6001\u53D8\u5316:", {
162
- isAuthenticated,
163
- user: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
164
- loading
165
- });
166
- }, [isAuthenticated, user, loading]);
167
- const value = {
168
- user,
169
- loading,
170
- isAuthenticated,
171
- login,
172
- register,
173
- logout,
174
- refreshUser
175
- };
176
- return /* @__PURE__ */ React4.createElement(AuthContext.Provider, { value }, children);
177
- }
178
- function useAuth() {
179
- const context = useContext(AuthContext);
180
- if (context === void 0) {
181
- throw new Error("useAuth must be used within an AuthProvider");
182
- }
183
- return context;
184
- }
185
-
186
- // src/business/auth-legacy/utils/authUtils.ts
187
- function validatePhoneNumber(phone) {
188
- return /^1[3-9]\d{9}$/.test(phone);
189
- }
190
- function validatePassword(password) {
191
- if (!password) {
192
- return { valid: false, message: "\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A" };
193
- }
194
- if (password.length < 6) {
195
- return { valid: false, message: "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C116\u4F4D" };
196
- }
197
- return { valid: true };
198
- }
199
- function generateSessionToken() {
200
- return Math.random().toString(36).substring(2) + Date.now().toString(36) + Math.random().toString(36).substring(2);
201
- }
202
- function isAdmin(user) {
203
- return user?.role === "admin";
204
- }
205
- function isActiveUser(user) {
206
- return user?.isActive === true;
207
- }
208
- function getUserDisplayName(user) {
209
- return user.name || user.phone || "\u672A\u77E5\u7528\u6237";
210
- }
211
- function calculateSessionExpiry(days = 30) {
212
- return new Date(Date.now() + days * 24 * 60 * 60 * 1e3);
213
- }
214
- function isSessionExpired(expiresAt) {
215
- return /* @__PURE__ */ new Date() > new Date(expiresAt);
216
- }
217
-
218
- // src/business/auth-legacy/ui/miniapp/components/LoginModal.tsx
219
- function LoginModal({ isOpen, onClose, onSuccess, onSwitchToRegister }) {
220
- const { login } = useAuth();
221
- const [formData, setFormData] = useState({ phone: "", password: "" });
222
- const [error, setError] = useState("");
223
- const [loading, setLoading] = useState(false);
224
- if (!isOpen) return null;
225
- const handleSubmit = async () => {
226
- setError("");
227
- setLoading(true);
228
- if (!formData.phone || !formData.password) {
229
- setError("\u8BF7\u586B\u5199\u5B8C\u6574\u4FE1\u606F");
230
- setLoading(false);
231
- return;
232
- }
233
- if (!validatePhoneNumber(formData.phone)) {
234
- setError("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7");
235
- setLoading(false);
236
- return;
237
- }
238
- const result = await login(formData);
239
- if (result.success) {
240
- onSuccess();
241
- } else {
242
- setError(result.message || "\u767B\u5F55\u5931\u8D25");
243
- }
244
- setLoading(false);
245
- };
246
- return /* @__PURE__ */ React4.createElement(View, { className: "auth-modal" }, /* @__PURE__ */ React4.createElement(View, { className: "auth-card" }, /* @__PURE__ */ React4.createElement(View, { className: "auth-header" }, /* @__PURE__ */ React4.createElement(Text, { className: "auth-title" }, "\u7528\u6237\u767B\u5F55"), /* @__PURE__ */ React4.createElement(Button, { className: "auth-close", onClick: onClose }, "\u5173\u95ED")), /* @__PURE__ */ React4.createElement(View, { className: "auth-form" }, /* @__PURE__ */ React4.createElement(
247
- Input,
248
- {
249
- name: "phone",
250
- value: formData.phone,
251
- onInput: (e) => setFormData((prev) => ({ ...prev, phone: e.detail.value })),
252
- placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7",
253
- type: "text"
254
- }
255
- ), /* @__PURE__ */ React4.createElement(
256
- Input,
257
- {
258
- name: "password",
259
- value: formData.password,
260
- onInput: (e) => setFormData((prev) => ({ ...prev, password: e.detail.value })),
261
- placeholder: "\u8BF7\u8F93\u5165\u5BC6\u7801",
262
- type: "password"
263
- }
264
- ), error && /* @__PURE__ */ React4.createElement(Text, { className: "auth-error" }, error), /* @__PURE__ */ React4.createElement(Button, { className: "auth-submit", loading, onClick: handleSubmit }, loading ? "\u767B\u5F55\u4E2D..." : "\u767B\u5F55"), onSwitchToRegister && /* @__PURE__ */ React4.createElement(Button, { className: "auth-switch", onClick: onSwitchToRegister }, "\u53BB\u6CE8\u518C"))));
265
- }
266
- function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }) {
267
- const { register } = useAuth();
268
- const [formData, setFormData] = useState({
269
- phone: "",
270
- name: "",
271
- password: "",
272
- confirmPassword: ""
273
- });
274
- const [error, setError] = useState("");
275
- const [loading, setLoading] = useState(false);
276
- if (!isOpen) return null;
277
- const handleSubmit = async () => {
278
- setError("");
279
- setLoading(true);
280
- if (!formData.phone || !formData.password || !formData.confirmPassword) {
281
- setError("\u8BF7\u586B\u5199\u5B8C\u6574\u4FE1\u606F");
282
- setLoading(false);
283
- return;
284
- }
285
- if (!validatePhoneNumber(formData.phone)) {
286
- setError("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7");
287
- setLoading(false);
288
- return;
289
- }
290
- const passwordValidation = validatePassword(formData.password);
291
- if (!passwordValidation.valid) {
292
- setError(passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF");
293
- setLoading(false);
294
- return;
295
- }
296
- if (formData.password !== formData.confirmPassword) {
297
- setError("\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4");
298
- setLoading(false);
299
- return;
300
- }
301
- const result = await register({
302
- phone: formData.phone,
303
- password: formData.password,
304
- name: formData.name || void 0
305
- });
306
- if (result.success) {
307
- onSuccess();
308
- } else {
309
- setError(result.message || "\u6CE8\u518C\u5931\u8D25");
310
- }
311
- setLoading(false);
312
- };
313
- return /* @__PURE__ */ React4.createElement(View, { className: "auth-modal" }, /* @__PURE__ */ React4.createElement(View, { className: "auth-card" }, /* @__PURE__ */ React4.createElement(View, { className: "auth-header" }, /* @__PURE__ */ React4.createElement(Text, { className: "auth-title" }, "\u7528\u6237\u6CE8\u518C"), /* @__PURE__ */ React4.createElement(Button, { className: "auth-close", onClick: onClose }, "\u5173\u95ED")), /* @__PURE__ */ React4.createElement(View, { className: "auth-form" }, /* @__PURE__ */ React4.createElement(
314
- Input,
315
- {
316
- name: "phone",
317
- value: formData.phone,
318
- onInput: (e) => setFormData((prev) => ({ ...prev, phone: e.detail.value })),
319
- placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7",
320
- type: "text"
321
- }
322
- ), /* @__PURE__ */ React4.createElement(
323
- Input,
324
- {
325
- name: "name",
326
- value: formData.name,
327
- onInput: (e) => setFormData((prev) => ({ ...prev, name: e.detail.value })),
328
- placeholder: "\u8BF7\u8F93\u5165\u6635\u79F0",
329
- type: "text"
330
- }
331
- ), /* @__PURE__ */ React4.createElement(
332
- Input,
333
- {
334
- name: "password",
335
- value: formData.password,
336
- onInput: (e) => setFormData((prev) => ({ ...prev, password: e.detail.value })),
337
- placeholder: "\u8BF7\u8F93\u5165\u5BC6\u7801",
338
- type: "password"
339
- }
340
- ), /* @__PURE__ */ React4.createElement(
341
- Input,
342
- {
343
- name: "confirmPassword",
344
- value: formData.confirmPassword,
345
- onInput: (e) => setFormData((prev) => ({ ...prev, confirmPassword: e.detail.value })),
346
- placeholder: "\u8BF7\u786E\u8BA4\u5BC6\u7801",
347
- type: "password"
348
- }
349
- ), error && /* @__PURE__ */ React4.createElement(Text, { className: "auth-error" }, error), /* @__PURE__ */ React4.createElement(Button, { className: "auth-submit", loading, onClick: handleSubmit }, loading ? "\u6CE8\u518C\u4E2D..." : "\u6CE8\u518C"), onSwitchToLogin && /* @__PURE__ */ React4.createElement(Button, { className: "auth-switch", onClick: onSwitchToLogin }, "\u53BB\u767B\u5F55"))));
350
- }
351
- function ForgotPasswordModal({ isOpen, onClose, onSuccess }) {
352
- const [step, setStep] = useState("phone");
353
- const [formData, setFormData] = useState({
354
- phone: "",
355
- verificationCode: "",
356
- newPassword: "",
357
- confirmPassword: ""
358
- });
359
- const [error, setError] = useState("");
360
- const [loading, setLoading] = useState(false);
361
- if (!isOpen) return null;
362
- const handleSendCode = async () => {
363
- setError("");
364
- setLoading(true);
365
- if (!validatePhoneNumber(formData.phone)) {
366
- setError("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7");
367
- setLoading(false);
368
- return;
369
- }
370
- try {
371
- const response = await fetch("/api/auth/send-verification-code", {
372
- method: "POST",
373
- headers: { "Content-Type": "application/json" },
374
- body: JSON.stringify({ phone: formData.phone })
375
- });
376
- const data = await response.json();
377
- if (data.success) {
378
- setStep("verify");
379
- } else {
380
- setError(data.message || "\u53D1\u9001\u5931\u8D25");
381
- }
382
- } catch (error2) {
383
- console.error("\u{1F4A5} [ForgotPasswordModal] \u53D1\u9001\u9A8C\u8BC1\u7801\u5F02\u5E38:", error2);
384
- setError("\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
385
- } finally {
386
- setLoading(false);
387
- }
388
- };
389
- const handleVerifyCode = () => {
390
- if (!formData.verificationCode) {
391
- setError("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801");
392
- return;
393
- }
394
- setStep("reset");
395
- };
396
- const handleResetPassword = async () => {
397
- const passwordValidation = validatePassword(formData.newPassword);
398
- if (!passwordValidation.valid) {
399
- setError(passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF");
400
- return;
401
- }
402
- if (formData.newPassword !== formData.confirmPassword) {
403
- setError("\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4");
404
- return;
405
- }
406
- setLoading(true);
407
- try {
408
- const response = await fetch("/api/auth/reset-password", {
409
- method: "POST",
410
- headers: { "Content-Type": "application/json" },
411
- body: JSON.stringify({
412
- phone: formData.phone,
413
- verificationCode: formData.verificationCode,
414
- newPassword: formData.newPassword
415
- })
416
- });
417
- const data = await response.json();
418
- if (data.success) {
419
- onSuccess();
420
- } else {
421
- setError(data.message || "\u91CD\u7F6E\u5931\u8D25");
422
- }
423
- } catch (error2) {
424
- console.error("\u{1F4A5} [ForgotPasswordModal] \u91CD\u7F6E\u5BC6\u7801\u5F02\u5E38:", error2);
425
- setError("\u91CD\u7F6E\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
426
- } finally {
427
- setLoading(false);
428
- }
429
- };
430
- const renderContent = () => {
431
- if (step === "phone") {
432
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(
433
- Input,
434
- {
435
- name: "phone",
436
- value: formData.phone,
437
- onInput: (e) => setFormData((prev) => ({ ...prev, phone: e.detail.value })),
438
- placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7",
439
- type: "text"
440
- }
441
- ), /* @__PURE__ */ React4.createElement(Button, { className: "auth-submit", loading, onClick: handleSendCode }, loading ? "\u53D1\u9001\u4E2D..." : "\u53D1\u9001\u9A8C\u8BC1\u7801"));
442
- }
443
- if (step === "verify") {
444
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(
445
- Input,
446
- {
447
- name: "verificationCode",
448
- value: formData.verificationCode,
449
- onInput: (e) => setFormData((prev) => ({ ...prev, verificationCode: e.detail.value })),
450
- placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",
451
- type: "text"
452
- }
453
- ), /* @__PURE__ */ React4.createElement(Button, { className: "auth-submit", onClick: handleVerifyCode }, "\u4E0B\u4E00\u6B65"));
454
- }
455
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(
456
- Input,
457
- {
458
- name: "newPassword",
459
- value: formData.newPassword,
460
- onInput: (e) => setFormData((prev) => ({ ...prev, newPassword: e.detail.value })),
461
- placeholder: "\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801",
462
- type: "password"
463
- }
464
- ), /* @__PURE__ */ React4.createElement(
465
- Input,
466
- {
467
- name: "confirmPassword",
468
- value: formData.confirmPassword,
469
- onInput: (e) => setFormData((prev) => ({ ...prev, confirmPassword: e.detail.value })),
470
- placeholder: "\u8BF7\u786E\u8BA4\u65B0\u5BC6\u7801",
471
- type: "password"
472
- }
473
- ), /* @__PURE__ */ React4.createElement(Button, { className: "auth-submit", loading, onClick: handleResetPassword }, loading ? "\u63D0\u4EA4\u4E2D..." : "\u91CD\u7F6E\u5BC6\u7801"));
474
- };
475
- return /* @__PURE__ */ React4.createElement(View, { className: "auth-modal" }, /* @__PURE__ */ React4.createElement(View, { className: "auth-card" }, /* @__PURE__ */ React4.createElement(View, { className: "auth-header" }, /* @__PURE__ */ React4.createElement(Text, { className: "auth-title" }, "\u627E\u56DE\u5BC6\u7801"), /* @__PURE__ */ React4.createElement(Button, { className: "auth-close", onClick: onClose }, "\u5173\u95ED")), /* @__PURE__ */ React4.createElement(View, { className: "auth-form" }, renderContent(), error && /* @__PURE__ */ React4.createElement(Text, { className: "auth-error" }, error))));
476
- }
477
-
478
- // src/business/auth-legacy/types/index.ts
479
- var UserRole = /* @__PURE__ */ ((UserRole2) => {
480
- UserRole2["USER"] = "user";
481
- UserRole2["ADMIN"] = "admin";
482
- return UserRole2;
483
- })(UserRole || {});
484
-
485
- export { AuthProvider, ForgotPasswordModal, LoginModal, RegisterModal, UserRole, calculateSessionExpiry, generateSessionToken, getUserDisplayName, isActiveUser, isAdmin, isSessionExpired, useAuth, validatePassword, validatePhoneNumber };
486
- //# sourceMappingURL=index.mjs.map
487
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/business/auth-legacy/contexts/AuthContext.tsx","../../../../src/business/auth-legacy/utils/authUtils.ts","../../../../src/business/auth-legacy/ui/miniapp/components/LoginModal.tsx","../../../../src/business/auth-legacy/ui/miniapp/components/RegisterModal.tsx","../../../../src/business/auth-legacy/ui/miniapp/components/ForgotPasswordModal.tsx","../../../../src/business/auth-legacy/types/index.ts"],"names":["React","useState","View","Text","Button","Input","error","UserRole"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\nimport React, { createContext, useContext, useState, useEffect, useCallback, useRef } from 'react';\nimport type { User, UseAuthReturn, LoginRequest, RegisterRequest } from '../types';\n\ninterface AuthContextType extends UseAuthReturn {}\n\nconst AuthContext = createContext<AuthContextType | undefined>(undefined);\n\nfunction extractUser(data: any): User | null {\n return data?.user ?? data?.data?.user ?? null;\n}\n\nfunction extractValid(data: any): boolean {\n if (typeof data?.valid === 'boolean') return data.valid;\n if (typeof data?.data?.valid === 'boolean') return data.data.valid;\n return false;\n}\n\nexport function AuthProvider({ children }: { children: React.ReactNode }) {\n const [user, setUser] = useState<User | null>(null);\n const [loading, setLoading] = useState(true);\n const [isAuthenticated, setIsAuthenticated] = useState(false);\n const isMountedRef = useRef(true);\n\n // 安全的状态更新函数\n const safeSetState = useCallback((updater: () => void) => {\n if (isMountedRef.current) {\n updater();\n }\n }, []);\n\n // 验证会话\n const validateSession = useCallback(async () => {\n console.log('🔍 [AuthContext] 开始验证会话...');\n try {\n const response = await fetch('/api/auth/validate');\n console.log('📡 [AuthContext] 会话验证响应状态:', response.status);\n \n const data = await response.json();\n console.log('📄 [AuthContext] 会话验证响应数据:', data);\n const resolvedUser = extractUser(data);\n const resolvedValid = extractValid(data);\n \n safeSetState(() => {\n if (resolvedValid && resolvedUser) {\n console.log('✅ [AuthContext] 会话验证成功, 用户:', resolvedUser);\n setUser(resolvedUser);\n setIsAuthenticated(true);\n } else {\n console.log('❌ [AuthContext] 会话验证失败:', data.message);\n setUser(null);\n setIsAuthenticated(false);\n }\n setLoading(false);\n });\n } catch (error) {\n console.error('💥 [AuthContext] 会话验证异常:', error);\n safeSetState(() => {\n setUser(null);\n setIsAuthenticated(false);\n setLoading(false);\n });\n }\n }, [safeSetState]);\n\n // 登录\n const login = useCallback(async (credentials: LoginRequest) => {\n console.log('🔑 [AuthContext] 开始登录...');\n console.log('📝 [AuthContext] 登录凭据:', { phone: credentials.phone, password: '***' });\n \n try {\n console.log('📤 [AuthContext] 发送登录请求到 /api/auth/login');\n const response = await fetch('/api/auth/login', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(credentials),\n });\n\n console.log('📡 [AuthContext] 收到响应,状态码:', response.status);\n const data = await response.json();\n console.log('📄 [AuthContext] 响应数据:', data);\n const resolvedUser = extractUser(data);\n\n if (data.success && resolvedUser) {\n console.log('✅ [AuthContext] 登录成功, 开始更新全局状态');\n console.log('👤 [AuthContext] 用户数据:', resolvedUser);\n \n // 记录当前状态\n console.log('📊 [AuthContext] 更新前状态:', {\n currentUser: user ? `${user.name || '未设置'} (${user.phone})` : null,\n currentIsAuthenticated: isAuthenticated,\n currentLoading: loading\n });\n \n // 使用同步的状态更新确保立即生效\n console.log('🔄 [AuthContext] 执行全局状态更新...');\n safeSetState(() => {\n console.log('🔄 [AuthContext] 正在设置用户:', resolvedUser);\n setUser(resolvedUser);\n console.log('🔄 [AuthContext] 正在设置认证状态: true');\n setIsAuthenticated(true);\n console.log('🔄 [AuthContext] 正在设置加载状态: false');\n setLoading(false);\n console.log('✅ [AuthContext] 全局状态更新完成');\n });\n \n // 等待下一个事件循环后输出确认日志\n setTimeout(() => {\n console.log('🎉 [AuthContext] 延迟确认 - 全局登录状态应该已更新:', {\n user: resolvedUser,\n isAuthenticated: true\n });\n }, 0);\n \n console.log('🚀 [AuthContext] 返回成功结果');\n return { success: true, user: resolvedUser };\n } else {\n console.log('❌ [AuthContext] 登录失败:', data.message);\n return { success: false, message: data.message };\n }\n } catch (error) {\n console.error('💥 [AuthContext] 登录异常:', error);\n return { success: false, message: '登录失败,请稍后重试' };\n }\n }, [safeSetState, user, isAuthenticated, loading]);\n\n // 注册\n const register = useCallback(async (userData: RegisterRequest) => {\n console.log('📝 [AuthContext] 开始注册...');\n try {\n const response = await fetch('/api/auth/register', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(userData),\n });\n\n const data = await response.json();\n console.log('📡 [AuthContext] 注册响应:', data);\n const resolvedUser = extractUser(data);\n\n if (data.success && resolvedUser) {\n console.log('✅ [AuthContext] 注册成功, 立即更新全局状态');\n \n // 使用同步的状态更新确保立即生效\n safeSetState(() => {\n setUser(resolvedUser);\n setIsAuthenticated(true);\n setLoading(false);\n });\n \n console.log('🚀 [AuthContext] 返回注册成功结果');\n return { success: true, user: resolvedUser };\n } else {\n console.log('❌ [AuthContext] 注册失败:', data.message);\n return { success: false, message: data.message };\n }\n } catch (error) {\n console.error('💥 [AuthContext] 注册异常:', error);\n return { success: false, message: '注册失败,请稍后重试' };\n }\n }, [safeSetState]);\n\n // 登出\n const logout = useCallback(async () => {\n console.log('🚪 [AuthContext] 开始登出...');\n try {\n await fetch('/api/auth/logout', { method: 'POST' });\n safeSetState(() => {\n setUser(null);\n setIsAuthenticated(false);\n });\n console.log('✅ [AuthContext] 登出成功, 全局状态已清除');\n } catch (error) {\n console.error('💥 [AuthContext] 登出失败:', error);\n }\n }, [safeSetState]);\n\n // 刷新用户信息\n const refreshUser = useCallback(() => {\n console.log('🔄 [AuthContext] 刷新用户信息...');\n setLoading(true);\n validateSession();\n }, [validateSession]);\n\n // 组件挂载/卸载管理\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n // 初始化时验证会话\n useEffect(() => {\n console.log('🚀 [AuthContext] 初始化, 开始验证会话');\n validateSession();\n }, [validateSession]);\n\n // 状态变化监控(用于调试)\n useEffect(() => {\n console.log('📊 [AuthContext] 全局状态变化:', {\n isAuthenticated,\n user: user ? `${user.name || '未设置'} (${user.phone})` : null,\n loading\n });\n }, [isAuthenticated, user, loading]);\n\n const value: AuthContextType = {\n user,\n loading,\n isAuthenticated,\n login,\n register,\n logout,\n refreshUser,\n };\n\n return (\n <AuthContext.Provider value={value}>\n {children}\n </AuthContext.Provider>\n );\n}\n\nexport function useAuth(): UseAuthReturn {\n const context = useContext(AuthContext);\n if (context === undefined) {\n throw new Error('useAuth must be used within an AuthProvider');\n }\n return context;\n} \n","import type { User } from '../types';\n\n/**\n * 验证手机号格式\n */\nexport function validatePhoneNumber(phone: string): boolean {\n return /^1[3-9]\\d{9}$/.test(phone);\n}\n\n/**\n * 验证密码强度(可扩展)\n */\nexport function validatePassword(password: string): { valid: boolean; message?: string } {\n if (!password) {\n return { valid: false, message: '密码不能为空' };\n }\n \n if (password.length < 6) {\n return { valid: false, message: '密码长度至少6位' };\n }\n \n return { valid: true };\n}\n\n/**\n * 生成安全的会话令牌\n */\nexport function generateSessionToken(): string {\n // 在实际环境中,应该使用更安全的随机数生成\n return Math.random().toString(36).substring(2) + \n Date.now().toString(36) + \n Math.random().toString(36).substring(2);\n}\n\n/**\n * 检查用户是否为管理员\n */\nexport function isAdmin(user: User | null): boolean {\n return user?.role === 'admin';\n}\n\n/**\n * 检查用户是否处于活跃状态\n */\nexport function isActiveUser(user: User | null): boolean {\n return user?.isActive === true;\n}\n\n/**\n * 格式化用户显示名称\n */\nexport function getUserDisplayName(user: User): string {\n return user.name || user.phone || '未知用户';\n}\n\n/**\n * 计算会话过期时间\n */\nexport function calculateSessionExpiry(days: number = 30): Date {\n return new Date(Date.now() + days * 24 * 60 * 60 * 1000);\n}\n\n/**\n * 检查会话是否过期\n */\nexport function isSessionExpired(expiresAt: Date): boolean {\n return new Date() > new Date(expiresAt);\n} ","'use client';\n\nimport React, { useState } from 'react';\nimport { View, Text, Input, Button } from '@tarojs/components';\nimport { useAuth } from '../../../contexts/AuthContext';\nimport { validatePhoneNumber } from '../../../utils/authUtils';\nimport type { LoginModalProps } from '../../../types';\n\ntype MiniappInputEvent = {\n detail: {\n value: string;\n };\n};\n\nexport default function LoginModal({ isOpen, onClose, onSuccess, onSwitchToRegister }: LoginModalProps) {\n const { login } = useAuth();\n const [formData, setFormData] = useState({ phone: '', password: '' });\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n\n if (!isOpen) return null;\n\n const handleSubmit = async () => {\n setError('');\n setLoading(true);\n\n if (!formData.phone || !formData.password) {\n setError('请填写完整信息');\n setLoading(false);\n return;\n }\n\n if (!validatePhoneNumber(formData.phone)) {\n setError('请输入正确的手机号');\n setLoading(false);\n return;\n }\n\n const result = await login(formData);\n if (result.success) {\n onSuccess();\n } else {\n setError(result.message || '登录失败');\n }\n setLoading(false);\n };\n\n return (\n <View className=\"auth-modal\">\n <View className=\"auth-card\">\n <View className=\"auth-header\">\n <Text className=\"auth-title\">用户登录</Text>\n <Button className=\"auth-close\" onClick={onClose}>\n 关闭\n </Button>\n </View>\n <View className=\"auth-form\">\n <Input\n name=\"phone\"\n value={formData.phone}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, phone: e.detail.value }))}\n placeholder=\"请输入手机号\"\n type=\"text\"\n />\n <Input\n name=\"password\"\n value={formData.password}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, password: e.detail.value }))}\n placeholder=\"请输入密码\"\n type=\"password\"\n />\n {error && <Text className=\"auth-error\">{error}</Text>}\n <Button className=\"auth-submit\" loading={loading} onClick={handleSubmit}>\n {loading ? '登录中...' : '登录'}\n </Button>\n {onSwitchToRegister && (\n <Button className=\"auth-switch\" onClick={onSwitchToRegister}>\n 去注册\n </Button>\n )}\n </View>\n </View>\n </View>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { View, Text, Input, Button } from '@tarojs/components';\nimport { useAuth } from '../../../contexts/AuthContext';\nimport { validatePhoneNumber, validatePassword } from '../../../utils/authUtils';\nimport type { RegisterModalProps } from '../../../types';\n\ntype MiniappInputEvent = {\n detail: {\n value: string;\n };\n};\n\nexport default function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }: RegisterModalProps) {\n const { register } = useAuth();\n const [formData, setFormData] = useState({\n phone: '',\n name: '',\n password: '',\n confirmPassword: '',\n });\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n\n if (!isOpen) return null;\n\n const handleSubmit = async () => {\n setError('');\n setLoading(true);\n\n if (!formData.phone || !formData.password || !formData.confirmPassword) {\n setError('请填写完整信息');\n setLoading(false);\n return;\n }\n\n if (!validatePhoneNumber(formData.phone)) {\n setError('请输入正确的手机号');\n setLoading(false);\n return;\n }\n\n const passwordValidation = validatePassword(formData.password);\n if (!passwordValidation.valid) {\n setError(passwordValidation.message || '密码格式错误');\n setLoading(false);\n return;\n }\n\n if (formData.password !== formData.confirmPassword) {\n setError('两次输入的密码不一致');\n setLoading(false);\n return;\n }\n\n const result = await register({\n phone: formData.phone,\n password: formData.password,\n name: formData.name || undefined,\n });\n\n if (result.success) {\n onSuccess();\n } else {\n setError(result.message || '注册失败');\n }\n\n setLoading(false);\n };\n\n return (\n <View className=\"auth-modal\">\n <View className=\"auth-card\">\n <View className=\"auth-header\">\n <Text className=\"auth-title\">用户注册</Text>\n <Button className=\"auth-close\" onClick={onClose}>\n 关闭\n </Button>\n </View>\n <View className=\"auth-form\">\n <Input\n name=\"phone\"\n value={formData.phone}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, phone: e.detail.value }))}\n placeholder=\"请输入手机号\"\n type=\"text\"\n />\n <Input\n name=\"name\"\n value={formData.name}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, name: e.detail.value }))}\n placeholder=\"请输入昵称\"\n type=\"text\"\n />\n <Input\n name=\"password\"\n value={formData.password}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, password: e.detail.value }))}\n placeholder=\"请输入密码\"\n type=\"password\"\n />\n <Input\n name=\"confirmPassword\"\n value={formData.confirmPassword}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, confirmPassword: e.detail.value }))}\n placeholder=\"请确认密码\"\n type=\"password\"\n />\n {error && <Text className=\"auth-error\">{error}</Text>}\n <Button className=\"auth-submit\" loading={loading} onClick={handleSubmit}>\n {loading ? '注册中...' : '注册'}\n </Button>\n {onSwitchToLogin && (\n <Button className=\"auth-switch\" onClick={onSwitchToLogin}>\n 去登录\n </Button>\n )}\n </View>\n </View>\n </View>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { View, Text, Input, Button } from '@tarojs/components';\nimport { validatePhoneNumber, validatePassword } from '../../../utils/authUtils';\nimport type { ForgotPasswordModalProps } from '../../../types';\n\ntype MiniappInputEvent = {\n detail: {\n value: string;\n };\n};\n\nexport default function ForgotPasswordModal({ isOpen, onClose, onSuccess }: ForgotPasswordModalProps) {\n const [step, setStep] = useState<'phone' | 'verify' | 'reset'>('phone');\n const [formData, setFormData] = useState({\n phone: '',\n verificationCode: '',\n newPassword: '',\n confirmPassword: '',\n });\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n\n if (!isOpen) return null;\n\n const handleSendCode = async () => {\n setError('');\n setLoading(true);\n\n if (!validatePhoneNumber(formData.phone)) {\n setError('请输入正确的手机号');\n setLoading(false);\n return;\n }\n\n try {\n const response = await fetch('/api/auth/send-verification-code', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ phone: formData.phone }),\n });\n const data = await response.json();\n if (data.success) {\n setStep('verify');\n } else {\n setError(data.message || '发送失败');\n }\n } catch (error) {\n console.error('💥 [ForgotPasswordModal] 发送验证码异常:', error);\n setError('发送失败,请稍后重试');\n } finally {\n setLoading(false);\n }\n };\n\n const handleVerifyCode = () => {\n if (!formData.verificationCode) {\n setError('请输入验证码');\n return;\n }\n setStep('reset');\n };\n\n const handleResetPassword = async () => {\n const passwordValidation = validatePassword(formData.newPassword);\n if (!passwordValidation.valid) {\n setError(passwordValidation.message || '密码格式错误');\n return;\n }\n if (formData.newPassword !== formData.confirmPassword) {\n setError('两次输入的密码不一致');\n return;\n }\n\n setLoading(true);\n try {\n const response = await fetch('/api/auth/reset-password', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n phone: formData.phone,\n verificationCode: formData.verificationCode,\n newPassword: formData.newPassword,\n }),\n });\n const data = await response.json();\n if (data.success) {\n onSuccess();\n } else {\n setError(data.message || '重置失败');\n }\n } catch (error) {\n console.error('💥 [ForgotPasswordModal] 重置密码异常:', error);\n setError('重置失败,请稍后重试');\n } finally {\n setLoading(false);\n }\n };\n\n const renderContent = () => {\n if (step === 'phone') {\n return (\n <>\n <Input\n name=\"phone\"\n value={formData.phone}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, phone: e.detail.value }))}\n placeholder=\"请输入手机号\"\n type=\"text\"\n />\n <Button className=\"auth-submit\" loading={loading} onClick={handleSendCode}>\n {loading ? '发送中...' : '发送验证码'}\n </Button>\n </>\n );\n }\n\n if (step === 'verify') {\n return (\n <>\n <Input\n name=\"verificationCode\"\n value={formData.verificationCode}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, verificationCode: e.detail.value }))}\n placeholder=\"请输入验证码\"\n type=\"text\"\n />\n <Button className=\"auth-submit\" onClick={handleVerifyCode}>\n 下一步\n </Button>\n </>\n );\n }\n\n return (\n <>\n <Input\n name=\"newPassword\"\n value={formData.newPassword}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, newPassword: e.detail.value }))}\n placeholder=\"请输入新密码\"\n type=\"password\"\n />\n <Input\n name=\"confirmPassword\"\n value={formData.confirmPassword}\n onInput={(e: MiniappInputEvent) => setFormData(prev => ({ ...prev, confirmPassword: e.detail.value }))}\n placeholder=\"请确认新密码\"\n type=\"password\"\n />\n <Button className=\"auth-submit\" loading={loading} onClick={handleResetPassword}>\n {loading ? '提交中...' : '重置密码'}\n </Button>\n </>\n );\n };\n\n return (\n <View className=\"auth-modal\">\n <View className=\"auth-card\">\n <View className=\"auth-header\">\n <Text className=\"auth-title\">找回密码</Text>\n <Button className=\"auth-close\" onClick={onClose}>\n 关闭\n </Button>\n </View>\n <View className=\"auth-form\">\n {renderContent()}\n {error && <Text className=\"auth-error\">{error}</Text>}\n </View>\n </View>\n </View>\n );\n}\n","// ===== 用户相关类型 =====\n\n/**\n * 用户信息接口\n */\nexport interface User {\n id: number;\n phone: string;\n name?: string | null;\n email?: string | null;\n role: string;\n isActive: boolean;\n lastLoginAt?: Date | null;\n createdAt: Date;\n updatedAt: Date;\n}\n\n/**\n * 用户会话接口\n */\nexport interface UserSession {\n id: number;\n userId: number;\n sessionToken: string;\n expiresAt: Date;\n createdAt: Date;\n}\n\n// ===== 请求/响应类型 =====\n\n/**\n * 登录请求接口\n */\nexport interface LoginRequest {\n phone: string;\n password: string;\n}\n\n/**\n * 注册请求接口\n */\nexport interface RegisterRequest {\n phone: string;\n password: string;\n name?: string;\n}\n\n/**\n * 登录响应接口\n */\nexport interface LoginResponse {\n success: boolean;\n message: string;\n user?: User;\n sessionToken?: string;\n}\n\n/**\n * 注册响应接口\n */\nexport interface RegisterResponse {\n success: boolean;\n message: string;\n user?: User;\n sessionToken?: string;\n}\n\n/**\n * 会话验证响应接口\n */\nexport interface SessionValidationResponse {\n valid: boolean;\n user?: User;\n message?: string;\n}\n\n/**\n * 会话验证结果接口\n */\nexport interface SessionValidation {\n valid: boolean;\n user?: User;\n}\n\n// ===== 组件Props类型 =====\n\n/**\n * 登录模态框Props\n */\nexport interface LoginModalProps {\n isOpen: boolean;\n onClose: () => void;\n onSuccess: () => void;\n onSwitchToRegister?: () => void;\n}\n\n/**\n * 注册模态框Props\n */\nexport interface RegisterModalProps {\n isOpen: boolean;\n onClose: () => void;\n onSuccess: () => void;\n onSwitchToLogin?: () => void;\n}\n\n/**\n * 认证守卫Props\n */\nexport interface AuthGuardProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n requireAuth?: boolean;\n}\n\n/**\n * 自定义菜单项接口\n */\nexport interface CustomMenuItem {\n id: string;\n label: string;\n icon?: React.ComponentType<any>;\n onClick: () => void;\n requireAuth?: boolean; // 是否需要登录才显示\n}\n\n/**\n * 用户菜单Props\n */\nexport interface UserMenuProps {\n customMenuItems?: CustomMenuItem[]; // 自定义菜单项\n className?: string; // 自定义样式类名\n}\n\n/**\n * 忘记密码模态框Props\n */\nexport interface ForgotPasswordModalProps {\n isOpen: boolean;\n onClose: () => void;\n onSuccess: () => void;\n}\n\n// ===== Hook返回类型 =====\n\n/**\n * useAuth Hook返回值类型\n */\nexport interface UseAuthReturn {\n user: User | null;\n loading: boolean;\n isAuthenticated: boolean;\n login: (credentials: LoginRequest) => Promise<{ success: boolean; user?: User; message?: string }>;\n register: (userData: RegisterRequest) => Promise<{ success: boolean; user?: User; message?: string }>;\n logout: () => Promise<void>;\n refreshUser: () => void;\n}\n\n// ===== 服务相关类型 =====\n\n/**\n * 认证服务接口\n */\nexport interface AuthService {\n verifyPassword(phone: string, password: string): Promise<User | null>;\n createUser(phone: string, password: string, name?: string): Promise<User>;\n createSession(userId: number): Promise<UserSession>;\n validateSession(sessionToken: string): Promise<SessionValidation>;\n deleteSession(sessionToken: string): Promise<void>;\n deleteUserSessions(userId: number): Promise<void>;\n updateLastLogin(userId: number): Promise<void>;\n cleanupExpiredSessions(): Promise<void>;\n getUserByPhone(phone: string): Promise<User | null>;\n sendVerificationCode(phone: string): Promise<string>;\n verifyCode(phone: string, code: string): Promise<boolean>;\n resetPassword(phone: string, newPassword: string): Promise<void>;\n cleanupExpiredVerificationCodes(): Promise<void>;\n}\n\n// ===== 工具函数类型 =====\n\n/**\n * API权限验证函数类型\n */\nexport type ValidateApiAuth = (request: Request) => Promise<User | null>;\n\n// ===== 常量类型 =====\n\n/**\n * 用户角色枚举\n */\nexport enum UserRole {\n USER = 'user',\n ADMIN = 'admin'\n}\n\n/**\n * 会话配置\n */\nexport interface SessionConfig {\n maxAge: number; // 会话最大存活时间(秒)\n cookieName: string; // Cookie名称\n secure: boolean; // 是否使用安全Cookie\n httpOnly: boolean; // 是否仅HTTP访问\n sameSite: 'strict' | 'lax' | 'none'; // SameSite策略\n} "]}
@@ -1,53 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { LegacyAuthDbService } from '../services/index.mjs';
3
- import '../schema/index.mjs';
4
- import 'drizzle-orm';
5
- import 'drizzle-orm/pg-core';
6
- import '../../../index-DNKZ7-R_.mjs';
7
-
8
- interface LegacyCookieOptions {
9
- name?: string;
10
- httpOnly?: boolean;
11
- secure?: boolean;
12
- sameSite?: 'lax' | 'strict' | 'none';
13
- maxAge?: number;
14
- path?: string;
15
- }
16
- interface LegacyBaseRouteConfig {
17
- authService: LegacyAuthDbService;
18
- cookieOptions?: LegacyCookieOptions;
19
- }
20
- interface LegacyLoginRouteConfig extends LegacyBaseRouteConfig {
21
- }
22
- interface LegacyRegisterRouteConfig extends LegacyBaseRouteConfig {
23
- }
24
- interface LegacyLogoutRouteConfig extends LegacyBaseRouteConfig {
25
- }
26
- interface LegacyValidateRouteConfig extends LegacyBaseRouteConfig {
27
- }
28
- interface LegacySendVerificationCodeConfig extends LegacyBaseRouteConfig {
29
- }
30
- interface LegacyResetPasswordConfig extends LegacyBaseRouteConfig {
31
- }
32
- interface LegacyApiResponse<T = any> {
33
- success: boolean;
34
- message?: string;
35
- user?: any;
36
- sessionToken?: string;
37
- valid?: boolean;
38
- data?: T;
39
- }
40
-
41
- declare function createLegacyLoginHandler(config: LegacyLoginRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
42
-
43
- declare function createLegacyRegisterHandler(config: LegacyRegisterRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
44
-
45
- declare function createLegacyLogoutHandler(config: LegacyLogoutRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
46
-
47
- declare function createLegacyValidateHandler(config: LegacyValidateRouteConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
48
-
49
- declare function createLegacySendVerificationCodeHandler(config: LegacySendVerificationCodeConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
50
-
51
- declare function createLegacyResetPasswordHandler(config: LegacyResetPasswordConfig): (request: NextRequest) => Promise<NextResponse<LegacyApiResponse<any>>>;
52
-
53
- export { type LegacyApiResponse, type LegacyCookieOptions, type LegacyLoginRouteConfig, type LegacyLogoutRouteConfig, type LegacyRegisterRouteConfig, type LegacyResetPasswordConfig, type LegacySendVerificationCodeConfig, type LegacyValidateRouteConfig, createLegacyLoginHandler, createLegacyLogoutHandler, createLegacyRegisterHandler, createLegacyResetPasswordHandler, createLegacySendVerificationCodeHandler, createLegacyValidateHandler };