sa2kit 3.1.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.
Files changed (712) hide show
  1. package/README.md +5 -5
  2. package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
  3. package/dist/{AliyunOSSProvider-4GRL2FJB.js.map → AliyunOSSProvider-7IOT5U6M.js.map} +1 -1
  4. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
  5. package/dist/{AliyunOSSProvider-QNVFIZ7Q.mjs.map → AliyunOSSProvider-ZXZM7OQA.mjs.map} +1 -1
  6. package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
  7. package/dist/{LocalStorageProvider-PFA2DMIJ.js.map → LocalStorageProvider-KJKRCKBS.js.map} +1 -1
  8. package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
  9. package/dist/{LocalStorageProvider-J5RHV37G.mjs.map → LocalStorageProvider-O22465NY.mjs.map} +1 -1
  10. package/dist/{chunk-SLKOEYFH.js → chunk-2234T4A6.js} +5 -5
  11. package/dist/chunk-2234T4A6.js.map +1 -0
  12. package/dist/{chunk-HQLKOXG7.js → chunk-36KGNXKW.js} +3 -3
  13. package/dist/{chunk-HQLKOXG7.js.map → chunk-36KGNXKW.js.map} +1 -1
  14. package/dist/{chunk-BCE6RUZV.js → chunk-375C7WL7.js} +19 -19
  15. package/dist/chunk-375C7WL7.js.map +1 -0
  16. package/dist/{chunk-VMTEDX5H.js → chunk-3J24Z4MB.js} +34 -318
  17. package/dist/chunk-3J24Z4MB.js.map +1 -0
  18. package/dist/{chunk-PBI7FKMB.js → chunk-3QCATFQV.js} +3 -3
  19. package/dist/chunk-3QCATFQV.js.map +1 -0
  20. package/dist/{chunk-FXQOXLDE.js → chunk-3R6JHA6D.js} +4 -4
  21. package/dist/chunk-3R6JHA6D.js.map +1 -0
  22. package/dist/{chunk-ZRAW3HXA.js → chunk-4OXKHV7J.js} +3 -3
  23. package/dist/chunk-4OXKHV7J.js.map +1 -0
  24. package/dist/chunk-4PJM4752.js +4 -0
  25. package/dist/{chunk-5USIS3UM.js.map → chunk-4PJM4752.js.map} +1 -1
  26. package/dist/{chunk-3Z43XGA4.mjs → chunk-65JRVC3F.mjs} +4 -4
  27. package/dist/{chunk-3Z43XGA4.mjs.map → chunk-65JRVC3F.mjs.map} +1 -1
  28. package/dist/{chunk-Q5EDCKQA.js → chunk-6HL54I2B.js} +16 -16
  29. package/dist/chunk-6HL54I2B.js.map +1 -0
  30. package/dist/chunk-6V2MIQPF.mjs +77 -0
  31. package/dist/chunk-6V2MIQPF.mjs.map +1 -0
  32. package/dist/{chunk-C6KV7VTZ.mjs → chunk-7CRU2Y5X.mjs} +5 -5
  33. package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
  34. package/dist/chunk-7PMT4L4I.js +324 -0
  35. package/dist/chunk-7PMT4L4I.js.map +1 -0
  36. package/dist/{chunk-XJ7ZAGC5.js → chunk-7VVZHFEM.js} +3 -3
  37. package/dist/chunk-7VVZHFEM.js.map +1 -0
  38. package/dist/chunk-AWHGIKTQ.js +56 -0
  39. package/dist/{chunk-FHLTPXAR.js.map → chunk-AWHGIKTQ.js.map} +1 -1
  40. package/dist/chunk-B3GYF6TY.js +37 -0
  41. package/dist/{chunk-2Y7BKFKZ.js.map → chunk-B3GYF6TY.js.map} +1 -1
  42. package/dist/{chunk-5FUAQLGC.mjs → chunk-BDBJFOXM.mjs} +3 -3
  43. package/dist/{chunk-5FUAQLGC.mjs.map → chunk-BDBJFOXM.mjs.map} +1 -1
  44. package/dist/{chunk-ZGVB35L2.mjs → chunk-BTW3SWQN.mjs} +3 -3
  45. package/dist/chunk-BTW3SWQN.mjs.map +1 -0
  46. package/dist/{chunk-I5ZPEDNR.mjs → chunk-CHYSSZ4E.mjs} +10 -10
  47. package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
  48. package/dist/{chunk-FIUBFREP.mjs → chunk-DO6QYAZV.mjs} +5 -5
  49. package/dist/chunk-DO6QYAZV.mjs.map +1 -0
  50. package/dist/{chunk-MBANGIG3.mjs → chunk-DTR53LQO.mjs} +6 -6
  51. package/dist/chunk-DTR53LQO.mjs.map +1 -0
  52. package/dist/{chunk-EQXPL7TN.mjs → chunk-EI2S4XDG.mjs} +16 -5
  53. package/dist/chunk-EI2S4XDG.mjs.map +1 -0
  54. package/dist/{chunk-GSNGCENJ.js → chunk-EOZHUI46.js} +16 -4
  55. package/dist/chunk-EOZHUI46.js.map +1 -0
  56. package/dist/{chunk-25OFOKNF.js → chunk-F2BZIU67.js} +18 -5
  57. package/dist/chunk-F2BZIU67.js.map +1 -0
  58. package/dist/{chunk-AQPU2AXH.js → chunk-F2TEJSCP.js} +10 -10
  59. package/dist/chunk-F2TEJSCP.js.map +1 -0
  60. package/dist/{chunk-UCOE6SET.js → chunk-FCLS5R24.js} +3 -3
  61. package/dist/chunk-FCLS5R24.js.map +1 -0
  62. package/dist/{chunk-3NHAT7D4.mjs → chunk-FUA6ZGMI.mjs} +27 -12
  63. package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
  64. package/dist/chunk-FY2X3LYR.mjs +3 -0
  65. package/dist/{chunk-VRN76M56.mjs.map → chunk-FY2X3LYR.mjs.map} +1 -1
  66. package/dist/{chunk-V7EVKD5G.mjs → chunk-GS4SAW25.mjs} +4 -4
  67. package/dist/chunk-GS4SAW25.mjs.map +1 -0
  68. package/dist/chunk-H56ICWUO.js +321 -0
  69. package/dist/chunk-H56ICWUO.js.map +1 -0
  70. package/dist/{chunk-HDMIOOZY.mjs → chunk-HG34SGMN.mjs} +4 -4
  71. package/dist/chunk-HG34SGMN.mjs.map +1 -0
  72. package/dist/chunk-HL4H2HF6.js +279 -0
  73. package/dist/chunk-HL4H2HF6.js.map +1 -0
  74. package/dist/chunk-IJIQUMAK.mjs +272 -0
  75. package/dist/chunk-IJIQUMAK.mjs.map +1 -0
  76. package/dist/{imageCrop/index.mjs → chunk-KEZFTDZT.mjs} +24 -6
  77. package/dist/chunk-KEZFTDZT.mjs.map +1 -0
  78. package/dist/{chunk-KQ643L7Z.js → chunk-KHOVC2KL.js} +3 -3
  79. package/dist/chunk-KHOVC2KL.js.map +1 -0
  80. package/dist/{chunk-6PMXAK7F.js → chunk-KRBSTLKC.js} +57 -57
  81. package/dist/chunk-KRBSTLKC.js.map +1 -0
  82. package/dist/chunk-KVYHCGRY.js +2011 -0
  83. package/dist/chunk-KVYHCGRY.js.map +1 -0
  84. package/dist/{chunk-G7UBMCUT.mjs → chunk-LZ5YTMMP.mjs} +3 -3
  85. package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
  86. package/dist/{chunk-WW4GE6CZ.js → chunk-MJ6XJGAL.js} +23 -119
  87. package/dist/chunk-MJ6XJGAL.js.map +1 -0
  88. package/dist/{chunk-NCRP2YHY.mjs → chunk-MKLXCV4Z.mjs} +8 -96
  89. package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
  90. package/dist/chunk-MMDSZIXD.mjs +286 -0
  91. package/dist/chunk-MMDSZIXD.mjs.map +1 -0
  92. package/dist/{chunk-TC5YU6A4.mjs → chunk-N2O3OX5Y.mjs} +3 -3
  93. package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
  94. package/dist/{chunk-3FRAIS4T.mjs → chunk-O6NNSPWD.mjs} +5 -5
  95. package/dist/{chunk-3FRAIS4T.mjs.map → chunk-O6NNSPWD.mjs.map} +1 -1
  96. package/dist/chunk-OIRZXSYM.js +80 -0
  97. package/dist/chunk-OIRZXSYM.js.map +1 -0
  98. package/dist/{chunk-Q5VFBPMG.mjs → chunk-P7JQRNBJ.mjs} +3 -3
  99. package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
  100. package/dist/{chunk-BIHYZA67.mjs → chunk-PLIG5257.mjs} +18 -18
  101. package/dist/chunk-PLIG5257.mjs.map +1 -0
  102. package/dist/chunk-QIF4MG5V.mjs +283 -0
  103. package/dist/chunk-QIF4MG5V.mjs.map +1 -0
  104. package/dist/{chunk-4OOANEJV.mjs → chunk-RHECN4E2.mjs} +21 -21
  105. package/dist/chunk-RHECN4E2.mjs.map +1 -0
  106. package/dist/{chunk-YOTQG4NP.mjs → chunk-RHHTZTIN.mjs} +4 -4
  107. package/dist/chunk-RHHTZTIN.mjs.map +1 -0
  108. package/dist/{chunk-G6NSKJMH.js → chunk-RRQ2X26Z.js} +4 -4
  109. package/dist/chunk-RRQ2X26Z.js.map +1 -0
  110. package/dist/{chunk-4WBCWJSN.js → chunk-RST2T54Y.js} +7 -7
  111. package/dist/chunk-RST2T54Y.js.map +1 -0
  112. package/dist/{chunk-R2DXTE2L.js → chunk-RVNQI6BI.js} +4 -4
  113. package/dist/chunk-RVNQI6BI.js.map +1 -0
  114. package/dist/{chunk-SKFEJPMJ.mjs → chunk-S3K4LTRI.mjs} +6 -6
  115. package/dist/chunk-S3K4LTRI.mjs.map +1 -0
  116. package/dist/{chunk-ZM2SZJTZ.js → chunk-SWZ5XNF6.js} +9 -9
  117. package/dist/chunk-SWZ5XNF6.js.map +1 -0
  118. package/dist/{chunk-QSKLQX6H.js → chunk-U7HNBCBS.js} +16 -16
  119. package/dist/chunk-U7HNBCBS.js.map +1 -0
  120. package/dist/{chunk-CIVO4R6N.mjs → chunk-UJS3YSD3.mjs} +3 -3
  121. package/dist/chunk-UJS3YSD3.mjs.map +1 -0
  122. package/dist/{chunk-G6HXNQ2U.mjs → chunk-UJUWDF7M.mjs} +8 -8
  123. package/dist/chunk-UJUWDF7M.mjs.map +1 -0
  124. package/dist/{chunk-CAYOQDBR.js → chunk-UR5NENGE.js} +3 -3
  125. package/dist/chunk-UR5NENGE.js.map +1 -0
  126. package/dist/{chunk-QXAOXBVB.mjs → chunk-V7HGBDCB.mjs} +3 -3
  127. package/dist/chunk-V7HGBDCB.mjs.map +1 -0
  128. package/dist/{chunk-ATUCZXJY.js → chunk-V7RLIZMN.js} +14 -4
  129. package/dist/chunk-V7RLIZMN.js.map +1 -0
  130. package/dist/{chunk-ACUFEDVQ.js → chunk-VCKXK6V5.js} +9 -9
  131. package/dist/chunk-VCKXK6V5.js.map +1 -0
  132. package/dist/{chunk-XUS5ACKR.mjs → chunk-VIEXDTNF.mjs} +3 -3
  133. package/dist/chunk-VIEXDTNF.mjs.map +1 -0
  134. package/dist/{imageCrop/index.js → chunk-VN2DULIA.js} +24 -5
  135. package/dist/chunk-VN2DULIA.js.map +1 -0
  136. package/dist/{chunk-S6YSGVWD.js → chunk-VNWMRUY6.js} +31 -87
  137. package/dist/chunk-VNWMRUY6.js.map +1 -0
  138. package/dist/{chunk-3DXPQ4YV.mjs → chunk-VYK4M2D6.mjs} +18 -6
  139. package/dist/chunk-VYK4M2D6.mjs.map +1 -0
  140. package/dist/{chunk-WEEXCPSE.mjs → chunk-WB4H6ZUW.mjs} +3 -3
  141. package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
  142. package/dist/{chunk-GWNBVGDT.mjs → chunk-WM3AEJ2E.mjs} +6 -257
  143. package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
  144. package/dist/{chunk-CX2GHCAI.mjs → chunk-X5GINUGI.mjs} +26 -81
  145. package/dist/chunk-X5GINUGI.mjs.map +1 -0
  146. package/dist/{chunk-DIF5VRL3.mjs → chunk-XB7GUEHZ.mjs} +14 -5
  147. package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
  148. package/dist/{chunk-ZLYPALF3.js → chunk-XE5RGZ3B.js} +11 -11
  149. package/dist/chunk-XE5RGZ3B.js.map +1 -0
  150. package/dist/{chunk-WJ7IMUEJ.mjs → chunk-XNTIMVSL.mjs} +7 -7
  151. package/dist/chunk-XNTIMVSL.mjs.map +1 -0
  152. package/dist/{chunk-ZWQJSZEY.js → chunk-Y7WHUKJF.js} +28 -12
  153. package/dist/chunk-Y7WHUKJF.js.map +1 -0
  154. package/dist/{components/index.mjs → chunk-YIRPPMCN.mjs} +305 -785
  155. package/dist/chunk-YIRPPMCN.mjs.map +1 -0
  156. package/dist/{chunk-KH6RQ4J5.js → chunk-Z2SNB5LJ.js} +3 -3
  157. package/dist/chunk-Z2SNB5LJ.js.map +1 -0
  158. package/dist/{chunk-HJ6MH7J7.js → chunk-ZOP7YIVX.js} +17 -17
  159. package/dist/chunk-ZOP7YIVX.js.map +1 -0
  160. package/dist/{chunk-HJZHQW5R.mjs → chunk-ZUZLWHH5.mjs} +3 -3
  161. package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
  162. package/dist/{ai → common/ai}/llm/core/index.d.mts +3 -3
  163. package/dist/{ai → common/ai}/llm/core/index.d.ts +3 -3
  164. package/dist/{ai/llm → common/ai/llm/core}/index.js +14 -14
  165. package/dist/{ai/llm → common/ai/llm/core}/index.mjs +3 -3
  166. package/dist/{ai → common/ai}/llm/electron/index.d.mts +3 -3
  167. package/dist/{ai/llm/web → common/ai/llm/electron}/index.d.ts +3 -3
  168. package/dist/common/ai/llm/electron/index.js +67 -0
  169. package/dist/common/ai/llm/electron/index.mjs +10 -0
  170. package/dist/{ai → common/ai}/llm/index.d.mts +2 -2
  171. package/dist/{ai → common/ai}/llm/index.d.ts +2 -2
  172. package/dist/{ai/llm/core → common/ai/llm}/index.js +13 -13
  173. package/dist/{ai/llm/core → common/ai/llm}/index.mjs +2 -2
  174. package/dist/{ai → common/ai}/llm/miniapp/index.d.mts +3 -3
  175. package/dist/{ai → common/ai}/llm/miniapp/index.d.ts +3 -3
  176. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.js +16 -16
  177. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.mjs +4 -4
  178. package/dist/{ai → common/ai}/llm/rn/index.d.mts +3 -3
  179. package/dist/{ai → common/ai}/llm/rn/index.d.ts +3 -3
  180. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.js +16 -16
  181. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.mjs +4 -4
  182. package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
  183. package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
  184. package/dist/common/ai/llm/ui/electron/index.js +22 -0
  185. package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
  186. package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
  187. package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
  188. package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
  189. package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
  190. package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
  191. package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
  192. package/dist/common/ai/llm/ui/rn/index.js +14 -0
  193. package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
  194. package/dist/{ai → common/ai}/llm/ui/web/index.d.mts +7 -7
  195. package/dist/{ai → common/ai}/llm/ui/web/index.d.ts +7 -7
  196. package/dist/common/ai/llm/ui/web/index.js +21 -0
  197. package/dist/common/ai/llm/ui/web/index.mjs +8 -0
  198. package/dist/{ai → common/ai}/llm/web/index.d.mts +3 -3
  199. package/dist/{ai/llm/electron → common/ai/llm/web}/index.d.ts +3 -3
  200. package/dist/common/ai/llm/web/index.js +66 -0
  201. package/dist/common/ai/llm/web/index.mjs +9 -0
  202. package/dist/{analytics → common/analytics}/index.d.mts +1 -1
  203. package/dist/{analytics → common/analytics}/index.d.ts +1 -1
  204. package/dist/{analytics → common/analytics}/index.js +79 -79
  205. package/dist/{analytics → common/analytics}/index.mjs +3 -3
  206. package/dist/{analytics → common/analytics}/server/index.js +2 -2
  207. package/dist/common/analytics/server/index.js.map +1 -0
  208. package/dist/{analytics → common/analytics}/server/index.mjs +2 -2
  209. package/dist/common/analytics/server/index.mjs.map +1 -0
  210. package/dist/{api → common/api}/index.d.mts +3 -3
  211. package/dist/{api → common/api}/index.d.ts +3 -3
  212. package/dist/common/api/index.js +21 -0
  213. package/dist/common/api/index.mjs +4 -0
  214. package/dist/common/auth/components/index.d.mts +9 -9
  215. package/dist/common/auth/components/index.d.ts +9 -9
  216. package/dist/common/auth/index.js +6 -6
  217. package/dist/common/auth/index.mjs +2 -2
  218. package/dist/common/auth/react/index.d.mts +3 -3
  219. package/dist/common/auth/react/index.d.ts +3 -3
  220. package/dist/common/auth/rn/index.d.mts +2 -2
  221. package/dist/common/auth/rn/index.d.ts +2 -2
  222. package/dist/common/auth/rn/index.js +2 -2
  223. package/dist/common/auth/rn/index.js.map +1 -1
  224. package/dist/common/auth/rn/index.mjs +1 -1
  225. package/dist/common/auth/rn/index.mjs.map +1 -1
  226. package/dist/common/components/index.d.mts +4 -0
  227. package/dist/common/components/index.d.ts +4 -0
  228. package/dist/common/components/index.js +414 -0
  229. package/dist/common/components/index.mjs +9 -0
  230. package/dist/{config → common/config}/index.d.mts +1 -1
  231. package/dist/{config → common/config}/index.d.ts +1 -1
  232. package/dist/common/config/index.js +21 -0
  233. package/dist/common/config/index.mjs +4 -0
  234. package/dist/{config → common/config}/server/index.js +5 -5
  235. package/dist/common/config/server/index.js.map +1 -0
  236. package/dist/{config → common/config}/server/index.mjs +5 -5
  237. package/dist/common/config/server/index.mjs.map +1 -0
  238. package/dist/common/export/index.d.mts +2 -2
  239. package/dist/common/export/index.d.ts +2 -2
  240. package/dist/common/export/index.js +67 -67
  241. package/dist/common/export/index.mjs +3 -3
  242. package/dist/common/export/server/index.d.mts +2 -2
  243. package/dist/common/export/server/index.d.ts +2 -2
  244. package/dist/common/export/server/index.js +76 -48
  245. package/dist/common/export/server/index.mjs +3 -3
  246. package/dist/common/file/index.d.mts +2 -2
  247. package/dist/common/file/index.d.ts +2 -2
  248. package/dist/common/file/index.js +27 -27
  249. package/dist/common/file/index.mjs +5 -5
  250. package/dist/common/file/server/index.d.mts +2 -2
  251. package/dist/common/file/server/index.d.ts +2 -2
  252. package/dist/common/file/server/index.js +58 -50
  253. package/dist/common/file/server/index.mjs +8 -8
  254. package/dist/{i18n → common/i18n}/index.d.mts +1 -1
  255. package/dist/{i18n → common/i18n}/index.d.ts +1 -1
  256. package/dist/{i18n → common/i18n}/index.js +18 -18
  257. package/dist/{i18n → common/i18n}/index.mjs +2 -2
  258. package/dist/common/imageCrop/index.d.mts +2 -0
  259. package/dist/common/imageCrop/index.d.ts +2 -0
  260. package/dist/common/imageCrop/index.js +61 -0
  261. package/dist/common/imageCrop/index.mjs +4 -0
  262. package/dist/common/index.d.mts +16 -16
  263. package/dist/common/index.d.ts +16 -16
  264. package/dist/common/index.js +75 -67
  265. package/dist/common/index.mjs +26 -26
  266. package/dist/common/logger/index.d.mts +1 -1
  267. package/dist/common/logger/index.d.ts +1 -1
  268. package/dist/common/logger/index.js +6 -7
  269. package/dist/common/logger/index.mjs +1 -2
  270. package/dist/{ossFile → common/ossFile}/index.d.mts +6 -6
  271. package/dist/{ossFile → common/ossFile}/index.d.ts +6 -6
  272. package/dist/{ossFile → common/ossFile}/index.js +26 -26
  273. package/dist/{ossFile → common/ossFile}/index.mjs +5 -5
  274. package/dist/{ossFile/server/index.d.ts → common/ossFile/server/index.d.mts} +7 -7
  275. package/dist/{ossFile/server/index.d.mts → common/ossFile/server/index.d.ts} +7 -7
  276. package/dist/{ossFile → common/ossFile}/server/index.js +60 -52
  277. package/dist/{ossFile → common/ossFile}/server/index.mjs +10 -10
  278. package/dist/common/platform/index.js +8 -8
  279. package/dist/common/platform/index.mjs +4 -4
  280. package/dist/common/request/index.d.mts +1 -1
  281. package/dist/common/request/index.d.ts +1 -1
  282. package/dist/common/request/index.js +5 -6
  283. package/dist/common/request/index.mjs +2 -3
  284. package/dist/common/storage/index.d.mts +1 -1
  285. package/dist/common/storage/index.d.ts +1 -1
  286. package/dist/common/storage/index.js +17 -17
  287. package/dist/common/storage/index.mjs +5 -5
  288. package/dist/{universalExport → common/universalExport}/index.d.mts +6 -86
  289. package/dist/{universalExport → common/universalExport}/index.d.ts +6 -86
  290. package/dist/{universalExport → common/universalExport}/index.js +67 -67
  291. package/dist/common/universalExport/index.mjs +5 -0
  292. package/dist/{universalExport → common/universalExport}/server/index.d.mts +3 -84
  293. package/dist/{universalExport → common/universalExport}/server/index.d.ts +3 -84
  294. package/dist/common/universalExport/server/index.js +151 -0
  295. package/dist/common/universalExport/server/index.mjs +6 -0
  296. package/dist/{universalFile/index.d.ts → common/universalFile/index.d.mts} +9 -9
  297. package/dist/{universalFile/index.d.mts → common/universalFile/index.d.ts} +9 -9
  298. package/dist/{universalFile → common/universalFile}/index.js +63 -63
  299. package/dist/common/universalFile/index.js.map +1 -0
  300. package/dist/{universalFile → common/universalFile}/index.mjs +4 -4
  301. package/dist/common/universalFile/index.mjs.map +1 -0
  302. package/dist/{universalFile → common/universalFile}/server/index.d.mts +5 -5
  303. package/dist/{universalFile → common/universalFile}/server/index.d.ts +5 -5
  304. package/dist/{universalFile → common/universalFile}/server/index.js +68 -68
  305. package/dist/{universalFile → common/universalFile}/server/index.mjs +8 -8
  306. package/dist/common/utils/index.d.mts +1 -1
  307. package/dist/common/utils/index.d.ts +1 -1
  308. package/dist/common/utils/index.js +11 -12
  309. package/dist/common/utils/index.mjs +2 -3
  310. package/dist/{index-WrR57hKT.d.ts → index-BRLygK4h.d.ts} +2 -2
  311. package/dist/{request/index.d.mts → index-BWNK5mH2.d.ts} +19 -2
  312. package/dist/{utils/index.d.mts → index-BiCK6gg6.d.mts} +19 -1
  313. package/dist/{utils/index.d.ts → index-BiCK6gg6.d.ts} +19 -1
  314. package/dist/{index-DoUo8IrU.d.mts → index-BxZauNN_.d.mts} +8 -8
  315. package/dist/{index-DoUo8IrU.d.ts → index-BxZauNN_.d.ts} +8 -8
  316. package/dist/{request/index.d.ts → index-C-P2yBTH.d.mts} +19 -2
  317. package/dist/{index-D0cqaQEH.d.mts → index-CLB80GCP.d.mts} +5 -5
  318. package/dist/{index-D0cqaQEH.d.ts → index-CLB80GCP.d.ts} +5 -5
  319. package/dist/{index-2G9Dxjvt.d.ts → index-CT4K2z-O.d.ts} +2 -2
  320. package/dist/{index-qcOvRVuN.d.mts → index-D6RJTGce.d.mts} +2 -2
  321. package/dist/{storage/index.d.ts → index-DA7L9JlE.d.mts} +26 -3
  322. package/dist/{imageCrop/index.d.mts → index-DXVph21C.d.mts} +40 -4
  323. package/dist/{imageCrop/index.d.ts → index-DXVph21C.d.ts} +40 -4
  324. package/dist/{index-CYuUB8aF.d.mts → index-DzyK789B.d.mts} +2 -2
  325. package/dist/{logger/index.d.mts → index-FVJZCEtm.d.mts} +21 -1
  326. package/dist/{logger/index.d.ts → index-FVJZCEtm.d.ts} +21 -1
  327. package/dist/{storage/index.d.mts → index-nD9vPCZT.d.ts} +26 -3
  328. package/dist/{components/index.d.mts → index-nOmIv2BG.d.mts} +159 -5
  329. package/dist/{components/index.d.ts → index-nOmIv2BG.d.ts} +159 -5
  330. package/dist/{path-qjVnH8qU.d.ts → path-Bzc7hj1N.d.ts} +5 -1
  331. package/dist/{path-DkaHQSyW.d.mts → path-DN_65vhO.d.mts} +5 -1
  332. package/dist/{types-3ujSNAXb.d.mts → utils-Dm3O1rAa.d.mts} +81 -1
  333. package/dist/{types-3ujSNAXb.d.ts → utils-Dm3O1rAa.d.ts} +81 -1
  334. package/package.json +292 -312
  335. package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
  336. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
  337. package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
  338. package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
  339. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  340. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  341. package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
  342. package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
  343. package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
  344. package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
  345. package/dist/ai/llm/electron/index.js +0 -66
  346. package/dist/ai/llm/electron/index.mjs +0 -9
  347. package/dist/ai/llm/ui/electron/index.d.mts +0 -5
  348. package/dist/ai/llm/ui/electron/index.d.ts +0 -5
  349. package/dist/ai/llm/ui/electron/index.js +0 -21
  350. package/dist/ai/llm/ui/electron/index.mjs +0 -8
  351. package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
  352. package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
  353. package/dist/ai/llm/ui/miniapp/index.js +0 -14
  354. package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
  355. package/dist/ai/llm/ui/rn/index.d.mts +0 -9
  356. package/dist/ai/llm/ui/rn/index.d.ts +0 -9
  357. package/dist/ai/llm/ui/rn/index.js +0 -14
  358. package/dist/ai/llm/ui/rn/index.mjs +0 -5
  359. package/dist/ai/llm/ui/web/index.js +0 -20
  360. package/dist/ai/llm/ui/web/index.mjs +0 -7
  361. package/dist/ai/llm/web/index.js +0 -65
  362. package/dist/ai/llm/web/index.mjs +0 -8
  363. package/dist/analytics/server/index.js.map +0 -1
  364. package/dist/analytics/server/index.mjs.map +0 -1
  365. package/dist/api/index.js +0 -21
  366. package/dist/api/index.mjs +0 -4
  367. package/dist/audioDetection/index.d.mts +0 -449
  368. package/dist/audioDetection/index.d.ts +0 -449
  369. package/dist/audioDetection/index.js +0 -1244
  370. package/dist/audioDetection/index.js.map +0 -1
  371. package/dist/audioDetection/index.mjs +0 -1227
  372. package/dist/audioDetection/index.mjs.map +0 -1
  373. package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
  374. package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
  375. package/dist/business/index.d.mts +0 -2
  376. package/dist/business/index.d.ts +0 -2
  377. package/dist/business/index.js +0 -581
  378. package/dist/business/index.js.map +0 -1
  379. package/dist/business/index.mjs +0 -575
  380. package/dist/business/index.mjs.map +0 -1
  381. package/dist/calendar/index.d.mts +0 -1325
  382. package/dist/calendar/index.d.ts +0 -1325
  383. package/dist/calendar/index.js +0 -5964
  384. package/dist/calendar/index.js.map +0 -1
  385. package/dist/calendar/index.mjs +0 -5878
  386. package/dist/calendar/index.mjs.map +0 -1
  387. package/dist/calendar/routes/index.d.mts +0 -191
  388. package/dist/calendar/routes/index.d.ts +0 -191
  389. package/dist/calendar/routes/index.js +0 -844
  390. package/dist/calendar/routes/index.js.map +0 -1
  391. package/dist/calendar/routes/index.mjs +0 -826
  392. package/dist/calendar/routes/index.mjs.map +0 -1
  393. package/dist/chunk-25OFOKNF.js.map +0 -1
  394. package/dist/chunk-2Y7BKFKZ.js +0 -37
  395. package/dist/chunk-3CSCIRQY.js +0 -17
  396. package/dist/chunk-3CSCIRQY.js.map +0 -1
  397. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  398. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  399. package/dist/chunk-4FDUURSD.js +0 -22
  400. package/dist/chunk-4FDUURSD.js.map +0 -1
  401. package/dist/chunk-4OOANEJV.mjs.map +0 -1
  402. package/dist/chunk-4WBCWJSN.js.map +0 -1
  403. package/dist/chunk-5GBDDXYL.mjs +0 -23
  404. package/dist/chunk-5GBDDXYL.mjs.map +0 -1
  405. package/dist/chunk-5USIS3UM.js +0 -4
  406. package/dist/chunk-6PMXAK7F.js.map +0 -1
  407. package/dist/chunk-7B5SI4OF.mjs +0 -15
  408. package/dist/chunk-7B5SI4OF.mjs.map +0 -1
  409. package/dist/chunk-ACUFEDVQ.js.map +0 -1
  410. package/dist/chunk-AQPU2AXH.js.map +0 -1
  411. package/dist/chunk-ATUCZXJY.js.map +0 -1
  412. package/dist/chunk-BCE6RUZV.js.map +0 -1
  413. package/dist/chunk-BIHYZA67.mjs.map +0 -1
  414. package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
  415. package/dist/chunk-CAYOQDBR.js.map +0 -1
  416. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  417. package/dist/chunk-CX2GHCAI.mjs.map +0 -1
  418. package/dist/chunk-DIF5VRL3.mjs.map +0 -1
  419. package/dist/chunk-EQXPL7TN.mjs.map +0 -1
  420. package/dist/chunk-FCEBAWN6.js +0 -18
  421. package/dist/chunk-FCEBAWN6.js.map +0 -1
  422. package/dist/chunk-FHIE5MTC.mjs +0 -541
  423. package/dist/chunk-FHIE5MTC.mjs.map +0 -1
  424. package/dist/chunk-FHLTPXAR.js +0 -56
  425. package/dist/chunk-FIUBFREP.mjs.map +0 -1
  426. package/dist/chunk-FXQOXLDE.js.map +0 -1
  427. package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
  428. package/dist/chunk-G6NSKJMH.js.map +0 -1
  429. package/dist/chunk-G7UBMCUT.mjs.map +0 -1
  430. package/dist/chunk-GSNGCENJ.js.map +0 -1
  431. package/dist/chunk-GWNBVGDT.mjs.map +0 -1
  432. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  433. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  434. package/dist/chunk-HJZHQW5R.mjs.map +0 -1
  435. package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
  436. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  437. package/dist/chunk-KQ643L7Z.js.map +0 -1
  438. package/dist/chunk-LFB5EIIM.mjs +0 -31
  439. package/dist/chunk-LFB5EIIM.mjs.map +0 -1
  440. package/dist/chunk-MBANGIG3.mjs.map +0 -1
  441. package/dist/chunk-NCRP2YHY.mjs.map +0 -1
  442. package/dist/chunk-NDGHXVGS.js +0 -25
  443. package/dist/chunk-NDGHXVGS.js.map +0 -1
  444. package/dist/chunk-NDPO5OMC.js +0 -563
  445. package/dist/chunk-NDPO5OMC.js.map +0 -1
  446. package/dist/chunk-PBI7FKMB.js.map +0 -1
  447. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  448. package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
  449. package/dist/chunk-QSKLQX6H.js.map +0 -1
  450. package/dist/chunk-QXAOXBVB.mjs.map +0 -1
  451. package/dist/chunk-R2DXTE2L.js.map +0 -1
  452. package/dist/chunk-RTD2WHQQ.mjs +0 -16
  453. package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
  454. package/dist/chunk-S6YSGVWD.js.map +0 -1
  455. package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
  456. package/dist/chunk-SLKOEYFH.js.map +0 -1
  457. package/dist/chunk-TC5YU6A4.mjs.map +0 -1
  458. package/dist/chunk-UCOE6SET.js.map +0 -1
  459. package/dist/chunk-UIYKZ73N.js +0 -36
  460. package/dist/chunk-UIYKZ73N.js.map +0 -1
  461. package/dist/chunk-V7EVKD5G.mjs.map +0 -1
  462. package/dist/chunk-VMTEDX5H.js.map +0 -1
  463. package/dist/chunk-VRN76M56.mjs +0 -3
  464. package/dist/chunk-VXFUXZN5.mjs +0 -20
  465. package/dist/chunk-VXFUXZN5.mjs.map +0 -1
  466. package/dist/chunk-WEEXCPSE.mjs.map +0 -1
  467. package/dist/chunk-WJ7IMUEJ.mjs.map +0 -1
  468. package/dist/chunk-WW4GE6CZ.js.map +0 -1
  469. package/dist/chunk-XJ7ZAGC5.js.map +0 -1
  470. package/dist/chunk-XUS5ACKR.mjs.map +0 -1
  471. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  472. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  473. package/dist/chunk-ZLYPALF3.js.map +0 -1
  474. package/dist/chunk-ZM2SZJTZ.js.map +0 -1
  475. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  476. package/dist/chunk-ZWQJSZEY.js.map +0 -1
  477. package/dist/components/index.js +0 -2516
  478. package/dist/components/index.js.map +0 -1
  479. package/dist/components/index.mjs.map +0 -1
  480. package/dist/config/index.js +0 -21
  481. package/dist/config/index.mjs +0 -4
  482. package/dist/config/server/index.js.map +0 -1
  483. package/dist/config/server/index.mjs.map +0 -1
  484. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  485. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  486. package/dist/festivalCard/index.d.mts +0 -76
  487. package/dist/festivalCard/index.d.ts +0 -76
  488. package/dist/festivalCard/index.js +0 -1492
  489. package/dist/festivalCard/index.js.map +0 -1
  490. package/dist/festivalCard/index.mjs +0 -1475
  491. package/dist/festivalCard/index.mjs.map +0 -1
  492. package/dist/festivalCard/routes/index.d.mts +0 -42
  493. package/dist/festivalCard/routes/index.d.ts +0 -42
  494. package/dist/festivalCard/routes/index.js +0 -361
  495. package/dist/festivalCard/routes/index.js.map +0 -1
  496. package/dist/festivalCard/routes/index.mjs +0 -356
  497. package/dist/festivalCard/routes/index.mjs.map +0 -1
  498. package/dist/festivalCard/server/index.d.mts +0 -120
  499. package/dist/festivalCard/server/index.d.ts +0 -120
  500. package/dist/festivalCard/server/index.js +0 -272
  501. package/dist/festivalCard/server/index.js.map +0 -1
  502. package/dist/festivalCard/server/index.mjs +0 -265
  503. package/dist/festivalCard/server/index.mjs.map +0 -1
  504. package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
  505. package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
  506. package/dist/imageCrop/index.js.map +0 -1
  507. package/dist/imageCrop/index.mjs.map +0 -1
  508. package/dist/index-Bjem5rWn.d.mts +0 -17
  509. package/dist/index-C5U-2hJq.d.ts +0 -23
  510. package/dist/index-CifSBBP2.d.ts +0 -17
  511. package/dist/index-D0K4ehme.d.mts +0 -20
  512. package/dist/index-DLnfKN-a.d.mts +0 -23
  513. package/dist/index-DSel44Ke.d.mts +0 -93
  514. package/dist/index-DSel44Ke.d.ts +0 -93
  515. package/dist/index-DZ5iJtNO.d.mts +0 -102
  516. package/dist/index-DZ5iJtNO.d.ts +0 -102
  517. package/dist/index-Da7qdkgW.d.ts +0 -20
  518. package/dist/index-DrPcMJPc.d.mts +0 -250
  519. package/dist/index-DrPcMJPc.d.ts +0 -250
  520. package/dist/index-oLUvfqT8.d.ts +0 -20
  521. package/dist/index-pe38RDgC.d.mts +0 -20
  522. package/dist/index.d.mts +0 -11611
  523. package/dist/index.d.ts +0 -11611
  524. package/dist/index.js +0 -17230
  525. package/dist/index.js.map +0 -1
  526. package/dist/index.mjs +0 -16954
  527. package/dist/index.mjs.map +0 -1
  528. package/dist/logger/index.js +0 -29
  529. package/dist/logger/index.mjs +0 -4
  530. package/dist/mikuContest/ui/web/index.d.mts +0 -2
  531. package/dist/mikuContest/ui/web/index.d.ts +0 -2
  532. package/dist/mikuContest/ui/web/index.js +0 -353
  533. package/dist/mikuContest/ui/web/index.js.map +0 -1
  534. package/dist/mikuContest/ui/web/index.mjs +0 -343
  535. package/dist/mikuContest/ui/web/index.mjs.map +0 -1
  536. package/dist/mikuFireworks3D/index.d.mts +0 -268
  537. package/dist/mikuFireworks3D/index.d.ts +0 -268
  538. package/dist/mikuFireworks3D/index.js +0 -1267
  539. package/dist/mikuFireworks3D/index.js.map +0 -1
  540. package/dist/mikuFireworks3D/index.mjs +0 -1228
  541. package/dist/mikuFireworks3D/index.mjs.map +0 -1
  542. package/dist/mikuFusionGame/index.d.mts +0 -117
  543. package/dist/mikuFusionGame/index.d.ts +0 -117
  544. package/dist/mikuFusionGame/index.js +0 -1208
  545. package/dist/mikuFusionGame/index.js.map +0 -1
  546. package/dist/mikuFusionGame/index.mjs +0 -1195
  547. package/dist/mikuFusionGame/index.mjs.map +0 -1
  548. package/dist/mmd/admin/index.d.mts +0 -487
  549. package/dist/mmd/admin/index.d.ts +0 -487
  550. package/dist/mmd/admin/index.js +0 -1058
  551. package/dist/mmd/admin/index.js.map +0 -1
  552. package/dist/mmd/admin/index.mjs +0 -1027
  553. package/dist/mmd/admin/index.mjs.map +0 -1
  554. package/dist/mmd/index.d.mts +0 -2467
  555. package/dist/mmd/index.d.ts +0 -2467
  556. package/dist/mmd/index.js +0 -10119
  557. package/dist/mmd/index.js.map +0 -1
  558. package/dist/mmd/index.mjs +0 -10028
  559. package/dist/mmd/index.mjs.map +0 -1
  560. package/dist/mmd/server/index.d.mts +0 -139
  561. package/dist/mmd/server/index.d.ts +0 -139
  562. package/dist/mmd/server/index.js +0 -424
  563. package/dist/mmd/server/index.js.map +0 -1
  564. package/dist/mmd/server/index.mjs +0 -404
  565. package/dist/mmd/server/index.mjs.map +0 -1
  566. package/dist/music/index.d.mts +0 -74
  567. package/dist/music/index.d.ts +0 -74
  568. package/dist/music/index.js +0 -830
  569. package/dist/music/index.js.map +0 -1
  570. package/dist/music/index.mjs +0 -809
  571. package/dist/music/index.mjs.map +0 -1
  572. package/dist/music/server/index.d.mts +0 -1
  573. package/dist/music/server/index.d.ts +0 -1
  574. package/dist/music/server/index.js +0 -194
  575. package/dist/music/server/index.js.map +0 -1
  576. package/dist/music/server/index.mjs +0 -182
  577. package/dist/music/server/index.mjs.map +0 -1
  578. package/dist/navigation/index.d.mts +0 -93
  579. package/dist/navigation/index.d.ts +0 -93
  580. package/dist/navigation/index.js +0 -453
  581. package/dist/navigation/index.js.map +0 -1
  582. package/dist/navigation/index.mjs +0 -443
  583. package/dist/navigation/index.mjs.map +0 -1
  584. package/dist/portfolio/index.d.mts +0 -66
  585. package/dist/portfolio/index.d.ts +0 -66
  586. package/dist/portfolio/index.js +0 -736
  587. package/dist/portfolio/index.js.map +0 -1
  588. package/dist/portfolio/index.mjs +0 -724
  589. package/dist/portfolio/index.mjs.map +0 -1
  590. package/dist/qqbot/server/index.d.mts +0 -216
  591. package/dist/qqbot/server/index.d.ts +0 -216
  592. package/dist/qqbot/server/index.js +0 -394
  593. package/dist/qqbot/server/index.js.map +0 -1
  594. package/dist/qqbot/server/index.mjs +0 -385
  595. package/dist/qqbot/server/index.mjs.map +0 -1
  596. package/dist/qqbot/ui/web/index.d.mts +0 -10
  597. package/dist/qqbot/ui/web/index.d.ts +0 -10
  598. package/dist/qqbot/ui/web/index.js +0 -105
  599. package/dist/qqbot/ui/web/index.js.map +0 -1
  600. package/dist/qqbot/ui/web/index.mjs +0 -99
  601. package/dist/qqbot/ui/web/index.mjs.map +0 -1
  602. package/dist/request/index.js +0 -22
  603. package/dist/request/index.mjs +0 -5
  604. package/dist/screenReceiver/index.d.mts +0 -86
  605. package/dist/screenReceiver/index.d.ts +0 -86
  606. package/dist/screenReceiver/index.js +0 -281
  607. package/dist/screenReceiver/index.js.map +0 -1
  608. package/dist/screenReceiver/index.mjs +0 -273
  609. package/dist/screenReceiver/index.mjs.map +0 -1
  610. package/dist/storage/index.js +0 -48
  611. package/dist/storage/index.mjs +0 -7
  612. package/dist/testYourself/admin/index.d.mts +0 -58
  613. package/dist/testYourself/admin/index.d.ts +0 -58
  614. package/dist/testYourself/admin/index.js +0 -1009
  615. package/dist/testYourself/admin/index.js.map +0 -1
  616. package/dist/testYourself/admin/index.mjs +0 -1002
  617. package/dist/testYourself/admin/index.mjs.map +0 -1
  618. package/dist/testYourself/index.d.mts +0 -53
  619. package/dist/testYourself/index.d.ts +0 -53
  620. package/dist/testYourself/index.js +0 -2551
  621. package/dist/testYourself/index.js.map +0 -1
  622. package/dist/testYourself/index.mjs +0 -2531
  623. package/dist/testYourself/index.mjs.map +0 -1
  624. package/dist/testYourself/server/index.d.mts +0 -1029
  625. package/dist/testYourself/server/index.d.ts +0 -1029
  626. package/dist/testYourself/server/index.js +0 -825
  627. package/dist/testYourself/server/index.js.map +0 -1
  628. package/dist/testYourself/server/index.mjs +0 -816
  629. package/dist/testYourself/server/index.mjs.map +0 -1
  630. package/dist/types-B6B210gX.d.mts +0 -270
  631. package/dist/types-B6B210gX.d.ts +0 -270
  632. package/dist/types-Bdnte5EN.d.mts +0 -292
  633. package/dist/types-Cs0CLvrH.d.mts +0 -70
  634. package/dist/types-Cs0CLvrH.d.ts +0 -70
  635. package/dist/types-HorDyIRv.d.mts +0 -303
  636. package/dist/types-HorDyIRv.d.ts +0 -303
  637. package/dist/types-_rFX1atk.d.ts +0 -292
  638. package/dist/universalExport/index.mjs +0 -5
  639. package/dist/universalExport/server/index.js +0 -123
  640. package/dist/universalExport/server/index.mjs +0 -6
  641. package/dist/universalFile/index.js.map +0 -1
  642. package/dist/universalFile/index.mjs.map +0 -1
  643. package/dist/universalFile/server/index.js.map +0 -1
  644. package/dist/universalFile/server/index.mjs.map +0 -1
  645. package/dist/utils/index.js +0 -46
  646. package/dist/utils/index.js.map +0 -1
  647. package/dist/utils/index.mjs +0 -5
  648. package/dist/utils/index.mjs.map +0 -1
  649. package/dist/vocaloidBooth/index.d.mts +0 -64
  650. package/dist/vocaloidBooth/index.d.ts +0 -64
  651. package/dist/vocaloidBooth/index.js +0 -376
  652. package/dist/vocaloidBooth/index.js.map +0 -1
  653. package/dist/vocaloidBooth/index.mjs +0 -362
  654. package/dist/vocaloidBooth/index.mjs.map +0 -1
  655. package/dist/vocaloidBooth/server/index.d.mts +0 -111
  656. package/dist/vocaloidBooth/server/index.d.ts +0 -111
  657. package/dist/vocaloidBooth/server/index.js +0 -247
  658. package/dist/vocaloidBooth/server/index.js.map +0 -1
  659. package/dist/vocaloidBooth/server/index.mjs +0 -237
  660. package/dist/vocaloidBooth/server/index.mjs.map +0 -1
  661. package/dist/vocaloidBooth/web/index.d.mts +0 -3
  662. package/dist/vocaloidBooth/web/index.d.ts +0 -3
  663. package/dist/vocaloidBooth/web/index.js +0 -376
  664. package/dist/vocaloidBooth/web/index.js.map +0 -1
  665. package/dist/vocaloidBooth/web/index.mjs +0 -362
  666. package/dist/vocaloidBooth/web/index.mjs.map +0 -1
  667. /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
  668. /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
  669. /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
  670. /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
  671. /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
  672. /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
  673. /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
  674. /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
  675. /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
  676. /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
  677. /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
  678. /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
  679. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
  680. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
  681. /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
  682. /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
  683. /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
  684. /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
  685. /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
  686. /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
  687. /package/dist/{analytics → common/analytics}/index.js.map +0 -0
  688. /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
  689. /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
  690. /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
  691. /package/dist/{api → common/api}/index.js.map +0 -0
  692. /package/dist/{api → common/api}/index.mjs.map +0 -0
  693. /package/dist/{config → common/components}/index.js.map +0 -0
  694. /package/dist/{config → common/components}/index.mjs.map +0 -0
  695. /package/dist/{i18n → common/config}/index.js.map +0 -0
  696. /package/dist/{i18n → common/config}/index.mjs.map +0 -0
  697. /package/dist/{config → common/config}/server/index.d.mts +0 -0
  698. /package/dist/{config → common/config}/server/index.d.ts +0 -0
  699. /package/dist/{logger → common/i18n}/index.js.map +0 -0
  700. /package/dist/{logger → common/i18n}/index.mjs.map +0 -0
  701. /package/dist/{ossFile → common/imageCrop}/index.js.map +0 -0
  702. /package/dist/{ossFile → common/imageCrop}/index.mjs.map +0 -0
  703. /package/dist/{ossFile/server → common/ossFile}/index.js.map +0 -0
  704. /package/dist/{ossFile/server → common/ossFile}/index.mjs.map +0 -0
  705. /package/dist/{request → common/ossFile/server}/index.js.map +0 -0
  706. /package/dist/{request → common/ossFile/server}/index.mjs.map +0 -0
  707. /package/dist/{storage → common/universalExport}/index.js.map +0 -0
  708. /package/dist/{storage → common/universalExport}/index.mjs.map +0 -0
  709. /package/dist/{universalExport → common/universalExport/server}/index.js.map +0 -0
  710. /package/dist/{universalExport → common/universalExport/server}/index.mjs.map +0 -0
  711. /package/dist/{universalExport → common/universalFile}/server/index.js.map +0 -0
  712. /package/dist/{universalExport → common/universalFile}/server/index.mjs.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/common/analytics/server/schema.ts","../../../../src/common/analytics/server/service.ts","../../../../src/common/analytics/server/handlers.ts"],"names":["analyticsEvents","sql"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * 埋点系统数据库 Schema\n * Analytics Database Schema\n *\n * 使用方式:\n * 在 backend/drizzle/migrations/schema.ts 中导入并导出:\n * export { analyticsEvents } from '@lyricnote/shared/analytics/server/schema'\n */\n\nimport { pgTable, text, timestamp, integer, jsonb, index } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\n\n/**\n * 埋点事件表\n */\nexport const analyticsEvents = pgTable(\n 'analytics_events',\n {\n id: text().primaryKey().notNull(),\n eventType: text('event_type').notNull(),\n eventName: text('event_name').notNull(),\n timestamp: timestamp({ precision: 3, mode: 'string' }).notNull(),\n priority: integer().notNull(),\n\n userId: text('user_id'),\n sessionId: text('session_id').notNull(),\n deviceId: text('device_id').notNull(),\n\n pageUrl: text('page_url'),\n pageTitle: text('page_title'),\n referrer: text(),\n\n properties: jsonb(),\n\n platform: text().notNull(),\n appVersion: text('app_version').notNull(),\n sdkVersion: text('sdk_version').notNull(),\n\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n },\n (table) => [\n index('analytics_events_user_id_idx').using(\n 'btree',\n table.userId.asc().nullsLast().op('text_ops')\n ),\n index('analytics_events_event_type_idx').using(\n 'btree',\n table.eventType.asc().nullsLast().op('text_ops')\n ),\n index('analytics_events_platform_idx').using(\n 'btree',\n table.platform.asc().nullsLast().op('text_ops')\n ),\n index('analytics_events_timestamp_idx').using('btree', table.timestamp.desc().nullsLast()),\n index('analytics_events_session_id_idx').using(\n 'btree',\n table.sessionId.asc().nullsLast().op('text_ops')\n ),\n ]\n);\n\n/**\n * 创建外键关系(需要在使用时手动添加)\n *\n * 在你的 schema.ts 中添加:\n *\n * foreignKey({\n * columns: [analyticsEvents.userId],\n * foreignColumns: [user.id],\n * name: \"analytics_events_userId_fkey\"\n * }).onUpdate(\"cascade\").onDelete(\"set null\")\n */\n","/**\n * 埋点分析服务\n * Analytics Service\n *\n * 使用方式:\n * import { createAnalyticsService } from '@lyricnote/shared/analytics/server'\n * const service = createAnalyticsService(db, analyticsEvents, logger)\n */\n\nimport { eq, and, gte, lte, sql, desc, asc, count, inArray } from 'drizzle-orm';\n\n// 导出类型\nexport * from './types';\nimport type {\n AnalyticsEvent,\n AnalyticsQueryParams,\n AnalyticsStats,\n UserBehavior,\n SessionAnalytics,\n DatabaseInstance,\n} from './types';\n\n// Logger 接口\ninterface Logger {\n info: (message: string, data?: any) => void;\n error: (message: string, error: Error) => void;\n}\n\n// 默认 logger(如果未提供)\nconst defaultLogger: Logger = {\n info: (message, data) => console.log('[Analytics] ' + (message), data || ''),\n error: (message, error) => console.error('[Analytics] ' + (message), error),\n};\n\n/**\n * 创建埋点服务实例\n * @param db - Drizzle 数据库实例\n * @param analyticsEventsTable - analytics_events 表定义\n * @param logger - 日志实例(可选)\n */\nexport function createAnalyticsService(\n db: DatabaseInstance,\n analyticsEventsTable: any,\n logger: Logger = defaultLogger\n) {\n const analyticsEvents = analyticsEventsTable;\n\n return {\n /**\n * 批量插入埋点事件\n */\n async insertAnalyticsEvents(events: AnalyticsEvent[]): Promise<void> {\n try {\n if (events.length === 0) return;\n\n // 使用 onConflictDoNothing 来忽略重复的事件 ID\n // 这样可以避免前端重试或离线队列导致的重复插入\n await db.insert(analyticsEvents).values(events).onConflictDoNothing();\n\n logger.info('Analytics events inserted', { count: events.length });\n } catch (error) {\n logger.error('Failed to insert analytics events', error as Error);\n throw error;\n }\n },\n\n /**\n * 查询埋点事件\n */\n async queryAnalyticsEvents(\n params: AnalyticsQueryParams\n ): Promise<{ events: AnalyticsEvent[]; total: number }> {\n try {\n const conditions: any[] = [];\n\n // 时间范围过滤\n if (params.startDate) {\n conditions.push(gte(analyticsEvents.timestamp, params.startDate));\n }\n if (params.endDate) {\n conditions.push(lte(analyticsEvents.timestamp, params.endDate));\n }\n\n // 事件类型过滤\n if (params.eventType) {\n conditions.push(eq(analyticsEvents.eventType, params.eventType));\n }\n if (params.eventTypes && params.eventTypes.length > 0) {\n conditions.push(inArray(analyticsEvents.eventType, params.eventTypes));\n }\n\n // 用户过滤\n if (params.userId) {\n conditions.push(eq(analyticsEvents.userId, params.userId));\n }\n\n // 平台过滤\n if (params.platform) {\n conditions.push(eq(analyticsEvents.platform, params.platform));\n }\n if (params.platforms && params.platforms.length > 0) {\n conditions.push(inArray(analyticsEvents.platform, params.platforms));\n }\n\n // 会话过滤\n if (params.sessionId) {\n conditions.push(eq(analyticsEvents.sessionId, params.sessionId));\n }\n\n const whereClause = conditions.length > 0 ? and(...conditions) : undefined;\n\n // 查询总数\n const [{ total }] = await db\n .select({ total: count() })\n .from(analyticsEvents)\n .where(whereClause);\n\n // 排序\n const orderByColumn = params.orderBy || 'timestamp';\n const orderDirection = params.orderDirection || 'desc';\n const orderFn = orderDirection === 'asc' ? asc : desc;\n\n let orderByField;\n switch (orderByColumn) {\n case 'eventType':\n orderByField = analyticsEvents.eventType;\n break;\n case 'platform':\n orderByField = analyticsEvents.platform;\n break;\n default:\n orderByField = analyticsEvents.timestamp;\n }\n\n // 查询数据\n const events = await db\n .select()\n .from(analyticsEvents)\n .where(whereClause)\n .orderBy(orderFn(orderByField))\n .limit(params.limit || 100)\n .offset(params.offset || 0);\n\n // 修复时间戳格式:添加 'Z' 后缀表示 UTC 时间\n const formattedEvents = events.map((event: any) => ({\n ...event,\n timestamp: event.timestamp.endsWith('Z') ? event.timestamp : (event.timestamp) + 'Z',\n createdAt: event.createdAt.endsWith('Z') ? event.createdAt : (event.createdAt) + 'Z',\n }));\n\n return {\n events: formattedEvents as AnalyticsEvent[],\n total: Number(total),\n };\n } catch (error) {\n logger.error('Failed to query analytics events', error as Error);\n throw error;\n }\n },\n\n /**\n * 获取统计数据\n */\n async getAnalyticsStats(\n startDate?: string,\n endDate?: string,\n platform?: string\n ): Promise<AnalyticsStats> {\n try {\n const conditions: any[] = [];\n\n if (startDate) {\n conditions.push(gte(analyticsEvents.timestamp, startDate));\n }\n if (endDate) {\n conditions.push(lte(analyticsEvents.timestamp, endDate));\n }\n if (platform) {\n conditions.push(eq(analyticsEvents.platform, platform));\n }\n\n const whereClause = conditions.length > 0 ? and(...conditions) : undefined;\n\n // 总事件数\n const [{ totalEvents }] = await db\n .select({ totalEvents: count() })\n .from(analyticsEvents)\n .where(whereClause);\n\n // 唯一用户数\n const [{ uniqueUsers }] = await db\n .select({ uniqueUsers: sql<number>`COUNT(DISTINCT ${analyticsEvents.userId})` })\n .from(analyticsEvents)\n .where(whereClause);\n\n // 唯一会话数\n const [{ uniqueSessions }] = await db\n .select({ uniqueSessions: sql<number>`COUNT(DISTINCT ${analyticsEvents.sessionId})` })\n .from(analyticsEvents)\n .where(whereClause);\n\n // 唯一设备数\n const [{ uniqueDevices }] = await db\n .select({ uniqueDevices: sql<number>`COUNT(DISTINCT ${analyticsEvents.deviceId})` })\n .from(analyticsEvents)\n .where(whereClause);\n\n // 按事件类型统计\n const eventsByType = await db\n .select({\n eventType: analyticsEvents.eventType,\n count: count(),\n })\n .from(analyticsEvents)\n .where(whereClause)\n .groupBy(analyticsEvents.eventType)\n .orderBy(desc(count()))\n .limit(10);\n\n // 按平台统计\n const eventsByPlatform = await db\n .select({\n platform: analyticsEvents.platform,\n count: count(),\n })\n .from(analyticsEvents)\n .where(whereClause)\n .groupBy(analyticsEvents.platform)\n .orderBy(desc(count()));\n\n // 热门页面\n const topPages = await db\n .select({\n pageUrl: analyticsEvents.pageUrl,\n count: count(),\n })\n .from(analyticsEvents)\n .where(and(whereClause, sql`${analyticsEvents.pageUrl} IS NOT NULL`))\n .groupBy(analyticsEvents.pageUrl)\n .orderBy(desc(count()))\n .limit(10);\n\n return {\n totalEvents: Number(totalEvents),\n uniqueUsers: Number(uniqueUsers),\n uniqueSessions: Number(uniqueSessions),\n uniqueDevices: Number(uniqueDevices),\n eventsByType: eventsByType.map((e: any) => ({\n eventType: e.eventType,\n count: Number(e.count),\n })),\n eventsByPlatform: eventsByPlatform.map((e: any) => ({\n platform: e.platform,\n count: Number(e.count),\n })),\n topPages: topPages\n .filter((p: any) => p.pageUrl)\n .map((p: any) => ({\n pageUrl: p.pageUrl!,\n count: Number(p.count),\n })),\n };\n } catch (error) {\n logger.error('Failed to get analytics stats', error as Error);\n throw error;\n }\n },\n\n /**\n * 获取用户行为分析\n */\n async getUserBehavior(\n userId: string,\n startDate?: string,\n endDate?: string\n ): Promise<UserBehavior | null> {\n try {\n const conditions: any[] = [eq(analyticsEvents.userId, userId)];\n\n if (startDate) {\n conditions.push(gte(analyticsEvents.timestamp, startDate));\n }\n if (endDate) {\n conditions.push(lte(analyticsEvents.timestamp, endDate));\n }\n\n const whereClause = and(...conditions);\n\n // 事件总数\n const [{ eventCount }] = await db\n .select({ eventCount: count() })\n .from(analyticsEvents)\n .where(whereClause);\n\n if (eventCount === 0) return null;\n\n // 最后活跃时间\n const [{ lastActive }] = await db\n .select({ lastActive: sql<string>`MAX(${analyticsEvents.timestamp})` })\n .from(analyticsEvents)\n .where(whereClause);\n\n // 使用的平台\n const platformsResult = await db\n .select({ platform: analyticsEvents.platform })\n .from(analyticsEvents)\n .where(whereClause)\n .groupBy(analyticsEvents.platform);\n\n // 热门事件\n const topEvents = await db\n .select({\n eventType: analyticsEvents.eventType,\n count: count(),\n })\n .from(analyticsEvents)\n .where(whereClause)\n .groupBy(analyticsEvents.eventType)\n .orderBy(desc(count()))\n .limit(5);\n\n return {\n userId,\n eventCount: Number(eventCount),\n lastActive,\n platforms: platformsResult.map((p: any) => p.platform),\n topEvents: topEvents.map((e: any) => ({\n eventType: e.eventType,\n count: Number(e.count),\n })),\n };\n } catch (error) {\n logger.error('Failed to get user behavior', error as Error);\n throw error;\n }\n },\n\n /**\n * 获取会话分析\n */\n async getSessionAnalytics(sessionId: string): Promise<SessionAnalytics | null> {\n try {\n const events = await db\n .select()\n .from(analyticsEvents)\n .where(eq(analyticsEvents.sessionId, sessionId))\n .orderBy(asc(analyticsEvents.timestamp));\n\n if (events.length === 0) return null;\n\n const firstEvent = events[0];\n const lastEvent = events[events.length - 1];\n\n const startTime = new Date(firstEvent.timestamp).getTime();\n const endTime = new Date(lastEvent.timestamp).getTime();\n const duration = endTime - startTime;\n\n return {\n sessionId,\n userId: firstEvent.userId || undefined,\n deviceId: firstEvent.deviceId,\n platform: firstEvent.platform,\n startTime: firstEvent.timestamp,\n endTime: lastEvent.timestamp,\n duration,\n eventCount: events.length,\n events: events as AnalyticsEvent[],\n };\n } catch (error) {\n logger.error('Failed to get session analytics', error as Error);\n throw error;\n }\n },\n\n /**\n * 获取漏斗分析\n */\n async getFunnelAnalysis(\n steps: string[],\n startDate?: string,\n endDate?: string\n ): Promise<{ step: string; count: number; conversionRate: number }[]> {\n try {\n const results = [];\n let previousCount = 0;\n\n for (let i = 0; i < steps.length; i++) {\n const conditions: any[] = [eq(analyticsEvents.eventType, steps[i])];\n\n if (startDate) {\n conditions.push(gte(analyticsEvents.timestamp, startDate));\n }\n if (endDate) {\n conditions.push(lte(analyticsEvents.timestamp, endDate));\n }\n\n const whereClause = and(...conditions);\n\n const [{ count: stepCount }] = await db\n .select({ count: sql<number>`COUNT(DISTINCT ${analyticsEvents.userId})` })\n .from(analyticsEvents)\n .where(whereClause);\n\n const conversionRate = i === 0 ? 100 : (Number(stepCount) / previousCount) * 100;\n\n results.push({\n step: steps[i] || 'unknown',\n count: Number(stepCount),\n conversionRate: Math.round(conversionRate * 100) / 100,\n });\n\n previousCount = Number(stepCount);\n }\n\n return results;\n } catch (error) {\n logger.error('Failed to get funnel analysis', error as Error);\n throw error;\n }\n },\n\n /**\n * 删除旧数据(数据清理)\n */\n async cleanOldAnalyticsEvents(daysToKeep: number = 90): Promise<number> {\n try {\n const cutoffDate = new Date();\n cutoffDate.setDate(cutoffDate.getDate() - daysToKeep);\n\n await db\n .delete(analyticsEvents)\n .where(lte(analyticsEvents.timestamp, cutoffDate.toISOString()));\n\n logger.info('Old analytics events cleaned', { daysToKeep });\n\n return 0; // Drizzle doesn't return affected rows count in delete\n } catch (error) {\n logger.error('Failed to clean old analytics events', error as Error);\n throw error;\n }\n },\n };\n}\n","/**\n * 埋点 API 路由处理器\n * Analytics API Route Handlers\n *\n * 使用方式(Next.js):\n * import { createAnalyticsHandlers } from '@lyricnote/shared/analytics/server'\n * const handlers = createAnalyticsHandlers(analyticsService)\n * export const POST = handlers.handleEventsPost\n */\n\nimport type { AnalyticsEvent, AnalyticsQueryParams } from './types';\n\n// 服务接口类型\ninterface AnalyticsService {\n insertAnalyticsEvents: (events: AnalyticsEvent[]) => Promise<void>;\n queryAnalyticsEvents: (\n params: AnalyticsQueryParams\n ) => Promise<{ events: AnalyticsEvent[]; total: number }>;\n getAnalyticsStats: (startDate?: string, endDate?: string, platform?: string) => Promise<any>;\n getUserBehavior: (userId: string, startDate?: string, endDate?: string) => Promise<any>;\n getSessionAnalytics: (sessionId: string) => Promise<any>;\n getFunnelAnalysis: (steps: string[], startDate?: string, endDate?: string) => Promise<any>;\n}\n\n// Request/Response 接口(兼容多种框架)\ninterface Request {\n json: () => Promise<any>;\n url?: string;\n nextUrl?: { searchParams: URLSearchParams };\n}\n\ninterface ResponseInit {\n status?: number;\n headers?: Record<string, string>;\n}\n\n/**\n * 创建埋点 API 处理器\n */\nexport function createAnalyticsHandlers(\n service: AnalyticsService,\n ResponseClass?: any // Next.js NextResponse 或其他响应类\n) {\n // 默认使用标准响应格式\n const createResponse = ResponseClass\n ? (data: any, init?: ResponseInit) => ResponseClass.json(data, init)\n : (data: any, init?: ResponseInit) => ({ body: data, status: init?.status || 200 });\n\n return {\n /**\n * POST /api/analytics/events\n * 处理事件上报\n */\n async handleEventsPost(request: Request) {\n try {\n const body = await request.json();\n const { events } = body;\n\n // 验证数据\n if (!Array.isArray(events)) {\n return createResponse(\n { success: false, message: 'Invalid events format' },\n { status: 400 }\n );\n }\n\n if (events.length === 0) {\n return createResponse(\n { success: true, message: 'No events to process' },\n { status: 200 }\n );\n }\n\n // 验证每个事件的必填字段\n for (const event of events) {\n if (!event.event_id || !event.event_type || !event.event_name) {\n return createResponse(\n { success: false, message: 'Missing required event fields' },\n { status: 400 }\n );\n }\n }\n\n // 转换字段名(前端使用 snake_case,数据库使用 camelCase)\n const formattedEvents = events.map((event) => ({\n id: event.event_id,\n eventType: event.event_type,\n eventName: event.event_name,\n timestamp: new Date(event.timestamp).toISOString(),\n priority: event.priority,\n userId: event.user_id || null,\n sessionId: event.session_id,\n deviceId: event.device_id,\n pageUrl: event.page_url || null,\n pageTitle: event.page_title || null,\n referrer: event.referrer || null,\n properties: event.properties || {},\n platform: event.platform,\n appVersion: event.app_version,\n sdkVersion: event.sdk_version,\n }));\n\n // 插入数据库\n await service.insertAnalyticsEvents(formattedEvents);\n\n return createResponse({\n success: true,\n message: 'Events received successfully',\n count: events.length,\n });\n } catch (error) {\n console.error('Failed to process analytics events', error);\n\n return createResponse(\n {\n success: false,\n message: 'Internal server error',\n error: process.env.NODE_ENV === 'development' ? (error as Error).message : undefined,\n },\n { status: 500 }\n );\n }\n },\n\n /**\n * GET /api/analytics/query\n * 查询埋点事件\n */\n async handleQueryGet(request: Request) {\n try {\n // 解析查询参数\n const searchParams =\n request.nextUrl?.searchParams || new URLSearchParams(request.url?.split('?')[1]);\n\n const params: AnalyticsQueryParams = {\n startDate: searchParams.get('startDate') || undefined,\n endDate: searchParams.get('endDate') || undefined,\n eventType: searchParams.get('eventType') || undefined,\n eventTypes: searchParams.get('eventTypes')?.split(',') || undefined,\n userId: searchParams.get('userId') || undefined,\n platform: searchParams.get('platform') || undefined,\n platforms: searchParams.get('platforms')?.split(',') || undefined,\n sessionId: searchParams.get('sessionId') || undefined,\n limit: parseInt(searchParams.get('limit') || '100'),\n offset: parseInt(searchParams.get('offset') || '0'),\n orderBy: (searchParams.get('orderBy') || 'timestamp') as any,\n orderDirection: (searchParams.get('orderDirection') || 'desc') as any,\n };\n\n // 查询数据\n const result = await service.queryAnalyticsEvents(params);\n\n return createResponse({\n success: true,\n data: result.events,\n total: result.total,\n limit: params.limit,\n offset: params.offset,\n });\n } catch (error) {\n console.error('Failed to query analytics events', error);\n\n return createResponse(\n {\n success: false,\n message: 'Internal server error',\n error: process.env.NODE_ENV === 'development' ? (error as Error).message : undefined,\n },\n { status: 500 }\n );\n }\n },\n\n /**\n * GET /api/analytics/stats\n * 获取统计数据\n */\n async handleStatsGet(request: Request) {\n try {\n const searchParams =\n request.nextUrl?.searchParams || new URLSearchParams(request.url?.split('?')[1]);\n\n const startDate = searchParams.get('startDate') || undefined;\n const endDate = searchParams.get('endDate') || undefined;\n const platform = searchParams.get('platform') || undefined;\n\n // 获取统计数据\n const stats = await service.getAnalyticsStats(startDate, endDate, platform);\n\n return createResponse({\n success: true,\n data: stats,\n });\n } catch (error) {\n console.error('Failed to get analytics stats', error);\n\n return createResponse(\n {\n success: false,\n message: 'Internal server error',\n error: process.env.NODE_ENV === 'development' ? (error as Error).message : undefined,\n },\n { status: 500 }\n );\n }\n },\n\n /**\n * GET /api/analytics/user/[userId]\n * 获取用户行为分析\n */\n async handleUserBehaviorGet(request: Request, params: { userId: string }) {\n try {\n const { userId } = params;\n const searchParams =\n request.nextUrl?.searchParams || new URLSearchParams(request.url?.split('?')[1]);\n\n const startDate = searchParams.get('startDate') || undefined;\n const endDate = searchParams.get('endDate') || undefined;\n\n // 获取用户行为数据\n const behavior = await service.getUserBehavior(userId, startDate, endDate);\n\n if (!behavior) {\n return createResponse(\n { success: false, message: 'No data found for this user' },\n { status: 404 }\n );\n }\n\n return createResponse({\n success: true,\n data: behavior,\n });\n } catch (error) {\n console.error('Failed to get user behavior', error);\n\n return createResponse(\n {\n success: false,\n message: 'Internal server error',\n error: process.env.NODE_ENV === 'development' ? (error as Error).message : undefined,\n },\n { status: 500 }\n );\n }\n },\n\n /**\n * GET /api/analytics/session/[sessionId]\n * 获取会话分析\n */\n async handleSessionAnalyticsGet(_request: Request, params: { sessionId: string }) {\n try {\n const { sessionId } = params;\n\n // 获取会话分析数据\n const session = await service.getSessionAnalytics(sessionId);\n\n if (!session) {\n return createResponse({ success: false, message: 'Session not found' }, { status: 404 });\n }\n\n return createResponse({\n success: true,\n data: session,\n });\n } catch (error) {\n console.error('Failed to get session analytics', error);\n\n return createResponse(\n {\n success: false,\n message: 'Internal server error',\n error: process.env.NODE_ENV === 'development' ? (error as Error).message : undefined,\n },\n { status: 500 }\n );\n }\n },\n\n /**\n * POST /api/analytics/funnel\n * 漏斗分析\n */\n async handleFunnelPost(request: Request) {\n try {\n const body = await request.json();\n const { steps, startDate, endDate } = body;\n\n // 验证数据\n if (!Array.isArray(steps) || steps.length === 0) {\n return createResponse(\n { success: false, message: 'Invalid steps format' },\n { status: 400 }\n );\n }\n\n // 获取漏斗分析数据\n const funnel = await service.getFunnelAnalysis(steps, startDate, endDate);\n\n return createResponse({\n success: true,\n data: funnel,\n });\n } catch (error) {\n console.error('Failed to get funnel analysis', error);\n\n return createResponse(\n {\n success: false,\n message: 'Internal server error',\n error: process.env.NODE_ENV === 'development' ? (error as Error).message : undefined,\n },\n { status: 500 }\n );\n }\n },\n };\n}\n"]}
