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.
- package/README.md +1 -1
- package/dist/{UniversalFileService-GsP6D3Rc.d.ts → UniversalFileService-CC4d3wkc.d.ts} +2 -2
- package/dist/{UniversalFileService-BpvbZitV.d.mts → UniversalFileService-CzAE_G4V.d.mts} +2 -2
- package/dist/auth/client/index.d.mts +8 -27
- package/dist/auth/client/index.d.ts +8 -27
- package/dist/auth/client/index.js +9 -4
- package/dist/auth/client/index.mjs +2 -1
- package/dist/auth/components/index.d.mts +8 -225
- package/dist/auth/components/index.d.ts +8 -225
- package/dist/auth/components/index.js +62 -319
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/components/index.mjs +6 -316
- package/dist/auth/components/index.mjs.map +1 -1
- package/dist/auth/hooks/index.d.mts +11 -29
- package/dist/auth/hooks/index.d.ts +11 -29
- package/dist/auth/hooks/index.js +14 -3
- package/dist/auth/hooks/index.mjs +4 -1
- package/dist/auth/index.d.mts +17 -14
- package/dist/auth/index.d.ts +17 -14
- package/dist/auth/index.js +51 -90
- package/dist/auth/index.mjs +8 -7
- package/dist/auth/rn/index.d.mts +3087 -18
- package/dist/auth/rn/index.d.ts +3087 -18
- package/dist/auth/rn/index.js +396 -477
- package/dist/auth/rn/index.js.map +1 -1
- package/dist/auth/rn/index.mjs +384 -475
- package/dist/auth/rn/index.mjs.map +1 -1
- package/dist/auth/schema/index.d.mts +3 -788
- package/dist/auth/schema/index.d.ts +3 -788
- package/dist/auth/schema/index.js +17 -9
- package/dist/auth/schema/index.mjs +1 -1
- package/dist/auth/services/index.d.mts +1 -48
- package/dist/auth/services/index.d.ts +1 -48
- package/dist/auth/services/index.js +3 -20
- package/dist/auth/services/index.mjs +1 -2
- package/dist/{base-api-client-B3wZZoaH.d.ts → base-api-client-BpmcQt4Q.d.ts} +1 -1
- package/dist/{base-api-client-ACKKt13v.d.mts → base-api-client-CFIhZK4C.d.mts} +1 -1
- package/dist/{base-api-client-ACKKt13v.d.ts → base-api-client-CFIhZK4C.d.ts} +1 -1
- package/dist/{base-api-client-DrL35Ea2.d.mts → base-api-client-DXLsq2yz.d.mts} +1 -1
- package/dist/business/index.d.mts +1 -5
- package/dist/business/index.d.ts +1 -5
- package/dist/business/index.js +34 -1135
- package/dist/business/index.js.map +1 -1
- package/dist/business/index.mjs +5 -1105
- package/dist/business/index.mjs.map +1 -1
- package/dist/calendar/routes/index.d.mts +74 -1
- package/dist/calendar/routes/index.d.ts +74 -1
- package/dist/calendar/routes/index.js +186 -97
- package/dist/calendar/routes/index.js.map +1 -1
- package/dist/calendar/routes/index.mjs +178 -99
- package/dist/calendar/routes/index.mjs.map +1 -1
- package/dist/{chunk-IIVNHQEI.mjs → chunk-5GBDDXYL.mjs} +4 -3
- package/dist/chunk-5GBDDXYL.mjs.map +1 -0
- package/dist/chunk-7E3J7VAD.mjs +3 -0
- package/dist/chunk-7E3J7VAD.mjs.map +1 -0
- package/dist/chunk-B3CZ3HXJ.mjs +126 -0
- package/dist/chunk-B3CZ3HXJ.mjs.map +1 -0
- package/dist/chunk-CAYOQDBR.js +78 -0
- package/dist/chunk-CAYOQDBR.js.map +1 -0
- package/dist/{chunk-PTMSDNGO.mjs → chunk-CX2GHCAI.mjs} +4 -75
- package/dist/chunk-CX2GHCAI.mjs.map +1 -0
- package/dist/chunk-EBHPTFG6.mjs +82 -0
- package/dist/chunk-EBHPTFG6.mjs.map +1 -0
- package/dist/chunk-FOQEQWX5.js +4 -0
- package/dist/chunk-FOQEQWX5.js.map +1 -0
- package/dist/{chunk-YGI7UU2D.mjs → chunk-G4NFB2QA.mjs} +2 -2
- package/dist/chunk-G4NFB2QA.mjs.map +1 -0
- package/dist/chunk-G5HJGXGC.mjs +39 -0
- package/dist/chunk-G5HJGXGC.mjs.map +1 -0
- package/dist/{chunk-GSNGCENJ.js → chunk-GQZHGSRR.js} +2 -39
- package/dist/chunk-GQZHGSRR.js.map +1 -0
- package/dist/chunk-GS7XLKET.js +41 -0
- package/dist/chunk-GS7XLKET.js.map +1 -0
- package/dist/{chunk-7B5SI4OF.mjs → chunk-IBWDBBX5.mjs} +4 -3
- package/dist/chunk-IBWDBBX5.mjs.map +1 -0
- package/dist/chunk-IS7O4LPI.js +146 -0
- package/dist/chunk-IS7O4LPI.js.map +1 -0
- package/dist/chunk-LGHUCQIU.js +93 -0
- package/dist/chunk-LGHUCQIU.js.map +1 -0
- package/dist/chunk-LHJKLUM7.mjs +18 -0
- package/dist/chunk-LHJKLUM7.mjs.map +1 -0
- package/dist/chunk-LKBIVQBT.mjs +34 -0
- package/dist/chunk-LKBIVQBT.mjs.map +1 -0
- package/dist/chunk-MIDXG6LS.js +32 -0
- package/dist/chunk-MIDXG6LS.js.map +1 -0
- package/dist/chunk-MWSAH7ZG.mjs +42 -0
- package/dist/chunk-MWSAH7ZG.mjs.map +1 -0
- package/dist/{chunk-HCI6JQOU.mjs → chunk-MZOGYD4N.mjs} +7 -4
- package/dist/chunk-MZOGYD4N.mjs.map +1 -0
- package/dist/chunk-NDGHXVGS.js +25 -0
- package/dist/chunk-NDGHXVGS.js.map +1 -0
- package/dist/chunk-Q5VFBPMG.mjs +76 -0
- package/dist/chunk-Q5VFBPMG.mjs.map +1 -0
- package/dist/chunk-QDUBO567.js +1148 -0
- package/dist/chunk-QDUBO567.js.map +1 -0
- package/dist/{chunk-3CSCIRQY.js → chunk-QP5N3ER6.js} +6 -5
- package/dist/chunk-QP5N3ER6.js.map +1 -0
- package/dist/chunk-RWCD2CAD.mjs +1132 -0
- package/dist/chunk-RWCD2CAD.mjs.map +1 -0
- package/dist/{chunk-VQ54PUQV.js → chunk-S37OK2QG.js} +2 -2
- package/dist/chunk-S37OK2QG.js.map +1 -0
- package/dist/chunk-S3PUP7N4.js +20 -0
- package/dist/chunk-S3PUP7N4.js.map +1 -0
- package/dist/{chunk-QQ2WFYOD.js → chunk-S6YSGVWD.js} +4 -76
- package/dist/chunk-S6YSGVWD.js.map +1 -0
- package/dist/chunk-SFDJNKWC.js +22 -0
- package/dist/chunk-SFDJNKWC.js.map +1 -0
- package/dist/chunk-TTYCVBIQ.mjs +144 -0
- package/dist/chunk-TTYCVBIQ.mjs.map +1 -0
- package/dist/{chunk-HBF4HPRK.js → chunk-TXMX6PZR.js} +7 -3
- package/dist/chunk-TXMX6PZR.js.map +1 -0
- package/dist/chunk-VHN7PF5I.js +20 -0
- package/dist/chunk-VHN7PF5I.js.map +1 -0
- package/dist/chunk-VJNDOYEC.js +41 -0
- package/dist/chunk-VJNDOYEC.js.map +1 -0
- package/dist/chunk-XBZIS3MV.mjs +13 -0
- package/dist/chunk-XBZIS3MV.mjs.map +1 -0
- package/dist/chunk-XFOZ56FB.mjs +20 -0
- package/dist/chunk-XFOZ56FB.mjs.map +1 -0
- package/dist/chunk-Z23HAXHL.js +136 -0
- package/dist/chunk-Z23HAXHL.js.map +1 -0
- package/dist/chunk-ZF7DKR5A.mjs +26 -0
- package/dist/chunk-ZF7DKR5A.mjs.map +1 -0
- package/dist/common/auth/client/index.d.mts +3239 -0
- package/dist/common/auth/client/index.d.ts +3239 -0
- package/dist/common/auth/client/index.js +26 -0
- package/dist/common/auth/client/index.mjs +5 -0
- package/dist/common/auth/components/index.d.mts +374 -0
- package/dist/common/auth/components/index.d.ts +374 -0
- package/dist/common/auth/components/index.js +70 -0
- package/dist/common/auth/components/index.mjs +9 -0
- package/dist/common/auth/hooks/index.d.mts +75 -0
- package/dist/common/auth/hooks/index.d.ts +75 -0
- package/dist/common/auth/hooks/index.js +28 -0
- package/dist/common/auth/hooks/index.js.map +1 -0
- package/dist/common/auth/hooks/index.mjs +7 -0
- package/dist/common/auth/hooks/index.mjs.map +1 -0
- package/dist/common/auth/index.d.mts +14 -6
- package/dist/common/auth/index.d.ts +14 -6
- package/dist/common/auth/index.js +17 -8
- package/dist/common/auth/index.mjs +4 -3
- package/dist/common/auth/react/index.d.mts +3056 -0
- package/dist/common/auth/react/index.d.ts +3056 -0
- package/dist/common/auth/react/index.js +31 -0
- package/dist/common/auth/react/index.js.map +1 -0
- package/dist/common/auth/react/index.mjs +21 -0
- package/dist/common/auth/react/index.mjs.map +1 -0
- package/dist/common/auth/rn/index.d.mts +3138 -0
- package/dist/common/auth/rn/index.d.ts +3138 -0
- package/dist/common/auth/rn/index.js +348 -0
- package/dist/common/auth/rn/index.js.map +1 -0
- package/dist/common/auth/rn/index.mjs +327 -0
- package/dist/common/auth/rn/index.mjs.map +1 -0
- package/dist/common/auth/schema/index.d.mts +1479 -0
- package/dist/common/auth/schema/index.d.ts +1479 -0
- package/dist/common/auth/schema/index.js +49 -0
- package/dist/common/auth/schema/index.js.map +1 -0
- package/dist/common/auth/schema/index.mjs +4 -0
- package/dist/common/auth/schema/index.mjs.map +1 -0
- package/dist/common/auth/server/index.d.mts +7 -30
- package/dist/common/auth/server/index.d.ts +7 -30
- package/dist/common/auth/server/index.js +36 -79
- package/dist/common/auth/server/index.mjs +2 -5
- package/dist/common/auth/services/index.d.mts +14 -0
- package/dist/common/auth/services/index.d.ts +14 -0
- package/dist/common/auth/services/index.js +17 -0
- package/dist/common/auth/services/index.js.map +1 -0
- package/dist/common/auth/services/index.mjs +4 -0
- package/dist/common/auth/services/index.mjs.map +1 -0
- package/dist/common/index.d.mts +13 -5
- package/dist/common/index.d.ts +13 -5
- package/dist/common/index.js +19 -16
- package/dist/common/index.mjs +11 -8
- package/dist/common/request/index.js +5 -4
- package/dist/common/request/index.mjs +3 -2
- package/dist/common/storage/index.js +13 -12
- package/dist/common/storage/index.mjs +3 -2
- package/dist/festivalCard/index.d.mts +3 -3
- package/dist/festivalCard/index.d.ts +3 -3
- package/dist/festivalCard/routes/index.d.mts +1 -1
- package/dist/festivalCard/routes/index.d.ts +1 -1
- package/dist/festivalCard/server/index.d.mts +2 -2
- package/dist/festivalCard/server/index.d.ts +2 -2
- package/dist/{festivalCardService-BFCRhJrq.d.ts → festivalCardService-B3GsnNpV.d.ts} +1 -1
- package/dist/{festivalCardService-GriR2VMc.d.mts → festivalCardService-CWhrLNE9.d.mts} +1 -1
- package/dist/{index-DPYkrKZf.d.mts → index-BcjDRcKp.d.mts} +11 -6
- package/dist/{index-Bnh6VqFv.d.ts → index-BlpXrrTy.d.ts} +11 -6
- package/dist/{index-1Ag7IBXN.d.ts → index-DZ5iJtNO.d.mts} +2 -44
- package/dist/{index-DdeZSeTJ.d.mts → index-DZ5iJtNO.d.ts} +2 -44
- package/dist/index.d.mts +6296 -40
- package/dist/index.d.ts +6296 -40
- package/dist/index.js +1378 -2508
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1073 -2203
- package/dist/index.mjs.map +1 -1
- package/dist/mmd/admin/index.d.mts +1 -1
- package/dist/mmd/admin/index.d.ts +1 -1
- package/dist/mmd/index.d.mts +1 -1
- package/dist/mmd/index.d.ts +1 -1
- package/dist/mmd/server/index.d.mts +3 -3
- package/dist/mmd/server/index.d.ts +3 -3
- package/dist/request/index.js +4 -3
- package/dist/request/index.mjs +2 -1
- package/dist/session-BCXvGCnm.d.mts +81 -0
- package/dist/session-BCXvGCnm.d.ts +81 -0
- package/dist/storage/index.js +12 -11
- package/dist/storage/index.mjs +2 -1
- package/dist/{types-DyG3ZV9V.d.mts → types-B6B210gX.d.mts} +1 -1
- package/dist/{types-DyG3ZV9V.d.ts → types-B6B210gX.d.ts} +1 -1
- package/dist/{types-BTiaMsBz.d.mts → types-Bdnte5EN.d.mts} +1 -1
- package/dist/{types-tQfupO6d.d.mts → types-Cs0CLvrH.d.mts} +1 -1
- package/dist/{types-tQfupO6d.d.ts → types-Cs0CLvrH.d.ts} +1 -1
- package/dist/{types-ERmJyjx8.d.ts → types-_rFX1atk.d.ts} +1 -1
- package/dist/types.legacy-J-j-_ig_.d.mts +25 -0
- package/dist/types.legacy-J-j-_ig_.d.ts +25 -0
- package/dist/useAuthActions-7S5dL7Oh.d.mts +77 -0
- package/dist/useAuthActions-7S5dL7Oh.d.ts +77 -0
- package/dist/vocaloidBooth/server/index.d.mts +3 -3
- package/dist/vocaloidBooth/server/index.d.ts +3 -3
- package/package.json +59 -76
- package/dist/auth/legacy/core/index.d.mts +0 -42
- package/dist/auth/legacy/core/index.d.ts +0 -42
- package/dist/auth/legacy/core/index.js +0 -242
- package/dist/auth/legacy/core/index.js.map +0 -1
- package/dist/auth/legacy/core/index.mjs +0 -226
- package/dist/auth/legacy/core/index.mjs.map +0 -1
- package/dist/auth/legacy/db/index.d.mts +0 -5
- package/dist/auth/legacy/db/index.d.ts +0 -5
- package/dist/auth/legacy/db/index.js +0 -261
- package/dist/auth/legacy/db/index.js.map +0 -1
- package/dist/auth/legacy/db/index.mjs +0 -250
- package/dist/auth/legacy/db/index.mjs.map +0 -1
- package/dist/auth/legacy/index.d.mts +0 -5
- package/dist/auth/legacy/index.d.ts +0 -5
- package/dist/auth/legacy/index.js +0 -1107
- package/dist/auth/legacy/index.js.map +0 -1
- package/dist/auth/legacy/index.mjs +0 -1086
- package/dist/auth/legacy/index.mjs.map +0 -1
- package/dist/auth/legacy/logic/index.d.mts +0 -9
- package/dist/auth/legacy/logic/index.d.ts +0 -9
- package/dist/auth/legacy/logic/index.js +0 -194
- package/dist/auth/legacy/logic/index.js.map +0 -1
- package/dist/auth/legacy/logic/index.mjs +0 -187
- package/dist/auth/legacy/logic/index.mjs.map +0 -1
- package/dist/auth/legacy/miniapp/index.d.mts +0 -5
- package/dist/auth/legacy/miniapp/index.d.ts +0 -5
- package/dist/auth/legacy/miniapp/index.js +0 -506
- package/dist/auth/legacy/miniapp/index.js.map +0 -1
- package/dist/auth/legacy/miniapp/index.mjs +0 -487
- package/dist/auth/legacy/miniapp/index.mjs.map +0 -1
- package/dist/auth/legacy/routes/index.d.mts +0 -53
- package/dist/auth/legacy/routes/index.d.ts +0 -53
- package/dist/auth/legacy/routes/index.js +0 -278
- package/dist/auth/legacy/routes/index.js.map +0 -1
- package/dist/auth/legacy/routes/index.mjs +0 -271
- package/dist/auth/legacy/routes/index.mjs.map +0 -1
- package/dist/auth/legacy/schema/index.d.mts +0 -401
- package/dist/auth/legacy/schema/index.d.ts +0 -401
- package/dist/auth/legacy/schema/index.js +0 -50
- package/dist/auth/legacy/schema/index.js.map +0 -1
- package/dist/auth/legacy/schema/index.mjs +0 -44
- package/dist/auth/legacy/schema/index.mjs.map +0 -1
- package/dist/auth/legacy/server/index.d.mts +0 -13
- package/dist/auth/legacy/server/index.d.ts +0 -13
- package/dist/auth/legacy/server/index.js +0 -21
- package/dist/auth/legacy/server/index.js.map +0 -1
- package/dist/auth/legacy/server/index.mjs +0 -19
- package/dist/auth/legacy/server/index.mjs.map +0 -1
- package/dist/auth/legacy/services/index.d.mts +0 -40
- package/dist/auth/legacy/services/index.d.ts +0 -40
- package/dist/auth/legacy/services/index.js +0 -258
- package/dist/auth/legacy/services/index.js.map +0 -1
- package/dist/auth/legacy/services/index.mjs +0 -252
- package/dist/auth/legacy/services/index.mjs.map +0 -1
- package/dist/auth/legacy/ui/miniapp/index.d.mts +0 -10
- package/dist/auth/legacy/ui/miniapp/index.d.ts +0 -10
- package/dist/auth/legacy/ui/miniapp/index.js +0 -298
- package/dist/auth/legacy/ui/miniapp/index.js.map +0 -1
- package/dist/auth/legacy/ui/miniapp/index.mjs +0 -290
- package/dist/auth/legacy/ui/miniapp/index.mjs.map +0 -1
- package/dist/auth/legacy/ui/web/index.d.mts +0 -22
- package/dist/auth/legacy/ui/web/index.d.ts +0 -22
- package/dist/auth/legacy/ui/web/index.js +0 -899
- package/dist/auth/legacy/ui/web/index.js.map +0 -1
- package/dist/auth/legacy/ui/web/index.mjs +0 -889
- package/dist/auth/legacy/ui/web/index.mjs.map +0 -1
- package/dist/auth/legacy/web/index.d.mts +0 -5
- package/dist/auth/legacy/web/index.d.ts +0 -5
- package/dist/auth/legacy/web/index.js +0 -1107
- package/dist/auth/legacy/web/index.js.map +0 -1
- package/dist/auth/legacy/web/index.mjs +0 -1086
- package/dist/auth/legacy/web/index.mjs.map +0 -1
- package/dist/auth/middleware/index.d.mts +0 -75
- package/dist/auth/middleware/index.d.ts +0 -75
- package/dist/auth/middleware/index.js +0 -15
- package/dist/auth/middleware/index.mjs +0 -6
- package/dist/auth/routes/index.d.mts +0 -261
- package/dist/auth/routes/index.d.ts +0 -261
- package/dist/auth/routes/index.js +0 -59
- package/dist/auth/routes/index.mjs +0 -6
- package/dist/chunk-37HYTHEC.mjs +0 -90
- package/dist/chunk-37HYTHEC.mjs.map +0 -1
- package/dist/chunk-3CSCIRQY.js.map +0 -1
- package/dist/chunk-5WV35FPV.js +0 -131
- package/dist/chunk-5WV35FPV.js.map +0 -1
- package/dist/chunk-7B5SI4OF.mjs.map +0 -1
- package/dist/chunk-DCRD5CZB.js +0 -573
- package/dist/chunk-DCRD5CZB.js.map +0 -1
- package/dist/chunk-DDX4JKFS.js +0 -19
- package/dist/chunk-DDX4JKFS.js.map +0 -1
- package/dist/chunk-DV6M7MFP.js +0 -283
- package/dist/chunk-DV6M7MFP.js.map +0 -1
- package/dist/chunk-EQXPL7TN.mjs +0 -78
- package/dist/chunk-EQXPL7TN.mjs.map +0 -1
- package/dist/chunk-GSNGCENJ.js.map +0 -1
- package/dist/chunk-HBF4HPRK.js.map +0 -1
- package/dist/chunk-HCI6JQOU.mjs.map +0 -1
- package/dist/chunk-I44HXJ3X.mjs +0 -17
- package/dist/chunk-I44HXJ3X.mjs.map +0 -1
- package/dist/chunk-IIVNHQEI.mjs.map +0 -1
- package/dist/chunk-IJ4YYWE3.mjs +0 -122
- package/dist/chunk-IJ4YYWE3.mjs.map +0 -1
- package/dist/chunk-J4BEIZUC.js +0 -92
- package/dist/chunk-J4BEIZUC.js.map +0 -1
- package/dist/chunk-OKPWFVXC.js +0 -24
- package/dist/chunk-OKPWFVXC.js.map +0 -1
- package/dist/chunk-PNOTQAYK.mjs +0 -560
- package/dist/chunk-PNOTQAYK.mjs.map +0 -1
- package/dist/chunk-PTMSDNGO.mjs.map +0 -1
- package/dist/chunk-Q2IAL7YV.js +0 -36
- package/dist/chunk-Q2IAL7YV.js.map +0 -1
- package/dist/chunk-QQ2WFYOD.js.map +0 -1
- package/dist/chunk-VQ54PUQV.js.map +0 -1
- package/dist/chunk-W5JEGA76.mjs +0 -33
- package/dist/chunk-W5JEGA76.mjs.map +0 -1
- package/dist/chunk-YGI7UU2D.mjs.map +0 -1
- package/dist/chunk-ZCLQSI5F.mjs +0 -271
- package/dist/chunk-ZCLQSI5F.mjs.map +0 -1
- package/dist/drizzle-auth-service-D-pljzCD.d.mts +0 -145
- package/dist/drizzle-auth-service-D3qryE_I.d.ts +0 -145
- package/dist/index-DNKZ7-R_.d.mts +0 -184
- package/dist/index-DNKZ7-R_.d.ts +0 -184
- package/dist/types-C5vUWf9u.d.ts +0 -70
- package/dist/types-IYCqCk2g.d.mts +0 -70
- /package/dist/{auth/middleware → common/auth/client}/index.js.map +0 -0
- /package/dist/{auth/middleware → common/auth/client}/index.mjs.map +0 -0
- /package/dist/{auth/routes → common/auth/components}/index.js.map +0 -0
- /package/dist/{auth/routes → common/auth/components}/index.mjs.map +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sa2kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "SA2Kit 2.0 — common API 稳定;business 实验田模块逐步迁出 profile-v1",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -249,81 +249,11 @@
|
|
|
249
249
|
"import": "./dist/auth/index.mjs",
|
|
250
250
|
"require": "./dist/auth/index.js"
|
|
251
251
|
},
|
|
252
|
-
"./auth/legacy/core": {
|
|
253
|
-
"types": "./dist/auth/legacy/core/index.d.ts",
|
|
254
|
-
"import": "./dist/auth/legacy/core/index.mjs",
|
|
255
|
-
"require": "./dist/auth/legacy/core/index.js"
|
|
256
|
-
},
|
|
257
|
-
"./auth/legacy/db": {
|
|
258
|
-
"types": "./dist/auth/legacy/db/index.d.ts",
|
|
259
|
-
"import": "./dist/auth/legacy/db/index.mjs",
|
|
260
|
-
"require": "./dist/auth/legacy/db/index.js"
|
|
261
|
-
},
|
|
262
|
-
"./auth/legacy": {
|
|
263
|
-
"types": "./dist/auth/legacy/index.d.ts",
|
|
264
|
-
"import": "./dist/auth/legacy/index.mjs",
|
|
265
|
-
"require": "./dist/auth/legacy/index.js"
|
|
266
|
-
},
|
|
267
|
-
"./auth/legacy/logic": {
|
|
268
|
-
"types": "./dist/auth/legacy/logic/index.d.ts",
|
|
269
|
-
"import": "./dist/auth/legacy/logic/index.mjs",
|
|
270
|
-
"require": "./dist/auth/legacy/logic/index.js"
|
|
271
|
-
},
|
|
272
|
-
"./auth/legacy/miniapp": {
|
|
273
|
-
"types": "./dist/auth/legacy/miniapp/index.d.ts",
|
|
274
|
-
"import": "./dist/auth/legacy/miniapp/index.mjs",
|
|
275
|
-
"require": "./dist/auth/legacy/miniapp/index.js"
|
|
276
|
-
},
|
|
277
|
-
"./auth/legacy/routes": {
|
|
278
|
-
"types": "./dist/auth/legacy/routes/index.d.ts",
|
|
279
|
-
"import": "./dist/auth/legacy/routes/index.mjs",
|
|
280
|
-
"require": "./dist/auth/legacy/routes/index.js"
|
|
281
|
-
},
|
|
282
|
-
"./auth/legacy/schema": {
|
|
283
|
-
"types": "./dist/auth/legacy/schema/index.d.ts",
|
|
284
|
-
"import": "./dist/auth/legacy/schema/index.mjs",
|
|
285
|
-
"require": "./dist/auth/legacy/schema/index.js"
|
|
286
|
-
},
|
|
287
|
-
"./auth/legacy/server": {
|
|
288
|
-
"types": "./dist/auth/legacy/server/index.d.ts",
|
|
289
|
-
"import": "./dist/auth/legacy/server/index.mjs",
|
|
290
|
-
"require": "./dist/auth/legacy/server/index.js"
|
|
291
|
-
},
|
|
292
|
-
"./auth/legacy/services": {
|
|
293
|
-
"types": "./dist/auth/legacy/services/index.d.ts",
|
|
294
|
-
"import": "./dist/auth/legacy/services/index.mjs",
|
|
295
|
-
"require": "./dist/auth/legacy/services/index.js"
|
|
296
|
-
},
|
|
297
|
-
"./auth/legacy/ui/miniapp": {
|
|
298
|
-
"types": "./dist/auth/legacy/ui/miniapp/index.d.ts",
|
|
299
|
-
"import": "./dist/auth/legacy/ui/miniapp/index.mjs",
|
|
300
|
-
"require": "./dist/auth/legacy/ui/miniapp/index.js"
|
|
301
|
-
},
|
|
302
|
-
"./auth/legacy/ui/web": {
|
|
303
|
-
"types": "./dist/auth/legacy/ui/web/index.d.ts",
|
|
304
|
-
"import": "./dist/auth/legacy/ui/web/index.mjs",
|
|
305
|
-
"require": "./dist/auth/legacy/ui/web/index.js"
|
|
306
|
-
},
|
|
307
|
-
"./auth/legacy/web": {
|
|
308
|
-
"types": "./dist/auth/legacy/web/index.d.ts",
|
|
309
|
-
"import": "./dist/auth/legacy/web/index.mjs",
|
|
310
|
-
"require": "./dist/auth/legacy/web/index.js"
|
|
311
|
-
},
|
|
312
|
-
"./auth/middleware": {
|
|
313
|
-
"types": "./dist/auth/middleware/index.d.ts",
|
|
314
|
-
"import": "./dist/auth/middleware/index.mjs",
|
|
315
|
-
"require": "./dist/auth/middleware/index.js"
|
|
316
|
-
},
|
|
317
252
|
"./auth/rn": {
|
|
318
253
|
"types": "./dist/auth/rn/index.d.ts",
|
|
319
254
|
"import": "./dist/auth/rn/index.mjs",
|
|
320
255
|
"require": "./dist/auth/rn/index.js"
|
|
321
256
|
},
|
|
322
|
-
"./auth/routes": {
|
|
323
|
-
"types": "./dist/auth/routes/index.d.ts",
|
|
324
|
-
"import": "./dist/auth/routes/index.mjs",
|
|
325
|
-
"require": "./dist/auth/routes/index.js"
|
|
326
|
-
},
|
|
327
257
|
"./auth/schema": {
|
|
328
258
|
"types": "./dist/auth/schema/index.d.ts",
|
|
329
259
|
"import": "./dist/auth/schema/index.mjs",
|
|
@@ -349,6 +279,36 @@
|
|
|
349
279
|
"import": "./dist/calendar/routes/index.mjs",
|
|
350
280
|
"require": "./dist/calendar/routes/index.js"
|
|
351
281
|
},
|
|
282
|
+
"./common/auth/client": {
|
|
283
|
+
"types": "./dist/common/auth/client/index.d.ts",
|
|
284
|
+
"import": "./dist/common/auth/client/index.mjs",
|
|
285
|
+
"require": "./dist/common/auth/client/index.js"
|
|
286
|
+
},
|
|
287
|
+
"./common/auth/components": {
|
|
288
|
+
"types": "./dist/common/auth/components/index.d.ts",
|
|
289
|
+
"import": "./dist/common/auth/components/index.mjs",
|
|
290
|
+
"require": "./dist/common/auth/components/index.js"
|
|
291
|
+
},
|
|
292
|
+
"./common/auth/hooks": {
|
|
293
|
+
"types": "./dist/common/auth/hooks/index.d.ts",
|
|
294
|
+
"import": "./dist/common/auth/hooks/index.mjs",
|
|
295
|
+
"require": "./dist/common/auth/hooks/index.js"
|
|
296
|
+
},
|
|
297
|
+
"./common/auth/react": {
|
|
298
|
+
"types": "./dist/common/auth/react/index.d.ts",
|
|
299
|
+
"import": "./dist/common/auth/react/index.mjs",
|
|
300
|
+
"require": "./dist/common/auth/react/index.js"
|
|
301
|
+
},
|
|
302
|
+
"./common/auth/rn": {
|
|
303
|
+
"types": "./dist/common/auth/rn/index.d.ts",
|
|
304
|
+
"import": "./dist/common/auth/rn/index.mjs",
|
|
305
|
+
"require": "./dist/common/auth/rn/index.js"
|
|
306
|
+
},
|
|
307
|
+
"./common/auth/schema": {
|
|
308
|
+
"types": "./dist/common/auth/schema/index.d.ts",
|
|
309
|
+
"import": "./dist/common/auth/schema/index.mjs",
|
|
310
|
+
"require": "./dist/common/auth/schema/index.js"
|
|
311
|
+
},
|
|
352
312
|
"./common/auth/server": {
|
|
353
313
|
"types": "./dist/common/auth/server/index.d.ts",
|
|
354
314
|
"node": {
|
|
@@ -360,6 +320,11 @@
|
|
|
360
320
|
"require": "./dist/common/auth/server/index.js"
|
|
361
321
|
}
|
|
362
322
|
},
|
|
323
|
+
"./common/auth/services": {
|
|
324
|
+
"types": "./dist/common/auth/services/index.d.ts",
|
|
325
|
+
"import": "./dist/common/auth/services/index.mjs",
|
|
326
|
+
"require": "./dist/common/auth/services/index.js"
|
|
327
|
+
},
|
|
363
328
|
"./common/export/server": {
|
|
364
329
|
"types": "./dist/common/export/server/index.d.ts",
|
|
365
330
|
"node": {
|
|
@@ -610,6 +575,21 @@
|
|
|
610
575
|
"types": "./dist/vocaloidBooth/web/index.d.ts",
|
|
611
576
|
"import": "./dist/vocaloidBooth/web/index.mjs",
|
|
612
577
|
"require": "./dist/vocaloidBooth/web/index.js"
|
|
578
|
+
},
|
|
579
|
+
"./common/file/client": {
|
|
580
|
+
"types": "./dist/common/file/index.d.ts",
|
|
581
|
+
"import": "./dist/common/file/index.mjs",
|
|
582
|
+
"require": "./dist/common/file/index.js"
|
|
583
|
+
},
|
|
584
|
+
"./ossFile/client": {
|
|
585
|
+
"types": "./dist/ossFile/index.d.ts",
|
|
586
|
+
"import": "./dist/ossFile/index.mjs",
|
|
587
|
+
"require": "./dist/ossFile/index.js"
|
|
588
|
+
},
|
|
589
|
+
"./universalExport/client": {
|
|
590
|
+
"types": "./dist/universalExport/index.d.ts",
|
|
591
|
+
"import": "./dist/universalExport/index.mjs",
|
|
592
|
+
"require": "./dist/universalExport/index.js"
|
|
613
593
|
}
|
|
614
594
|
},
|
|
615
595
|
"files": [
|
|
@@ -647,9 +627,9 @@
|
|
|
647
627
|
},
|
|
648
628
|
"peerDependencies": {
|
|
649
629
|
"@imgly/background-removal": "^1.7.0",
|
|
650
|
-
"@xenova/transformers": "^2.17.2",
|
|
651
630
|
"@tarojs/components": "^4.1.1",
|
|
652
631
|
"@tarojs/taro": "^4.1.1",
|
|
632
|
+
"@xenova/transformers": "^2.17.2",
|
|
653
633
|
"lucide-react": "^0.263.0 || ^0.300.0 || ^0.400.0 || ^0.500.0",
|
|
654
634
|
"react": ">=18.0.0",
|
|
655
635
|
"react-dom": ">=18.0.0",
|
|
@@ -691,6 +671,8 @@
|
|
|
691
671
|
},
|
|
692
672
|
"devDependencies": {
|
|
693
673
|
"@imgly/background-removal": "^1.7.0",
|
|
674
|
+
"@tarojs/components": "^4.1.1",
|
|
675
|
+
"@tarojs/taro": "^4.1.1",
|
|
694
676
|
"@testing-library/react": "^14.0.0",
|
|
695
677
|
"@types/adm-zip": "^0.5.7",
|
|
696
678
|
"@types/ali-oss": "^6.16.13",
|
|
@@ -702,15 +684,13 @@
|
|
|
702
684
|
"@types/three": "^0.181.0",
|
|
703
685
|
"@types/uuid": "^11.0.0",
|
|
704
686
|
"@types/ws": "^8.18.1",
|
|
705
|
-
"@tarojs/components": "^4.1.1",
|
|
706
|
-
"@tarojs/taro": "^4.1.1",
|
|
707
687
|
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
708
688
|
"@typescript-eslint/parser": "^6.19.0",
|
|
709
689
|
"@vitest/ui": "^1.2.0",
|
|
710
690
|
"@xenova/transformers": "^2.17.2",
|
|
711
691
|
"class-variance-authority": "^0.7.1",
|
|
712
692
|
"clsx": "^2.1.1",
|
|
713
|
-
"drizzle-orm": "^0.
|
|
693
|
+
"drizzle-orm": "^0.45.2",
|
|
714
694
|
"eslint": "^8.56.0",
|
|
715
695
|
"eslint-config-prettier": "^9.1.0",
|
|
716
696
|
"eslint-plugin-react": "^7.33.2",
|
|
@@ -735,6 +715,7 @@
|
|
|
735
715
|
"packageManager": "pnpm@9.15.2",
|
|
736
716
|
"dependencies": {
|
|
737
717
|
"@ar-js-org/ar.js": "3.4.7",
|
|
718
|
+
"@better-auth/drizzle-adapter": "^1.6.15",
|
|
738
719
|
"@dnd-kit/core": "^6.3.1",
|
|
739
720
|
"@dnd-kit/sortable": "^10.0.0",
|
|
740
721
|
"@dnd-kit/utilities": "^3.2.2",
|
|
@@ -742,6 +723,7 @@
|
|
|
742
723
|
"adm-zip": "^0.5.16",
|
|
743
724
|
"ali-oss": "^6.23.0",
|
|
744
725
|
"bcryptjs": "^3.0.3",
|
|
726
|
+
"better-auth": "^1.6.15",
|
|
745
727
|
"framer-motion": "^12.23.24",
|
|
746
728
|
"jsonwebtoken": "^9.0.2",
|
|
747
729
|
"jszip": "^3.10.1",
|
|
@@ -751,6 +733,7 @@
|
|
|
751
733
|
"three": "^0.181.2",
|
|
752
734
|
"three-stdlib": "^2.36.0",
|
|
753
735
|
"uuid": "^13.0.0",
|
|
754
|
-
"xlsx": "^0.18.5"
|
|
736
|
+
"xlsx": "^0.18.5",
|
|
737
|
+
"zod": "^4.4.3"
|
|
755
738
|
}
|
|
756
739
|
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export { AuthProvider, useAuth } from '../logic/index.mjs';
|
|
2
|
-
import { U as User } from '../../../index-DNKZ7-R_.mjs';
|
|
3
|
-
export { A as AuthGuardProps, i as AuthService, C as CustomMenuItem, F as ForgotPasswordModalProps, e as LoginModalProps, L as LoginRequest, b as LoginResponse, f as RegisterModalProps, R as RegisterRequest, c as RegisterResponse, k as SessionConfig, d as SessionValidation, S as SessionValidationResponse, h as UseAuthReturn, g as UserMenuProps, j as UserRole, a as UserSession, V as ValidateApiAuth } from '../../../index-DNKZ7-R_.mjs';
|
|
4
|
-
import 'react';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* 验证手机号格式
|
|
8
|
-
*/
|
|
9
|
-
declare function validatePhoneNumber(phone: string): boolean;
|
|
10
|
-
/**
|
|
11
|
-
* 验证密码强度(可扩展)
|
|
12
|
-
*/
|
|
13
|
-
declare function validatePassword(password: string): {
|
|
14
|
-
valid: boolean;
|
|
15
|
-
message?: string;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* 生成安全的会话令牌
|
|
19
|
-
*/
|
|
20
|
-
declare function generateSessionToken(): string;
|
|
21
|
-
/**
|
|
22
|
-
* 检查用户是否为管理员
|
|
23
|
-
*/
|
|
24
|
-
declare function isAdmin(user: User | null): boolean;
|
|
25
|
-
/**
|
|
26
|
-
* 检查用户是否处于活跃状态
|
|
27
|
-
*/
|
|
28
|
-
declare function isActiveUser(user: User | null): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* 格式化用户显示名称
|
|
31
|
-
*/
|
|
32
|
-
declare function getUserDisplayName(user: User): string;
|
|
33
|
-
/**
|
|
34
|
-
* 计算会话过期时间
|
|
35
|
-
*/
|
|
36
|
-
declare function calculateSessionExpiry(days?: number): Date;
|
|
37
|
-
/**
|
|
38
|
-
* 检查会话是否过期
|
|
39
|
-
*/
|
|
40
|
-
declare function isSessionExpired(expiresAt: Date): boolean;
|
|
41
|
-
|
|
42
|
-
export { User, calculateSessionExpiry, generateSessionToken, getUserDisplayName, isActiveUser, isAdmin, isSessionExpired, validatePassword, validatePhoneNumber };
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export { AuthProvider, useAuth } from '../logic/index.js';
|
|
2
|
-
import { U as User } from '../../../index-DNKZ7-R_.js';
|
|
3
|
-
export { A as AuthGuardProps, i as AuthService, C as CustomMenuItem, F as ForgotPasswordModalProps, e as LoginModalProps, L as LoginRequest, b as LoginResponse, f as RegisterModalProps, R as RegisterRequest, c as RegisterResponse, k as SessionConfig, d as SessionValidation, S as SessionValidationResponse, h as UseAuthReturn, g as UserMenuProps, j as UserRole, a as UserSession, V as ValidateApiAuth } from '../../../index-DNKZ7-R_.js';
|
|
4
|
-
import 'react';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* 验证手机号格式
|
|
8
|
-
*/
|
|
9
|
-
declare function validatePhoneNumber(phone: string): boolean;
|
|
10
|
-
/**
|
|
11
|
-
* 验证密码强度(可扩展)
|
|
12
|
-
*/
|
|
13
|
-
declare function validatePassword(password: string): {
|
|
14
|
-
valid: boolean;
|
|
15
|
-
message?: string;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* 生成安全的会话令牌
|
|
19
|
-
*/
|
|
20
|
-
declare function generateSessionToken(): string;
|
|
21
|
-
/**
|
|
22
|
-
* 检查用户是否为管理员
|
|
23
|
-
*/
|
|
24
|
-
declare function isAdmin(user: User | null): boolean;
|
|
25
|
-
/**
|
|
26
|
-
* 检查用户是否处于活跃状态
|
|
27
|
-
*/
|
|
28
|
-
declare function isActiveUser(user: User | null): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* 格式化用户显示名称
|
|
31
|
-
*/
|
|
32
|
-
declare function getUserDisplayName(user: User): string;
|
|
33
|
-
/**
|
|
34
|
-
* 计算会话过期时间
|
|
35
|
-
*/
|
|
36
|
-
declare function calculateSessionExpiry(days?: number): Date;
|
|
37
|
-
/**
|
|
38
|
-
* 检查会话是否过期
|
|
39
|
-
*/
|
|
40
|
-
declare function isSessionExpired(expiresAt: Date): boolean;
|
|
41
|
-
|
|
42
|
-
export { User, calculateSessionExpiry, generateSessionToken, getUserDisplayName, isActiveUser, isAdmin, isSessionExpired, validatePassword, validatePhoneNumber };
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
|
|
5
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
-
|
|
7
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
8
|
-
|
|
9
|
-
// src/business/auth-legacy/contexts/AuthContext.tsx
|
|
10
|
-
var AuthContext = React.createContext(void 0);
|
|
11
|
-
function extractUser(data) {
|
|
12
|
-
return data?.user ?? data?.data?.user ?? null;
|
|
13
|
-
}
|
|
14
|
-
function extractValid(data) {
|
|
15
|
-
if (typeof data?.valid === "boolean") return data.valid;
|
|
16
|
-
if (typeof data?.data?.valid === "boolean") return data.data.valid;
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
function AuthProvider({ children }) {
|
|
20
|
-
const [user, setUser] = React.useState(null);
|
|
21
|
-
const [loading, setLoading] = React.useState(true);
|
|
22
|
-
const [isAuthenticated, setIsAuthenticated] = React.useState(false);
|
|
23
|
-
const isMountedRef = React.useRef(true);
|
|
24
|
-
const safeSetState = React.useCallback((updater) => {
|
|
25
|
-
if (isMountedRef.current) {
|
|
26
|
-
updater();
|
|
27
|
-
}
|
|
28
|
-
}, []);
|
|
29
|
-
const validateSession = React.useCallback(async () => {
|
|
30
|
-
console.log("\u{1F50D} [AuthContext] \u5F00\u59CB\u9A8C\u8BC1\u4F1A\u8BDD...");
|
|
31
|
-
try {
|
|
32
|
-
const response = await fetch("/api/auth/validate");
|
|
33
|
-
console.log("\u{1F4E1} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u54CD\u5E94\u72B6\u6001:", response.status);
|
|
34
|
-
const data = await response.json();
|
|
35
|
-
console.log("\u{1F4C4} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u54CD\u5E94\u6570\u636E:", data);
|
|
36
|
-
const resolvedUser = extractUser(data);
|
|
37
|
-
const resolvedValid = extractValid(data);
|
|
38
|
-
safeSetState(() => {
|
|
39
|
-
if (resolvedValid && resolvedUser) {
|
|
40
|
-
console.log("\u2705 [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u6210\u529F, \u7528\u6237:", resolvedUser);
|
|
41
|
-
setUser(resolvedUser);
|
|
42
|
-
setIsAuthenticated(true);
|
|
43
|
-
} else {
|
|
44
|
-
console.log("\u274C [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u5931\u8D25:", data.message);
|
|
45
|
-
setUser(null);
|
|
46
|
-
setIsAuthenticated(false);
|
|
47
|
-
}
|
|
48
|
-
setLoading(false);
|
|
49
|
-
});
|
|
50
|
-
} catch (error) {
|
|
51
|
-
console.error("\u{1F4A5} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u5F02\u5E38:", error);
|
|
52
|
-
safeSetState(() => {
|
|
53
|
-
setUser(null);
|
|
54
|
-
setIsAuthenticated(false);
|
|
55
|
-
setLoading(false);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}, [safeSetState]);
|
|
59
|
-
const login = React.useCallback(async (credentials) => {
|
|
60
|
-
console.log("\u{1F511} [AuthContext] \u5F00\u59CB\u767B\u5F55...");
|
|
61
|
-
console.log("\u{1F4DD} [AuthContext] \u767B\u5F55\u51ED\u636E:", { phone: credentials.phone, password: "***" });
|
|
62
|
-
try {
|
|
63
|
-
console.log("\u{1F4E4} [AuthContext] \u53D1\u9001\u767B\u5F55\u8BF7\u6C42\u5230 /api/auth/login");
|
|
64
|
-
const response = await fetch("/api/auth/login", {
|
|
65
|
-
method: "POST",
|
|
66
|
-
headers: { "Content-Type": "application/json" },
|
|
67
|
-
body: JSON.stringify(credentials)
|
|
68
|
-
});
|
|
69
|
-
console.log("\u{1F4E1} [AuthContext] \u6536\u5230\u54CD\u5E94\uFF0C\u72B6\u6001\u7801:", response.status);
|
|
70
|
-
const data = await response.json();
|
|
71
|
-
console.log("\u{1F4C4} [AuthContext] \u54CD\u5E94\u6570\u636E:", data);
|
|
72
|
-
const resolvedUser = extractUser(data);
|
|
73
|
-
if (data.success && resolvedUser) {
|
|
74
|
-
console.log("\u2705 [AuthContext] \u767B\u5F55\u6210\u529F, \u5F00\u59CB\u66F4\u65B0\u5168\u5C40\u72B6\u6001");
|
|
75
|
-
console.log("\u{1F464} [AuthContext] \u7528\u6237\u6570\u636E:", resolvedUser);
|
|
76
|
-
console.log("\u{1F4CA} [AuthContext] \u66F4\u65B0\u524D\u72B6\u6001:", {
|
|
77
|
-
currentUser: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
|
|
78
|
-
currentIsAuthenticated: isAuthenticated,
|
|
79
|
-
currentLoading: loading
|
|
80
|
-
});
|
|
81
|
-
console.log("\u{1F504} [AuthContext] \u6267\u884C\u5168\u5C40\u72B6\u6001\u66F4\u65B0...");
|
|
82
|
-
safeSetState(() => {
|
|
83
|
-
console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u7528\u6237:", resolvedUser);
|
|
84
|
-
setUser(resolvedUser);
|
|
85
|
-
console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u8BA4\u8BC1\u72B6\u6001: true");
|
|
86
|
-
setIsAuthenticated(true);
|
|
87
|
-
console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u52A0\u8F7D\u72B6\u6001: false");
|
|
88
|
-
setLoading(false);
|
|
89
|
-
console.log("\u2705 [AuthContext] \u5168\u5C40\u72B6\u6001\u66F4\u65B0\u5B8C\u6210");
|
|
90
|
-
});
|
|
91
|
-
setTimeout(() => {
|
|
92
|
-
console.log("\u{1F389} [AuthContext] \u5EF6\u8FDF\u786E\u8BA4 - \u5168\u5C40\u767B\u5F55\u72B6\u6001\u5E94\u8BE5\u5DF2\u66F4\u65B0:", {
|
|
93
|
-
user: resolvedUser,
|
|
94
|
-
isAuthenticated: true
|
|
95
|
-
});
|
|
96
|
-
}, 0);
|
|
97
|
-
console.log("\u{1F680} [AuthContext] \u8FD4\u56DE\u6210\u529F\u7ED3\u679C");
|
|
98
|
-
return { success: true, user: resolvedUser };
|
|
99
|
-
} else {
|
|
100
|
-
console.log("\u274C [AuthContext] \u767B\u5F55\u5931\u8D25:", data.message);
|
|
101
|
-
return { success: false, message: data.message };
|
|
102
|
-
}
|
|
103
|
-
} catch (error) {
|
|
104
|
-
console.error("\u{1F4A5} [AuthContext] \u767B\u5F55\u5F02\u5E38:", error);
|
|
105
|
-
return { success: false, message: "\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" };
|
|
106
|
-
}
|
|
107
|
-
}, [safeSetState, user, isAuthenticated, loading]);
|
|
108
|
-
const register = React.useCallback(async (userData) => {
|
|
109
|
-
console.log("\u{1F4DD} [AuthContext] \u5F00\u59CB\u6CE8\u518C...");
|
|
110
|
-
try {
|
|
111
|
-
const response = await fetch("/api/auth/register", {
|
|
112
|
-
method: "POST",
|
|
113
|
-
headers: { "Content-Type": "application/json" },
|
|
114
|
-
body: JSON.stringify(userData)
|
|
115
|
-
});
|
|
116
|
-
const data = await response.json();
|
|
117
|
-
console.log("\u{1F4E1} [AuthContext] \u6CE8\u518C\u54CD\u5E94:", data);
|
|
118
|
-
const resolvedUser = extractUser(data);
|
|
119
|
-
if (data.success && resolvedUser) {
|
|
120
|
-
console.log("\u2705 [AuthContext] \u6CE8\u518C\u6210\u529F, \u7ACB\u5373\u66F4\u65B0\u5168\u5C40\u72B6\u6001");
|
|
121
|
-
safeSetState(() => {
|
|
122
|
-
setUser(resolvedUser);
|
|
123
|
-
setIsAuthenticated(true);
|
|
124
|
-
setLoading(false);
|
|
125
|
-
});
|
|
126
|
-
console.log("\u{1F680} [AuthContext] \u8FD4\u56DE\u6CE8\u518C\u6210\u529F\u7ED3\u679C");
|
|
127
|
-
return { success: true, user: resolvedUser };
|
|
128
|
-
} else {
|
|
129
|
-
console.log("\u274C [AuthContext] \u6CE8\u518C\u5931\u8D25:", data.message);
|
|
130
|
-
return { success: false, message: data.message };
|
|
131
|
-
}
|
|
132
|
-
} catch (error) {
|
|
133
|
-
console.error("\u{1F4A5} [AuthContext] \u6CE8\u518C\u5F02\u5E38:", error);
|
|
134
|
-
return { success: false, message: "\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" };
|
|
135
|
-
}
|
|
136
|
-
}, [safeSetState]);
|
|
137
|
-
const logout = React.useCallback(async () => {
|
|
138
|
-
console.log("\u{1F6AA} [AuthContext] \u5F00\u59CB\u767B\u51FA...");
|
|
139
|
-
try {
|
|
140
|
-
await fetch("/api/auth/logout", { method: "POST" });
|
|
141
|
-
safeSetState(() => {
|
|
142
|
-
setUser(null);
|
|
143
|
-
setIsAuthenticated(false);
|
|
144
|
-
});
|
|
145
|
-
console.log("\u2705 [AuthContext] \u767B\u51FA\u6210\u529F, \u5168\u5C40\u72B6\u6001\u5DF2\u6E05\u9664");
|
|
146
|
-
} catch (error) {
|
|
147
|
-
console.error("\u{1F4A5} [AuthContext] \u767B\u51FA\u5931\u8D25:", error);
|
|
148
|
-
}
|
|
149
|
-
}, [safeSetState]);
|
|
150
|
-
const refreshUser = React.useCallback(() => {
|
|
151
|
-
console.log("\u{1F504} [AuthContext] \u5237\u65B0\u7528\u6237\u4FE1\u606F...");
|
|
152
|
-
setLoading(true);
|
|
153
|
-
validateSession();
|
|
154
|
-
}, [validateSession]);
|
|
155
|
-
React.useEffect(() => {
|
|
156
|
-
isMountedRef.current = true;
|
|
157
|
-
return () => {
|
|
158
|
-
isMountedRef.current = false;
|
|
159
|
-
};
|
|
160
|
-
}, []);
|
|
161
|
-
React.useEffect(() => {
|
|
162
|
-
console.log("\u{1F680} [AuthContext] \u521D\u59CB\u5316, \u5F00\u59CB\u9A8C\u8BC1\u4F1A\u8BDD");
|
|
163
|
-
validateSession();
|
|
164
|
-
}, [validateSession]);
|
|
165
|
-
React.useEffect(() => {
|
|
166
|
-
console.log("\u{1F4CA} [AuthContext] \u5168\u5C40\u72B6\u6001\u53D8\u5316:", {
|
|
167
|
-
isAuthenticated,
|
|
168
|
-
user: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
|
|
169
|
-
loading
|
|
170
|
-
});
|
|
171
|
-
}, [isAuthenticated, user, loading]);
|
|
172
|
-
const value = {
|
|
173
|
-
user,
|
|
174
|
-
loading,
|
|
175
|
-
isAuthenticated,
|
|
176
|
-
login,
|
|
177
|
-
register,
|
|
178
|
-
logout,
|
|
179
|
-
refreshUser
|
|
180
|
-
};
|
|
181
|
-
return /* @__PURE__ */ React__default.default.createElement(AuthContext.Provider, { value }, children);
|
|
182
|
-
}
|
|
183
|
-
function useAuth() {
|
|
184
|
-
const context = React.useContext(AuthContext);
|
|
185
|
-
if (context === void 0) {
|
|
186
|
-
throw new Error("useAuth must be used within an AuthProvider");
|
|
187
|
-
}
|
|
188
|
-
return context;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// src/business/auth-legacy/types/index.ts
|
|
192
|
-
var UserRole = /* @__PURE__ */ ((UserRole2) => {
|
|
193
|
-
UserRole2["USER"] = "user";
|
|
194
|
-
UserRole2["ADMIN"] = "admin";
|
|
195
|
-
return UserRole2;
|
|
196
|
-
})(UserRole || {});
|
|
197
|
-
|
|
198
|
-
// src/business/auth-legacy/utils/authUtils.ts
|
|
199
|
-
function validatePhoneNumber(phone) {
|
|
200
|
-
return /^1[3-9]\d{9}$/.test(phone);
|
|
201
|
-
}
|
|
202
|
-
function validatePassword(password) {
|
|
203
|
-
if (!password) {
|
|
204
|
-
return { valid: false, message: "\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A" };
|
|
205
|
-
}
|
|
206
|
-
if (password.length < 6) {
|
|
207
|
-
return { valid: false, message: "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C116\u4F4D" };
|
|
208
|
-
}
|
|
209
|
-
return { valid: true };
|
|
210
|
-
}
|
|
211
|
-
function generateSessionToken() {
|
|
212
|
-
return Math.random().toString(36).substring(2) + Date.now().toString(36) + Math.random().toString(36).substring(2);
|
|
213
|
-
}
|
|
214
|
-
function isAdmin(user) {
|
|
215
|
-
return user?.role === "admin";
|
|
216
|
-
}
|
|
217
|
-
function isActiveUser(user) {
|
|
218
|
-
return user?.isActive === true;
|
|
219
|
-
}
|
|
220
|
-
function getUserDisplayName(user) {
|
|
221
|
-
return user.name || user.phone || "\u672A\u77E5\u7528\u6237";
|
|
222
|
-
}
|
|
223
|
-
function calculateSessionExpiry(days = 30) {
|
|
224
|
-
return new Date(Date.now() + days * 24 * 60 * 60 * 1e3);
|
|
225
|
-
}
|
|
226
|
-
function isSessionExpired(expiresAt) {
|
|
227
|
-
return /* @__PURE__ */ new Date() > new Date(expiresAt);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
exports.AuthProvider = AuthProvider;
|
|
231
|
-
exports.UserRole = UserRole;
|
|
232
|
-
exports.calculateSessionExpiry = calculateSessionExpiry;
|
|
233
|
-
exports.generateSessionToken = generateSessionToken;
|
|
234
|
-
exports.getUserDisplayName = getUserDisplayName;
|
|
235
|
-
exports.isActiveUser = isActiveUser;
|
|
236
|
-
exports.isAdmin = isAdmin;
|
|
237
|
-
exports.isSessionExpired = isSessionExpired;
|
|
238
|
-
exports.useAuth = useAuth;
|
|
239
|
-
exports.validatePassword = validatePassword;
|
|
240
|
-
exports.validatePhoneNumber = validatePhoneNumber;
|
|
241
|
-
//# sourceMappingURL=index.js.map
|
|
242
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/business/auth-legacy/contexts/AuthContext.tsx","../../../../src/business/auth-legacy/types/index.ts","../../../../src/business/auth-legacy/utils/authUtils.ts"],"names":["createContext","useState","useRef","useCallback","useEffect","React","useContext","UserRole"],"mappings":"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","file":"index.js","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","// ===== 用户相关类型 =====\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} ","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} "]}
|