sa2kit 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/README.md +5 -5
  2. package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
  3. package/dist/AliyunOSSProvider-7IOT5U6M.js.map +1 -0
  4. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
  5. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs.map +1 -0
  6. package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
  7. package/dist/LocalStorageProvider-KJKRCKBS.js.map +1 -0
  8. package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
  9. package/dist/LocalStorageProvider-O22465NY.mjs.map +1 -0
  10. package/dist/chunk-2234T4A6.js +303 -0
  11. package/dist/chunk-2234T4A6.js.map +1 -0
  12. package/dist/chunk-36KGNXKW.js +16 -0
  13. package/dist/chunk-36KGNXKW.js.map +1 -0
  14. package/dist/chunk-375C7WL7.js +2695 -0
  15. package/dist/chunk-375C7WL7.js.map +1 -0
  16. package/dist/chunk-3J24Z4MB.js +991 -0
  17. package/dist/chunk-3J24Z4MB.js.map +1 -0
  18. package/dist/chunk-3QCATFQV.js +43 -0
  19. package/dist/chunk-3QCATFQV.js.map +1 -0
  20. package/dist/chunk-3R6JHA6D.js +120 -0
  21. package/dist/chunk-3R6JHA6D.js.map +1 -0
  22. package/dist/chunk-4OXKHV7J.js +43 -0
  23. package/dist/chunk-4OXKHV7J.js.map +1 -0
  24. package/dist/chunk-4PJM4752.js +4 -0
  25. package/dist/chunk-4PJM4752.js.map +1 -0
  26. package/dist/chunk-65JRVC3F.mjs +54 -0
  27. package/dist/chunk-65JRVC3F.mjs.map +1 -0
  28. package/dist/chunk-6HL54I2B.js +336 -0
  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-6YLCRWKM.mjs +8 -0
  33. package/dist/chunk-6YLCRWKM.mjs.map +1 -0
  34. package/dist/chunk-7CRU2Y5X.mjs +152 -0
  35. package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
  36. package/dist/chunk-7PMT4L4I.js +324 -0
  37. package/dist/chunk-7PMT4L4I.js.map +1 -0
  38. package/dist/chunk-7VVZHFEM.js +88 -0
  39. package/dist/chunk-7VVZHFEM.js.map +1 -0
  40. package/dist/chunk-AWHGIKTQ.js +56 -0
  41. package/dist/chunk-AWHGIKTQ.js.map +1 -0
  42. package/dist/chunk-B3GYF6TY.js +37 -0
  43. package/dist/chunk-B3GYF6TY.js.map +1 -0
  44. package/dist/chunk-BDBJFOXM.mjs +14 -0
  45. package/dist/chunk-BDBJFOXM.mjs.map +1 -0
  46. package/dist/chunk-BTW3SWQN.mjs +25 -0
  47. package/dist/chunk-BTW3SWQN.mjs.map +1 -0
  48. package/dist/chunk-CHYSSZ4E.mjs +734 -0
  49. package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
  50. package/dist/chunk-DO6QYAZV.mjs +298 -0
  51. package/dist/chunk-DO6QYAZV.mjs.map +1 -0
  52. package/dist/chunk-DTR53LQO.mjs +781 -0
  53. package/dist/chunk-DTR53LQO.mjs.map +1 -0
  54. package/dist/chunk-EI2S4XDG.mjs +89 -0
  55. package/dist/chunk-EI2S4XDG.mjs.map +1 -0
  56. package/dist/chunk-EOZHUI46.js +93 -0
  57. package/dist/chunk-EOZHUI46.js.map +1 -0
  58. package/dist/chunk-F2BZIU67.js +184 -0
  59. package/dist/chunk-F2BZIU67.js.map +1 -0
  60. package/dist/chunk-F2TEJSCP.js +756 -0
  61. package/dist/chunk-F2TEJSCP.js.map +1 -0
  62. package/dist/chunk-FCLS5R24.js +148 -0
  63. package/dist/chunk-FCLS5R24.js.map +1 -0
  64. package/dist/chunk-FUA6ZGMI.mjs +376 -0
  65. package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
  66. package/dist/chunk-FY2X3LYR.mjs +3 -0
  67. package/dist/chunk-FY2X3LYR.mjs.map +1 -0
  68. package/dist/chunk-GS4SAW25.mjs +116 -0
  69. package/dist/chunk-GS4SAW25.mjs.map +1 -0
  70. package/dist/chunk-H56ICWUO.js +321 -0
  71. package/dist/chunk-H56ICWUO.js.map +1 -0
  72. package/dist/chunk-HG34SGMN.mjs +546 -0
  73. package/dist/chunk-HG34SGMN.mjs.map +1 -0
  74. package/dist/chunk-HL4H2HF6.js +279 -0
  75. package/dist/chunk-HL4H2HF6.js.map +1 -0
  76. package/dist/chunk-IJIQUMAK.mjs +272 -0
  77. package/dist/chunk-IJIQUMAK.mjs.map +1 -0
  78. package/dist/chunk-KEZFTDZT.mjs +559 -0
  79. package/dist/chunk-KEZFTDZT.mjs.map +1 -0
  80. package/dist/chunk-KHOVC2KL.js +144 -0
  81. package/dist/chunk-KHOVC2KL.js.map +1 -0
  82. package/dist/chunk-KRBSTLKC.js +6154 -0
  83. package/dist/chunk-KRBSTLKC.js.map +1 -0
  84. package/dist/chunk-KVYHCGRY.js +2011 -0
  85. package/dist/chunk-KVYHCGRY.js.map +1 -0
  86. package/dist/chunk-LZ5YTMMP.mjs +41 -0
  87. package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
  88. package/dist/chunk-MJ6XJGAL.js +1551 -0
  89. package/dist/chunk-MJ6XJGAL.js.map +1 -0
  90. package/dist/chunk-MKLXCV4Z.mjs +1510 -0
  91. package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
  92. package/dist/chunk-MMDSZIXD.mjs +286 -0
  93. package/dist/chunk-MMDSZIXD.mjs.map +1 -0
  94. package/dist/chunk-N2O3OX5Y.mjs +243 -0
  95. package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
  96. package/dist/chunk-O6NNSPWD.mjs +35 -0
  97. package/dist/chunk-O6NNSPWD.mjs.map +1 -0
  98. package/dist/chunk-OIRZXSYM.js +80 -0
  99. package/dist/chunk-OIRZXSYM.js.map +1 -0
  100. package/dist/chunk-P7JQRNBJ.mjs +76 -0
  101. package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
  102. package/dist/chunk-PA4ELVGI.js +20 -0
  103. package/dist/chunk-PA4ELVGI.js.map +1 -0
  104. package/dist/chunk-PLIG5257.mjs +2613 -0
  105. package/dist/chunk-PLIG5257.mjs.map +1 -0
  106. package/dist/chunk-QIF4MG5V.mjs +283 -0
  107. package/dist/chunk-QIF4MG5V.mjs.map +1 -0
  108. package/dist/chunk-RHECN4E2.mjs +6077 -0
  109. package/dist/chunk-RHECN4E2.mjs.map +1 -0
  110. package/dist/chunk-RHHTZTIN.mjs +314 -0
  111. package/dist/chunk-RHHTZTIN.mjs.map +1 -0
  112. package/dist/chunk-RRQ2X26Z.js +106 -0
  113. package/dist/chunk-RRQ2X26Z.js.map +1 -0
  114. package/dist/chunk-RST2T54Y.js +836 -0
  115. package/dist/chunk-RST2T54Y.js.map +1 -0
  116. package/dist/chunk-RVNQI6BI.js +249 -0
  117. package/dist/chunk-RVNQI6BI.js.map +1 -0
  118. package/dist/chunk-S3K4LTRI.mjs +226 -0
  119. package/dist/chunk-S3K4LTRI.mjs.map +1 -0
  120. package/dist/chunk-SWZ5XNF6.js +158 -0
  121. package/dist/chunk-SWZ5XNF6.js.map +1 -0
  122. package/dist/chunk-TNJ6LYX7.mjs +18 -0
  123. package/dist/chunk-TNJ6LYX7.mjs.map +1 -0
  124. package/dist/chunk-U7HNBCBS.js +207 -0
  125. package/dist/chunk-U7HNBCBS.js.map +1 -0
  126. package/dist/chunk-UJS3YSD3.mjs +37 -0
  127. package/dist/chunk-UJS3YSD3.mjs.map +1 -0
  128. package/dist/chunk-UJUWDF7M.mjs +336 -0
  129. package/dist/chunk-UJUWDF7M.mjs.map +1 -0
  130. package/dist/chunk-UR5NENGE.js +78 -0
  131. package/dist/chunk-UR5NENGE.js.map +1 -0
  132. package/dist/chunk-V7HGBDCB.mjs +135 -0
  133. package/dist/chunk-V7HGBDCB.mjs.map +1 -0
  134. package/dist/chunk-V7RLIZMN.js +90 -0
  135. package/dist/chunk-V7RLIZMN.js.map +1 -0
  136. package/dist/chunk-VCKXK6V5.js +345 -0
  137. package/dist/chunk-VCKXK6V5.js.map +1 -0
  138. package/dist/chunk-VIEXDTNF.mjs +100 -0
  139. package/dist/chunk-VIEXDTNF.mjs.map +1 -0
  140. package/dist/chunk-VN2DULIA.js +579 -0
  141. package/dist/chunk-VN2DULIA.js.map +1 -0
  142. package/dist/chunk-VNWMRUY6.js +168 -0
  143. package/dist/chunk-VNWMRUY6.js.map +1 -0
  144. package/dist/chunk-VYK4M2D6.mjs +177 -0
  145. package/dist/chunk-VYK4M2D6.mjs.map +1 -0
  146. package/dist/chunk-WB4H6ZUW.mjs +86 -0
  147. package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
  148. package/dist/chunk-WM3AEJ2E.mjs +981 -0
  149. package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
  150. package/dist/chunk-X5GINUGI.mjs +162 -0
  151. package/dist/chunk-X5GINUGI.mjs.map +1 -0
  152. package/dist/chunk-XB7GUEHZ.mjs +82 -0
  153. package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
  154. package/dist/chunk-XE5RGZ3B.js +242 -0
  155. package/dist/chunk-XE5RGZ3B.js.map +1 -0
  156. package/dist/chunk-XNTIMVSL.mjs +193 -0
  157. package/dist/chunk-XNTIMVSL.mjs.map +1 -0
  158. package/dist/chunk-Y7WHUKJF.js +387 -0
  159. package/dist/chunk-Y7WHUKJF.js.map +1 -0
  160. package/dist/chunk-YIRPPMCN.mjs +1916 -0
  161. package/dist/chunk-YIRPPMCN.mjs.map +1 -0
  162. package/dist/chunk-YTGUIRRH.js +10 -0
  163. package/dist/chunk-YTGUIRRH.js.map +1 -0
  164. package/dist/chunk-Z2SNB5LJ.js +28 -0
  165. package/dist/chunk-Z2SNB5LJ.js.map +1 -0
  166. package/dist/chunk-ZOP7YIVX.js +552 -0
  167. package/dist/chunk-ZOP7YIVX.js.map +1 -0
  168. package/dist/chunk-ZUZLWHH5.mjs +146 -0
  169. package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
  170. package/dist/common/ai/llm/core/index.d.mts +70 -0
  171. package/dist/common/ai/llm/core/index.d.ts +70 -0
  172. package/dist/common/ai/llm/core/index.js +54 -0
  173. package/dist/common/ai/llm/core/index.mjs +5 -0
  174. package/dist/common/ai/llm/electron/index.d.mts +6 -0
  175. package/dist/common/ai/llm/electron/index.d.ts +6 -0
  176. package/dist/common/ai/llm/electron/index.js +67 -0
  177. package/dist/common/ai/llm/electron/index.mjs +10 -0
  178. package/dist/common/ai/llm/index.d.mts +3 -0
  179. package/dist/common/ai/llm/index.d.ts +3 -0
  180. package/dist/common/ai/llm/index.js +54 -0
  181. package/dist/common/ai/llm/index.mjs +5 -0
  182. package/dist/common/ai/llm/miniapp/index.d.mts +6 -0
  183. package/dist/common/ai/llm/miniapp/index.d.ts +6 -0
  184. package/dist/common/ai/llm/miniapp/index.js +59 -0
  185. package/dist/common/ai/llm/miniapp/index.mjs +6 -0
  186. package/dist/common/ai/llm/rn/index.d.mts +6 -0
  187. package/dist/common/ai/llm/rn/index.d.ts +6 -0
  188. package/dist/common/ai/llm/rn/index.js +59 -0
  189. package/dist/common/ai/llm/rn/index.mjs +6 -0
  190. package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
  191. package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
  192. package/dist/common/ai/llm/ui/electron/index.js +22 -0
  193. package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
  194. package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
  195. package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
  196. package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
  197. package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
  198. package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
  199. package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
  200. package/dist/common/ai/llm/ui/rn/index.js +14 -0
  201. package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
  202. package/dist/common/ai/llm/ui/web/index.d.mts +15 -0
  203. package/dist/common/ai/llm/ui/web/index.d.ts +15 -0
  204. package/dist/common/ai/llm/ui/web/index.js +21 -0
  205. package/dist/common/ai/llm/ui/web/index.mjs +8 -0
  206. package/dist/common/ai/llm/web/index.d.mts +6 -0
  207. package/dist/common/ai/llm/web/index.d.ts +6 -0
  208. package/dist/common/ai/llm/web/index.js +66 -0
  209. package/dist/common/ai/llm/web/index.mjs +9 -0
  210. package/dist/common/analytics/index.d.mts +2 -0
  211. package/dist/common/analytics/index.d.ts +2 -0
  212. package/dist/common/analytics/index.js +314 -0
  213. package/dist/common/analytics/index.mjs +5 -0
  214. package/dist/common/analytics/server/index.js +529 -0
  215. package/dist/common/analytics/server/index.js.map +1 -0
  216. package/dist/common/analytics/server/index.mjs +525 -0
  217. package/dist/common/analytics/server/index.mjs.map +1 -0
  218. package/dist/common/api/index.d.mts +3 -0
  219. package/dist/common/api/index.d.ts +3 -0
  220. package/dist/common/api/index.js +21 -0
  221. package/dist/common/api/index.mjs +4 -0
  222. package/dist/common/auth/client/index.d.mts +1 -31
  223. package/dist/common/auth/client/index.d.ts +1 -31
  224. package/dist/common/auth/client/index.js +2 -15
  225. package/dist/common/auth/client/index.mjs +1 -2
  226. package/dist/common/auth/components/index.d.mts +5 -239
  227. package/dist/common/auth/components/index.d.ts +5 -239
  228. package/dist/common/auth/components/index.js +878 -49
  229. package/dist/common/auth/components/index.js.map +1 -1
  230. package/dist/common/auth/components/index.mjs +871 -5
  231. package/dist/common/auth/components/index.mjs.map +1 -1
  232. package/dist/common/auth/hooks/index.d.mts +2 -29
  233. package/dist/common/auth/hooks/index.d.ts +2 -29
  234. package/dist/common/auth/hooks/index.js +2 -11
  235. package/dist/common/auth/hooks/index.mjs +1 -2
  236. package/dist/common/auth/index.d.mts +5 -9
  237. package/dist/common/auth/index.d.ts +5 -9
  238. package/dist/common/auth/index.js +5 -26
  239. package/dist/common/auth/index.mjs +3 -4
  240. package/dist/common/auth/rn/index.d.mts +1 -17
  241. package/dist/common/auth/rn/index.d.ts +1 -17
  242. package/dist/common/auth/rn/index.js +2 -34
  243. package/dist/common/auth/rn/index.js.map +1 -1
  244. package/dist/common/auth/rn/index.mjs +2 -31
  245. package/dist/common/auth/rn/index.mjs.map +1 -1
  246. package/dist/common/auth/server/index.d.mts +81 -2
  247. package/dist/common/auth/server/index.d.ts +81 -2
  248. package/dist/common/auth/server/index.js +128 -37
  249. package/dist/common/auth/server/index.js.map +1 -1
  250. package/dist/common/auth/server/index.mjs +124 -1
  251. package/dist/common/auth/server/index.mjs.map +1 -1
  252. package/dist/common/auth/services/index.js +12 -9
  253. package/dist/common/auth/services/index.js.map +1 -1
  254. package/dist/common/auth/services/index.mjs +10 -1
  255. package/dist/common/auth/services/index.mjs.map +1 -1
  256. package/dist/common/components/index.d.mts +4 -0
  257. package/dist/common/components/index.d.ts +4 -0
  258. package/dist/common/components/index.js +414 -0
  259. package/dist/common/components/index.mjs +9 -0
  260. package/dist/common/config/index.d.mts +1 -0
  261. package/dist/common/config/index.d.ts +1 -0
  262. package/dist/common/config/index.js +21 -0
  263. package/dist/common/config/index.mjs +4 -0
  264. package/dist/common/config/server/index.js +1177 -0
  265. package/dist/common/config/server/index.js.map +1 -0
  266. package/dist/common/config/server/index.mjs +1138 -0
  267. package/dist/common/config/server/index.mjs.map +1 -0
  268. package/dist/common/export/index.d.mts +2 -2
  269. package/dist/common/export/index.d.ts +2 -2
  270. package/dist/common/export/index.js +67 -67
  271. package/dist/common/export/index.mjs +3 -3
  272. package/dist/common/export/server/index.d.mts +2 -2
  273. package/dist/common/export/server/index.d.ts +2 -2
  274. package/dist/common/export/server/index.js +76 -48
  275. package/dist/common/export/server/index.mjs +3 -3
  276. package/dist/common/file/index.d.mts +2 -2
  277. package/dist/common/file/index.d.ts +2 -2
  278. package/dist/common/file/index.js +27 -27
  279. package/dist/common/file/index.mjs +5 -5
  280. package/dist/common/file/server/index.d.mts +2 -2
  281. package/dist/common/file/server/index.d.ts +2 -2
  282. package/dist/common/file/server/index.js +58 -50
  283. package/dist/common/file/server/index.mjs +8 -8
  284. package/dist/common/i18n/index.d.mts +2 -0
  285. package/dist/common/i18n/index.d.ts +2 -0
  286. package/dist/common/i18n/index.js +73 -0
  287. package/dist/common/i18n/index.mjs +4 -0
  288. package/dist/common/imageCrop/index.d.mts +2 -0
  289. package/dist/common/imageCrop/index.d.ts +2 -0
  290. package/dist/common/imageCrop/index.js +61 -0
  291. package/dist/common/imageCrop/index.mjs +4 -0
  292. package/dist/common/index.d.mts +17 -20
  293. package/dist/common/index.d.ts +17 -20
  294. package/dist/common/index.js +76 -70
  295. package/dist/common/index.mjs +27 -29
  296. package/dist/common/logger/index.d.mts +1 -1
  297. package/dist/common/logger/index.d.ts +1 -1
  298. package/dist/common/logger/index.js +6 -7
  299. package/dist/common/logger/index.mjs +1 -2
  300. package/dist/common/ossFile/index.d.mts +61 -0
  301. package/dist/common/ossFile/index.d.ts +61 -0
  302. package/dist/common/ossFile/index.js +96 -0
  303. package/dist/common/ossFile/index.mjs +7 -0
  304. package/dist/common/ossFile/server/index.d.mts +94 -0
  305. package/dist/common/ossFile/server/index.d.ts +94 -0
  306. package/dist/common/ossFile/server/index.js +221 -0
  307. package/dist/common/ossFile/server/index.mjs +12 -0
  308. package/dist/common/platform/index.js +8 -8
  309. package/dist/common/platform/index.mjs +4 -4
  310. package/dist/common/request/index.d.mts +1 -1
  311. package/dist/common/request/index.d.ts +1 -1
  312. package/dist/common/request/index.js +5 -7
  313. package/dist/common/request/index.mjs +2 -4
  314. package/dist/common/storage/index.d.mts +1 -1
  315. package/dist/common/storage/index.d.ts +1 -1
  316. package/dist/common/storage/index.js +17 -17
  317. package/dist/common/storage/index.mjs +5 -5
  318. package/dist/common/universalExport/index.d.mts +232 -0
  319. package/dist/common/universalExport/index.d.ts +232 -0
  320. package/dist/common/universalExport/index.js +178 -0
  321. package/dist/common/universalExport/index.mjs +5 -0
  322. package/dist/common/universalExport/server/index.d.mts +1189 -0
  323. package/dist/common/universalExport/server/index.d.ts +1189 -0
  324. package/dist/common/universalExport/server/index.js +151 -0
  325. package/dist/common/universalExport/server/index.mjs +6 -0
  326. package/dist/common/universalFile/index.d.mts +409 -0
  327. package/dist/common/universalFile/index.d.ts +409 -0
  328. package/dist/common/universalFile/index.js +1742 -0
  329. package/dist/common/universalFile/index.js.map +1 -0
  330. package/dist/common/universalFile/index.mjs +1497 -0
  331. package/dist/common/universalFile/index.mjs.map +1 -0
  332. package/dist/common/universalFile/server/index.d.mts +1064 -0
  333. package/dist/common/universalFile/server/index.d.ts +1064 -0
  334. package/dist/common/universalFile/server/index.js +311 -0
  335. package/dist/common/universalFile/server/index.mjs +10 -0
  336. package/dist/common/utils/index.d.mts +1 -1
  337. package/dist/common/utils/index.d.ts +1 -1
  338. package/dist/common/utils/index.js +11 -12
  339. package/dist/common/utils/index.mjs +2 -3
  340. package/dist/index-BRLygK4h.d.ts +67 -0
  341. package/dist/index-BWNK5mH2.d.ts +76 -0
  342. package/dist/index-Bd7cKF1j.d.mts +50 -0
  343. package/dist/index-BiCK6gg6.d.mts +210 -0
  344. package/dist/index-BiCK6gg6.d.ts +210 -0
  345. package/dist/index-C-P2yBTH.d.mts +76 -0
  346. package/dist/index-CT4K2z-O.d.ts +81 -0
  347. package/dist/index-D6RJTGce.d.mts +81 -0
  348. package/dist/index-DA7L9JlE.d.mts +159 -0
  349. package/dist/index-DRQxtCDw.d.ts +50 -0
  350. package/dist/index-DXVph21C.d.mts +201 -0
  351. package/dist/index-DXVph21C.d.ts +201 -0
  352. package/dist/index-DzyK789B.d.mts +67 -0
  353. package/dist/index-FVJZCEtm.d.mts +145 -0
  354. package/dist/index-FVJZCEtm.d.ts +145 -0
  355. package/dist/index-nD9vPCZT.d.ts +159 -0
  356. package/dist/index-nOmIv2BG.d.mts +559 -0
  357. package/dist/index-nOmIv2BG.d.ts +559 -0
  358. package/dist/path-Bzc7hj1N.d.ts +45 -0
  359. package/dist/path-DN_65vhO.d.mts +45 -0
  360. package/dist/utils-Dm3O1rAa.d.mts +366 -0
  361. package/dist/utils-Dm3O1rAa.d.ts +366 -0
  362. package/package.json +293 -348
  363. package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
  364. package/dist/AliyunOSSProvider-4GRL2FJB.js.map +0 -1
  365. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
  366. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs.map +0 -1
  367. package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
  368. package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
  369. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  370. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  371. package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
  372. package/dist/LocalStorageProvider-J5RHV37G.mjs.map +0 -1
  373. package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
  374. package/dist/LocalStorageProvider-PFA2DMIJ.js.map +0 -1
  375. package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
  376. package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
  377. package/dist/ai/llm/core/index.d.mts +0 -70
  378. package/dist/ai/llm/core/index.d.ts +0 -70
  379. package/dist/ai/llm/core/index.js +0 -54
  380. package/dist/ai/llm/core/index.mjs +0 -5
  381. package/dist/ai/llm/electron/index.d.mts +0 -6
  382. package/dist/ai/llm/electron/index.d.ts +0 -6
  383. package/dist/ai/llm/electron/index.js +0 -66
  384. package/dist/ai/llm/electron/index.mjs +0 -9
  385. package/dist/ai/llm/index.d.mts +0 -3
  386. package/dist/ai/llm/index.d.ts +0 -3
  387. package/dist/ai/llm/index.js +0 -54
  388. package/dist/ai/llm/index.mjs +0 -5
  389. package/dist/ai/llm/miniapp/index.d.mts +0 -6
  390. package/dist/ai/llm/miniapp/index.d.ts +0 -6
  391. package/dist/ai/llm/miniapp/index.js +0 -59
  392. package/dist/ai/llm/miniapp/index.mjs +0 -6
  393. package/dist/ai/llm/rn/index.d.mts +0 -6
  394. package/dist/ai/llm/rn/index.d.ts +0 -6
  395. package/dist/ai/llm/rn/index.js +0 -59
  396. package/dist/ai/llm/rn/index.mjs +0 -6
  397. package/dist/ai/llm/ui/electron/index.d.mts +0 -5
  398. package/dist/ai/llm/ui/electron/index.d.ts +0 -5
  399. package/dist/ai/llm/ui/electron/index.js +0 -21
  400. package/dist/ai/llm/ui/electron/index.mjs +0 -8
  401. package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
  402. package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
  403. package/dist/ai/llm/ui/miniapp/index.js +0 -14
  404. package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
  405. package/dist/ai/llm/ui/rn/index.d.mts +0 -9
  406. package/dist/ai/llm/ui/rn/index.d.ts +0 -9
  407. package/dist/ai/llm/ui/rn/index.js +0 -14
  408. package/dist/ai/llm/ui/rn/index.mjs +0 -5
  409. package/dist/ai/llm/ui/web/index.d.mts +0 -15
  410. package/dist/ai/llm/ui/web/index.d.ts +0 -15
  411. package/dist/ai/llm/ui/web/index.js +0 -20
  412. package/dist/ai/llm/ui/web/index.mjs +0 -7
  413. package/dist/ai/llm/web/index.d.mts +0 -6
  414. package/dist/ai/llm/web/index.d.ts +0 -6
  415. package/dist/ai/llm/web/index.js +0 -65
  416. package/dist/ai/llm/web/index.mjs +0 -8
  417. package/dist/analytics/index.d.mts +0 -2
  418. package/dist/analytics/index.d.ts +0 -2
  419. package/dist/analytics/index.js +0 -314
  420. package/dist/analytics/index.mjs +0 -5
  421. package/dist/analytics/server/index.js +0 -529
  422. package/dist/analytics/server/index.js.map +0 -1
  423. package/dist/analytics/server/index.mjs +0 -525
  424. package/dist/analytics/server/index.mjs.map +0 -1
  425. package/dist/api/index.d.mts +0 -3
  426. package/dist/api/index.d.ts +0 -3
  427. package/dist/api/index.js +0 -21
  428. package/dist/api/index.mjs +0 -4
  429. package/dist/audioDetection/index.d.mts +0 -449
  430. package/dist/audioDetection/index.d.ts +0 -449
  431. package/dist/audioDetection/index.js +0 -1244
  432. package/dist/audioDetection/index.js.map +0 -1
  433. package/dist/audioDetection/index.mjs +0 -1227
  434. package/dist/audioDetection/index.mjs.map +0 -1
  435. package/dist/auth/client/index.d.mts +0 -13
  436. package/dist/auth/client/index.d.ts +0 -13
  437. package/dist/auth/client/index.js +0 -26
  438. package/dist/auth/client/index.mjs +0 -5
  439. package/dist/auth/components/index.d.mts +0 -10
  440. package/dist/auth/components/index.d.ts +0 -10
  441. package/dist/auth/components/index.js +0 -70
  442. package/dist/auth/components/index.mjs +0 -9
  443. package/dist/auth/hooks/index.d.mts +0 -13
  444. package/dist/auth/hooks/index.d.ts +0 -13
  445. package/dist/auth/hooks/index.js +0 -28
  446. package/dist/auth/hooks/index.mjs +0 -7
  447. package/dist/auth/index.d.mts +0 -21
  448. package/dist/auth/index.d.ts +0 -21
  449. package/dist/auth/index.js +0 -112
  450. package/dist/auth/index.mjs +0 -11
  451. package/dist/auth/rn/index.d.mts +0 -3133
  452. package/dist/auth/rn/index.d.ts +0 -3133
  453. package/dist/auth/rn/index.js +0 -684
  454. package/dist/auth/rn/index.js.map +0 -1
  455. package/dist/auth/rn/index.mjs +0 -663
  456. package/dist/auth/rn/index.mjs.map +0 -1
  457. package/dist/auth/schema/index.d.mts +0 -4
  458. package/dist/auth/schema/index.d.ts +0 -4
  459. package/dist/auth/schema/index.js +0 -49
  460. package/dist/auth/schema/index.mjs +0 -4
  461. package/dist/auth/services/index.d.mts +0 -1
  462. package/dist/auth/services/index.d.ts +0 -1
  463. package/dist/auth/services/index.js +0 -17
  464. package/dist/auth/services/index.mjs +0 -4
  465. package/dist/base-api-client-BpmcQt4Q.d.ts +0 -103
  466. package/dist/base-api-client-CFIhZK4C.d.mts +0 -277
  467. package/dist/base-api-client-CFIhZK4C.d.ts +0 -277
  468. package/dist/base-api-client-DXLsq2yz.d.mts +0 -103
  469. package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
  470. package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
  471. package/dist/business/index.d.mts +0 -2
  472. package/dist/business/index.d.ts +0 -2
  473. package/dist/business/index.js +0 -581
  474. package/dist/business/index.js.map +0 -1
  475. package/dist/business/index.mjs +0 -575
  476. package/dist/business/index.mjs.map +0 -1
  477. package/dist/calendar/index.d.mts +0 -1325
  478. package/dist/calendar/index.d.ts +0 -1325
  479. package/dist/calendar/index.js +0 -5964
  480. package/dist/calendar/index.js.map +0 -1
  481. package/dist/calendar/index.mjs +0 -5878
  482. package/dist/calendar/index.mjs.map +0 -1
  483. package/dist/calendar/routes/index.d.mts +0 -191
  484. package/dist/calendar/routes/index.d.ts +0 -191
  485. package/dist/calendar/routes/index.js +0 -844
  486. package/dist/calendar/routes/index.js.map +0 -1
  487. package/dist/calendar/routes/index.mjs +0 -826
  488. package/dist/calendar/routes/index.mjs.map +0 -1
  489. package/dist/chunk-25OFOKNF.js +0 -171
  490. package/dist/chunk-25OFOKNF.js.map +0 -1
  491. package/dist/chunk-2Y7BKFKZ.js +0 -37
  492. package/dist/chunk-2Y7BKFKZ.js.map +0 -1
  493. package/dist/chunk-3DXPQ4YV.mjs +0 -165
  494. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  495. package/dist/chunk-3FRAIS4T.mjs +0 -35
  496. package/dist/chunk-3FRAIS4T.mjs.map +0 -1
  497. package/dist/chunk-3NHAT7D4.mjs +0 -361
  498. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  499. package/dist/chunk-3Z43XGA4.mjs +0 -54
  500. package/dist/chunk-3Z43XGA4.mjs.map +0 -1
  501. package/dist/chunk-4FDUURSD.js +0 -22
  502. package/dist/chunk-4FDUURSD.js.map +0 -1
  503. package/dist/chunk-4WBCWJSN.js +0 -836
  504. package/dist/chunk-4WBCWJSN.js.map +0 -1
  505. package/dist/chunk-5GBDDXYL.mjs +0 -23
  506. package/dist/chunk-5GBDDXYL.mjs.map +0 -1
  507. package/dist/chunk-5USIS3UM.js +0 -4
  508. package/dist/chunk-5USIS3UM.js.map +0 -1
  509. package/dist/chunk-7E3J7VAD.mjs +0 -3
  510. package/dist/chunk-7E3J7VAD.mjs.map +0 -1
  511. package/dist/chunk-ACUFEDVQ.js +0 -345
  512. package/dist/chunk-ACUFEDVQ.js.map +0 -1
  513. package/dist/chunk-AQPU2AXH.js +0 -756
  514. package/dist/chunk-AQPU2AXH.js.map +0 -1
  515. package/dist/chunk-ATUCZXJY.js +0 -80
  516. package/dist/chunk-ATUCZXJY.js.map +0 -1
  517. package/dist/chunk-B3CZ3HXJ.mjs +0 -126
  518. package/dist/chunk-B3CZ3HXJ.mjs.map +0 -1
  519. package/dist/chunk-BCE6RUZV.js +0 -2695
  520. package/dist/chunk-BCE6RUZV.js.map +0 -1
  521. package/dist/chunk-BIHYZA67.mjs +0 -2613
  522. package/dist/chunk-BIHYZA67.mjs.map +0 -1
  523. package/dist/chunk-C6KV7VTZ.mjs +0 -152
  524. package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
  525. package/dist/chunk-CAYOQDBR.js +0 -78
  526. package/dist/chunk-CAYOQDBR.js.map +0 -1
  527. package/dist/chunk-CIVO4R6N.mjs +0 -37
  528. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  529. package/dist/chunk-CX2GHCAI.mjs +0 -217
  530. package/dist/chunk-CX2GHCAI.mjs.map +0 -1
  531. package/dist/chunk-DIF5VRL3.mjs +0 -73
  532. package/dist/chunk-DIF5VRL3.mjs.map +0 -1
  533. package/dist/chunk-FCEBAWN6.js +0 -18
  534. package/dist/chunk-FCEBAWN6.js.map +0 -1
  535. package/dist/chunk-FHIE5MTC.mjs +0 -541
  536. package/dist/chunk-FHIE5MTC.mjs.map +0 -1
  537. package/dist/chunk-FHLTPXAR.js +0 -56
  538. package/dist/chunk-FHLTPXAR.js.map +0 -1
  539. package/dist/chunk-FIUBFREP.mjs +0 -298
  540. package/dist/chunk-FIUBFREP.mjs.map +0 -1
  541. package/dist/chunk-FOQEQWX5.js +0 -4
  542. package/dist/chunk-FOQEQWX5.js.map +0 -1
  543. package/dist/chunk-FXQOXLDE.js +0 -120
  544. package/dist/chunk-FXQOXLDE.js.map +0 -1
  545. package/dist/chunk-G4NFB2QA.mjs +0 -212
  546. package/dist/chunk-G4NFB2QA.mjs.map +0 -1
  547. package/dist/chunk-G5HJGXGC.mjs +0 -39
  548. package/dist/chunk-G5HJGXGC.mjs.map +0 -1
  549. package/dist/chunk-G6HXNQ2U.mjs +0 -336
  550. package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
  551. package/dist/chunk-G6NSKJMH.js +0 -106
  552. package/dist/chunk-G6NSKJMH.js.map +0 -1
  553. package/dist/chunk-G7UBMCUT.mjs +0 -41
  554. package/dist/chunk-G7UBMCUT.mjs.map +0 -1
  555. package/dist/chunk-GQZHGSRR.js +0 -44
  556. package/dist/chunk-GQZHGSRR.js.map +0 -1
  557. package/dist/chunk-GS7XLKET.js +0 -41
  558. package/dist/chunk-GS7XLKET.js.map +0 -1
  559. package/dist/chunk-GWNBVGDT.mjs +0 -1232
  560. package/dist/chunk-GWNBVGDT.mjs.map +0 -1
  561. package/dist/chunk-HDMIOOZY.mjs +0 -546
  562. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  563. package/dist/chunk-HJ6MH7J7.js +0 -552
  564. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  565. package/dist/chunk-HJZHQW5R.mjs +0 -146
  566. package/dist/chunk-HJZHQW5R.mjs.map +0 -1
  567. package/dist/chunk-I5ZPEDNR.mjs +0 -734
  568. package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
  569. package/dist/chunk-IBWDBBX5.mjs +0 -16
  570. package/dist/chunk-IBWDBBX5.mjs.map +0 -1
  571. package/dist/chunk-J77KR2EV.mjs +0 -193
  572. package/dist/chunk-J77KR2EV.mjs.map +0 -1
  573. package/dist/chunk-KH6RQ4J5.js +0 -28
  574. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  575. package/dist/chunk-KQ643L7Z.js +0 -144
  576. package/dist/chunk-KQ643L7Z.js.map +0 -1
  577. package/dist/chunk-LFB5EIIM.mjs +0 -31
  578. package/dist/chunk-LFB5EIIM.mjs.map +0 -1
  579. package/dist/chunk-LHJKLUM7.mjs +0 -18
  580. package/dist/chunk-LHJKLUM7.mjs.map +0 -1
  581. package/dist/chunk-MBANGIG3.mjs +0 -781
  582. package/dist/chunk-MBANGIG3.mjs.map +0 -1
  583. package/dist/chunk-MWSAH7ZG.mjs +0 -42
  584. package/dist/chunk-MWSAH7ZG.mjs.map +0 -1
  585. package/dist/chunk-MZOGYD4N.mjs +0 -186
  586. package/dist/chunk-MZOGYD4N.mjs.map +0 -1
  587. package/dist/chunk-NCRP2YHY.mjs +0 -1598
  588. package/dist/chunk-NCRP2YHY.mjs.map +0 -1
  589. package/dist/chunk-NDGHXVGS.js +0 -25
  590. package/dist/chunk-NDGHXVGS.js.map +0 -1
  591. package/dist/chunk-NDPO5OMC.js +0 -563
  592. package/dist/chunk-NDPO5OMC.js.map +0 -1
  593. package/dist/chunk-PBI7FKMB.js +0 -43
  594. package/dist/chunk-PBI7FKMB.js.map +0 -1
  595. package/dist/chunk-Q5EDCKQA.js +0 -336
  596. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  597. package/dist/chunk-Q5VFBPMG.mjs +0 -76
  598. package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
  599. package/dist/chunk-QDUBO567.js +0 -1148
  600. package/dist/chunk-QDUBO567.js.map +0 -1
  601. package/dist/chunk-QP5N3ER6.js +0 -18
  602. package/dist/chunk-QP5N3ER6.js.map +0 -1
  603. package/dist/chunk-QXAOXBVB.mjs +0 -135
  604. package/dist/chunk-QXAOXBVB.mjs.map +0 -1
  605. package/dist/chunk-R2DXTE2L.js +0 -249
  606. package/dist/chunk-R2DXTE2L.js.map +0 -1
  607. package/dist/chunk-RJP2BRJD.mjs +0 -6077
  608. package/dist/chunk-RJP2BRJD.mjs.map +0 -1
  609. package/dist/chunk-RTD2WHQQ.mjs +0 -16
  610. package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
  611. package/dist/chunk-RWCD2CAD.mjs +0 -1132
  612. package/dist/chunk-RWCD2CAD.mjs.map +0 -1
  613. package/dist/chunk-S37OK2QG.js +0 -216
  614. package/dist/chunk-S37OK2QG.js.map +0 -1
  615. package/dist/chunk-S3PUP7N4.js +0 -20
  616. package/dist/chunk-S3PUP7N4.js.map +0 -1
  617. package/dist/chunk-S6YSGVWD.js +0 -224
  618. package/dist/chunk-S6YSGVWD.js.map +0 -1
  619. package/dist/chunk-S732H246.js +0 -6154
  620. package/dist/chunk-S732H246.js.map +0 -1
  621. package/dist/chunk-SFDJNKWC.js +0 -22
  622. package/dist/chunk-SFDJNKWC.js.map +0 -1
  623. package/dist/chunk-SKFEJPMJ.mjs +0 -226
  624. package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
  625. package/dist/chunk-SLKOEYFH.js +0 -303
  626. package/dist/chunk-SLKOEYFH.js.map +0 -1
  627. package/dist/chunk-TC5YU6A4.mjs +0 -243
  628. package/dist/chunk-TC5YU6A4.mjs.map +0 -1
  629. package/dist/chunk-TXMX6PZR.js +0 -190
  630. package/dist/chunk-TXMX6PZR.js.map +0 -1
  631. package/dist/chunk-UCOE6SET.js +0 -148
  632. package/dist/chunk-UCOE6SET.js.map +0 -1
  633. package/dist/chunk-UIYKZ73N.js +0 -36
  634. package/dist/chunk-UIYKZ73N.js.map +0 -1
  635. package/dist/chunk-V7EVKD5G.mjs +0 -116
  636. package/dist/chunk-V7EVKD5G.mjs.map +0 -1
  637. package/dist/chunk-VHN7PF5I.js +0 -20
  638. package/dist/chunk-VHN7PF5I.js.map +0 -1
  639. package/dist/chunk-VMTEDX5H.js +0 -1275
  640. package/dist/chunk-VMTEDX5H.js.map +0 -1
  641. package/dist/chunk-VRN76M56.mjs +0 -3
  642. package/dist/chunk-VRN76M56.mjs.map +0 -1
  643. package/dist/chunk-VXFUXZN5.mjs +0 -20
  644. package/dist/chunk-VXFUXZN5.mjs.map +0 -1
  645. package/dist/chunk-WEEXCPSE.mjs +0 -86
  646. package/dist/chunk-WEEXCPSE.mjs.map +0 -1
  647. package/dist/chunk-WW4GE6CZ.js +0 -1647
  648. package/dist/chunk-WW4GE6CZ.js.map +0 -1
  649. package/dist/chunk-WZDTNDYR.js +0 -207
  650. package/dist/chunk-WZDTNDYR.js.map +0 -1
  651. package/dist/chunk-XBZIS3MV.mjs +0 -13
  652. package/dist/chunk-XBZIS3MV.mjs.map +0 -1
  653. package/dist/chunk-XFOZ56FB.mjs +0 -20
  654. package/dist/chunk-XFOZ56FB.mjs.map +0 -1
  655. package/dist/chunk-XJ7ZAGC5.js +0 -88
  656. package/dist/chunk-XJ7ZAGC5.js.map +0 -1
  657. package/dist/chunk-XUS5ACKR.mjs +0 -100
  658. package/dist/chunk-XUS5ACKR.mjs.map +0 -1
  659. package/dist/chunk-YOTQG4NP.mjs +0 -314
  660. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  661. package/dist/chunk-Z23HAXHL.js +0 -136
  662. package/dist/chunk-Z23HAXHL.js.map +0 -1
  663. package/dist/chunk-ZGVB35L2.mjs +0 -25
  664. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  665. package/dist/chunk-ZLYPALF3.js +0 -242
  666. package/dist/chunk-ZLYPALF3.js.map +0 -1
  667. package/dist/chunk-ZM2SZJTZ.js +0 -158
  668. package/dist/chunk-ZM2SZJTZ.js.map +0 -1
  669. package/dist/chunk-ZRAW3HXA.js +0 -43
  670. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  671. package/dist/chunk-ZWQJSZEY.js +0 -371
  672. package/dist/chunk-ZWQJSZEY.js.map +0 -1
  673. package/dist/components/index.d.mts +0 -405
  674. package/dist/components/index.d.ts +0 -405
  675. package/dist/components/index.js +0 -2516
  676. package/dist/components/index.js.map +0 -1
  677. package/dist/components/index.mjs +0 -2396
  678. package/dist/components/index.mjs.map +0 -1
  679. package/dist/config/index.d.mts +0 -1
  680. package/dist/config/index.d.ts +0 -1
  681. package/dist/config/index.js +0 -21
  682. package/dist/config/index.mjs +0 -4
  683. package/dist/config/server/index.js +0 -1177
  684. package/dist/config/server/index.js.map +0 -1
  685. package/dist/config/server/index.mjs +0 -1138
  686. package/dist/config/server/index.mjs.map +0 -1
  687. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  688. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  689. package/dist/festivalCard/index.d.mts +0 -76
  690. package/dist/festivalCard/index.d.ts +0 -76
  691. package/dist/festivalCard/index.js +0 -1492
  692. package/dist/festivalCard/index.js.map +0 -1
  693. package/dist/festivalCard/index.mjs +0 -1475
  694. package/dist/festivalCard/index.mjs.map +0 -1
  695. package/dist/festivalCard/routes/index.d.mts +0 -42
  696. package/dist/festivalCard/routes/index.d.ts +0 -42
  697. package/dist/festivalCard/routes/index.js +0 -361
  698. package/dist/festivalCard/routes/index.js.map +0 -1
  699. package/dist/festivalCard/routes/index.mjs +0 -356
  700. package/dist/festivalCard/routes/index.mjs.map +0 -1
  701. package/dist/festivalCard/server/index.d.mts +0 -120
  702. package/dist/festivalCard/server/index.d.ts +0 -120
  703. package/dist/festivalCard/server/index.js +0 -272
  704. package/dist/festivalCard/server/index.js.map +0 -1
  705. package/dist/festivalCard/server/index.mjs +0 -265
  706. package/dist/festivalCard/server/index.mjs.map +0 -1
  707. package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
  708. package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
  709. package/dist/i18n/index.d.mts +0 -2
  710. package/dist/i18n/index.d.ts +0 -2
  711. package/dist/i18n/index.js +0 -73
  712. package/dist/i18n/index.mjs +0 -4
  713. package/dist/imageCrop/index.d.mts +0 -165
  714. package/dist/imageCrop/index.d.ts +0 -165
  715. package/dist/imageCrop/index.js +0 -560
  716. package/dist/imageCrop/index.js.map +0 -1
  717. package/dist/imageCrop/index.mjs +0 -541
  718. package/dist/imageCrop/index.mjs.map +0 -1
  719. package/dist/index-2G9Dxjvt.d.ts +0 -81
  720. package/dist/index-BcjDRcKp.d.mts +0 -40
  721. package/dist/index-Bjem5rWn.d.mts +0 -17
  722. package/dist/index-BlpXrrTy.d.ts +0 -40
  723. package/dist/index-C5U-2hJq.d.ts +0 -23
  724. package/dist/index-CYuUB8aF.d.mts +0 -67
  725. package/dist/index-CifSBBP2.d.ts +0 -17
  726. package/dist/index-D0K4ehme.d.mts +0 -20
  727. package/dist/index-DLnfKN-a.d.mts +0 -23
  728. package/dist/index-DSel44Ke.d.mts +0 -93
  729. package/dist/index-DSel44Ke.d.ts +0 -93
  730. package/dist/index-DZ5iJtNO.d.mts +0 -102
  731. package/dist/index-DZ5iJtNO.d.ts +0 -102
  732. package/dist/index-Da7qdkgW.d.ts +0 -20
  733. package/dist/index-DrPcMJPc.d.mts +0 -250
  734. package/dist/index-DrPcMJPc.d.ts +0 -250
  735. package/dist/index-WrR57hKT.d.ts +0 -67
  736. package/dist/index-oLUvfqT8.d.ts +0 -20
  737. package/dist/index-pe38RDgC.d.mts +0 -20
  738. package/dist/index-qcOvRVuN.d.mts +0 -81
  739. package/dist/index.d.mts +0 -11590
  740. package/dist/index.d.ts +0 -11590
  741. package/dist/index.js +0 -17679
  742. package/dist/index.js.map +0 -1
  743. package/dist/index.mjs +0 -17403
  744. package/dist/index.mjs.map +0 -1
  745. package/dist/logger/index.d.mts +0 -125
  746. package/dist/logger/index.d.ts +0 -125
  747. package/dist/logger/index.js +0 -29
  748. package/dist/logger/index.mjs +0 -4
  749. package/dist/mikuContest/ui/web/index.d.mts +0 -2
  750. package/dist/mikuContest/ui/web/index.d.ts +0 -2
  751. package/dist/mikuContest/ui/web/index.js +0 -353
  752. package/dist/mikuContest/ui/web/index.js.map +0 -1
  753. package/dist/mikuContest/ui/web/index.mjs +0 -343
  754. package/dist/mikuContest/ui/web/index.mjs.map +0 -1
  755. package/dist/mikuFireworks3D/index.d.mts +0 -268
  756. package/dist/mikuFireworks3D/index.d.ts +0 -268
  757. package/dist/mikuFireworks3D/index.js +0 -1267
  758. package/dist/mikuFireworks3D/index.js.map +0 -1
  759. package/dist/mikuFireworks3D/index.mjs +0 -1228
  760. package/dist/mikuFireworks3D/index.mjs.map +0 -1
  761. package/dist/mikuFusionGame/index.d.mts +0 -117
  762. package/dist/mikuFusionGame/index.d.ts +0 -117
  763. package/dist/mikuFusionGame/index.js +0 -1208
  764. package/dist/mikuFusionGame/index.js.map +0 -1
  765. package/dist/mikuFusionGame/index.mjs +0 -1195
  766. package/dist/mikuFusionGame/index.mjs.map +0 -1
  767. package/dist/mmd/admin/index.d.mts +0 -487
  768. package/dist/mmd/admin/index.d.ts +0 -487
  769. package/dist/mmd/admin/index.js +0 -1058
  770. package/dist/mmd/admin/index.js.map +0 -1
  771. package/dist/mmd/admin/index.mjs +0 -1027
  772. package/dist/mmd/admin/index.mjs.map +0 -1
  773. package/dist/mmd/index.d.mts +0 -2467
  774. package/dist/mmd/index.d.ts +0 -2467
  775. package/dist/mmd/index.js +0 -10119
  776. package/dist/mmd/index.js.map +0 -1
  777. package/dist/mmd/index.mjs +0 -10028
  778. package/dist/mmd/index.mjs.map +0 -1
  779. package/dist/mmd/server/index.d.mts +0 -139
  780. package/dist/mmd/server/index.d.ts +0 -139
  781. package/dist/mmd/server/index.js +0 -424
  782. package/dist/mmd/server/index.js.map +0 -1
  783. package/dist/mmd/server/index.mjs +0 -404
  784. package/dist/mmd/server/index.mjs.map +0 -1
  785. package/dist/music/index.d.mts +0 -74
  786. package/dist/music/index.d.ts +0 -74
  787. package/dist/music/index.js +0 -830
  788. package/dist/music/index.js.map +0 -1
  789. package/dist/music/index.mjs +0 -809
  790. package/dist/music/index.mjs.map +0 -1
  791. package/dist/music/server/index.d.mts +0 -1
  792. package/dist/music/server/index.d.ts +0 -1
  793. package/dist/music/server/index.js +0 -194
  794. package/dist/music/server/index.js.map +0 -1
  795. package/dist/music/server/index.mjs +0 -182
  796. package/dist/music/server/index.mjs.map +0 -1
  797. package/dist/navigation/index.d.mts +0 -93
  798. package/dist/navigation/index.d.ts +0 -93
  799. package/dist/navigation/index.js +0 -453
  800. package/dist/navigation/index.js.map +0 -1
  801. package/dist/navigation/index.mjs +0 -443
  802. package/dist/navigation/index.mjs.map +0 -1
  803. package/dist/ossFile/index.d.mts +0 -61
  804. package/dist/ossFile/index.d.ts +0 -61
  805. package/dist/ossFile/index.js +0 -96
  806. package/dist/ossFile/index.js.map +0 -1
  807. package/dist/ossFile/index.mjs +0 -7
  808. package/dist/ossFile/index.mjs.map +0 -1
  809. package/dist/ossFile/server/index.d.mts +0 -94
  810. package/dist/ossFile/server/index.d.ts +0 -94
  811. package/dist/ossFile/server/index.js +0 -213
  812. package/dist/ossFile/server/index.js.map +0 -1
  813. package/dist/ossFile/server/index.mjs +0 -12
  814. package/dist/ossFile/server/index.mjs.map +0 -1
  815. package/dist/path-DkaHQSyW.d.mts +0 -41
  816. package/dist/path-qjVnH8qU.d.ts +0 -41
  817. package/dist/portfolio/index.d.mts +0 -66
  818. package/dist/portfolio/index.d.ts +0 -66
  819. package/dist/portfolio/index.js +0 -736
  820. package/dist/portfolio/index.js.map +0 -1
  821. package/dist/portfolio/index.mjs +0 -724
  822. package/dist/portfolio/index.mjs.map +0 -1
  823. package/dist/qqbot/server/index.d.mts +0 -216
  824. package/dist/qqbot/server/index.d.ts +0 -216
  825. package/dist/qqbot/server/index.js +0 -394
  826. package/dist/qqbot/server/index.js.map +0 -1
  827. package/dist/qqbot/server/index.mjs +0 -385
  828. package/dist/qqbot/server/index.mjs.map +0 -1
  829. package/dist/qqbot/ui/web/index.d.mts +0 -10
  830. package/dist/qqbot/ui/web/index.d.ts +0 -10
  831. package/dist/qqbot/ui/web/index.js +0 -105
  832. package/dist/qqbot/ui/web/index.js.map +0 -1
  833. package/dist/qqbot/ui/web/index.mjs +0 -99
  834. package/dist/qqbot/ui/web/index.mjs.map +0 -1
  835. package/dist/request/index.d.mts +0 -59
  836. package/dist/request/index.d.ts +0 -59
  837. package/dist/request/index.js +0 -23
  838. package/dist/request/index.js.map +0 -1
  839. package/dist/request/index.mjs +0 -6
  840. package/dist/request/index.mjs.map +0 -1
  841. package/dist/screenReceiver/index.d.mts +0 -86
  842. package/dist/screenReceiver/index.d.ts +0 -86
  843. package/dist/screenReceiver/index.js +0 -281
  844. package/dist/screenReceiver/index.js.map +0 -1
  845. package/dist/screenReceiver/index.mjs +0 -273
  846. package/dist/screenReceiver/index.mjs.map +0 -1
  847. package/dist/session-BCXvGCnm.d.mts +0 -81
  848. package/dist/session-BCXvGCnm.d.ts +0 -81
  849. package/dist/storage/index.d.mts +0 -136
  850. package/dist/storage/index.d.ts +0 -136
  851. package/dist/storage/index.js +0 -48
  852. package/dist/storage/index.js.map +0 -1
  853. package/dist/storage/index.mjs +0 -7
  854. package/dist/storage/index.mjs.map +0 -1
  855. package/dist/testYourself/admin/index.d.mts +0 -58
  856. package/dist/testYourself/admin/index.d.ts +0 -58
  857. package/dist/testYourself/admin/index.js +0 -1009
  858. package/dist/testYourself/admin/index.js.map +0 -1
  859. package/dist/testYourself/admin/index.mjs +0 -1002
  860. package/dist/testYourself/admin/index.mjs.map +0 -1
  861. package/dist/testYourself/index.d.mts +0 -53
  862. package/dist/testYourself/index.d.ts +0 -53
  863. package/dist/testYourself/index.js +0 -2551
  864. package/dist/testYourself/index.js.map +0 -1
  865. package/dist/testYourself/index.mjs +0 -2531
  866. package/dist/testYourself/index.mjs.map +0 -1
  867. package/dist/testYourself/server/index.d.mts +0 -1029
  868. package/dist/testYourself/server/index.d.ts +0 -1029
  869. package/dist/testYourself/server/index.js +0 -825
  870. package/dist/testYourself/server/index.js.map +0 -1
  871. package/dist/testYourself/server/index.mjs +0 -816
  872. package/dist/testYourself/server/index.mjs.map +0 -1
  873. package/dist/types-3ujSNAXb.d.mts +0 -286
  874. package/dist/types-3ujSNAXb.d.ts +0 -286
  875. package/dist/types-B6B210gX.d.mts +0 -270
  876. package/dist/types-B6B210gX.d.ts +0 -270
  877. package/dist/types-Bdnte5EN.d.mts +0 -292
  878. package/dist/types-C_W_CoUD.d.ts +0 -99
  879. package/dist/types-Cs0CLvrH.d.mts +0 -70
  880. package/dist/types-Cs0CLvrH.d.ts +0 -70
  881. package/dist/types-DCRvasyH.d.mts +0 -99
  882. package/dist/types-HorDyIRv.d.mts +0 -303
  883. package/dist/types-HorDyIRv.d.ts +0 -303
  884. package/dist/types-_rFX1atk.d.ts +0 -292
  885. package/dist/types.legacy-J-j-_ig_.d.mts +0 -25
  886. package/dist/types.legacy-J-j-_ig_.d.ts +0 -25
  887. package/dist/universalExport/index.d.mts +0 -312
  888. package/dist/universalExport/index.d.ts +0 -312
  889. package/dist/universalExport/index.js +0 -178
  890. package/dist/universalExport/index.js.map +0 -1
  891. package/dist/universalExport/index.mjs +0 -5
  892. package/dist/universalExport/index.mjs.map +0 -1
  893. package/dist/universalExport/server/index.d.mts +0 -1270
  894. package/dist/universalExport/server/index.d.ts +0 -1270
  895. package/dist/universalExport/server/index.js +0 -123
  896. package/dist/universalExport/server/index.js.map +0 -1
  897. package/dist/universalExport/server/index.mjs +0 -6
  898. package/dist/universalExport/server/index.mjs.map +0 -1
  899. package/dist/universalFile/index.d.mts +0 -409
  900. package/dist/universalFile/index.d.ts +0 -409
  901. package/dist/universalFile/index.js +0 -1742
  902. package/dist/universalFile/index.js.map +0 -1
  903. package/dist/universalFile/index.mjs +0 -1497
  904. package/dist/universalFile/index.mjs.map +0 -1
  905. package/dist/universalFile/server/index.d.mts +0 -1064
  906. package/dist/universalFile/server/index.d.ts +0 -1064
  907. package/dist/universalFile/server/index.js +0 -311
  908. package/dist/universalFile/server/index.js.map +0 -1
  909. package/dist/universalFile/server/index.mjs +0 -10
  910. package/dist/universalFile/server/index.mjs.map +0 -1
  911. package/dist/utils/index.d.mts +0 -192
  912. package/dist/utils/index.d.ts +0 -192
  913. package/dist/utils/index.js +0 -46
  914. package/dist/utils/index.js.map +0 -1
  915. package/dist/utils/index.mjs +0 -5
  916. package/dist/utils/index.mjs.map +0 -1
  917. package/dist/vocaloidBooth/index.d.mts +0 -64
  918. package/dist/vocaloidBooth/index.d.ts +0 -64
  919. package/dist/vocaloidBooth/index.js +0 -376
  920. package/dist/vocaloidBooth/index.js.map +0 -1
  921. package/dist/vocaloidBooth/index.mjs +0 -362
  922. package/dist/vocaloidBooth/index.mjs.map +0 -1
  923. package/dist/vocaloidBooth/server/index.d.mts +0 -111
  924. package/dist/vocaloidBooth/server/index.d.ts +0 -111
  925. package/dist/vocaloidBooth/server/index.js +0 -247
  926. package/dist/vocaloidBooth/server/index.js.map +0 -1
  927. package/dist/vocaloidBooth/server/index.mjs +0 -237
  928. package/dist/vocaloidBooth/server/index.mjs.map +0 -1
  929. package/dist/vocaloidBooth/web/index.d.mts +0 -3
  930. package/dist/vocaloidBooth/web/index.d.ts +0 -3
  931. package/dist/vocaloidBooth/web/index.js +0 -376
  932. package/dist/vocaloidBooth/web/index.js.map +0 -1
  933. package/dist/vocaloidBooth/web/index.mjs +0 -362
  934. package/dist/vocaloidBooth/web/index.mjs.map +0 -1
  935. /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
  936. /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
  937. /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
  938. /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
  939. /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
  940. /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
  941. /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
  942. /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
  943. /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
  944. /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
  945. /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
  946. /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
  947. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
  948. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
  949. /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
  950. /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
  951. /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
  952. /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
  953. /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
  954. /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
  955. /package/dist/{analytics → common/analytics}/index.js.map +0 -0
  956. /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
  957. /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
  958. /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
  959. /package/dist/{api → common/api}/index.js.map +0 -0
  960. /package/dist/{api → common/api}/index.mjs.map +0 -0
  961. /package/dist/{auth/client → common/components}/index.js.map +0 -0
  962. /package/dist/{auth/client → common/components}/index.mjs.map +0 -0
  963. /package/dist/{auth/components → common/config}/index.js.map +0 -0
  964. /package/dist/{auth/components → common/config}/index.mjs.map +0 -0
  965. /package/dist/{config → common/config}/server/index.d.mts +0 -0
  966. /package/dist/{config → common/config}/server/index.d.ts +0 -0
  967. /package/dist/{auth/hooks → common/i18n}/index.js.map +0 -0
  968. /package/dist/{auth/hooks → common/i18n}/index.mjs.map +0 -0
  969. /package/dist/{auth → common/imageCrop}/index.js.map +0 -0
  970. /package/dist/{auth → common/imageCrop}/index.mjs.map +0 -0
  971. /package/dist/{auth/schema → common/ossFile}/index.js.map +0 -0
  972. /package/dist/{auth/schema → common/ossFile}/index.mjs.map +0 -0
  973. /package/dist/{auth/services → common/ossFile/server}/index.js.map +0 -0
  974. /package/dist/{auth/services → common/ossFile/server}/index.mjs.map +0 -0
  975. /package/dist/{config → common/universalExport}/index.js.map +0 -0
  976. /package/dist/{config → common/universalExport}/index.mjs.map +0 -0
  977. /package/dist/{i18n → common/universalExport/server}/index.js.map +0 -0
  978. /package/dist/{i18n → common/universalExport/server}/index.mjs.map +0 -0
  979. /package/dist/{logger → common/universalFile/server}/index.js.map +0 -0
  980. /package/dist/{logger → common/universalFile/server}/index.mjs.map +0 -0