@@ -1,3 +1,3 @@
1
- export { A as ApiResponse, c as ApiRoutes, b as AuthResponse, d as BaseApiClient, B as BaseApiClientConfig, a as DEFAULT_API_ROUTES, D as DEFAULT_STORAGE_KEYS, P as PaginationParams, S as StorageKeys } from '../index-CDqhODgC.mjs';
2
- export { S as StorageAdapter } from '../types-BaZccpvk.mjs';
3
- export { R as RequestAdapter, a as RequestConfig } from '../types-CbTsi9CZ.mjs';
1
+ export { A as ApiResponse, c as ApiRoutes, b as AuthResponse, d as BaseApiClient, B as BaseApiClientConfig, a as DEFAULT_API_ROUTES, D as DEFAULT_STORAGE_KEYS, P as PaginationParams, S as StorageKeys } from '../../index-CDqhODgC.mjs';
2
+ export { S as StorageAdapter } from '../../types-BaZccpvk.mjs';
3
+ export { R as RequestAdapter, a as RequestConfig } from '../../types-CbTsi9CZ.mjs';
@@ -1,3 +1,3 @@
1
- export { A as ApiResponse, c as ApiRoutes, b as AuthResponse, d as BaseApiClient, B as BaseApiClientConfig, a as DEFAULT_API_ROUTES, D as DEFAULT_STORAGE_KEYS, P as PaginationParams, S as StorageKeys } from '../index-BoZL0QD6.js';
2
- export { S as StorageAdapter } from '../types-BaZccpvk.js';
3
- export { R as RequestAdapter, a as RequestConfig } from '../types-CbTsi9CZ.js';
1
+ export { A as ApiResponse, c as ApiRoutes, b as AuthResponse, d as BaseApiClient, B as BaseApiClientConfig, a as DEFAULT_API_ROUTES, D as DEFAULT_STORAGE_KEYS, P as PaginationParams, S as StorageKeys } from '../../index-BoZL0QD6.js';
2
+ export { S as StorageAdapter } from '../../types-BaZccpvk.js';
3
+ export { R as RequestAdapter, a as RequestConfig } from '../../types-CbTsi9CZ.js';
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var chunk2234T4A6_js = require('../../chunk-2234T4A6.js');
4
+ require('../../chunk-NSBPE2FW.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "BaseApiClient", {
9
+ enumerable: true,
10
+ get: function () { return chunk2234T4A6_js.BaseApiClient; }
11
+ });
12
+ Object.defineProperty(exports, "DEFAULT_API_ROUTES", {
13
+ enumerable: true,
14
+ get: function () { return chunk2234T4A6_js.DEFAULT_API_ROUTES; }
15
+ });
16
+ Object.defineProperty(exports, "DEFAULT_STORAGE_KEYS", {
17
+ enumerable: true,
18
+ get: function () { return chunk2234T4A6_js.DEFAULT_STORAGE_KEYS; }
19
+ });
20
+ //# sourceMappingURL=index.js.map
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ export { BaseApiClient, DEFAULT_API_ROUTES, DEFAULT_STORAGE_KEYS } from '../../chunk-DO6QYAZV.mjs';
2
+ import '../../chunk-MAI35PU6.mjs';
3
+ //# sourceMappingURL=index.mjs.map
4
+ //# sourceMappingURL=index.mjs.map
@@ -1,4 +1,4 @@
1
- import React$1 from 'react';
1
+ import React__default from 'react';
2
2
  import { A as AuthActionsClient } from '../../../useAuthActions-7S5dL7Oh.mjs';
