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,319 +1,9 @@
1
- import { useAuth } from '../../chunk-HCI6JQOU.mjs';
1
+ export { AdminLoginPage, AuthGuard, ForgotPasswordModal, LoginForm, LoginModal, RegisterForm, RegisterFormHeadless, RegisterModal, SignInForm, UserMenu, VerifyOtpForm } from '../../chunk-RWCD2CAD.mjs';
2
+ import '../../chunk-7E3J7VAD.mjs';
3
+ import '../../chunk-LKBIVQBT.mjs';
4
+ import '../../chunk-TTYCVBIQ.mjs';
5
+ export { validateEmail, validatePassword, validatePhoneNumber } from '../../chunk-ZF7DKR5A.mjs';
6
+ import '../../chunk-MZOGYD4N.mjs';
2
7
  import '../../chunk-MAI35PU6.mjs';
3
- import React3, { useState, useEffect } from 'react';
4
- import { clsx } from 'clsx';
5
-
6
- function LoginForm({ apiClient, onSuccess, onError, children }) {
7
- const { login, loading, error: authError, clearError } = useAuth(apiClient);
8
- const [email, setEmail] = useState("");
9
- const [password, setPassword] = useState("");
10
- const handleSubmit = async (e) => {
11
- if (e) {
12
- e.preventDefault();
13
- }
14
- clearError();
15
- const result = await login(email, password);
16
- if (result.success) {
17
- const currentUser = apiClient.getUser();
18
- if (currentUser) {
19
- onSuccess?.(currentUser);
20
- }
21
- } else {
22
- onError?.(result.error || "\u767B\u5F55\u5931\u8D25");
23
- }
24
- };
25
- const state = {
26
- email,
27
- password,
28
- loading,
29
- error: authError,
30
- handleEmailChange: setEmail,
31
- handlePasswordChange: setPassword,
32
- handleSubmit
33
- };
34
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, children(state));
35
- }
36
- function RegisterForm({
37
- apiClient,
38
- onSuccess,
39
- onError,
40
- children
41
- }) {
42
- const { register, loading, error: authError, clearError } = useAuth(apiClient);
43
- const [email, setEmail] = useState("");
44
- const [password, setPassword] = useState("");
45
- const [username, setUsername] = useState("");
46
- const handleSubmit = async (e) => {
47
- if (e) {
48
- e.preventDefault();
49
- }
50
- clearError();
51
- if (!email || !password || !username) {
52
- const errorMsg = "\u8BF7\u586B\u5199\u6240\u6709\u5B57\u6BB5";
53
- onError?.(errorMsg);
54
- return;
55
- }
56
- if (password.length < 6) {
57
- const errorMsg = "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A 6 \u4F4D";
58
- onError?.(errorMsg);
59
- return;
60
- }
61
- const result = await register(email, password, username);
62
- if (result.success) {
63
- const currentUser = apiClient.getUser();
64
- if (currentUser) {
65
- onSuccess?.(currentUser);
66
- }
67
- } else {
68
- onError?.(result.error || "\u6CE8\u518C\u5931\u8D25");
69
- }
70
- };
71
- const state = {
72
- email,
73
- password,
74
- username,
75
- loading,
76
- error: authError,
77
- handleEmailChange: setEmail,
78
- handlePasswordChange: setPassword,
79
- handleUsernameChange: setUsername,
80
- handleSubmit
81
- };
82
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, children(state));
83
- }
84
- var DefaultContainer = ({ children }) => /* @__PURE__ */ React3.createElement("div", { className: "min-h-screen bg-gradient-to-br from-indigo-100 via-purple-50 to-pink-100 flex items-center justify-center px-4 py-12 relative overflow-hidden" }, /* @__PURE__ */ React3.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none" }, /* @__PURE__ */ React3.createElement(
85
- "div",
86
- {
87
- className: "absolute -top-40 -right-40 w-80 h-80 bg-purple-300 rounded-full mix-blend-multiply filter blur-xl opacity-70",
88
- style: {
89
- animation: "blob 7s infinite"
90
- }
91
- }
92
- ), /* @__PURE__ */ React3.createElement(
93
- "div",
94
- {
95
- className: "absolute -bottom-40 -left-40 w-80 h-80 bg-indigo-300 rounded-full mix-blend-multiply filter blur-xl opacity-70",
96
- style: {
97
- animation: "blob 7s infinite",
98
- animationDelay: "2s"
99
- }
100
- }
101
- ), /* @__PURE__ */ React3.createElement(
102
- "div",
103
- {
104
- className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-80 h-80 bg-pink-300 rounded-full mix-blend-multiply filter blur-xl opacity-70",
105
- style: {
106
- animation: "blob 7s infinite",
107
- animationDelay: "4s"
108
- }
109
- }
110
- )), /* @__PURE__ */ React3.createElement("div", { className: "relative z-[10]" }, children), /* @__PURE__ */ React3.createElement("style", { dangerouslySetInnerHTML: { __html: `
111
- @keyframes blob {
112
- 0%, 100% { transform: translate(0, 0) scale(1); }
113
- 25% { transform: translate(20px, -50px) scale(1.1); }
114
- 50% { transform: translate(-20px, 20px) scale(0.9); }
115
- 75% { transform: translate(50px, 50px) scale(1.05); }
116
- }
117
- ` } }));
118
- var DefaultCard = ({ children }) => /* @__PURE__ */ React3.createElement("div", { className: "w-full max-w-md bg-white/95 backdrop-blur-xl rounded-2xl shadow-2xl border border-white/20 overflow-hidden" }, children);
119
- var DefaultInput = (props) => /* @__PURE__ */ React3.createElement(
120
- "input",
121
- {
122
- ...props,
123
- className: "w-full px-4 py-3 bg-gray-50 border border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition-all duration-200 placeholder-gray-400 text-gray-900 hover:border-gray-300"
124
- }
125
- );
126
- var DefaultButton = ({ children, disabled, type, ...props }) => /* @__PURE__ */ React3.createElement(
127
- "button",
128
- {
129
- type: type || "button",
130
- disabled,
131
- ...props,
132
- className: clsx("w-full bg-gradient-to-r from-blue-50 to-indigo-50 border-2 border-dashed border-blue-300 text-blue-700 hover:from-blue-100 hover:to-indigo-100 hover:border-blue-400 px-4 py-2.5 rounded-xl text-sm font-medium transition-all duration-200 transform hover:scale-105 active:scale-95", disabled ? "opacity-60 cursor-not-allowed hover:scale-100 hover:shadow-none" : "block", "}"),
133
- style: {
134
- backgroundSize: "200% 100%",
135
- backgroundPosition: disabled ? "0% 0%" : "0% 0%",
136
- display: "block"
137
- },
138
- onMouseEnter: (e) => {
139
- if (!disabled) {
140
- e.currentTarget.style.backgroundPosition = "100% 0%";
141
- }
142
- },
143
- onMouseLeave: (e) => {
144
- if (!disabled) {
145
- e.currentTarget.style.backgroundPosition = "0% 0%";
146
- }
147
- }
148
- },
149
- children
150
- );
151
- var DefaultAlert = ({ children }) => /* @__PURE__ */ React3.createElement("div", { className: "bg-red-50 border-l-4 border-red-500 text-red-700 px-4 py-3 rounded-lg relative flex items-start space-x-3 shadow-sm" }, /* @__PURE__ */ React3.createElement("svg", { className: "w-5 h-5 text-red-500 mt-0.5 flex-shrink-0", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React3.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" })), /* @__PURE__ */ React3.createElement("div", { className: "flex-1 text-sm" }, children));
152
- var DefaultBadge = ({
153
- children,
154
- variant,
155
- className = ""
156
- }) => /* @__PURE__ */ React3.createElement(
157
- "span",
158
- {
159
- className: clsx("inline-flex items-center px-3 py-1.5 rounded-full text-xs font-semibold shadow-sm", variant === "dev" ? "bg-gradient-to-r from-orange-400 to-amber-500 text-white border-0" : "bg-gray-100 text-gray-700 border border-gray-200", className)
160
- },
161
- children
162
- );
163
- function AdminLoginPage(props) {
164
- const {
165
- apiClient,
166
- onLoginSuccess,
167
- onLoginError,
168
- checkPermission,
169
- permissionDeniedMessage = "\u8BBF\u95EE\u88AB\u62D2\u7EDD\uFF1A\u9700\u8981\u7BA1\u7406\u5458\u6743\u9650",
170
- devConfig,
171
- texts = {},
172
- analytics,
173
- components,
174
- classNames = {}
175
- } = props;
176
- const Container = components?.Container || DefaultContainer;
177
- const Card = components?.Card || DefaultCard;
178
- const Input = components?.Input || DefaultInput;
179
- const Button = components?.Button || DefaultButton;
180
- const Alert = components?.Alert || DefaultAlert;
181
- components?.Badge || DefaultBadge;
182
- const t = {
183
- appName: texts.appName || "LyricNote",
184
- appDescription: texts.appDescription || "\u667A\u80FD\u6B4C\u8BCD\u7BA1\u7406\u5E73\u53F0",
185
- pageTitle: texts.pageTitle || "\u7BA1\u7406\u5458\u767B\u5F55",
186
- pageSubtitle: texts.pageSubtitle || "\u8BF7\u4F7F\u7528\u7BA1\u7406\u5458\u8D26\u6237\u767B\u5F55\u7CFB\u7EDF",
187
- emailLabel: texts.emailLabel || "\u7BA1\u7406\u5458\u90AE\u7BB1",
188
- emailPlaceholder: texts.emailPlaceholder || "admin@example.com",
189
- passwordLabel: texts.passwordLabel || "\u5BC6\u7801",
190
- passwordPlaceholder: texts.passwordPlaceholder || "\u8BF7\u8F93\u5165\u5BC6\u7801",
191
- loginButton: texts.loginButton || "\u767B\u5F55\u7BA1\u7406\u540E\u53F0",
192
- loggingInButton: texts.loggingInButton || "\u767B\u5F55\u4E2D...",
193
- fillTestAccount: texts.fillTestAccount || "\u586B\u5145\u6D4B\u8BD5\u8D26\u6237",
194
- copyCredentials: texts.copyCredentials || "\u590D\u5236",
195
- devModeLabel: texts.devModeLabel || "\u5F00\u53D1\u73AF\u5883",
196
- testAccountInfo: texts.testAccountInfo || "\u6D4B\u8BD5\u8D26\u6237\u5DF2\u586B\u5145\uFF0C\u53EF\u76F4\u63A5\u767B\u5F55",
197
- testAccountFilled: texts.testAccountFilled || "\u5DF2\u81EA\u52A8\u586B\u5145\u6D4B\u8BD5\u8D26\u6237\u4FE1\u606F",
198
- footer: texts.footer || "\u4EC5\u9650\u7BA1\u7406\u5458\u8BBF\u95EE \u2022 \u7CFB\u7EDF\u5B89\u5168\u4FDD\u62A4"
199
- };
200
- const [email, setEmail] = useState("");
201
- const [password, setPassword] = useState("");
202
- const [showPassword, setShowPassword] = useState(false);
203
- const [autoFilled, setAutoFilled] = useState(false);
204
- const [localError, setLocalError] = useState("");
205
- const isDevelopment = devConfig?.enabled ?? (typeof window !== "undefined" && (process.env.NODE_ENV === "development" || window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1"));
206
- const testEmail = devConfig?.testEmail || "admin@example.com";
207
- const testPassword = devConfig?.testPassword || "admin123";
208
- const autoFillDelay = devConfig?.autoFillDelay || 2e3;
209
- const { user, isLoggedIn, loading, error: authError, login, clearError } = useAuth(apiClient);
210
- const error = authError || localError;
211
- useEffect(() => {
212
- if (typeof window !== "undefined" && analytics?.trackPageView) {
213
- analytics.trackPageView({
214
- pageName: "admin_login_page",
215
- pageUrl: window.location.pathname
216
- });
217
- }
218
- }, [analytics]);
219
- useEffect(() => {
220
- if (isDevelopment && !email && !password) {
221
- const timer = setTimeout(() => {
222
- if (!email && !password) {
223
- setEmail(testEmail);
224
- setPassword(testPassword);
225
- setAutoFilled(true);
226
- }
227
- }, autoFillDelay);
228
- return () => clearTimeout(timer);
229
- }
230
- return;
231
- }, [isDevelopment, email, password, testEmail, testPassword, autoFillDelay]);
232
- useEffect(() => {
233
- if (user && isLoggedIn) {
234
- if (checkPermission && !checkPermission(user)) {
235
- setLocalError(permissionDeniedMessage);
236
- analytics?.trackPermissionDenied?.(user);
237
- return;
238
- }
239
- analytics?.trackLoginSuccess?.(user);
240
- analytics?.setUser?.({
241
- userId: user.id,
242
- email: user.email,
243
- role: user.role
244
- });
245
- onLoginSuccess?.(user);
246
- }
247
- }, [user, isLoggedIn, checkPermission, permissionDeniedMessage, analytics, onLoginSuccess]);
248
- const handleSubmit = async (e) => {
249
- e.preventDefault();
250
- setLocalError("");
251
- clearError();
252
- try {
253
- const result = await login(email, password);
254
- if (!result.success) {
255
- const errorMsg = result.error || "\u767B\u5F55\u5931\u8D25";
256
- setLocalError(errorMsg);
257
- analytics?.trackLoginFailed?.(errorMsg, email);
258
- onLoginError?.(errorMsg);
259
- }
260
- } catch (err) {
261
- const errorMsg = "\u767B\u5F55\u5931\u8D25\uFF1A\u7F51\u7EDC\u9519\u8BEF\u6216\u670D\u52A1\u5668\u9519\u8BEF";
262
- setLocalError(errorMsg);
263
- analytics?.trackLoginFailed?.(errorMsg, email);
264
- onLoginError?.(errorMsg);
265
- }
266
- };
267
- const fillTestAccount = () => {
268
- setEmail(testEmail);
269
- setPassword(testPassword);
270
- setLocalError("");
271
- setAutoFilled(true);
272
- };
273
- return /* @__PURE__ */ React3.createElement(Container, null, /* @__PURE__ */ React3.createElement("div", { className: "w-full max-w-md" }, /* @__PURE__ */ React3.createElement(Card, null, /* @__PURE__ */ React3.createElement("div", { className: "p-8" }, /* @__PURE__ */ React3.createElement("div", { className: "pb-8" }, /* @__PURE__ */ React3.createElement("h2", { className: "text-2xl font-bold text-center text-gray-800" }, t.pageTitle)), /* @__PURE__ */ React3.createElement("form", { onSubmit: handleSubmit, className: "space-y-5" }, error && /* @__PURE__ */ React3.createElement(Alert, null, error), /* @__PURE__ */ React3.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React3.createElement("label", { htmlFor: "email", className: "text-sm font-semibold text-gray-700 block" }, t.emailLabel), /* @__PURE__ */ React3.createElement(
274
- Input,
275
- {
276
- id: "email",
277
- type: "email",
278
- value: email,
279
- onChange: (e) => setEmail(e.target.value),
280
- placeholder: t.emailPlaceholder,
281
- required: true,
282
- disabled: loading
283
- }
284
- )), /* @__PURE__ */ React3.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React3.createElement("label", { htmlFor: "password", className: "text-sm font-semibold text-gray-700 block" }, t.passwordLabel), /* @__PURE__ */ React3.createElement("div", { className: "relative" }, /* @__PURE__ */ React3.createElement(
285
- Input,
286
- {
287
- id: "password",
288
- type: showPassword ? "text" : "password",
289
- value: password,
290
- onChange: (e) => setPassword(e.target.value),
291
- placeholder: t.passwordPlaceholder,
292
- required: true,
293
- disabled: loading
294
- }
295
- ), /* @__PURE__ */ React3.createElement(
296
- "button",
297
- {
298
- type: "button",
299
- onClick: () => setShowPassword(!showPassword),
300
- className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 transition-colors p-1",
301
- disabled: loading,
302
- title: showPassword ? "\u9690\u85CF\u5BC6\u7801" : "\u663E\u793A\u5BC6\u7801"
303
- },
304
- showPassword ? /* @__PURE__ */ React3.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React3.createElement("path", { fillRule: "evenodd", d: "M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z", clipRule: "evenodd" }), /* @__PURE__ */ React3.createElement("path", { d: "M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.065 7 9.542 7 .847 0 1.669-.105 2.454-.303z" })) : /* @__PURE__ */ React3.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React3.createElement("path", { d: "M10 12a2 2 0 100-4 2 2 0 000 4z" }), /* @__PURE__ */ React3.createElement("path", { fillRule: "evenodd", d: "M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z", clipRule: "evenodd" }))
305
- ))), isDevelopment && /* @__PURE__ */ React3.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React3.createElement(
306
- "button",
307
- {
308
- type: "button",
309
- onClick: fillTestAccount,
310
- className: "w-full bg-gradient-to-r from-blue-50 to-indigo-50 border-2 border-dashed border-blue-300 text-blue-700 hover:from-blue-100 hover:to-indigo-100 hover:border-blue-400 px-4 py-2.5 rounded-xl text-sm font-medium transition-all duration-200 transform hover:scale-105 active:scale-95",
311
- disabled: loading
312
- },
313
- t.fillTestAccount
314
- )), /* @__PURE__ */ React3.createElement("div", { className: "pt-3" }, /* @__PURE__ */ React3.createElement(Button, { type: "submit", disabled: loading }, loading ? t.loggingInButton : t.loginButton)))))));
315
- }
316
-
317
- export { AdminLoginPage, LoginForm, RegisterForm };
318
8
  //# sourceMappingURL=index.mjs.map
