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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/universalExport/client.ts","../src/common/universalExport/components/ExportConfigEditor.tsx","../src/common/universalExport/components/UniversalExportButton.tsx"],"names":["config","useState","useCallback","React","FileText","Settings","clsx"],"mappings":"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","file":"chunk-WM3AEJ2E.mjs","sourcesContent":["/**\n * 通用导出服务客户端SDK\n *\n * 提供与后端API交互的客户端接口\n */\n\nimport type { ExportConfig, ExportProgress, ExportResult, ExportRequest } from './types';\nimport { API_ENDPOINTS, ERROR_CODES } from './constants';\nimport { createExportError, formatErrorMessage } from './utils';\n\n// ============= 配置类型 =============\n\nexport interface UniversalExportClientConfig {\n /** API基础URL */\n baseUrl?: string;\n /** 请求超时时间(毫秒) */\n timeout?: number;\n /** 自定义请求头 */\n headers?: Record<string, string>;\n}\n\n// ============= 客户端类 =============\n\n/**\n * 通用导出服务客户端\n */\nexport class UniversalExportClient {\n private config: UniversalExportClientConfig;\n\n constructor(config: UniversalExportClientConfig = {}) {\n this.config = {\n baseUrl: config.baseUrl || '',\n timeout: config.timeout || 30000,\n headers: config.headers || {},\n };\n }\n\n // ============= 配置管理API =============\n\n /**\n * 获取模块的导出配置列表\n */\n async getConfigsByModule(moduleId: string, businessId?: string): Promise<ExportConfig[]> {\n const params = new URLSearchParams({ moduleId });\n if (businessId) {\n params.append('businessId', businessId);\n }\n\n const url = (this.config.baseUrl) + (API_ENDPOINTS.GET_CONFIGS) + '?' + (params);\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'GET',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('获取配置失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformConfigsFromAPI(data.configs || []);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '获取导出配置失败: ' + (formatErrorMessage(error)),\n { moduleId, businessId, originalError: error }\n );\n }\n }\n\n /**\n * 创建导出配置\n */\n async createConfig(\n config: Omit<ExportConfig, 'id' | 'createdAt' | 'updatedAt'>\n ): Promise<ExportConfig> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.CREATE_CONFIG);\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'POST',\n headers: {\n ...this.getHeaders(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(config),\n });\n\n if (!response.ok) {\n throw new Error('创建配置失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformConfigFromAPI(data.config);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '创建导出配置失败: ' + (formatErrorMessage(error)),\n { config, originalError: error }\n );\n }\n }\n\n /**\n * 更新导出配置\n */\n async updateConfig(configId: string, updates: Partial<ExportConfig>): Promise<ExportConfig> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.UPDATE_CONFIG(configId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'PUT',\n headers: {\n ...this.getHeaders(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(updates),\n });\n\n if (!response.ok) {\n throw new Error('更新配置失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformConfigFromAPI(data.config);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '更新导出配置失败: ' + (formatErrorMessage(error)),\n { configId, updates, originalError: error }\n );\n }\n }\n\n /**\n * 删除导出配置\n */\n async deleteConfig(configId: string): Promise<void> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.DELETE_CONFIG(configId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'DELETE',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('删除配置失败: ' + (response.statusText));\n }\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '删除导出配置失败: ' + (formatErrorMessage(error)),\n { configId, originalError: error }\n );\n }\n }\n\n // ============= 导出执行API =============\n\n /**\n * 触发数据导出\n */\n async exportData(request: Omit<ExportRequest, 'callbacks' | 'dataSource'> & {\n dataSource: any[] | string;\n }): Promise<ExportResult> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.EXPORT_DATA);\n\n try {\n // 如果 dataSource 是数组,我们需要将其作为请求体的一部分\n const isDataArray = Array.isArray(request.dataSource);\n\n const requestBody: any = {\n queryParams: request.queryParams,\n fieldMapping: request.fieldMapping,\n filters: request.filters,\n sortBy: request.sortBy,\n pagination: request.pagination,\n customFileName: request.customFileName,\n };\n\n // 支持两种方式:传字符串 ID(服务端从缓存/数据库查找)或传完整配置对象(服务端直接使用)\n if (typeof request.configId === 'string') {\n requestBody.configId = request.configId;\n } else if (request.configId && typeof request.configId === 'object') {\n // 传入完整配置对象时,只设置 config 字段,避免与字符串 configId 产生歧义\n requestBody.config = request.configId;\n }\n\n // 如果是数组数据,直接包含在请求体中\n if (isDataArray) {\n requestBody.data = request.dataSource;\n } else {\n requestBody.dataSource = request.dataSource;\n }\n\n const response = await this.fetchWithTimeout(url, {\n method: 'POST',\n headers: {\n ...this.getHeaders(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch {\n errorData = { message: errorText };\n }\n throw new Error(errorData.message || '导出失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformExportResultFromAPI(data.result);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.EXPORT_DATA_ERROR,\n '数据导出失败: ' + (formatErrorMessage(error)),\n { request, originalError: error }\n );\n }\n }\n\n /**\n * 查询导出进度\n */\n async getExportProgress(exportId: string): Promise<ExportProgress> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.GET_PROGRESS(exportId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'GET',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('获取导出进度失败: ' + (response.statusText));\n }\n\n const data = await response.json();\n return this.transformProgressFromAPI(data.progress);\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '获取导出进度失败: ' + (formatErrorMessage(error)),\n { exportId, originalError: error }\n );\n }\n }\n\n /**\n * 下载导出文件\n */\n async downloadExportFile(exportId: string): Promise<Blob> {\n const url = (this.config.baseUrl) + (API_ENDPOINTS.DOWNLOAD_FILE(exportId));\n\n try {\n const response = await this.fetchWithTimeout(url, {\n method: 'GET',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error('下载文件失败: ' + (response.statusText));\n }\n\n return await response.blob();\n } catch (error) {\n throw createExportError(\n ERROR_CODES.NETWORK_ERROR,\n '下载导出文件失败: ' + (formatErrorMessage(error)),\n { exportId, originalError: error }\n );\n }\n }\n\n // ============= 私有辅助方法 =============\n\n /**\n * 获取请求头\n */\n private getHeaders(): Record<string, string> {\n return {\n ...this.config.headers,\n };\n }\n\n /**\n * 带超时的fetch请求\n */\n private async fetchWithTimeout(url: string, options: RequestInit): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const response = await fetch(url, {\n ...options,\n signal: controller.signal,\n });\n return response;\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n throw createExportError(ERROR_CODES.TIMEOUT_ERROR, '请求超时', {\n url,\n timeout: this.config.timeout,\n });\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n /**\n * 转换API返回的配置数据\n */\n private transformConfigFromAPI(apiConfig: any): ExportConfig {\n return {\n id: apiConfig.id,\n name: apiConfig.name,\n description: apiConfig.description || undefined,\n format: apiConfig.format,\n fields: apiConfig.fields,\n grouping: apiConfig.grouping,\n fileNameTemplate: apiConfig.fileNameTemplate,\n includeHeader: apiConfig.includeHeader,\n delimiter: apiConfig.delimiter,\n encoding: apiConfig.encoding,\n addBOM: apiConfig.addBOM,\n maxRows: apiConfig.maxRows || undefined,\n createdAt: new Date(apiConfig.createdAt),\n updatedAt: new Date(apiConfig.updatedAt),\n moduleId: apiConfig.moduleId,\n businessId: apiConfig.businessId || undefined,\n createdBy: apiConfig.createdBy || undefined,\n };\n }\n\n /**\n * 转换API返回的配置列表\n */\n private transformConfigsFromAPI(apiConfigs: any[]): ExportConfig[] {\n return apiConfigs.map((config) => this.transformConfigFromAPI(config));\n }\n\n /**\n * 转换API返回的导出结果\n */\n private transformExportResultFromAPI(apiResult: any): ExportResult {\n const fileBlob = this.createFileBlobFromBase64(\n apiResult.fileData ?? apiResult.fileBlob,\n apiResult.fileName\n );\n\n return {\n exportId: apiResult.exportId,\n fileName: apiResult.fileName,\n fileSize: apiResult.fileSize,\n fileUrl: apiResult.fileUrl,\n fileBlob,\n exportedRows: apiResult.exportedRows,\n startTime: new Date(apiResult.startTime),\n endTime: new Date(apiResult.endTime),\n duration: apiResult.duration,\n statistics: apiResult.statistics,\n };\n }\n\n /**\n * 将后端返回的base64文件数据转换为Blob\n */\n private createFileBlobFromBase64(fileData?: string, fileName?: string): Blob | undefined {\n if (!fileData || typeof fileData !== 'string') {\n return undefined;\n }\n\n try {\n if (typeof atob === 'function') {\n const binaryString = atob(fileData);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n const arrayBuffer = bytes.buffer.slice(\n bytes.byteOffset,\n bytes.byteOffset + bytes.byteLength\n );\n return new Blob([arrayBuffer], { type: this.getMimeTypeByFileName(fileName) });\n } else if (typeof Buffer !== 'undefined') {\n const bufferBytes = Buffer.from(fileData, 'base64');\n const bytes = Uint8Array.from(bufferBytes);\n const arrayBuffer = bytes.buffer.slice(\n bytes.byteOffset,\n bytes.byteOffset + bytes.byteLength\n );\n return new Blob([arrayBuffer], { type: this.getMimeTypeByFileName(fileName) });\n } else {\n return undefined;\n }\n } catch {\n return undefined;\n }\n }\n\n /**\n * 根据文件名推断MIME类型\n */\n private getMimeTypeByFileName(fileName?: string): string {\n const extension = fileName?.split('.').pop()?.toLowerCase();\n\n switch (extension) {\n case 'csv':\n return 'text/csv; charset=utf-8';\n case 'xlsx':\n case 'xls':\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n case 'json':\n return 'application/json; charset=utf-8';\n default:\n return 'application/octet-stream';\n }\n }\n\n /**\n * 转换API返回的进度数据\n */\n private transformProgressFromAPI(apiProgress: any): ExportProgress {\n return {\n exportId: apiProgress.exportId,\n status: apiProgress.status,\n progress: apiProgress.progress,\n processedRows: apiProgress.processedRows,\n totalRows: apiProgress.totalRows,\n startTime: new Date(apiProgress.startTime),\n estimatedEndTime: apiProgress.estimatedEndTime\n ? new Date(apiProgress.estimatedEndTime)\n : undefined,\n currentData: apiProgress.currentData,\n error: apiProgress.error,\n };\n }\n}\n\n// ============= 单例导出 =============\n\n/**\n * 默认客户端实例\n */\nexport const universalExportClient = new UniversalExportClient();\n\n/**\n * 创建自定义客户端实例\n */\nexport function createExportClient(config?: UniversalExportClientConfig): UniversalExportClient {\n return new UniversalExportClient(config);\n}\n","/**\n * 导出配置编辑器组件\n * \n * 提供可视化的导出字段配置编辑功能\n */\n\n'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { clsx } from 'clsx';\nimport { \n Settings, \n Trash2, \n Eye, \n EyeOff, \n MoveUp, \n MoveDown, \n Save, \n X,\n FileText,\n Calendar,\n Hash,\n CheckSquare,\n Type,\n AlignLeft,\n AlignCenter,\n AlignRight,\n Group,\n GitMerge,\n Layers,\n ArrowUpDown,\n FileSpreadsheet,\n Database\n} from 'lucide-react';\n\nimport type { \n ExportConfig, \n ExportField, \n FieldType, \n FieldAlignment,\n ExportFormat,\n GroupingConfig,\n GroupingField,\n GroupingMode,\n GroupValueProcessing\n} from '../types';\n\n// ============= 类型定义 =============\n\nexport interface ExportConfigEditorProps {\n /** 初始配置 */\n initialConfig?: ExportConfig;\n /** 模块标识 */\n moduleId: string;\n /** 业务标识 */\n businessId?: string;\n /** 可用的字段定义 */\n availableFields: ExportField[];\n /** 保存配置回调 */\n onSave?: (config: ExportConfig) => void;\n /** 取消回调 */\n onCancel?: () => void;\n /** 是否显示 */\n visible?: boolean;\n /** 自定义样式类名 */\n className?: string;\n /** 配置变化回调(新增/删除/更新) */\n onConfigChange?: () => void;\n}\n\n// ============= 字段类型图标映射 =============\n\nconst FIELD_TYPE_ICONS: Record<FieldType, React.ReactNode> = {\n string: <Type className=\"w-4 h-4\" />,\n number: <Hash className=\"w-4 h-4\" />,\n date: <Calendar className=\"w-4 h-4\" />,\n boolean: <CheckSquare className=\"w-4 h-4\" />,\n array: <FileText className=\"w-4 h-4\" />,\n object: <FileText className=\"w-4 h-4\" />,\n};\n\nconst FIELD_TYPE_LABELS: Record<FieldType, string> = {\n string: '文本',\n number: '数字',\n date: '日期',\n boolean: '布尔',\n array: '数组',\n object: '对象',\n};\n\nconst ALIGNMENT_ICONS: Record<FieldAlignment, React.ReactNode> = {\n left: <AlignLeft className=\"w-4 h-4\" />,\n center: <AlignCenter className=\"w-4 h-4\" />,\n right: <AlignRight className=\"w-4 h-4\" />,\n};\n\nconst ALIGNMENT_LABELS: Record<FieldAlignment, string> = {\n left: '左对齐',\n center: '居中对齐',\n right: '右对齐',\n};\n\n// ============= 分组相关标签 =============\n\nconst GROUPING_MODE_LABELS: Record<GroupingMode, string> = {\n merge: '合并模式',\n separate: '分离模式',\n nested: '嵌套模式',\n};\n\nconst GROUPING_MODE_DESCRIPTIONS: Record<GroupingMode, string> = {\n merge: '同组数据合并显示,Excel支持单元格合并',\n separate: '每个分组独立显示,可添加分组头',\n nested: '支持多级嵌套分组',\n};\n\nconst VALUE_PROCESSING_LABELS: Record<GroupValueProcessing, string> = {\n first: '取第一个值',\n last: '取最后一个值',\n concat: '连接所有值',\n sum: '求和',\n count: '计数',\n custom: '自定义处理',\n};\n\nconst FORMAT_ICONS: Record<ExportFormat, React.ReactNode> = {\n csv: <FileText className=\"w-4 h-4\" />,\n excel: <FileSpreadsheet className=\"w-4 h-4\" />,\n json: <Database className=\"w-4 h-4\" />,\n};\n\nconst FORMAT_DESCRIPTIONS: Record<ExportFormat, string> = {\n csv: '逗号分隔值文件,兼容性最好',\n excel: 'Excel表格文件,支持格式化和单元格合并',\n json: 'JSON数据文件,适合开发者使用',\n};\n\n// ============= 主组件 =============\n\nexport const ExportConfigEditor: React.FC<ExportConfigEditorProps> = ({\n initialConfig,\n moduleId,\n businessId,\n availableFields,\n onSave,\n onCancel,\n visible = false,\n className = '',\n onConfigChange,\n}) => {\n // ============= 状态管理 =============\n \n const [config, setConfig] = useState<ExportConfig>(() => {\n if (initialConfig) {\n return { ...initialConfig };\n }\n \n // 创建默认配置\n return {\n id: '',\n name: '新建导出配置',\n description: '',\n format: 'csv',\n fields: availableFields.map((field, index) => ({\n ...field,\n enabled: true,\n sortOrder: index,\n })),\n grouping: {\n enabled: false,\n fields: [],\n preserveOrder: true,\n nullValueHandling: 'separate',\n nullGroupName: '未分组'\n },\n fileNameTemplate: '导出数据_{date}',\n includeHeader: true,\n delimiter: ',',\n encoding: 'utf-8',\n addBOM: true,\n maxRows: undefined,\n createdAt: new Date(),\n updatedAt: new Date(),\n moduleId,\n businessId,\n };\n });\n\n const [activeTab, setActiveTab] = useState<'basic' | 'fields' | 'grouping' | 'manage'>('basic');\n \n // 配置管理相关状态\n const [savedConfigs, setSavedConfigs] = useState<ExportConfig[]>([]);\n const [loadingConfigs, setLoadingConfigs] = useState(false);\n const [deletingConfigId, setDeletingConfigId] = useState<string | null>(null);\n\n // 加载已保存的配置\n const loadSavedConfigs = useCallback(async () => {\n if (!visible || activeTab !== 'manage') return;\n \n setLoadingConfigs(true);\n try {\n const params = new URLSearchParams({ moduleId });\n if (businessId) {\n params.set('businessId', businessId);\n }\n \n const response = await fetch('/api/universal-export/configs?' + (params.toString()));\n if (response.ok) {\n const data = await response.json();\n setSavedConfigs(data.configs || []);\n }\n } catch (error) {\n console.error('加载配置异常:', error);\n } finally {\n setLoadingConfigs(false);\n }\n }, [visible, activeTab, moduleId, businessId]);\n\n // 删除配置\n const deleteConfig = useCallback(async (configId: string) => {\n setDeletingConfigId(configId);\n try {\n const response = await fetch('/api/universal-export/configs/' + (configId), {\n method: 'DELETE'\n });\n if (response.ok) {\n setSavedConfigs(prev => prev.filter(cfg => cfg.id !== configId));\n onConfigChange?.();\n }\n } catch (error) {\n console.error('删除配置失败:', error);\n } finally {\n setDeletingConfigId(null);\n }\n }, [onConfigChange]);\n\n // 加载配置到编辑器\n const loadConfigToEditor = useCallback((config: ExportConfig) => {\n setConfig(config);\n setActiveTab('basic');\n }, []);\n\n // 当切换到管理tab时加载配置\n useEffect(() => {\n if (activeTab === 'manage') {\n loadSavedConfigs();\n }\n }, [activeTab, loadSavedConfigs]);\n\n // 阻止背景滚动\n useEffect(() => {\n if (!visible) return;\n \n const scrollY = window.scrollY;\n document.body.style.position = 'fixed';\n document.body.style.top = '-' + (scrollY) + 'px';\n document.body.style.left = '0';\n document.body.style.right = '0';\n document.body.style.overflow = 'hidden';\n \n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onCancel?.();\n }\n };\n \n document.addEventListener('keydown', handleKeyDown);\n \n return () => {\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.left = '';\n document.body.style.right = '';\n document.body.style.overflow = '';\n window.scrollTo(0, scrollY);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [visible, onCancel]);\n\n // ============= 字段管理 =============\n\n const toggleFieldEnabled = useCallback((fieldKey: string) => {\n setConfig(prev => ({\n ...prev,\n fields: prev.fields.map(field =>\n field.key === fieldKey\n ? { ...field, enabled: !field.enabled }\n : field\n ),\n }));\n }, []);\n\n const updateField = useCallback((fieldKey: string, updates: Partial<ExportField>) => {\n setConfig(prev => ({\n ...prev,\n fields: prev.fields.map(field =>\n field.key === fieldKey\n ? { ...field, ...updates }\n : field\n ),\n }));\n }, []);\n\n const moveField = useCallback((fieldKey: string, direction: 'up' | 'down') => {\n setConfig(prev => {\n const fields = [...prev.fields];\n const index = fields.findIndex(f => f.key === fieldKey);\n \n if (direction === 'up' && index > 0) {\n const temp = fields[index - 1]!;\n fields[index - 1] = fields[index]!;\n fields[index] = temp;\n } else if (direction === 'down' && index < fields.length - 1) {\n const temp = fields[index + 1]!;\n fields[index + 1] = fields[index]!;\n fields[index] = temp;\n }\n \n return {\n ...prev,\n fields: fields.map((field, idx) => ({ ...field, sortOrder: idx })),\n };\n });\n }, []);\n\n const removeField = useCallback((fieldKey: string) => {\n setConfig(prev => ({\n ...prev,\n fields: prev.fields.filter(f => f.key !== fieldKey),\n }));\n }, []);\n\n // ============= 分组配置管理 =============\n\n const toggleGrouping = useCallback((enabled: boolean) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n enabled,\n },\n }));\n }, []);\n\n const addGroupingField = useCallback((fieldKey: string) => {\n const field = config.fields.find(f => f.key === fieldKey);\n if (!field) return;\n\n const groupField: GroupingField = {\n key: field.key,\n label: field.label,\n mode: 'merge',\n valueProcessing: 'first',\n showGroupHeader: false,\n mergeCells: true,\n };\n\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields: [...prev.grouping!.fields, groupField],\n },\n }));\n }, [config.fields]);\n\n const removeGroupingField = useCallback((fieldKey: string) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields: prev.grouping!.fields.filter(f => f.key !== fieldKey),\n },\n }));\n }, []);\n\n const updateGroupingField = useCallback((fieldKey: string, updates: Partial<GroupingField>) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields: prev.grouping!.fields.map(field =>\n field.key === fieldKey\n ? { ...field, ...updates }\n : field\n ),\n },\n }));\n }, []);\n\n const moveGroupingField = useCallback((fieldKey: string, direction: 'up' | 'down') => {\n setConfig(prev => {\n const fields = [...prev.grouping!.fields];\n const index = fields.findIndex(f => f.key === fieldKey);\n \n if (direction === 'up' && index > 0) {\n const temp = fields[index - 1]!;\n fields[index - 1] = fields[index]!;\n fields[index] = temp;\n } else if (direction === 'down' && index < fields.length - 1) {\n const temp = fields[index + 1]!;\n fields[index + 1] = fields[index]!;\n fields[index] = temp;\n }\n \n return {\n ...prev,\n grouping: {\n ...prev.grouping!,\n fields,\n },\n };\n });\n }, []);\n\n const updateGroupingConfig = useCallback((updates: Partial<GroupingConfig>) => {\n setConfig(prev => ({\n ...prev,\n grouping: {\n ...prev.grouping!,\n ...updates,\n },\n }));\n }, []);\n\n // ============= 保存配置 =============\n\n const handleSave = useCallback(() => {\n if (!config.name.trim()) {\n alert('请输入配置名称');\n return;\n }\n\n const enabledFields = config.fields.filter(f => f.enabled);\n if (enabledFields.length === 0) {\n alert('至少需要启用一个字段');\n return;\n }\n\n const updatedConfig: ExportConfig = {\n ...config,\n updatedAt: new Date(),\n };\n\n onSave?.(updatedConfig);\n onConfigChange?.();\n }, [config, onSave, onConfigChange]);\n\n // ============= 渲染组件 =============\n\n if (!visible) {\n return null;\n }\n\n const tabs = [\n { id: 'basic' as const, label: '基本配置', icon: <Settings className=\"w-4 h-4\" />, description: '配置名称、格式和基本选项' },\n { id: 'fields' as const, label: '字段设置', icon: <Type className=\"w-4 h-4\" />, description: '选择和配置导出字段' },\n { id: 'grouping' as const, label: '分组设置', icon: <Group className=\"w-4 h-4\" />, description: '配置数据分组和合并选项' },\n { id: 'manage' as const, label: '配置管理', icon: <Database className=\"w-4 h-4\" />, description: '管理已保存的导出配置' },\n ];\n\n return (\n <div \n className={clsx('fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-[50] p-4', className)}\n onClick={onCancel}\n >\n <div \n className=\"bg-white rounded-lg shadow-xl w-full max-w-5xl max-h-[90vh] flex flex-col\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* 头部 */}\n <div className=\"flex items-center justify-between p-4 border-b flex-shrink-0\">\n <div className=\"flex items-center gap-3\">\n <Settings className=\"w-6 h-6 text-blue-600\" />\n <div>\n <h2 className=\"text-xl font-semibold text-gray-900\">导出配置编辑器</h2>\n <p className=\"text-sm text-gray-600\">配置导出字段和格式选项</p>\n </div>\n </div>\n <button onClick={onCancel} className=\"p-2 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-lg\">\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Tab导航 */}\n <div className=\"border-b bg-gray-50 flex-shrink-0\">\n <nav className=\"flex space-x-1 p-2\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={clsx('flex items-center gap-2 px-4 py-3 text-sm font-medium rounded-lg transition-colors', activeTab === tab.id ? 'bg-white text-blue-600 shadow-sm border border-gray-200' : 'text-gray-600 hover:text-gray-900')}\n >\n {tab.icon}\n <span>{tab.label}</span>\n </button>\n ))}\n </nav>\n </div>\n\n {/* Tab内容 */}\n <div className=\"flex-1 overflow-hidden flex flex-col\">\n <div className=\"bg-blue-50 border-b border-blue-100 p-4 flex-shrink-0\">\n <div className=\"flex items-center gap-2 text-blue-800 text-sm font-medium\">\n {tabs.find(t => t.id === activeTab)?.icon}\n {tabs.find(t => t.id === activeTab)?.description}\n </div>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4 sm:p-6\">\n {activeTab === 'basic' && (\n <div className=\"max-w-2xl mx-auto space-y-6\">\n <div className=\"space-y-4\">\n <label className=\"block text-sm font-medium text-gray-700\">配置名称 *</label>\n <input\n type=\"text\"\n value={config.name}\n onChange={(e) => setConfig(prev => ({ ...prev, name: e.target.value }))}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg\"\n />\n <label className=\"block text-sm font-medium text-gray-700\">描述</label>\n <textarea\n value={config.description}\n onChange={(e) => setConfig(prev => ({ ...prev, description: e.target.value }))}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg\"\n rows={3}\n />\n <label className=\"block text-sm font-medium text-gray-700\">导出格式</label>\n <div className=\"space-y-3\">\n {(['csv', 'excel', 'json'] as ExportFormat[]).map((format) => (\n <label key={format} className=\"flex items-start gap-3 p-3 border rounded-lg cursor-pointer hover:border-blue-300\">\n <input\n type=\"radio\"\n checked={config.format === format}\n onChange={() => setConfig(prev => ({ ...prev, format }))}\n className=\"mt-1\"\n />\n <div>\n <div className=\"flex items-center gap-2 font-medium\">\n {FORMAT_ICONS[format]} {format.toUpperCase()}\n </div>\n <p className=\"text-sm text-gray-600\">{FORMAT_DESCRIPTIONS[format]}</p>\n </div>\n </label>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {activeTab === 'fields' && (\n <div className=\"space-y-4\">\n {config.fields.map((field, index) => (\n <div key={field.key} className=\"flex items-center gap-3 p-3 border rounded-lg bg-white\">\n <button onClick={() => toggleFieldEnabled(field.key)} className={field.enabled ? 'text-blue-600' : 'text-gray-400'}>\n {field.enabled ? <Eye className=\"w-4 h-4\" /> : <EyeOff className=\"w-4 h-4\" />}\n </button>\n <div className=\"flex-1\">\n <div className=\"font-medium\">{field.label}</div>\n <div className=\"text-xs text-gray-500\">{field.key}</div>\n </div>\n <div className=\"flex gap-1\">\n <button onClick={() => moveField(field.key, 'up')} disabled={index === 0} className=\"disabled:opacity-30\"><MoveUp className=\"w-4 h-4\" /></button>\n <button onClick={() => moveField(field.key, 'down')} disabled={index === config.fields.length - 1} className=\"disabled:opacity-30\"><MoveDown className=\"w-4 h-4\" /></button>\n <button onClick={() => removeField(field.key)} className=\"text-red-600\"><Trash2 className=\"w-4 h-4\" /></button>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {activeTab === 'grouping' && (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-medium flex items-center gap-2\"><Group className=\"w-5 h-5 text-blue-600\" /> 分组配置</h3>\n <label className=\"flex items-center gap-2\">\n <input type=\"checkbox\" checked={config.grouping?.enabled} onChange={(e) => toggleGrouping(e.target.checked)} />\n 启用分组\n </label>\n </div>\n {config.grouping?.enabled && (\n <div className=\"space-y-4\">\n {config.grouping.fields.map((gf, index) => (\n <div key={gf.key} className=\"p-4 border rounded-lg bg-blue-50 border-blue-200\">\n <div className=\"flex justify-between items-center mb-4\">\n <span className=\"font-medium text-blue-900\">{gf.label}</span>\n <button onClick={() => removeGroupingField(gf.key)} className=\"text-red-600\"><Trash2 className=\"w-4 h-4\" /></button>\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <select value={gf.mode} onChange={(e) => updateGroupingField(gf.key, { mode: e.target.value as GroupingMode })} className=\"border rounded p-2\">\n <option value=\"merge\">合并模式</option>\n <option value=\"separate\">分离模式</option>\n <option value=\"nested\">嵌套模式</option>\n </select>\n <select value={gf.valueProcessing} onChange={(e) => updateGroupingField(gf.key, { valueProcessing: e.target.value as GroupValueProcessing })} className=\"border rounded p-2\">\n <option value=\"first\">首值</option>\n <option value=\"sum\">求和</option>\n <option value=\"count\">计数</option>\n </select>\n </div>\n </div>\n ))}\n <select onChange={(e) => e.target.value && addGroupingField(e.target.value)} className=\"w-full border rounded p-2\">\n <option value=\"\">添加分组字段...</option>\n {config.fields.filter(f => f.enabled && !config.grouping?.fields.some(gf => gf.key === f.key)).map(f => (\n <option key={f.key} value={f.key}>{f.label}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n )}\n\n {activeTab === 'manage' && (\n <div className=\"space-y-4\">\n {loadingConfigs ? <div className=\"text-center py-10\">加载中...</div> : savedConfigs.map(sc => (\n <div key={sc.id} className=\"flex justify-between items-center p-4 border rounded-lg\">\n <div>\n <div className=\"font-medium\">{sc.name}</div>\n <div className=\"text-sm text-gray-500\">{sc.format}</div>\n </div>\n <div className=\"flex gap-2\">\n <button onClick={() => loadConfigToEditor(sc)} className=\"text-blue-600 px-3 py-1 border rounded\">编辑</button>\n <button onClick={() => deleteConfig(sc.id)} className=\"text-red-600 px-3 py-1 border rounded\">删除</button>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* 底部 */}\n <div className=\"flex justify-end gap-3 p-4 border-t bg-gray-50\">\n <button onClick={onCancel} className=\"px-4 py-2 border rounded\">取消</button>\n {activeTab !== 'manage' && (\n <button onClick={handleSave} className=\"px-4 py-2 bg-blue-600 text-white rounded flex items-center gap-2\">\n <Save className=\"w-4 h-4\" /> 保存配置\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\n","/**\n * 通用导出按钮组件\n * \n * 提供统一的导出功能入口,支持配置化导出\n */\n\n'use client';\n\nimport React, { useState, useCallback } from 'react';\nimport { clsx } from 'clsx';\nimport { \n Download, \n Settings, \n FileText, \n Loader2,\n ChevronDown\n} from 'lucide-react';\n\nimport type { \n ExportConfig, \n ExportField, \n ExportRequest,\n ExportResult,\n ExportProgress \n} from '../types';\n\nimport { ExportConfigEditor } from './ExportConfigEditor';\n\n// ============= 类型定义 =============\n\nexport interface UniversalExportButtonProps {\n /** 导出服务实例 */\n exportService: any; // UniversalExportClient\n /** 模块标识 */\n moduleId: string;\n /** 业务标识 */\n businessId?: string;\n /** 可用的字段定义 */\n availableFields: ExportField[];\n /** 数据源函数 */\n dataSource: () => Promise<any[]>;\n /** 默认配置 */\n defaultConfig?: ExportConfig;\n /** 按钮文本 */\n buttonText?: string;\n /** 按钮样式 */\n variant?: 'primary' | 'secondary' | 'outline';\n /** 按钮大小 */\n size?: 'sm' | 'md' | 'lg';\n /** 是否禁用 */\n disabled?: boolean;\n /** 自定义样式类名 */\n className?: string;\n /** 导出成功回调 */\n onExportSuccess?: (result: ExportResult) => void;\n /** 导出失败回调 */\n onExportError?: (error: string) => void;\n /** 配置保存回调 */\n onConfigSave?: (config: ExportConfig) => void;\n}\n\n// ============= 按钮样式配置 =============\n\nconst BUTTON_STYLES = {\n primary: {\n sm: 'px-3 py-1.5 text-sm bg-blue-600 text-white hover:bg-blue-700',\n md: 'px-4 py-2 text-sm bg-blue-600 text-white hover:bg-blue-700',\n lg: 'px-6 py-3 text-base bg-blue-600 text-white hover:bg-blue-700',\n },\n secondary: {\n sm: 'px-3 py-1.5 text-sm bg-gray-600 text-white hover:bg-gray-700',\n md: 'px-4 py-2 text-sm bg-gray-600 text-white hover:bg-gray-700',\n lg: 'px-6 py-3 text-base bg-gray-600 text-white hover:bg-gray-700',\n },\n outline: {\n sm: 'px-3 py-1.5 text-sm border border-gray-300 text-gray-700 hover:bg-gray-50',\n md: 'px-4 py-2 text-sm border border-gray-300 text-gray-700 hover:bg-gray-50',\n lg: 'px-6 py-3 text-base border border-gray-300 text-gray-700 hover:bg-gray-50',\n },\n};\n\n// ============= 主组件 =============\n\nexport const UniversalExportButton: React.FC<UniversalExportButtonProps> = ({\n exportService,\n moduleId,\n businessId,\n availableFields,\n dataSource,\n defaultConfig,\n buttonText = '导出数据',\n variant = 'primary',\n size = 'md',\n disabled = false,\n className = '',\n onExportSuccess,\n onExportError,\n onConfigSave,\n}) => {\n // ============= 状态管理 =============\n \n const [showConfigEditor, setShowConfigEditor] = useState(false);\n const [showDropdown, setShowDropdown] = useState(false);\n const [isExporting, setIsExporting] = useState(false);\n const [exportProgress, setExportProgress] = useState<ExportProgress | null>(null);\n const [savedConfigs, setSavedConfigs] = useState<ExportConfig[]>([]);\n\n // 加载保存的配置\n const loadSavedConfigs = useCallback(async () => {\n try {\n if (exportService) {\n const configs = await exportService.getConfigsByModule(moduleId, businessId);\n setSavedConfigs(configs);\n }\n } catch (error) {\n console.error('加载保存的配置失败:', error);\n }\n }, [exportService, moduleId, businessId]);\n\n // 组件挂载时加载配置\n React.useEffect(() => {\n loadSavedConfigs();\n }, [loadSavedConfigs]);\n\n // ============= 导出处理 =============\n\n const handleExport = useCallback(async (config: ExportConfig) => {\n console.log('🚀 [UniversalExportButton] 开始导出:', {\n configId: config.id,\n configName: config.name,\n format: config.format,\n fieldsCount: config.fields.length,\n });\n\n if (!exportService) {\n console.error('❌ [UniversalExportButton] 导出服务未初始化');\n onExportError?.('导出服务未初始化');\n return;\n }\n\n setIsExporting(true);\n setExportProgress(null);\n\n try {\n // 获取数据\n console.log('📊 [UniversalExportButton] 获取数据...');\n const data = await dataSource();\n console.log('✅ [UniversalExportButton] 数据获取成功:', {\n dataType: typeof data,\n isArray: Array.isArray(data),\n length: Array.isArray(data) ? data.length : 'N/A',\n });\n\n // 创建导出请求(不包含回调,因为客户端不支持)\n const request = {\n configId: config,\n dataSource: data, // 传递实际数据而不是函数\n queryParams: undefined,\n fieldMapping: undefined,\n filters: undefined,\n sortBy: undefined,\n pagination: undefined,\n customFileName: undefined,\n };\n\n console.log('📞 [UniversalExportButton] 调用导出服务...');\n const result = await exportService.exportData(request);\n\n console.log('✅ [UniversalExportButton] 导出成功:', {\n fileName: result.fileName,\n fileSize: result.fileSize,\n exportedRows: result.exportedRows,\n });\n\n // 由于客户端不支持进度回调,我们模拟一个完成状态\n const progress: ExportProgress = {\n exportId: result.exportId,\n status: 'completed',\n progress: 100,\n processedRows: result.exportedRows,\n totalRows: result.exportedRows,\n startTime: result.startTime,\n estimatedEndTime: result.endTime,\n };\n setExportProgress(progress);\n\n // 下载文件\n if (result.fileUrl) {\n console.log('📥 [UniversalExportButton] 从URL下载文件...');\n const link = document.createElement('a');\n link.href = result.fileUrl;\n link.download = result.fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n console.log('✅ [UniversalExportButton] 文件下载完成');\n } else if (result.fileBlob) {\n console.log('📥 [UniversalExportButton] 从Blob下载文件...');\n const url = window.URL.createObjectURL(result.fileBlob);\n const link = document.createElement('a');\n link.href = url;\n link.download = result.fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n console.log('✅ [UniversalExportButton] 文件下载完成');\n } else if (result.exportId && typeof exportService.downloadExportFile === 'function') {\n console.log('📥 [UniversalExportButton] 从exportId兜底下载文件...');\n const blob = await exportService.downloadExportFile(result.exportId);\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = result.fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n console.log('✅ [UniversalExportButton] 文件下载完成(兜底分支)');\n } else {\n console.warn('⚠️ [UniversalExportButton] 导出成功但缺少可下载文件信息:', result);\n }\n\n // 延迟清除进度状态\n setTimeout(() => {\n setIsExporting(false);\n setExportProgress(null);\n }, 1000);\n\n onExportSuccess?.(result);\n } catch (error) {\n console.error('❌ [UniversalExportButton] 导出异常:', error);\n setIsExporting(false);\n setExportProgress(null);\n\n // 更好地处理错误信息\n let errorMessage = '导出失败';\n if (error && typeof error === 'object') {\n if ('message' in error && typeof error.message === 'string') {\n errorMessage = error.message;\n } else if ('code' in error && 'message' in error) {\n errorMessage = (error.code) + ': ' + (error.message);\n }\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n onExportError?.(errorMessage);\n }\n }, [exportService, dataSource, onExportSuccess, onExportError]);\n\n const handleQuickExport = useCallback(async () => {\n if (defaultConfig) {\n await handleExport(defaultConfig);\n } else {\n // 创建默认配置\n const config: ExportConfig = {\n id: 'quick_export',\n name: '快速导出',\n description: '使用默认配置快速导出',\n format: 'csv',\n fields: availableFields.map((field, index) => ({\n ...field,\n enabled: true,\n sortOrder: index,\n })),\n fileNameTemplate: '导出数据_{date}',\n includeHeader: true,\n delimiter: ',',\n encoding: 'utf-8',\n addBOM: true,\n createdAt: new Date(),\n updatedAt: new Date(),\n moduleId,\n businessId,\n };\n \n await handleExport(config);\n }\n }, [defaultConfig, availableFields, moduleId, businessId, handleExport]);\n\n // ============= 配置管理 =============\n\n const handleConfigSave = useCallback(async (config: ExportConfig) => {\n try {\n if (exportService) {\n const savedConfig = await exportService.createConfig(config);\n // 重新加载配置列表\n await loadSavedConfigs();\n onConfigSave?.(savedConfig);\n }\n setShowConfigEditor(false);\n } catch (error) {\n onExportError?.(error instanceof Error ? error.message : '保存配置失败');\n }\n }, [exportService, onConfigSave, onExportError, loadSavedConfigs]);\n\n // ============= 渲染进度 =============\n\n const renderProgress = () => {\n if (!exportProgress) return null;\n\n const { status, progress, processedRows, totalRows } = exportProgress;\n\n return (\n <div className=\"absolute top-full left-0 right-0 mt-2 bg-white border border-gray-200 rounded-lg shadow-lg p-4 z-[10]\">\n <div className=\"flex items-center gap-3 mb-2\">\n <Loader2 className=\"w-4 h-4 animate-spin text-blue-600\" />\n <span className=\"text-sm font-medium text-gray-900\">\n {status === 'processing' ? '正在导出...' : '导出完成'}\n </span>\n </div>\n \n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-xs text-gray-600\">\n <span>进度: {progress}%</span>\n <span>{processedRows} / {totalRows} 行</span>\n </div>\n \n <div className=\"w-full bg-gray-200 rounded-full h-2\">\n <div \n className=\"bg-blue-600 h-2 rounded-full transition-all duration-300\"\n style={{ width: (progress) + '%' }}\n />\n </div>\n </div>\n </div>\n );\n };\n\n // ============= 渲染下拉菜单 =============\n\n const renderDropdown = () => {\n if (!showDropdown) return null;\n\n return (\n <div className=\"absolute top-full left-0 mt-2 bg-white border border-gray-200 rounded-lg shadow-lg py-2 z-[10] min-w-48\">\n {/* 快速导出 */}\n <button\n onClick={() => {\n setShowDropdown(false);\n handleQuickExport();\n }}\n disabled={isExporting}\n className=\"w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 flex items-center gap-2\"\n >\n <Download className=\"w-4 h-4\" />\n 快速导出\n </button>\n\n {/* 使用保存的配置 */}\n {savedConfigs.length > 0 && (\n <>\n <div className=\"border-t border-gray-200 my-1\" />\n {savedConfigs.map((config) => (\n <button\n key={config.id}\n onClick={() => {\n setShowDropdown(false);\n handleExport(config);\n }}\n disabled={isExporting}\n className=\"w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 flex items-center gap-2\"\n >\n <FileText className=\"w-4 h-4\" />\n {config.name}\n </button>\n ))}\n </>\n )}\n\n {/* 配置编辑器 */}\n <div className=\"border-t border-gray-200 my-1\" />\n <button\n onClick={() => {\n setShowDropdown(false);\n setShowConfigEditor(true);\n }}\n className=\"w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 flex items-center gap-2\"\n >\n <Settings className=\"w-4 h-4\" />\n 自定义配置\n </button>\n </div>\n );\n };\n\n // ============= 渲染组件 =============\n\n const buttonStyle = BUTTON_STYLES[variant][size];\n const baseClasses = 'inline-flex items-center gap-2 rounded-lg font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed ' + (buttonStyle);\n\n return (\n <div className={clsx('relative', className)}>\n {/* 主按钮 */}\n <button\n onClick={() => setShowDropdown(!showDropdown)}\n disabled={disabled || isExporting}\n className={clsx(baseClasses, isExporting ? 'cursor-not-allowed' : '')}\n >\n {isExporting ? (\n <Loader2 className=\"w-4 h-4 animate-spin\" />\n ) : (\n <Download className=\"w-4 h-4\" />\n )}\n <span>{isExporting ? '导出中...' : buttonText}</span>\n <ChevronDown className=\"w-4 h-4\" />\n </button>\n\n {/* 下拉菜单 */}\n {renderDropdown()}\n\n {/* 进度显示 */}\n {renderProgress()}\n\n {/* 配置编辑器 */}\n <ExportConfigEditor\n moduleId={moduleId}\n businessId={businessId}\n availableFields={availableFields}\n onSave={handleConfigSave}\n onCancel={() => setShowConfigEditor(false)}\n visible={showConfigEditor}\n onConfigChange={loadSavedConfigs}\n />\n\n {/* 点击外部关闭下拉菜单 */}\n {showDropdown && (\n <div\n className=\"fixed inset-0 z-[0]\"\n onClick={() => setShowDropdown(false)}\n />\n )}\n </div>\n );\n};\n\n"]}
@@ -0,0 +1,162 @@
1
+ import { useStorage, useLocalStorage } from './chunk-6V2MIQPF.mjs';
2
+ import { ReactNativeStorageAdapter } from './chunk-P7JQRNBJ.mjs';
3
+ import { ElectronStorageAdapter } from './chunk-ZUZLWHH5.mjs';
4
+ import { WebStorageAdapter } from './chunk-WB4H6ZUW.mjs';
5
+ import { __export } from './chunk-MAI35PU6.mjs';
6
+
7
+ // src/common/storage/index.ts
8
+ var storage_exports = {};
9
+ __export(storage_exports, {
10
+ ElectronStorageAdapter: () => ElectronStorageAdapter,
11
+ MiniAppStorageAdapter: () => MiniAppStorageAdapter,
12
+ ReactNativeStorageAdapter: () => ReactNativeStorageAdapter,
13
+ WebStorageAdapter: () => WebStorageAdapter,
14
+ useAsyncStorage: () => useAsyncStorage,
15
+ useElectronStorage: () => useElectronStorage,
16
+ useLocalStorage: () => useLocalStorage,
17
+ useStorage: () => useStorage,
18
+ useTaroStorage: () => useTaroStorage
19
+ });
20
+
21
+ // src/common/storage/adapters/miniapp-adapter.ts
22
+ var Taro = null;
23
+ var taroLoadPromise = null;
24
+ var isMiniAppEnvironment = null;
25
+ function checkIsMiniApp() {
26
+ if (isMiniAppEnvironment !== null) return isMiniAppEnvironment;
27
+ if (typeof window === "undefined") {
28
+ isMiniAppEnvironment = false;
29
+ return false;
30
+ }
31
+ const globalObj = window;
32
+ isMiniAppEnvironment = !!(globalObj.wx || // 微信小程序
33
+ globalObj.my || // 支付宝小程序
34
+ globalObj.swan || // 百度小程序
35
+ globalObj.tt || // 抖音小程序
36
+ globalObj.qq || // QQ 小程序
37
+ globalObj.Taro);
38
+ return isMiniAppEnvironment;
39
+ }
40
+ async function loadTaro() {
41
+ if (!checkIsMiniApp()) {
42
+ return;
43
+ }
44
+ if (Taro) return;
45
+ if (taroLoadPromise) return taroLoadPromise;
46
+ taroLoadPromise = (async () => {
47
+ try {
48
+ const importTaro = new Function('return import("@tarojs/taro")');
49
+ const taroModule = await importTaro();
50
+ Taro = taroModule.default || taroModule;
51
+ } catch (e) {
52
+ console.warn("[MiniAppStorage] Taro is not available. This is expected in non-MiniApp environments.");
53
+ }
54
+ })();
55
+ return taroLoadPromise;
56
+ }
57
+ var MiniAppStorageAdapter = class {
58
+ constructor() {
59
+ this.listeners = /* @__PURE__ */ new Map();
60
+ }
61
+ async getItem(key) {
62
+ if (!checkIsMiniApp()) {
63
+ return null;
64
+ }
65
+ await loadTaro();
66
+ if (!Taro) return null;
67
+ try {
68
+ const result = await Taro.getStorage({ key });
69
+ return result.data;
70
+ } catch (error) {
71
+ if (error.errMsg?.includes("data not found")) {
72
+ return null;
73
+ }
74
+ console.error('[MiniAppStorage] Error getting item "' + key + '":', error);
75
+ return null;
76
+ }
77
+ }
78
+ async setItem(key, value) {
79
+ if (!checkIsMiniApp()) {
80
+ throw new Error("[MiniAppStorage] This adapter can only be used in MiniApp environment");
81
+ }
82
+ await loadTaro();
83
+ if (!Taro) {
84
+ throw new Error("[MiniAppStorage] Taro is not available");
85
+ }
86
+ try {
87
+ await Taro.setStorage({ key, data: value });
88
+ this.notifyListeners(key, value);
89
+ } catch (error) {
90
+ console.error('[MiniAppStorage] Error setting item "' + key + '":', error);
91
+ throw error;
92
+ }
93
+ }
94
+ async removeItem(key) {
95
+ if (!checkIsMiniApp()) {
96
+ throw new Error("[MiniAppStorage] This adapter can only be used in MiniApp environment");
97
+ }
98
+ await loadTaro();
99
+ if (!Taro) {
100
+ throw new Error("[MiniAppStorage] Taro is not available");
101
+ }
102
+ try {
103
+ await Taro.removeStorage({ key });
104
+ this.notifyListeners(key, null);
105
+ } catch (error) {
106
+ console.error('[MiniAppStorage] Error removing item "' + key + '":', error);
107
+ throw error;
108
+ }
109
+ }
110
+ async clear() {
111
+ if (!checkIsMiniApp()) {
112
+ throw new Error("[MiniAppStorage] This adapter can only be used in MiniApp environment");
113
+ }
114
+ await loadTaro();
115
+ if (!Taro) {
116
+ throw new Error("[MiniAppStorage] Taro is not available");
117
+ }
118
+ try {
119
+ await Taro.clearStorage();
120
+ } catch (error) {
121
+ console.error("[MiniAppStorage] Error clearing storage:", error);
122
+ throw error;
123
+ }
124
+ }
125
+ addChangeListener(callback) {
126
+ if (!this.listeners.has("*")) {
127
+ this.listeners.set("*", /* @__PURE__ */ new Set());
128
+ }
129
+ this.listeners.get("*").add(callback);
130
+ return () => {
131
+ this.listeners.get("*")?.delete(callback);
132
+ };
133
+ }
134
+ notifyListeners(key, value) {
135
+ const globalListeners = this.listeners.get("*");
136
+ if (globalListeners) {
137
+ globalListeners.forEach((callback) => callback(key, value));
138
+ }
139
+ }
140
+ };
141
+
142
+ // src/common/storage/hooks/useAsyncStorage.ts
143
+ var asyncStorage = new ReactNativeStorageAdapter();
144
+ function useAsyncStorage(key, defaultValue) {
145
+ return useStorage(asyncStorage, key, defaultValue);
146
+ }
147
+
148
+ // src/common/storage/hooks/useTaroStorage.ts
149
+ var taroStorage = new MiniAppStorageAdapter();
150
+ function useTaroStorage(key, defaultValue) {
151
+ return useStorage(taroStorage, key, defaultValue);
152
+ }
153
+
154
+ // src/common/storage/hooks/useElectronStorage.ts
155
+ var electronStorage = new ElectronStorageAdapter();
156
+ function useElectronStorage(key, defaultValue) {
157
+ return useStorage(electronStorage, key, defaultValue);
158
+ }
159
+
160
+ export { MiniAppStorageAdapter, storage_exports, useAsyncStorage, useElectronStorage, useTaroStorage };
161
+ //# sourceMappingURL=chunk-X5GINUGI.mjs.map
162
+ //# sourceMappingURL=chunk-X5GINUGI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/storage/index.ts","../src/common/storage/adapters/miniapp-adapter.ts","../src/common/storage/hooks/useAsyncStorage.ts","../src/common/storage/hooks/useTaroStorage.ts","../src/common/storage/hooks/useElectronStorage.ts"],"names":[],"mappings":"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","file":"chunk-X5GINUGI.mjs","sourcesContent":["/**\n * @package sa2kit/common/storage\n * 跨平台存储适配器与 Hooks\n */\nexport type { StorageAdapter, StorageChangeEvent } from './types';\nexport { WebStorageAdapter } from './adapters/web-adapter';\nexport { ReactNativeStorageAdapter } from './adapters/react-native-adapter';\nexport { MiniAppStorageAdapter } from './adapters/miniapp-adapter';\nexport { ElectronStorageAdapter } from './adapters/electron-adapter';\nexport * from './hooks';\n","/**\n * 小程序平台存储适配器 (wx.storage / Taro.storage)\n * 仅在小程序环境下加载和使用\n */\n\nimport type { StorageAdapter } from '../types';\n\n// 延迟加载 Taro(仅在小程序环境)\nlet Taro: any = null;\nlet taroLoadPromise: Promise<void> | null = null;\nlet isMiniAppEnvironment: boolean | null = null;\n\n/**\n * 检测是否是小程序环境\n */\nfunction checkIsMiniApp(): boolean {\n if (isMiniAppEnvironment !== null) return isMiniAppEnvironment;\n\n // 服务端环境,不是小程序\n if (typeof window === 'undefined') {\n isMiniAppEnvironment = false;\n return false;\n }\n\n // 检测是否有小程序全局对象\n const globalObj = window as any;\n isMiniAppEnvironment = !!(\n globalObj.wx || // 微信小程序\n globalObj.my || // 支付宝小程序\n globalObj.swan || // 百度小程序\n globalObj.tt || // 抖音小程序\n globalObj.qq || // QQ 小程序\n globalObj.Taro // Taro 环境\n );\n\n return isMiniAppEnvironment;\n}\n\n/**\n * 加载 Taro(仅在小程序环境)\n */\nasync function loadTaro() {\n // 如果不是小程序环境,直接返回\n if (!checkIsMiniApp()) {\n return;\n }\n\n if (Taro) return;\n if (taroLoadPromise) return taroLoadPromise;\n\n taroLoadPromise = (async () => {\n try {\n // 使用动态导入,仅在小程序环境加载\n // 使用 Function 构造器来避免 TypeScript 在编译时解析模块\n const importTaro = new Function('return import(\"@tarojs/taro\")');\n const taroModule = await importTaro();\n Taro = taroModule.default || taroModule;\n } catch (e) {\n // Taro 不可用(非小程序环境或未安装)\n console.warn('[MiniAppStorage] Taro is not available. This is expected in non-MiniApp environments.');\n }\n })();\n\n return taroLoadPromise;\n}\n\nexport class MiniAppStorageAdapter implements StorageAdapter {\n private listeners: Map<string, Set<(key: string, value: string | null) => void>> = new Map();\n\n async getItem(key: string): Promise<string | null> {\n // 非小程序环境,直接返回 null\n if (!checkIsMiniApp()) {\n return null;\n }\n\n await loadTaro();\n if (!Taro) return null;\n\n try {\n const result = await Taro.getStorage({ key });\n return result.data;\n } catch (error: any) {\n // 如果 key 不存在,Taro 会抛出错误\n if (error.errMsg?.includes('data not found')) {\n return null;\n }\n console.error('[MiniAppStorage] Error getting item \"' + (key) + '\":', error);\n return null;\n }\n }\n\n async setItem(key: string, value: string): Promise<void> {\n // 非小程序环境,抛出错误\n if (!checkIsMiniApp()) {\n throw new Error('[MiniAppStorage] This adapter can only be used in MiniApp environment');\n }\n\n await loadTaro();\n if (!Taro) {\n throw new Error('[MiniAppStorage] Taro is not available');\n }\n\n try {\n await Taro.setStorage({ key, data: value });\n this.notifyListeners(key, value);\n } catch (error) {\n console.error('[MiniAppStorage] Error setting item \"' + (key) + '\":', error);\n throw error;\n }\n }\n\n async removeItem(key: string): Promise<void> {\n // 非小程序环境,抛出错误\n if (!checkIsMiniApp()) {\n throw new Error('[MiniAppStorage] This adapter can only be used in MiniApp environment');\n }\n\n await loadTaro();\n if (!Taro) {\n throw new Error('[MiniAppStorage] Taro is not available');\n }\n\n try {\n await Taro.removeStorage({ key });\n this.notifyListeners(key, null);\n } catch (error) {\n console.error('[MiniAppStorage] Error removing item \"' + (key) + '\":', error);\n throw error;\n }\n }\n\n async clear(): Promise<void> {\n // 非小程序环境,抛出错误\n if (!checkIsMiniApp()) {\n throw new Error('[MiniAppStorage] This adapter can only be used in MiniApp environment');\n }\n\n await loadTaro();\n if (!Taro) {\n throw new Error('[MiniAppStorage] Taro is not available');\n }\n\n try {\n await Taro.clearStorage();\n } catch (error) {\n console.error('[MiniAppStorage] Error clearing storage:', error);\n throw error;\n }\n }\n\n addChangeListener(callback: (key: string, value: string | null) => void): () => void {\n // 小程序没有原生的存储监听,我们使用内存中的监听器\n if (!this.listeners.has('*')) {\n this.listeners.set('*', new Set());\n }\n\n this.listeners.get('*')!.add(callback);\n\n // 返回清理函数\n return () => {\n this.listeners.get('*')?.delete(callback);\n };\n }\n\n private notifyListeners(key: string, value: string | null): void {\n const globalListeners = this.listeners.get('*');\n if (globalListeners) {\n globalListeners.forEach((callback) => callback(key, value));\n }\n }\n}\n\n","'use client';\n\n/**\n * React Native AsyncStorage Hook\n * 基于通用 useStorage 的便捷封装\n */\n\nimport { useStorage } from './useStorage';\nimport { ReactNativeStorageAdapter } from '../adapters/react-native-adapter';\n\n// 创建单例适配器\nconst asyncStorage = new ReactNativeStorageAdapter();\n\n/**\n * React Native 的 AsyncStorage Hook\n *\n * @param key - 存储键名\n * @param defaultValue - 默认值\n * @returns [value, setValue, removeValue, isLoading]\n */\nexport function useAsyncStorage<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n return useStorage(asyncStorage, key, defaultValue);\n}\n\n","'use client';\n\n/**\n * 小程序 Taro Storage Hook\n * 基于通用 useStorage 的便捷封装\n */\n\nimport { useStorage } from './useStorage';\nimport { MiniAppStorageAdapter } from '../adapters/miniapp-adapter';\n\n// 创建单例适配器\nconst taroStorage = new MiniAppStorageAdapter();\n\n/**\n * 小程序的 Taro Storage Hook\n *\n * @param key - 存储键名\n * @param defaultValue - 默认值\n * @returns [value, setValue, removeValue, isLoading]\n */\nexport function useTaroStorage<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n return useStorage(taroStorage, key, defaultValue);\n}\n\n","'use client';\n\n/**\n * Electron 桌面端 Storage Hook\n * 基于通用 useStorage 的便捷封装\n */\n\nimport { useStorage } from './useStorage';\nimport { ElectronStorageAdapter } from '../adapters/electron-adapter';\n\n// 创建单例适配器\nconst electronStorage = new ElectronStorageAdapter();\n\n/**\n * Electron 桌面端的 Storage Hook\n *\n * 在 Electron 渲染进程中使用 localStorage\n * 支持跨窗口同步\n *\n * @param key - 存储键名\n * @param defaultValue - 默认值\n * @returns [value, setValue, removeValue, isLoading]\n *\n * @example\n * ```tsx\n * const [token, setToken, removeToken] = useElectronStorage('auth-token', '')\n * ```\n */\nexport function useElectronStorage<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n return useStorage(electronStorage, key, defaultValue);\n}\n\n"]}
@@ -0,0 +1,82 @@
1
+ // src/common/ossFile/shared/ossConfig.ts
2
+ var STANDARD_ALIYUN_OSS_KEYS = {
3
+ region: "ALIYUN_OSS_REGION",
4
+ bucket: "ALIYUN_OSS_BUCKET",
5
+ accessKeyId: "ALIYUN_OSS_ACCESS_KEY_ID",
6
+ accessKeySecret: "ALIYUN_OSS_ACCESS_KEY_SECRET",
7
+ customDomain: "ALIYUN_OSS_CUSTOM_DOMAIN",
8
+ secure: "ALIYUN_OSS_SECURE",
9
+ internal: "ALIYUN_OSS_INTERNAL"
10
+ };
11
+ function parseAliyunOssConfigFromMap(configMap, keys = STANDARD_ALIYUN_OSS_KEYS) {
12
+ const region = configMap[keys.region]?.trim();
13
+ const bucket = configMap[keys.bucket]?.trim();
14
+ const accessKeyId = configMap[keys.accessKeyId]?.trim();
15
+ const accessKeySecret = configMap[keys.accessKeySecret]?.trim();
16
+ if (!region || !bucket || !accessKeyId || !accessKeySecret) {
17
+ return null;
18
+ }
19
+ const secureRaw = configMap[keys.secure]?.trim().toLowerCase();
20
+ const internalRaw = configMap[keys.internal]?.trim().toLowerCase();
21
+ return {
22
+ type: "aliyun-oss",
23
+ enabled: true,
24
+ region,
25
+ bucket,
26
+ accessKeyId,
27
+ accessKeySecret,
28
+ customDomain: configMap[keys.customDomain]?.trim() || void 0,
29
+ secure: secureRaw === "true",
30
+ internal: internalRaw === "true"
31
+ };
32
+ }
33
+ function isCompleteOssConfig(config) {
34
+ return Boolean(
35
+ config?.enabled && config.region && config.bucket && config.accessKeyId && config.accessKeySecret
36
+ );
37
+ }
38
+ function getOssStorageModeLabelFromConfig(config) {
39
+ if (!isCompleteOssConfig(config)) {
40
+ return "\u672C\u5730\u5B58\u50A8 + \u6587\u4EF6\u670D\u52A1";
41
+ }
42
+ return config.customDomain ? "\u963F\u91CC\u4E91 OSS + \u81EA\u5B9A\u4E49\u57DF\u540D" : "\u963F\u91CC\u4E91 OSS";
43
+ }
44
+
45
+ // src/common/ossFile/shared/path.ts
46
+ function resolveUploadFolderPath(options) {
47
+ for (const candidate of [options.folderPath, options.customPath]) {
48
+ if (typeof candidate === "string" && candidate.trim()) {
49
+ return candidate.trim();
50
+ }
51
+ }
52
+ return buildModuleUploadPath({
53
+ moduleId: options.moduleId,
54
+ businessId: options.businessId,
55
+ fileName: options.fileName
56
+ });
57
+ }
58
+ function resolveUploadFolderPathFromFormData(formData, defaults) {
59
+ const folderPath = formData.get("folderPath");
60
+ const customPath = formData.get("customPath");
61
+ return resolveUploadFolderPath({
62
+ ...defaults,
63
+ folderPath: typeof folderPath === "string" ? folderPath : void 0,
64
+ customPath: typeof customPath === "string" ? customPath : void 0
65
+ });
66
+ }
67
+ function buildModuleUploadPath(options) {
68
+ const extension = options.fileName.split(".").pop()?.toLowerCase() || "jpg";
69
+ const timestamp = Date.now();
70
+ const randomId = Math.random().toString(36).slice(2, 11);
71
+ const segments = [
72
+ options.moduleId,
73
+ options.businessId,
74
+ options.subfolder
75
+ ].filter(Boolean);
76
+ const base = segments.length > 0 ? segments.join("/") : options.moduleId;
77
+ return `${base}/${timestamp}_${randomId}.${extension}`;
78
+ }
79
+
80
+ export { STANDARD_ALIYUN_OSS_KEYS, buildModuleUploadPath, getOssStorageModeLabelFromConfig, isCompleteOssConfig, parseAliyunOssConfigFromMap, resolveUploadFolderPath, resolveUploadFolderPathFromFormData };
81
+ //# sourceMappingURL=chunk-XB7GUEHZ.mjs.map
82
+ //# sourceMappingURL=chunk-XB7GUEHZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/ossFile/shared/ossConfig.ts","../src/common/ossFile/shared/path.ts"],"names":[],"mappings":"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","file":"chunk-XB7GUEHZ.mjs","sourcesContent":["import type { AliyunOSSConfig } from '../../universalFile/server/types';\n\n/** 与 profile-v1 配置项 / 环境变量对齐的 OSS 键名 */\nexport const STANDARD_ALIYUN_OSS_KEYS = {\n region: 'ALIYUN_OSS_REGION',\n bucket: 'ALIYUN_OSS_BUCKET',\n accessKeyId: 'ALIYUN_OSS_ACCESS_KEY_ID',\n accessKeySecret: 'ALIYUN_OSS_ACCESS_KEY_SECRET',\n customDomain: 'ALIYUN_OSS_CUSTOM_DOMAIN',\n secure: 'ALIYUN_OSS_SECURE',\n internal: 'ALIYUN_OSS_INTERNAL',\n} as const;\n\nexport type OssConfigKeyMap = typeof STANDARD_ALIYUN_OSS_KEYS;\n\nexport function parseAliyunOssConfigFromMap(\n configMap: Record<string, string | undefined | null>,\n keys: OssConfigKeyMap = STANDARD_ALIYUN_OSS_KEYS,\n): AliyunOSSConfig | null {\n const region = configMap[keys.region]?.trim();\n const bucket = configMap[keys.bucket]?.trim();\n const accessKeyId = configMap[keys.accessKeyId]?.trim();\n const accessKeySecret = configMap[keys.accessKeySecret]?.trim();\n\n if (!region || !bucket || !accessKeyId || !accessKeySecret) {\n return null;\n }\n\n const secureRaw = configMap[keys.secure]?.trim().toLowerCase();\n const internalRaw = configMap[keys.internal]?.trim().toLowerCase();\n\n return {\n type: 'aliyun-oss',\n enabled: true,\n region,\n bucket,\n accessKeyId,\n accessKeySecret,\n customDomain: configMap[keys.customDomain]?.trim() || undefined,\n secure: secureRaw === 'true',\n internal: internalRaw === 'true',\n };\n}\n\nexport function isCompleteOssConfig(config: AliyunOSSConfig | null): config is AliyunOSSConfig {\n return Boolean(\n config?.enabled\n && config.region\n && config.bucket\n && config.accessKeyId\n && config.accessKeySecret,\n );\n}\n\nexport function getOssStorageModeLabelFromConfig(config: AliyunOSSConfig | null): string {\n if (!isCompleteOssConfig(config)) {\n return '本地存储 + 文件服务';\n }\n return config.customDomain\n ? '阿里云 OSS + 自定义域名'\n : '阿里云 OSS';\n}\n","export interface BuildModuleUploadPathOptions {\n moduleId: string;\n businessId?: string;\n fileName: string;\n subfolder?: string;\n}\n\nexport interface ResolveUploadFolderPathOptions {\n moduleId: string;\n businessId?: string;\n fileName: string;\n /** 优先于 customPath;与 API FormData 字段一致 */\n folderPath?: string | null;\n /** universalFile UploadFileInfo.customPath 别名 */\n customPath?: string | null;\n}\n\n/**\n * 统一 folderPath / customPath 解析(R2-204)。\n * client 与 server 均应使用此函数,避免双端路径不一致。\n */\nexport function resolveUploadFolderPath(\n options: ResolveUploadFolderPathOptions,\n): string {\n for (const candidate of [options.folderPath, options.customPath]) {\n if (typeof candidate === 'string' && candidate.trim()) {\n return candidate.trim();\n }\n }\n return buildModuleUploadPath({\n moduleId: options.moduleId,\n businessId: options.businessId,\n fileName: options.fileName,\n });\n}\n\n/**\n * 从 multipart FormData 解析上传路径(兼容 folderPath 与 customPath)。\n */\nexport function resolveUploadFolderPathFromFormData(\n formData: FormData,\n defaults: Pick<ResolveUploadFolderPathOptions, 'moduleId' | 'businessId' | 'fileName'>,\n): string {\n const folderPath = formData.get('folderPath');\n const customPath = formData.get('customPath');\n return resolveUploadFolderPath({\n ...defaults,\n folderPath: typeof folderPath === 'string' ? folderPath : undefined,\n customPath: typeof customPath === 'string' ? customPath : undefined,\n });\n}\n\n/**\n * 生成 OSS / universal-file 使用的 folderPath(含扩展名)。\n */\nexport function buildModuleUploadPath(options: BuildModuleUploadPathOptions): string {\n const extension = options.fileName.split('.').pop()?.toLowerCase() || 'jpg';\n const timestamp = Date.now();\n const randomId = Math.random().toString(36).slice(2, 11);\n const segments = [\n options.moduleId,\n options.businessId,\n options.subfolder,\n ].filter(Boolean);\n const base = segments.length > 0 ? segments.join('/') : options.moduleId;\n return `${base}/${timestamp}_${randomId}.${extension}`;\n}\n"]}