3
3
 
4
4
  /**
@@ -113,21 +113,21 @@ interface UserMenuProps {
113
113
  className?: string;
114
114
  }
115
115
 
116
- declare function SignInForm({ authClient, initialMode, onSuccess, onError, children, }: HeadlessSignInFormProps): React$1.JSX.Element;
116
+ declare function SignInForm({ authClient, initialMode, onSuccess, onError, children, }: HeadlessSignInFormProps): React__default.JSX.Element;
117
117
 
118
- declare function RegisterFormHeadless({ authClient, initialChannel, onSuccess, onError, children, }: HeadlessRegisterFormProps): React$1.JSX.Element;
118
+ declare function RegisterFormHeadless({ authClient, initialChannel, onSuccess, onError, children, }: HeadlessRegisterFormProps): React__default.JSX.Element;
119
119
 
120
- declare function VerifyOtpForm({ authClient, channel, target, onSuccess, onError, children, }: HeadlessVerifyOtpFormProps): React$1.JSX.Element;
120
+ declare function VerifyOtpForm({ authClient, channel, target, onSuccess, onError, children, }: HeadlessVerifyOtpFormProps): React__default.JSX.Element;
121
121
 
122
- declare function LoginModal({ isOpen, onClose, onSuccess, onSwitchToRegister, defaultMode, }: LoginModalProps): React$1.JSX.Element | null;
122
+ declare function LoginModal({ isOpen, onClose, onSuccess, onSwitchToRegister, defaultMode, }: LoginModalProps): React__default.JSX.Element | null;
123
123
 
124
- declare function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }: RegisterModalProps): React$1.JSX.Element | null;
124
+ declare function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }: RegisterModalProps): React__default.JSX.Element | null;
125
125
 
126
- declare function ForgotPasswordModal({ isOpen, onClose, onSuccess }: ForgotPasswordModalProps): React$1.JSX.Element | null;
126
+ declare function ForgotPasswordModal({ isOpen, onClose, onSuccess }: ForgotPasswordModalProps): React__default.JSX.Element | null;
127
127
 
128
- declare function AuthGuard({ children, fallback, requireAuth }: AuthGuardProps): React$1.JSX.Element;
128
+ declare function AuthGuard({ children, fallback, requireAuth }: AuthGuardProps): React__default.JSX.Element;
129
129
 
130
- declare function UserMenu({ customMenuItems, className }: UserMenuProps): React$1.JSX.Element;
130
+ declare function UserMenu({ customMenuItems, className }: UserMenuProps): React__default.JSX.Element;
131
131
 
132
132
  /** 中国大陆手机号 */