319
9
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/common/auth/components/LoginForm.tsx","../../../src/common/auth/components/RegisterForm.tsx","../../../src/common/auth/components/AdminLoginPage.tsx"],"names":["React","useState"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Auth Components - LoginForm (Headless)\n * 无样式的登录表单组件\n */\n\nimport React, { useState } from 'react';\nimport { useAuth } from '../hooks';\nimport type { HeadlessLoginFormProps, LoginFormState } from './types';\n\n/**\n * Headless 登录表单组件\n *\n * 提供登录逻辑但不包含任何 UI 样式,\n * 使用 render props 模式让用户完全控制 UI\n *\n * @example\n * ```tsx\n * <LoginForm apiClient={apiClient}>\n * {({ email, password, loading, error, handleEmailChange, handlePasswordChange, handleSubmit }) => (\n * <form onSubmit={handleSubmit}>\n * <input\n * value={email}\n * onChange={(e) => handleEmailChange(e.target.value)}\n * />\n * <input\n * type=\"password\"\n * value={password}\n * onChange={(e) => handlePasswordChange(e.target.value)}\n * />\n * {error && <div>{error}</div>}\n * <button disabled={loading}>\n * {loading ? '登录中...' : '登录'}\n * </button>\n * </form>\n * )}\n * </LoginForm>\n * ```\n */\nexport function LoginForm({ apiClient, onSuccess, onError, children }: HeadlessLoginFormProps) {\n const { login, loading, error: authError, clearError } = useAuth(apiClient);\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n\n const handleSubmit = async (e?: React.FormEvent) => {\n if (e) {\n e.preventDefault();\n }\n\n clearError();\n\n const result = await login(email, password);\n\n if (result.success) {\n // 登录成功后 user 会自动更新到 state\n const currentUser = apiClient.getUser();\n if (currentUser) {\n onSuccess?.(currentUser);\n }\n } else {\n onError?.(result.error || '登录失败');\n }\n };\n\n const state: LoginFormState = {\n email,\n password,\n loading,\n error: authError,\n handleEmailChange: setEmail,\n handlePasswordChange: setPassword,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n\n","/**\n * Auth Components - RegisterForm (Headless)\n * 无样式的注册表单组件\n */\n\nimport React, { useState } from 'react';\nimport { useAuth } from '../hooks';\nimport type { HeadlessRegisterFormProps, RegisterFormState } from './types';\n\n/**\n * Headless 注册表单组件\n *\n * 提供注册逻辑但不包含任何 UI 样式,\n * 使用 render props 模式让用户完全控制 UI\n *\n * @example\n * ```tsx\n * <RegisterForm apiClient={apiClient}>\n * {({ email, password, username, loading, error, handleEmailChange, handlePasswordChange, handleUsernameChange, handleSubmit }) => (\n * <form onSubmit={handleSubmit}>\n * <input\n * value={email}\n * onChange={(e) => handleEmailChange(e.target.value)}\n * />\n * <input\n * value={username}\n * onChange={(e) => handleUsernameChange(e.target.value)}\n * />\n * <input\n * type=\"password\"\n * value={password}\n * onChange={(e) => handlePasswordChange(e.target.value)}\n * />\n * {error && <div>{error}</div>}\n * <button disabled={loading}>\n * {loading ? '注册中...' : '注册'}\n * </button>\n * </form>\n * )}\n * </RegisterForm>\n * ```\n */\nexport function RegisterForm({\n apiClient,\n onSuccess,\n onError,\n children,\n}: HeadlessRegisterFormProps) {\n const { register, loading, error: authError, clearError } = useAuth(apiClient);\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [username, setUsername] = useState('');\n\n const handleSubmit = async (e?: React.FormEvent) => {\n if (e) {\n e.preventDefault();\n }\n\n clearError();\n\n // 基础验证\n if (!email || !password || !username) {\n const errorMsg = '请填写所有字段';\n onError?.(errorMsg);\n return;\n }\n\n if (password.length < 6) {\n const errorMsg = '密码长度至少为 6 位';\n onError?.(errorMsg);\n return;\n }\n\n const result = await register(email, password, username);\n\n if (result.success) {\n // 注册成功后 user 会自动更新到 state\n const currentUser = apiClient.getUser();\n if (currentUser) {\n onSuccess?.(currentUser);\n }\n } else {\n onError?.(result.error || '注册失败');\n }\n };\n\n const state: RegisterFormState = {\n email,\n password,\n username,\n loading,\n error: authError,\n handleEmailChange: setEmail,\n handlePasswordChange: setPassword,\n handleUsernameChange: setUsername,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n\n","/**\n * Admin Login Page Component\n * 完整的管理后台登录页面组件\n *\n * 功能:\n * - 邮箱密码登录\n * - 开发环境测试账户自动填充\n * - Analytics 埋点集成\n * - 角色权限检查\n * - 响应式设计\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { clsx } from 'clsx';\nimport { useAuth } from '../hooks';\nimport type { BaseApiClient } from '../client/base-api-client';\nimport type { User } from '../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AdminLoginPageProps {\n /**\n * API 客户端实例\n */\n apiClient: BaseApiClient;\n\n /**\n * 登录成功后的回调\n */\n onLoginSuccess?: (user: User) => void;\n\n /**\n * 登录失败的回调\n */\n onLoginError?: (error: string) => void;\n\n /**\n * 权限检查函数(可选)\n * 返回 true 表示有权限,false 表示无权限\n */\n checkPermission?: (user: User) => boolean;\n\n /**\n * 权限不足时的错误消息\n */\n permissionDeniedMessage?: string;\n\n /**\n * 开发环境配置\n */\n devConfig?: {\n /**\n * 是否启用开发模式功能(自动填充等)\n */\n enabled?: boolean;\n\n /**\n * 测试账户邮箱\n */\n testEmail?: string;\n\n /**\n * 测试账户密码\n */\n testPassword?: string;\n\n /**\n * 自动填充延迟(毫秒)\n */\n autoFillDelay?: number;\n };\n\n /**\n * 页面文本配置\n */\n texts?: {\n appName?: string;\n appDescription?: string;\n pageTitle?: string;\n pageSubtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n loginButton?: string;\n loggingInButton?: string;\n fillTestAccount?: string;\n copyCredentials?: string;\n devModeLabel?: string;\n testAccountInfo?: string;\n testAccountFilled?: string;\n footer?: string;\n };\n\n /**\n * Analytics 集成(可选)\n */\n analytics?: {\n /**\n * 页面访问埋点\n */\n trackPageView?: (data: Record<string, any>) => void;\n\n /**\n * 登录成功埋点\n */\n trackLoginSuccess?: (user: User) => void;\n\n /**\n * 登录失败埋点\n */\n trackLoginFailed?: (error: string, email: string) => void;\n\n /**\n * 权限拒绝埋点\n */\n trackPermissionDenied?: (user: User) => void;\n\n /**\n * 设置用户信息\n */\n setUser?: (user: { userId: string; email: string; role: string }) => void;\n };\n\n /**\n * UI 组件(可选,用于自定义样式)\n */\n components?: {\n Container?: React.ComponentType<{ children: React.ReactNode }>;\n Card?: React.ComponentType<{ children: React.ReactNode }>;\n Input?: React.ComponentType<any>;\n Button?: React.ComponentType<any>;\n Alert?: React.ComponentType<{ children: React.ReactNode }>;\n Badge?: React.ComponentType<{ children: React.ReactNode; variant?: string }>;\n };\n\n /**\n * className 配置(用于 Tailwind CSS)\n */\n classNames?: {\n container?: string;\n card?: string;\n header?: string;\n form?: string;\n input?: string;\n button?: string;\n alert?: string;\n };\n}\n\n// ============================================================================\n// Default Components (Tailwind CSS based) - Modern & Beautiful Design\n// ============================================================================\n\nconst DefaultContainer: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"min-h-screen bg-gradient-to-br from-indigo-100 via-purple-50 to-pink-100 flex items-center justify-center px-4 py-12 relative overflow-hidden\">\n {/* Animated background elements */}\n <div className=\"absolute inset-0 overflow-hidden pointer-events-none\">\n <div\n className=\"absolute -top-40 -right-40 w-80 h-80 bg-purple-300 rounded-full mix-blend-multiply filter blur-xl opacity-70\"\n style={{\n animation: 'blob 7s infinite',\n }}\n ></div>\n <div\n className=\"absolute -bottom-40 -left-40 w-80 h-80 bg-indigo-300 rounded-full mix-blend-multiply filter blur-xl opacity-70\"\n style={{\n animation: 'blob 7s infinite',\n animationDelay: '2s',\n }}\n ></div>\n <div\n className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-80 h-80 bg-pink-300 rounded-full mix-blend-multiply filter blur-xl opacity-70\"\n style={{\n animation: 'blob 7s infinite',\n animationDelay: '4s',\n }}\n ></div>\n </div>\n <div className=\"relative z-[10]\">\n {children}\n </div>\n <style dangerouslySetInnerHTML={{__html: `\n @keyframes blob {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 25% { transform: translate(20px, -50px) scale(1.1); }\n 50% { transform: translate(-20px, 20px) scale(0.9); }\n 75% { transform: translate(50px, 50px) scale(1.05); }\n }\n `}} />\n </div>\n);\n\nconst DefaultCard: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"w-full max-w-md bg-white/95 backdrop-blur-xl rounded-2xl shadow-2xl border border-white/20 overflow-hidden\">\n {children}\n </div>\n);\n\nconst DefaultInput: React.FC<any> = (props) => (\n <input\n {...props}\n className=\"w-full px-4 py-3 bg-gray-50 border border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition-all duration-200 placeholder-gray-400 text-gray-900 hover:border-gray-300\"\n />\n);\n\nconst DefaultButton: React.FC<any> = ({ children, disabled, type, ...props }) => (\n <button\n type={type || 'button'}\n disabled={disabled}\n {...props}\n className={clsx('w-full bg-gradient-to-r from-blue-50 to-indigo-50 border-2 border-dashed border-blue-300 text-blue-700 hover:from-blue-100 hover:to-indigo-100 hover:border-blue-400 px-4 py-2.5 rounded-xl text-sm font-medium transition-all duration-200 transform hover:scale-105 active:scale-95', disabled ? 'opacity-60 cursor-not-allowed hover:scale-100 hover:shadow-none' : 'block', '}')}\n style={{\n backgroundSize: '200% 100%',\n backgroundPosition: disabled ? '0% 0%' : '0% 0%',\n display: 'block',\n }}\n onMouseEnter={(e) => {\n if (!disabled) {\n e.currentTarget.style.backgroundPosition = '100% 0%';\n }\n }}\n onMouseLeave={(e) => {\n if (!disabled) {\n e.currentTarget.style.backgroundPosition = '0% 0%';\n }\n }}\n >\n {children}\n </button>\n);\n\nconst DefaultAlert: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"bg-red-50 border-l-4 border-red-500 text-red-700 px-4 py-3 rounded-lg relative flex items-start space-x-3 shadow-sm\">\n <svg className=\"w-5 h-5 text-red-500 mt-0.5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clipRule=\"evenodd\"/>\n </svg>\n <div className=\"flex-1 text-sm\">{children}</div>\n </div>\n);\n\nconst DefaultBadge: React.FC<{ children: React.ReactNode; variant?: string; className?: string }> = ({\n children,\n variant,\n className = '',\n}) => (\n <span\n className={clsx('inline-flex items-center px-3 py-1.5 rounded-full text-xs font-semibold shadow-sm', variant === 'dev'\n ? 'bg-gradient-to-r from-orange-400 to-amber-500 text-white border-0'\n : 'bg-gray-100 text-gray-700 border border-gray-200', className)}\n >\n {children}\n </span>\n);\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport function AdminLoginPage(props: AdminLoginPageProps) {\n const {\n apiClient,\n onLoginSuccess,\n onLoginError,\n checkPermission,\n permissionDeniedMessage = '访问被拒绝:需要管理员权限',\n devConfig,\n texts = {},\n analytics,\n components,\n classNames = {},\n } = props;\n\n // Use custom or default components\n const Container = components?.Container || DefaultContainer;\n const Card = components?.Card || DefaultCard;\n const Input = components?.Input || DefaultInput;\n const Button = components?.Button || DefaultButton;\n const Alert = components?.Alert || DefaultAlert;\n const Badge = components?.Badge || DefaultBadge;\n\n // Default texts\n const t = {\n appName: texts.appName || 'LyricNote',\n appDescription: texts.appDescription || '智能歌词管理平台',\n pageTitle: texts.pageTitle || '管理员登录',\n pageSubtitle: texts.pageSubtitle || '请使用管理员账户登录系统',\n emailLabel: texts.emailLabel || '管理员邮箱',\n emailPlaceholder: texts.emailPlaceholder || 'admin@example.com',\n passwordLabel: texts.passwordLabel || '密码',\n passwordPlaceholder: texts.passwordPlaceholder || '请输入密码',\n loginButton: texts.loginButton || '登录管理后台',\n loggingInButton: texts.loggingInButton || '登录中...',\n fillTestAccount: texts.fillTestAccount || '填充测试账户',\n copyCredentials: texts.copyCredentials || '复制',\n devModeLabel: texts.devModeLabel || '开发环境',\n testAccountInfo: texts.testAccountInfo || '测试账户已填充,可直接登录',\n testAccountFilled: texts.testAccountFilled || '已自动填充测试账户信息',\n footer: texts.footer || '仅限管理员访问 • 系统安全保护',\n };\n\n // State\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [autoFilled, setAutoFilled] = useState(false);\n const [localError, setLocalError] = useState('');\n\n // Check if development mode\n const isDevelopment =\n devConfig?.enabled ??\n (typeof window !== 'undefined' &&\n (process.env.NODE_ENV === 'development' ||\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'));\n\n // Test account config\n const testEmail = devConfig?.testEmail || 'admin@example.com';\n const testPassword = devConfig?.testPassword || 'admin123';\n const autoFillDelay = devConfig?.autoFillDelay || 2000;\n\n // Use auth hook\n const { user, isLoggedIn, loading, error: authError, login, clearError } = useAuth(apiClient as any);\n\n const error = authError || localError;\n\n // Track page view\n useEffect(() => {\n if (typeof window !== 'undefined' && analytics?.trackPageView) {\n analytics.trackPageView({\n pageName: 'admin_login_page',\n pageUrl: window.location.pathname,\n });\n }\n }, [analytics]);\n\n // Auto-fill test account in development\n useEffect(() => {\n if (isDevelopment && !email && !password) {\n const timer = setTimeout(() => {\n if (!email && !password) {\n setEmail(testEmail);\n setPassword(testPassword);\n setAutoFilled(true);\n }\n }, autoFillDelay);\n\n return () => clearTimeout(timer);\n }\n return; // Explicit return for all code paths\n }, [isDevelopment, email, password, testEmail, testPassword, autoFillDelay]);\n\n // Check permission after login\n useEffect(() => {\n if (user && isLoggedIn) {\n // Check permission if provided\n if (checkPermission && !checkPermission(user)) {\n setLocalError(permissionDeniedMessage);\n analytics?.trackPermissionDenied?.(user);\n return;\n }\n\n // Track login success\n analytics?.trackLoginSuccess?.(user);\n analytics?.setUser?.({\n userId: user.id,\n email: user.email,\n role: user.role,\n });\n\n // Call success callback\n onLoginSuccess?.(user);\n }\n }, [user, isLoggedIn, checkPermission, permissionDeniedMessage, analytics, onLoginSuccess]);\n\n // Handle login submit\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLocalError('');\n clearError();\n\n try {\n const result = await login(email, password);\n\n if (!result.success) {\n const errorMsg = result.error || '登录失败';\n setLocalError(errorMsg);\n analytics?.trackLoginFailed?.(errorMsg, email);\n onLoginError?.(errorMsg);\n }\n } catch (err) {\n const errorMsg = '登录失败:网络错误或服务器错误';\n setLocalError(errorMsg);\n analytics?.trackLoginFailed?.(errorMsg, email);\n onLoginError?.(errorMsg);\n }\n };\n\n // Fill test account\n const fillTestAccount = () => {\n setEmail(testEmail);\n setPassword(testPassword);\n setLocalError('');\n setAutoFilled(true);\n };\n\n // Copy test credentials\n const copyTestCredentials = async () => {\n const credentials = '邮箱: ' + (testEmail) + '\\n密码: ' + (testPassword);\n try {\n await navigator.clipboard.writeText(credentials);\n } catch (err) {\n console.warn('复制失败,请手动复制');\n }\n };\n\n return (\n <Container>\n <div className=\"w-full max-w-md\">\n {/* Login Form Card */}\n <Card>\n <div className=\"p-8\">\n {/* Title */}\n <div className=\"pb-8\">\n <h2 className=\"text-2xl font-bold text-center text-gray-800\">{t.pageTitle}</h2>\n </div>\n\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n {/* Error Alert */}\n {error && <Alert>{error}</Alert>}\n\n {/* Email Input */}\n <div className=\"space-y-2\">\n <label htmlFor=\"email\" className=\"text-sm font-semibold text-gray-700 block\">\n {t.emailLabel}\n </label>\n <Input\n id=\"email\"\n type=\"email\"\n value={email}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setEmail(e.target.value)}\n placeholder={t.emailPlaceholder}\n required\n disabled={loading}\n />\n </div>\n\n {/* Password Input */}\n <div className=\"space-y-2\">\n <label htmlFor=\"password\" className=\"text-sm font-semibold text-gray-700 block\">\n {t.passwordLabel}\n </label>\n <div className=\"relative\">\n <Input\n id=\"password\"\n type={showPassword ? 'text' : 'password'}\n value={password}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setPassword(e.target.value)\n }\n placeholder={t.passwordPlaceholder}\n required\n disabled={loading}\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 transition-colors p-1\"\n disabled={loading}\n title={showPassword ? '隐藏密码' : '显示密码'}\n >\n {showPassword ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z\" clipRule=\"evenodd\" />\n <path d=\"M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.065 7 9.542 7 .847 0 1.669-.105 2.454-.303z\" />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 12a2 2 0 100-4 2 2 0 000 4z\" />\n <path fillRule=\"evenodd\" d=\"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z\" clipRule=\"evenodd\" />\n </svg>\n )}\n </button>\n </div>\n </div>\n\n {/* Dev Mode: Test Account Button */}\n {isDevelopment && (\n <div className=\"pt-2\">\n <button\n type=\"button\"\n onClick={fillTestAccount}\n className=\"w-full bg-gradient-to-r from-blue-50 to-indigo-50 border-2 border-dashed border-blue-300 text-blue-700 hover:from-blue-100 hover:to-indigo-100 hover:border-blue-400 px-4 py-2.5 rounded-xl text-sm font-medium transition-all duration-200 transform hover:scale-105 active:scale-95\"\n disabled={loading}\n >\n {t.fillTestAccount}\n </button>\n </div>\n )}\n\n {/* Submit Button */}\n <div className=\"pt-3\">\n <Button type=\"submit\" disabled={loading}>\n {loading ? t.loggingInButton : t.loginButton}\n </Button>\n </div>\n </form>\n </div>\n </Card>\n </div>\n </Container>\n );\n}\n\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -1,31 +1,13 @@
1
- import * as React from 'react';
2
- import { I as IAuthClient, a as UseAuthReturn } from '../../types-DCRvasyH.mjs';
3
- export { A as AuthResult, U as User } from '../../types-DCRvasyH.mjs';
1
+ export { UseSessionReturn, useAuth, useAuthForm, useSession } from '../../common/auth/hooks/index.mjs';
2
+ export { U as UseAuthActionsReturn, u as useAuthActions } from '../../useAuthActions-7S5dL7Oh.mjs';
3
+ import 'react';
4
+ import '../../types-DCRvasyH.mjs';
4
5
  import '../../enums-Dume-V5Y.mjs';
