sa2kit 3.0.0 → 3.2.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 +5 -5
- package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
- package/dist/AliyunOSSProvider-7IOT5U6M.js.map +1 -0
- package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
- package/dist/AliyunOSSProvider-ZXZM7OQA.mjs.map +1 -0
- package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
- package/dist/LocalStorageProvider-KJKRCKBS.js.map +1 -0
- package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
- package/dist/LocalStorageProvider-O22465NY.mjs.map +1 -0
- package/dist/chunk-2234T4A6.js +303 -0
- package/dist/chunk-2234T4A6.js.map +1 -0
- package/dist/chunk-36KGNXKW.js +16 -0
- package/dist/chunk-36KGNXKW.js.map +1 -0
- package/dist/chunk-375C7WL7.js +2695 -0
- package/dist/chunk-375C7WL7.js.map +1 -0
- package/dist/chunk-3J24Z4MB.js +991 -0
- package/dist/chunk-3J24Z4MB.js.map +1 -0
- package/dist/chunk-3QCATFQV.js +43 -0
- package/dist/chunk-3QCATFQV.js.map +1 -0
- package/dist/chunk-3R6JHA6D.js +120 -0
- package/dist/chunk-3R6JHA6D.js.map +1 -0
- package/dist/chunk-4OXKHV7J.js +43 -0
- package/dist/chunk-4OXKHV7J.js.map +1 -0
- package/dist/chunk-4PJM4752.js +4 -0
- package/dist/chunk-4PJM4752.js.map +1 -0
- package/dist/chunk-65JRVC3F.mjs +54 -0
- package/dist/chunk-65JRVC3F.mjs.map +1 -0
- package/dist/chunk-6HL54I2B.js +336 -0
- package/dist/chunk-6HL54I2B.js.map +1 -0
- package/dist/chunk-6V2MIQPF.mjs +77 -0
- package/dist/chunk-6V2MIQPF.mjs.map +1 -0
- package/dist/chunk-6YLCRWKM.mjs +8 -0
- package/dist/chunk-6YLCRWKM.mjs.map +1 -0
- package/dist/chunk-7CRU2Y5X.mjs +152 -0
- package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
- package/dist/chunk-7PMT4L4I.js +324 -0
- package/dist/chunk-7PMT4L4I.js.map +1 -0
- package/dist/chunk-7VVZHFEM.js +88 -0
- package/dist/chunk-7VVZHFEM.js.map +1 -0
- package/dist/chunk-AWHGIKTQ.js +56 -0
- package/dist/chunk-AWHGIKTQ.js.map +1 -0
- package/dist/chunk-B3GYF6TY.js +37 -0
- package/dist/chunk-B3GYF6TY.js.map +1 -0
- package/dist/chunk-BDBJFOXM.mjs +14 -0
- package/dist/chunk-BDBJFOXM.mjs.map +1 -0
- package/dist/chunk-BTW3SWQN.mjs +25 -0
- package/dist/chunk-BTW3SWQN.mjs.map +1 -0
- package/dist/chunk-CHYSSZ4E.mjs +734 -0
- package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
- package/dist/chunk-DO6QYAZV.mjs +298 -0
- package/dist/chunk-DO6QYAZV.mjs.map +1 -0
- package/dist/chunk-DTR53LQO.mjs +781 -0
- package/dist/chunk-DTR53LQO.mjs.map +1 -0
- package/dist/chunk-EI2S4XDG.mjs +89 -0
- package/dist/chunk-EI2S4XDG.mjs.map +1 -0
- package/dist/chunk-EOZHUI46.js +93 -0
- package/dist/chunk-EOZHUI46.js.map +1 -0
- package/dist/chunk-F2BZIU67.js +184 -0
- package/dist/chunk-F2BZIU67.js.map +1 -0
- package/dist/chunk-F2TEJSCP.js +756 -0
- package/dist/chunk-F2TEJSCP.js.map +1 -0
- package/dist/chunk-FCLS5R24.js +148 -0
- package/dist/chunk-FCLS5R24.js.map +1 -0
- package/dist/chunk-FUA6ZGMI.mjs +376 -0
- package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
- package/dist/chunk-FY2X3LYR.mjs +3 -0
- package/dist/chunk-FY2X3LYR.mjs.map +1 -0
- package/dist/chunk-GS4SAW25.mjs +116 -0
- package/dist/chunk-GS4SAW25.mjs.map +1 -0
- package/dist/chunk-H56ICWUO.js +321 -0
- package/dist/chunk-H56ICWUO.js.map +1 -0
- package/dist/chunk-HG34SGMN.mjs +546 -0
- package/dist/chunk-HG34SGMN.mjs.map +1 -0
- package/dist/chunk-HL4H2HF6.js +279 -0
- package/dist/chunk-HL4H2HF6.js.map +1 -0
- package/dist/chunk-IJIQUMAK.mjs +272 -0
- package/dist/chunk-IJIQUMAK.mjs.map +1 -0
- package/dist/chunk-KEZFTDZT.mjs +559 -0
- package/dist/chunk-KEZFTDZT.mjs.map +1 -0
- package/dist/chunk-KHOVC2KL.js +144 -0
- package/dist/chunk-KHOVC2KL.js.map +1 -0
- package/dist/chunk-KRBSTLKC.js +6154 -0
- package/dist/chunk-KRBSTLKC.js.map +1 -0
- package/dist/chunk-KVYHCGRY.js +2011 -0
- package/dist/chunk-KVYHCGRY.js.map +1 -0
- package/dist/chunk-LZ5YTMMP.mjs +41 -0
- package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
- package/dist/chunk-MJ6XJGAL.js +1551 -0
- package/dist/chunk-MJ6XJGAL.js.map +1 -0
- package/dist/chunk-MKLXCV4Z.mjs +1510 -0
- package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
- package/dist/chunk-MMDSZIXD.mjs +286 -0
- package/dist/chunk-MMDSZIXD.mjs.map +1 -0
- package/dist/chunk-N2O3OX5Y.mjs +243 -0
- package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
- package/dist/chunk-O6NNSPWD.mjs +35 -0
- package/dist/chunk-O6NNSPWD.mjs.map +1 -0
- package/dist/chunk-OIRZXSYM.js +80 -0
- package/dist/chunk-OIRZXSYM.js.map +1 -0
- package/dist/chunk-P7JQRNBJ.mjs +76 -0
- package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
- package/dist/chunk-PA4ELVGI.js +20 -0
- package/dist/chunk-PA4ELVGI.js.map +1 -0
- package/dist/chunk-PLIG5257.mjs +2613 -0
- package/dist/chunk-PLIG5257.mjs.map +1 -0
- package/dist/chunk-QIF4MG5V.mjs +283 -0
- package/dist/chunk-QIF4MG5V.mjs.map +1 -0
- package/dist/chunk-RHECN4E2.mjs +6077 -0
- package/dist/chunk-RHECN4E2.mjs.map +1 -0
- package/dist/chunk-RHHTZTIN.mjs +314 -0
- package/dist/chunk-RHHTZTIN.mjs.map +1 -0
- package/dist/chunk-RRQ2X26Z.js +106 -0
- package/dist/chunk-RRQ2X26Z.js.map +1 -0
- package/dist/chunk-RST2T54Y.js +836 -0
- package/dist/chunk-RST2T54Y.js.map +1 -0
- package/dist/chunk-RVNQI6BI.js +249 -0
- package/dist/chunk-RVNQI6BI.js.map +1 -0
- package/dist/chunk-S3K4LTRI.mjs +226 -0
- package/dist/chunk-S3K4LTRI.mjs.map +1 -0
- package/dist/chunk-SWZ5XNF6.js +158 -0
- package/dist/chunk-SWZ5XNF6.js.map +1 -0
- package/dist/chunk-TNJ6LYX7.mjs +18 -0
- package/dist/chunk-TNJ6LYX7.mjs.map +1 -0
- package/dist/chunk-U7HNBCBS.js +207 -0
- package/dist/chunk-U7HNBCBS.js.map +1 -0
- package/dist/chunk-UJS3YSD3.mjs +37 -0
- package/dist/chunk-UJS3YSD3.mjs.map +1 -0
- package/dist/chunk-UJUWDF7M.mjs +336 -0
- package/dist/chunk-UJUWDF7M.mjs.map +1 -0
- package/dist/chunk-UR5NENGE.js +78 -0
- package/dist/chunk-UR5NENGE.js.map +1 -0
- package/dist/chunk-V7HGBDCB.mjs +135 -0
- package/dist/chunk-V7HGBDCB.mjs.map +1 -0
- package/dist/chunk-V7RLIZMN.js +90 -0
- package/dist/chunk-V7RLIZMN.js.map +1 -0
- package/dist/chunk-VCKXK6V5.js +345 -0
- package/dist/chunk-VCKXK6V5.js.map +1 -0
- package/dist/chunk-VIEXDTNF.mjs +100 -0
- package/dist/chunk-VIEXDTNF.mjs.map +1 -0
- package/dist/chunk-VN2DULIA.js +579 -0
- package/dist/chunk-VN2DULIA.js.map +1 -0
- package/dist/chunk-VNWMRUY6.js +168 -0
- package/dist/chunk-VNWMRUY6.js.map +1 -0
- package/dist/chunk-VYK4M2D6.mjs +177 -0
- package/dist/chunk-VYK4M2D6.mjs.map +1 -0
- package/dist/chunk-WB4H6ZUW.mjs +86 -0
- package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
- package/dist/chunk-WM3AEJ2E.mjs +981 -0
- package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
- package/dist/chunk-X5GINUGI.mjs +162 -0
- package/dist/chunk-X5GINUGI.mjs.map +1 -0
- package/dist/chunk-XB7GUEHZ.mjs +82 -0
- package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
- package/dist/chunk-XE5RGZ3B.js +242 -0
- package/dist/chunk-XE5RGZ3B.js.map +1 -0
- package/dist/chunk-XNTIMVSL.mjs +193 -0
- package/dist/chunk-XNTIMVSL.mjs.map +1 -0
- package/dist/chunk-Y7WHUKJF.js +387 -0
- package/dist/chunk-Y7WHUKJF.js.map +1 -0
- package/dist/chunk-YIRPPMCN.mjs +1916 -0
- package/dist/chunk-YIRPPMCN.mjs.map +1 -0
- package/dist/chunk-YTGUIRRH.js +10 -0
- package/dist/chunk-YTGUIRRH.js.map +1 -0
- package/dist/chunk-Z2SNB5LJ.js +28 -0
- package/dist/chunk-Z2SNB5LJ.js.map +1 -0
- package/dist/chunk-ZOP7YIVX.js +552 -0
- package/dist/chunk-ZOP7YIVX.js.map +1 -0
- package/dist/chunk-ZUZLWHH5.mjs +146 -0
- package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
- package/dist/common/ai/llm/core/index.d.mts +70 -0
- package/dist/common/ai/llm/core/index.d.ts +70 -0
- package/dist/common/ai/llm/core/index.js +54 -0
- package/dist/common/ai/llm/core/index.mjs +5 -0
- package/dist/common/ai/llm/electron/index.d.mts +6 -0
- package/dist/common/ai/llm/electron/index.d.ts +6 -0
- package/dist/common/ai/llm/electron/index.js +67 -0
- package/dist/common/ai/llm/electron/index.mjs +10 -0
- package/dist/common/ai/llm/index.d.mts +3 -0
- package/dist/common/ai/llm/index.d.ts +3 -0
- package/dist/common/ai/llm/index.js +54 -0
- package/dist/common/ai/llm/index.mjs +5 -0
- package/dist/common/ai/llm/miniapp/index.d.mts +6 -0
- package/dist/common/ai/llm/miniapp/index.d.ts +6 -0
- package/dist/common/ai/llm/miniapp/index.js +59 -0
- package/dist/common/ai/llm/miniapp/index.mjs +6 -0
- package/dist/common/ai/llm/rn/index.d.mts +6 -0
- package/dist/common/ai/llm/rn/index.d.ts +6 -0
- package/dist/common/ai/llm/rn/index.js +59 -0
- package/dist/common/ai/llm/rn/index.mjs +6 -0
- package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
- package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
- package/dist/common/ai/llm/ui/electron/index.js +22 -0
- package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
- package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
- package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
- package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
- package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
- package/dist/common/ai/llm/ui/rn/index.js +14 -0
- package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
- package/dist/common/ai/llm/ui/web/index.d.mts +15 -0
- package/dist/common/ai/llm/ui/web/index.d.ts +15 -0
- package/dist/common/ai/llm/ui/web/index.js +21 -0
- package/dist/common/ai/llm/ui/web/index.mjs +8 -0
- package/dist/common/ai/llm/web/index.d.mts +6 -0
- package/dist/common/ai/llm/web/index.d.ts +6 -0
- package/dist/common/ai/llm/web/index.js +66 -0
- package/dist/common/ai/llm/web/index.mjs +9 -0
- package/dist/common/analytics/index.d.mts +2 -0
- package/dist/common/analytics/index.d.ts +2 -0
- package/dist/common/analytics/index.js +314 -0
- package/dist/common/analytics/index.mjs +5 -0
- package/dist/common/analytics/server/index.js +529 -0
- package/dist/common/analytics/server/index.js.map +1 -0
- package/dist/common/analytics/server/index.mjs +525 -0
- package/dist/common/analytics/server/index.mjs.map +1 -0
- package/dist/common/api/index.d.mts +3 -0
- package/dist/common/api/index.d.ts +3 -0
- package/dist/common/api/index.js +21 -0
- package/dist/common/api/index.mjs +4 -0
- package/dist/common/auth/client/index.d.mts +1 -31
- package/dist/common/auth/client/index.d.ts +1 -31
- package/dist/common/auth/client/index.js +2 -15
- package/dist/common/auth/client/index.mjs +1 -2
- package/dist/common/auth/components/index.d.mts +5 -239
- package/dist/common/auth/components/index.d.ts +5 -239
- package/dist/common/auth/components/index.js +878 -49
- package/dist/common/auth/components/index.js.map +1 -1
- package/dist/common/auth/components/index.mjs +871 -5
- package/dist/common/auth/components/index.mjs.map +1 -1
- package/dist/common/auth/hooks/index.d.mts +2 -29
- package/dist/common/auth/hooks/index.d.ts +2 -29
- package/dist/common/auth/hooks/index.js +2 -11
- package/dist/common/auth/hooks/index.mjs +1 -2
- package/dist/common/auth/index.d.mts +5 -9
- package/dist/common/auth/index.d.ts +5 -9
- package/dist/common/auth/index.js +5 -26
- package/dist/common/auth/index.mjs +3 -4
- package/dist/common/auth/rn/index.d.mts +1 -17
- package/dist/common/auth/rn/index.d.ts +1 -17
- package/dist/common/auth/rn/index.js +2 -34
- package/dist/common/auth/rn/index.js.map +1 -1
- package/dist/common/auth/rn/index.mjs +2 -31
- package/dist/common/auth/rn/index.mjs.map +1 -1
- package/dist/common/auth/server/index.d.mts +81 -2
- package/dist/common/auth/server/index.d.ts +81 -2
- package/dist/common/auth/server/index.js +128 -37
- package/dist/common/auth/server/index.js.map +1 -1
- package/dist/common/auth/server/index.mjs +124 -1
- package/dist/common/auth/server/index.mjs.map +1 -1
- package/dist/common/auth/services/index.js +12 -9
- package/dist/common/auth/services/index.js.map +1 -1
- package/dist/common/auth/services/index.mjs +10 -1
- package/dist/common/auth/services/index.mjs.map +1 -1
- package/dist/common/components/index.d.mts +4 -0
- package/dist/common/components/index.d.ts +4 -0
- package/dist/common/components/index.js +414 -0
- package/dist/common/components/index.mjs +9 -0
- package/dist/common/config/index.d.mts +1 -0
- package/dist/common/config/index.d.ts +1 -0
- package/dist/common/config/index.js +21 -0
- package/dist/common/config/index.mjs +4 -0
- package/dist/common/config/server/index.js +1177 -0
- package/dist/common/config/server/index.js.map +1 -0
- package/dist/common/config/server/index.mjs +1138 -0
- package/dist/common/config/server/index.mjs.map +1 -0
- package/dist/common/export/index.d.mts +2 -2
- package/dist/common/export/index.d.ts +2 -2
- package/dist/common/export/index.js +67 -67
- package/dist/common/export/index.mjs +3 -3
- package/dist/common/export/server/index.d.mts +2 -2
- package/dist/common/export/server/index.d.ts +2 -2
- package/dist/common/export/server/index.js +76 -48
- package/dist/common/export/server/index.mjs +3 -3
- package/dist/common/file/index.d.mts +2 -2
- package/dist/common/file/index.d.ts +2 -2
- package/dist/common/file/index.js +27 -27
- package/dist/common/file/index.mjs +5 -5
- package/dist/common/file/server/index.d.mts +2 -2
- package/dist/common/file/server/index.d.ts +2 -2
- package/dist/common/file/server/index.js +58 -50
- package/dist/common/file/server/index.mjs +8 -8
- package/dist/common/i18n/index.d.mts +2 -0
- package/dist/common/i18n/index.d.ts +2 -0
- package/dist/common/i18n/index.js +73 -0
- package/dist/common/i18n/index.mjs +4 -0
- package/dist/common/imageCrop/index.d.mts +2 -0
- package/dist/common/imageCrop/index.d.ts +2 -0
- package/dist/common/imageCrop/index.js +61 -0
- package/dist/common/imageCrop/index.mjs +4 -0
- package/dist/common/index.d.mts +17 -20
- package/dist/common/index.d.ts +17 -20
- package/dist/common/index.js +76 -70
- package/dist/common/index.mjs +27 -29
- package/dist/common/logger/index.d.mts +1 -1
- package/dist/common/logger/index.d.ts +1 -1
- package/dist/common/logger/index.js +6 -7
- package/dist/common/logger/index.mjs +1 -2
- package/dist/common/ossFile/index.d.mts +61 -0
- package/dist/common/ossFile/index.d.ts +61 -0
- package/dist/common/ossFile/index.js +96 -0
- package/dist/common/ossFile/index.mjs +7 -0
- package/dist/common/ossFile/server/index.d.mts +94 -0
- package/dist/common/ossFile/server/index.d.ts +94 -0
- package/dist/common/ossFile/server/index.js +221 -0
- package/dist/common/ossFile/server/index.mjs +12 -0
- package/dist/common/platform/index.js +8 -8
- package/dist/common/platform/index.mjs +4 -4
- package/dist/common/request/index.d.mts +1 -1
- package/dist/common/request/index.d.ts +1 -1
- package/dist/common/request/index.js +5 -7
- package/dist/common/request/index.mjs +2 -4
- package/dist/common/storage/index.d.mts +1 -1
- package/dist/common/storage/index.d.ts +1 -1
- package/dist/common/storage/index.js +17 -17
- package/dist/common/storage/index.mjs +5 -5
- package/dist/common/universalExport/index.d.mts +232 -0
- package/dist/common/universalExport/index.d.ts +232 -0
- package/dist/common/universalExport/index.js +178 -0
- package/dist/common/universalExport/index.mjs +5 -0
- package/dist/common/universalExport/server/index.d.mts +1189 -0
- package/dist/common/universalExport/server/index.d.ts +1189 -0
- package/dist/common/universalExport/server/index.js +151 -0
- package/dist/common/universalExport/server/index.mjs +6 -0
- package/dist/common/universalFile/index.d.mts +409 -0
- package/dist/common/universalFile/index.d.ts +409 -0
- package/dist/common/universalFile/index.js +1742 -0
- package/dist/common/universalFile/index.js.map +1 -0
- package/dist/common/universalFile/index.mjs +1497 -0
- package/dist/common/universalFile/index.mjs.map +1 -0
- package/dist/common/universalFile/server/index.d.mts +1064 -0
- package/dist/common/universalFile/server/index.d.ts +1064 -0
- package/dist/common/universalFile/server/index.js +311 -0
- package/dist/common/universalFile/server/index.mjs +10 -0
- package/dist/common/utils/index.d.mts +1 -1
- package/dist/common/utils/index.d.ts +1 -1
- package/dist/common/utils/index.js +11 -12
- package/dist/common/utils/index.mjs +2 -3
- package/dist/index-BRLygK4h.d.ts +67 -0
- package/dist/index-BWNK5mH2.d.ts +76 -0
- package/dist/index-Bd7cKF1j.d.mts +50 -0
- package/dist/index-BiCK6gg6.d.mts +210 -0
- package/dist/index-BiCK6gg6.d.ts +210 -0
- package/dist/index-C-P2yBTH.d.mts +76 -0
- package/dist/index-CT4K2z-O.d.ts +81 -0
- package/dist/index-D6RJTGce.d.mts +81 -0
- package/dist/index-DA7L9JlE.d.mts +159 -0
- package/dist/index-DRQxtCDw.d.ts +50 -0
- package/dist/index-DXVph21C.d.mts +201 -0
- package/dist/index-DXVph21C.d.ts +201 -0
- package/dist/index-DzyK789B.d.mts +67 -0
- package/dist/index-FVJZCEtm.d.mts +145 -0
- package/dist/index-FVJZCEtm.d.ts +145 -0
- package/dist/index-nD9vPCZT.d.ts +159 -0
- package/dist/index-nOmIv2BG.d.mts +559 -0
- package/dist/index-nOmIv2BG.d.ts +559 -0
- package/dist/path-Bzc7hj1N.d.ts +45 -0
- package/dist/path-DN_65vhO.d.mts +45 -0
- package/dist/utils-Dm3O1rAa.d.mts +366 -0
- package/dist/utils-Dm3O1rAa.d.ts +366 -0
- package/package.json +293 -348
- package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
- package/dist/AliyunOSSProvider-4GRL2FJB.js.map +0 -1
- package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
- package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs.map +0 -1
- package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
- package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
- package/dist/ConfigService-BxK06xP6.d.mts +0 -262
- package/dist/ConfigService-BxK06xP6.d.ts +0 -262
- package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
- package/dist/LocalStorageProvider-J5RHV37G.mjs.map +0 -1
- package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
- package/dist/LocalStorageProvider-PFA2DMIJ.js.map +0 -1
- package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
- package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
- package/dist/ai/llm/core/index.d.mts +0 -70
- package/dist/ai/llm/core/index.d.ts +0 -70
- package/dist/ai/llm/core/index.js +0 -54
- package/dist/ai/llm/core/index.mjs +0 -5
- package/dist/ai/llm/electron/index.d.mts +0 -6
- package/dist/ai/llm/electron/index.d.ts +0 -6
- package/dist/ai/llm/electron/index.js +0 -66
- package/dist/ai/llm/electron/index.mjs +0 -9
- package/dist/ai/llm/index.d.mts +0 -3
- package/dist/ai/llm/index.d.ts +0 -3
- package/dist/ai/llm/index.js +0 -54
- package/dist/ai/llm/index.mjs +0 -5
- package/dist/ai/llm/miniapp/index.d.mts +0 -6
- package/dist/ai/llm/miniapp/index.d.ts +0 -6
- package/dist/ai/llm/miniapp/index.js +0 -59
- package/dist/ai/llm/miniapp/index.mjs +0 -6
- package/dist/ai/llm/rn/index.d.mts +0 -6
- package/dist/ai/llm/rn/index.d.ts +0 -6
- package/dist/ai/llm/rn/index.js +0 -59
- package/dist/ai/llm/rn/index.mjs +0 -6
- package/dist/ai/llm/ui/electron/index.d.mts +0 -5
- package/dist/ai/llm/ui/electron/index.d.ts +0 -5
- package/dist/ai/llm/ui/electron/index.js +0 -21
- package/dist/ai/llm/ui/electron/index.mjs +0 -8
- package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
- package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
- package/dist/ai/llm/ui/miniapp/index.js +0 -14
- package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
- package/dist/ai/llm/ui/rn/index.d.mts +0 -9
- package/dist/ai/llm/ui/rn/index.d.ts +0 -9
- package/dist/ai/llm/ui/rn/index.js +0 -14
- package/dist/ai/llm/ui/rn/index.mjs +0 -5
- package/dist/ai/llm/ui/web/index.d.mts +0 -15
- package/dist/ai/llm/ui/web/index.d.ts +0 -15
- package/dist/ai/llm/ui/web/index.js +0 -20
- package/dist/ai/llm/ui/web/index.mjs +0 -7
- package/dist/ai/llm/web/index.d.mts +0 -6
- package/dist/ai/llm/web/index.d.ts +0 -6
- package/dist/ai/llm/web/index.js +0 -65
- package/dist/ai/llm/web/index.mjs +0 -8
- package/dist/analytics/index.d.mts +0 -2
- package/dist/analytics/index.d.ts +0 -2
- package/dist/analytics/index.js +0 -314
- package/dist/analytics/index.mjs +0 -5
- package/dist/analytics/server/index.js +0 -529
- package/dist/analytics/server/index.js.map +0 -1
- package/dist/analytics/server/index.mjs +0 -525
- package/dist/analytics/server/index.mjs.map +0 -1
- package/dist/api/index.d.mts +0 -3
- package/dist/api/index.d.ts +0 -3
- package/dist/api/index.js +0 -21
- package/dist/api/index.mjs +0 -4
- package/dist/audioDetection/index.d.mts +0 -449
- package/dist/audioDetection/index.d.ts +0 -449
- package/dist/audioDetection/index.js +0 -1244
- package/dist/audioDetection/index.js.map +0 -1
- package/dist/audioDetection/index.mjs +0 -1227
- package/dist/audioDetection/index.mjs.map +0 -1
- package/dist/auth/client/index.d.mts +0 -13
- package/dist/auth/client/index.d.ts +0 -13
- package/dist/auth/client/index.js +0 -26
- package/dist/auth/client/index.mjs +0 -5
- package/dist/auth/components/index.d.mts +0 -10
- package/dist/auth/components/index.d.ts +0 -10
- package/dist/auth/components/index.js +0 -70
- package/dist/auth/components/index.mjs +0 -9
- package/dist/auth/hooks/index.d.mts +0 -13
- package/dist/auth/hooks/index.d.ts +0 -13
- package/dist/auth/hooks/index.js +0 -28
- package/dist/auth/hooks/index.mjs +0 -7
- package/dist/auth/index.d.mts +0 -21
- package/dist/auth/index.d.ts +0 -21
- package/dist/auth/index.js +0 -112
- package/dist/auth/index.mjs +0 -11
- package/dist/auth/rn/index.d.mts +0 -3133
- package/dist/auth/rn/index.d.ts +0 -3133
- package/dist/auth/rn/index.js +0 -684
- package/dist/auth/rn/index.js.map +0 -1
- package/dist/auth/rn/index.mjs +0 -663
- package/dist/auth/rn/index.mjs.map +0 -1
- package/dist/auth/schema/index.d.mts +0 -4
- package/dist/auth/schema/index.d.ts +0 -4
- package/dist/auth/schema/index.js +0 -49
- package/dist/auth/schema/index.mjs +0 -4
- package/dist/auth/services/index.d.mts +0 -1
- package/dist/auth/services/index.d.ts +0 -1
- package/dist/auth/services/index.js +0 -17
- package/dist/auth/services/index.mjs +0 -4
- package/dist/base-api-client-BpmcQt4Q.d.ts +0 -103
- package/dist/base-api-client-CFIhZK4C.d.mts +0 -277
- package/dist/base-api-client-CFIhZK4C.d.ts +0 -277
- package/dist/base-api-client-DXLsq2yz.d.mts +0 -103
- package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
- package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
- package/dist/business/index.d.mts +0 -2
- package/dist/business/index.d.ts +0 -2
- package/dist/business/index.js +0 -581
- package/dist/business/index.js.map +0 -1
- package/dist/business/index.mjs +0 -575
- package/dist/business/index.mjs.map +0 -1
- package/dist/calendar/index.d.mts +0 -1325
- package/dist/calendar/index.d.ts +0 -1325
- package/dist/calendar/index.js +0 -5964
- package/dist/calendar/index.js.map +0 -1
- package/dist/calendar/index.mjs +0 -5878
- package/dist/calendar/index.mjs.map +0 -1
- package/dist/calendar/routes/index.d.mts +0 -191
- package/dist/calendar/routes/index.d.ts +0 -191
- package/dist/calendar/routes/index.js +0 -844
- package/dist/calendar/routes/index.js.map +0 -1
- package/dist/calendar/routes/index.mjs +0 -826
- package/dist/calendar/routes/index.mjs.map +0 -1
- package/dist/chunk-25OFOKNF.js +0 -171
- package/dist/chunk-25OFOKNF.js.map +0 -1
- package/dist/chunk-2Y7BKFKZ.js +0 -37
- package/dist/chunk-2Y7BKFKZ.js.map +0 -1
- package/dist/chunk-3DXPQ4YV.mjs +0 -165
- package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
- package/dist/chunk-3FRAIS4T.mjs +0 -35
- package/dist/chunk-3FRAIS4T.mjs.map +0 -1
- package/dist/chunk-3NHAT7D4.mjs +0 -361
- package/dist/chunk-3NHAT7D4.mjs.map +0 -1
- package/dist/chunk-3Z43XGA4.mjs +0 -54
- package/dist/chunk-3Z43XGA4.mjs.map +0 -1
- package/dist/chunk-4FDUURSD.js +0 -22
- package/dist/chunk-4FDUURSD.js.map +0 -1
- package/dist/chunk-4WBCWJSN.js +0 -836
- package/dist/chunk-4WBCWJSN.js.map +0 -1
- package/dist/chunk-5GBDDXYL.mjs +0 -23
- package/dist/chunk-5GBDDXYL.mjs.map +0 -1
- package/dist/chunk-5USIS3UM.js +0 -4
- package/dist/chunk-5USIS3UM.js.map +0 -1
- package/dist/chunk-7E3J7VAD.mjs +0 -3
- package/dist/chunk-7E3J7VAD.mjs.map +0 -1
- package/dist/chunk-ACUFEDVQ.js +0 -345
- package/dist/chunk-ACUFEDVQ.js.map +0 -1
- package/dist/chunk-AQPU2AXH.js +0 -756
- package/dist/chunk-AQPU2AXH.js.map +0 -1
- package/dist/chunk-ATUCZXJY.js +0 -80
- package/dist/chunk-ATUCZXJY.js.map +0 -1
- package/dist/chunk-B3CZ3HXJ.mjs +0 -126
- package/dist/chunk-B3CZ3HXJ.mjs.map +0 -1
- package/dist/chunk-BCE6RUZV.js +0 -2695
- package/dist/chunk-BCE6RUZV.js.map +0 -1
- package/dist/chunk-BIHYZA67.mjs +0 -2613
- package/dist/chunk-BIHYZA67.mjs.map +0 -1
- package/dist/chunk-C6KV7VTZ.mjs +0 -152
- package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
- package/dist/chunk-CAYOQDBR.js +0 -78
- package/dist/chunk-CAYOQDBR.js.map +0 -1
- package/dist/chunk-CIVO4R6N.mjs +0 -37
- package/dist/chunk-CIVO4R6N.mjs.map +0 -1
- package/dist/chunk-CX2GHCAI.mjs +0 -217
- package/dist/chunk-CX2GHCAI.mjs.map +0 -1
- package/dist/chunk-DIF5VRL3.mjs +0 -73
- package/dist/chunk-DIF5VRL3.mjs.map +0 -1
- package/dist/chunk-FCEBAWN6.js +0 -18
- package/dist/chunk-FCEBAWN6.js.map +0 -1
- package/dist/chunk-FHIE5MTC.mjs +0 -541
- package/dist/chunk-FHIE5MTC.mjs.map +0 -1
- package/dist/chunk-FHLTPXAR.js +0 -56
- package/dist/chunk-FHLTPXAR.js.map +0 -1
- package/dist/chunk-FIUBFREP.mjs +0 -298
- package/dist/chunk-FIUBFREP.mjs.map +0 -1
- package/dist/chunk-FOQEQWX5.js +0 -4
- package/dist/chunk-FOQEQWX5.js.map +0 -1
- package/dist/chunk-FXQOXLDE.js +0 -120
- package/dist/chunk-FXQOXLDE.js.map +0 -1
- package/dist/chunk-G4NFB2QA.mjs +0 -212
- package/dist/chunk-G4NFB2QA.mjs.map +0 -1
- package/dist/chunk-G5HJGXGC.mjs +0 -39
- package/dist/chunk-G5HJGXGC.mjs.map +0 -1
- package/dist/chunk-G6HXNQ2U.mjs +0 -336
- package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
- package/dist/chunk-G6NSKJMH.js +0 -106
- package/dist/chunk-G6NSKJMH.js.map +0 -1
- package/dist/chunk-G7UBMCUT.mjs +0 -41
- package/dist/chunk-G7UBMCUT.mjs.map +0 -1
- package/dist/chunk-GQZHGSRR.js +0 -44
- package/dist/chunk-GQZHGSRR.js.map +0 -1
- package/dist/chunk-GS7XLKET.js +0 -41
- package/dist/chunk-GS7XLKET.js.map +0 -1
- package/dist/chunk-GWNBVGDT.mjs +0 -1232
- package/dist/chunk-GWNBVGDT.mjs.map +0 -1
- package/dist/chunk-HDMIOOZY.mjs +0 -546
- package/dist/chunk-HDMIOOZY.mjs.map +0 -1
- package/dist/chunk-HJ6MH7J7.js +0 -552
- package/dist/chunk-HJ6MH7J7.js.map +0 -1
- package/dist/chunk-HJZHQW5R.mjs +0 -146
- package/dist/chunk-HJZHQW5R.mjs.map +0 -1
- package/dist/chunk-I5ZPEDNR.mjs +0 -734
- package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
- package/dist/chunk-IBWDBBX5.mjs +0 -16
- package/dist/chunk-IBWDBBX5.mjs.map +0 -1
- package/dist/chunk-J77KR2EV.mjs +0 -193
- package/dist/chunk-J77KR2EV.mjs.map +0 -1
- package/dist/chunk-KH6RQ4J5.js +0 -28
- package/dist/chunk-KH6RQ4J5.js.map +0 -1
- package/dist/chunk-KQ643L7Z.js +0 -144
- package/dist/chunk-KQ643L7Z.js.map +0 -1
- package/dist/chunk-LFB5EIIM.mjs +0 -31
- package/dist/chunk-LFB5EIIM.mjs.map +0 -1
- package/dist/chunk-LHJKLUM7.mjs +0 -18
- package/dist/chunk-LHJKLUM7.mjs.map +0 -1
- package/dist/chunk-MBANGIG3.mjs +0 -781
- package/dist/chunk-MBANGIG3.mjs.map +0 -1
- package/dist/chunk-MWSAH7ZG.mjs +0 -42
- package/dist/chunk-MWSAH7ZG.mjs.map +0 -1
- package/dist/chunk-MZOGYD4N.mjs +0 -186
- package/dist/chunk-MZOGYD4N.mjs.map +0 -1
- package/dist/chunk-NCRP2YHY.mjs +0 -1598
- package/dist/chunk-NCRP2YHY.mjs.map +0 -1
- package/dist/chunk-NDGHXVGS.js +0 -25
- package/dist/chunk-NDGHXVGS.js.map +0 -1
- package/dist/chunk-NDPO5OMC.js +0 -563
- package/dist/chunk-NDPO5OMC.js.map +0 -1
- package/dist/chunk-PBI7FKMB.js +0 -43
- package/dist/chunk-PBI7FKMB.js.map +0 -1
- package/dist/chunk-Q5EDCKQA.js +0 -336
- package/dist/chunk-Q5EDCKQA.js.map +0 -1
- package/dist/chunk-Q5VFBPMG.mjs +0 -76
- package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
- package/dist/chunk-QDUBO567.js +0 -1148
- package/dist/chunk-QDUBO567.js.map +0 -1
- package/dist/chunk-QP5N3ER6.js +0 -18
- package/dist/chunk-QP5N3ER6.js.map +0 -1
- package/dist/chunk-QXAOXBVB.mjs +0 -135
- package/dist/chunk-QXAOXBVB.mjs.map +0 -1
- package/dist/chunk-R2DXTE2L.js +0 -249
- package/dist/chunk-R2DXTE2L.js.map +0 -1
- package/dist/chunk-RJP2BRJD.mjs +0 -6077
- package/dist/chunk-RJP2BRJD.mjs.map +0 -1
- package/dist/chunk-RTD2WHQQ.mjs +0 -16
- package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
- package/dist/chunk-RWCD2CAD.mjs +0 -1132
- package/dist/chunk-RWCD2CAD.mjs.map +0 -1
- package/dist/chunk-S37OK2QG.js +0 -216
- package/dist/chunk-S37OK2QG.js.map +0 -1
- package/dist/chunk-S3PUP7N4.js +0 -20
- package/dist/chunk-S3PUP7N4.js.map +0 -1
- package/dist/chunk-S6YSGVWD.js +0 -224
- package/dist/chunk-S6YSGVWD.js.map +0 -1
- package/dist/chunk-S732H246.js +0 -6154
- package/dist/chunk-S732H246.js.map +0 -1
- package/dist/chunk-SFDJNKWC.js +0 -22
- package/dist/chunk-SFDJNKWC.js.map +0 -1
- package/dist/chunk-SKFEJPMJ.mjs +0 -226
- package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
- package/dist/chunk-SLKOEYFH.js +0 -303
- package/dist/chunk-SLKOEYFH.js.map +0 -1
- package/dist/chunk-TC5YU6A4.mjs +0 -243
- package/dist/chunk-TC5YU6A4.mjs.map +0 -1
- package/dist/chunk-TXMX6PZR.js +0 -190
- package/dist/chunk-TXMX6PZR.js.map +0 -1
- package/dist/chunk-UCOE6SET.js +0 -148
- package/dist/chunk-UCOE6SET.js.map +0 -1
- package/dist/chunk-UIYKZ73N.js +0 -36
- package/dist/chunk-UIYKZ73N.js.map +0 -1
- package/dist/chunk-V7EVKD5G.mjs +0 -116
- package/dist/chunk-V7EVKD5G.mjs.map +0 -1
- package/dist/chunk-VHN7PF5I.js +0 -20
- package/dist/chunk-VHN7PF5I.js.map +0 -1
- package/dist/chunk-VMTEDX5H.js +0 -1275
- package/dist/chunk-VMTEDX5H.js.map +0 -1
- package/dist/chunk-VRN76M56.mjs +0 -3
- package/dist/chunk-VRN76M56.mjs.map +0 -1
- package/dist/chunk-VXFUXZN5.mjs +0 -20
- package/dist/chunk-VXFUXZN5.mjs.map +0 -1
- package/dist/chunk-WEEXCPSE.mjs +0 -86
- package/dist/chunk-WEEXCPSE.mjs.map +0 -1
- package/dist/chunk-WW4GE6CZ.js +0 -1647
- package/dist/chunk-WW4GE6CZ.js.map +0 -1
- package/dist/chunk-WZDTNDYR.js +0 -207
- package/dist/chunk-WZDTNDYR.js.map +0 -1
- package/dist/chunk-XBZIS3MV.mjs +0 -13
- package/dist/chunk-XBZIS3MV.mjs.map +0 -1
- package/dist/chunk-XFOZ56FB.mjs +0 -20
- package/dist/chunk-XFOZ56FB.mjs.map +0 -1
- package/dist/chunk-XJ7ZAGC5.js +0 -88
- package/dist/chunk-XJ7ZAGC5.js.map +0 -1
- package/dist/chunk-XUS5ACKR.mjs +0 -100
- package/dist/chunk-XUS5ACKR.mjs.map +0 -1
- package/dist/chunk-YOTQG4NP.mjs +0 -314
- package/dist/chunk-YOTQG4NP.mjs.map +0 -1
- package/dist/chunk-Z23HAXHL.js +0 -136
- package/dist/chunk-Z23HAXHL.js.map +0 -1
- package/dist/chunk-ZGVB35L2.mjs +0 -25
- package/dist/chunk-ZGVB35L2.mjs.map +0 -1
- package/dist/chunk-ZLYPALF3.js +0 -242
- package/dist/chunk-ZLYPALF3.js.map +0 -1
- package/dist/chunk-ZM2SZJTZ.js +0 -158
- package/dist/chunk-ZM2SZJTZ.js.map +0 -1
- package/dist/chunk-ZRAW3HXA.js +0 -43
- package/dist/chunk-ZRAW3HXA.js.map +0 -1
- package/dist/chunk-ZWQJSZEY.js +0 -371
- package/dist/chunk-ZWQJSZEY.js.map +0 -1
- package/dist/components/index.d.mts +0 -405
- package/dist/components/index.d.ts +0 -405
- package/dist/components/index.js +0 -2516
- package/dist/components/index.js.map +0 -1
- package/dist/components/index.mjs +0 -2396
- package/dist/components/index.mjs.map +0 -1
- package/dist/config/index.d.mts +0 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -21
- package/dist/config/index.mjs +0 -4
- package/dist/config/server/index.js +0 -1177
- package/dist/config/server/index.js.map +0 -1
- package/dist/config/server/index.mjs +0 -1138
- package/dist/config/server/index.mjs.map +0 -1
- package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
- package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
- package/dist/festivalCard/index.d.mts +0 -76
- package/dist/festivalCard/index.d.ts +0 -76
- package/dist/festivalCard/index.js +0 -1492
- package/dist/festivalCard/index.js.map +0 -1
- package/dist/festivalCard/index.mjs +0 -1475
- package/dist/festivalCard/index.mjs.map +0 -1
- package/dist/festivalCard/routes/index.d.mts +0 -42
- package/dist/festivalCard/routes/index.d.ts +0 -42
- package/dist/festivalCard/routes/index.js +0 -361
- package/dist/festivalCard/routes/index.js.map +0 -1
- package/dist/festivalCard/routes/index.mjs +0 -356
- package/dist/festivalCard/routes/index.mjs.map +0 -1
- package/dist/festivalCard/server/index.d.mts +0 -120
- package/dist/festivalCard/server/index.d.ts +0 -120
- package/dist/festivalCard/server/index.js +0 -272
- package/dist/festivalCard/server/index.js.map +0 -1
- package/dist/festivalCard/server/index.mjs +0 -265
- package/dist/festivalCard/server/index.mjs.map +0 -1
- package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
- package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
- package/dist/i18n/index.d.mts +0 -2
- package/dist/i18n/index.d.ts +0 -2
- package/dist/i18n/index.js +0 -73
- package/dist/i18n/index.mjs +0 -4
- package/dist/imageCrop/index.d.mts +0 -165
- package/dist/imageCrop/index.d.ts +0 -165
- package/dist/imageCrop/index.js +0 -560
- package/dist/imageCrop/index.js.map +0 -1
- package/dist/imageCrop/index.mjs +0 -541
- package/dist/imageCrop/index.mjs.map +0 -1
- package/dist/index-2G9Dxjvt.d.ts +0 -81
- package/dist/index-BcjDRcKp.d.mts +0 -40
- package/dist/index-Bjem5rWn.d.mts +0 -17
- package/dist/index-BlpXrrTy.d.ts +0 -40
- package/dist/index-C5U-2hJq.d.ts +0 -23
- package/dist/index-CYuUB8aF.d.mts +0 -67
- package/dist/index-CifSBBP2.d.ts +0 -17
- package/dist/index-D0K4ehme.d.mts +0 -20
- package/dist/index-DLnfKN-a.d.mts +0 -23
- package/dist/index-DSel44Ke.d.mts +0 -93
- package/dist/index-DSel44Ke.d.ts +0 -93
- package/dist/index-DZ5iJtNO.d.mts +0 -102
- package/dist/index-DZ5iJtNO.d.ts +0 -102
- package/dist/index-Da7qdkgW.d.ts +0 -20
- package/dist/index-DrPcMJPc.d.mts +0 -250
- package/dist/index-DrPcMJPc.d.ts +0 -250
- package/dist/index-WrR57hKT.d.ts +0 -67
- package/dist/index-oLUvfqT8.d.ts +0 -20
- package/dist/index-pe38RDgC.d.mts +0 -20
- package/dist/index-qcOvRVuN.d.mts +0 -81
- package/dist/index.d.mts +0 -11590
- package/dist/index.d.ts +0 -11590
- package/dist/index.js +0 -17679
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -17403
- package/dist/index.mjs.map +0 -1
- package/dist/logger/index.d.mts +0 -125
- package/dist/logger/index.d.ts +0 -125
- package/dist/logger/index.js +0 -29
- package/dist/logger/index.mjs +0 -4
- package/dist/mikuContest/ui/web/index.d.mts +0 -2
- package/dist/mikuContest/ui/web/index.d.ts +0 -2
- package/dist/mikuContest/ui/web/index.js +0 -353
- package/dist/mikuContest/ui/web/index.js.map +0 -1
- package/dist/mikuContest/ui/web/index.mjs +0 -343
- package/dist/mikuContest/ui/web/index.mjs.map +0 -1
- package/dist/mikuFireworks3D/index.d.mts +0 -268
- package/dist/mikuFireworks3D/index.d.ts +0 -268
- package/dist/mikuFireworks3D/index.js +0 -1267
- package/dist/mikuFireworks3D/index.js.map +0 -1
- package/dist/mikuFireworks3D/index.mjs +0 -1228
- package/dist/mikuFireworks3D/index.mjs.map +0 -1
- package/dist/mikuFusionGame/index.d.mts +0 -117
- package/dist/mikuFusionGame/index.d.ts +0 -117
- package/dist/mikuFusionGame/index.js +0 -1208
- package/dist/mikuFusionGame/index.js.map +0 -1
- package/dist/mikuFusionGame/index.mjs +0 -1195
- package/dist/mikuFusionGame/index.mjs.map +0 -1
- package/dist/mmd/admin/index.d.mts +0 -487
- package/dist/mmd/admin/index.d.ts +0 -487
- package/dist/mmd/admin/index.js +0 -1058
- package/dist/mmd/admin/index.js.map +0 -1
- package/dist/mmd/admin/index.mjs +0 -1027
- package/dist/mmd/admin/index.mjs.map +0 -1
- package/dist/mmd/index.d.mts +0 -2467
- package/dist/mmd/index.d.ts +0 -2467
- package/dist/mmd/index.js +0 -10119
- package/dist/mmd/index.js.map +0 -1
- package/dist/mmd/index.mjs +0 -10028
- package/dist/mmd/index.mjs.map +0 -1
- package/dist/mmd/server/index.d.mts +0 -139
- package/dist/mmd/server/index.d.ts +0 -139
- package/dist/mmd/server/index.js +0 -424
- package/dist/mmd/server/index.js.map +0 -1
- package/dist/mmd/server/index.mjs +0 -404
- package/dist/mmd/server/index.mjs.map +0 -1
- package/dist/music/index.d.mts +0 -74
- package/dist/music/index.d.ts +0 -74
- package/dist/music/index.js +0 -830
- package/dist/music/index.js.map +0 -1
- package/dist/music/index.mjs +0 -809
- package/dist/music/index.mjs.map +0 -1
- package/dist/music/server/index.d.mts +0 -1
- package/dist/music/server/index.d.ts +0 -1
- package/dist/music/server/index.js +0 -194
- package/dist/music/server/index.js.map +0 -1
- package/dist/music/server/index.mjs +0 -182
- package/dist/music/server/index.mjs.map +0 -1
- package/dist/navigation/index.d.mts +0 -93
- package/dist/navigation/index.d.ts +0 -93
- package/dist/navigation/index.js +0 -453
- package/dist/navigation/index.js.map +0 -1
- package/dist/navigation/index.mjs +0 -443
- package/dist/navigation/index.mjs.map +0 -1
- package/dist/ossFile/index.d.mts +0 -61
- package/dist/ossFile/index.d.ts +0 -61
- package/dist/ossFile/index.js +0 -96
- package/dist/ossFile/index.js.map +0 -1
- package/dist/ossFile/index.mjs +0 -7
- package/dist/ossFile/index.mjs.map +0 -1
- package/dist/ossFile/server/index.d.mts +0 -94
- package/dist/ossFile/server/index.d.ts +0 -94
- package/dist/ossFile/server/index.js +0 -213
- package/dist/ossFile/server/index.js.map +0 -1
- package/dist/ossFile/server/index.mjs +0 -12
- package/dist/ossFile/server/index.mjs.map +0 -1
- package/dist/path-DkaHQSyW.d.mts +0 -41
- package/dist/path-qjVnH8qU.d.ts +0 -41
- package/dist/portfolio/index.d.mts +0 -66
- package/dist/portfolio/index.d.ts +0 -66
- package/dist/portfolio/index.js +0 -736
- package/dist/portfolio/index.js.map +0 -1
- package/dist/portfolio/index.mjs +0 -724
- package/dist/portfolio/index.mjs.map +0 -1
- package/dist/qqbot/server/index.d.mts +0 -216
- package/dist/qqbot/server/index.d.ts +0 -216
- package/dist/qqbot/server/index.js +0 -394
- package/dist/qqbot/server/index.js.map +0 -1
- package/dist/qqbot/server/index.mjs +0 -385
- package/dist/qqbot/server/index.mjs.map +0 -1
- package/dist/qqbot/ui/web/index.d.mts +0 -10
- package/dist/qqbot/ui/web/index.d.ts +0 -10
- package/dist/qqbot/ui/web/index.js +0 -105
- package/dist/qqbot/ui/web/index.js.map +0 -1
- package/dist/qqbot/ui/web/index.mjs +0 -99
- package/dist/qqbot/ui/web/index.mjs.map +0 -1
- package/dist/request/index.d.mts +0 -59
- package/dist/request/index.d.ts +0 -59
- package/dist/request/index.js +0 -23
- package/dist/request/index.js.map +0 -1
- package/dist/request/index.mjs +0 -6
- package/dist/request/index.mjs.map +0 -1
- package/dist/screenReceiver/index.d.mts +0 -86
- package/dist/screenReceiver/index.d.ts +0 -86
- package/dist/screenReceiver/index.js +0 -281
- package/dist/screenReceiver/index.js.map +0 -1
- package/dist/screenReceiver/index.mjs +0 -273
- package/dist/screenReceiver/index.mjs.map +0 -1
- package/dist/session-BCXvGCnm.d.mts +0 -81
- package/dist/session-BCXvGCnm.d.ts +0 -81
- package/dist/storage/index.d.mts +0 -136
- package/dist/storage/index.d.ts +0 -136
- package/dist/storage/index.js +0 -48
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/index.mjs +0 -7
- package/dist/storage/index.mjs.map +0 -1
- package/dist/testYourself/admin/index.d.mts +0 -58
- package/dist/testYourself/admin/index.d.ts +0 -58
- package/dist/testYourself/admin/index.js +0 -1009
- package/dist/testYourself/admin/index.js.map +0 -1
- package/dist/testYourself/admin/index.mjs +0 -1002
- package/dist/testYourself/admin/index.mjs.map +0 -1
- package/dist/testYourself/index.d.mts +0 -53
- package/dist/testYourself/index.d.ts +0 -53
- package/dist/testYourself/index.js +0 -2551
- package/dist/testYourself/index.js.map +0 -1
- package/dist/testYourself/index.mjs +0 -2531
- package/dist/testYourself/index.mjs.map +0 -1
- package/dist/testYourself/server/index.d.mts +0 -1029
- package/dist/testYourself/server/index.d.ts +0 -1029
- package/dist/testYourself/server/index.js +0 -825
- package/dist/testYourself/server/index.js.map +0 -1
- package/dist/testYourself/server/index.mjs +0 -816
- package/dist/testYourself/server/index.mjs.map +0 -1
- package/dist/types-3ujSNAXb.d.mts +0 -286
- package/dist/types-3ujSNAXb.d.ts +0 -286
- package/dist/types-B6B210gX.d.mts +0 -270
- package/dist/types-B6B210gX.d.ts +0 -270
- package/dist/types-Bdnte5EN.d.mts +0 -292
- package/dist/types-C_W_CoUD.d.ts +0 -99
- package/dist/types-Cs0CLvrH.d.mts +0 -70
- package/dist/types-Cs0CLvrH.d.ts +0 -70
- package/dist/types-DCRvasyH.d.mts +0 -99
- package/dist/types-HorDyIRv.d.mts +0 -303
- package/dist/types-HorDyIRv.d.ts +0 -303
- package/dist/types-_rFX1atk.d.ts +0 -292
- package/dist/types.legacy-J-j-_ig_.d.mts +0 -25
- package/dist/types.legacy-J-j-_ig_.d.ts +0 -25
- package/dist/universalExport/index.d.mts +0 -312
- package/dist/universalExport/index.d.ts +0 -312
- package/dist/universalExport/index.js +0 -178
- package/dist/universalExport/index.js.map +0 -1
- package/dist/universalExport/index.mjs +0 -5
- package/dist/universalExport/index.mjs.map +0 -1
- package/dist/universalExport/server/index.d.mts +0 -1270
- package/dist/universalExport/server/index.d.ts +0 -1270
- package/dist/universalExport/server/index.js +0 -123
- package/dist/universalExport/server/index.js.map +0 -1
- package/dist/universalExport/server/index.mjs +0 -6
- package/dist/universalExport/server/index.mjs.map +0 -1
- package/dist/universalFile/index.d.mts +0 -409
- package/dist/universalFile/index.d.ts +0 -409
- package/dist/universalFile/index.js +0 -1742
- package/dist/universalFile/index.js.map +0 -1
- package/dist/universalFile/index.mjs +0 -1497
- package/dist/universalFile/index.mjs.map +0 -1
- package/dist/universalFile/server/index.d.mts +0 -1064
- package/dist/universalFile/server/index.d.ts +0 -1064
- package/dist/universalFile/server/index.js +0 -311
- package/dist/universalFile/server/index.js.map +0 -1
- package/dist/universalFile/server/index.mjs +0 -10
- package/dist/universalFile/server/index.mjs.map +0 -1
- package/dist/utils/index.d.mts +0 -192
- package/dist/utils/index.d.ts +0 -192
- package/dist/utils/index.js +0 -46
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/index.mjs +0 -5
- package/dist/utils/index.mjs.map +0 -1
- package/dist/vocaloidBooth/index.d.mts +0 -64
- package/dist/vocaloidBooth/index.d.ts +0 -64
- package/dist/vocaloidBooth/index.js +0 -376
- package/dist/vocaloidBooth/index.js.map +0 -1
- package/dist/vocaloidBooth/index.mjs +0 -362
- package/dist/vocaloidBooth/index.mjs.map +0 -1
- package/dist/vocaloidBooth/server/index.d.mts +0 -111
- package/dist/vocaloidBooth/server/index.d.ts +0 -111
- package/dist/vocaloidBooth/server/index.js +0 -247
- package/dist/vocaloidBooth/server/index.js.map +0 -1
- package/dist/vocaloidBooth/server/index.mjs +0 -237
- package/dist/vocaloidBooth/server/index.mjs.map +0 -1
- package/dist/vocaloidBooth/web/index.d.mts +0 -3
- package/dist/vocaloidBooth/web/index.d.ts +0 -3
- package/dist/vocaloidBooth/web/index.js +0 -376
- package/dist/vocaloidBooth/web/index.js.map +0 -1
- package/dist/vocaloidBooth/web/index.mjs +0 -362
- package/dist/vocaloidBooth/web/index.mjs.map +0 -1
- /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
- /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
- /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
- /package/dist/{analytics → common/analytics}/index.js.map +0 -0
- /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
- /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
- /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
- /package/dist/{api → common/api}/index.js.map +0 -0
- /package/dist/{api → common/api}/index.mjs.map +0 -0
- /package/dist/{auth/client → common/components}/index.js.map +0 -0
- /package/dist/{auth/client → common/components}/index.mjs.map +0 -0
- /package/dist/{auth/components → common/config}/index.js.map +0 -0
- /package/dist/{auth/components → common/config}/index.mjs.map +0 -0
- /package/dist/{config → common/config}/server/index.d.mts +0 -0
- /package/dist/{config → common/config}/server/index.d.ts +0 -0
- /package/dist/{auth/hooks → common/i18n}/index.js.map +0 -0
- /package/dist/{auth/hooks → common/i18n}/index.mjs.map +0 -0
- /package/dist/{auth → common/imageCrop}/index.js.map +0 -0
- /package/dist/{auth → common/imageCrop}/index.mjs.map +0 -0
- /package/dist/{auth/schema → common/ossFile}/index.js.map +0 -0
- /package/dist/{auth/schema → common/ossFile}/index.mjs.map +0 -0
- /package/dist/{auth/services → common/ossFile/server}/index.js.map +0 -0
- /package/dist/{auth/services → common/ossFile/server}/index.mjs.map +0 -0
- /package/dist/{config → common/universalExport}/index.js.map +0 -0
- /package/dist/{config → common/universalExport}/index.mjs.map +0 -0
- /package/dist/{i18n → common/universalExport/server}/index.js.map +0 -0
- /package/dist/{i18n → common/universalExport/server}/index.mjs.map +0 -0
- /package/dist/{logger → common/universalFile/server}/index.js.map +0 -0
- /package/dist/{logger → common/universalFile/server}/index.mjs.map +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/auth/components/headless/SignInForm.tsx","../src/common/auth/components/headless/RegisterForm.tsx","../src/common/auth/components/headless/VerifyOtpForm.tsx","../src/common/auth/components/styled/modal-shared.tsx","../src/common/auth/components/styled/ForgotPasswordModal.tsx","../src/common/auth/components/styled/LoginModal.tsx","../src/common/auth/components/styled/RegisterModal.tsx","../src/common/auth/components/styled/AuthGuard.tsx","../src/common/auth/components/styled/UserMenu.tsx","../src/common/auth/components/LoginForm.tsx","../src/common/auth/components/RegisterForm.tsx","../src/common/auth/components/AdminLoginPage.tsx"],"names":["React","useState","X","Phone","Lock","EyeOff","Eye","Mail","User","useEffect"],"mappings":"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","file":"chunk-RWCD2CAD.mjs","sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { useAuthActions } from '../../hooks/useAuthActions';\nimport type { HeadlessSignInFormProps, SignInFormState } from '../types';\nimport { validateEmail, validatePassword, validatePhoneNumber } from '../utils';\n\nexport function SignInForm({\n authClient,\n initialMode = 'email-password',\n onSuccess,\n onError,\n children,\n}: HeadlessSignInFormProps) {\n const actions = useAuthActions(authClient);\n const [mode, setMode] = useState(initialMode);\n const [step, setStep] = useState<'credentials' | 'otp'>('credentials');\n const [email, setEmail] = useState('');\n const [phone, setPhone] = useState('');\n const [password, setPassword] = useState('');\n const [otp, setOtp] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fail = (message: string) => {\n setError(message);\n onError?.(message);\n };\n\n const sendOtp = async () => {\n setLoading(true);\n setError(null);\n try {\n if (mode === 'phone-otp') {\n if (!validatePhoneNumber(phone)) {\n fail('请输入正确的手机号');\n return;\n }\n const result = await actions.sendPhoneOtp(phone.trim());\n if (!result.success) {\n fail(result.error);\n return;\n }\n setStep('otp');\n } else if (mode === 'email-otp') {\n if (!validateEmail(email)) {\n fail('请输入正确的邮箱');\n return;\n }\n const result = await actions.sendEmailOtp(email.trim(), 'sign-in');\n if (!result.success) {\n fail(result.error);\n return;\n }\n setStep('otp');\n }\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e?: React.FormEvent) => {\n e?.preventDefault();\n setLoading(true);\n setError(null);\n\n try {\n if (mode === 'email-password') {\n if (!validateEmail(email)) return fail('请输入正确的邮箱');\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n const result = await actions.signInWithEmail(email.trim(), password);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (mode === 'phone-password') {\n if (!validatePhoneNumber(phone)) return fail('请输入正确的手机号');\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n const result = await actions.signInWithPhonePassword(phone.trim(), password);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (mode === 'phone-otp') {\n if (step === 'credentials') {\n await sendOtp();\n return;\n }\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n const result = await actions.verifyPhoneOtp(phone.trim(), otp);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (mode === 'email-otp') {\n if (step === 'credentials') {\n await sendOtp();\n return;\n }\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n const result = await actions.signInWithEmailOtp(email.trim(), otp);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n }\n } finally {\n setLoading(false);\n }\n };\n\n const state: SignInFormState = {\n mode,\n step,\n email,\n phone,\n password,\n otp,\n loading,\n error,\n setMode: (next) => {\n setMode(next);\n setStep('credentials');\n setError(null);\n },\n setEmail,\n setPhone,\n setPassword,\n setOtp,\n sendOtp,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { useAuthActions } from '../../hooks/useAuthActions';\nimport type { HeadlessRegisterFormProps, RegisterFormHeadlessState } from '../types';\nimport { validateEmail, validatePassword, validatePhoneNumber } from '../utils';\n\nexport function RegisterFormHeadless({\n authClient,\n initialChannel = 'email',\n onSuccess,\n onError,\n children,\n}: HeadlessRegisterFormProps) {\n const actions = useAuthActions(authClient);\n const [channel, setChannel] = useState<'email' | 'phone'>(initialChannel);\n const [step, setStep] = useState<'credentials' | 'otp'>('credentials');\n const [email, setEmail] = useState('');\n const [phone, setPhone] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [name, setName] = useState('');\n const [otp, setOtp] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fail = (message: string) => {\n setError(message);\n onError?.(message);\n };\n\n const sendOtp = async () => {\n setLoading(true);\n setError(null);\n try {\n if (!validatePhoneNumber(phone)) {\n fail('请输入正确的手机号');\n return;\n }\n const result = await actions.sendPhoneOtp(phone.trim());\n if (!result.success) {\n fail(result.error);\n return;\n }\n setStep('otp');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e?: React.FormEvent) => {\n e?.preventDefault();\n setLoading(true);\n setError(null);\n\n try {\n if (channel === 'email') {\n if (!validateEmail(email)) return fail('请输入正确的邮箱');\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n if (password !== confirmPassword) return fail('两次密码不一致');\n if (!name.trim()) return fail('请填写昵称');\n const result = await actions.signUpWithEmail(email.trim(), password, name.trim());\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (step === 'credentials') {\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n if (password !== confirmPassword) return fail('两次密码不一致');\n await sendOtp();\n return;\n }\n\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n const verify = await actions.verifyPhoneOtp(phone.trim(), otp);\n if (!verify.success) return fail(verify.error);\n onSuccess?.();\n } finally {\n setLoading(false);\n }\n };\n\n const state: RegisterFormHeadlessState = {\n channel,\n step,\n email,\n phone,\n password,\n confirmPassword,\n name,\n otp,\n loading,\n error,\n setChannel: (next) => {\n setChannel(next);\n setStep('credentials');\n setError(null);\n },\n setEmail,\n setPhone,\n setPassword,\n setConfirmPassword,\n setName,\n setOtp,\n sendOtp,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { useAuthActions } from '../../hooks/useAuthActions';\nimport type { HeadlessVerifyOtpFormProps, VerifyOtpFormState } from '../types';\nimport { validateEmail, validatePhoneNumber } from '../utils';\n\nexport function VerifyOtpForm({\n authClient,\n channel,\n target,\n onSuccess,\n onError,\n children,\n}: HeadlessVerifyOtpFormProps) {\n const actions = useAuthActions(authClient);\n const [otp, setOtp] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fail = (message: string) => {\n setError(message);\n onError?.(message);\n };\n\n const resendOtp = async () => {\n setLoading(true);\n setError(null);\n try {\n if (channel === 'phone') {\n if (!validatePhoneNumber(target)) return fail('手机号无效');\n const result = await actions.sendPhoneOtp(target.trim());\n if (!result.success) fail(result.error);\n } else {\n if (!validateEmail(target)) return fail('邮箱无效');\n const result = await actions.sendEmailOtp(target.trim(), 'sign-in');\n if (!result.success) fail(result.error);\n }\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e?: React.FormEvent) => {\n e?.preventDefault();\n setLoading(true);\n setError(null);\n try {\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n if (channel === 'phone') {\n const result = await actions.verifyPhoneOtp(target.trim(), otp);\n if (!result.success) return fail(result.error);\n } else {\n const result = await actions.signInWithEmailOtp(target.trim(), otp);\n if (!result.success) return fail(result.error);\n }\n onSuccess?.();\n } finally {\n setLoading(false);\n }\n };\n\n const state: VerifyOtpFormState = {\n channel,\n target,\n otp,\n loading,\n error,\n setOtp,\n resendOtp,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nconst overlayClass =\n 'fixed top-0 left-0 right-0 bottom-0 w-screen h-screen bg-black/50 backdrop-blur-sm flex items-center justify-center z-[9999] p-4';\nconst panelClass =\n 'bg-white rounded-2xl shadow-xl w-full max-w-[420px] max-h-[90vh] overflow-y-auto relative';\nconst closeBtnClass =\n 'absolute top-5 right-5 bg-transparent border-none text-gray-500 cursor-pointer p-2 rounded-lg transition-all hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 min-w-9 min-h-9 flex items-center justify-center';\nconst inputClass =\n 'w-full py-3 px-4 pl-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed';\nconst submitClass =\n 'w-full bg-blue-500 text-white border-none py-3.5 px-6 rounded-lg text-base font-medium cursor-pointer transition-all mt-2 min-h-[52px] hover:bg-blue-600 hover:-translate-y-0.5 hover:shadow-lg hover:shadow-blue-500/30 active:translate-y-0 disabled:bg-gray-400 disabled:cursor-not-allowed disabled:transform-none disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-blue-700 focus:ring-offset-2';\nconst errorClass =\n 'text-red-500 text-sm my-4 p-3 bg-red-50 border border-red-200 rounded-lg leading-relaxed';\nconst linkBtnClass =\n 'bg-transparent border-none text-blue-500 cursor-pointer text-sm font-medium underline px-1 py-0.5 rounded transition-all hover:text-blue-600 hover:bg-blue-50 hover:no-underline focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2';\n\nexport function useClientMounted() {\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n return mounted;\n}\n\nexport function AuthModalPortal({ children }: { children: React.ReactNode }) {\n const mounted = useClientMounted();\n if (!mounted) return null;\n return createPortal(children, document.body);\n}\n\nexport const authModalStyles = {\n overlayClass,\n panelClass,\n closeBtnClass,\n inputClass,\n submitClass,\n errorClass,\n linkBtnClass,\n};\n","'use client';\n\nimport React, { useState } from 'react';\nimport { X, Phone, Lock, Eye, EyeOff } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport type { ForgotPasswordModalProps } from '../types';\nimport { validatePassword, validatePhoneNumber } from '../utils';\nimport { AuthModalPortal, authModalStyles } from './modal-shared';\n\nexport function ForgotPasswordModal({ isOpen, onClose, onSuccess }: ForgotPasswordModalProps) {\n const { requestPhonePasswordReset, resetPhonePassword } = useAuthContext();\n const [phone, setPhone] = useState('');\n const [otp, setOtp] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [countdown, setCountdown] = useState(0);\n\n const startCountdown = () => {\n setCountdown(60);\n const timer = setInterval(() => {\n setCountdown((prev) => {\n if (prev <= 1) {\n clearInterval(timer);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n };\n\n const handleSendCode = async () => {\n setError('');\n if (!validatePhoneNumber(phone)) {\n setError('请输入正确的手机号');\n return;\n }\n setLoading(true);\n try {\n const result = await requestPhonePasswordReset(phone.trim());\n if (!result.success) {\n setError(result.error);\n return;\n }\n startCountdown();\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n if (!validatePhoneNumber(phone)) return setError('请输入正确的手机号');\n const pwd = validatePassword(newPassword);\n if (!pwd.valid) return setError(pwd.message ?? '密码无效');\n if (newPassword !== confirmPassword) return setError('两次密码不一致');\n if (!/^\\d{4,8}$/.test(otp)) return setError('请输入验证码');\n\n setLoading(true);\n try {\n const result = await resetPhonePassword(phone.trim(), otp, newPassword);\n if (!result.success) {\n setError(result.error);\n return;\n }\n onSuccess?.();\n } finally {\n setLoading(false);\n }\n };\n\n if (!isOpen) return null;\n\n return (\n <AuthModalPortal>\n <div className={authModalStyles.overlayClass} style={{ margin: 0 }} onClick={(e) => e.target === e.currentTarget && onClose()}>\n <div className={authModalStyles.panelClass} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className={authModalStyles.closeBtnClass} onClick={onClose}>\n <X size={20} />\n </button>\n\n <div className=\"px-6 pt-6 pb-4 text-center border-b border-gray-100\">\n <h2 className=\"text-2xl font-semibold text-gray-800 mb-2\">重置密码</h2>\n <p className=\"text-gray-500 text-sm\">请输入手机号和验证码重置密码</p>\n </div>\n\n <form onSubmit={handleSubmit} className=\"p-6\">\n <div className=\"mb-5\">\n <label htmlFor=\"reset-phone\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 手机号\n </label>\n <div className=\"relative flex items-center\">\n <Phone size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"reset-phone\"\n type=\"tel\"\n value={phone}\n onChange={(e) => setPhone(e.target.value)}\n placeholder=\"请输入手机号\"\n className={authModalStyles.inputClass}\n disabled={loading}\n />\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"reset-otp\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 验证码\n </label>\n <div className=\"relative flex items-center\">\n <input\n id=\"reset-otp\"\n type=\"text\"\n inputMode=\"numeric\"\n value={otp}\n onChange={(e) => setOtp(e.target.value)}\n placeholder=\"请输入验证码\"\n className=\"w-full py-3 px-4 pr-28 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10\"\n disabled={loading}\n maxLength={8}\n />\n <button\n type=\"button\"\n className=\"absolute right-2 top-1/2 -translate-y-1/2 bg-transparent border-none text-blue-500 text-sm font-medium cursor-pointer px-2 py-1 rounded transition-all whitespace-nowrap hover:bg-blue-50 disabled:text-gray-400 disabled:cursor-not-allowed\"\n onClick={handleSendCode}\n disabled={loading || countdown > 0}\n >\n {countdown > 0 ? `${countdown}秒后重试` : '发送验证码'}\n </button>\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"reset-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 新密码\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"reset-password\"\n type={showPassword ? 'text' : 'password'}\n value={newPassword}\n onChange={(e) => setNewPassword(e.target.value)}\n placeholder=\"请输入新密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={loading}\n >\n {showPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"reset-confirm-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 确认密码\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"reset-confirm-password\"\n type={showConfirmPassword ? 'text' : 'password'}\n value={confirmPassword}\n onChange={(e) => setConfirmPassword(e.target.value)}\n placeholder=\"请再次输入新密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowConfirmPassword((v) => !v)}\n disabled={loading}\n >\n {showConfirmPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n\n {error && <div className={authModalStyles.errorClass}>{error}</div>}\n\n <button type=\"submit\" className={authModalStyles.submitClass} disabled={loading}>\n {loading ? '提交中...' : '重置密码'}\n </button>\n </form>\n </div>\n </div>\n </AuthModalPortal>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { X, User, Lock, Eye, EyeOff, Mail, Phone } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport { SignInForm } from '../headless/SignInForm';\nimport type { LoginModalProps, SignInMode } from '../types';\nimport { AuthModalPortal, authModalStyles } from './modal-shared';\nimport { ForgotPasswordModal } from './ForgotPasswordModal';\n\nconst MODE_LABELS: Record<SignInMode, string> = {\n 'phone-password': '手机密码',\n 'email-password': '邮箱密码',\n 'phone-otp': '手机验证码',\n 'email-otp': '邮箱验证码',\n};\n\nexport function LoginModal({\n isOpen,\n onClose,\n onSuccess,\n onSwitchToRegister,\n defaultMode = 'phone-password',\n}: LoginModalProps) {\n const { authClient, refreshSession } = useAuthContext();\n const [showPassword, setShowPassword] = useState(false);\n const [showForgotPassword, setShowForgotPassword] = useState(false);\n\n const handleSuccess = async () => {\n await refreshSession();\n onSuccess?.();\n };\n\n if (!isOpen) return null;\n\n return (\n <AuthModalPortal>\n <div className={authModalStyles.overlayClass} style={{ margin: 0 }} onClick={(e) => e.target === e.currentTarget && onClose()}>\n <SignInForm authClient={authClient} initialMode={defaultMode} onSuccess={handleSuccess}>\n {(state) => (\n <div className={authModalStyles.panelClass} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className={authModalStyles.closeBtnClass} onClick={onClose}>\n <X size={20} />\n </button>\n\n <div className=\"px-6 pt-6 pb-4 text-center border-b border-gray-100\">\n <h2 className=\"text-2xl font-semibold text-gray-800 mb-2\">用户登录</h2>\n <p className=\"text-gray-500 text-sm\">选择登录方式并填写信息</p>\n </div>\n\n <div className=\"px-6 pt-4 flex flex-wrap gap-2\">\n {(Object.keys(MODE_LABELS) as SignInMode[]).map((mode) => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => state.setMode(mode)}\n className={`px-3 py-1.5 text-xs rounded-full border transition-all ${\n state.mode === mode\n ? 'bg-blue-500 text-white border-blue-500'\n : 'bg-white text-gray-600 border-gray-200 hover:border-blue-300'\n }`}\n >\n {MODE_LABELS[mode]}\n </button>\n ))}\n </div>\n\n <form onSubmit={state.handleSubmit} className=\"p-6\">\n {(state.mode === 'email-password' || state.mode === 'email-otp') && state.step === 'credentials' && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-email\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 邮箱\n </label>\n <div className=\"relative flex items-center\">\n <Mail size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-email\"\n type=\"email\"\n autoComplete=\"email\"\n value={state.email}\n onChange={(e) => state.setEmail(e.target.value)}\n placeholder=\"请输入邮箱\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {(state.mode === 'phone-password' || state.mode === 'phone-otp') && state.step === 'credentials' && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-phone\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 手机号\n </label>\n <div className=\"relative flex items-center\">\n <Phone size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n value={state.phone}\n onChange={(e) => state.setPhone(e.target.value)}\n placeholder=\"请输入手机号\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {(state.mode === 'email-password' || state.mode === 'phone-password') && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 密码\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-password\"\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n value={state.password}\n onChange={(e) => state.setPassword(e.target.value)}\n placeholder=\"请输入密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={state.loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={state.loading}\n >\n {showPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n )}\n\n {(state.mode === 'phone-otp' || state.mode === 'email-otp') && state.step === 'otp' && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-otp\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 验证码\n </label>\n <div className=\"relative flex items-center\">\n <User size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-otp\"\n type=\"text\"\n inputMode=\"numeric\"\n value={state.otp}\n onChange={(e) => state.setOtp(e.target.value)}\n placeholder=\"请输入验证码\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n maxLength={8}\n />\n </div>\n </div>\n )}\n\n {(state.mode === 'phone-password' || state.mode === 'phone-otp') && state.step === 'credentials' && (\n <div className=\"text-right -mt-2 mb-4\">\n <button type=\"button\" onClick={() => setShowForgotPassword(true)} className={authModalStyles.linkBtnClass}>\n 忘记密码?\n </button>\n </div>\n )}\n\n {state.error && <div className={authModalStyles.errorClass}>{state.error}</div>}\n\n <button type=\"submit\" className={authModalStyles.submitClass} disabled={state.loading}>\n {state.loading\n ? '处理中...'\n : state.step === 'otp'\n ? '验证并登录'\n : state.mode === 'phone-otp' || state.mode === 'email-otp'\n ? '发送验证码'\n : '登录'}\n </button>\n\n {onSwitchToRegister && (\n <div className=\"text-center mt-5 pt-4 border-t border-gray-100\">\n <span className=\"text-gray-500 text-sm mr-1\">还没有账号?</span>\n <button type=\"button\" onClick={onSwitchToRegister} className={authModalStyles.linkBtnClass}>\n 立即注册\n </button>\n </div>\n )}\n </form>\n </div>\n )}\n </SignInForm>\n </div>\n\n <ForgotPasswordModal\n isOpen={showForgotPassword}\n onClose={() => setShowForgotPassword(false)}\n onSuccess={() => {\n setShowForgotPassword(false);\n handleSuccess();\n }}\n />\n </AuthModalPortal>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { X, User, Lock, Phone, Mail, Eye, EyeOff } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport { RegisterFormHeadless } from '../headless/RegisterForm';\nimport type { RegisterModalProps } from '../types';\nimport { AuthModalPortal, authModalStyles } from './modal-shared';\n\nexport function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }: RegisterModalProps) {\n const { authClient, refreshSession } = useAuthContext();\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n\n const handleSuccess = async () => {\n await refreshSession();\n onSuccess?.();\n };\n\n if (!isOpen) return null;\n\n return (\n <AuthModalPortal>\n <div className={authModalStyles.overlayClass} style={{ margin: 0 }} onClick={(e) => e.target === e.currentTarget && onClose()}>\n <RegisterFormHeadless authClient={authClient} initialChannel=\"phone\" onSuccess={handleSuccess}>\n {(state) => (\n <div className={authModalStyles.panelClass} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className={authModalStyles.closeBtnClass} onClick={onClose}>\n <X size={20} />\n </button>\n\n <div className=\"px-6 pt-6 pb-4 text-center border-b border-gray-100\">\n <h2 className=\"text-2xl font-semibold text-gray-800 mb-2\">用户注册</h2>\n <p className=\"text-gray-500 text-sm\">请填写以下信息创建账户</p>\n </div>\n\n <div className=\"px-6 pt-4 flex gap-2\">\n <button\n type=\"button\"\n onClick={() => state.setChannel('phone')}\n className={`px-3 py-1.5 text-xs rounded-full border transition-all ${\n state.channel === 'phone'\n ? 'bg-blue-500 text-white border-blue-500'\n : 'bg-white text-gray-600 border-gray-200 hover:border-blue-300'\n }`}\n >\n 手机号注册\n </button>\n <button\n type=\"button\"\n onClick={() => state.setChannel('email')}\n className={`px-3 py-1.5 text-xs rounded-full border transition-all ${\n state.channel === 'email'\n ? 'bg-blue-500 text-white border-blue-500'\n : 'bg-white text-gray-600 border-gray-200 hover:border-blue-300'\n }`}\n >\n 邮箱注册\n </button>\n </div>\n\n <form onSubmit={state.handleSubmit} className=\"p-6\">\n {state.channel === 'email' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-email\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 邮箱 *\n </label>\n <div className=\"relative flex items-center\">\n <Mail size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-email\"\n type=\"email\"\n autoComplete=\"email\"\n value={state.email}\n onChange={(e) => state.setEmail(e.target.value)}\n placeholder=\"请输入邮箱\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {state.channel === 'phone' && state.step === 'credentials' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-phone\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 手机号 *\n </label>\n <div className=\"relative flex items-center\">\n <Phone size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n value={state.phone}\n onChange={(e) => state.setPhone(e.target.value)}\n placeholder=\"请输入手机号\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {state.channel === 'email' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-name\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 昵称 *\n </label>\n <div className=\"relative flex items-center\">\n <User size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-name\"\n type=\"text\"\n autoComplete=\"name\"\n value={state.name}\n onChange={(e) => state.setName(e.target.value)}\n placeholder=\"请输入昵称\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {state.step === 'credentials' && (\n <>\n <div className=\"mb-5\">\n <label htmlFor=\"register-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 密码 *\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-password\"\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"new-password\"\n value={state.password}\n onChange={(e) => state.setPassword(e.target.value)}\n placeholder=\"请输入密码(至少6位)\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={state.loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={state.loading}\n >\n {showPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"register-confirm-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 确认密码 *\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-confirm-password\"\n type={showConfirmPassword ? 'text' : 'password'}\n autoComplete=\"new-password\"\n value={state.confirmPassword}\n onChange={(e) => state.setConfirmPassword(e.target.value)}\n placeholder=\"请再次输入密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={state.loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowConfirmPassword((v) => !v)}\n disabled={state.loading}\n >\n {showConfirmPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n </>\n )}\n\n {state.channel === 'phone' && state.step === 'otp' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-otp\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 验证码 *\n </label>\n <input\n id=\"register-otp\"\n type=\"text\"\n inputMode=\"numeric\"\n value={state.otp}\n onChange={(e) => state.setOtp(e.target.value)}\n placeholder=\"请输入验证码\"\n className=\"w-full py-3 px-4 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10\"\n disabled={state.loading}\n maxLength={8}\n />\n </div>\n )}\n\n {state.error && <div className={authModalStyles.errorClass}>{state.error}</div>}\n\n <button type=\"submit\" className={authModalStyles.submitClass} disabled={state.loading}>\n {state.loading\n ? '处理中...'\n : state.channel === 'phone' && state.step === 'credentials'\n ? '发送验证码'\n : state.channel === 'phone' && state.step === 'otp'\n ? '完成注册'\n : '注册'}\n </button>\n\n {onSwitchToLogin && (\n <div className=\"text-center mt-5 pt-4 border-t border-gray-100\">\n <span className=\"text-gray-500 text-sm mr-1\">已有账号?</span>\n <button type=\"button\" onClick={onSwitchToLogin} className={authModalStyles.linkBtnClass}>\n 立即登录\n </button>\n </div>\n )}\n </form>\n </div>\n )}\n </RegisterFormHeadless>\n </div>\n </AuthModalPortal>\n );\n}\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport type { AuthGuardProps } from '../types';\nimport { LoginModal } from './LoginModal';\n\nexport function AuthGuard({ children, fallback, requireAuth = true }: AuthGuardProps) {\n const { isAuthenticated, loading, refreshSession } = useAuthContext();\n const [showLoginModal, setShowLoginModal] = useState(false);\n\n useEffect(() => {\n if (!loading && requireAuth && !isAuthenticated) {\n setShowLoginModal(true);\n }\n }, [loading, requireAuth, isAuthenticated]);\n\n const handleLoginSuccess = async () => {\n await refreshSession();\n setShowLoginModal(false);\n };\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center min-h-[200px] text-gray-500 flex-col gap-3\">\n <div className=\"w-8 h-8 border-[3px] border-gray-200 border-t-blue-500 rounded-full animate-spin\" />\n <div>验证登录状态...</div>\n </div>\n );\n }\n\n if (requireAuth && !isAuthenticated) {\n return (\n <>\n {fallback ?? (\n <div className=\"flex items-center justify-center min-h-[200px] text-gray-500 flex-col gap-4 p-6 text-center\">\n <div className=\"text-5xl opacity-50\">🔒</div>\n <div className=\"text-lg font-medium\">请先登录以访问此页面</div>\n <div className=\"text-sm opacity-70\">登录后即可查看相关内容</div>\n </div>\n )}\n <LoginModal isOpen={showLoginModal} onClose={() => setShowLoginModal(false)} onSuccess={handleLoginSuccess} />\n </>\n );\n }\n\n return <>{children}</>;\n}\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { LogOut, LogIn, User } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport type { UserMenuProps } from '../types';\nimport { LoginModal } from './LoginModal';\nimport { RegisterModal } from './RegisterModal';\n\nexport function UserMenu({ customMenuItems = [], className }: UserMenuProps) {\n const { user, isAuthenticated, signOut, refreshSession } = useAuthContext();\n const [isOpen, setIsOpen] = useState(false);\n const [showLoginModal, setShowLoginModal] = useState(false);\n const [showRegisterModal, setShowRegisterModal] = useState(false);\n\n useEffect(() => {\n const handleGlobalClick = () => setIsOpen(false);\n if (isOpen) document.addEventListener('click', handleGlobalClick);\n return () => document.removeEventListener('click', handleGlobalClick);\n }, [isOpen]);\n\n const visibleCustomMenuItems = customMenuItems.filter((item) => {\n if (item.requireAuth === true) return isAuthenticated;\n if (item.requireAuth === false) return !isAuthenticated;\n return true;\n });\n\n const handleAuthSuccess = async () => {\n await refreshSession();\n setShowLoginModal(false);\n setShowRegisterModal(false);\n };\n\n const displayName = user?.name || user?.phoneNumber || user?.email || '用户';\n\n return (\n <div className={`relative inline-block ${className ?? ''}`}>\n <button\n type=\"button\"\n className=\"flex items-center gap-2 px-3 py-2 bg-slate-50 text-slate-500 border border-slate-200 rounded-lg cursor-pointer transition-all min-w-11 min-h-11 text-sm font-medium hover:bg-slate-200 hover:text-slate-800 focus:outline-none focus:ring-2 focus:ring-blue-500/10\"\n onClick={() => setIsOpen((v) => !v)}\n >\n <User size={24} />\n {isAuthenticated && user && (\n <span className=\"max-w-[120px] overflow-hidden text-ellipsis whitespace-nowrap\">{displayName}</span>\n )}\n </button>\n\n {isOpen && (\n <div\n className=\"absolute top-[calc(100%+0.5rem)] right-0 z-[1000] min-w-[200px] bg-white border border-slate-200 rounded-xl shadow-lg max-h-[90vh] overflow-y-auto p-2\"\n onClick={(e) => e.stopPropagation()}\n >\n {isAuthenticated && user ? (\n <>\n <div className=\"p-3 mb-2 bg-slate-50 rounded-lg\">\n <div className=\"text-sm font-semibold text-slate-800 mb-1 overflow-hidden text-ellipsis whitespace-nowrap\">\n {user.name || '未设置名称'}\n </div>\n <div className=\"text-xs text-slate-500 mb-1 overflow-hidden text-ellipsis whitespace-nowrap\">\n {user.phoneNumber || user.email}\n </div>\n {user.role && (\n <div className=\"text-xs text-blue-500 font-medium\">{user.role === 'admin' ? '管理员' : '普通用户'}</div>\n )}\n </div>\n\n {visibleCustomMenuItems.length > 0 && (\n <>\n <div className=\"h-px bg-slate-200 my-2\" />\n {visibleCustomMenuItems.map((item) => {\n const IconComponent = item.icon;\n return (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n item.onClick();\n setIsOpen(false);\n }}\n >\n {IconComponent && <IconComponent size={16} />}\n <span>{item.label}</span>\n </button>\n );\n })}\n </>\n )}\n\n <div className=\"h-px bg-slate-200 my-2\" />\n <button\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-red-50 hover:text-red-600\"\n onClick={async () => {\n await signOut();\n setIsOpen(false);\n }}\n >\n <LogOut size={16} />\n <span>退出登录</span>\n </button>\n </>\n ) : (\n <>\n <button\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n setShowLoginModal(true);\n setIsOpen(false);\n }}\n >\n <LogIn size={16} />\n <span>登录</span>\n </button>\n <button\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n setShowRegisterModal(true);\n setIsOpen(false);\n }}\n >\n <User size={16} />\n <span>注册</span>\n </button>\n\n {visibleCustomMenuItems.length > 0 && (\n <>\n <div className=\"h-px bg-slate-200 my-2\" />\n {visibleCustomMenuItems.map((item) => {\n const IconComponent = item.icon;\n return (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n item.onClick();\n setIsOpen(false);\n }}\n >\n {IconComponent && <IconComponent size={16} />}\n <span>{item.label}</span>\n </button>\n );\n })}\n </>\n )}\n </>\n )}\n </div>\n )}\n\n <LoginModal\n isOpen={showLoginModal}\n onClose={() => setShowLoginModal(false)}\n onSuccess={handleAuthSuccess}\n onSwitchToRegister={() => {\n setShowLoginModal(false);\n setShowRegisterModal(true);\n }}\n />\n\n <RegisterModal\n isOpen={showRegisterModal}\n onClose={() => setShowRegisterModal(false)}\n onSuccess={handleAuthSuccess}\n onSwitchToLogin={() => {\n setShowRegisterModal(false);\n setShowLoginModal(true);\n }}\n />\n </div>\n );\n}\n","/**\n * Auth Components - LoginForm (Headless)\n * 无样式的登录表单组件\n */\n\nimport React, { useState } from 'react';\nimport { useAuth } from '../hooks';\nimport type { BaseApiClient } from '../client/base-api-client';\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 onSuccess?.((apiClient as BaseApiClient).getUser());\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 { BaseApiClient } from '../client/base-api-client';\nimport type { HeadlessRegisterFormPropsLegacy, 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}: HeadlessRegisterFormPropsLegacy) {\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 onSuccess?.((apiClient as BaseApiClient).getUser());\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"]}
|
package/dist/chunk-S37OK2QG.js
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
// src/common/auth/client/types.ts
|
|
4
|
-
var STORAGE_KEYS = {
|
|
5
|
-
AUTH_TOKEN: "auth_token",
|
|
6
|
-
USER_DATA: "user_data"
|
|
7
|
-
};
|
|
8
|
-
var API_ROUTES = {
|
|
9
|
-
AUTH: {
|
|
10
|
-
LOGIN: "/auth/login",
|
|
11
|
-
REGISTER: "/auth/register",
|
|
12
|
-
LOGOUT: "/auth/logout",
|
|
13
|
-
ME: "/auth/me"
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
// src/common/auth/client/base-api-client.ts
|
|
18
|
-
var BaseApiClient = class {
|
|
19
|
-
constructor(storage, request, baseUrl) {
|
|
20
|
-
this.storage = storage;
|
|
21
|
-
this.request = request;
|
|
22
|
-
this.baseUrl = baseUrl;
|
|
23
|
-
this.token = null;
|
|
24
|
-
this.user = null;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* 初始化 - 从存储中加载 token 和用户信息
|
|
28
|
-
*/
|
|
29
|
-
async init() {
|
|
30
|
-
try {
|
|
31
|
-
this.token = await this.storage.getItem(STORAGE_KEYS.AUTH_TOKEN);
|
|
32
|
-
const userData = await this.storage.getItem(STORAGE_KEYS.USER_DATA);
|
|
33
|
-
if (userData) {
|
|
34
|
-
this.user = JSON.parse(userData);
|
|
35
|
-
}
|
|
36
|
-
} catch (error) {
|
|
37
|
-
console.error("Failed to load auth data:", error);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* 设置认证 token
|
|
42
|
-
*/
|
|
43
|
-
async setToken(token) {
|
|
44
|
-
this.token = token;
|
|
45
|
-
if (token) {
|
|
46
|
-
await this.storage.setItem(STORAGE_KEYS.AUTH_TOKEN, token);
|
|
47
|
-
} else {
|
|
48
|
-
await this.storage.removeItem(STORAGE_KEYS.AUTH_TOKEN);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* 设置用户信息
|
|
53
|
-
*/
|
|
54
|
-
async setUser(user) {
|
|
55
|
-
this.user = user;
|
|
56
|
-
if (user) {
|
|
57
|
-
await this.storage.setItem(STORAGE_KEYS.USER_DATA, JSON.stringify(user));
|
|
58
|
-
} else {
|
|
59
|
-
await this.storage.removeItem(STORAGE_KEYS.USER_DATA);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* 获取当前 token
|
|
64
|
-
*/
|
|
65
|
-
getToken() {
|
|
66
|
-
return this.token;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* 获取当前用户
|
|
70
|
-
*/
|
|
71
|
-
getUser() {
|
|
72
|
-
return this.user;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* 检查是否已登录
|
|
76
|
-
*/
|
|
77
|
-
async isAuthenticated() {
|
|
78
|
-
return !!this.token;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* 清除用户数据
|
|
82
|
-
*/
|
|
83
|
-
async clearUserData() {
|
|
84
|
-
await this.storage.removeItem(STORAGE_KEYS.AUTH_TOKEN);
|
|
85
|
-
await this.storage.removeItem(STORAGE_KEYS.USER_DATA);
|
|
86
|
-
this.token = null;
|
|
87
|
-
this.user = null;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* 发送请求的通用方法
|
|
91
|
-
*/
|
|
92
|
-
async sendRequest(config) {
|
|
93
|
-
try {
|
|
94
|
-
const headers = {
|
|
95
|
-
"Content-Type": "application/json",
|
|
96
|
-
...config.headers || {}
|
|
97
|
-
};
|
|
98
|
-
if (this.token) {
|
|
99
|
-
headers["Authorization"] = "Bearer " + this.token;
|
|
100
|
-
}
|
|
101
|
-
const response = await this.request.request({
|
|
102
|
-
...config,
|
|
103
|
-
url: this.baseUrl + config.url,
|
|
104
|
-
headers
|
|
105
|
-
});
|
|
106
|
-
return response;
|
|
107
|
-
} catch (error) {
|
|
108
|
-
console.error("API request error:", error);
|
|
109
|
-
return {
|
|
110
|
-
success: false,
|
|
111
|
-
error: error instanceof Error ? error.message : "\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5"
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// ==================== 认证相关 API ====================
|
|
116
|
-
/**
|
|
117
|
-
* 用户注册
|
|
118
|
-
*/
|
|
119
|
-
async register(email, password, username) {
|
|
120
|
-
const response = await this.sendRequest({
|
|
121
|
-
url: API_ROUTES.AUTH.REGISTER,
|
|
122
|
-
method: "POST",
|
|
123
|
-
body: { email, password, username }
|
|
124
|
-
});
|
|
125
|
-
if (response.success && response.data) {
|
|
126
|
-
await this.setToken(response.data.token);
|
|
127
|
-
await this.setUser(response.data.user);
|
|
128
|
-
}
|
|
129
|
-
return response;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* 用户登录
|
|
133
|
-
*/
|
|
134
|
-
async login(email, password) {
|
|
135
|
-
const response = await this.sendRequest({
|
|
136
|
-
url: API_ROUTES.AUTH.LOGIN,
|
|
137
|
-
method: "POST",
|
|
138
|
-
body: { email, password }
|
|
139
|
-
});
|
|
140
|
-
if (response.success && response.data) {
|
|
141
|
-
await this.setToken(response.data.token);
|
|
142
|
-
await this.setUser(response.data.user);
|
|
143
|
-
if (typeof window !== "undefined") {
|
|
144
|
-
window.dispatchEvent(
|
|
145
|
-
new CustomEvent("user_login_success", {
|
|
146
|
-
detail: {
|
|
147
|
-
userId: response.data.user.id,
|
|
148
|
-
email: response.data.user.email,
|
|
149
|
-
role: response.data.user.role
|
|
150
|
-
}
|
|
151
|
-
})
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return response;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* 用户退出登录
|
|
159
|
-
*/
|
|
160
|
-
async logout() {
|
|
161
|
-
await this.sendRequest({
|
|
162
|
-
url: API_ROUTES.AUTH.LOGOUT,
|
|
163
|
-
method: "POST"
|
|
164
|
-
});
|
|
165
|
-
await this.clearUserData();
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* 获取当前用户信息
|
|
169
|
-
*/
|
|
170
|
-
async getCurrentUser() {
|
|
171
|
-
const response = await this.sendRequest({
|
|
172
|
-
url: API_ROUTES.AUTH.ME,
|
|
173
|
-
method: "GET"
|
|
174
|
-
});
|
|
175
|
-
if (response.success && response.data) {
|
|
176
|
-
const userData = response.data.user || response.data;
|
|
177
|
-
await this.setUser(userData);
|
|
178
|
-
return {
|
|
179
|
-
...response,
|
|
180
|
-
data: userData
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
return response;
|
|
184
|
-
}
|
|
185
|
-
// ==================== 通用方法 ====================
|
|
186
|
-
/**
|
|
187
|
-
* 发送 GET 请求
|
|
188
|
-
*/
|
|
189
|
-
async get(url, params) {
|
|
190
|
-
return this.sendRequest({ url, method: "GET", params });
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* 发送 POST 请求
|
|
194
|
-
*/
|
|
195
|
-
async post(url, body) {
|
|
196
|
-
return this.sendRequest({ url, method: "POST", body });
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* 发送 PUT 请求
|
|
200
|
-
*/
|
|
201
|
-
async put(url, body) {
|
|
202
|
-
return this.sendRequest({ url, method: "PUT", body });
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* 发送 DELETE 请求
|
|
206
|
-
*/
|
|
207
|
-
async delete(url) {
|
|
208
|
-
return this.sendRequest({ url, method: "DELETE" });
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
exports.API_ROUTES = API_ROUTES;
|
|
213
|
-
exports.BaseApiClient = BaseApiClient;
|
|
214
|
-
exports.STORAGE_KEYS = STORAGE_KEYS;
|
|
215
|
-
//# sourceMappingURL=chunk-S37OK2QG.js.map
|
|
216
|
-
//# sourceMappingURL=chunk-S37OK2QG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/auth/client/types.ts","../src/common/auth/client/base-api-client.ts"],"names":[],"mappings":"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","file":"chunk-S37OK2QG.js","sourcesContent":["/**\n * Auth Client - Types\n * API 客户端类型定义\n */\n\nimport type { UserRole, User, ApiResponse, AuthResponse } from '../types';\n\nexport type { UserRole, User, ApiResponse, AuthResponse };\n\n/**\n * 存储键名\n */\nexport const STORAGE_KEYS = {\n AUTH_TOKEN: 'auth_token',\n USER_DATA: 'user_data',\n} as const;\n\n/**\n * API 路由\n */\nexport const API_ROUTES = {\n AUTH: {\n LOGIN: '/auth/login',\n REGISTER: '/auth/register',\n LOGOUT: '/auth/logout',\n ME: '/auth/me',\n },\n} as const;\n\n","/**\n * Auth Client - Base API Client\n * 基础 API 客户端\n */\n\nimport type { StorageAdapter } from '../../storage';\nimport type { RequestAdapter, RequestConfig } from '../../request';\nimport { API_ROUTES, STORAGE_KEYS, type ApiResponse, type User, type AuthResponse } from './types';\nimport type { IAuthClient } from '../types';\n\n/**\n * 基础 API 客户端\n * 提供统一的 API 调用逻辑,通过适配器模式支持多平台\n *\n * @example\n * ```typescript\n * import { BaseApiClient } from '@qhr123/sa2kit/common/auth/client';\n * import { WebStorageAdapter } from '@qhr123/sa2kit/storage';\n * import { WebRequestAdapter } from '@qhr123/sa2kit/request';\n *\n * const apiClient = new BaseApiClient(\n * new WebStorageAdapter(),\n * new WebRequestAdapter(),\n * '/api'\n * );\n *\n * await apiClient.init();\n * const result = await apiClient.login('user@example.com', 'password');\n * ```\n */\nexport class BaseApiClient implements IAuthClient {\n private token: string | null = null;\n private user: User | null = null;\n\n constructor(\n private storage: StorageAdapter,\n private request: RequestAdapter,\n private baseUrl: string\n ) {}\n\n /**\n * 初始化 - 从存储中加载 token 和用户信息\n */\n async init(): Promise<void> {\n try {\n this.token = await this.storage.getItem(STORAGE_KEYS.AUTH_TOKEN);\n const userData = await this.storage.getItem(STORAGE_KEYS.USER_DATA);\n if (userData) {\n this.user = JSON.parse(userData);\n }\n } catch (error) {\n console.error('Failed to load auth data:', error);\n }\n }\n\n /**\n * 设置认证 token\n */\n async setToken(token: string | null): Promise<void> {\n this.token = token;\n if (token) {\n await this.storage.setItem(STORAGE_KEYS.AUTH_TOKEN, token);\n } else {\n await this.storage.removeItem(STORAGE_KEYS.AUTH_TOKEN);\n }\n }\n\n /**\n * 设置用户信息\n */\n async setUser(user: User | null): Promise<void> {\n this.user = user;\n if (user) {\n await this.storage.setItem(STORAGE_KEYS.USER_DATA, JSON.stringify(user));\n } else {\n await this.storage.removeItem(STORAGE_KEYS.USER_DATA);\n }\n }\n\n /**\n * 获取当前 token\n */\n getToken(): string | null {\n return this.token;\n }\n\n /**\n * 获取当前用户\n */\n getUser(): User | null {\n return this.user;\n }\n\n /**\n * 检查是否已登录\n */\n async isAuthenticated(): Promise<boolean> {\n return !!this.token;\n }\n\n /**\n * 清除用户数据\n */\n async clearUserData(): Promise<void> {\n await this.storage.removeItem(STORAGE_KEYS.AUTH_TOKEN);\n await this.storage.removeItem(STORAGE_KEYS.USER_DATA);\n this.token = null;\n this.user = null;\n }\n\n /**\n * 发送请求的通用方法\n */\n private async sendRequest<T = any>(config: RequestConfig): Promise<ApiResponse<T>> {\n try {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...(config.headers || {}),\n };\n\n // 添加认证 token\n if (this.token) {\n headers['Authorization'] = 'Bearer ' + (this.token);\n }\n\n const response = await this.request.request<ApiResponse<T>>({\n ...config,\n url: (this.baseUrl) + (config.url),\n headers,\n });\n\n return response;\n } catch (error) {\n console.error('API request error:', error);\n return {\n success: false,\n error: error instanceof Error ? error.message : '网络错误,请重试',\n };\n }\n }\n\n // ==================== 认证相关 API ====================\n\n /**\n * 用户注册\n */\n async register(\n email: string,\n password: string,\n username: string\n ): Promise<ApiResponse<AuthResponse>> {\n const response = await this.sendRequest<AuthResponse>({\n url: API_ROUTES.AUTH.REGISTER,\n method: 'POST',\n body: { email, password, username },\n });\n\n if (response.success && response.data) {\n await this.setToken(response.data.token);\n await this.setUser(response.data.user);\n }\n\n return response;\n }\n\n /**\n * 用户登录\n */\n async login(email: string, password: string): Promise<ApiResponse<AuthResponse>> {\n const response = await this.sendRequest<AuthResponse>({\n url: API_ROUTES.AUTH.LOGIN,\n method: 'POST',\n body: { email, password },\n });\n\n if (response.success && response.data) {\n await this.setToken(response.data.token);\n await this.setUser(response.data.user);\n\n // 触发自定义事件通知登录成功\n if (typeof window !== 'undefined') {\n window.dispatchEvent(\n new CustomEvent('user_login_success', {\n detail: {\n userId: response.data.user.id,\n email: response.data.user.email,\n role: response.data.user.role,\n },\n })\n );\n }\n }\n\n return response;\n }\n\n /**\n * 用户退出登录\n */\n async logout(): Promise<void> {\n await this.sendRequest<void>({\n url: API_ROUTES.AUTH.LOGOUT,\n method: 'POST',\n });\n\n // 无论成功与否,都清除本地数据\n await this.clearUserData();\n }\n\n /**\n * 获取当前用户信息\n */\n async getCurrentUser(): Promise<ApiResponse<User>> {\n const response = await this.sendRequest<any>({\n url: API_ROUTES.AUTH.ME,\n method: 'GET',\n });\n\n // 统一处理响应格式\n if (response.success && response.data) {\n const userData = response.data.user || response.data;\n await this.setUser(userData);\n return {\n ...response,\n data: userData,\n };\n }\n\n return response;\n }\n\n // ==================== 通用方法 ====================\n\n /**\n * 发送 GET 请求\n */\n async get<T = any>(url: string, params?: Record<string, any>): Promise<ApiResponse<T>> {\n return this.sendRequest({ url, method: 'GET', params });\n }\n\n /**\n * 发送 POST 请求\n */\n async post<T = any>(url: string, body?: any): Promise<ApiResponse<T>> {\n return this.sendRequest({ url, method: 'POST', body });\n }\n\n /**\n * 发送 PUT 请求\n */\n async put<T = any>(url: string, body?: any): Promise<ApiResponse<T>> {\n return this.sendRequest({ url, method: 'PUT', body });\n }\n\n /**\n * 发送 DELETE 请求\n */\n async delete<T = any>(url: string): Promise<ApiResponse<T>> {\n return this.sendRequest({ url, method: 'DELETE' });\n }\n}\n\n"]}
|
package/dist/chunk-S3PUP7N4.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var client = require('better-auth/client');
|
|
4
|
-
var plugins = require('better-auth/client/plugins');
|
|
5
|
-
|
|
6
|
-
// src/common/auth/client/create-auth-client.ts
|
|
7
|
-
function buildSa2kitAuthClient(options) {
|
|
8
|
-
return client.createAuthClient({
|
|
9
|
-
baseURL: options.baseURL.replace(/\/+$/, ""),
|
|
10
|
-
basePath: options.basePath ?? "/api/auth",
|
|
11
|
-
plugins: [plugins.emailOTPClient(), plugins.phoneNumberClient()]
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
function createSa2kitAuthClient(options) {
|
|
15
|
-
return buildSa2kitAuthClient(options);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
exports.createSa2kitAuthClient = createSa2kitAuthClient;
|
|
19
|
-
//# sourceMappingURL=chunk-S3PUP7N4.js.map
|
|
20
|
-
//# sourceMappingURL=chunk-S3PUP7N4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/auth/client/create-auth-client.ts"],"names":["createAuthClient","emailOTPClient","phoneNumberClient"],"mappings":";;;;;;AAYA,SAAS,sBAAsB,OAAA,EAAkC;AAC/D,EAAA,OAAOA,uBAAA,CAAiB;AAAA,IACtB,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,QAAQ,EAAE,CAAA;AAAA,IAC3C,QAAA,EAAU,QAAQ,QAAA,IAAY,WAAA;AAAA,IAC9B,OAAA,EAAS,CAACC,sBAAA,EAAe,EAAGC,2BAAmB;AAAA,GAChD,CAAA;AACH;AAIO,SAAS,uBAAuB,OAAA,EAAoD;AACzF,EAAA,OAAO,sBAAsB,OAAO,CAAA;AACtC","file":"chunk-S3PUP7N4.js","sourcesContent":["/**\n * Better Auth 客户端(vanilla — RN / 小程序 / Node fetch)\n */\nimport { createAuthClient } from 'better-auth/client';\nimport { emailOTPClient } from 'better-auth/client/plugins';\nimport { phoneNumberClient } from 'better-auth/client/plugins';\n\nexport type Sa2kitAuthClientOptions = {\n baseURL: string;\n basePath?: string;\n};\n\nfunction buildSa2kitAuthClient(options: Sa2kitAuthClientOptions) {\n return createAuthClient({\n baseURL: options.baseURL.replace(/\\/+$/, ''),\n basePath: options.basePath ?? '/api/auth',\n plugins: [emailOTPClient(), phoneNumberClient()],\n });\n}\n\nexport type Sa2kitAuthClient = ReturnType<typeof buildSa2kitAuthClient>;\n\nexport function createSa2kitAuthClient(options: Sa2kitAuthClientOptions): Sa2kitAuthClient {\n return buildSa2kitAuthClient(options);\n}\n"]}
|