133
133
  declare function validatePhoneNumber(phone: string): boolean;
@@ -1,4 +1,4 @@
1
- import React$1 from 'react';
1
+ import React__default from 'react';
2
2
  import { A as AuthActionsClient } from '../../../useAuthActions-7S5dL7Oh.js';
3
3
 
4
4
  /**
@@ -113,21 +113,21 @@ interface UserMenuProps {
113
113
  className?: string;
114
114
  }
115
115
 
116
- declare function SignInForm({ authClient, initialMode, onSuccess, onError, children, }: HeadlessSignInFormProps): React$1.JSX.Element;
116
+ declare function SignInForm({ authClient, initialMode, onSuccess, onError, children, }: HeadlessSignInFormProps): React__default.JSX.Element;
117
117
 
118
- declare function RegisterFormHeadless({ authClient, initialChannel, onSuccess, onError, children, }: HeadlessRegisterFormProps): React$1.JSX.Element;
118
+ declare function RegisterFormHeadless({ authClient, initialChannel, onSuccess, onError, children, }: HeadlessRegisterFormProps): React__default.JSX.Element;
119
119
 
120
- declare function VerifyOtpForm({ authClient, channel, target, onSuccess, onError, children, }: HeadlessVerifyOtpFormProps): React$1.JSX.Element;
120
+ declare function VerifyOtpForm({ authClient, channel, target, onSuccess, onError, children, }: HeadlessVerifyOtpFormProps): React__default.JSX.Element;
121
121
 
122
- declare function LoginModal({ isOpen, onClose, onSuccess, onSwitchToRegister, defaultMode, }: LoginModalProps): React$1.JSX.Element | null;
122
+ declare function LoginModal({ isOpen, onClose, onSuccess, onSwitchToRegister, defaultMode, }: LoginModalProps): React__default.JSX.Element | null;
123
123
 
124
- declare function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }: RegisterModalProps): React$1.JSX.Element | null;
124
+ declare function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }: RegisterModalProps): React__default.JSX.Element | null;
125
125
 
126
- declare function ForgotPasswordModal({ isOpen, onClose, onSuccess }: ForgotPasswordModalProps): React$1.JSX.Element | null;
126
+ declare function ForgotPasswordModal({ isOpen, onClose, onSuccess }: ForgotPasswordModalProps): React__default.JSX.Element | null;
127
127
 
128
- declare function AuthGuard({ children, fallback, requireAuth }: AuthGuardProps): React$1.JSX.Element;
128
+ declare function AuthGuard({ children, fallback, requireAuth }: AuthGuardProps): React__default.JSX.Element;
129
129
 
130
- declare function UserMenu({ customMenuItems, className }: UserMenuProps): React$1.JSX.Element;
130
+ declare function UserMenu({ customMenuItems, className }: UserMenuProps): React__default.JSX.Element;
131
131
 
132
132
  /** 中国大陆手机号 */