5
6
  import 'drizzle-orm/pg-core';
6
-
7
- declare function useAuth(apiClient: IAuthClient): UseAuthReturn;
8
- /**
9
- * 表单验证 Hook
10
- *
11
- * @example
12
- * ```typescript
13
- * const { values, errors, handleChange, handleBlur, validate } = useAuthForm({
14
- * email: '',
15
- * password: ''
16
- * })
17
- * ```
18
- */
19
- declare function useAuthForm<T extends Record<string, any>>(initialValues: T): {
20
- values: T;
21
- errors: Partial<Record<keyof T, string>>;
22
- touched: Partial<Record<keyof T, boolean>>;
23
- handleChange: (field: keyof T, value: any) => void;
24
- handleBlur: (field: keyof T) => void;
25
- validate: (validationRules: Partial<Record<keyof T, (value: any) => string | undefined>>) => boolean;
26
- reset: () => void;
27
- setValues: React.Dispatch<React.SetStateAction<T>>;
28
- setErrors: React.Dispatch<React.SetStateAction<Partial<Record<keyof T, string>>>>;
29
- };
30
-
31
- export { IAuthClient as BaseApiClient, UseAuthReturn, useAuth, useAuthForm };
7
+ import 'better-auth/client';
8
+ import 'better-auth';
9
+ import '../../common/auth/react/index.mjs';
10
+ import 'zod/v4/core';
11
+ import 'zod';
12
+ import 'better-auth/plugins/email-otp';
13
+ import 'better-auth/plugins/phone-number';
@@ -1,31 +1,13 @@
1
- import * as React from 'react';
2
- import { I as IAuthClient, a as UseAuthReturn } from '../../types-C_W_CoUD.js';
3
- export { A as AuthResult, U as User } from '../../types-C_W_CoUD.js';
1
+ export { UseSessionReturn, useAuth, useAuthForm, useSession } from '../../common/auth/hooks/index.js';
2
+ export { U as UseAuthActionsReturn, u as useAuthActions } from '../../useAuthActions-7S5dL7Oh.js';
3
+ import 'react';
4
+ import '../../types-C_W_CoUD.js';
4
5
  import '../../enums-Dume-V5Y.js';