@@ -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","../../../../src/common/auth/rn/legacy-client.ts"],"names":["ReactNativeStorageAdapter","createAuthClient","emailOTPClient","phoneNumberClient","validatePhoneNumber","getAuthClientError","validateEmail","errorMessage","__require","useState","useEffect","useCallback","React","BaseApiClient","ReactNativeRequestAdapter"],"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","/**\n * @deprecated 2.x BaseApiClient,请改用 initSa2kitRnAuthClient\n */\nimport { BaseApiClient } from '../client/base-api-client';\nimport { ReactNativeStorageAdapter } from '../../../storage/adapters/react-native-adapter';\nimport { ReactNativeRequestAdapter } from '../../../request/adapters/react-native-adapter';\n\nlet cached: BaseApiClient | null = null;\nlet cachedBase = '';\n\n/** 创建 RN 用 BaseApiClient(AsyncStorage + fetch,无 Cookie) */\nexport function createRnAuthClient(authApiBase: string): BaseApiClient {\n const base = authApiBase.replace(/\\/+$/, '');\n if (cached && cachedBase === base) {\n return cached;\n }\n const client = new BaseApiClient(\n new ReactNativeStorageAdapter(),\n new ReactNativeRequestAdapter(),\n base,\n );\n cached = client;\n cachedBase = base;\n return client;\n}\n\nexport async function initRnAuthClient(authApiBase: string): Promise<BaseApiClient> {\n const client = createRnAuthClient(authApiBase);\n await client.init();\n return client;\n}\n\n/** 切换认证根地址时清空单例缓存 */\nexport function resetRnAuthClientCache(): void {\n cached = null;\n cachedBase = '';\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,7 +1,5 @@
1
1
  import { validatePhoneNumber, getAuthClientError, validateEmail, errorMessage } from '../../../chunk-ZF7DKR5A.mjs';
2
- import { BaseApiClient } from '../../../chunk-G4NFB2QA.mjs';
3
- import { ReactNativeStorageAdapter } from '../../../chunk-Q5VFBPMG.mjs';
4
- import { ReactNativeRequestAdapter } from '../../../chunk-G5HJGXGC.mjs';
2
+ import { ReactNativeStorageAdapter } from '../../../chunk-P7JQRNBJ.mjs';
5
3
  import { __require } from '../../../chunk-MAI35PU6.mjs';
6
4
  import { createAuthClient } from 'better-auth/react';
7
5
  import { emailOTPClient, phoneNumberClient } from 'better-auth/client/plugins';
@@ -295,33 +293,6 @@ function RnAccountLoginForm({
295
293
  ));
296
294
  }