133
133
  declare function validatePhoneNumber(phone: string): boolean;
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- require('../../chunk-HQLKOXG7.js');
4
- var chunkYTGUIRRH_js = require('../../chunk-YTGUIRRH.js');
3
+ require('../../chunk-36KGNXKW.js');
5
4
  var chunkPA4ELVGI_js = require('../../chunk-PA4ELVGI.js');
5
+ var chunkYTGUIRRH_js = require('../../chunk-YTGUIRRH.js');
6
6
  require('../../chunk-NSBPE2FW.js');
7
7
 
8
8
 
9
9
 
10
- Object.defineProperty(exports, "useSession", {
11
- enumerable: true,
12
- get: function () { return chunkYTGUIRRH_js.useSession; }
13
- });
14
10
  Object.defineProperty(exports, "createSa2kitAuthClient", {
15
11
  enumerable: true,
16
12
  get: function () { return chunkPA4ELVGI_js.createSa2kitAuthClient; }
17
13
  });
14
+ Object.defineProperty(exports, "useSession", {
15
+ enumerable: true,
16
+ get: function () { return chunkYTGUIRRH_js.useSession; }
17
+ });
18
18
  //# sourceMappingURL=index.js.map
19
19
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- import '../../chunk-5FUAQLGC.mjs';
2
- export { useSession } from '../../chunk-6YLCRWKM.mjs';
1
+ import '../../chunk-BDBJFOXM.mjs';
3
2
  export { createSa2kitAuthClient } from '../../chunk-TNJ6LYX7.mjs';