5
6
  import 'drizzle-orm/pg-core';
6
-
7
- declare function useAuth(apiClient: IAuthClient): UseAuthReturn;
8
- /**
9
- * 表单验证 Hook
10
- *
11
- * @example
12
- * ```typescript
13
- * const { values, errors, handleChange, handleBlur, validate } = useAuthForm({
14
- * email: '',
15
- * password: ''
16
- * })
17
- * ```
18
- */
19
- declare function useAuthForm<T extends Record<string, any>>(initialValues: T): {
20
- values: T;
21
- errors: Partial<Record<keyof T, string>>;
22
- touched: Partial<Record<keyof T, boolean>>;
23
- handleChange: (field: keyof T, value: any) => void;
24
- handleBlur: (field: keyof T) => void;
25
- validate: (validationRules: Partial<Record<keyof T, (value: any) => string | undefined>>) => boolean;
26
- reset: () => void;
27
- setValues: React.Dispatch<React.SetStateAction<T>>;
28
- setErrors: React.Dispatch<React.SetStateAction<Partial<Record<keyof T, string>>>>;
29
- };
30
-
31
- export { IAuthClient as BaseApiClient, UseAuthReturn, useAuth, useAuthForm };
7
+ import 'better-auth/client';
8
+ import 'better-auth';
9
+ import '../../common/auth/react/index.js';
10
+ import 'zod/v4/core';
11
+ import 'zod';
12
+ import 'better-auth/plugins/email-otp';
13
+ import 'better-auth/plugins/phone-number';
@@ -1,17 +1,28 @@
1
1
  'use strict';