297
295
 
298
- // src/common/auth/rn/legacy-client.ts
299
- var cached = null;
300
- var cachedBase = "";
301
- function createRnAuthClient(authApiBase) {
302
- const base = authApiBase.replace(/\/+$/, "");
303
- if (cached && cachedBase === base) {
304
- return cached;
305
- }
306
- const client = new BaseApiClient(
307
- new ReactNativeStorageAdapter(),
308
- new ReactNativeRequestAdapter(),
309
- base
310
- );
311
- cached = client;
312
- cachedBase = base;
313
- return client;
314
- }
315
- async function initRnAuthClient(authApiBase) {
316
- const client = createRnAuthClient(authApiBase);
317
- await client.init();
318
- return client;
319
- }
320
- function resetRnAuthClientCache() {
321
- cached = null;
322
- cachedBase = "";
323
- }
324
-
325
- export { RN_BEARER_TOKEN_KEY, RnAccountLoginForm, clearRnBearerToken, createRnAuthClient, createSa2kitRnAuthClient, createSa2kitRnAuthClientFromApiBase, getRnBearerToken, initRnAuthClient, initSa2kitRnAuthClient, normalizeRnAuthBaseUrl, resetRnAuthClientCache, resetSa2kitRnAuthClientCache, setRnBearerToken, setRnBearerTokenStorage, signInWithRnAuthClient, signOutSa2kitRnAuthClient };
296
+ export { RN_BEARER_TOKEN_KEY, RnAccountLoginForm, clearRnBearerToken, createSa2kitRnAuthClient, createSa2kitRnAuthClientFromApiBase, getRnBearerToken, initSa2kitRnAuthClient, normalizeRnAuthBaseUrl, resetSa2kitRnAuthClientCache, setRnBearerToken, setRnBearerTokenStorage, signInWithRnAuthClient, signOutSa2kitRnAuthClient };
326
297
  //# sourceMappingURL=index.mjs.map
