sa2kit 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/README.md +5 -5
  2. package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
  3. package/dist/{AliyunOSSProvider-4GRL2FJB.js.map → AliyunOSSProvider-7IOT5U6M.js.map} +1 -1
  4. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
  5. package/dist/{AliyunOSSProvider-QNVFIZ7Q.mjs.map → AliyunOSSProvider-ZXZM7OQA.mjs.map} +1 -1
  6. package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
  7. package/dist/{LocalStorageProvider-PFA2DMIJ.js.map → LocalStorageProvider-KJKRCKBS.js.map} +1 -1
  8. package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
  9. package/dist/{LocalStorageProvider-J5RHV37G.mjs.map → LocalStorageProvider-O22465NY.mjs.map} +1 -1
  10. package/dist/{chunk-SLKOEYFH.js → chunk-2234T4A6.js} +5 -5
  11. package/dist/chunk-2234T4A6.js.map +1 -0
  12. package/dist/{chunk-HQLKOXG7.js → chunk-36KGNXKW.js} +3 -3
  13. package/dist/{chunk-HQLKOXG7.js.map → chunk-36KGNXKW.js.map} +1 -1
  14. package/dist/{chunk-BCE6RUZV.js → chunk-375C7WL7.js} +19 -19
  15. package/dist/chunk-375C7WL7.js.map +1 -0
  16. package/dist/{chunk-VMTEDX5H.js → chunk-3J24Z4MB.js} +34 -318
  17. package/dist/chunk-3J24Z4MB.js.map +1 -0
  18. package/dist/{chunk-PBI7FKMB.js → chunk-3QCATFQV.js} +3 -3
  19. package/dist/chunk-3QCATFQV.js.map +1 -0
  20. package/dist/{chunk-FXQOXLDE.js → chunk-3R6JHA6D.js} +4 -4
  21. package/dist/chunk-3R6JHA6D.js.map +1 -0
  22. package/dist/{chunk-ZRAW3HXA.js → chunk-4OXKHV7J.js} +3 -3
  23. package/dist/chunk-4OXKHV7J.js.map +1 -0
  24. package/dist/chunk-4PJM4752.js +4 -0
  25. package/dist/{chunk-5USIS3UM.js.map → chunk-4PJM4752.js.map} +1 -1
  26. package/dist/{chunk-3Z43XGA4.mjs → chunk-65JRVC3F.mjs} +4 -4
  27. package/dist/{chunk-3Z43XGA4.mjs.map → chunk-65JRVC3F.mjs.map} +1 -1
  28. package/dist/{chunk-Q5EDCKQA.js → chunk-6HL54I2B.js} +16 -16
  29. package/dist/chunk-6HL54I2B.js.map +1 -0
  30. package/dist/chunk-6V2MIQPF.mjs +77 -0
  31. package/dist/chunk-6V2MIQPF.mjs.map +1 -0
  32. package/dist/{chunk-C6KV7VTZ.mjs → chunk-7CRU2Y5X.mjs} +5 -5
  33. package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
  34. package/dist/chunk-7PMT4L4I.js +324 -0
  35. package/dist/chunk-7PMT4L4I.js.map +1 -0
  36. package/dist/{chunk-XJ7ZAGC5.js → chunk-7VVZHFEM.js} +3 -3
  37. package/dist/chunk-7VVZHFEM.js.map +1 -0
  38. package/dist/chunk-AWHGIKTQ.js +56 -0
  39. package/dist/{chunk-FHLTPXAR.js.map → chunk-AWHGIKTQ.js.map} +1 -1
  40. package/dist/chunk-B3GYF6TY.js +37 -0
  41. package/dist/{chunk-2Y7BKFKZ.js.map → chunk-B3GYF6TY.js.map} +1 -1
  42. package/dist/{chunk-5FUAQLGC.mjs → chunk-BDBJFOXM.mjs} +3 -3
  43. package/dist/{chunk-5FUAQLGC.mjs.map → chunk-BDBJFOXM.mjs.map} +1 -1
  44. package/dist/{chunk-ZGVB35L2.mjs → chunk-BTW3SWQN.mjs} +3 -3
  45. package/dist/chunk-BTW3SWQN.mjs.map +1 -0
  46. package/dist/{chunk-I5ZPEDNR.mjs → chunk-CHYSSZ4E.mjs} +10 -10
  47. package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
  48. package/dist/{chunk-FIUBFREP.mjs → chunk-DO6QYAZV.mjs} +5 -5
  49. package/dist/chunk-DO6QYAZV.mjs.map +1 -0
  50. package/dist/{chunk-MBANGIG3.mjs → chunk-DTR53LQO.mjs} +6 -6
  51. package/dist/chunk-DTR53LQO.mjs.map +1 -0
  52. package/dist/{chunk-EQXPL7TN.mjs → chunk-EI2S4XDG.mjs} +16 -5
  53. package/dist/chunk-EI2S4XDG.mjs.map +1 -0
  54. package/dist/{chunk-GSNGCENJ.js → chunk-EOZHUI46.js} +16 -4
  55. package/dist/chunk-EOZHUI46.js.map +1 -0
  56. package/dist/{chunk-25OFOKNF.js → chunk-F2BZIU67.js} +18 -5
  57. package/dist/chunk-F2BZIU67.js.map +1 -0
  58. package/dist/{chunk-AQPU2AXH.js → chunk-F2TEJSCP.js} +10 -10
  59. package/dist/chunk-F2TEJSCP.js.map +1 -0
  60. package/dist/{chunk-UCOE6SET.js → chunk-FCLS5R24.js} +3 -3
  61. package/dist/chunk-FCLS5R24.js.map +1 -0
  62. package/dist/{chunk-3NHAT7D4.mjs → chunk-FUA6ZGMI.mjs} +27 -12
  63. package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
  64. package/dist/chunk-FY2X3LYR.mjs +3 -0
  65. package/dist/{chunk-VRN76M56.mjs.map → chunk-FY2X3LYR.mjs.map} +1 -1
  66. package/dist/{chunk-V7EVKD5G.mjs → chunk-GS4SAW25.mjs} +4 -4
  67. package/dist/chunk-GS4SAW25.mjs.map +1 -0
  68. package/dist/chunk-H56ICWUO.js +321 -0
  69. package/dist/chunk-H56ICWUO.js.map +1 -0
  70. package/dist/{chunk-HDMIOOZY.mjs → chunk-HG34SGMN.mjs} +4 -4
  71. package/dist/chunk-HG34SGMN.mjs.map +1 -0
  72. package/dist/chunk-HL4H2HF6.js +279 -0
  73. package/dist/chunk-HL4H2HF6.js.map +1 -0
  74. package/dist/chunk-IJIQUMAK.mjs +272 -0
  75. package/dist/chunk-IJIQUMAK.mjs.map +1 -0
  76. package/dist/{imageCrop/index.mjs → chunk-KEZFTDZT.mjs} +24 -6
  77. package/dist/chunk-KEZFTDZT.mjs.map +1 -0
  78. package/dist/{chunk-KQ643L7Z.js → chunk-KHOVC2KL.js} +3 -3
  79. package/dist/chunk-KHOVC2KL.js.map +1 -0
  80. package/dist/{chunk-6PMXAK7F.js → chunk-KRBSTLKC.js} +57 -57
  81. package/dist/chunk-KRBSTLKC.js.map +1 -0
  82. package/dist/chunk-KVYHCGRY.js +2011 -0
  83. package/dist/chunk-KVYHCGRY.js.map +1 -0
  84. package/dist/{chunk-G7UBMCUT.mjs → chunk-LZ5YTMMP.mjs} +3 -3
  85. package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
  86. package/dist/{chunk-WW4GE6CZ.js → chunk-MJ6XJGAL.js} +23 -119
  87. package/dist/chunk-MJ6XJGAL.js.map +1 -0
  88. package/dist/{chunk-NCRP2YHY.mjs → chunk-MKLXCV4Z.mjs} +8 -96
  89. package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
  90. package/dist/chunk-MMDSZIXD.mjs +286 -0
  91. package/dist/chunk-MMDSZIXD.mjs.map +1 -0
  92. package/dist/{chunk-TC5YU6A4.mjs → chunk-N2O3OX5Y.mjs} +3 -3
  93. package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
  94. package/dist/{chunk-3FRAIS4T.mjs → chunk-O6NNSPWD.mjs} +5 -5
  95. package/dist/{chunk-3FRAIS4T.mjs.map → chunk-O6NNSPWD.mjs.map} +1 -1
  96. package/dist/chunk-OIRZXSYM.js +80 -0
  97. package/dist/chunk-OIRZXSYM.js.map +1 -0
  98. package/dist/{chunk-Q5VFBPMG.mjs → chunk-P7JQRNBJ.mjs} +3 -3
  99. package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
  100. package/dist/{chunk-BIHYZA67.mjs → chunk-PLIG5257.mjs} +18 -18
  101. package/dist/chunk-PLIG5257.mjs.map +1 -0
  102. package/dist/chunk-QIF4MG5V.mjs +283 -0
  103. package/dist/chunk-QIF4MG5V.mjs.map +1 -0
  104. package/dist/{chunk-4OOANEJV.mjs → chunk-RHECN4E2.mjs} +21 -21
  105. package/dist/chunk-RHECN4E2.mjs.map +1 -0
  106. package/dist/{chunk-YOTQG4NP.mjs → chunk-RHHTZTIN.mjs} +4 -4
  107. package/dist/chunk-RHHTZTIN.mjs.map +1 -0
  108. package/dist/{chunk-G6NSKJMH.js → chunk-RRQ2X26Z.js} +4 -4
  109. package/dist/chunk-RRQ2X26Z.js.map +1 -0
  110. package/dist/{chunk-4WBCWJSN.js → chunk-RST2T54Y.js} +7 -7
  111. package/dist/chunk-RST2T54Y.js.map +1 -0
  112. package/dist/{chunk-R2DXTE2L.js → chunk-RVNQI6BI.js} +4 -4
  113. package/dist/chunk-RVNQI6BI.js.map +1 -0
  114. package/dist/{chunk-SKFEJPMJ.mjs → chunk-S3K4LTRI.mjs} +6 -6
  115. package/dist/chunk-S3K4LTRI.mjs.map +1 -0
  116. package/dist/{chunk-ZM2SZJTZ.js → chunk-SWZ5XNF6.js} +9 -9
  117. package/dist/chunk-SWZ5XNF6.js.map +1 -0
  118. package/dist/{chunk-QSKLQX6H.js → chunk-U7HNBCBS.js} +16 -16
  119. package/dist/chunk-U7HNBCBS.js.map +1 -0
  120. package/dist/{chunk-CIVO4R6N.mjs → chunk-UJS3YSD3.mjs} +3 -3
  121. package/dist/chunk-UJS3YSD3.mjs.map +1 -0
  122. package/dist/{chunk-G6HXNQ2U.mjs → chunk-UJUWDF7M.mjs} +8 -8
  123. package/dist/chunk-UJUWDF7M.mjs.map +1 -0
  124. package/dist/{chunk-CAYOQDBR.js → chunk-UR5NENGE.js} +3 -3
  125. package/dist/chunk-UR5NENGE.js.map +1 -0
  126. package/dist/{chunk-QXAOXBVB.mjs → chunk-V7HGBDCB.mjs} +3 -3
  127. package/dist/chunk-V7HGBDCB.mjs.map +1 -0
  128. package/dist/{chunk-ATUCZXJY.js → chunk-V7RLIZMN.js} +14 -4
  129. package/dist/chunk-V7RLIZMN.js.map +1 -0
  130. package/dist/{chunk-ACUFEDVQ.js → chunk-VCKXK6V5.js} +9 -9
  131. package/dist/chunk-VCKXK6V5.js.map +1 -0
  132. package/dist/{chunk-XUS5ACKR.mjs → chunk-VIEXDTNF.mjs} +3 -3
  133. package/dist/chunk-VIEXDTNF.mjs.map +1 -0
  134. package/dist/{imageCrop/index.js → chunk-VN2DULIA.js} +24 -5
  135. package/dist/chunk-VN2DULIA.js.map +1 -0
  136. package/dist/{chunk-S6YSGVWD.js → chunk-VNWMRUY6.js} +31 -87
  137. package/dist/chunk-VNWMRUY6.js.map +1 -0
  138. package/dist/{chunk-3DXPQ4YV.mjs → chunk-VYK4M2D6.mjs} +18 -6
  139. package/dist/chunk-VYK4M2D6.mjs.map +1 -0
  140. package/dist/{chunk-WEEXCPSE.mjs → chunk-WB4H6ZUW.mjs} +3 -3
  141. package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
  142. package/dist/{chunk-GWNBVGDT.mjs → chunk-WM3AEJ2E.mjs} +6 -257
  143. package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
  144. package/dist/{chunk-CX2GHCAI.mjs → chunk-X5GINUGI.mjs} +26 -81
  145. package/dist/chunk-X5GINUGI.mjs.map +1 -0
  146. package/dist/{chunk-DIF5VRL3.mjs → chunk-XB7GUEHZ.mjs} +14 -5
  147. package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
  148. package/dist/{chunk-ZLYPALF3.js → chunk-XE5RGZ3B.js} +11 -11
  149. package/dist/chunk-XE5RGZ3B.js.map +1 -0
  150. package/dist/{chunk-WJ7IMUEJ.mjs → chunk-XNTIMVSL.mjs} +7 -7
  151. package/dist/chunk-XNTIMVSL.mjs.map +1 -0
  152. package/dist/{chunk-ZWQJSZEY.js → chunk-Y7WHUKJF.js} +28 -12
  153. package/dist/chunk-Y7WHUKJF.js.map +1 -0
  154. package/dist/{components/index.mjs → chunk-YIRPPMCN.mjs} +305 -785
  155. package/dist/chunk-YIRPPMCN.mjs.map +1 -0
  156. package/dist/{chunk-KH6RQ4J5.js → chunk-Z2SNB5LJ.js} +3 -3
  157. package/dist/chunk-Z2SNB5LJ.js.map +1 -0
  158. package/dist/{chunk-HJ6MH7J7.js → chunk-ZOP7YIVX.js} +17 -17
  159. package/dist/chunk-ZOP7YIVX.js.map +1 -0
  160. package/dist/{chunk-HJZHQW5R.mjs → chunk-ZUZLWHH5.mjs} +3 -3
  161. package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
  162. package/dist/{ai → common/ai}/llm/core/index.d.mts +3 -3
  163. package/dist/{ai → common/ai}/llm/core/index.d.ts +3 -3
  164. package/dist/{ai/llm → common/ai/llm/core}/index.js +14 -14
  165. package/dist/{ai/llm → common/ai/llm/core}/index.mjs +3 -3
  166. package/dist/{ai → common/ai}/llm/electron/index.d.mts +3 -3
  167. package/dist/{ai/llm/web → common/ai/llm/electron}/index.d.ts +3 -3
  168. package/dist/common/ai/llm/electron/index.js +67 -0
  169. package/dist/common/ai/llm/electron/index.mjs +10 -0
  170. package/dist/{ai → common/ai}/llm/index.d.mts +2 -2
  171. package/dist/{ai → common/ai}/llm/index.d.ts +2 -2
  172. package/dist/{ai/llm/core → common/ai/llm}/index.js +13 -13
  173. package/dist/{ai/llm/core → common/ai/llm}/index.mjs +2 -2
  174. package/dist/{ai → common/ai}/llm/miniapp/index.d.mts +3 -3
  175. package/dist/{ai → common/ai}/llm/miniapp/index.d.ts +3 -3
  176. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.js +16 -16
  177. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.mjs +4 -4
  178. package/dist/{ai → common/ai}/llm/rn/index.d.mts +3 -3
  179. package/dist/{ai → common/ai}/llm/rn/index.d.ts +3 -3
  180. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.js +16 -16
  181. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.mjs +4 -4
  182. package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
  183. package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
  184. package/dist/common/ai/llm/ui/electron/index.js +22 -0
  185. package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
  186. package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
  187. package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
  188. package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
  189. package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
  190. package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
  191. package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
  192. package/dist/common/ai/llm/ui/rn/index.js +14 -0
  193. package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
  194. package/dist/{ai → common/ai}/llm/ui/web/index.d.mts +7 -7
  195. package/dist/{ai → common/ai}/llm/ui/web/index.d.ts +7 -7
  196. package/dist/common/ai/llm/ui/web/index.js +21 -0
  197. package/dist/common/ai/llm/ui/web/index.mjs +8 -0
  198. package/dist/{ai → common/ai}/llm/web/index.d.mts +3 -3
  199. package/dist/{ai/llm/electron → common/ai/llm/web}/index.d.ts +3 -3
  200. package/dist/common/ai/llm/web/index.js +66 -0
  201. package/dist/common/ai/llm/web/index.mjs +9 -0
  202. package/dist/{analytics → common/analytics}/index.d.mts +1 -1
  203. package/dist/{analytics → common/analytics}/index.d.ts +1 -1
  204. package/dist/{analytics → common/analytics}/index.js +79 -79
  205. package/dist/{analytics → common/analytics}/index.mjs +3 -3
  206. package/dist/{analytics → common/analytics}/server/index.js +2 -2
  207. package/dist/common/analytics/server/index.js.map +1 -0
  208. package/dist/{analytics → common/analytics}/server/index.mjs +2 -2
  209. package/dist/common/analytics/server/index.mjs.map +1 -0
  210. package/dist/{api → common/api}/index.d.mts +3 -3
  211. package/dist/{api → common/api}/index.d.ts +3 -3
  212. package/dist/common/api/index.js +21 -0
  213. package/dist/common/api/index.mjs +4 -0
  214. package/dist/common/auth/components/index.d.mts +9 -9
  215. package/dist/common/auth/components/index.d.ts +9 -9
  216. package/dist/common/auth/index.js +6 -6
  217. package/dist/common/auth/index.mjs +2 -2
  218. package/dist/common/auth/react/index.d.mts +3 -3
  219. package/dist/common/auth/react/index.d.ts +3 -3
  220. package/dist/common/auth/rn/index.d.mts +2 -2
  221. package/dist/common/auth/rn/index.d.ts +2 -2
  222. package/dist/common/auth/rn/index.js +2 -2
  223. package/dist/common/auth/rn/index.js.map +1 -1
  224. package/dist/common/auth/rn/index.mjs +1 -1
  225. package/dist/common/auth/rn/index.mjs.map +1 -1
  226. package/dist/common/components/index.d.mts +4 -0
  227. package/dist/common/components/index.d.ts +4 -0
  228. package/dist/common/components/index.js +414 -0
  229. package/dist/common/components/index.mjs +9 -0
  230. package/dist/{config → common/config}/index.d.mts +1 -1
  231. package/dist/{config → common/config}/index.d.ts +1 -1
  232. package/dist/common/config/index.js +21 -0
  233. package/dist/common/config/index.mjs +4 -0
  234. package/dist/{config → common/config}/server/index.js +5 -5
  235. package/dist/common/config/server/index.js.map +1 -0
  236. package/dist/{config → common/config}/server/index.mjs +5 -5
  237. package/dist/common/config/server/index.mjs.map +1 -0
  238. package/dist/common/export/index.d.mts +2 -2
  239. package/dist/common/export/index.d.ts +2 -2
  240. package/dist/common/export/index.js +67 -67
  241. package/dist/common/export/index.mjs +3 -3
  242. package/dist/common/export/server/index.d.mts +2 -2
  243. package/dist/common/export/server/index.d.ts +2 -2
  244. package/dist/common/export/server/index.js +76 -48
  245. package/dist/common/export/server/index.mjs +3 -3
  246. package/dist/common/file/index.d.mts +2 -2
  247. package/dist/common/file/index.d.ts +2 -2
  248. package/dist/common/file/index.js +27 -27
  249. package/dist/common/file/index.mjs +5 -5
  250. package/dist/common/file/server/index.d.mts +2 -2
  251. package/dist/common/file/server/index.d.ts +2 -2
  252. package/dist/common/file/server/index.js +58 -50
  253. package/dist/common/file/server/index.mjs +8 -8
  254. package/dist/{i18n → common/i18n}/index.d.mts +1 -1
  255. package/dist/{i18n → common/i18n}/index.d.ts +1 -1
  256. package/dist/{i18n → common/i18n}/index.js +18 -18
  257. package/dist/{i18n → common/i18n}/index.mjs +2 -2
  258. package/dist/common/imageCrop/index.d.mts +2 -0
  259. package/dist/common/imageCrop/index.d.ts +2 -0
  260. package/dist/common/imageCrop/index.js +61 -0
  261. package/dist/common/imageCrop/index.mjs +4 -0
  262. package/dist/common/index.d.mts +16 -16
  263. package/dist/common/index.d.ts +16 -16
  264. package/dist/common/index.js +75 -67
  265. package/dist/common/index.mjs +26 -26
  266. package/dist/common/logger/index.d.mts +1 -1
  267. package/dist/common/logger/index.d.ts +1 -1
  268. package/dist/common/logger/index.js +6 -7
  269. package/dist/common/logger/index.mjs +1 -2
  270. package/dist/{ossFile → common/ossFile}/index.d.mts +6 -6
  271. package/dist/{ossFile → common/ossFile}/index.d.ts +6 -6
  272. package/dist/{ossFile → common/ossFile}/index.js +26 -26
  273. package/dist/{ossFile → common/ossFile}/index.mjs +5 -5
  274. package/dist/{ossFile/server/index.d.ts → common/ossFile/server/index.d.mts} +7 -7
  275. package/dist/{ossFile/server/index.d.mts → common/ossFile/server/index.d.ts} +7 -7
  276. package/dist/{ossFile → common/ossFile}/server/index.js +60 -52
  277. package/dist/{ossFile → common/ossFile}/server/index.mjs +10 -10
  278. package/dist/common/platform/index.js +8 -8
  279. package/dist/common/platform/index.mjs +4 -4
  280. package/dist/common/request/index.d.mts +1 -1
  281. package/dist/common/request/index.d.ts +1 -1
  282. package/dist/common/request/index.js +5 -6
  283. package/dist/common/request/index.mjs +2 -3
  284. package/dist/common/storage/index.d.mts +1 -1
  285. package/dist/common/storage/index.d.ts +1 -1
  286. package/dist/common/storage/index.js +17 -17
  287. package/dist/common/storage/index.mjs +5 -5
  288. package/dist/{universalExport → common/universalExport}/index.d.mts +6 -86
  289. package/dist/{universalExport → common/universalExport}/index.d.ts +6 -86
  290. package/dist/{universalExport → common/universalExport}/index.js +67 -67
  291. package/dist/common/universalExport/index.mjs +5 -0
  292. package/dist/{universalExport → common/universalExport}/server/index.d.mts +3 -84
  293. package/dist/{universalExport → common/universalExport}/server/index.d.ts +3 -84
  294. package/dist/common/universalExport/server/index.js +151 -0
  295. package/dist/common/universalExport/server/index.mjs +6 -0
  296. package/dist/{universalFile/index.d.ts → common/universalFile/index.d.mts} +9 -9
  297. package/dist/{universalFile/index.d.mts → common/universalFile/index.d.ts} +9 -9
  298. package/dist/{universalFile → common/universalFile}/index.js +63 -63
  299. package/dist/common/universalFile/index.js.map +1 -0
  300. package/dist/{universalFile → common/universalFile}/index.mjs +4 -4
  301. package/dist/common/universalFile/index.mjs.map +1 -0
  302. package/dist/{universalFile → common/universalFile}/server/index.d.mts +5 -5
  303. package/dist/{universalFile → common/universalFile}/server/index.d.ts +5 -5
  304. package/dist/{universalFile → common/universalFile}/server/index.js +68 -68
  305. package/dist/{universalFile → common/universalFile}/server/index.mjs +8 -8
  306. package/dist/common/utils/index.d.mts +1 -1
  307. package/dist/common/utils/index.d.ts +1 -1
  308. package/dist/common/utils/index.js +11 -12
  309. package/dist/common/utils/index.mjs +2 -3
  310. package/dist/{index-WrR57hKT.d.ts → index-BRLygK4h.d.ts} +2 -2
  311. package/dist/{request/index.d.mts → index-BWNK5mH2.d.ts} +19 -2
  312. package/dist/{utils/index.d.mts → index-BiCK6gg6.d.mts} +19 -1
  313. package/dist/{utils/index.d.ts → index-BiCK6gg6.d.ts} +19 -1
  314. package/dist/{index-DoUo8IrU.d.mts → index-BxZauNN_.d.mts} +8 -8
  315. package/dist/{index-DoUo8IrU.d.ts → index-BxZauNN_.d.ts} +8 -8
  316. package/dist/{request/index.d.ts → index-C-P2yBTH.d.mts} +19 -2
  317. package/dist/{index-D0cqaQEH.d.mts → index-CLB80GCP.d.mts} +5 -5
  318. package/dist/{index-D0cqaQEH.d.ts → index-CLB80GCP.d.ts} +5 -5
  319. package/dist/{index-2G9Dxjvt.d.ts → index-CT4K2z-O.d.ts} +2 -2
  320. package/dist/{index-qcOvRVuN.d.mts → index-D6RJTGce.d.mts} +2 -2
  321. package/dist/{storage/index.d.ts → index-DA7L9JlE.d.mts} +26 -3
  322. package/dist/{imageCrop/index.d.mts → index-DXVph21C.d.mts} +40 -4
  323. package/dist/{imageCrop/index.d.ts → index-DXVph21C.d.ts} +40 -4
  324. package/dist/{index-CYuUB8aF.d.mts → index-DzyK789B.d.mts} +2 -2
  325. package/dist/{logger/index.d.mts → index-FVJZCEtm.d.mts} +21 -1
  326. package/dist/{logger/index.d.ts → index-FVJZCEtm.d.ts} +21 -1
  327. package/dist/{storage/index.d.mts → index-nD9vPCZT.d.ts} +26 -3
  328. package/dist/{components/index.d.mts → index-nOmIv2BG.d.mts} +159 -5
  329. package/dist/{components/index.d.ts → index-nOmIv2BG.d.ts} +159 -5
  330. package/dist/{path-qjVnH8qU.d.ts → path-Bzc7hj1N.d.ts} +5 -1
  331. package/dist/{path-DkaHQSyW.d.mts → path-DN_65vhO.d.mts} +5 -1
  332. package/dist/{types-3ujSNAXb.d.mts → utils-Dm3O1rAa.d.mts} +81 -1
  333. package/dist/{types-3ujSNAXb.d.ts → utils-Dm3O1rAa.d.ts} +81 -1
  334. package/package.json +292 -312
  335. package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
  336. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
  337. package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
  338. package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
  339. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  340. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  341. package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
  342. package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
  343. package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
  344. package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
  345. package/dist/ai/llm/electron/index.js +0 -66
  346. package/dist/ai/llm/electron/index.mjs +0 -9
  347. package/dist/ai/llm/ui/electron/index.d.mts +0 -5
  348. package/dist/ai/llm/ui/electron/index.d.ts +0 -5
  349. package/dist/ai/llm/ui/electron/index.js +0 -21
  350. package/dist/ai/llm/ui/electron/index.mjs +0 -8
  351. package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
  352. package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
  353. package/dist/ai/llm/ui/miniapp/index.js +0 -14
  354. package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
  355. package/dist/ai/llm/ui/rn/index.d.mts +0 -9
  356. package/dist/ai/llm/ui/rn/index.d.ts +0 -9
  357. package/dist/ai/llm/ui/rn/index.js +0 -14
  358. package/dist/ai/llm/ui/rn/index.mjs +0 -5
  359. package/dist/ai/llm/ui/web/index.js +0 -20
  360. package/dist/ai/llm/ui/web/index.mjs +0 -7
  361. package/dist/ai/llm/web/index.js +0 -65
  362. package/dist/ai/llm/web/index.mjs +0 -8
  363. package/dist/analytics/server/index.js.map +0 -1
  364. package/dist/analytics/server/index.mjs.map +0 -1
  365. package/dist/api/index.js +0 -21
  366. package/dist/api/index.mjs +0 -4
  367. package/dist/audioDetection/index.d.mts +0 -449
  368. package/dist/audioDetection/index.d.ts +0 -449
  369. package/dist/audioDetection/index.js +0 -1244
  370. package/dist/audioDetection/index.js.map +0 -1
  371. package/dist/audioDetection/index.mjs +0 -1227
  372. package/dist/audioDetection/index.mjs.map +0 -1
  373. package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
  374. package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
  375. package/dist/business/index.d.mts +0 -2
  376. package/dist/business/index.d.ts +0 -2
  377. package/dist/business/index.js +0 -581
  378. package/dist/business/index.js.map +0 -1
  379. package/dist/business/index.mjs +0 -575
  380. package/dist/business/index.mjs.map +0 -1
  381. package/dist/calendar/index.d.mts +0 -1325
  382. package/dist/calendar/index.d.ts +0 -1325
  383. package/dist/calendar/index.js +0 -5964
  384. package/dist/calendar/index.js.map +0 -1
  385. package/dist/calendar/index.mjs +0 -5878
  386. package/dist/calendar/index.mjs.map +0 -1
  387. package/dist/calendar/routes/index.d.mts +0 -191
  388. package/dist/calendar/routes/index.d.ts +0 -191
  389. package/dist/calendar/routes/index.js +0 -844
  390. package/dist/calendar/routes/index.js.map +0 -1
  391. package/dist/calendar/routes/index.mjs +0 -826
  392. package/dist/calendar/routes/index.mjs.map +0 -1
  393. package/dist/chunk-25OFOKNF.js.map +0 -1
  394. package/dist/chunk-2Y7BKFKZ.js +0 -37
  395. package/dist/chunk-3CSCIRQY.js +0 -17
  396. package/dist/chunk-3CSCIRQY.js.map +0 -1
  397. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  398. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  399. package/dist/chunk-4FDUURSD.js +0 -22
  400. package/dist/chunk-4FDUURSD.js.map +0 -1
  401. package/dist/chunk-4OOANEJV.mjs.map +0 -1
  402. package/dist/chunk-4WBCWJSN.js.map +0 -1
  403. package/dist/chunk-5GBDDXYL.mjs +0 -23
  404. package/dist/chunk-5GBDDXYL.mjs.map +0 -1
  405. package/dist/chunk-5USIS3UM.js +0 -4
  406. package/dist/chunk-6PMXAK7F.js.map +0 -1
  407. package/dist/chunk-7B5SI4OF.mjs +0 -15
  408. package/dist/chunk-7B5SI4OF.mjs.map +0 -1
  409. package/dist/chunk-ACUFEDVQ.js.map +0 -1
  410. package/dist/chunk-AQPU2AXH.js.map +0 -1
  411. package/dist/chunk-ATUCZXJY.js.map +0 -1
  412. package/dist/chunk-BCE6RUZV.js.map +0 -1
  413. package/dist/chunk-BIHYZA67.mjs.map +0 -1
  414. package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
  415. package/dist/chunk-CAYOQDBR.js.map +0 -1
  416. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  417. package/dist/chunk-CX2GHCAI.mjs.map +0 -1
  418. package/dist/chunk-DIF5VRL3.mjs.map +0 -1
  419. package/dist/chunk-EQXPL7TN.mjs.map +0 -1
  420. package/dist/chunk-FCEBAWN6.js +0 -18
  421. package/dist/chunk-FCEBAWN6.js.map +0 -1
  422. package/dist/chunk-FHIE5MTC.mjs +0 -541
  423. package/dist/chunk-FHIE5MTC.mjs.map +0 -1
  424. package/dist/chunk-FHLTPXAR.js +0 -56
  425. package/dist/chunk-FIUBFREP.mjs.map +0 -1
  426. package/dist/chunk-FXQOXLDE.js.map +0 -1
  427. package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
  428. package/dist/chunk-G6NSKJMH.js.map +0 -1
  429. package/dist/chunk-G7UBMCUT.mjs.map +0 -1
  430. package/dist/chunk-GSNGCENJ.js.map +0 -1
  431. package/dist/chunk-GWNBVGDT.mjs.map +0 -1
  432. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  433. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  434. package/dist/chunk-HJZHQW5R.mjs.map +0 -1
  435. package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
  436. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  437. package/dist/chunk-KQ643L7Z.js.map +0 -1
  438. package/dist/chunk-LFB5EIIM.mjs +0 -31
  439. package/dist/chunk-LFB5EIIM.mjs.map +0 -1
  440. package/dist/chunk-MBANGIG3.mjs.map +0 -1
  441. package/dist/chunk-NCRP2YHY.mjs.map +0 -1
  442. package/dist/chunk-NDGHXVGS.js +0 -25
  443. package/dist/chunk-NDGHXVGS.js.map +0 -1
  444. package/dist/chunk-NDPO5OMC.js +0 -563
  445. package/dist/chunk-NDPO5OMC.js.map +0 -1
  446. package/dist/chunk-PBI7FKMB.js.map +0 -1
  447. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  448. package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
  449. package/dist/chunk-QSKLQX6H.js.map +0 -1
  450. package/dist/chunk-QXAOXBVB.mjs.map +0 -1
  451. package/dist/chunk-R2DXTE2L.js.map +0 -1
  452. package/dist/chunk-RTD2WHQQ.mjs +0 -16
  453. package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
  454. package/dist/chunk-S6YSGVWD.js.map +0 -1
  455. package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
  456. package/dist/chunk-SLKOEYFH.js.map +0 -1
  457. package/dist/chunk-TC5YU6A4.mjs.map +0 -1
  458. package/dist/chunk-UCOE6SET.js.map +0 -1
  459. package/dist/chunk-UIYKZ73N.js +0 -36
  460. package/dist/chunk-UIYKZ73N.js.map +0 -1
  461. package/dist/chunk-V7EVKD5G.mjs.map +0 -1
  462. package/dist/chunk-VMTEDX5H.js.map +0 -1
  463. package/dist/chunk-VRN76M56.mjs +0 -3
  464. package/dist/chunk-VXFUXZN5.mjs +0 -20
  465. package/dist/chunk-VXFUXZN5.mjs.map +0 -1
  466. package/dist/chunk-WEEXCPSE.mjs.map +0 -1
  467. package/dist/chunk-WJ7IMUEJ.mjs.map +0 -1
  468. package/dist/chunk-WW4GE6CZ.js.map +0 -1
  469. package/dist/chunk-XJ7ZAGC5.js.map +0 -1
  470. package/dist/chunk-XUS5ACKR.mjs.map +0 -1
  471. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  472. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  473. package/dist/chunk-ZLYPALF3.js.map +0 -1
  474. package/dist/chunk-ZM2SZJTZ.js.map +0 -1
  475. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  476. package/dist/chunk-ZWQJSZEY.js.map +0 -1
  477. package/dist/components/index.js +0 -2516
  478. package/dist/components/index.js.map +0 -1
  479. package/dist/components/index.mjs.map +0 -1
  480. package/dist/config/index.js +0 -21
  481. package/dist/config/index.mjs +0 -4
  482. package/dist/config/server/index.js.map +0 -1
  483. package/dist/config/server/index.mjs.map +0 -1
  484. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  485. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  486. package/dist/festivalCard/index.d.mts +0 -76
  487. package/dist/festivalCard/index.d.ts +0 -76
  488. package/dist/festivalCard/index.js +0 -1492
  489. package/dist/festivalCard/index.js.map +0 -1
  490. package/dist/festivalCard/index.mjs +0 -1475
  491. package/dist/festivalCard/index.mjs.map +0 -1
  492. package/dist/festivalCard/routes/index.d.mts +0 -42
  493. package/dist/festivalCard/routes/index.d.ts +0 -42
  494. package/dist/festivalCard/routes/index.js +0 -361
  495. package/dist/festivalCard/routes/index.js.map +0 -1
  496. package/dist/festivalCard/routes/index.mjs +0 -356
  497. package/dist/festivalCard/routes/index.mjs.map +0 -1
  498. package/dist/festivalCard/server/index.d.mts +0 -120
  499. package/dist/festivalCard/server/index.d.ts +0 -120
  500. package/dist/festivalCard/server/index.js +0 -272
  501. package/dist/festivalCard/server/index.js.map +0 -1
  502. package/dist/festivalCard/server/index.mjs +0 -265
  503. package/dist/festivalCard/server/index.mjs.map +0 -1
  504. package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
  505. package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
  506. package/dist/imageCrop/index.js.map +0 -1
  507. package/dist/imageCrop/index.mjs.map +0 -1
  508. package/dist/index-Bjem5rWn.d.mts +0 -17
  509. package/dist/index-C5U-2hJq.d.ts +0 -23
  510. package/dist/index-CifSBBP2.d.ts +0 -17
  511. package/dist/index-D0K4ehme.d.mts +0 -20
  512. package/dist/index-DLnfKN-a.d.mts +0 -23
  513. package/dist/index-DSel44Ke.d.mts +0 -93
  514. package/dist/index-DSel44Ke.d.ts +0 -93
  515. package/dist/index-DZ5iJtNO.d.mts +0 -102
  516. package/dist/index-DZ5iJtNO.d.ts +0 -102
  517. package/dist/index-Da7qdkgW.d.ts +0 -20
  518. package/dist/index-DrPcMJPc.d.mts +0 -250
  519. package/dist/index-DrPcMJPc.d.ts +0 -250
  520. package/dist/index-oLUvfqT8.d.ts +0 -20
  521. package/dist/index-pe38RDgC.d.mts +0 -20
  522. package/dist/index.d.mts +0 -11611
  523. package/dist/index.d.ts +0 -11611
  524. package/dist/index.js +0 -17230
  525. package/dist/index.js.map +0 -1
  526. package/dist/index.mjs +0 -16954
  527. package/dist/index.mjs.map +0 -1
  528. package/dist/logger/index.js +0 -29
  529. package/dist/logger/index.mjs +0 -4
  530. package/dist/mikuContest/ui/web/index.d.mts +0 -2
  531. package/dist/mikuContest/ui/web/index.d.ts +0 -2
  532. package/dist/mikuContest/ui/web/index.js +0 -353
  533. package/dist/mikuContest/ui/web/index.js.map +0 -1
  534. package/dist/mikuContest/ui/web/index.mjs +0 -343
  535. package/dist/mikuContest/ui/web/index.mjs.map +0 -1
  536. package/dist/mikuFireworks3D/index.d.mts +0 -268
  537. package/dist/mikuFireworks3D/index.d.ts +0 -268
  538. package/dist/mikuFireworks3D/index.js +0 -1267
  539. package/dist/mikuFireworks3D/index.js.map +0 -1
  540. package/dist/mikuFireworks3D/index.mjs +0 -1228
  541. package/dist/mikuFireworks3D/index.mjs.map +0 -1
  542. package/dist/mikuFusionGame/index.d.mts +0 -117
  543. package/dist/mikuFusionGame/index.d.ts +0 -117
  544. package/dist/mikuFusionGame/index.js +0 -1208
  545. package/dist/mikuFusionGame/index.js.map +0 -1
  546. package/dist/mikuFusionGame/index.mjs +0 -1195
  547. package/dist/mikuFusionGame/index.mjs.map +0 -1
  548. package/dist/mmd/admin/index.d.mts +0 -487
  549. package/dist/mmd/admin/index.d.ts +0 -487
  550. package/dist/mmd/admin/index.js +0 -1058
  551. package/dist/mmd/admin/index.js.map +0 -1
  552. package/dist/mmd/admin/index.mjs +0 -1027
  553. package/dist/mmd/admin/index.mjs.map +0 -1
  554. package/dist/mmd/index.d.mts +0 -2467
  555. package/dist/mmd/index.d.ts +0 -2467
  556. package/dist/mmd/index.js +0 -10119
  557. package/dist/mmd/index.js.map +0 -1
  558. package/dist/mmd/index.mjs +0 -10028
  559. package/dist/mmd/index.mjs.map +0 -1
  560. package/dist/mmd/server/index.d.mts +0 -139
  561. package/dist/mmd/server/index.d.ts +0 -139
  562. package/dist/mmd/server/index.js +0 -424
  563. package/dist/mmd/server/index.js.map +0 -1
  564. package/dist/mmd/server/index.mjs +0 -404
  565. package/dist/mmd/server/index.mjs.map +0 -1
  566. package/dist/music/index.d.mts +0 -74
  567. package/dist/music/index.d.ts +0 -74
  568. package/dist/music/index.js +0 -830
  569. package/dist/music/index.js.map +0 -1
  570. package/dist/music/index.mjs +0 -809
  571. package/dist/music/index.mjs.map +0 -1
  572. package/dist/music/server/index.d.mts +0 -1
  573. package/dist/music/server/index.d.ts +0 -1
  574. package/dist/music/server/index.js +0 -194
  575. package/dist/music/server/index.js.map +0 -1
  576. package/dist/music/server/index.mjs +0 -182
  577. package/dist/music/server/index.mjs.map +0 -1
  578. package/dist/navigation/index.d.mts +0 -93
  579. package/dist/navigation/index.d.ts +0 -93
  580. package/dist/navigation/index.js +0 -453
  581. package/dist/navigation/index.js.map +0 -1
  582. package/dist/navigation/index.mjs +0 -443
  583. package/dist/navigation/index.mjs.map +0 -1
  584. package/dist/portfolio/index.d.mts +0 -66
  585. package/dist/portfolio/index.d.ts +0 -66
  586. package/dist/portfolio/index.js +0 -736
  587. package/dist/portfolio/index.js.map +0 -1
  588. package/dist/portfolio/index.mjs +0 -724
  589. package/dist/portfolio/index.mjs.map +0 -1
  590. package/dist/qqbot/server/index.d.mts +0 -216
  591. package/dist/qqbot/server/index.d.ts +0 -216
  592. package/dist/qqbot/server/index.js +0 -394
  593. package/dist/qqbot/server/index.js.map +0 -1
  594. package/dist/qqbot/server/index.mjs +0 -385
  595. package/dist/qqbot/server/index.mjs.map +0 -1
  596. package/dist/qqbot/ui/web/index.d.mts +0 -10
  597. package/dist/qqbot/ui/web/index.d.ts +0 -10
  598. package/dist/qqbot/ui/web/index.js +0 -105
  599. package/dist/qqbot/ui/web/index.js.map +0 -1
  600. package/dist/qqbot/ui/web/index.mjs +0 -99
  601. package/dist/qqbot/ui/web/index.mjs.map +0 -1
  602. package/dist/request/index.js +0 -22
  603. package/dist/request/index.mjs +0 -5
  604. package/dist/screenReceiver/index.d.mts +0 -86
  605. package/dist/screenReceiver/index.d.ts +0 -86
  606. package/dist/screenReceiver/index.js +0 -281
  607. package/dist/screenReceiver/index.js.map +0 -1
  608. package/dist/screenReceiver/index.mjs +0 -273
  609. package/dist/screenReceiver/index.mjs.map +0 -1
  610. package/dist/storage/index.js +0 -48
  611. package/dist/storage/index.mjs +0 -7
  612. package/dist/testYourself/admin/index.d.mts +0 -58
  613. package/dist/testYourself/admin/index.d.ts +0 -58
  614. package/dist/testYourself/admin/index.js +0 -1009
  615. package/dist/testYourself/admin/index.js.map +0 -1
  616. package/dist/testYourself/admin/index.mjs +0 -1002
  617. package/dist/testYourself/admin/index.mjs.map +0 -1
  618. package/dist/testYourself/index.d.mts +0 -53
  619. package/dist/testYourself/index.d.ts +0 -53
  620. package/dist/testYourself/index.js +0 -2551
  621. package/dist/testYourself/index.js.map +0 -1
  622. package/dist/testYourself/index.mjs +0 -2531
  623. package/dist/testYourself/index.mjs.map +0 -1
  624. package/dist/testYourself/server/index.d.mts +0 -1029
  625. package/dist/testYourself/server/index.d.ts +0 -1029
  626. package/dist/testYourself/server/index.js +0 -825
  627. package/dist/testYourself/server/index.js.map +0 -1
  628. package/dist/testYourself/server/index.mjs +0 -816
  629. package/dist/testYourself/server/index.mjs.map +0 -1
  630. package/dist/types-B6B210gX.d.mts +0 -270
  631. package/dist/types-B6B210gX.d.ts +0 -270
  632. package/dist/types-Bdnte5EN.d.mts +0 -292
  633. package/dist/types-Cs0CLvrH.d.mts +0 -70
  634. package/dist/types-Cs0CLvrH.d.ts +0 -70
  635. package/dist/types-HorDyIRv.d.mts +0 -303
  636. package/dist/types-HorDyIRv.d.ts +0 -303
  637. package/dist/types-_rFX1atk.d.ts +0 -292
  638. package/dist/universalExport/index.mjs +0 -5
  639. package/dist/universalExport/server/index.js +0 -123
  640. package/dist/universalExport/server/index.mjs +0 -6
  641. package/dist/universalFile/index.js.map +0 -1
  642. package/dist/universalFile/index.mjs.map +0 -1
  643. package/dist/universalFile/server/index.js.map +0 -1
  644. package/dist/universalFile/server/index.mjs.map +0 -1
  645. package/dist/utils/index.js +0 -46
  646. package/dist/utils/index.js.map +0 -1
  647. package/dist/utils/index.mjs +0 -5
  648. package/dist/utils/index.mjs.map +0 -1
  649. package/dist/vocaloidBooth/index.d.mts +0 -64
  650. package/dist/vocaloidBooth/index.d.ts +0 -64
  651. package/dist/vocaloidBooth/index.js +0 -376
  652. package/dist/vocaloidBooth/index.js.map +0 -1
  653. package/dist/vocaloidBooth/index.mjs +0 -362
  654. package/dist/vocaloidBooth/index.mjs.map +0 -1
  655. package/dist/vocaloidBooth/server/index.d.mts +0 -111
  656. package/dist/vocaloidBooth/server/index.d.ts +0 -111
  657. package/dist/vocaloidBooth/server/index.js +0 -247
  658. package/dist/vocaloidBooth/server/index.js.map +0 -1
  659. package/dist/vocaloidBooth/server/index.mjs +0 -237
  660. package/dist/vocaloidBooth/server/index.mjs.map +0 -1
  661. package/dist/vocaloidBooth/web/index.d.mts +0 -3
  662. package/dist/vocaloidBooth/web/index.d.ts +0 -3
  663. package/dist/vocaloidBooth/web/index.js +0 -376
  664. package/dist/vocaloidBooth/web/index.js.map +0 -1
  665. package/dist/vocaloidBooth/web/index.mjs +0 -362
  666. package/dist/vocaloidBooth/web/index.mjs.map +0 -1
  667. /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
  668. /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
  669. /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
  670. /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
  671. /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
  672. /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
  673. /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
  674. /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
  675. /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
  676. /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
  677. /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
  678. /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
  679. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
  680. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
  681. /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
  682. /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
  683. /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
  684. /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
  685. /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
  686. /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
  687. /package/dist/{analytics → common/analytics}/index.js.map +0 -0
  688. /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
  689. /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
  690. /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
  691. /package/dist/{api → common/api}/index.js.map +0 -0
  692. /package/dist/{api → common/api}/index.mjs.map +0 -0
  693. /package/dist/{config → common/components}/index.js.map +0 -0
  694. /package/dist/{config → common/components}/index.mjs.map +0 -0
  695. /package/dist/{i18n → common/config}/index.js.map +0 -0
  696. /package/dist/{i18n → common/config}/index.mjs.map +0 -0
  697. /package/dist/{config → common/config}/server/index.d.mts +0 -0
  698. /package/dist/{config → common/config}/server/index.d.ts +0 -0
  699. /package/dist/{logger → common/i18n}/index.js.map +0 -0
  700. /package/dist/{logger → common/i18n}/index.mjs.map +0 -0
  701. /package/dist/{ossFile → common/imageCrop}/index.js.map +0 -0
  702. /package/dist/{ossFile → common/imageCrop}/index.mjs.map +0 -0
  703. /package/dist/{ossFile/server → common/ossFile}/index.js.map +0 -0
  704. /package/dist/{ossFile/server → common/ossFile}/index.mjs.map +0 -0
  705. /package/dist/{request → common/ossFile/server}/index.js.map +0 -0
  706. /package/dist/{request → common/ossFile/server}/index.mjs.map +0 -0
  707. /package/dist/{storage → common/universalExport}/index.js.map +0 -0
  708. /package/dist/{storage → common/universalExport}/index.mjs.map +0 -0
  709. /package/dist/{universalExport → common/universalExport/server}/index.js.map +0 -0
  710. /package/dist/{universalExport → common/universalExport/server}/index.mjs.map +0 -0
  711. /package/dist/{universalExport → common/universalFile}/server/index.js.map +0 -0
  712. /package/dist/{universalExport → common/universalFile}/server/index.mjs.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/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"]}