2
2
 
3
- var chunkHBF4HPRK_js = require('../../chunk-HBF4HPRK.js');
3
+ require('../../chunk-FOQEQWX5.js');
4
+ var chunkIS7O4LPI_js = require('../../chunk-IS7O4LPI.js');
5
+ require('../../chunk-MIDXG6LS.js');
6
+ var chunkTXMX6PZR_js = require('../../chunk-TXMX6PZR.js');
4
7
  require('../../chunk-NSBPE2FW.js');
5
8
 
6
9
 
7
10
 
11
+ Object.defineProperty(exports, "useAuthActions", {
12
+ enumerable: true,
13
+ get: function () { return chunkIS7O4LPI_js.useAuthActions; }
14
+ });
8
15
  Object.defineProperty(exports, "useAuth", {
9
16
  enumerable: true,
10
- get: function () { return chunkHBF4HPRK_js.useAuth; }
17
+ get: function () { return chunkTXMX6PZR_js.useAuth; }
11
18
  });
12
19
  Object.defineProperty(exports, "useAuthForm", {
13
20
  enumerable: true,
14
- get: function () { return chunkHBF4HPRK_js.useAuthForm; }
21
+ get: function () { return chunkTXMX6PZR_js.useAuthForm; }
22
+ });
23
+ Object.defineProperty(exports, "useSession", {
24
+ enumerable: true,
25
+ get: function () { return chunkTXMX6PZR_js.useSession; }
15
26
  });