327
298
  //# sourceMappingURL=index.mjs.map
@@ -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","../../../../src/common/auth/rn/legacy-client.ts"],"names":[],"mappings":"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","file":"index.mjs","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","/**\n * @deprecated 2.x BaseApiClient,请改用 initSa2kitRnAuthClient\n */\nimport { BaseApiClient } from '../client/base-api-client';\nimport { ReactNativeStorageAdapter } from '../../../storage/adapters/react-native-adapter';\nimport { ReactNativeRequestAdapter } from '../../../request/adapters/react-native-adapter';\n\nlet cached: BaseApiClient | null = null;\nlet cachedBase = '';\n\n/** 创建 RN 用 BaseApiClient(AsyncStorage + fetch,无 Cookie) */\nexport function createRnAuthClient(authApiBase: string): BaseApiClient {\n const base = authApiBase.replace(/\\/+$/, '');\n if (cached && cachedBase === base) {\n return cached;\n }\n const client = new BaseApiClient(\n new ReactNativeStorageAdapter(),\n new ReactNativeRequestAdapter(),\n base,\n );\n cached = client;\n cachedBase = base;\n return client;\n}\n\nexport async function initRnAuthClient(authApiBase: string): Promise<BaseApiClient> {\n const client = createRnAuthClient(authApiBase);\n await client.init();\n return client;\n}\n\n/** 切换认证根地址时清空单例缓存 */\nexport function resetRnAuthClientCache(): void {\n cached = null;\n cachedBase = '';\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":[],"mappings":"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","file":"index.mjs","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,10 +1,89 @@
1
1
  export { Account, NewAccount, NewSession, NewUser, NewVerification, Session, User, Verification, account, accountRelations, authDrizzleSchema, session, sessionRelations, user, userRelations, verification, verifications } from '../schema/index.mjs';
2
- export { j as Sa2kitAuth, f as Sa2kitAuthConfig, S as Sa2kitAuthInstance, i as Sa2kitEmailProvider, h as Sa2kitSmsProvider, k as SessionUser, b as createAuthRouteHandlers, c as createSa2kitAuth, d as createSessionValidator, g as getSessionUser, e as getSessionUserNumeric, a as mountAuthHandler, m as mountNextAuthHandler } from '../../../session-BCXvGCnm.mjs';
3
2
  export { U as UserRole, u as userRole } from '../../../enums-Dume-V5Y.mjs';
4
3
  import 'drizzle-orm';
5
4
  import 'drizzle-orm/pg-core';
6
5
 
6
+ /**
7
+ * sa2kit auth 服务端配置类型(Better Auth 3.0)
8
+ */
9
+ type Sa2kitSmsProvider = {
10
+ sendOTP: (phoneNumber: string, code: string) => void | Promise<void>;
11
+ };
12
+ type Sa2kitEmailProvider = {
13
+ sendVerificationOTP: (email: string, otp: string, type: string) => void | Promise<void>;
14
+ };
15
+ type Sa2kitAuthConfig = {
16
+ db: unknown;
17
+ baseURL: string;
18
+ secret: string;
19
+ trustedOrigins?: string[];
20
+ basePath?: string;
21
+ sms?: Sa2kitSmsProvider;
22
+ email?: Sa2kitEmailProvider;
23
+ phoneNumberValidator?: (phoneNumber: string) => boolean;
24
+ logOtpInDev?: boolean;
25
+ };
26
+ /** Better Auth 实例(运行时完整 API,类型刻意保持宽松以便跨插件版本) */
27
+ type Sa2kitAuthInstance = {
28
+ handler: (request: Request) => Promise<Response>;
29
+ api: {
30
+ getSession: (ctx: {
31
+ headers: Headers;
32
+ }) => Promise<{
33
+ user: Record<string, unknown>;
34
+ } | null>;
35
+ [key: string]: unknown;
36
+ };
37
+ [key: string]: unknown;
38
+ };
39
+ type Sa2kitAuth = Sa2kitAuthInstance;
40
+
41
+ declare function createSa2kitAuth(config: Sa2kitAuthConfig): Sa2kitAuthInstance;
42
+
43
+ declare function mountNextAuthHandler(auth: Sa2kitAuthInstance): {
44
+ GET: (request: Request) => Promise<Response>;
45
+ POST: (request: Request) => Promise<Response>;
46
+ PATCH: (request: Request) => Promise<Response>;
47
+ PUT: (request: Request) => Promise<Response>;
48
+ DELETE: (request: Request) => Promise<Response>;
49
+ };
50
+
51
+ /**
52
+ * Hono / 通用 fetch handler
53
+ */
54
+
55
+ declare function mountAuthHandler(auth: Sa2kitAuthInstance): (request: Request) => Promise<Response>;
56
+ declare function createAuthRouteHandlers(auth: Sa2kitAuthInstance): {
57
+ GET: (request: Request) => Promise<Response>;
58
+ POST: (request: Request) => Promise<Response>;
59
+ PUT: (request: Request) => Promise<Response>;
60
+ PATCH: (request: Request) => Promise<Response>;
61
+ DELETE: (request: Request) => Promise<Response>;
62
+ };
63
+
64
+ /**
65
+ * 从 Request 解析 Better Auth session(替代自研 JWT validateApiAuth)
66
+ */
67
+
68
+ type SessionUser = {
69
+ id: string;
70
+ email: string;
71
+ name: string;
72
+ role?: string;
73
+ phoneNumber?: string | null;
74
+ };
75
+ declare function getSessionUser(auth: Sa2kitAuthInstance, request: Request): Promise<SessionUser | null>;
76
+ type SessionUserNumeric = Omit<SessionUser, 'id'> & {
77
+ id: number;
78
+ };
79
+ /** 兼容 numeric id 消费方(legacy calendar 等) */
80
+ declare function getSessionUserNumeric(auth: Sa2kitAuthInstance, request: Request): Promise<SessionUserNumeric | null>;
81
+ declare function createSessionValidator(auth: Sa2kitAuthInstance): {
82
+ getSessionUser: (request: Request) => Promise<SessionUser | null>;
83
+ getSessionUserNumeric: (request: Request) => Promise<SessionUserNumeric | null>;
84
+ };
85
+
7
86
  declare const defaultPhoneValidator: (phoneNumber: string) => boolean;
8
87
  declare const defaultTempEmailFromPhone: (phoneNumber: string) => string;
9
88
 
10
- export { defaultPhoneValidator, defaultTempEmailFromPhone };
89
+ export { type Sa2kitAuth, type Sa2kitAuthConfig, type Sa2kitAuthInstance, type Sa2kitEmailProvider, type Sa2kitSmsProvider, type SessionUser, createAuthRouteHandlers, createSa2kitAuth, createSessionValidator, defaultPhoneValidator, defaultTempEmailFromPhone, getSessionUser, getSessionUserNumeric, mountAuthHandler, mountNextAuthHandler };
@@ -1,10 +1,89 @@
1
1
  export { Account, NewAccount, NewSession, NewUser, NewVerification, Session, User, Verification, account, accountRelations, authDrizzleSchema, session, sessionRelations, user, userRelations, verification, verifications } from '../schema/index.js';
2
- export { j as Sa2kitAuth, f as Sa2kitAuthConfig, S as Sa2kitAuthInstance, i as Sa2kitEmailProvider, h as Sa2kitSmsProvider, k as SessionUser, b as createAuthRouteHandlers, c as createSa2kitAuth, d as createSessionValidator, g as getSessionUser, e as getSessionUserNumeric, a as mountAuthHandler, m as mountNextAuthHandler } from '../../../session-BCXvGCnm.js';
3
2
  export { U as UserRole, u as userRole } from '../../../enums-Dume-V5Y.js';
4
3
  import 'drizzle-orm';
5
4
  import 'drizzle-orm/pg-core';
6
5
 
6
+ /**
7
+ * sa2kit auth 服务端配置类型(Better Auth 3.0)
8
+ */
9
+ type Sa2kitSmsProvider = {
10
+ sendOTP: (phoneNumber: string, code: string) => void | Promise<void>;
11
+ };
12
+ type Sa2kitEmailProvider = {
13
+ sendVerificationOTP: (email: string, otp: string, type: string) => void | Promise<void>;
14
+ };
15
+ type Sa2kitAuthConfig = {
16
+ db: unknown;
17
+ baseURL: string;
18
+ secret: string;
19
+ trustedOrigins?: string[];
20
+ basePath?: string;
21
+ sms?: Sa2kitSmsProvider;
22
+ email?: Sa2kitEmailProvider;
23
+ phoneNumberValidator?: (phoneNumber: string) => boolean;
24
+ logOtpInDev?: boolean;
25
+ };
26
+ /** Better Auth 实例(运行时完整 API,类型刻意保持宽松以便跨插件版本) */
27
+ type Sa2kitAuthInstance = {
28
+ handler: (request: Request) => Promise<Response>;
29
+ api: {
30
+ getSession: (ctx: {
31
+ headers: Headers;
32
+ }) => Promise<{
33
+ user: Record<string, unknown>;
34
+ } | null>;
35
+ [key: string]: unknown;
36
+ };
37
+ [key: string]: unknown;
38
+ };
39
+ type Sa2kitAuth = Sa2kitAuthInstance;
40
+
41
+ declare function createSa2kitAuth(config: Sa2kitAuthConfig): Sa2kitAuthInstance;
42
+
43
+ declare function mountNextAuthHandler(auth: Sa2kitAuthInstance): {
44
+ GET: (request: Request) => Promise<Response>;
45
+ POST: (request: Request) => Promise<Response>;
46
+ PATCH: (request: Request) => Promise<Response>;
47
+ PUT: (request: Request) => Promise<Response>;
48
+ DELETE: (request: Request) => Promise<Response>;
49
+ };
50
+
51
+ /**
52
+ * Hono / 通用 fetch handler
53
+ */
54
+
55
+ declare function mountAuthHandler(auth: Sa2kitAuthInstance): (request: Request) => Promise<Response>;
56
+ declare function createAuthRouteHandlers(auth: Sa2kitAuthInstance): {
57
+ GET: (request: Request) => Promise<Response>;
58
+ POST: (request: Request) => Promise<Response>;
59
+ PUT: (request: Request) => Promise<Response>;
60
+ PATCH: (request: Request) => Promise<Response>;
61
+ DELETE: (request: Request) => Promise<Response>;
62
+ };
63
+
64
+ /**
65
+ * 从 Request 解析 Better Auth session(替代自研 JWT validateApiAuth)
66
+ */
67
+
68
+ type SessionUser = {
69
+ id: string;
70
+ email: string;
71
+ name: string;
72
+ role?: string;
73
+ phoneNumber?: string | null;
74
+ };
75
+ declare function getSessionUser(auth: Sa2kitAuthInstance, request: Request): Promise<SessionUser | null>;
76
+ type SessionUserNumeric = Omit<SessionUser, 'id'> & {
77
+ id: number;
78
+ };
79
+ /** 兼容 numeric id 消费方(legacy calendar 等) */
80
+ declare function getSessionUserNumeric(auth: Sa2kitAuthInstance, request: Request): Promise<SessionUserNumeric | null>;
81
+ declare function createSessionValidator(auth: Sa2kitAuthInstance): {
82
+ getSessionUser: (request: Request) => Promise<SessionUser | null>;
83
+ getSessionUserNumeric: (request: Request) => Promise<SessionUserNumeric | null>;
84
+ };
85
+
7
86
  declare const defaultPhoneValidator: (phoneNumber: string) => boolean;
8
87
  declare const defaultTempEmailFromPhone: (phoneNumber: string) => string;
9
88
 
10
- export { defaultPhoneValidator, defaultTempEmailFromPhone };
89
+ export { type Sa2kitAuth, type Sa2kitAuthConfig, type Sa2kitAuthInstance, type Sa2kitEmailProvider, type Sa2kitSmsProvider, type SessionUser, createAuthRouteHandlers, createSa2kitAuth, createSessionValidator, defaultPhoneValidator, defaultTempEmailFromPhone, getSessionUser, getSessionUserNumeric, mountAuthHandler, mountNextAuthHandler };
@@ -1,47 +1,129 @@
1
1
  'use strict';
2
2
 
3
- var chunkZ23HAXHL_js = require('../../../chunk-Z23HAXHL.js');
4
3
  var chunkLGHUCQIU_js = require('../../../chunk-LGHUCQIU.js');
5
4
  require('../../../chunk-NSBPE2FW.js');
5
+ var betterAuth = require('better-auth');
6
+ var drizzleAdapter = require('@better-auth/drizzle-adapter');
7
+ var plugins = require('better-auth/plugins');
8
+ var nextJs = require('better-auth/next-js');
6
9
 
10
+ // src/common/auth/server/plugins/dev-otp.ts
11
+ function createDevOtpLogger(enabled) {
12
+ if (!enabled || process.env.NODE_ENV === "production") {
13
+ return void 0;
14
+ }
15
+ return (channel, target, code) => {
16
+ console.info(`[sa2kit/auth][dev-otp][${channel}] ${target} => ${code}`);
17
+ };
18
+ }
19
+ var defaultPhoneValidator = (phoneNumber2) => /^1\d{10}$/.test(phoneNumber2);
20
+ var defaultTempEmailFromPhone = (phoneNumber2) => `${phoneNumber2.replace(/\D/g, "")}@phone.sa2kit.local`;
7
21
 
22
+ // src/common/auth/server/create-auth.ts
23
+ function createSa2kitAuth(config) {
24
+ if (!config.secret || config.secret.length < 32) {
25
+ throw new Error("createSa2kitAuth: secret \u81F3\u5C11 32 \u5B57\u7B26");
26
+ }
27
+ const devLog = createDevOtpLogger(config.logOtpInDev ?? process.env.NODE_ENV !== "production");
28
+ const phoneValidator = config.phoneNumberValidator ?? defaultPhoneValidator;
29
+ const auth = betterAuth.betterAuth({
30
+ appName: "sa2kit",
31
+ baseURL: config.baseURL,
32
+ basePath: config.basePath ?? "/api/auth",
33
+ secret: config.secret,
34
+ trustedOrigins: config.trustedOrigins,
35
+ database: drizzleAdapter.drizzleAdapter(config.db, {
36
+ provider: "pg",
37
+ schema: chunkLGHUCQIU_js.authDrizzleSchema
38
+ }),
39
+ emailAndPassword: {
40
+ enabled: true
41
+ },
42
+ user: {
43
+ additionalFields: {
44
+ role: {
45
+ type: "string",
46
+ required: false,
47
+ defaultValue: "USER",
48
+ input: false
49
+ }
50
+ }
51
+ },
52
+ plugins: [
53
+ plugins.bearer(),
54
+ plugins.emailOTP({
55
+ async sendVerificationOTP({ email, otp, type }) {
56
+ devLog?.("email", `${email} (${type})`, otp);
57
+ if (config.email?.sendVerificationOTP) {
58
+ await config.email.sendVerificationOTP(email, otp, type);
59
+ }
60
+ }
61
+ }),
62
+ plugins.phoneNumber({
63
+ allowedAttempts: 5,
64
+ phoneNumberValidator: phoneValidator,
65
+ async sendOTP({ phoneNumber: phone, code }) {
66
+ devLog?.("sms", phone, code);
67
+ if (config.sms?.sendOTP) {
68
+ void config.sms.sendOTP(phone, code);
69
+ }
70
+ },
71
+ signUpOnVerification: {
72
+ getTempEmail: defaultTempEmailFromPhone,
73
+ getTempName: (phone) => phone
74
+ }
75
+ })
76
+ ]
77
+ });
78
+ return auth;
79
+ }
80
+ function mountNextAuthHandler(auth) {
81
+ return nextJs.toNextJsHandler(auth);
82
+ }
83
+
84
+ // src/common/auth/server/handler/hono.ts
85
+ function mountAuthHandler(auth) {
86
+ return (request) => auth.handler(request);
87
+ }
88
+ function createAuthRouteHandlers(auth) {
89
+ const handler = mountAuthHandler(auth);
90
+ return {
91
+ GET: handler,
92
+ POST: handler,
93
+ PUT: handler,
94
+ PATCH: handler,
95
+ DELETE: handler
96
+ };
97
+ }
98
+
99
+ // src/common/auth/server/session.ts
100
+ async function getSessionUser(auth, request) {
101
+ const session2 = await auth.api.getSession({ headers: request.headers });
102
+ if (!session2?.user) return null;
103
+ const user2 = session2.user;
104
+ return {
105
+ id: user2.id,
106
+ email: user2.email,
107
+ name: user2.name,
108
+ role: user2.role,
109
+ phoneNumber: user2.phoneNumber ?? null
110
+ };
111
+ }
112
+ async function getSessionUserNumeric(auth, request) {
113
+ const user2 = await getSessionUser(auth, request);
114
+ if (!user2) return null;
115
+ const numericId = Number.parseInt(user2.id, 10);
116
+ if (Number.isNaN(numericId)) return null;
117
+ const { id: _id, ...rest } = user2;
118
+ return { ...rest, id: numericId };
119
+ }
120
+ function createSessionValidator(auth) {
121
+ return {
122
+ getSessionUser: (request) => getSessionUser(auth, request),
123
+ getSessionUserNumeric: (request) => getSessionUserNumeric(auth, request)
124
+ };
125
+ }
8
126
 
9
- Object.defineProperty(exports, "createAuthRouteHandlers", {
10
- enumerable: true,
11
- get: function () { return chunkZ23HAXHL_js.createAuthRouteHandlers; }
12
- });
13
- Object.defineProperty(exports, "createSa2kitAuth", {
14
- enumerable: true,
15
- get: function () { return chunkZ23HAXHL_js.createSa2kitAuth; }
16
- });
17
- Object.defineProperty(exports, "createSessionValidator", {
18
- enumerable: true,
19
- get: function () { return chunkZ23HAXHL_js.createSessionValidator; }
20
- });
21
- Object.defineProperty(exports, "defaultPhoneValidator", {
22
- enumerable: true,
23
- get: function () { return chunkZ23HAXHL_js.defaultPhoneValidator; }
24
- });
25
- Object.defineProperty(exports, "defaultTempEmailFromPhone", {
26
- enumerable: true,
27
- get: function () { return chunkZ23HAXHL_js.defaultTempEmailFromPhone; }
28
- });
29
- Object.defineProperty(exports, "getSessionUser", {
30
- enumerable: true,
31
- get: function () { return chunkZ23HAXHL_js.getSessionUser; }
32
- });
33
- Object.defineProperty(exports, "getSessionUserNumeric", {
34
- enumerable: true,
35
- get: function () { return chunkZ23HAXHL_js.getSessionUserNumeric; }
36
- });
37
- Object.defineProperty(exports, "mountAuthHandler", {
38
- enumerable: true,
39
- get: function () { return chunkZ23HAXHL_js.mountAuthHandler; }
40
- });
41
- Object.defineProperty(exports, "mountNextAuthHandler", {
42
- enumerable: true,
43
- get: function () { return chunkZ23HAXHL_js.mountNextAuthHandler; }
44
- });
45
127
  Object.defineProperty(exports, "account", {
46
128
  enumerable: true,
47
129
  get: function () { return chunkLGHUCQIU_js.account; }
@@ -82,5 +164,14 @@ Object.defineProperty(exports, "verifications", {
82
164
  enumerable: true,
83
165
  get: function () { return chunkLGHUCQIU_js.verifications; }
84
166
  });
167
+ exports.createAuthRouteHandlers = createAuthRouteHandlers;
168
+ exports.createSa2kitAuth = createSa2kitAuth;
169
+ exports.createSessionValidator = createSessionValidator;
170
+ exports.defaultPhoneValidator = defaultPhoneValidator;
171
+ exports.defaultTempEmailFromPhone = defaultTempEmailFromPhone;
172
+ exports.getSessionUser = getSessionUser;
173
+ exports.getSessionUserNumeric = getSessionUserNumeric;
174
+ exports.mountAuthHandler = mountAuthHandler;
175
+ exports.mountNextAuthHandler = mountNextAuthHandler;
85
176
  //# sourceMappingURL=index.js.map
86
177
  //# sourceMappingURL=index.js.map