@@ -1,4 +1,4 @@
1
- // src/ossFile/shared/ossConfig.ts
1
+ // src/common/ossFile/shared/ossConfig.ts
2
2
  var STANDARD_ALIYUN_OSS_KEYS = {
3
3
  region: "ALIYUN_OSS_REGION",
4
4
  bucket: "ALIYUN_OSS_BUCKET",
@@ -42,7 +42,7 @@ function getOssStorageModeLabelFromConfig(config) {
42
42
  return config.customDomain ? "\u963F\u91CC\u4E91 OSS + \u81EA\u5B9A\u4E49\u57DF\u540D" : "\u963F\u91CC\u4E91 OSS";
43
43
  }
44
44
 
45
- // src/ossFile/shared/path.ts
45
+ // src/common/ossFile/shared/path.ts
46
46
  function resolveUploadFolderPath(options) {
47
47
  for (const candidate of [options.folderPath, options.customPath]) {
48
48
  if (typeof candidate === "string" && candidate.trim()) {
@@ -55,6 +55,15 @@ function resolveUploadFolderPath(options) {
55
55
  fileName: options.fileName
56
56
  });
57
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
+ }
58
67
  function buildModuleUploadPath(options) {
59
68
  const extension = options.fileName.split(".").pop()?.toLowerCase() || "jpg";
60
69
  const timestamp = Date.now();
@@ -68,6 +77,6 @@ function buildModuleUploadPath(options) {
68
77
  return `${base}/${timestamp}_${randomId}.${extension}`;
69
78
  }
70
79
 
71
- export { STANDARD_ALIYUN_OSS_KEYS, buildModuleUploadPath, getOssStorageModeLabelFromConfig, isCompleteOssConfig, parseAliyunOssConfigFromMap, resolveUploadFolderPath };
72
- //# sourceMappingURL=chunk-DIF5VRL3.mjs.map
73
- //# sourceMappingURL=chunk-DIF5VRL3.mjs.map
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"]}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunk4WBCWJSN_js = require('./chunk-4WBCWJSN.js');
4
- var chunkATUCZXJY_js = require('./chunk-ATUCZXJY.js');
3
+ var chunkRST2T54Y_js = require('./chunk-RST2T54Y.js');
4
+ var chunkV7RLIZMN_js = require('./chunk-V7RLIZMN.js');
5
5
 
6
- // src/ossFile/shared/httpClient.ts
6
+ // src/common/ossFile/shared/httpClient.ts
7
7
  var globalHttpConfig = {};
8
8
  function configureOssFileHttp(config) {
9
9
  globalHttpConfig = { ...globalHttpConfig, ...config };
@@ -96,11 +96,11 @@ async function ossFileFetch(url, init, override) {
96
96
  });
97
97
  }
98
98
 
99
- // src/ossFile/client.ts
99
+ // src/common/ossFile/client.ts
100
100
  async function uploadModuleFile(options) {
101
- const uploadUrl = options.uploadUrl ?? chunk4WBCWJSN_js.API_ENDPOINTS.UPLOAD;
101
+ const uploadUrl = options.uploadUrl ?? chunkRST2T54Y_js.API_ENDPOINTS.UPLOAD;
102
102
  const fileName = options.file instanceof File ? options.file.name : "upload.jpg";
103
- const folderPath = chunkATUCZXJY_js.resolveUploadFolderPath({
103
+ const folderPath = chunkV7RLIZMN_js.resolveUploadFolderPath({
104
104
  moduleId: options.moduleId,
105
105
  businessId: options.businessId,
106
106
  fileName,
@@ -176,7 +176,7 @@ async function getModuleFileAccessUrl(fileId, apiBase = "", fetchOverride) {
176
176
  var getArtworkImageUrl = getModuleFileAccessUrl;
177
177
  var cachedOssConfig = null;
178
178
  async function loadOssConfigFromItemsApi(itemsApiUrl, fetchOverride) {
179
- const keys = Object.values(chunkATUCZXJY_js.STANDARD_ALIYUN_OSS_KEYS).join(",");
179
+ const keys = Object.values(chunkV7RLIZMN_js.STANDARD_ALIYUN_OSS_KEYS).join(",");
180
180
  const url = `${itemsApiUrl}${itemsApiUrl.includes("?") ? "&" : "?"}keys=${encodeURIComponent(keys)}`;
181
181
  const response = await ossFileFetch(url, { method: "GET" }, fetchOverride);
182
182
  if (!response.ok) return null;
@@ -188,7 +188,7 @@ async function loadOssConfigFromItemsApi(itemsApiUrl, fetchOverride) {
188
188
  configMap[item.key] = item.value;
189
189
  }
190
190
  }
191
- return chunkATUCZXJY_js.parseAliyunOssConfigFromMap(configMap);
191
+ return chunkV7RLIZMN_js.parseAliyunOssConfigFromMap(configMap);
192
192
  }
193
193
  async function getCachedOssConfig(itemsApiUrl) {
194
194
  if (cachedOssConfig !== null) {
@@ -209,7 +209,7 @@ async function shouldUseOssFileService(itemsApiUrl) {
209
209
  }
210
210
  async function getOssStorageModeDisplayName(itemsApiUrl) {
211
211
  const config = await getCachedOssConfig(itemsApiUrl);
212
- return chunkATUCZXJY_js.getOssStorageModeLabelFromConfig(config);
212
+ return chunkV7RLIZMN_js.getOssStorageModeLabelFromConfig(config);
213
213
  }
214
214
  function clearOssFileConfigCache() {
215
215
  cachedOssConfig = null;
@@ -238,5 +238,5 @@ exports.shouldUseOssFileService = shouldUseOssFileService;
238
238
  exports.shouldUseUniversalFileService = shouldUseUniversalFileService;
239
239
  exports.uploadArtworkImage = uploadArtworkImage;
240
240
  exports.uploadModuleFile = uploadModuleFile;
241
- //# sourceMappingURL=chunk-ZLYPALF3.js.map
242
- //# sourceMappingURL=chunk-ZLYPALF3.js.map
241
+ //# sourceMappingURL=chunk-XE5RGZ3B.js.map
242
+ //# sourceMappingURL=chunk-XE5RGZ3B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/ossFile/shared/httpClient.ts","../src/common/ossFile/client.ts"],"names":["API_ENDPOINTS","resolveUploadFolderPath","STANDARD_ALIYUN_OSS_KEYS","parseAliyunOssConfigFromMap","getOssStorageModeLabelFromConfig"],"mappings":";;;;;;AAaA,IAAI,mBAAsC,EAAC;AAEpC,SAAS,qBAAqB,MAAA,EAAiC;AACpE,EAAA,gBAAA,GAAmB,EAAE,GAAG,gBAAA,EAAkB,GAAG,MAAA,EAAO;AACtD;AAOA,SAAS,gBAAgB,IAAA,EAA4C;AACnE,EAAA,OACE,IAAA,YAAgB,QAAA,IAChB,IAAA,YAAgB,IAAA,IAChB,IAAA,YAAgB,eAAA;AAEpB;AAEA,SAAS,gBAAgB,OAAA,EAA+C;AACtE,EAAA,MAAM,MAA8B,EAAC;AACrC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,IAAI,mBAAmB,OAAA,EAAS;AAC9B,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC9B,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,KAAA;AAAA,IACb,CAAC,CAAA;AACD,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC1B,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,OAAA,EAAS;AAClC,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,KAAA;AAAA,IACb;AACA,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,OAAO,EAAE,GAAG,OAAA,EAAQ;AACtB;AAMO,SAAS,8BACd,OAAA,EACgB;AAChB,EAAA,OAAO,OAAO,GAAA,EAAK,IAAA,GAAO,EAAC,KAAM;AAC/B,IAAA,IAAI,eAAA,CAAgB,IAAA,CAAK,IAAA,IAAQ,IAAI,CAAA,EAAG;AACtC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAA,CAAU,IAAA,CAAK,MAAA,IAAU,KAAA,EAAO,WAAA,EAAY;AAGlD,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,KAAK,IAAA,EAAM;AAC9C,MAAA,IAAI;AACF,QAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAAA,MAC7B,CAAA,CAAA,MAAQ;AACN,QAAA,IAAA,GAAO,IAAA,CAAK,IAAA;AAAA,MACd;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,MACpC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA,EAAS,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA;AAAA,MACrC;AAAA,KACD,CAAA;AAED,IAAA,MAAM,UAAW,OAAA,EAA0C,OAAA;AAC3D,IAAA,MAAM,MAAA,GAAS,OAAA,KAAY,KAAA,GAAQ,GAAA,GAAM,GAAA;AACzC,IAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG;AAAA,MAC3C,MAAA;AAAA,MACA,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,KAC/C,CAAA;AAAA,EACH,CAAA;AACF;AAQO,SAAS,4BAAA,CACd,QAAA,EACA,OAAA,GAEI,EAAC,EACC;AACN,EAAA,MAAM,SAAA,GAAY,6BAAA,CAA8B,QAAA,CAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,WAAA,GACJ,QAAQ,WAAA,KACP,OAAO,UAAU,WAAA,GAAc,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,GAAI,MAAA,CAAA;AAE3D,EAAA,oBAAA,CAAqB;AAAA,IACnB,KAAA,EAAO,OAAO,GAAA,EAAK,IAAA,KAAS;AAC1B,MAAA,IAAI,eAAA,CAAgB,IAAA,EAAM,IAAA,IAAQ,IAAI,CAAA,EAAG;AACvC,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,MAAM,IAAI,KAAA;AAAA,YACR;AAAA,WACF;AAAA,QACF;AACA,QAAA,OAAO,YAAY,GAAA,EAAK,EAAE,aAAa,SAAA,EAAW,GAAG,MAAM,CAAA;AAAA,MAC7D;AACA,MAAA,OAAO,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,IAC5B;AAAA,GACD,CAAA;AACH;AAEO,SAAS,gBAAgB,QAAA,EAA2C;AACzE,EAAA,MAAM,EAAA,GAAK,YAAY,gBAAA,CAAiB,KAAA;AACxC,EAAA,IAAI,EAAA,EAAI;AACN,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,UAAU,WAAA,EAAa;AAChC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,KAAA,CAAM,KAAK,UAAU,CAAA;AAC9B;AAEA,eAAsB,YAAA,CACpB,GAAA,EACA,IAAA,EACA,QAAA,EACmB;AACnB,EAAA,OAAO,eAAA,CAAgB,QAAQ,CAAA,CAAE,GAAA,EAAK;AAAA,IACpC,WAAA,EAAa,SAAA;AAAA,IACb,GAAG;AAAA,GACJ,CAAA;AACH;;;ACtFA,eAAsB,iBACpB,OAAA,EACiC;AACjC,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,SAAA,IAAaA,8BAAA,CAAc,MAAA;AACrD,EAAA,MAAM,WAAW,OAAA,CAAQ,IAAA,YAAgB,IAAA,GAAO,OAAA,CAAQ,KAAK,IAAA,GAAO,YAAA;AACpE,EAAA,MAAM,aAAaC,wCAAA,CAAwB;AAAA,IACzC,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,YAAY,OAAA,CAAQ,UAAA;AAAA,IACpB,QAAA;AAAA,IACA,YAAY,OAAA,CAAQ,UAAA;AAAA,IACpB,YAAY,OAAA,CAAQ;AAAA,GACrB,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,EAAA,QAAA,CAAS,MAAA,CAAO,MAAA,EAAQ,OAAA,CAAQ,IAAI,CAAA;AACpC,EAAA,QAAA,CAAS,MAAA,CAAO,UAAA,EAAY,OAAA,CAAQ,QAAQ,CAAA;AAC5C,EAAA,QAAA,CAAS,MAAA,CAAO,YAAA,EAAc,OAAA,CAAQ,UAAA,IAAc,SAAS,CAAA;AAC7D,EAAA,QAAA,CAAS,MAAA,CAAO,cAAc,UAAU,CAAA;AACxC,EAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,IAAA,QAAA,CAAS,MAAA,CAAO,YAAA,EAAc,OAAA,CAAQ,UAAU,CAAA;AAAA,EAClD;AACA,EAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,IAAA,QAAA,CAAS,OAAO,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,EAC9D;AACA,EAAA,IAAI,OAAA,CAAQ,oBAAoB,MAAA,EAAW;AACzC,IAAA,QAAA,CAAS,MAAA,CAAO,iBAAA,EAAmB,MAAA,CAAO,OAAA,CAAQ,eAAe,CAAC,CAAA;AAAA,EACpE;AACA,EAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,IAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9D,MAAA,QAAA,CAAS,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IAC5B;AAAA,EACF;AAEA,EAAA,MAAM,WAAW,MAAM,YAAA;AAAA,IACrB,SAAA;AAAA,IACA;AAAA,MACE,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM;AAAA,KACR;AAAA,IACA,OAAA,CAAQ;AAAA,GACV;AAEA,EAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,IAAA,GAAO,KAAA,CAAM,OAAO,EAAC,CAAE,CAAA;AACtD,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,IAAM,OAAA,CAAQ,YAAY,KAAA,EAAO;AAC7C,IAAA,MAAM,IAAI,MAAM,OAAA,CAAQ,KAAA,IAAS,QAAQ,OAAA,IAAW,CAAA,KAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,OAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,EAAA;AACnC,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,IAAa,IAAA,CAAK,GAAA;AACzC,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,SAAA,EAAW;AACzB,IAAA,MAAM,IAAI,MAAM,8DAA2B,CAAA;AAAA,EAC7C;AAEA,EAAA,OAAO,EAAE,QAAQ,SAAA,EAAU;AAC7B;AAEA,eAAsB,kBAAA,CACpB,MACA,YAAA,EACiC;AACjC,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACtB,IAAA;AAAA,IACA,QAAA,EAAU,iBAAA;AAAA,IACV,UAAA,EAAY,YAAA,GAAe,CAAA,WAAA,EAAc,YAAY,CAAA,CAAA,GAAK,SAAA;AAAA,IAC1D,eAAA,EAAiB;AAAA,GAClB,CAAA;AACH;AAEA,eAAsB,sBAAA,CACpB,MAAA,EACA,OAAA,GAAU,EAAA,EACV,aAAA,EACiB;AACjB,EAAA,MAAM,WAAW,MAAM,YAAA;AAAA,IACrB,CAAA,EAAG,OAAO,CAAA,oBAAA,EAAuB,MAAM,CAAA,CAAA;AAAA,IACvC,EAAE,QAAQ,KAAA,EAAM;AAAA,IAChB;AAAA,GACF;AACA,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gDAAA,EAAqB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,EACxD;AACA,EAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,IAAA,EAAK;AACpC,EAAA,IAAI,OAAA,CAAQ,YAAY,KAAA,EAAO;AAC7B,IAAA,MAAM,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAA,IAAS,2CAAa,CAAA;AAAA,EAChD;AACA,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,EAAM,SAAA,IAAa,OAAA,CAAQ,SAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,oCAAgB,CAAA;AAAA,EAClC;AACA,EAAA,OAAO,GAAA;AACT;AAEO,IAAM,kBAAA,GAAqB;AAElC,IAAI,eAAA,GAAkE,IAAA;AAEtE,eAAe,yBAAA,CACb,aACA,aAAA,EACA;AACA,EAAA,MAAM,OAAO,MAAA,CAAO,MAAA,CAAOC,yCAAwB,CAAA,CAAE,KAAK,GAAG,CAAA;AAC7D,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,WAAW,CAAA,EAAG,WAAA,CAAY,QAAA,CAAS,GAAG,CAAA,GAAI,GAAA,GAAM,GAAG,CAAA,KAAA,EAAQ,kBAAA,CAAmB,IAAI,CAAC,CAAA,CAAA;AAClG,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,GAAA,EAAK,EAAE,MAAA,EAAQ,KAAA,IAAS,aAAa,CAAA;AACzE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,IAAA;AAEzB,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,EAAA,IAAI,CAAC,KAAK,OAAA,IAAW,CAAC,MAAM,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,EAAG,OAAO,IAAA;AAExD,EAAA,MAAM,YAAoC,EAAC;AAC3C,EAAA,KAAA,MAAW,IAAA,IAAQ,KAAK,KAAA,EAAO;AAC7B,IAAA,IAAI,IAAA,EAAM,GAAA,IAAO,IAAA,EAAM,KAAA,EAAO;AAC5B,MAAA,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA,CAAK,KAAA;AAAA,IAC7B;AAAA,EACF;AACA,EAAA,OAAOC,6CAA4B,SAAS,CAAA;AAC9C;AAEA,eAAe,mBAAmB,WAAA,EAAsB;AACtD,EAAA,IAAI,oBAAoB,IAAA,EAAM;AAC5B,IAAA,OAAO,eAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,WAAA,EAAa;AAChD,IAAA,eAAA,GAAkB,MAAM,0BAA0B,WAAW,CAAA;AAAA,EAC/D;AACA,EAAA,OAAO,eAAA;AACT;AAEA,eAAsB,wBACpB,WAAA,EACkB;AAClB,EAAA,IAAI;AACF,IAAA,MAAM,mBAAmB,WAAW,CAAA;AACpC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEA,eAAsB,6BACpB,WAAA,EACiB;AACjB,EAAA,MAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,WAAW,CAAA;AACnD,EAAA,OAAOC,kDAAiC,MAAM,CAAA;AAChD;AAEO,SAAS,uBAAA,GAAgC;AAC9C,EAAA,eAAA,GAAkB,IAAA;AACpB;AAEA,eAAsB,0BACpB,WAAA,EACe;AACf,EAAA,uBAAA,EAAwB;AACxB,EAAA,MAAM,mBAAmB,WAAW,CAAA;AACtC;AAEO,IAAM,6BAAA,GAAgC;AACtC,IAAM,yBAAA,GAA4B;AAClC,IAAM,gBAAA,GAAmB;AACzB,IAAM,wBAAA,GAA2B","file":"chunk-XE5RGZ3B.js","sourcesContent":["import type { RequestAdapter, RequestConfig } from '../../request/types/types';\nimport type { PlatformAdapter } from '../../platform/types';\n\n/** 与标准 fetch 兼容,供 ossFile 客户端注入(Taro / Hono SSR 等) */\nexport type OssFileFetchFn = (\n url: string,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport type OssFileHttpConfig = {\n fetch?: OssFileFetchFn;\n};\n\nlet globalHttpConfig: OssFileHttpConfig = {};\n\nexport function configureOssFileHttp(config: OssFileHttpConfig): void {\n globalHttpConfig = { ...globalHttpConfig, ...config };\n}\n\n/** @internal 测试重置 */\nexport function resetOssFileHttpForTesting(): void {\n globalHttpConfig = {};\n}\n\nfunction isMultipartBody(body: BodyInit | null | undefined): boolean {\n return (\n body instanceof FormData ||\n body instanceof Blob ||\n body instanceof URLSearchParams\n );\n}\n\nfunction headersToRecord(headers?: HeadersInit): Record<string, string> {\n const out: Record<string, string> = {};\n if (!headers) {\n return out;\n }\n if (headers instanceof Headers) {\n headers.forEach((value, key) => {\n out[key] = value;\n });\n return out;\n }\n if (Array.isArray(headers)) {\n for (const [key, value] of headers) {\n out[key] = value;\n }\n return out;\n }\n return { ...headers };\n}\n\n/**\n * 将 RequestAdapter 桥接为 fetch 形态(JSON 请求)。\n * multipart 上传需通过 `configureOssFileHttp({ fetch })` 注入完整 fetch。\n */\nexport function createOssFileFetchFromAdapter(\n adapter: RequestAdapter,\n): OssFileFetchFn {\n return async (url, init = {}) => {\n if (isMultipartBody(init.body ?? null)) {\n throw new Error(\n '[ossFile] RequestAdapter 不支持 multipart;请注入支持 FormData 的 fetch',\n );\n }\n\n const method = (init.method ?? 'GET').toUpperCase() as NonNullable<\n RequestConfig['method']\n >;\n let body: unknown;\n if (typeof init.body === 'string' && init.body) {\n try {\n body = JSON.parse(init.body) as unknown;\n } catch {\n body = init.body;\n }\n }\n\n const payload = await adapter.request({\n url,\n method,\n headers: headersToRecord(init.headers),\n body,\n });\n\n const success = (payload as { success?: boolean } | null)?.success;\n const status = success === false ? 400 : 200;\n return new Response(JSON.stringify(payload), {\n status,\n headers: { 'Content-Type': 'application/json' },\n });\n };\n}\n\n/**\n * 从 PlatformAdapter 配置 ossFile HTTP(R2-223)\n *\n * - JSON GET/POST:走 `platform.fetch`(RequestAdapter)\n * - FormData 上传:走 `uploadFetch`,默认回退全局 `fetch`\n */\nexport function configureOssFileFromPlatform(\n platform: PlatformAdapter,\n options: {\n uploadFetch?: OssFileFetchFn;\n } = {},\n): void {\n const jsonFetch = createOssFileFetchFromAdapter(platform.fetch);\n const uploadFetch =\n options.uploadFetch ??\n (typeof fetch !== 'undefined' ? fetch.bind(globalThis) : undefined);\n\n configureOssFileHttp({\n fetch: async (url, init) => {\n if (isMultipartBody(init?.body ?? null)) {\n if (!uploadFetch) {\n throw new Error(\n '[ossFile] multipart 上传需要 uploadFetch 或浏览器 fetch 环境',\n );\n }\n return uploadFetch(url, { credentials: 'include', ...init });\n }\n return jsonFetch(url, init);\n },\n });\n}\n\nexport function getOssFileFetch(override?: OssFileFetchFn): OssFileFetchFn {\n const fn = override ?? globalHttpConfig.fetch;\n if (fn) {\n return fn;\n }\n if (typeof fetch === 'undefined') {\n throw new Error(\n '[ossFile] 无可用 fetch;请先调用 configureOssFileHttp 或 configureOssFileFromPlatform',\n );\n }\n return fetch.bind(globalThis);\n}\n\nexport async function ossFileFetch(\n url: string,\n init?: RequestInit,\n override?: OssFileFetchFn,\n): Promise<Response> {\n return getOssFileFetch(override)(url, {\n credentials: 'include',\n ...init,\n });\n}\n","import {\n universalFileClient,\n createFileClient,\n type UniversalFileClientConfig,\n} from '../universalFile/client';\nimport { API_ENDPOINTS } from '../universalFile/constants';\nimport {\n STANDARD_ALIYUN_OSS_KEYS,\n parseAliyunOssConfigFromMap,\n isCompleteOssConfig,\n getOssStorageModeLabelFromConfig,\n} from './shared/ossConfig';\nimport { buildModuleUploadPath, resolveUploadFolderPath } from './shared/path';\nimport {\n configureOssFileFromPlatform,\n configureOssFileHttp,\n createOssFileFetchFromAdapter,\n ossFileFetch,\n type OssFileFetchFn,\n type OssFileHttpConfig,\n} from './shared/httpClient';\n\nexport {\n configureOssFileHttp,\n configureOssFileFromPlatform,\n createOssFileFetchFromAdapter,\n type OssFileFetchFn,\n type OssFileHttpConfig,\n};\n\nexport type { UniversalFileClientConfig };\n\nexport {\n universalFileClient,\n createFileClient,\n STANDARD_ALIYUN_OSS_KEYS,\n parseAliyunOssConfigFromMap,\n buildModuleUploadPath,\n resolveUploadFolderPath,\n};\n\nexport interface UploadModuleFileOptions {\n file: File | Blob;\n moduleId: string;\n businessId?: string;\n uploadUrl?: string;\n /** 与 universalFile 的 customPath 等价 */\n folderPath?: string;\n customPath?: string;\n needsProcessing?: boolean;\n permission?: 'public' | 'private' | 'authenticated' | 'owner-only';\n metadata?: Record<string, unknown>;\n extraFields?: Record<string, string>;\n /** 单次请求覆盖全局注入的 fetch(R2-223) */\n fetch?: OssFileFetchFn;\n}\n\nexport interface UploadModuleFileResult {\n fileId: string;\n accessUrl: string;\n}\n\nexport async function uploadModuleFile(\n options: UploadModuleFileOptions,\n): Promise<UploadModuleFileResult> {\n const uploadUrl = options.uploadUrl ?? API_ENDPOINTS.UPLOAD;\n const fileName = options.file instanceof File ? options.file.name : 'upload.jpg';\n const folderPath = resolveUploadFolderPath({\n moduleId: options.moduleId,\n businessId: options.businessId,\n fileName,\n folderPath: options.folderPath,\n customPath: options.customPath,\n });\n\n const formData = new FormData();\n formData.append('file', options.file);\n formData.append('moduleId', options.moduleId);\n formData.append('businessId', options.businessId ?? 'default');\n formData.append('folderPath', folderPath);\n if (options.permission) {\n formData.append('permission', options.permission);\n }\n if (options.metadata) {\n formData.append('metadata', JSON.stringify(options.metadata));\n }\n if (options.needsProcessing !== undefined) {\n formData.append('needsProcessing', String(options.needsProcessing));\n }\n if (options.extraFields) {\n for (const [key, value] of Object.entries(options.extraFields)) {\n formData.append(key, value);\n }\n }\n\n const response = await ossFileFetch(\n uploadUrl,\n {\n method: 'POST',\n body: formData,\n },\n options.fetch,\n );\n\n const payload = await response.json().catch(() => ({}));\n if (!response.ok || payload.success === false) {\n throw new Error(payload.error || payload.message || `HTTP ${response.status}`);\n }\n\n const data = payload.data ?? payload;\n const fileId = data.fileId ?? data.id;\n const accessUrl = data.accessUrl ?? data.url;\n if (!fileId || !accessUrl) {\n throw new Error('上传响应缺少 fileId 或 accessUrl');\n }\n\n return { fileId, accessUrl };\n}\n\nexport async function uploadArtworkImage(\n file: File,\n collectionId?: number,\n): Promise<UploadModuleFileResult> {\n return uploadModuleFile({\n file,\n moduleId: 'showmasterpiece',\n businessId: collectionId ? `collection-${collectionId}` : 'artwork',\n needsProcessing: true,\n });\n}\n\nexport async function getModuleFileAccessUrl(\n fileId: string,\n apiBase = '',\n fetchOverride?: OssFileFetchFn,\n): Promise<string> {\n const response = await ossFileFetch(\n `${apiBase}/api/universal-file/${fileId}`,\n { method: 'GET' },\n fetchOverride,\n );\n if (!response.ok) {\n throw new Error(`获取文件 URL 失败: HTTP ${response.status}`);\n }\n const payload = await response.json();\n if (payload.success === false) {\n throw new Error(payload.error || '获取文件 URL 失败');\n }\n const url = payload.data?.accessUrl ?? payload.accessUrl;\n if (!url) {\n throw new Error('响应缺少 accessUrl');\n }\n return url;\n}\n\nexport const getArtworkImageUrl = getModuleFileAccessUrl;\n\nlet cachedOssConfig: ReturnType<typeof parseAliyunOssConfigFromMap> = null;\n\nasync function loadOssConfigFromItemsApi(\n itemsApiUrl: string,\n fetchOverride?: OssFileFetchFn,\n) {\n const keys = Object.values(STANDARD_ALIYUN_OSS_KEYS).join(',');\n const url = `${itemsApiUrl}${itemsApiUrl.includes('?') ? '&' : '?'}keys=${encodeURIComponent(keys)}`;\n const response = await ossFileFetch(url, { method: 'GET' }, fetchOverride);\n if (!response.ok) return null;\n\n const data = await response.json();\n if (!data.success || !Array.isArray(data.items)) return null;\n\n const configMap: Record<string, string> = {};\n for (const item of data.items) {\n if (item?.key && item?.value) {\n configMap[item.key] = item.value;\n }\n }\n return parseAliyunOssConfigFromMap(configMap);\n}\n\nasync function getCachedOssConfig(itemsApiUrl?: string) {\n if (cachedOssConfig !== null) {\n return cachedOssConfig;\n }\n if (typeof window !== 'undefined' && itemsApiUrl) {\n cachedOssConfig = await loadOssConfigFromItemsApi(itemsApiUrl);\n }\n return cachedOssConfig;\n}\n\nexport async function shouldUseOssFileService(\n itemsApiUrl?: string,\n): Promise<boolean> {\n try {\n await getCachedOssConfig(itemsApiUrl);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function getOssStorageModeDisplayName(\n itemsApiUrl?: string,\n): Promise<string> {\n const config = await getCachedOssConfig(itemsApiUrl);\n return getOssStorageModeLabelFromConfig(config);\n}\n\nexport function clearOssFileConfigCache(): void {\n cachedOssConfig = null;\n}\n\nexport async function refreshOssFileConfigCache(\n itemsApiUrl?: string,\n): Promise<void> {\n clearOssFileConfigCache();\n await getCachedOssConfig(itemsApiUrl);\n}\n\nexport const shouldUseUniversalFileService = shouldUseOssFileService;\nexport const getStorageModeDisplayName = getOssStorageModeDisplayName;\nexport const clearConfigCache = clearOssFileConfigCache;\nexport const refreshFileServiceConfig = refreshOssFileConfigCache;\n\nexport async function fetchOssConfigManagerFromItemsApi(\n itemsApiUrl: string,\n): Promise<ReturnType<typeof parseAliyunOssConfigFromMap>> {\n return loadOssConfigFromItemsApi(itemsApiUrl);\n}\n\nexport function isOssConfigured(config: ReturnType<typeof parseAliyunOssConfigFromMap>): boolean {\n return isCompleteOssConfig(config);\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { FileServiceConfigManager, loadOSSConfigFromEnv, createFileServiceConfigWithConfigManager, createDrizzleFileRepository, UniversalFileService, createUniversalFileServiceWithConfigManager, createFileServiceWithFactory, loadConfigFromEnv } from './chunk-4OOANEJV.mjs';
2
- import { isCompleteOssConfig } from './chunk-DIF5VRL3.mjs';
1
+ import { FileServiceConfigManager, loadOSSConfigFromEnv, createFileServiceConfigWithConfigManager, createDrizzleFileRepository, UniversalFileService, createUniversalFileServiceWithConfigManager, createFileServiceWithFactory, loadConfigFromEnv } from './chunk-RHECN4E2.mjs';
2
+ import { isCompleteOssConfig } from './chunk-XB7GUEHZ.mjs';
3
3
 
4
- // src/ossFile/server/config.ts
4
+ // src/common/ossFile/server/config.ts
5
5
  function createOssFileConfigManager(options = {}) {
6
6
  const { ossConfig, fallbackToLocal = true, customConfig } = options;
7
7
  const manager = new FileServiceConfigManager(customConfig);
@@ -32,7 +32,7 @@ function isOssEnabledInConfig(config) {
32
32
  return Boolean(oss?.enabled);
33
33
  }
34
34
 
35
- // src/ossFile/server/service.ts
35
+ // src/common/ossFile/server/service.ts
36
36
  async function createOssFileServiceWithDrizzlePersistence(options) {
37
37
  const configManager = options.configManager ?? await createOssFileConfigManagerFromEnv();
38
38
  const repository = createDrizzleFileRepository({
@@ -157,7 +157,7 @@ async function createOssFileService(options = {}) {
157
157
  });
158
158
  }
159
159
 
160
- // src/ossFile/server/bootstrap.ts
160
+ // src/common/ossFile/server/bootstrap.ts
161
161
  function createOssFileBootstrap(options = {}) {
162
162
  let configManagerPromise = null;
163
163
  const getConfigManager = async () => {
@@ -189,5 +189,5 @@ function createOssFileBootstrap(options = {}) {
189
189
  }
190
190
 
191
191
  export { createFileUrlResolver, createOssFileBootstrap, createOssFileConfigManager, createOssFileConfigManagerFromEnv, createOssFileService, createOssFileServiceWithDrizzlePersistence, createUniversalFileServiceFromConfigManager, getFileUrlByFileId, getOssStorageModeLabel, isOssEnabledInConfig, resolveFileUrlMap, resolveUploadAccessUrl, uploadFileAndResolveAccessUrl };
192
- //# sourceMappingURL=chunk-WJ7IMUEJ.mjs.map
193
- //# sourceMappingURL=chunk-WJ7IMUEJ.mjs.map
192
+ //# sourceMappingURL=chunk-XNTIMVSL.mjs.map
193
+ //# sourceMappingURL=chunk-XNTIMVSL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/ossFile/server/config.ts","../src/common/ossFile/server/service.ts","../src/common/ossFile/server/bootstrap.ts"],"names":["service"],"mappings":"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","file":"chunk-XNTIMVSL.mjs","sourcesContent":["import type { AliyunOSSConfig } from '../../universalFile/server/types';\nimport type { FileServiceConfig } from '../../universalFile/server/config-manager';\nimport {\n FileServiceConfigManager,\n createFileServiceConfigWithConfigManager,\n} from '../../universalFile/server/config-manager';\nimport { loadOSSConfigFromEnv } from '../../universalFile/server/config-helpers';\nimport {\n parseAliyunOssConfigFromMap,\n isCompleteOssConfig,\n STANDARD_ALIYUN_OSS_KEYS,\n type OssConfigKeyMap,\n} from '../shared/ossConfig';\n\nexport {\n STANDARD_ALIYUN_OSS_KEYS,\n parseAliyunOssConfigFromMap,\n type OssConfigKeyMap,\n};\n\nexport interface CreateOssFileConfigManagerOptions {\n ossConfig?: AliyunOSSConfig | null;\n fallbackToLocal?: boolean;\n customConfig?: Partial<FileServiceConfig>;\n}\n\nexport function createOssFileConfigManager(\n options: CreateOssFileConfigManagerOptions = {},\n): FileServiceConfigManager {\n const { ossConfig, fallbackToLocal = true, customConfig } = options;\n const manager = new FileServiceConfigManager(customConfig);\n\n const resolvedOss = ossConfig ?? loadOSSConfigFromEnv();\n if (isCompleteOssConfig(resolvedOss)) {\n manager.enableStorageProvider('aliyun-oss', resolvedOss);\n manager.updateConfig({ defaultStorage: 'aliyun-oss' });\n return manager;\n }\n\n if (fallbackToLocal) {\n manager.enableStorageProvider('local');\n manager.updateConfig({ defaultStorage: 'local' });\n }\n\n return manager;\n}\n\nexport async function createOssFileConfigManagerFromEnv(\n customConfig?: Partial<FileServiceConfig>,\n): Promise<FileServiceConfigManager> {\n return createFileServiceConfigWithConfigManager(customConfig);\n}\n\nexport function getOssStorageModeLabel(config: FileServiceConfig): string {\n const oss = config.storageProviders['aliyun-oss'] as AliyunOSSConfig | undefined;\n if (oss?.enabled) {\n return oss.customDomain\n ? '阿里云 OSS + 自定义域名'\n : '阿里云 OSS';\n }\n return '本地存储';\n}\n\nexport function isOssEnabledInConfig(config: FileServiceConfig): boolean {\n const oss = config.storageProviders['aliyun-oss'];\n return Boolean(oss?.enabled);\n}\n\n/** @deprecated 使用 createOssFileConfigManagerFromEnv */\nexport async function getShowMasterpieceFileConfig(): Promise<FileServiceConfigManager> {\n return createOssFileConfigManagerFromEnv();\n}\n","import {\n UniversalFileService,\n createFileServiceWithFactory,\n loadConfigFromEnv,\n createDrizzleFileRepository,\n} from '../../universalFile/server';\nimport type { FileServiceFactoryOptions } from '../../universalFile/server/config-helpers';\nimport type { UploadFileInfo } from '../../universalFile/types';\nimport {\n FileServiceConfigManager,\n type FileServiceConfig,\n} from '../../universalFile/server/config-manager';\nimport { createUniversalFileServiceWithConfigManager } from '../../universalFile/server/service-helpers';\nimport { createOssFileConfigManagerFromEnv } from './config';\n\nexport { UniversalFileService, createUniversalFileServiceWithConfigManager };\n\nexport interface DrizzlePersistenceOptions {\n db: unknown;\n fileMetadata: unknown;\n fileStorageProviders: unknown;\n}\n\nexport async function createOssFileServiceWithDrizzlePersistence(options: {\n configManager?: FileServiceConfigManager;\n persistence: DrizzlePersistenceOptions;\n}): Promise<UniversalFileService> {\n const configManager = options.configManager\n ?? await createOssFileConfigManagerFromEnv();\n const repository = createDrizzleFileRepository({\n db: options.persistence.db,\n fileMetadata: options.persistence.fileMetadata,\n fileStorageProviders: options.persistence.fileStorageProviders,\n });\n return createUniversalFileServiceFromConfigManager(configManager, repository);\n}\n\nexport async function resolveUploadAccessUrl(\n service: UniversalFileService,\n fileId: string,\n options?: { cdnUrl?: string | null; userId?: string; fallbackPath?: string },\n): Promise<string> {\n if (options?.cdnUrl) {\n return options.cdnUrl;\n }\n try {\n const url = await service.getFileUrl(fileId, options?.userId);\n if (url) return url;\n } catch {\n // fall through\n }\n return options?.fallbackPath ?? `/uploads/${fileId}`;\n}\n\nexport async function uploadFileAndResolveAccessUrl(\n service: UniversalFileService,\n uploadInfo: UploadFileInfo,\n userId?: string,\n): Promise<{ fileId: string; accessUrl: string; uploadResult: Awaited<ReturnType<UniversalFileService['uploadFile']>> }> {\n const uploadResult = await service.uploadFile(uploadInfo);\n const accessUrl = await resolveUploadAccessUrl(service, uploadResult.id, {\n cdnUrl: uploadResult.cdnUrl,\n userId,\n fallbackPath: `/uploads/${uploadResult.storagePath}`,\n });\n return {\n fileId: uploadResult.id,\n accessUrl,\n uploadResult,\n };\n}\n\n/**\n * 基于配置管理器创建并初始化 UniversalFileService。\n */\nexport async function createUniversalFileServiceFromConfigManager(\n configManager: FileServiceConfigManager,\n repository?: unknown,\n): Promise<UniversalFileService> {\n const config = configManager.getConfig();\n const serviceConfig = {\n storage: config.storageProviders[config.defaultStorage],\n defaultStorage: config.defaultStorage,\n defaultCDN: config.defaultCDN,\n storageProviders: config.storageProviders,\n cdnProviders: config.cdnProviders,\n maxFileSize: config.maxFileSize,\n allowedMimeTypes: config.allowedMimeTypes,\n cache: {\n enabled: true,\n metadataTTL: config.cache.metadataTTL,\n urlTTL: config.cache.urlTTL,\n },\n ...(repository\n ? {\n persistence: {\n enabled: true,\n repository,\n autoPersist: true,\n },\n }\n : {}),\n };\n\n const service = new UniversalFileService(serviceConfig as any);\n await service.initialize();\n return service;\n}\n\n/**\n * 通过 fileId 解析访问 URL(需已初始化的 UniversalFileService 或全局 ConfigManager)。\n */\nexport async function getFileUrlByFileId(\n fileId: string,\n options?: {\n configManager?: FileServiceConfigManager;\n service?: UniversalFileService;\n userId?: string;\n },\n): Promise<string | null> {\n try {\n if (options?.service) {\n return await options.service.getFileUrl(fileId, options.userId);\n }\n if (options?.configManager) {\n const service = await createUniversalFileServiceFromConfigManager(\n options.configManager,\n );\n return await service.getFileUrl(fileId, options.userId);\n }\n const service = await createUniversalFileServiceWithConfigManager();\n return await service.getFileUrl(fileId, options?.userId);\n } catch {\n return null;\n }\n}\n\n/**\n * 批量解析 fileId → URL。\n */\nexport async function resolveFileUrlMap(\n fileIds: string[],\n options?: {\n resolver?: (fileId: string) => Promise<string | null | undefined>;\n configManager?: FileServiceConfigManager;\n userId?: string;\n },\n): Promise<Map<string, string>> {\n const map = new Map<string, string>();\n const uniqueIds = [...new Set(fileIds.filter(Boolean))];\n\n await Promise.all(\n uniqueIds.map(async (fileId) => {\n let url: string | null | undefined;\n if (options?.resolver) {\n url = await options.resolver(fileId);\n } else {\n url = await getFileUrlByFileId(fileId, {\n configManager: options?.configManager,\n userId: options?.userId,\n });\n }\n if (url) {\n map.set(fileId, url);\n }\n }),\n );\n\n return map;\n}\n\nexport type FileUrlResolver = (\n fileId: string,\n userId?: string,\n) => Promise<string | null | undefined>;\n\nexport interface CreateFileUrlResolverOptions {\n configManager?: FileServiceConfigManager;\n loadConfigManager?: () => Promise<FileServiceConfigManager>;\n userId?: string;\n}\n\n/**\n * 显式创建 fileId → URL 解析器(替代 globalThis 单例,R2-203)。\n */\nexport function createFileUrlResolver(\n options: CreateFileUrlResolverOptions = {},\n): FileUrlResolver {\n let configManagerPromise: Promise<FileServiceConfigManager> | null = null;\n\n async function getConfigManager(): Promise<FileServiceConfigManager> {\n if (options.configManager) {\n return options.configManager;\n }\n if (options.loadConfigManager) {\n configManagerPromise ??= options.loadConfigManager();\n return configManagerPromise;\n }\n configManagerPromise ??= createOssFileConfigManagerFromEnv();\n return configManagerPromise;\n }\n\n return async (fileId: string, userId?: string) =>\n getFileUrlByFileId(fileId, {\n configManager: await getConfigManager(),\n userId: userId ?? options.userId,\n });\n}\n\nexport async function createOssFileService(\n options: FileServiceFactoryOptions = {},\n): Promise<UniversalFileService> {\n return createFileServiceWithFactory({\n configLoaders: [() => Promise.resolve(loadConfigFromEnv())],\n autoInitialize: true,\n ...options,\n });\n}\n\nexport type { FileServiceConfig, FileServiceConfigManager };\n","import type { FileServiceConfigManager } from '../../universalFile/server/config-manager';\nimport type { UniversalFileService } from '../../universalFile/server';\nimport { createOssFileConfigManagerFromEnv } from './config';\nimport {\n createOssFileServiceWithDrizzlePersistence,\n createUniversalFileServiceFromConfigManager,\n createFileUrlResolver,\n getFileUrlByFileId,\n type DrizzlePersistenceOptions,\n type FileUrlResolver,\n} from './service';\n\nexport interface OssFileBootstrapOptions {\n /** 自定义配置加载(如从 DB 注入 env 后再 createOssFileConfigManagerFromEnv) */\n loadConfigManager?: () => Promise<FileServiceConfigManager>;\n /** Drizzle 持久化;传入后 createPersistentFileService 会写入 file_metadata */\n persistence?: DrizzlePersistenceOptions;\n}\n\nexport interface OssFileBootstrap {\n getConfigManager(): Promise<FileServiceConfigManager>;\n /** 无 Drizzle 持久化的 UniversalFileService(如 skill-manager 自行写 metadata) */\n createFileService(): Promise<UniversalFileService>;\n createPersistentFileService(): Promise<UniversalFileService>;\n createFileUrlResolver(): FileUrlResolver;\n getFileUrl(fileId: string, userId?: string): Promise<string | null>;\n}\n\n/**\n * 一站式 OSS / universal-file 服务端 bootstrap(R2-205)。\n */\nexport function createOssFileBootstrap(\n options: OssFileBootstrapOptions = {},\n): OssFileBootstrap {\n let configManagerPromise: Promise<FileServiceConfigManager> | null = null;\n\n const getConfigManager = async (): Promise<FileServiceConfigManager> => {\n configManagerPromise ??=\n options.loadConfigManager?.() ?? createOssFileConfigManagerFromEnv();\n return configManagerPromise;\n };\n\n return {\n getConfigManager,\n createFileService: async () => {\n const configManager = await getConfigManager();\n return createUniversalFileServiceFromConfigManager(configManager);\n },\n createPersistentFileService: async () => {\n const configManager = await getConfigManager();\n if (options.persistence) {\n return createOssFileServiceWithDrizzlePersistence({\n configManager,\n persistence: options.persistence,\n });\n }\n return createUniversalFileServiceFromConfigManager(configManager);\n },\n createFileUrlResolver: () =>\n createFileUrlResolver({ loadConfigManager: getConfigManager }),\n getFileUrl: async (fileId, userId) => {\n const configManager = await getConfigManager();\n return getFileUrlByFileId(fileId, { configManager, userId });\n },\n };\n}\n"]}
@@ -1,10 +1,25 @@
1
1
  'use strict';
2
2
 
3
- var chunk25OFOKNF_js = require('./chunk-25OFOKNF.js');
3
+ var chunkF2BZIU67_js = require('./chunk-F2BZIU67.js');
4
+ var chunkNSBPE2FW_js = require('./chunk-NSBPE2FW.js');
4
5
  var clsx = require('clsx');
5
6
  var tailwindMerge = require('tailwind-merge');
6
7
 
7
- // src/utils/time.ts
8
+ // src/common/utils/index.ts
9
+ var utils_exports = {};
10
+ chunkNSBPE2FW_js.__export(utils_exports, {
11
+ arrayUtils: () => arrayUtils,
12
+ cn: () => cn,
13
+ debugUtils: () => debugUtils,
14
+ errorUtils: () => errorUtils,
15
+ fileUtils: () => fileUtils,
16
+ formatTime: () => formatTime,
17
+ japaneseUtils: () => japaneseUtils,
18
+ stringUtils: () => stringUtils,
19
+ validators: () => validators
20
+ });
21
+
22
+ // src/common/utils/time.ts
8
23
  var formatTime = {
9
24
  /**
10
25
  * 将秒数转换为 MM:SS 格式
@@ -46,7 +61,7 @@ var formatTime = {
46
61
  }
47
62
  };
48
63
 
49
- // src/utils/japanese.ts
64
+ // src/common/utils/japanese.ts
50
65
  var japaneseUtils = {
51
66
  /**
52
67
  * 提取文本中的汉字
@@ -68,7 +83,7 @@ var japaneseUtils = {
68
83
  }
69
84
  };
70
85
 
71
- // src/utils/validators.ts
86
+ // src/common/utils/validators.ts
72
87
  var validators = {
73
88
  /**
74
89
  * 验证邮箱格式
@@ -131,7 +146,7 @@ var validators = {
131
146
  }
132
147
  };
133
148
 
134
- // src/utils/file.ts
149
+ // src/common/utils/file.ts
135
150
  var fileUtils = {
136
151
  /**
137
152
  * 格式化文件大小
@@ -168,7 +183,7 @@ var fileUtils = {
168
183
  }
169
184
  };
170
185
 
171
- // src/utils/array.ts
186
+ // src/common/utils/array.ts
172
187
  var arrayUtils = {
173
188
  /**
174
189
  * 数组去重
@@ -222,7 +237,7 @@ var arrayUtils = {
222
237
  }
223
238
  };
224
239
 
225
- // src/utils/string.ts
240
+ // src/common/utils/string.ts
226
241
  var stringUtils = {
227
242
  /**
228
243
  * 截断文本
@@ -263,7 +278,7 @@ var stringUtils = {
263
278
  }
264
279
  };
265
280
 
266
- // src/utils/debug.ts
281
+ // src/common/utils/debug.ts
267
282
  var debugUtils = {
268
283
  /**
269
284
  * 安全的 JSON 序列化
@@ -285,7 +300,7 @@ var debugUtils = {
285
300
  const end = typeof performance !== "undefined" ? performance.now() : Date.now();
286
301
  const duration = end - start;
287
302
  const message = (label || "Timer") + ": " + duration.toFixed(2) + "ms";
288
- chunk25OFOKNF_js.logger.info(message);
303
+ chunkF2BZIU67_js.logger.info(message);
289
304
  return duration;
290
305
  }
291
306
  };
@@ -307,7 +322,7 @@ var debugUtils = {
307
322
  }
308
323
  };
309
324
 
310
- // src/utils/error.ts
325
+ // src/common/utils/error.ts
311
326
  var errorUtils = {
312
327
  /**
313
328
  * 创建标准化的错误对象
@@ -366,6 +381,7 @@ exports.fileUtils = fileUtils;
366
381
  exports.formatTime = formatTime;
367
382
  exports.japaneseUtils = japaneseUtils;
368
383
  exports.stringUtils = stringUtils;
384
+ exports.utils_exports = utils_exports;
369
385
  exports.validators = validators;
370
- //# sourceMappingURL=chunk-ZWQJSZEY.js.map
371
- //# sourceMappingURL=chunk-ZWQJSZEY.js.map
386
+ //# sourceMappingURL=chunk-Y7WHUKJF.js.map
387
+ //# sourceMappingURL=chunk-Y7WHUKJF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/utils/index.ts","../src/common/utils/time.ts","../src/common/utils/japanese.ts","../src/common/utils/validators.ts","../src/common/utils/file.ts","../src/common/utils/array.ts","../src/common/utils/string.ts","../src/common/utils/debug.ts","../src/common/utils/error.ts","../src/common/utils/cn.ts"],"names":["__export","logger","twMerge","clsx"],"mappings":"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","file":"chunk-Y7WHUKJF.js","sourcesContent":["/**\n * @package sa2kit/common/utils\n * 工具函数统一导出\n */\nexport { formatTime } from './time';\nexport { japaneseUtils } from './japanese';\nexport { validators } from './validators';\nexport { fileUtils } from './file';\nexport { arrayUtils } from './array';\nexport { stringUtils } from './string';\nexport { debugUtils } from './debug';\nexport { errorUtils } from './error';\nexport { cn } from './cn';\n","/**\n * 时间格式化工具\n */\n\nexport const formatTime = {\n /**\n * 将秒数转换为 MM:SS 格式\n */\n toMinutesSeconds(seconds: number): string {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return minutes + ':' + remainingSeconds.toString().padStart(2, '0');\n },\n\n /**\n * 将秒数转换为 HH:MM:SS 格式\n */\n toHoursMinutesSeconds(seconds: number): string {\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n\n if (hours > 0) {\n return hours + ':' + minutes.toString().padStart(2, '0') + ':' + remainingSeconds.toString().padStart(2, '0');\n }\n return minutes + ':' + remainingSeconds.toString().padStart(2, '0');\n },\n\n /**\n * 格式化日期为用户友好的格式\n */\n formatDate(date: string | Date, locale = 'zh-CN'): string {\n const d = new Date(date);\n const now = new Date();\n const diffMs = now.getTime() - d.getTime();\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) {\n return locale === 'zh-CN' ? '今天' : 'Today';\n } else if (diffDays === 1) {\n return locale === 'zh-CN' ? '昨天' : 'Yesterday';\n } else if (diffDays < 7) {\n return locale === 'zh-CN' ? diffDays + '天前' : diffDays + ' days ago';\n } else {\n return d.toLocaleDateString(locale);\n }\n },\n};\n\n","/**\n * 日语文本处理工具\n */\n\nexport const japaneseUtils = {\n /**\n * 提取文本中的汉字\n */\n extractKanji(text: string): string[] {\n return text.match(/[\\u4E00-\\u9FAF]/g) || [];\n },\n\n /**\n * 提取文本中的假名\n */\n extractKana(text: string): string[] {\n return text.match(/[\\u3040-\\u309F\\u30A0-\\u30FF]/g) || [];\n },\n\n /**\n * 清理文本,移除特殊字符但保留日语字符\n */\n cleanText(text: string): string {\n return text.replace(/[^\\u3040-\\u309F\\u30A0-\\u30FF\\u4E00-\\u9FAF\\w\\s]/g, '');\n },\n};\n","/**\n * 验证工具\n */\n\nexport const validators = {\n /**\n * 验证邮箱格式\n */\n isValidEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n },\n\n /**\n * 验证密码强度\n */\n isValidPassword(password: string): {\n isValid: boolean;\n errors: string[];\n } {\n const errors: string[] = [];\n\n if (password.length < 6) {\n errors.push('Password must be at least 6 characters');\n }\n\n if (password.length > 50) {\n errors.push('Password must not exceed 50 characters');\n }\n\n if (!/[a-zA-Z]/.test(password)) {\n errors.push('Password must contain at least one letter');\n }\n\n if (!/[0-9]/.test(password)) {\n errors.push('Password must contain at least one number');\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n };\n },\n\n /**\n * 验证用户名格式\n */\n isValidUsername(username: string): boolean {\n const usernameRegex = /^[a-zA-Z0-9_]{3,20}$/;\n return usernameRegex.test(username);\n },\n\n /**\n * 验证文件大小\n */\n isValidFileSize(size: number, maxSize: number): boolean {\n return size > 0 && size <= maxSize;\n },\n\n /**\n * 验证文件类型\n */\n isValidFileType(type: string, supportedTypes: string[]): boolean {\n return supportedTypes.includes(type);\n },\n\n /**\n * 验证 URL 格式\n */\n isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n },\n};\n\n","/**\n * 文件处理工具\n */\n\nexport const fileUtils = {\n /**\n * 格式化文件大小\n */\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n },\n\n /**\n * 获取文件扩展名\n */\n getFileExtension(filename: string): string {\n return filename.slice(((filename.lastIndexOf('.') - 1) >>> 0) + 2);\n },\n\n /**\n * 生成唯一文件名\n */\n generateUniqueFileName(originalName: string): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 15);\n const extension = this.getFileExtension(originalName);\n const baseName = originalName.replace('.' + (extension), '');\n return extension ? (baseName) + '_' + (timestamp) + '_' + (random) + '.' + (extension) : (baseName) + '_' + (timestamp) + '_' + (random);\n },\n\n /**\n * 验证文件名是否有效\n */\n isValidFilename(filename: string): boolean {\n // 不允许包含特殊字符\n const invalidChars = /[<>:\"/\\\\|?*\\x00-\\x1F]/g;\n return !invalidChars.test(filename) && filename.length > 0 && filename.length <= 255;\n },\n};\n\n","/**\n * 数组和对象工具\n */\n\nexport const arrayUtils = {\n /**\n * 数组去重\n */\n unique<T>(array: T[]): T[] {\n return [...new Set(array)];\n },\n\n /**\n * 数组分组\n */\n groupBy<T>(array: T[], key: keyof T): Record<string, T[]> {\n return array.reduce(\n (groups, item) => {\n const groupKey = String(item[key]);\n const group = groups[groupKey] || [];\n group.push(item);\n groups[groupKey] = group;\n return groups;\n },\n {} as Record<string, T[]>\n );\n },\n\n /**\n * 数组分页\n */\n paginate<T>(\n array: T[],\n page: number,\n limit: number\n ): {\n data: T[];\n total: number;\n page: number;\n pages: number;\n hasNext: boolean;\n hasPrev: boolean;\n } {\n const total = array.length;\n const pages = Math.ceil(total / limit);\n const start = (page - 1) * limit;\n const end = start + limit;\n const data = array.slice(start, end);\n\n return {\n data,\n total,\n page,\n pages,\n hasNext: page < pages,\n hasPrev: page > 1,\n };\n },\n\n /**\n * 数组随机排序\n */\n shuffle<T>(array: T[]): T[] {\n const shuffled = [...array];\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j]!, shuffled[i]!];\n }\n return shuffled;\n },\n};\n\n","/**\n * 字符串工具\n */\n\nexport const stringUtils = {\n /**\n * 截断文本\n */\n truncate(text: string, length: number, suffix = '...'): string {\n if (text.length <= length) return text;\n return text.substring(0, length - suffix.length) + suffix;\n },\n\n /**\n * 首字母大写\n */\n capitalize(text: string): string {\n if (!text) return '';\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n },\n\n /**\n * 驼峰转下划线\n */\n camelToSnake(text: string): string {\n return text.replace(/[A-Z]/g, (letter) => '_' + (letter.toLowerCase()));\n },\n\n /**\n * 下划线转驼峰\n */\n snakeToCamel(text: string): string {\n return text.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n },\n\n /**\n * 生成随机字符串\n */\n generateRandom(length: number): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n },\n};\n\n","/**\n * 调试工具\n */\n\nimport { logger } from '../logger';\nimport { fileUtils } from './file';\n\nexport const debugUtils = {\n /**\n * 安全的 JSON 序列化\n */\n safeStringify(obj: any): string {\n try {\n return JSON.stringify(obj, null, 2);\n } catch (error) {\n return '[Circular Reference or Invalid JSON: ' + (error) + ']';\n }\n },\n\n /**\n * 性能计时器\n */\n createTimer(label?: string) {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now();\n return {\n end: () => {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now();\n const duration = end - start;\n const message = (label || 'Timer') + ': ' + (duration.toFixed(2)) + 'ms';\n logger.info(message);\n return duration;\n },\n };\n },\n\n /**\n * 内存使用情况(仅在 Node.js 环境)\n */\n getMemoryUsage(): Record<string, string> | null {\n if (typeof process !== 'undefined' && process.memoryUsage) {\n const usage = process.memoryUsage();\n return {\n rss: fileUtils.formatFileSize(usage.rss),\n heapTotal: fileUtils.formatFileSize(usage.heapTotal),\n heapUsed: fileUtils.formatFileSize(usage.heapUsed),\n external: fileUtils.formatFileSize(usage.external),\n };\n }\n return null;\n },\n};\n\n","/**\n * 错误处理工具\n */\n\nexport const errorUtils = {\n /**\n * 创建标准化的错误对象\n */\n createError(\n code: string,\n message: string,\n details?: any\n ): Error & { code: string; details?: any } {\n const error = new Error(message) as Error & { code: string; details?: any };\n error.code = code;\n if (details) {\n error.details = details;\n }\n return error;\n },\n\n /**\n * 安全的错误信息提取\n */\n extractErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n if (error && typeof error === 'object' && 'message' in error) {\n return String(error.message);\n }\n return 'Unknown error';\n },\n\n /**\n * 错误重试机制\n */\n async retry<T>(fn: () => Promise<T>, maxAttempts = 3, delay = 1000): Promise<T> {\n let lastError: Error;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n if (attempt === maxAttempts) {\n throw lastError;\n }\n\n // 指数退避延迟\n await new Promise((resolve) => setTimeout(resolve, delay * Math.pow(2, attempt - 1)));\n }\n }\n\n throw lastError!;\n },\n};\n\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n"]}