16
27
  //# sourceMappingURL=index.js.map
17
28
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,7 @@
1
- export { useAuth, useAuthForm } from '../../chunk-HCI6JQOU.mjs';
1
+ import '../../chunk-7E3J7VAD.mjs';
2
+ export { useAuthActions } from '../../chunk-TTYCVBIQ.mjs';
3
+ import '../../chunk-ZF7DKR5A.mjs';
4
+ export { useAuth, useAuthForm, useSession } from '../../chunk-MZOGYD4N.mjs';
2
5
  import '../../chunk-MAI35PU6.mjs';
3
6
  //# sourceMappingURL=index.mjs.map
4
7
  //# sourceMappingURL=index.mjs.map
@@ -1,18 +1,21 @@
1
- export { U as UserRole, u as userRole } from '../enums-Dume-V5Y.mjs';
2
- export { Account, NewAccount, NewSession, NewUser, NewVerification, Session, Verification, account, accountRelations, session, sessionRelations, user, userRelations, verifications } from './schema/index.mjs';
3
- export { A as AuthServiceConfig, D as DrizzleAuthService, S as SessionInfo, U as UserInfo, V as VerifyResult } from '../drizzle-auth-service-D-pljzCD.mjs';
4
- export { JwtPayload, generateToken, getTokenFromRequest, hashPassword, verifyJwtToken, verifyPassword } from './services/index.mjs';
5
- export { validateApiAuth, validateApiAuthNumeric } from '../common/auth/server/index.mjs';
6
- export { AnalyticsEvent, AnalyticsService, ApiResponse, BaseRouteConfig, LoginRouteConfig, RegisterRouteConfig, createAnalyticsAdapter, createDefaultBaseConfig, createDefaultLoginConfig, createDefaultRegisterConfig, createLoginHandler, createLoginOptionsHandler, createLogoutHandler, createLogoutOptionsHandler, createMeHandler, createMeOptionsHandler, createRegisterHandler, createRegisterOptionsHandler } from './routes/index.mjs';
7
- export { AuthLevel, AuthMiddlewareConfig, RouteContext, RouteHandler, createAuthMiddleware } from './middleware/index.mjs';
8
- export { useAuth, useAuthForm } from './hooks/index.mjs';
9
- export { B as BaseApiClient } from '../base-api-client-DrL35Ea2.mjs';
10
- export { API_ROUTES, STORAGE_KEYS } from './client/index.mjs';
11
- export { L as LoginFormState, R as RegisterFormState } from '../types-IYCqCk2g.mjs';
1
+ export { Account, NewAccount, NewSession, NewUser, NewVerification, Session, Verification, account, accountRelations, authDrizzleSchema, session, sessionRelations, user, userRelations, verification, verifications } from '../common/auth/schema/index.mjs';
2
+ export { b as createAuthRouteHandlers, c as createSa2kitAuth, d as createSessionValidator, g as getSessionUser, e as getSessionUserNumeric, a as mountAuthHandler, m as mountNextAuthHandler } from '../session-BCXvGCnm.mjs';
3
+ export { API_ROUTES, STORAGE_KEYS, createSa2kitAuthClient } from '../common/auth/client/index.mjs';
4
+ export { B as BaseApiClient } from '../base-api-client-DXLsq2yz.mjs';
5
+ export { useAuth, useAuthForm, useSession } from '../common/auth/hooks/index.mjs';
12
6
  export { A as AuthResult, a as UseAuthReturn, U as User } from '../types-DCRvasyH.mjs';