3
+ export { useSession } from '../../chunk-6YLCRWKM.mjs';
4
4
  import '../../chunk-MAI35PU6.mjs';
5
5
  //# sourceMappingURL=index.mjs.map
6
6
  //# sourceMappingURL=index.mjs.map
@@ -4,7 +4,7 @@ import * as better_auth_plugins_email_otp from 'better-auth/plugins/email-otp';
4
4
  import * as better_auth_plugins_phone_number from 'better-auth/plugins/phone-number';
5
5
  import * as better_auth_client from 'better-auth/client';
6
6
  import * as better_auth from 'better-auth';
7
- import React from 'react';
7
+ import React__default from 'react';
8
8
  import { U as UseAuthActionsReturn } from '../../../useAuthActions-7S5dL7Oh.mjs';
9
9
 
10
10
  type AuthUser = {
@@ -25,9 +25,9 @@ type AuthContextValue = UseAuthActionsReturn & {
25
25
  };
26
26
  type AuthProviderProps = {
27
27
  authClient: Sa2kitAuthClient;
28
- children: React.ReactNode;
28
+ children: React__default.ReactNode;
29
29
  };
30
- declare function AuthProvider({ authClient, children }: AuthProviderProps): React.JSX.Element;
30
+ declare function AuthProvider({ authClient, children }: AuthProviderProps): React__default.JSX.Element;
31
31
  declare function useAuthContext(): AuthContextValue;
32
32
 
33
33
  type Sa2kitAuthClientOptions = {
@@ -4,7 +4,7 @@ import * as better_auth_plugins_email_otp from 'better-auth/plugins/email-otp';
4
4
  import * as better_auth_plugins_phone_number from 'better-auth/plugins/phone-number';
5
5
  import * as better_auth_client from 'better-auth/client';
6
6
  import * as better_auth from 'better-auth';
7
- import React from 'react';
7
+ import React__default from 'react';
8
8
  import { U as UseAuthActionsReturn } from '../../../useAuthActions-7S5dL7Oh.js';
9
9
 
10
10
  type AuthUser = {
@@ -25,9 +25,9 @@ type AuthContextValue = UseAuthActionsReturn & {
25
25
  };
26
26
  type AuthProviderProps = {
27
27
  authClient: Sa2kitAuthClient;
28
- children: React.ReactNode;
28
+ children: React__default.ReactNode;
29
29
  };
30
- declare function AuthProvider({ authClient, children }: AuthProviderProps): React.JSX.Element;
30
+ declare function AuthProvider({ authClient, children }: AuthProviderProps): React__default.JSX.Element;
31
31
  declare function useAuthContext(): AuthContextValue;
32
32
 
33
33
  type Sa2kitAuthClientOptions = {
@@ -5,7 +5,7 @@ import * as better_auth_plugins_email_otp from 'better-auth/plugins/email-otp';
5
5
  import * as better_auth_plugins_phone_number from 'better-auth/plugins/phone-number';
6
6
  import * as better_auth_react from 'better-auth/react';
7
7
  import * as better_auth from 'better-auth';
8
- import React from 'react';
8
+ import React__default from 'react';
9
9
 
10
10
  type Sa2kitRnAuthClientOptions = {
11
11
  /** 应用根地址,如 http://10.0.2.2:3000 */
@@ -3117,6 +3117,6 @@ type RnAccountLoginFormProps = {
3117
3117
  password?: string;
3118
3118
  };
3119
3119
  };
3120
- declare function RnAccountLoginForm({ authApiBase, defaultAuthApiBase, onAuthApiBaseChange, submitting, error, onError, onSuccess, theme, labels: labelsProp, placeholders, }: RnAccountLoginFormProps): React.JSX.Element;
3120
+ declare function RnAccountLoginForm({ authApiBase, defaultAuthApiBase, onAuthApiBaseChange, submitting, error, onError, onSuccess, theme, labels: labelsProp, placeholders, }: RnAccountLoginFormProps): React__default.JSX.Element;
3121
3121
 
3122
3122
  export { RN_BEARER_TOKEN_KEY, RnAccountLoginForm, type RnAccountLoginFormProps, type RnAccountLoginLabels, type RnAccountLoginTheme, type RnBearerTokenStorage, type Sa2kitRnAuthClient, type Sa2kitRnAuthClientOptions, clearRnBearerToken, createSa2kitRnAuthClient, createSa2kitRnAuthClientFromApiBase, getRnBearerToken, initSa2kitRnAuthClient, normalizeRnAuthBaseUrl, resetSa2kitRnAuthClientCache, setRnBearerToken, setRnBearerTokenStorage, signInWithRnAuthClient, signOutSa2kitRnAuthClient };
@@ -5,7 +5,7 @@ import * as better_auth_plugins_email_otp from 'better-auth/plugins/email-otp';
5
5
  import * as better_auth_plugins_phone_number from 'better-auth/plugins/phone-number';
6
6
  import * as better_auth_react from 'better-auth/react';
7
7
  import * as better_auth from 'better-auth';
8
- import React from 'react';
8
+ import React__default from 'react';
9
9
 
10
10
  type Sa2kitRnAuthClientOptions = {
11
11
  /** 应用根地址,如 http://10.0.2.2:3000 */
@@ -3117,6 +3117,6 @@ type RnAccountLoginFormProps = {
3117
3117
  password?: string;
3118
3118
  };
3119
3119
  };
3120
- declare function RnAccountLoginForm({ authApiBase, defaultAuthApiBase, onAuthApiBaseChange, submitting, error, onError, onSuccess, theme, labels: labelsProp, placeholders, }: RnAccountLoginFormProps): React.JSX.Element;
3120
+ declare function RnAccountLoginForm({ authApiBase, defaultAuthApiBase, onAuthApiBaseChange, submitting, error, onError, onSuccess, theme, labels: labelsProp, placeholders, }: RnAccountLoginFormProps): React__default.JSX.Element;
3121
3121
 
3122
3122
  export { RN_BEARER_TOKEN_KEY, RnAccountLoginForm, type RnAccountLoginFormProps, type RnAccountLoginLabels, type RnAccountLoginTheme, type RnBearerTokenStorage, type Sa2kitRnAuthClient, type Sa2kitRnAuthClientOptions, clearRnBearerToken, createSa2kitRnAuthClient, createSa2kitRnAuthClientFromApiBase, getRnBearerToken, initSa2kitRnAuthClient, normalizeRnAuthBaseUrl, resetSa2kitRnAuthClientCache, setRnBearerToken, setRnBearerTokenStorage, signInWithRnAuthClient, signOutSa2kitRnAuthClient };
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkMIDXG6LS_js = require('../../../chunk-MIDXG6LS.js');
4
- var chunkCAYOQDBR_js = require('../../../chunk-CAYOQDBR.js');
4
+ var chunkUR5NENGE_js = require('../../../chunk-UR5NENGE.js');
5
5
  var chunkNSBPE2FW_js = require('../../../chunk-NSBPE2FW.js');
6
6
  var react = require('better-auth/react');
7
7
  var plugins = require('better-auth/client/plugins');
@@ -14,7 +14,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
14
14
  // src/common/auth/rn/token-storage.ts
15
15
  var RN_BEARER_TOKEN_KEY = "sa2kit_auth_bearer_token";
16
16
  var storageOverride = null;
17
- var defaultStorage = new chunkCAYOQDBR_js.ReactNativeStorageAdapter();
17
+ var defaultStorage = new chunkUR5NENGE_js.ReactNativeStorageAdapter();
18
18
  function storage() {
19
19
  return storageOverride ?? defaultStorage;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/common/auth/rn/token-storage.ts","../../../../src/common/auth/rn/create-rn-auth-client.ts","../../../../src/common/auth/rn/sign-in.ts","../../../../src/common/auth/rn/components/AccountLoginForm.tsx"],"names":["ReactNativeStorageAdapter","createAuthClient","emailOTPClient","phoneNumberClient","validatePhoneNumber","getAuthClientError","validateEmail","errorMessage","__require","useState","useEffect","useCallback","React"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * RN Bearer Token 持久化(AsyncStorage)\n */\nimport { ReactNativeStorageAdapter } from '../../../storage/adapters/react-native-adapter';\n\nexport const RN_BEARER_TOKEN_KEY = 'sa2kit_auth_bearer_token';\n\nexport type RnBearerTokenStorage = {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n};\n\nlet storageOverride: RnBearerTokenStorage | null = null;\nconst defaultStorage = new ReactNativeStorageAdapter();\n\nfunction storage(): RnBearerTokenStorage {\n return storageOverride ?? defaultStorage;\n}\n\n/** 测试或自定义存储注入 */\nexport function setRnBearerTokenStorage(next: RnBearerTokenStorage | null): void {\n storageOverride = next;\n}\n\nexport async function getRnBearerToken(): Promise<string | null> {\n return storage().getItem(RN_BEARER_TOKEN_KEY);\n}\n\nexport async function setRnBearerToken(token: string): Promise<void> {\n await storage().setItem(RN_BEARER_TOKEN_KEY, token);\n}\n\nexport async function clearRnBearerToken(): Promise<void> {\n await storage().removeItem(RN_BEARER_TOKEN_KEY);\n}\n","/**\n * Better Auth RN 客户端(Bearer + AsyncStorage,无 Cookie)\n */\nimport { createAuthClient } from 'better-auth/react';\nimport { emailOTPClient } from 'better-auth/client/plugins';\nimport { phoneNumberClient } from 'better-auth/client/plugins';\nimport {\n clearRnBearerToken,\n getRnBearerToken,\n setRnBearerToken,\n} from './token-storage';\n\nexport type Sa2kitRnAuthClientOptions = {\n /** 应用根地址,如 http://10.0.2.2:3000 */\n baseURL: string;\n basePath?: string;\n};\n\n/**\n * 兼容 legacy `authApiBase`(含 `/api` 或 `/api/auth` 后缀)\n */\nexport function normalizeRnAuthBaseUrl(authApiBase: string): {\n baseURL: string;\n basePath: string;\n} {\n const trimmed = authApiBase.replace(/\\/+$/, '');\n if (trimmed.endsWith('/api/auth')) {\n return {\n baseURL: trimmed.slice(0, -'/api/auth'.length),\n basePath: '/api/auth',\n };\n }\n if (trimmed.endsWith('/api')) {\n return {\n baseURL: trimmed.slice(0, -'/api'.length),\n basePath: '/api/auth',\n };\n }\n return {\n baseURL: trimmed,\n basePath: '/api/auth',\n };\n}\n\nfunction buildSa2kitRnAuthClient(options: Sa2kitRnAuthClientOptions) {\n return createAuthClient({\n baseURL: options.baseURL.replace(/\\/+$/, ''),\n basePath: options.basePath ?? '/api/auth',\n plugins: [emailOTPClient(), phoneNumberClient()],\n disableDefaultFetchPlugins: false,\n fetchOptions: {\n credentials: 'omit',\n onRequest: async (ctx) => {\n const token = await getRnBearerToken();\n if (token) {\n ctx.headers.set('Authorization', `Bearer ${token}`);\n }\n return ctx;\n },\n onResponse: async (ctx) => {\n const token = ctx.response.headers.get('set-auth-token');\n if (token) {\n await setRnBearerToken(token);\n }\n return ctx;\n },\n },\n });\n}\n\nexport type Sa2kitRnAuthClient = ReturnType<typeof buildSa2kitRnAuthClient>;\n\nlet cachedClient: Sa2kitRnAuthClient | null = null;\nlet cachedKey = '';\n\nfunction cacheKey(options: Sa2kitRnAuthClientOptions): string {\n return `${options.baseURL}|${options.basePath ?? '/api/auth'}`;\n}\n\nexport function createSa2kitRnAuthClient(options: Sa2kitRnAuthClientOptions): Sa2kitRnAuthClient {\n const key = cacheKey(options);\n if (cachedClient && cachedKey === key) {\n return cachedClient;\n }\n cachedClient = buildSa2kitRnAuthClient(options);\n cachedKey = key;\n return cachedClient;\n}\n\n/** 从 legacy authApiBase 创建客户端 */\nexport function createSa2kitRnAuthClientFromApiBase(authApiBase: string): Sa2kitRnAuthClient {\n const { baseURL, basePath } = normalizeRnAuthBaseUrl(authApiBase);\n return createSa2kitRnAuthClient({ baseURL, basePath });\n}\n\nexport async function initSa2kitRnAuthClient(\n options: Sa2kitRnAuthClientOptions | string,\n): Promise<Sa2kitRnAuthClient> {\n const client =\n typeof options === 'string'\n ? createSa2kitRnAuthClientFromApiBase(options)\n : createSa2kitRnAuthClient(options);\n\n const token = await getRnBearerToken();\n if (token) {\n try {\n await client.getSession();\n } catch {\n await clearRnBearerToken();\n }\n }\n return client;\n}\n\nexport async function signOutSa2kitRnAuthClient(client: Sa2kitRnAuthClient): Promise<void> {\n try {\n await client.signOut();\n } finally {\n await clearRnBearerToken();\n }\n}\n\nexport function resetSa2kitRnAuthClientCache(): void {\n cachedClient = null;\n cachedKey = '';\n}\n","import { validateEmail, validatePhoneNumber } from '../components/utils';\nimport { getAuthClientError, errorMessage } from '../components/utils';\nimport type { Sa2kitRnAuthClient } from './create-rn-auth-client';\n\ntype AuthClientLike = Sa2kitRnAuthClient & Record<string, unknown>;\n\nfunction clientApi(client: Sa2kitRnAuthClient): AuthClientLike {\n return client as AuthClientLike;\n}\n\nexport async function signInWithRnAuthClient(\n authClient: Sa2kitRnAuthClient,\n account: string,\n password: string,\n): Promise<{ success: true } | { success: false; error: string }> {\n const trimmed = account.trim();\n try {\n if (validatePhoneNumber(trimmed)) {\n const result = await clientApi(authClient).signIn.phoneNumber({\n phoneNumber: trimmed,\n password,\n });\n const err = getAuthClientError(result, '登录失败');\n return err ? { success: false, error: err } : { success: true };\n }\n\n if (validateEmail(trimmed)) {\n const result = await clientApi(authClient).signIn.email({\n email: trimmed,\n password,\n });\n const err = getAuthClientError(result, '登录失败');\n return err ? { success: false, error: err } : { success: true };\n }\n\n return { success: false, error: '请输入正确的手机号或邮箱' };\n } catch (e) {\n return { success: false, error: errorMessage(e, '登录失败') };\n }\n}\n","/**\n * RN 账密登录(Better Auth 3.0 — 手机/邮箱 + Bearer)\n */\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { validateEmail, validatePhoneNumber } from '../../components/utils';\nimport {\n initSa2kitRnAuthClient,\n resetSa2kitRnAuthClientCache,\n type Sa2kitRnAuthClient,\n} from '../create-rn-auth-client';\nimport { getRnBearerToken } from '../token-storage';\nimport { signInWithRnAuthClient } from '../sign-in';\n\n// @ts-expect-error react-native 由宿主在运行时提供\nconst ReactNative = require('react-native') as typeof import('react-native');\nconst { ActivityIndicator, Pressable, Text, TextInput, View, StyleSheet } = ReactNative;\n\nconst defaultStyles = StyleSheet.create({\n label: { fontSize: 12, color: '#8b98a5', marginBottom: 6, marginTop: 12 },\n input: {\n borderWidth: 1,\n borderColor: 'rgba(255,255,255,0.12)',\n borderRadius: 10,\n paddingHorizontal: 12,\n paddingVertical: 10,\n color: '#e8edf2',\n backgroundColor: 'rgba(0,0,0,0.2)',\n fontSize: 15,\n },\n err: { color: '#f87171', marginTop: 10, fontSize: 14 },\n btn: {\n marginTop: 14,\n paddingVertical: 12,\n borderRadius: 10,\n alignItems: 'center',\n borderWidth: 1,\n borderColor: 'rgba(255,255,255,0.12)',\n backgroundColor: 'rgba(255,255,255,0.08)',\n },\n primary: { backgroundColor: '#3d9eff', borderColor: 'transparent' },\n disabled: { opacity: 0.6 },\n btnTextPrimary: { color: '#fff', fontSize: 15, fontWeight: '600' },\n centerInline: { paddingVertical: 24, alignItems: 'center' },\n});\n\nconst DEFAULT_LABELS = {\n authApiBase: '认证 API 根地址(含 /api)',\n account: '手机号 / 邮箱',\n password: '密码',\n submit: '登录',\n} as const;\n\nexport type RnAccountLoginTheme = Partial<{\n label: object;\n input: object;\n inputContainer: object;\n error: object;\n button: object;\n buttonPrimary: object;\n buttonText: object;\n buttonTextPrimary: object;\n buttonDisabled: object;\n loadingContainer: object;\n}>;\n\nexport type RnAccountLoginLabels = {\n authApiBase?: string;\n account?: string;\n phone?: string;\n email?: string;\n password?: string;\n submit?: string;\n};\n\nexport type RnAccountLoginFormProps = {\n authApiBase: string;\n defaultAuthApiBase?: string;\n onAuthApiBaseChange?: (value: string) => void;\n submitting?: boolean;\n error?: string;\n onError?: (message: string) => void;\n /** 登录成功,返回 Bearer session token */\n onSuccess: (token: string) => void | Promise<void>;\n theme?: RnAccountLoginTheme;\n labels?: RnAccountLoginLabels;\n placeholders?: {\n authApiBase?: string;\n account?: string;\n phone?: string;\n email?: string;\n password?: string;\n };\n};\n\nexport function RnAccountLoginForm({\n authApiBase,\n defaultAuthApiBase = '',\n onAuthApiBaseChange,\n submitting = false,\n error = '',\n onError,\n onSuccess,\n theme,\n labels: labelsProp,\n placeholders,\n}: RnAccountLoginFormProps) {\n const labels = {\n ...DEFAULT_LABELS,\n account: labelsProp?.account ?? labelsProp?.phone ?? labelsProp?.email ?? DEFAULT_LABELS.account,\n ...labelsProp,\n };\n const [authClient, setAuthClient] = useState<Sa2kitRnAuthClient | null>(null);\n const [account, setAccount] = useState('');\n const [password, setPassword] = useState('');\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n let cancelled = false;\n const base = authApiBase.trim() || defaultAuthApiBase;\n if (!base) {\n setAuthClient(null);\n return;\n }\n resetSa2kitRnAuthClientCache();\n initSa2kitRnAuthClient(base).then((client) => {\n if (!cancelled) setAuthClient(client);\n });\n return () => {\n cancelled = true;\n };\n }, [authApiBase, defaultAuthApiBase]);\n\n const handleSubmit = useCallback(async () => {\n if (!authClient) return;\n onError?.('');\n setLoading(true);\n try {\n const trimmedAccount = account.trim();\n if (!trimmedAccount || !password) {\n onError?.('请填写账号和密码');\n return;\n }\n\n const result = await signInWithRnAuthClient(authClient, trimmedAccount, password);\n if (!result.success) {\n onError?.(result.error);\n return;\n }\n\n const token = await getRnBearerToken();\n if (!token) {\n onError?.('登录成功但未获取到 Bearer token');\n return;\n }\n await onSuccess(token);\n } finally {\n setLoading(false);\n }\n }, [account, authClient, onError, onSuccess, password]);\n\n const authApiField = onAuthApiBaseChange ? (\n <>\n <Text style={[defaultStyles.label, theme?.label]}>{labels.authApiBase}</Text>\n <TextInput\n style={[defaultStyles.input, theme?.input, theme?.inputContainer]}\n value={authApiBase}\n onChangeText={onAuthApiBaseChange}\n autoCapitalize=\"none\"\n autoCorrect={false}\n placeholder={placeholders?.authApiBase ?? defaultAuthApiBase}\n placeholderTextColor=\"#6b7a8a\"\n />\n </>\n ) : null;\n\n if (!authClient) {\n return (\n <View style={[defaultStyles.centerInline, theme?.loadingContainer]}>\n <ActivityIndicator />\n </View>\n );\n }\n\n const busy = loading || submitting;\n\n return (\n <>\n {authApiField}\n <Text style={[defaultStyles.label, theme?.label]}>{labels.account}</Text>\n <TextInput\n style={[defaultStyles.input, theme?.input, theme?.inputContainer]}\n value={account}\n onChangeText={setAccount}\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n placeholder={placeholders?.account ?? placeholders?.phone ?? '手机号或邮箱'}\n placeholderTextColor=\"#6b7a8a\"\n />\n <Text style={[defaultStyles.label, theme?.label]}>{labels.password}</Text>\n <TextInput\n style={[defaultStyles.input, theme?.input, theme?.inputContainer]}\n value={password}\n onChangeText={setPassword}\n secureTextEntry\n autoCapitalize=\"none\"\n autoCorrect={false}\n placeholder={placeholders?.password ?? '密码'}\n placeholderTextColor=\"#6b7a8a\"\n />\n {error ? <Text style={[defaultStyles.err, theme?.error]}>{error}</Text> : null}\n <Pressable\n style={[\n defaultStyles.btn,\n defaultStyles.primary,\n theme?.button,\n theme?.buttonPrimary,\n busy && (theme?.buttonDisabled ?? defaultStyles.disabled),\n ]}\n onPress={() => void handleSubmit()}\n disabled={busy}>\n {busy ? (\n <ActivityIndicator color=\"#fff\" />\n ) : (\n <Text style={[defaultStyles.btnTextPrimary, theme?.buttonTextPrimary]}>{labels.submit}</Text>\n )}\n </Pressable>\n </>\n );\n}\n\n/** @deprecated 使用 validatePhoneNumber */\nexport function isPhoneAccount(account: string): boolean {\n return validatePhoneNumber(account.trim());\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/common/auth/rn/token-storage.ts","../../../../src/common/auth/rn/create-rn-auth-client.ts","../../../../src/common/auth/rn/sign-in.ts","../../../../src/common/auth/rn/components/AccountLoginForm.tsx"],"names":["ReactNativeStorageAdapter","createAuthClient","emailOTPClient","phoneNumberClient","validatePhoneNumber","getAuthClientError","validateEmail","errorMessage","__require","useState","useEffect","useCallback","React"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * RN Bearer Token 持久化(AsyncStorage)\n */\nimport { ReactNativeStorageAdapter } from '../../storage/adapters/react-native-adapter';\n\nexport const RN_BEARER_TOKEN_KEY = 'sa2kit_auth_bearer_token';\n\nexport type RnBearerTokenStorage = {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n};\n\nlet storageOverride: RnBearerTokenStorage | null = null;\nconst defaultStorage = new ReactNativeStorageAdapter();\n\nfunction storage(): RnBearerTokenStorage {\n return storageOverride ?? defaultStorage;\n}\n\n/** 测试或自定义存储注入 */\nexport function setRnBearerTokenStorage(next: RnBearerTokenStorage | null): void {\n storageOverride = next;\n}\n\nexport async function getRnBearerToken(): Promise<string | null> {\n return storage().getItem(RN_BEARER_TOKEN_KEY);\n}\n\nexport async function setRnBearerToken(token: string): Promise<void> {\n await storage().setItem(RN_BEARER_TOKEN_KEY, token);\n}\n\nexport async function clearRnBearerToken(): Promise<void> {\n await storage().removeItem(RN_BEARER_TOKEN_KEY);\n}\n","/**\n * Better Auth RN 客户端(Bearer + AsyncStorage,无 Cookie)\n */\nimport { createAuthClient } from 'better-auth/react';\nimport { emailOTPClient } from 'better-auth/client/plugins';\nimport { phoneNumberClient } from 'better-auth/client/plugins';\nimport {\n clearRnBearerToken,\n getRnBearerToken,\n setRnBearerToken,\n} from './token-storage';\n\nexport type Sa2kitRnAuthClientOptions = {\n /** 应用根地址,如 http://10.0.2.2:3000 */\n baseURL: string;\n basePath?: string;\n};\n\n/**\n * 兼容 legacy `authApiBase`(含 `/api` 或 `/api/auth` 后缀)\n */\nexport function normalizeRnAuthBaseUrl(authApiBase: string): {\n baseURL: string;\n basePath: string;\n} {\n const trimmed = authApiBase.replace(/\\/+$/, '');\n if (trimmed.endsWith('/api/auth')) {\n return {\n baseURL: trimmed.slice(0, -'/api/auth'.length),\n basePath: '/api/auth',\n };\n }\n if (trimmed.endsWith('/api')) {\n return {\n baseURL: trimmed.slice(0, -'/api'.length),\n basePath: '/api/auth',\n };\n }\n return {\n baseURL: trimmed,\n basePath: '/api/auth',\n };\n}\n\nfunction buildSa2kitRnAuthClient(options: Sa2kitRnAuthClientOptions) {\n return createAuthClient({\n baseURL: options.baseURL.replace(/\\/+$/, ''),\n basePath: options.basePath ?? '/api/auth',\n plugins: [emailOTPClient(), phoneNumberClient()],\n disableDefaultFetchPlugins: false,\n fetchOptions: {\n credentials: 'omit',\n onRequest: async (ctx) => {\n const token = await getRnBearerToken();\n if (token) {\n ctx.headers.set('Authorization', `Bearer ${token}`);\n }\n return ctx;\n },\n onResponse: async (ctx) => {\n const token = ctx.response.headers.get('set-auth-token');\n if (token) {\n await setRnBearerToken(token);\n }\n return ctx;\n },\n },\n });\n}\n\nexport type Sa2kitRnAuthClient = ReturnType<typeof buildSa2kitRnAuthClient>;\n\nlet cachedClient: Sa2kitRnAuthClient | null = null;\nlet cachedKey = '';\n\nfunction cacheKey(options: Sa2kitRnAuthClientOptions): string {\n return `${options.baseURL}|${options.basePath ?? '/api/auth'}`;\n}\n\nexport function createSa2kitRnAuthClient(options: Sa2kitRnAuthClientOptions): Sa2kitRnAuthClient {\n const key = cacheKey(options);\n if (cachedClient && cachedKey === key) {\n return cachedClient;\n }\n cachedClient = buildSa2kitRnAuthClient(options);\n cachedKey = key;\n return cachedClient;\n}\n\n/** 从 legacy authApiBase 创建客户端 */\nexport function createSa2kitRnAuthClientFromApiBase(authApiBase: string): Sa2kitRnAuthClient {\n const { baseURL, basePath } = normalizeRnAuthBaseUrl(authApiBase);\n return createSa2kitRnAuthClient({ baseURL, basePath });\n}\n\nexport async function initSa2kitRnAuthClient(\n options: Sa2kitRnAuthClientOptions | string,\n): Promise<Sa2kitRnAuthClient> {\n const client =\n typeof options === 'string'\n ? createSa2kitRnAuthClientFromApiBase(options)\n : createSa2kitRnAuthClient(options);\n\n const token = await getRnBearerToken();\n if (token) {\n try {\n await client.getSession();\n } catch {\n await clearRnBearerToken();\n }\n }\n return client;\n}\n\nexport async function signOutSa2kitRnAuthClient(client: Sa2kitRnAuthClient): Promise<void> {\n try {\n await client.signOut();\n } finally {\n await clearRnBearerToken();\n }\n}\n\nexport function resetSa2kitRnAuthClientCache(): void {\n cachedClient = null;\n cachedKey = '';\n}\n","import { validateEmail, validatePhoneNumber } from '../components/utils';\nimport { getAuthClientError, errorMessage } from '../components/utils';\nimport type { Sa2kitRnAuthClient } from './create-rn-auth-client';\n\ntype AuthClientLike = Sa2kitRnAuthClient & Record<string, unknown>;\n\nfunction clientApi(client: Sa2kitRnAuthClient): AuthClientLike {\n return client as AuthClientLike;\n}\n\nexport async function signInWithRnAuthClient(\n authClient: Sa2kitRnAuthClient,\n account: string,\n password: string,\n): Promise<{ success: true } | { success: false; error: string }> {\n const trimmed = account.trim();\n try {\n if (validatePhoneNumber(trimmed)) {\n const result = await clientApi(authClient).signIn.phoneNumber({\n phoneNumber: trimmed,\n password,\n });\n const err = getAuthClientError(result, '登录失败');\n return err ? { success: false, error: err } : { success: true };\n }\n\n if (validateEmail(trimmed)) {\n const result = await clientApi(authClient).signIn.email({\n email: trimmed,\n password,\n });\n const err = getAuthClientError(result, '登录失败');\n return err ? { success: false, error: err } : { success: true };\n }\n\n return { success: false, error: '请输入正确的手机号或邮箱' };\n } catch (e) {\n return { success: false, error: errorMessage(e, '登录失败') };\n }\n}\n","/**\n * RN 账密登录(Better Auth 3.0 — 手机/邮箱 + Bearer)\n */\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { validateEmail, validatePhoneNumber } from '../../components/utils';\nimport {\n initSa2kitRnAuthClient,\n resetSa2kitRnAuthClientCache,\n type Sa2kitRnAuthClient,\n} from '../create-rn-auth-client';\nimport { getRnBearerToken } from '../token-storage';\nimport { signInWithRnAuthClient } from '../sign-in';\n\n// @ts-expect-error react-native 由宿主在运行时提供\nconst ReactNative = require('react-native') as typeof import('react-native');\nconst { ActivityIndicator, Pressable, Text, TextInput, View, StyleSheet } = ReactNative;\n\nconst defaultStyles = StyleSheet.create({\n label: { fontSize: 12, color: '#8b98a5', marginBottom: 6, marginTop: 12 },\n input: {\n borderWidth: 1,\n borderColor: 'rgba(255,255,255,0.12)',\n borderRadius: 10,\n paddingHorizontal: 12,\n paddingVertical: 10,\n color: '#e8edf2',\n backgroundColor: 'rgba(0,0,0,0.2)',\n fontSize: 15,\n },\n err: { color: '#f87171', marginTop: 10, fontSize: 14 },\n btn: {\n marginTop: 14,\n paddingVertical: 12,\n borderRadius: 10,\n alignItems: 'center',\n borderWidth: 1,\n borderColor: 'rgba(255,255,255,0.12)',\n backgroundColor: 'rgba(255,255,255,0.08)',\n },\n primary: { backgroundColor: '#3d9eff', borderColor: 'transparent' },\n disabled: { opacity: 0.6 },\n btnTextPrimary: { color: '#fff', fontSize: 15, fontWeight: '600' },\n centerInline: { paddingVertical: 24, alignItems: 'center' },\n});\n\nconst DEFAULT_LABELS = {\n authApiBase: '认证 API 根地址(含 /api)',\n account: '手机号 / 邮箱',\n password: '密码',\n submit: '登录',\n} as const;\n\nexport type RnAccountLoginTheme = Partial<{\n label: object;\n input: object;\n inputContainer: object;\n error: object;\n button: object;\n buttonPrimary: object;\n buttonText: object;\n buttonTextPrimary: object;\n buttonDisabled: object;\n loadingContainer: object;\n}>;\n\nexport type RnAccountLoginLabels = {\n authApiBase?: string;\n account?: string;\n phone?: string;\n email?: string;\n password?: string;\n submit?: string;\n};\n\nexport type RnAccountLoginFormProps = {\n authApiBase: string;\n defaultAuthApiBase?: string;\n onAuthApiBaseChange?: (value: string) => void;\n submitting?: boolean;\n error?: string;\n onError?: (message: string) => void;\n /** 登录成功,返回 Bearer session token */\n onSuccess: (token: string) => void | Promise<void>;\n theme?: RnAccountLoginTheme;\n labels?: RnAccountLoginLabels;\n placeholders?: {\n authApiBase?: string;\n account?: string;\n phone?: string;\n email?: string;\n password?: string;\n };\n};\n\nexport function RnAccountLoginForm({\n authApiBase,\n defaultAuthApiBase = '',\n onAuthApiBaseChange,\n submitting = false,\n error = '',\n onError,\n onSuccess,\n theme,\n labels: labelsProp,\n placeholders,\n}: RnAccountLoginFormProps) {\n const labels = {\n ...DEFAULT_LABELS,\n account: labelsProp?.account ?? labelsProp?.phone ?? labelsProp?.email ?? DEFAULT_LABELS.account,\n ...labelsProp,\n };\n const [authClient, setAuthClient] = useState<Sa2kitRnAuthClient | null>(null);\n const [account, setAccount] = useState('');\n const [password, setPassword] = useState('');\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n let cancelled = false;\n const base = authApiBase.trim() || defaultAuthApiBase;\n if (!base) {\n setAuthClient(null);\n return;\n }\n resetSa2kitRnAuthClientCache();\n initSa2kitRnAuthClient(base).then((client) => {\n if (!cancelled) setAuthClient(client);\n });\n return () => {\n cancelled = true;\n };\n }, [authApiBase, defaultAuthApiBase]);\n\n const handleSubmit = useCallback(async () => {\n if (!authClient) return;\n onError?.('');\n setLoading(true);\n try {\n const trimmedAccount = account.trim();\n if (!trimmedAccount || !password) {\n onError?.('请填写账号和密码');\n return;\n }\n\n const result = await signInWithRnAuthClient(authClient, trimmedAccount, password);\n if (!result.success) {\n onError?.(result.error);\n return;\n }\n\n const token = await getRnBearerToken();\n if (!token) {\n onError?.('登录成功但未获取到 Bearer token');\n return;\n }\n await onSuccess(token);\n } finally {\n setLoading(false);\n }\n }, [account, authClient, onError, onSuccess, password]);\n\n const authApiField = onAuthApiBaseChange ? (\n <>\n <Text style={[defaultStyles.label, theme?.label]}>{labels.authApiBase}</Text>\n <TextInput\n style={[defaultStyles.input, theme?.input, theme?.inputContainer]}\n value={authApiBase}\n onChangeText={onAuthApiBaseChange}\n autoCapitalize=\"none\"\n autoCorrect={false}\n placeholder={placeholders?.authApiBase ?? defaultAuthApiBase}\n placeholderTextColor=\"#6b7a8a\"\n />\n </>\n ) : null;\n\n if (!authClient) {\n return (\n <View style={[defaultStyles.centerInline, theme?.loadingContainer]}>\n <ActivityIndicator />\n </View>\n );\n }\n\n const busy = loading || submitting;\n\n return (\n <>\n {authApiField}\n <Text style={[defaultStyles.label, theme?.label]}>{labels.account}</Text>\n <TextInput\n style={[defaultStyles.input, theme?.input, theme?.inputContainer]}\n value={account}\n onChangeText={setAccount}\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n placeholder={placeholders?.account ?? placeholders?.phone ?? '手机号或邮箱'}\n placeholderTextColor=\"#6b7a8a\"\n />\n <Text style={[defaultStyles.label, theme?.label]}>{labels.password}</Text>\n <TextInput\n style={[defaultStyles.input, theme?.input, theme?.inputContainer]}\n value={password}\n onChangeText={setPassword}\n secureTextEntry\n autoCapitalize=\"none\"\n autoCorrect={false}\n placeholder={placeholders?.password ?? '密码'}\n placeholderTextColor=\"#6b7a8a\"\n />\n {error ? <Text style={[defaultStyles.err, theme?.error]}>{error}</Text> : null}\n <Pressable\n style={[\n defaultStyles.btn,\n defaultStyles.primary,\n theme?.button,\n theme?.buttonPrimary,\n busy && (theme?.buttonDisabled ?? defaultStyles.disabled),\n ]}\n onPress={() => void handleSubmit()}\n disabled={busy}>\n {busy ? (\n <ActivityIndicator color=\"#fff\" />\n ) : (\n <Text style={[defaultStyles.btnTextPrimary, theme?.buttonTextPrimary]}>{labels.submit}</Text>\n )}\n </Pressable>\n </>\n );\n}\n\n/** @deprecated 使用 validatePhoneNumber */\nexport function isPhoneAccount(account: string): boolean {\n return validatePhoneNumber(account.trim());\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { validatePhoneNumber, getAuthClientError, validateEmail, errorMessage } from '../../../chunk-ZF7DKR5A.mjs';
2
- import { ReactNativeStorageAdapter } from '../../../chunk-Q5VFBPMG.mjs';
2
+ import { ReactNativeStorageAdapter } from '../../../chunk-P7JQRNBJ.mjs';
3
3
  import { __require } from '../../../chunk-MAI35PU6.mjs';
4
4
  import { createAuthClient } from 'better-auth/react';
5
5
  import { emailOTPClient, phoneNumberClient } from 'better-auth/client/plugins';