13
- import 'drizzle-orm/pg-core';
7
+ export { L as LoginFormState, R as RegisterFormState } from '../types.legacy-J-j-_ig_.mjs';
8
+ export { U as UserRole, u as userRole } from '../enums-Dume-V5Y.mjs';
14
9
  import 'drizzle-orm';
15
- import 'next/server';
16
- import 'react';
10
+ import 'drizzle-orm/pg-core';
11
+ import 'zod/v4/core';
12
+ import 'zod';
13
+ import 'better-auth/plugins/email-otp';
14
+ import 'better-auth/plugins/phone-number';
15
+ import 'better-auth/client';
16
+ import 'better-auth';
17
17
  import '../types-BaZccpvk.mjs';
18
18
  import '../types-CbTsi9CZ.mjs';
19
+ import 'react';
20
+ import '../common/auth/react/index.mjs';
21
+ import '../useAuthActions-7S5dL7Oh.mjs';
@@ -1,18 +1,21 @@
1
- export { U as UserRole, u as userRole } from '../enums-Dume-V5Y.js';
2
- export { Account, NewAccount, NewSession, NewUser, NewVerification, Session, Verification, account, accountRelations, session, sessionRelations, user, userRelations, verifications } from './schema/index.js';
3
- export { A as AuthServiceConfig, D as DrizzleAuthService, S as SessionInfo, U as UserInfo, V as VerifyResult } from '../drizzle-auth-service-D3qryE_I.js';
4
- export { JwtPayload, generateToken, getTokenFromRequest, hashPassword, verifyJwtToken, verifyPassword } from './services/index.js';
5
- export { validateApiAuth, validateApiAuthNumeric } from '../common/auth/server/index.js';
6
- export { AnalyticsEvent, AnalyticsService, ApiResponse, BaseRouteConfig, LoginRouteConfig, RegisterRouteConfig, createAnalyticsAdapter, createDefaultBaseConfig, createDefaultLoginConfig, createDefaultRegisterConfig, createLoginHandler, createLoginOptionsHandler, createLogoutHandler, createLogoutOptionsHandler, createMeHandler, createMeOptionsHandler, createRegisterHandler, createRegisterOptionsHandler } from './routes/index.js';
7
- export { AuthLevel, AuthMiddlewareConfig, RouteContext, RouteHandler, createAuthMiddleware } from './middleware/index.js';
8
- export { useAuth, useAuthForm } from './hooks/index.js';
9
- export { B as BaseApiClient } from '../base-api-client-B3wZZoaH.js';
10
- export { API_ROUTES, STORAGE_KEYS } from './client/index.js';
11
- export { L as LoginFormState, R as RegisterFormState } from '../types-C5vUWf9u.js';
1
+ export { Account, NewAccount, NewSession, NewUser, NewVerification, Session, Verification, account, accountRelations, authDrizzleSchema, session, sessionRelations, user, userRelations, verification, verifications } from '../common/auth/schema/index.js';
2
+ export { b as createAuthRouteHandlers, c as createSa2kitAuth, d as createSessionValidator, g as getSessionUser, e as getSessionUserNumeric, a as mountAuthHandler, m as mountNextAuthHandler } from '../session-BCXvGCnm.js';
3
+ export { API_ROUTES, STORAGE_KEYS, createSa2kitAuthClient } from '../common/auth/client/index.js';
4
+ export { B as BaseApiClient } from '../base-api-client-BpmcQt4Q.js';
5
+ export { useAuth, useAuthForm, useSession } from '../common/auth/hooks/index.js';
12
6
  export { A as AuthResult, a as UseAuthReturn, U as User } from '../types-C_W_CoUD.js';
13
- import 'drizzle-orm/pg-core';
7
+ export { L as LoginFormState, R as RegisterFormState } from '../types.legacy-J-j-_ig_.js';
8
+ export { U as UserRole, u as userRole } from '../enums-Dume-V5Y.js';
14
9
  import 'drizzle-orm';
15
- import 'next/server';
16
- import 'react';
10
+ import 'drizzle-orm/pg-core';
11
+ import 'zod/v4/core';
12
+ import 'zod';
13
+ import 'better-auth/plugins/email-otp';
14
+ import 'better-auth/plugins/phone-number';
15
+ import 'better-auth/client';
16
+ import 'better-auth';
17
17
  import '../types-BaZccpvk.js';
18
18
  import '../types-CbTsi9CZ.js';
19
+ import 'react';
20
+ import '../common/auth/react/index.js';
21
+ import '../useAuthActions-7S5dL7Oh.js';