sa2kit 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/README.md +5 -5
  2. package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
  3. package/dist/AliyunOSSProvider-7IOT5U6M.js.map +1 -0
  4. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
  5. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs.map +1 -0
  6. package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
  7. package/dist/LocalStorageProvider-KJKRCKBS.js.map +1 -0
  8. package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
  9. package/dist/LocalStorageProvider-O22465NY.mjs.map +1 -0
  10. package/dist/chunk-2234T4A6.js +303 -0
  11. package/dist/chunk-2234T4A6.js.map +1 -0
  12. package/dist/chunk-36KGNXKW.js +16 -0
  13. package/dist/chunk-36KGNXKW.js.map +1 -0
  14. package/dist/chunk-375C7WL7.js +2695 -0
  15. package/dist/chunk-375C7WL7.js.map +1 -0
  16. package/dist/chunk-3J24Z4MB.js +991 -0
  17. package/dist/chunk-3J24Z4MB.js.map +1 -0
  18. package/dist/chunk-3QCATFQV.js +43 -0
  19. package/dist/chunk-3QCATFQV.js.map +1 -0
  20. package/dist/chunk-3R6JHA6D.js +120 -0
  21. package/dist/chunk-3R6JHA6D.js.map +1 -0
  22. package/dist/chunk-4OXKHV7J.js +43 -0
  23. package/dist/chunk-4OXKHV7J.js.map +1 -0
  24. package/dist/chunk-4PJM4752.js +4 -0
  25. package/dist/chunk-4PJM4752.js.map +1 -0
  26. package/dist/chunk-65JRVC3F.mjs +54 -0
  27. package/dist/chunk-65JRVC3F.mjs.map +1 -0
  28. package/dist/chunk-6HL54I2B.js +336 -0
  29. package/dist/chunk-6HL54I2B.js.map +1 -0
  30. package/dist/chunk-6V2MIQPF.mjs +77 -0
  31. package/dist/chunk-6V2MIQPF.mjs.map +1 -0
  32. package/dist/chunk-6YLCRWKM.mjs +8 -0
  33. package/dist/chunk-6YLCRWKM.mjs.map +1 -0
  34. package/dist/chunk-7CRU2Y5X.mjs +152 -0
  35. package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
  36. package/dist/chunk-7PMT4L4I.js +324 -0
  37. package/dist/chunk-7PMT4L4I.js.map +1 -0
  38. package/dist/chunk-7VVZHFEM.js +88 -0
  39. package/dist/chunk-7VVZHFEM.js.map +1 -0
  40. package/dist/chunk-AWHGIKTQ.js +56 -0
  41. package/dist/chunk-AWHGIKTQ.js.map +1 -0
  42. package/dist/chunk-B3GYF6TY.js +37 -0
  43. package/dist/chunk-B3GYF6TY.js.map +1 -0
  44. package/dist/chunk-BDBJFOXM.mjs +14 -0
  45. package/dist/chunk-BDBJFOXM.mjs.map +1 -0
  46. package/dist/chunk-BTW3SWQN.mjs +25 -0
  47. package/dist/chunk-BTW3SWQN.mjs.map +1 -0
  48. package/dist/chunk-CHYSSZ4E.mjs +734 -0
  49. package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
  50. package/dist/chunk-DO6QYAZV.mjs +298 -0
  51. package/dist/chunk-DO6QYAZV.mjs.map +1 -0
  52. package/dist/chunk-DTR53LQO.mjs +781 -0
  53. package/dist/chunk-DTR53LQO.mjs.map +1 -0
  54. package/dist/chunk-EI2S4XDG.mjs +89 -0
  55. package/dist/chunk-EI2S4XDG.mjs.map +1 -0
  56. package/dist/chunk-EOZHUI46.js +93 -0
  57. package/dist/chunk-EOZHUI46.js.map +1 -0
  58. package/dist/chunk-F2BZIU67.js +184 -0
  59. package/dist/chunk-F2BZIU67.js.map +1 -0
  60. package/dist/chunk-F2TEJSCP.js +756 -0
  61. package/dist/chunk-F2TEJSCP.js.map +1 -0
  62. package/dist/chunk-FCLS5R24.js +148 -0
  63. package/dist/chunk-FCLS5R24.js.map +1 -0
  64. package/dist/chunk-FUA6ZGMI.mjs +376 -0
  65. package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
  66. package/dist/chunk-FY2X3LYR.mjs +3 -0
  67. package/dist/chunk-FY2X3LYR.mjs.map +1 -0
  68. package/dist/chunk-GS4SAW25.mjs +116 -0
  69. package/dist/chunk-GS4SAW25.mjs.map +1 -0
  70. package/dist/chunk-H56ICWUO.js +321 -0
  71. package/dist/chunk-H56ICWUO.js.map +1 -0
  72. package/dist/chunk-HG34SGMN.mjs +546 -0
  73. package/dist/chunk-HG34SGMN.mjs.map +1 -0
  74. package/dist/chunk-HL4H2HF6.js +279 -0
  75. package/dist/chunk-HL4H2HF6.js.map +1 -0
  76. package/dist/chunk-IJIQUMAK.mjs +272 -0
  77. package/dist/chunk-IJIQUMAK.mjs.map +1 -0
  78. package/dist/chunk-KEZFTDZT.mjs +559 -0
  79. package/dist/chunk-KEZFTDZT.mjs.map +1 -0
  80. package/dist/chunk-KHOVC2KL.js +144 -0
  81. package/dist/chunk-KHOVC2KL.js.map +1 -0
  82. package/dist/chunk-KRBSTLKC.js +6154 -0
  83. package/dist/chunk-KRBSTLKC.js.map +1 -0
  84. package/dist/chunk-KVYHCGRY.js +2011 -0
  85. package/dist/chunk-KVYHCGRY.js.map +1 -0
  86. package/dist/chunk-LZ5YTMMP.mjs +41 -0
  87. package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
  88. package/dist/chunk-MJ6XJGAL.js +1551 -0
  89. package/dist/chunk-MJ6XJGAL.js.map +1 -0
  90. package/dist/chunk-MKLXCV4Z.mjs +1510 -0
  91. package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
  92. package/dist/chunk-MMDSZIXD.mjs +286 -0
  93. package/dist/chunk-MMDSZIXD.mjs.map +1 -0
  94. package/dist/chunk-N2O3OX5Y.mjs +243 -0
  95. package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
  96. package/dist/chunk-O6NNSPWD.mjs +35 -0
  97. package/dist/chunk-O6NNSPWD.mjs.map +1 -0
  98. package/dist/chunk-OIRZXSYM.js +80 -0
  99. package/dist/chunk-OIRZXSYM.js.map +1 -0
  100. package/dist/chunk-P7JQRNBJ.mjs +76 -0
  101. package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
  102. package/dist/chunk-PA4ELVGI.js +20 -0
  103. package/dist/chunk-PA4ELVGI.js.map +1 -0
  104. package/dist/chunk-PLIG5257.mjs +2613 -0
  105. package/dist/chunk-PLIG5257.mjs.map +1 -0
  106. package/dist/chunk-QIF4MG5V.mjs +283 -0
  107. package/dist/chunk-QIF4MG5V.mjs.map +1 -0
  108. package/dist/chunk-RHECN4E2.mjs +6077 -0
  109. package/dist/chunk-RHECN4E2.mjs.map +1 -0
  110. package/dist/chunk-RHHTZTIN.mjs +314 -0
  111. package/dist/chunk-RHHTZTIN.mjs.map +1 -0
  112. package/dist/chunk-RRQ2X26Z.js +106 -0
  113. package/dist/chunk-RRQ2X26Z.js.map +1 -0
  114. package/dist/chunk-RST2T54Y.js +836 -0
  115. package/dist/chunk-RST2T54Y.js.map +1 -0
  116. package/dist/chunk-RVNQI6BI.js +249 -0
  117. package/dist/chunk-RVNQI6BI.js.map +1 -0
  118. package/dist/chunk-S3K4LTRI.mjs +226 -0
  119. package/dist/chunk-S3K4LTRI.mjs.map +1 -0
  120. package/dist/chunk-SWZ5XNF6.js +158 -0
  121. package/dist/chunk-SWZ5XNF6.js.map +1 -0
  122. package/dist/chunk-TNJ6LYX7.mjs +18 -0
  123. package/dist/chunk-TNJ6LYX7.mjs.map +1 -0
  124. package/dist/chunk-U7HNBCBS.js +207 -0
  125. package/dist/chunk-U7HNBCBS.js.map +1 -0
  126. package/dist/chunk-UJS3YSD3.mjs +37 -0
  127. package/dist/chunk-UJS3YSD3.mjs.map +1 -0
  128. package/dist/chunk-UJUWDF7M.mjs +336 -0
  129. package/dist/chunk-UJUWDF7M.mjs.map +1 -0
  130. package/dist/chunk-UR5NENGE.js +78 -0
  131. package/dist/chunk-UR5NENGE.js.map +1 -0
  132. package/dist/chunk-V7HGBDCB.mjs +135 -0
  133. package/dist/chunk-V7HGBDCB.mjs.map +1 -0
  134. package/dist/chunk-V7RLIZMN.js +90 -0
  135. package/dist/chunk-V7RLIZMN.js.map +1 -0
  136. package/dist/chunk-VCKXK6V5.js +345 -0
  137. package/dist/chunk-VCKXK6V5.js.map +1 -0
  138. package/dist/chunk-VIEXDTNF.mjs +100 -0
  139. package/dist/chunk-VIEXDTNF.mjs.map +1 -0
  140. package/dist/chunk-VN2DULIA.js +579 -0
  141. package/dist/chunk-VN2DULIA.js.map +1 -0
  142. package/dist/chunk-VNWMRUY6.js +168 -0
  143. package/dist/chunk-VNWMRUY6.js.map +1 -0
  144. package/dist/chunk-VYK4M2D6.mjs +177 -0
  145. package/dist/chunk-VYK4M2D6.mjs.map +1 -0
  146. package/dist/chunk-WB4H6ZUW.mjs +86 -0
  147. package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
  148. package/dist/chunk-WM3AEJ2E.mjs +981 -0
  149. package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
  150. package/dist/chunk-X5GINUGI.mjs +162 -0
  151. package/dist/chunk-X5GINUGI.mjs.map +1 -0
  152. package/dist/chunk-XB7GUEHZ.mjs +82 -0
  153. package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
  154. package/dist/chunk-XE5RGZ3B.js +242 -0
  155. package/dist/chunk-XE5RGZ3B.js.map +1 -0
  156. package/dist/chunk-XNTIMVSL.mjs +193 -0
  157. package/dist/chunk-XNTIMVSL.mjs.map +1 -0
  158. package/dist/chunk-Y7WHUKJF.js +387 -0
  159. package/dist/chunk-Y7WHUKJF.js.map +1 -0
  160. package/dist/chunk-YIRPPMCN.mjs +1916 -0
  161. package/dist/chunk-YIRPPMCN.mjs.map +1 -0
  162. package/dist/chunk-YTGUIRRH.js +10 -0
  163. package/dist/chunk-YTGUIRRH.js.map +1 -0
  164. package/dist/chunk-Z2SNB5LJ.js +28 -0
  165. package/dist/chunk-Z2SNB5LJ.js.map +1 -0
  166. package/dist/chunk-ZOP7YIVX.js +552 -0
  167. package/dist/chunk-ZOP7YIVX.js.map +1 -0
  168. package/dist/chunk-ZUZLWHH5.mjs +146 -0
  169. package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
  170. package/dist/common/ai/llm/core/index.d.mts +70 -0
  171. package/dist/common/ai/llm/core/index.d.ts +70 -0
  172. package/dist/common/ai/llm/core/index.js +54 -0
  173. package/dist/common/ai/llm/core/index.mjs +5 -0
  174. package/dist/common/ai/llm/electron/index.d.mts +6 -0
  175. package/dist/common/ai/llm/electron/index.d.ts +6 -0
  176. package/dist/common/ai/llm/electron/index.js +67 -0
  177. package/dist/common/ai/llm/electron/index.mjs +10 -0
  178. package/dist/common/ai/llm/index.d.mts +3 -0
  179. package/dist/common/ai/llm/index.d.ts +3 -0
  180. package/dist/common/ai/llm/index.js +54 -0
  181. package/dist/common/ai/llm/index.mjs +5 -0
  182. package/dist/common/ai/llm/miniapp/index.d.mts +6 -0
  183. package/dist/common/ai/llm/miniapp/index.d.ts +6 -0
  184. package/dist/common/ai/llm/miniapp/index.js +59 -0
  185. package/dist/common/ai/llm/miniapp/index.mjs +6 -0
  186. package/dist/common/ai/llm/rn/index.d.mts +6 -0
  187. package/dist/common/ai/llm/rn/index.d.ts +6 -0
  188. package/dist/common/ai/llm/rn/index.js +59 -0
  189. package/dist/common/ai/llm/rn/index.mjs +6 -0
  190. package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
  191. package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
  192. package/dist/common/ai/llm/ui/electron/index.js +22 -0
  193. package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
  194. package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
  195. package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
  196. package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
  197. package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
  198. package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
  199. package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
  200. package/dist/common/ai/llm/ui/rn/index.js +14 -0
  201. package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
  202. package/dist/common/ai/llm/ui/web/index.d.mts +15 -0
  203. package/dist/common/ai/llm/ui/web/index.d.ts +15 -0
  204. package/dist/common/ai/llm/ui/web/index.js +21 -0
  205. package/dist/common/ai/llm/ui/web/index.mjs +8 -0
  206. package/dist/common/ai/llm/web/index.d.mts +6 -0
  207. package/dist/common/ai/llm/web/index.d.ts +6 -0
  208. package/dist/common/ai/llm/web/index.js +66 -0
  209. package/dist/common/ai/llm/web/index.mjs +9 -0
  210. package/dist/common/analytics/index.d.mts +2 -0
  211. package/dist/common/analytics/index.d.ts +2 -0
  212. package/dist/common/analytics/index.js +314 -0
  213. package/dist/common/analytics/index.mjs +5 -0
  214. package/dist/common/analytics/server/index.js +529 -0
  215. package/dist/common/analytics/server/index.js.map +1 -0
  216. package/dist/common/analytics/server/index.mjs +525 -0
  217. package/dist/common/analytics/server/index.mjs.map +1 -0
  218. package/dist/common/api/index.d.mts +3 -0
  219. package/dist/common/api/index.d.ts +3 -0
  220. package/dist/common/api/index.js +21 -0
  221. package/dist/common/api/index.mjs +4 -0
  222. package/dist/common/auth/client/index.d.mts +1 -31
  223. package/dist/common/auth/client/index.d.ts +1 -31
  224. package/dist/common/auth/client/index.js +2 -15
  225. package/dist/common/auth/client/index.mjs +1 -2
  226. package/dist/common/auth/components/index.d.mts +5 -239
  227. package/dist/common/auth/components/index.d.ts +5 -239
  228. package/dist/common/auth/components/index.js +878 -49
  229. package/dist/common/auth/components/index.js.map +1 -1
  230. package/dist/common/auth/components/index.mjs +871 -5
  231. package/dist/common/auth/components/index.mjs.map +1 -1
  232. package/dist/common/auth/hooks/index.d.mts +2 -29
  233. package/dist/common/auth/hooks/index.d.ts +2 -29
  234. package/dist/common/auth/hooks/index.js +2 -11
  235. package/dist/common/auth/hooks/index.mjs +1 -2
  236. package/dist/common/auth/index.d.mts +5 -9
  237. package/dist/common/auth/index.d.ts +5 -9
  238. package/dist/common/auth/index.js +5 -26
  239. package/dist/common/auth/index.mjs +3 -4
  240. package/dist/common/auth/rn/index.d.mts +1 -17
  241. package/dist/common/auth/rn/index.d.ts +1 -17
  242. package/dist/common/auth/rn/index.js +2 -34
  243. package/dist/common/auth/rn/index.js.map +1 -1
  244. package/dist/common/auth/rn/index.mjs +2 -31
  245. package/dist/common/auth/rn/index.mjs.map +1 -1
  246. package/dist/common/auth/server/index.d.mts +81 -2
  247. package/dist/common/auth/server/index.d.ts +81 -2
  248. package/dist/common/auth/server/index.js +128 -37
  249. package/dist/common/auth/server/index.js.map +1 -1
  250. package/dist/common/auth/server/index.mjs +124 -1
  251. package/dist/common/auth/server/index.mjs.map +1 -1
  252. package/dist/common/auth/services/index.js +12 -9
  253. package/dist/common/auth/services/index.js.map +1 -1
  254. package/dist/common/auth/services/index.mjs +10 -1
  255. package/dist/common/auth/services/index.mjs.map +1 -1
  256. package/dist/common/components/index.d.mts +4 -0
  257. package/dist/common/components/index.d.ts +4 -0
  258. package/dist/common/components/index.js +414 -0
  259. package/dist/common/components/index.mjs +9 -0
  260. package/dist/common/config/index.d.mts +1 -0
  261. package/dist/common/config/index.d.ts +1 -0
  262. package/dist/common/config/index.js +21 -0
  263. package/dist/common/config/index.mjs +4 -0
  264. package/dist/common/config/server/index.js +1177 -0
  265. package/dist/common/config/server/index.js.map +1 -0
  266. package/dist/common/config/server/index.mjs +1138 -0
  267. package/dist/common/config/server/index.mjs.map +1 -0
  268. package/dist/common/export/index.d.mts +2 -2
  269. package/dist/common/export/index.d.ts +2 -2
  270. package/dist/common/export/index.js +67 -67
  271. package/dist/common/export/index.mjs +3 -3
  272. package/dist/common/export/server/index.d.mts +2 -2
  273. package/dist/common/export/server/index.d.ts +2 -2
  274. package/dist/common/export/server/index.js +76 -48
  275. package/dist/common/export/server/index.mjs +3 -3
  276. package/dist/common/file/index.d.mts +2 -2
  277. package/dist/common/file/index.d.ts +2 -2
  278. package/dist/common/file/index.js +27 -27
  279. package/dist/common/file/index.mjs +5 -5
  280. package/dist/common/file/server/index.d.mts +2 -2
  281. package/dist/common/file/server/index.d.ts +2 -2
  282. package/dist/common/file/server/index.js +58 -50
  283. package/dist/common/file/server/index.mjs +8 -8
  284. package/dist/common/i18n/index.d.mts +2 -0
  285. package/dist/common/i18n/index.d.ts +2 -0
  286. package/dist/common/i18n/index.js +73 -0
  287. package/dist/common/i18n/index.mjs +4 -0
  288. package/dist/common/imageCrop/index.d.mts +2 -0
  289. package/dist/common/imageCrop/index.d.ts +2 -0
  290. package/dist/common/imageCrop/index.js +61 -0
  291. package/dist/common/imageCrop/index.mjs +4 -0
  292. package/dist/common/index.d.mts +17 -20
  293. package/dist/common/index.d.ts +17 -20
  294. package/dist/common/index.js +76 -70
  295. package/dist/common/index.mjs +27 -29
  296. package/dist/common/logger/index.d.mts +1 -1
  297. package/dist/common/logger/index.d.ts +1 -1
  298. package/dist/common/logger/index.js +6 -7
  299. package/dist/common/logger/index.mjs +1 -2
  300. package/dist/common/ossFile/index.d.mts +61 -0
  301. package/dist/common/ossFile/index.d.ts +61 -0
  302. package/dist/common/ossFile/index.js +96 -0
  303. package/dist/common/ossFile/index.mjs +7 -0
  304. package/dist/common/ossFile/server/index.d.mts +94 -0
  305. package/dist/common/ossFile/server/index.d.ts +94 -0
  306. package/dist/common/ossFile/server/index.js +221 -0
  307. package/dist/common/ossFile/server/index.mjs +12 -0
  308. package/dist/common/platform/index.js +8 -8
  309. package/dist/common/platform/index.mjs +4 -4
  310. package/dist/common/request/index.d.mts +1 -1
  311. package/dist/common/request/index.d.ts +1 -1
  312. package/dist/common/request/index.js +5 -7
  313. package/dist/common/request/index.mjs +2 -4
  314. package/dist/common/storage/index.d.mts +1 -1
  315. package/dist/common/storage/index.d.ts +1 -1
  316. package/dist/common/storage/index.js +17 -17
  317. package/dist/common/storage/index.mjs +5 -5
  318. package/dist/common/universalExport/index.d.mts +232 -0
  319. package/dist/common/universalExport/index.d.ts +232 -0
  320. package/dist/common/universalExport/index.js +178 -0
  321. package/dist/common/universalExport/index.mjs +5 -0
  322. package/dist/common/universalExport/server/index.d.mts +1189 -0
  323. package/dist/common/universalExport/server/index.d.ts +1189 -0
  324. package/dist/common/universalExport/server/index.js +151 -0
  325. package/dist/common/universalExport/server/index.mjs +6 -0
  326. package/dist/common/universalFile/index.d.mts +409 -0
  327. package/dist/common/universalFile/index.d.ts +409 -0
  328. package/dist/common/universalFile/index.js +1742 -0
  329. package/dist/common/universalFile/index.js.map +1 -0
  330. package/dist/common/universalFile/index.mjs +1497 -0
  331. package/dist/common/universalFile/index.mjs.map +1 -0
  332. package/dist/common/universalFile/server/index.d.mts +1064 -0
  333. package/dist/common/universalFile/server/index.d.ts +1064 -0
  334. package/dist/common/universalFile/server/index.js +311 -0
  335. package/dist/common/universalFile/server/index.mjs +10 -0
  336. package/dist/common/utils/index.d.mts +1 -1
  337. package/dist/common/utils/index.d.ts +1 -1
  338. package/dist/common/utils/index.js +11 -12
  339. package/dist/common/utils/index.mjs +2 -3
  340. package/dist/index-BRLygK4h.d.ts +67 -0
  341. package/dist/index-BWNK5mH2.d.ts +76 -0
  342. package/dist/index-Bd7cKF1j.d.mts +50 -0
  343. package/dist/index-BiCK6gg6.d.mts +210 -0
  344. package/dist/index-BiCK6gg6.d.ts +210 -0
  345. package/dist/index-C-P2yBTH.d.mts +76 -0
  346. package/dist/index-CT4K2z-O.d.ts +81 -0
  347. package/dist/index-D6RJTGce.d.mts +81 -0
  348. package/dist/index-DA7L9JlE.d.mts +159 -0
  349. package/dist/index-DRQxtCDw.d.ts +50 -0
  350. package/dist/index-DXVph21C.d.mts +201 -0
  351. package/dist/index-DXVph21C.d.ts +201 -0
  352. package/dist/index-DzyK789B.d.mts +67 -0
  353. package/dist/index-FVJZCEtm.d.mts +145 -0
  354. package/dist/index-FVJZCEtm.d.ts +145 -0
  355. package/dist/index-nD9vPCZT.d.ts +159 -0
  356. package/dist/index-nOmIv2BG.d.mts +559 -0
  357. package/dist/index-nOmIv2BG.d.ts +559 -0
  358. package/dist/path-Bzc7hj1N.d.ts +45 -0
  359. package/dist/path-DN_65vhO.d.mts +45 -0
  360. package/dist/utils-Dm3O1rAa.d.mts +366 -0
  361. package/dist/utils-Dm3O1rAa.d.ts +366 -0
  362. package/package.json +293 -348
  363. package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
  364. package/dist/AliyunOSSProvider-4GRL2FJB.js.map +0 -1
  365. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
  366. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs.map +0 -1
  367. package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
  368. package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
  369. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  370. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  371. package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
  372. package/dist/LocalStorageProvider-J5RHV37G.mjs.map +0 -1
  373. package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
  374. package/dist/LocalStorageProvider-PFA2DMIJ.js.map +0 -1
  375. package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
  376. package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
  377. package/dist/ai/llm/core/index.d.mts +0 -70
  378. package/dist/ai/llm/core/index.d.ts +0 -70
  379. package/dist/ai/llm/core/index.js +0 -54
  380. package/dist/ai/llm/core/index.mjs +0 -5
  381. package/dist/ai/llm/electron/index.d.mts +0 -6
  382. package/dist/ai/llm/electron/index.d.ts +0 -6
  383. package/dist/ai/llm/electron/index.js +0 -66
  384. package/dist/ai/llm/electron/index.mjs +0 -9
  385. package/dist/ai/llm/index.d.mts +0 -3
  386. package/dist/ai/llm/index.d.ts +0 -3
  387. package/dist/ai/llm/index.js +0 -54
  388. package/dist/ai/llm/index.mjs +0 -5
  389. package/dist/ai/llm/miniapp/index.d.mts +0 -6
  390. package/dist/ai/llm/miniapp/index.d.ts +0 -6
  391. package/dist/ai/llm/miniapp/index.js +0 -59
  392. package/dist/ai/llm/miniapp/index.mjs +0 -6
  393. package/dist/ai/llm/rn/index.d.mts +0 -6
  394. package/dist/ai/llm/rn/index.d.ts +0 -6
  395. package/dist/ai/llm/rn/index.js +0 -59
  396. package/dist/ai/llm/rn/index.mjs +0 -6
  397. package/dist/ai/llm/ui/electron/index.d.mts +0 -5
  398. package/dist/ai/llm/ui/electron/index.d.ts +0 -5
  399. package/dist/ai/llm/ui/electron/index.js +0 -21
  400. package/dist/ai/llm/ui/electron/index.mjs +0 -8
  401. package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
  402. package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
  403. package/dist/ai/llm/ui/miniapp/index.js +0 -14
  404. package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
  405. package/dist/ai/llm/ui/rn/index.d.mts +0 -9
  406. package/dist/ai/llm/ui/rn/index.d.ts +0 -9
  407. package/dist/ai/llm/ui/rn/index.js +0 -14
  408. package/dist/ai/llm/ui/rn/index.mjs +0 -5
  409. package/dist/ai/llm/ui/web/index.d.mts +0 -15
  410. package/dist/ai/llm/ui/web/index.d.ts +0 -15
  411. package/dist/ai/llm/ui/web/index.js +0 -20
  412. package/dist/ai/llm/ui/web/index.mjs +0 -7
  413. package/dist/ai/llm/web/index.d.mts +0 -6
  414. package/dist/ai/llm/web/index.d.ts +0 -6
  415. package/dist/ai/llm/web/index.js +0 -65
  416. package/dist/ai/llm/web/index.mjs +0 -8
  417. package/dist/analytics/index.d.mts +0 -2
  418. package/dist/analytics/index.d.ts +0 -2
  419. package/dist/analytics/index.js +0 -314
  420. package/dist/analytics/index.mjs +0 -5
  421. package/dist/analytics/server/index.js +0 -529
  422. package/dist/analytics/server/index.js.map +0 -1
  423. package/dist/analytics/server/index.mjs +0 -525
  424. package/dist/analytics/server/index.mjs.map +0 -1
  425. package/dist/api/index.d.mts +0 -3
  426. package/dist/api/index.d.ts +0 -3
  427. package/dist/api/index.js +0 -21
  428. package/dist/api/index.mjs +0 -4
  429. package/dist/audioDetection/index.d.mts +0 -449
  430. package/dist/audioDetection/index.d.ts +0 -449
  431. package/dist/audioDetection/index.js +0 -1244
  432. package/dist/audioDetection/index.js.map +0 -1
  433. package/dist/audioDetection/index.mjs +0 -1227
  434. package/dist/audioDetection/index.mjs.map +0 -1
  435. package/dist/auth/client/index.d.mts +0 -13
  436. package/dist/auth/client/index.d.ts +0 -13
  437. package/dist/auth/client/index.js +0 -26
  438. package/dist/auth/client/index.mjs +0 -5
  439. package/dist/auth/components/index.d.mts +0 -10
  440. package/dist/auth/components/index.d.ts +0 -10
  441. package/dist/auth/components/index.js +0 -70
  442. package/dist/auth/components/index.mjs +0 -9
  443. package/dist/auth/hooks/index.d.mts +0 -13
  444. package/dist/auth/hooks/index.d.ts +0 -13
  445. package/dist/auth/hooks/index.js +0 -28
  446. package/dist/auth/hooks/index.mjs +0 -7
  447. package/dist/auth/index.d.mts +0 -21
  448. package/dist/auth/index.d.ts +0 -21
  449. package/dist/auth/index.js +0 -112
  450. package/dist/auth/index.mjs +0 -11
  451. package/dist/auth/rn/index.d.mts +0 -3133
  452. package/dist/auth/rn/index.d.ts +0 -3133
  453. package/dist/auth/rn/index.js +0 -684
  454. package/dist/auth/rn/index.js.map +0 -1
  455. package/dist/auth/rn/index.mjs +0 -663
  456. package/dist/auth/rn/index.mjs.map +0 -1
  457. package/dist/auth/schema/index.d.mts +0 -4
  458. package/dist/auth/schema/index.d.ts +0 -4
  459. package/dist/auth/schema/index.js +0 -49
  460. package/dist/auth/schema/index.mjs +0 -4
  461. package/dist/auth/services/index.d.mts +0 -1
  462. package/dist/auth/services/index.d.ts +0 -1
  463. package/dist/auth/services/index.js +0 -17
  464. package/dist/auth/services/index.mjs +0 -4
  465. package/dist/base-api-client-BpmcQt4Q.d.ts +0 -103
  466. package/dist/base-api-client-CFIhZK4C.d.mts +0 -277
  467. package/dist/base-api-client-CFIhZK4C.d.ts +0 -277
  468. package/dist/base-api-client-DXLsq2yz.d.mts +0 -103
  469. package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
  470. package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
  471. package/dist/business/index.d.mts +0 -2
  472. package/dist/business/index.d.ts +0 -2
  473. package/dist/business/index.js +0 -581
  474. package/dist/business/index.js.map +0 -1
  475. package/dist/business/index.mjs +0 -575
  476. package/dist/business/index.mjs.map +0 -1
  477. package/dist/calendar/index.d.mts +0 -1325
  478. package/dist/calendar/index.d.ts +0 -1325
  479. package/dist/calendar/index.js +0 -5964
  480. package/dist/calendar/index.js.map +0 -1
  481. package/dist/calendar/index.mjs +0 -5878
  482. package/dist/calendar/index.mjs.map +0 -1
  483. package/dist/calendar/routes/index.d.mts +0 -191
  484. package/dist/calendar/routes/index.d.ts +0 -191
  485. package/dist/calendar/routes/index.js +0 -844
  486. package/dist/calendar/routes/index.js.map +0 -1
  487. package/dist/calendar/routes/index.mjs +0 -826
  488. package/dist/calendar/routes/index.mjs.map +0 -1
  489. package/dist/chunk-25OFOKNF.js +0 -171
  490. package/dist/chunk-25OFOKNF.js.map +0 -1
  491. package/dist/chunk-2Y7BKFKZ.js +0 -37
  492. package/dist/chunk-2Y7BKFKZ.js.map +0 -1
  493. package/dist/chunk-3DXPQ4YV.mjs +0 -165
  494. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  495. package/dist/chunk-3FRAIS4T.mjs +0 -35
  496. package/dist/chunk-3FRAIS4T.mjs.map +0 -1
  497. package/dist/chunk-3NHAT7D4.mjs +0 -361
  498. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  499. package/dist/chunk-3Z43XGA4.mjs +0 -54
  500. package/dist/chunk-3Z43XGA4.mjs.map +0 -1
  501. package/dist/chunk-4FDUURSD.js +0 -22
  502. package/dist/chunk-4FDUURSD.js.map +0 -1
  503. package/dist/chunk-4WBCWJSN.js +0 -836
  504. package/dist/chunk-4WBCWJSN.js.map +0 -1
  505. package/dist/chunk-5GBDDXYL.mjs +0 -23
  506. package/dist/chunk-5GBDDXYL.mjs.map +0 -1
  507. package/dist/chunk-5USIS3UM.js +0 -4
  508. package/dist/chunk-5USIS3UM.js.map +0 -1
  509. package/dist/chunk-7E3J7VAD.mjs +0 -3
  510. package/dist/chunk-7E3J7VAD.mjs.map +0 -1
  511. package/dist/chunk-ACUFEDVQ.js +0 -345
  512. package/dist/chunk-ACUFEDVQ.js.map +0 -1
  513. package/dist/chunk-AQPU2AXH.js +0 -756
  514. package/dist/chunk-AQPU2AXH.js.map +0 -1
  515. package/dist/chunk-ATUCZXJY.js +0 -80
  516. package/dist/chunk-ATUCZXJY.js.map +0 -1
  517. package/dist/chunk-B3CZ3HXJ.mjs +0 -126
  518. package/dist/chunk-B3CZ3HXJ.mjs.map +0 -1
  519. package/dist/chunk-BCE6RUZV.js +0 -2695
  520. package/dist/chunk-BCE6RUZV.js.map +0 -1
  521. package/dist/chunk-BIHYZA67.mjs +0 -2613
  522. package/dist/chunk-BIHYZA67.mjs.map +0 -1
  523. package/dist/chunk-C6KV7VTZ.mjs +0 -152
  524. package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
  525. package/dist/chunk-CAYOQDBR.js +0 -78
  526. package/dist/chunk-CAYOQDBR.js.map +0 -1
  527. package/dist/chunk-CIVO4R6N.mjs +0 -37
  528. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  529. package/dist/chunk-CX2GHCAI.mjs +0 -217
  530. package/dist/chunk-CX2GHCAI.mjs.map +0 -1
  531. package/dist/chunk-DIF5VRL3.mjs +0 -73
  532. package/dist/chunk-DIF5VRL3.mjs.map +0 -1
  533. package/dist/chunk-FCEBAWN6.js +0 -18
  534. package/dist/chunk-FCEBAWN6.js.map +0 -1
  535. package/dist/chunk-FHIE5MTC.mjs +0 -541
  536. package/dist/chunk-FHIE5MTC.mjs.map +0 -1
  537. package/dist/chunk-FHLTPXAR.js +0 -56
  538. package/dist/chunk-FHLTPXAR.js.map +0 -1
  539. package/dist/chunk-FIUBFREP.mjs +0 -298
  540. package/dist/chunk-FIUBFREP.mjs.map +0 -1
  541. package/dist/chunk-FOQEQWX5.js +0 -4
  542. package/dist/chunk-FOQEQWX5.js.map +0 -1
  543. package/dist/chunk-FXQOXLDE.js +0 -120
  544. package/dist/chunk-FXQOXLDE.js.map +0 -1
  545. package/dist/chunk-G4NFB2QA.mjs +0 -212
  546. package/dist/chunk-G4NFB2QA.mjs.map +0 -1
  547. package/dist/chunk-G5HJGXGC.mjs +0 -39
  548. package/dist/chunk-G5HJGXGC.mjs.map +0 -1
  549. package/dist/chunk-G6HXNQ2U.mjs +0 -336
  550. package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
  551. package/dist/chunk-G6NSKJMH.js +0 -106
  552. package/dist/chunk-G6NSKJMH.js.map +0 -1
  553. package/dist/chunk-G7UBMCUT.mjs +0 -41
  554. package/dist/chunk-G7UBMCUT.mjs.map +0 -1
  555. package/dist/chunk-GQZHGSRR.js +0 -44
  556. package/dist/chunk-GQZHGSRR.js.map +0 -1
  557. package/dist/chunk-GS7XLKET.js +0 -41
  558. package/dist/chunk-GS7XLKET.js.map +0 -1
  559. package/dist/chunk-GWNBVGDT.mjs +0 -1232
  560. package/dist/chunk-GWNBVGDT.mjs.map +0 -1
  561. package/dist/chunk-HDMIOOZY.mjs +0 -546
  562. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  563. package/dist/chunk-HJ6MH7J7.js +0 -552
  564. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  565. package/dist/chunk-HJZHQW5R.mjs +0 -146
  566. package/dist/chunk-HJZHQW5R.mjs.map +0 -1
  567. package/dist/chunk-I5ZPEDNR.mjs +0 -734
  568. package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
  569. package/dist/chunk-IBWDBBX5.mjs +0 -16
  570. package/dist/chunk-IBWDBBX5.mjs.map +0 -1
  571. package/dist/chunk-J77KR2EV.mjs +0 -193
  572. package/dist/chunk-J77KR2EV.mjs.map +0 -1
  573. package/dist/chunk-KH6RQ4J5.js +0 -28
  574. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  575. package/dist/chunk-KQ643L7Z.js +0 -144
  576. package/dist/chunk-KQ643L7Z.js.map +0 -1
  577. package/dist/chunk-LFB5EIIM.mjs +0 -31
  578. package/dist/chunk-LFB5EIIM.mjs.map +0 -1
  579. package/dist/chunk-LHJKLUM7.mjs +0 -18
  580. package/dist/chunk-LHJKLUM7.mjs.map +0 -1
  581. package/dist/chunk-MBANGIG3.mjs +0 -781
  582. package/dist/chunk-MBANGIG3.mjs.map +0 -1
  583. package/dist/chunk-MWSAH7ZG.mjs +0 -42
  584. package/dist/chunk-MWSAH7ZG.mjs.map +0 -1
  585. package/dist/chunk-MZOGYD4N.mjs +0 -186
  586. package/dist/chunk-MZOGYD4N.mjs.map +0 -1
  587. package/dist/chunk-NCRP2YHY.mjs +0 -1598
  588. package/dist/chunk-NCRP2YHY.mjs.map +0 -1
  589. package/dist/chunk-NDGHXVGS.js +0 -25
  590. package/dist/chunk-NDGHXVGS.js.map +0 -1
  591. package/dist/chunk-NDPO5OMC.js +0 -563
  592. package/dist/chunk-NDPO5OMC.js.map +0 -1
  593. package/dist/chunk-PBI7FKMB.js +0 -43
  594. package/dist/chunk-PBI7FKMB.js.map +0 -1
  595. package/dist/chunk-Q5EDCKQA.js +0 -336
  596. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  597. package/dist/chunk-Q5VFBPMG.mjs +0 -76
  598. package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
  599. package/dist/chunk-QDUBO567.js +0 -1148
  600. package/dist/chunk-QDUBO567.js.map +0 -1
  601. package/dist/chunk-QP5N3ER6.js +0 -18
  602. package/dist/chunk-QP5N3ER6.js.map +0 -1
  603. package/dist/chunk-QXAOXBVB.mjs +0 -135
  604. package/dist/chunk-QXAOXBVB.mjs.map +0 -1
  605. package/dist/chunk-R2DXTE2L.js +0 -249
  606. package/dist/chunk-R2DXTE2L.js.map +0 -1
  607. package/dist/chunk-RJP2BRJD.mjs +0 -6077
  608. package/dist/chunk-RJP2BRJD.mjs.map +0 -1
  609. package/dist/chunk-RTD2WHQQ.mjs +0 -16
  610. package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
  611. package/dist/chunk-RWCD2CAD.mjs +0 -1132
  612. package/dist/chunk-RWCD2CAD.mjs.map +0 -1
  613. package/dist/chunk-S37OK2QG.js +0 -216
  614. package/dist/chunk-S37OK2QG.js.map +0 -1
  615. package/dist/chunk-S3PUP7N4.js +0 -20
  616. package/dist/chunk-S3PUP7N4.js.map +0 -1
  617. package/dist/chunk-S6YSGVWD.js +0 -224
  618. package/dist/chunk-S6YSGVWD.js.map +0 -1
  619. package/dist/chunk-S732H246.js +0 -6154
  620. package/dist/chunk-S732H246.js.map +0 -1
  621. package/dist/chunk-SFDJNKWC.js +0 -22
  622. package/dist/chunk-SFDJNKWC.js.map +0 -1
  623. package/dist/chunk-SKFEJPMJ.mjs +0 -226
  624. package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
  625. package/dist/chunk-SLKOEYFH.js +0 -303
  626. package/dist/chunk-SLKOEYFH.js.map +0 -1
  627. package/dist/chunk-TC5YU6A4.mjs +0 -243
  628. package/dist/chunk-TC5YU6A4.mjs.map +0 -1
  629. package/dist/chunk-TXMX6PZR.js +0 -190
  630. package/dist/chunk-TXMX6PZR.js.map +0 -1
  631. package/dist/chunk-UCOE6SET.js +0 -148
  632. package/dist/chunk-UCOE6SET.js.map +0 -1
  633. package/dist/chunk-UIYKZ73N.js +0 -36
  634. package/dist/chunk-UIYKZ73N.js.map +0 -1
  635. package/dist/chunk-V7EVKD5G.mjs +0 -116
  636. package/dist/chunk-V7EVKD5G.mjs.map +0 -1
  637. package/dist/chunk-VHN7PF5I.js +0 -20
  638. package/dist/chunk-VHN7PF5I.js.map +0 -1
  639. package/dist/chunk-VMTEDX5H.js +0 -1275
  640. package/dist/chunk-VMTEDX5H.js.map +0 -1
  641. package/dist/chunk-VRN76M56.mjs +0 -3
  642. package/dist/chunk-VRN76M56.mjs.map +0 -1
  643. package/dist/chunk-VXFUXZN5.mjs +0 -20
  644. package/dist/chunk-VXFUXZN5.mjs.map +0 -1
  645. package/dist/chunk-WEEXCPSE.mjs +0 -86
  646. package/dist/chunk-WEEXCPSE.mjs.map +0 -1
  647. package/dist/chunk-WW4GE6CZ.js +0 -1647
  648. package/dist/chunk-WW4GE6CZ.js.map +0 -1
  649. package/dist/chunk-WZDTNDYR.js +0 -207
  650. package/dist/chunk-WZDTNDYR.js.map +0 -1
  651. package/dist/chunk-XBZIS3MV.mjs +0 -13
  652. package/dist/chunk-XBZIS3MV.mjs.map +0 -1
  653. package/dist/chunk-XFOZ56FB.mjs +0 -20
  654. package/dist/chunk-XFOZ56FB.mjs.map +0 -1
  655. package/dist/chunk-XJ7ZAGC5.js +0 -88
  656. package/dist/chunk-XJ7ZAGC5.js.map +0 -1
  657. package/dist/chunk-XUS5ACKR.mjs +0 -100
  658. package/dist/chunk-XUS5ACKR.mjs.map +0 -1
  659. package/dist/chunk-YOTQG4NP.mjs +0 -314
  660. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  661. package/dist/chunk-Z23HAXHL.js +0 -136
  662. package/dist/chunk-Z23HAXHL.js.map +0 -1
  663. package/dist/chunk-ZGVB35L2.mjs +0 -25
  664. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  665. package/dist/chunk-ZLYPALF3.js +0 -242
  666. package/dist/chunk-ZLYPALF3.js.map +0 -1
  667. package/dist/chunk-ZM2SZJTZ.js +0 -158
  668. package/dist/chunk-ZM2SZJTZ.js.map +0 -1
  669. package/dist/chunk-ZRAW3HXA.js +0 -43
  670. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  671. package/dist/chunk-ZWQJSZEY.js +0 -371
  672. package/dist/chunk-ZWQJSZEY.js.map +0 -1
  673. package/dist/components/index.d.mts +0 -405
  674. package/dist/components/index.d.ts +0 -405
  675. package/dist/components/index.js +0 -2516
  676. package/dist/components/index.js.map +0 -1
  677. package/dist/components/index.mjs +0 -2396
  678. package/dist/components/index.mjs.map +0 -1
  679. package/dist/config/index.d.mts +0 -1
  680. package/dist/config/index.d.ts +0 -1
  681. package/dist/config/index.js +0 -21
  682. package/dist/config/index.mjs +0 -4
  683. package/dist/config/server/index.js +0 -1177
  684. package/dist/config/server/index.js.map +0 -1
  685. package/dist/config/server/index.mjs +0 -1138
  686. package/dist/config/server/index.mjs.map +0 -1
  687. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  688. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  689. package/dist/festivalCard/index.d.mts +0 -76
  690. package/dist/festivalCard/index.d.ts +0 -76
  691. package/dist/festivalCard/index.js +0 -1492
  692. package/dist/festivalCard/index.js.map +0 -1
  693. package/dist/festivalCard/index.mjs +0 -1475
  694. package/dist/festivalCard/index.mjs.map +0 -1
  695. package/dist/festivalCard/routes/index.d.mts +0 -42
  696. package/dist/festivalCard/routes/index.d.ts +0 -42
  697. package/dist/festivalCard/routes/index.js +0 -361
  698. package/dist/festivalCard/routes/index.js.map +0 -1
  699. package/dist/festivalCard/routes/index.mjs +0 -356
  700. package/dist/festivalCard/routes/index.mjs.map +0 -1
  701. package/dist/festivalCard/server/index.d.mts +0 -120
  702. package/dist/festivalCard/server/index.d.ts +0 -120
  703. package/dist/festivalCard/server/index.js +0 -272
  704. package/dist/festivalCard/server/index.js.map +0 -1
  705. package/dist/festivalCard/server/index.mjs +0 -265
  706. package/dist/festivalCard/server/index.mjs.map +0 -1
  707. package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
  708. package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
  709. package/dist/i18n/index.d.mts +0 -2
  710. package/dist/i18n/index.d.ts +0 -2
  711. package/dist/i18n/index.js +0 -73
  712. package/dist/i18n/index.mjs +0 -4
  713. package/dist/imageCrop/index.d.mts +0 -165
  714. package/dist/imageCrop/index.d.ts +0 -165
  715. package/dist/imageCrop/index.js +0 -560
  716. package/dist/imageCrop/index.js.map +0 -1
  717. package/dist/imageCrop/index.mjs +0 -541
  718. package/dist/imageCrop/index.mjs.map +0 -1
  719. package/dist/index-2G9Dxjvt.d.ts +0 -81
  720. package/dist/index-BcjDRcKp.d.mts +0 -40
  721. package/dist/index-Bjem5rWn.d.mts +0 -17
  722. package/dist/index-BlpXrrTy.d.ts +0 -40
  723. package/dist/index-C5U-2hJq.d.ts +0 -23
  724. package/dist/index-CYuUB8aF.d.mts +0 -67
  725. package/dist/index-CifSBBP2.d.ts +0 -17
  726. package/dist/index-D0K4ehme.d.mts +0 -20
  727. package/dist/index-DLnfKN-a.d.mts +0 -23
  728. package/dist/index-DSel44Ke.d.mts +0 -93
  729. package/dist/index-DSel44Ke.d.ts +0 -93
  730. package/dist/index-DZ5iJtNO.d.mts +0 -102
  731. package/dist/index-DZ5iJtNO.d.ts +0 -102
  732. package/dist/index-Da7qdkgW.d.ts +0 -20
  733. package/dist/index-DrPcMJPc.d.mts +0 -250
  734. package/dist/index-DrPcMJPc.d.ts +0 -250
  735. package/dist/index-WrR57hKT.d.ts +0 -67
  736. package/dist/index-oLUvfqT8.d.ts +0 -20
  737. package/dist/index-pe38RDgC.d.mts +0 -20
  738. package/dist/index-qcOvRVuN.d.mts +0 -81
  739. package/dist/index.d.mts +0 -11590
  740. package/dist/index.d.ts +0 -11590
  741. package/dist/index.js +0 -17679
  742. package/dist/index.js.map +0 -1
  743. package/dist/index.mjs +0 -17403
  744. package/dist/index.mjs.map +0 -1
  745. package/dist/logger/index.d.mts +0 -125
  746. package/dist/logger/index.d.ts +0 -125
  747. package/dist/logger/index.js +0 -29
  748. package/dist/logger/index.mjs +0 -4
  749. package/dist/mikuContest/ui/web/index.d.mts +0 -2
  750. package/dist/mikuContest/ui/web/index.d.ts +0 -2
  751. package/dist/mikuContest/ui/web/index.js +0 -353
  752. package/dist/mikuContest/ui/web/index.js.map +0 -1
  753. package/dist/mikuContest/ui/web/index.mjs +0 -343
  754. package/dist/mikuContest/ui/web/index.mjs.map +0 -1
  755. package/dist/mikuFireworks3D/index.d.mts +0 -268
  756. package/dist/mikuFireworks3D/index.d.ts +0 -268
  757. package/dist/mikuFireworks3D/index.js +0 -1267
  758. package/dist/mikuFireworks3D/index.js.map +0 -1
  759. package/dist/mikuFireworks3D/index.mjs +0 -1228
  760. package/dist/mikuFireworks3D/index.mjs.map +0 -1
  761. package/dist/mikuFusionGame/index.d.mts +0 -117
  762. package/dist/mikuFusionGame/index.d.ts +0 -117
  763. package/dist/mikuFusionGame/index.js +0 -1208
  764. package/dist/mikuFusionGame/index.js.map +0 -1
  765. package/dist/mikuFusionGame/index.mjs +0 -1195
  766. package/dist/mikuFusionGame/index.mjs.map +0 -1
  767. package/dist/mmd/admin/index.d.mts +0 -487
  768. package/dist/mmd/admin/index.d.ts +0 -487
  769. package/dist/mmd/admin/index.js +0 -1058
  770. package/dist/mmd/admin/index.js.map +0 -1
  771. package/dist/mmd/admin/index.mjs +0 -1027
  772. package/dist/mmd/admin/index.mjs.map +0 -1
  773. package/dist/mmd/index.d.mts +0 -2467
  774. package/dist/mmd/index.d.ts +0 -2467
  775. package/dist/mmd/index.js +0 -10119
  776. package/dist/mmd/index.js.map +0 -1
  777. package/dist/mmd/index.mjs +0 -10028
  778. package/dist/mmd/index.mjs.map +0 -1
  779. package/dist/mmd/server/index.d.mts +0 -139
  780. package/dist/mmd/server/index.d.ts +0 -139
  781. package/dist/mmd/server/index.js +0 -424
  782. package/dist/mmd/server/index.js.map +0 -1
  783. package/dist/mmd/server/index.mjs +0 -404
  784. package/dist/mmd/server/index.mjs.map +0 -1
  785. package/dist/music/index.d.mts +0 -74
  786. package/dist/music/index.d.ts +0 -74
  787. package/dist/music/index.js +0 -830
  788. package/dist/music/index.js.map +0 -1
  789. package/dist/music/index.mjs +0 -809
  790. package/dist/music/index.mjs.map +0 -1
  791. package/dist/music/server/index.d.mts +0 -1
  792. package/dist/music/server/index.d.ts +0 -1
  793. package/dist/music/server/index.js +0 -194
  794. package/dist/music/server/index.js.map +0 -1
  795. package/dist/music/server/index.mjs +0 -182
  796. package/dist/music/server/index.mjs.map +0 -1
  797. package/dist/navigation/index.d.mts +0 -93
  798. package/dist/navigation/index.d.ts +0 -93
  799. package/dist/navigation/index.js +0 -453
  800. package/dist/navigation/index.js.map +0 -1
  801. package/dist/navigation/index.mjs +0 -443
  802. package/dist/navigation/index.mjs.map +0 -1
  803. package/dist/ossFile/index.d.mts +0 -61
  804. package/dist/ossFile/index.d.ts +0 -61
  805. package/dist/ossFile/index.js +0 -96
  806. package/dist/ossFile/index.js.map +0 -1
  807. package/dist/ossFile/index.mjs +0 -7
  808. package/dist/ossFile/index.mjs.map +0 -1
  809. package/dist/ossFile/server/index.d.mts +0 -94
  810. package/dist/ossFile/server/index.d.ts +0 -94
  811. package/dist/ossFile/server/index.js +0 -213
  812. package/dist/ossFile/server/index.js.map +0 -1
  813. package/dist/ossFile/server/index.mjs +0 -12
  814. package/dist/ossFile/server/index.mjs.map +0 -1
  815. package/dist/path-DkaHQSyW.d.mts +0 -41
  816. package/dist/path-qjVnH8qU.d.ts +0 -41
  817. package/dist/portfolio/index.d.mts +0 -66
  818. package/dist/portfolio/index.d.ts +0 -66
  819. package/dist/portfolio/index.js +0 -736
  820. package/dist/portfolio/index.js.map +0 -1
  821. package/dist/portfolio/index.mjs +0 -724
  822. package/dist/portfolio/index.mjs.map +0 -1
  823. package/dist/qqbot/server/index.d.mts +0 -216
  824. package/dist/qqbot/server/index.d.ts +0 -216
  825. package/dist/qqbot/server/index.js +0 -394
  826. package/dist/qqbot/server/index.js.map +0 -1
  827. package/dist/qqbot/server/index.mjs +0 -385
  828. package/dist/qqbot/server/index.mjs.map +0 -1
  829. package/dist/qqbot/ui/web/index.d.mts +0 -10
  830. package/dist/qqbot/ui/web/index.d.ts +0 -10
  831. package/dist/qqbot/ui/web/index.js +0 -105
  832. package/dist/qqbot/ui/web/index.js.map +0 -1
  833. package/dist/qqbot/ui/web/index.mjs +0 -99
  834. package/dist/qqbot/ui/web/index.mjs.map +0 -1
  835. package/dist/request/index.d.mts +0 -59
  836. package/dist/request/index.d.ts +0 -59
  837. package/dist/request/index.js +0 -23
  838. package/dist/request/index.js.map +0 -1
  839. package/dist/request/index.mjs +0 -6
  840. package/dist/request/index.mjs.map +0 -1
  841. package/dist/screenReceiver/index.d.mts +0 -86
  842. package/dist/screenReceiver/index.d.ts +0 -86
  843. package/dist/screenReceiver/index.js +0 -281
  844. package/dist/screenReceiver/index.js.map +0 -1
  845. package/dist/screenReceiver/index.mjs +0 -273
  846. package/dist/screenReceiver/index.mjs.map +0 -1
  847. package/dist/session-BCXvGCnm.d.mts +0 -81
  848. package/dist/session-BCXvGCnm.d.ts +0 -81
  849. package/dist/storage/index.d.mts +0 -136
  850. package/dist/storage/index.d.ts +0 -136
  851. package/dist/storage/index.js +0 -48
  852. package/dist/storage/index.js.map +0 -1
  853. package/dist/storage/index.mjs +0 -7
  854. package/dist/storage/index.mjs.map +0 -1
  855. package/dist/testYourself/admin/index.d.mts +0 -58
  856. package/dist/testYourself/admin/index.d.ts +0 -58
  857. package/dist/testYourself/admin/index.js +0 -1009
  858. package/dist/testYourself/admin/index.js.map +0 -1
  859. package/dist/testYourself/admin/index.mjs +0 -1002
  860. package/dist/testYourself/admin/index.mjs.map +0 -1
  861. package/dist/testYourself/index.d.mts +0 -53
  862. package/dist/testYourself/index.d.ts +0 -53
  863. package/dist/testYourself/index.js +0 -2551
  864. package/dist/testYourself/index.js.map +0 -1
  865. package/dist/testYourself/index.mjs +0 -2531
  866. package/dist/testYourself/index.mjs.map +0 -1
  867. package/dist/testYourself/server/index.d.mts +0 -1029
  868. package/dist/testYourself/server/index.d.ts +0 -1029
  869. package/dist/testYourself/server/index.js +0 -825
  870. package/dist/testYourself/server/index.js.map +0 -1
  871. package/dist/testYourself/server/index.mjs +0 -816
  872. package/dist/testYourself/server/index.mjs.map +0 -1
  873. package/dist/types-3ujSNAXb.d.mts +0 -286
  874. package/dist/types-3ujSNAXb.d.ts +0 -286
  875. package/dist/types-B6B210gX.d.mts +0 -270
  876. package/dist/types-B6B210gX.d.ts +0 -270
  877. package/dist/types-Bdnte5EN.d.mts +0 -292
  878. package/dist/types-C_W_CoUD.d.ts +0 -99
  879. package/dist/types-Cs0CLvrH.d.mts +0 -70
  880. package/dist/types-Cs0CLvrH.d.ts +0 -70
  881. package/dist/types-DCRvasyH.d.mts +0 -99
  882. package/dist/types-HorDyIRv.d.mts +0 -303
  883. package/dist/types-HorDyIRv.d.ts +0 -303
  884. package/dist/types-_rFX1atk.d.ts +0 -292
  885. package/dist/types.legacy-J-j-_ig_.d.mts +0 -25
  886. package/dist/types.legacy-J-j-_ig_.d.ts +0 -25
  887. package/dist/universalExport/index.d.mts +0 -312
  888. package/dist/universalExport/index.d.ts +0 -312
  889. package/dist/universalExport/index.js +0 -178
  890. package/dist/universalExport/index.js.map +0 -1
  891. package/dist/universalExport/index.mjs +0 -5
  892. package/dist/universalExport/index.mjs.map +0 -1
  893. package/dist/universalExport/server/index.d.mts +0 -1270
  894. package/dist/universalExport/server/index.d.ts +0 -1270
  895. package/dist/universalExport/server/index.js +0 -123
  896. package/dist/universalExport/server/index.js.map +0 -1
  897. package/dist/universalExport/server/index.mjs +0 -6
  898. package/dist/universalExport/server/index.mjs.map +0 -1
  899. package/dist/universalFile/index.d.mts +0 -409
  900. package/dist/universalFile/index.d.ts +0 -409
  901. package/dist/universalFile/index.js +0 -1742
  902. package/dist/universalFile/index.js.map +0 -1
  903. package/dist/universalFile/index.mjs +0 -1497
  904. package/dist/universalFile/index.mjs.map +0 -1
  905. package/dist/universalFile/server/index.d.mts +0 -1064
  906. package/dist/universalFile/server/index.d.ts +0 -1064
  907. package/dist/universalFile/server/index.js +0 -311
  908. package/dist/universalFile/server/index.js.map +0 -1
  909. package/dist/universalFile/server/index.mjs +0 -10
  910. package/dist/universalFile/server/index.mjs.map +0 -1
  911. package/dist/utils/index.d.mts +0 -192
  912. package/dist/utils/index.d.ts +0 -192
  913. package/dist/utils/index.js +0 -46
  914. package/dist/utils/index.js.map +0 -1
  915. package/dist/utils/index.mjs +0 -5
  916. package/dist/utils/index.mjs.map +0 -1
  917. package/dist/vocaloidBooth/index.d.mts +0 -64
  918. package/dist/vocaloidBooth/index.d.ts +0 -64
  919. package/dist/vocaloidBooth/index.js +0 -376
  920. package/dist/vocaloidBooth/index.js.map +0 -1
  921. package/dist/vocaloidBooth/index.mjs +0 -362
  922. package/dist/vocaloidBooth/index.mjs.map +0 -1
  923. package/dist/vocaloidBooth/server/index.d.mts +0 -111
  924. package/dist/vocaloidBooth/server/index.d.ts +0 -111
  925. package/dist/vocaloidBooth/server/index.js +0 -247
  926. package/dist/vocaloidBooth/server/index.js.map +0 -1
  927. package/dist/vocaloidBooth/server/index.mjs +0 -237
  928. package/dist/vocaloidBooth/server/index.mjs.map +0 -1
  929. package/dist/vocaloidBooth/web/index.d.mts +0 -3
  930. package/dist/vocaloidBooth/web/index.d.ts +0 -3
  931. package/dist/vocaloidBooth/web/index.js +0 -376
  932. package/dist/vocaloidBooth/web/index.js.map +0 -1
  933. package/dist/vocaloidBooth/web/index.mjs +0 -362
  934. package/dist/vocaloidBooth/web/index.mjs.map +0 -1
  935. /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
  936. /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
  937. /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
  938. /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
  939. /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
  940. /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
  941. /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
  942. /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
  943. /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
  944. /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
  945. /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
  946. /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
  947. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
  948. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
  949. /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
  950. /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
  951. /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
  952. /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
  953. /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
  954. /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
  955. /package/dist/{analytics → common/analytics}/index.js.map +0 -0
  956. /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
  957. /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
  958. /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
  959. /package/dist/{api → common/api}/index.js.map +0 -0
  960. /package/dist/{api → common/api}/index.mjs.map +0 -0
  961. /package/dist/{auth/client → common/components}/index.js.map +0 -0
  962. /package/dist/{auth/client → common/components}/index.mjs.map +0 -0
  963. /package/dist/{auth/components → common/config}/index.js.map +0 -0
  964. /package/dist/{auth/components → common/config}/index.mjs.map +0 -0
  965. /package/dist/{config → common/config}/server/index.d.mts +0 -0
  966. /package/dist/{config → common/config}/server/index.d.ts +0 -0
  967. /package/dist/{auth/hooks → common/i18n}/index.js.map +0 -0
  968. /package/dist/{auth/hooks → common/i18n}/index.mjs.map +0 -0
  969. /package/dist/{auth → common/imageCrop}/index.js.map +0 -0
  970. /package/dist/{auth → common/imageCrop}/index.mjs.map +0 -0
  971. /package/dist/{auth/schema → common/ossFile}/index.js.map +0 -0
  972. /package/dist/{auth/schema → common/ossFile}/index.mjs.map +0 -0
  973. /package/dist/{auth/services → common/ossFile/server}/index.js.map +0 -0
  974. /package/dist/{auth/services → common/ossFile/server}/index.mjs.map +0 -0
  975. /package/dist/{config → common/universalExport}/index.js.map +0 -0
  976. /package/dist/{config → common/universalExport}/index.mjs.map +0 -0
  977. /package/dist/{i18n → common/universalExport/server}/index.js.map +0 -0
  978. /package/dist/{i18n → common/universalExport/server}/index.mjs.map +0 -0
  979. /package/dist/{logger → common/universalFile/server}/index.js.map +0 -0
  980. /package/dist/{logger → common/universalFile/server}/index.mjs.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/common/config/server/types.ts","../../../../src/common/config/server/schema.ts","../../../../src/common/config/server/engine.ts","../../../../src/common/config/server/service.ts","../../../../src/common/config/server/templates.ts","../../../../src/common/config/server/factory.ts","../../../../src/common/config/server/database-config.ts"],"names":["ConfigCategory","pgTable","text","jsonb","timestamp","sql","uniqueIndex","boolean","integer","index","eq","crypto","defaultLogger"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 配置系统类型定义\n * ConfigEngine V2 - 数据驱动的配置管理\n */\n\n// ==================== 基础类型 ====================\n\nexport type ConfigType = 'string' | 'number' | 'boolean' | 'json' | 'enum' | 'url' | 'email';\n\nexport type UiComponentType =\n | 'input'\n | 'textarea'\n | 'select'\n | 'switch'\n | 'slider'\n | 'color-picker';\n\nexport type ConfigStatus = 'active' | 'deprecated' | 'disabled';\n\nexport type ChangeType = 'create' | 'update' | 'delete';\n\n// ==================== 配置定义 ====================\n\n/**\n * 验证规则\n */\nexport interface ValidationRules {\n /** 最小值(数字) */\n min?: number;\n /** 最大值(数字) */\n max?: number;\n /** 最小长度(字符串) */\n minLength?: number;\n /** 最大长度(字符串) */\n maxLength?: number;\n /** 正则表达式 */\n pattern?: string;\n /** 是否为邮箱 */\n email?: boolean;\n /** 是否为 URL */\n url?: boolean;\n /** 自定义验证函数名 */\n custom?: string;\n}\n\n/**\n * UI 组件属性\n */\nexport interface UiProps {\n /** 占位符 */\n placeholder?: string;\n /** 帮助文本 */\n helpText?: string;\n /** 前缀 */\n prefix?: string;\n /** 后缀 */\n suffix?: string;\n /** 步长(数字输入) */\n step?: number;\n /** 行数(文本域) */\n rows?: number;\n /** 是否禁用 */\n disabled?: boolean;\n /** 最大值(滑块) */\n max?: number;\n /** 最小值(滑块) */\n min?: number;\n}\n\n/**\n * 枚举选项\n */\nexport interface EnumOption {\n /** 显示标签 */\n label: string;\n /** 实际值 */\n value: any;\n /** 描述 */\n description?: string;\n /** 图标 */\n icon?: string;\n}\n\n/**\n * 配置定义(完整)\n */\nexport interface ConfigDefinition {\n // 基本信息\n id?: number;\n key: string;\n category: string;\n name: string;\n description?: string;\n\n // 类型和验证\n type: ConfigType;\n validationRules?: ValidationRules;\n\n // UI 配置\n uiComponent?: UiComponentType;\n uiProps?: UiProps;\n\n // 安全和权限\n isSensitive?: boolean;\n isRequired?: boolean;\n isReadonly?: boolean;\n requiredPermission?: string;\n\n // 默认值和选项\n defaultValue?: any;\n enumOptions?: EnumOption[];\n\n // 依赖和条件\n dependsOn?: string[];\n showIf?: Record<string, any>;\n\n // 分组和排序\n groupName?: string;\n sortOrder?: number;\n\n // 版本和状态\n version?: number;\n status?: ConfigStatus;\n\n // 标签\n tags?: string[];\n\n // 元数据\n createdAt?: Date | string;\n updatedAt?: Date | string;\n createdBy?: number;\n}\n\n/**\n * 配置定义(用于创建)\n */\nexport type ConfigDefinitionCreate = Omit<ConfigDefinition, 'id' | 'createdAt' | 'updatedAt'>;\n\n/**\n * 配置定义(用于更新)\n */\nexport type ConfigDefinitionUpdate = Partial<ConfigDefinitionCreate>;\n\n/**\n * 配置定义(带值)\n */\nexport interface ConfigDefinitionWithValue extends ConfigDefinition {\n value: any;\n displayValue?: any; // 用于敏感信息掩码\n}\n\n// ==================== 配置值 ====================\n\n/**\n * 配置值\n */\nexport interface ConfigValue {\n key: string;\n value: any;\n}\n\n// ==================== 配置历史 ====================\n\n/**\n * 配置变更历史\n */\nexport interface ConfigHistoryRecord {\n id?: number;\n configKey: string;\n oldValue?: string;\n newValue?: string;\n changeType: ChangeType;\n changedBy?: number;\n changedAt?: Date | string;\n reason?: string;\n ipAddress?: string;\n userAgent?: string;\n}\n\n/**\n * 配置历史(用于创建)\n */\nexport type ConfigHistoryCreate = Omit<ConfigHistoryRecord, 'id' | 'changedAt'>;\n\n// ==================== 验证结果 ====================\n\n/**\n * 验证结果\n */\nexport interface ValidationResult {\n valid: boolean;\n errors: string[];\n}\n\n// ==================== API 响应 ====================\n\n/**\n * API 成功响应\n */\nexport interface ApiSuccessResponse<T = any> {\n success: true;\n data: T;\n message?: string;\n}\n\n/**\n * API 错误响应\n */\nexport interface ApiErrorResponse {\n success: false;\n error: string;\n details?: any;\n}\n\n/**\n * API 响应(联合类型)\n */\nexport type ApiResponse<T = any> = ApiSuccessResponse<T> | ApiErrorResponse;\n\n// ==================== 配置分组 ====================\n\n/**\n * 配置分组(UI 展示用)\n */\nexport interface ConfigGroup {\n groupName: string;\n definitions: ConfigDefinitionWithValue[];\n}\n\n/**\n * 分类配置(UI 展示用)\n */\nexport interface CategoryConfigs {\n category: string;\n groups: ConfigGroup[];\n}\n\n// ==================== 批量操作 ====================\n\n/**\n * 批量注册配置定义\n */\nexport interface BatchRegisterRequest {\n definitions: ConfigDefinitionCreate[];\n}\n\n/**\n * 批量更新配置值\n */\nexport interface BatchUpdateValuesRequest {\n values: Array<{\n key: string;\n value: any;\n }>;\n}\n\n// ==================== 配置元数据 ====================\n\n/**\n * 配置元数据缓存\n */\nexport interface ConfigMetadataCache {\n category: string;\n type: ConfigType;\n isSensitive: boolean;\n isRequired: boolean;\n defaultDescription?: string;\n}\n\n// ==================== 配置分类和模板 ====================\n\n/**\n * 配置分类枚举\n */\nexport enum ConfigCategory {\n DATABASE = 'database',\n STORAGE = 'storage',\n AI_SERVICE = 'ai_service',\n EMAIL = 'email',\n SECURITY = 'security',\n SYSTEM = 'system',\n MOBILE = 'mobile',\n WECHAT = 'wechat',\n}\n\n/**\n * 配置项(用于模板)\n */\nexport interface ConfigItem {\n key: string;\n value: any;\n category: ConfigCategory;\n type: ConfigType;\n isRequired: boolean;\n isSensitive: boolean;\n description?: string;\n defaultValue?: any;\n group?: string; // 配置分组\n isGroupTemplate?: boolean; // 是否为组模板(可多次实例化)\n groupFields?: string[]; // 组内字段列表(用于多实例配置)\n}\n\n","/**\n * 配置管理模块 - Drizzle ORM Schema\n *\n * 包含4个核心表:\n * 1. system_configs - 系统配置值表\n * 2. config_metadata - 配置元数据表\n * 3. config_definitions - 配置定义表(ConfigEngine核心)\n * 4. config_history - 配置变更历史表\n */\n\nimport {\n pgTable,\n text,\n jsonb,\n timestamp,\n boolean,\n integer,\n uniqueIndex,\n index,\n} from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\n\n/**\n * 系统配置值表\n * 存储实际的配置键值对\n */\nexport const systemConfigs = pgTable(\n 'system_configs',\n {\n id: text().primaryKey().notNull(),\n key: text().notNull(),\n value: jsonb().notNull(),\n description: text(),\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp({ precision: 3, mode: 'string' }).notNull(),\n },\n (table) => [\n uniqueIndex('system_configs_key_key').using(\n 'btree',\n table.key.asc().nullsLast().op('text_ops')\n ),\n ]\n);\n\n/**\n * 配置元数据表\n * 存储配置的类型、类别和验证规则等元数据\n */\nexport const configMetadata = pgTable('config_metadata', {\n key: text().primaryKey().notNull(),\n category: text().notNull(),\n type: text().default('string').notNull(),\n isSensitive: boolean().default(false).notNull(),\n isRequired: boolean().default(false).notNull(),\n defaultDescription: text(),\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp({ precision: 3, mode: 'string' }).notNull(),\n});\n\n/**\n * 配置定义表(ConfigEngine 核心)\n * 数据驱动的配置管理系统核心表\n */\nexport const configDefinitions = pgTable(\n 'config_definitions',\n {\n id: integer().primaryKey().generatedAlwaysAsIdentity(),\n key: text().notNull(),\n category: text().notNull(),\n name: text().notNull(),\n description: text(),\n\n // 类型和验证\n type: text().notNull(), // string, number, boolean, json, enum, url, email\n validationRules: jsonb(), // 验证规则 JSON\n\n // UI 配置\n uiComponent: text().default('input'), // input, textarea, select, switch, slider\n uiProps: jsonb(), // UI 组件属性\n\n // 安全和权限\n isSensitive: boolean().default(false).notNull(),\n isRequired: boolean().default(false).notNull(),\n isReadonly: boolean().default(false).notNull(),\n requiredPermission: text(),\n\n // 默认值和选项\n defaultValue: text(),\n enumOptions: jsonb(), // 枚举选项\n\n // 依赖和条件\n dependsOn: text().array(), // 依赖的配置项\n showIf: jsonb(), // 显示条件\n\n // 分组和排序\n groupName: text(),\n sortOrder: integer().default(0).notNull(),\n\n // 版本和状态\n version: integer().default(1).notNull(),\n status: text().default('active').notNull(), // active, deprecated, disabled\n\n // 标签\n tags: text().array(),\n\n // 元数据\n createdAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n createdBy: integer(),\n },\n (table) => [\n uniqueIndex('config_definitions_key_key').using(\n 'btree',\n table.key.asc().nullsLast().op('text_ops')\n ),\n index('config_definitions_category_idx').using(\n 'btree',\n table.category.asc().nullsLast().op('text_ops')\n ),\n index('config_definitions_status_idx').using(\n 'btree',\n table.status.asc().nullsLast().op('text_ops')\n ),\n ]\n);\n\n/**\n * 配置变更历史表\n * 记录所有配置的变更历史,用于审计和回滚\n */\nexport const configHistory = pgTable(\n 'config_history',\n {\n id: integer().primaryKey().generatedAlwaysAsIdentity(),\n configKey: text().notNull(),\n oldValue: text(),\n newValue: text(),\n changeType: text().notNull(), // create, update, delete\n changedBy: integer(),\n changedAt: timestamp({ precision: 3, mode: 'string' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n reason: text(),\n ipAddress: text(),\n userAgent: text(),\n },\n (table) => [\n index('config_history_key_idx').using(\n 'btree',\n table.configKey.asc().nullsLast().op('text_ops')\n ),\n index('config_history_date_idx').using(\n 'btree',\n table.changedAt.asc().nullsLast().op('timestamp_ops')\n ),\n ]\n);\n\n","/**\n * ConfigEngine V2 - 数据驱动的配置管理引擎\n *\n * 核心功能:\n * 1. 从数据库加载配置定义\n * 2. 配置值的验证和管理\n * 3. 配置变更历史记录\n * 4. 敏感信息加密/解密\n *\n * 使用方法:\n * ```typescript\n * import { ConfigEngine } from 'sa2kit/config/server';\n *\n * const engine = new ConfigEngine(db);\n * await engine.initialize();\n *\n * // 获取配置值\n * const value = await engine.getValue('config_key');\n *\n * // 设置配置值\n * await engine.setValue('config_key', 'new_value', userId);\n * ```\n */\n\nimport * as crypto from 'crypto';\nimport { eq } from 'drizzle-orm';\nimport type {\n ConfigDefinition,\n ConfigDefinitionCreate,\n ConfigDefinitionWithValue,\n ValidationResult,\n ValidationRules,\n ConfigHistoryCreate,\n ConfigType,\n} from './types';\n\n// 数据库表类型 - 需要从外部传入或注入\ninterface SystemConfig {\n id: string;\n key: string;\n value: any;\n description?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\ninterface ConfigDefinitionRow {\n id: number;\n key: string;\n category: string;\n name: string;\n description?: string | null;\n type: string;\n validationRules?: any;\n uiComponent?: string | null;\n uiProps?: any;\n isSensitive: boolean;\n isRequired: boolean;\n isReadonly: boolean;\n requiredPermission?: string | null;\n defaultValue?: string | null;\n enumOptions?: any;\n dependsOn?: string[] | null;\n showIf?: any;\n groupName?: string | null;\n sortOrder: number;\n version: number;\n status: string;\n tags?: string[] | null;\n createdAt: string;\n updatedAt: string;\n createdBy?: number | null;\n}\n\n/**\n * 数据库接口(使用Drizzle ORM)\n * 使用 any 类型以避免复杂的类型推导\n */\nexport type DatabaseClient = any;\n\n/**\n * 数据库表定义\n */\nexport interface DatabaseTables {\n systemConfigs: any;\n configDefinitions?: any;\n configMetadata?: any;\n configHistory: any;\n}\n\n/**\n * 日志接口\n */\nexport interface Logger {\n info: (message: string, ...args: any[]) => void;\n warn: (message: string, ...args: any[]) => void;\n error: (message: string, ...args: any[]) => void;\n}\n\n/**\n * ConfigEngine 配置选项\n */\nexport interface ConfigEngineOptions {\n /** 数据库客户端 */\n db: DatabaseClient;\n /** 数据库表定义 */\n tables: DatabaseTables;\n /** 加密密钥 */\n encryptionKey?: string;\n /** 日志记录器 */\n logger?: Logger;\n}\n\n/**\n * 默认日志记录器\n */\nconst defaultLogger: Logger = {\n info: (message: string, ...args: any[]) => console.log('[ConfigEngine] ' + (message), ...args),\n warn: (message: string, ...args: any[]) => console.warn('[ConfigEngine] ' + (message), ...args),\n error: (message: string, ...args: any[]) => console.error('[ConfigEngine] ' + (message), ...args),\n};\n\n/**\n * 配置引擎类\n */\nexport class ConfigEngine {\n private definitionsCache = new Map<string, ConfigDefinition>();\n private encryptionKey: string;\n private initialized = false;\n private db: DatabaseClient;\n private tables: DatabaseTables;\n private logger: Logger;\n\n constructor(options: ConfigEngineOptions) {\n this.db = options.db;\n this.tables = options.tables;\n this.logger = options.logger || defaultLogger;\n\n // 使用环境变量作为加密密钥\n this.encryptionKey = options.encryptionKey || process.env.CONFIG_ENCRYPTION_KEY || 'default-config-key-2024';\n\n if (this.encryptionKey === 'default-config-key-2024') {\n this.logger.warn('⚠️ 使用默认加密密钥,生产环境请设置 CONFIG_ENCRYPTION_KEY 环境变量');\n }\n }\n\n /**\n * 初始化配置引擎\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n try {\n await this.loadDefinitions();\n this.initialized = true;\n this.logger.info('✅ ConfigEngine 初始化成功');\n } catch (error) {\n this.logger.error('❌ ConfigEngine 初始化失败:', error);\n throw error;\n }\n }\n\n /**\n * 从数据库加载所有配置定义到缓存\n */\n async loadDefinitions(): Promise<void> {\n try {\n const definitions = await this.db\n .select()\n .from(this.tables.configDefinitions)\n .where(eq(this.tables.configDefinitions.status, 'active'));\n\n this.definitionsCache.clear();\n\n (definitions as ConfigDefinitionRow[]).forEach((def) => {\n const definition: ConfigDefinition = {\n id: def.id,\n key: def.key,\n category: def.category,\n name: def.name,\n description: def.description || undefined,\n type: def.type as ConfigType,\n validationRules: def.validationRules\n ? JSON.parse(JSON.stringify(def.validationRules))\n : undefined,\n uiComponent: def.uiComponent as any,\n uiProps: def.uiProps ? JSON.parse(JSON.stringify(def.uiProps)) : undefined,\n isSensitive: def.isSensitive,\n isRequired: def.isRequired,\n isReadonly: def.isReadonly,\n requiredPermission: def.requiredPermission || undefined,\n defaultValue: def.defaultValue || undefined,\n enumOptions: def.enumOptions ? JSON.parse(JSON.stringify(def.enumOptions)) : undefined,\n dependsOn: def.dependsOn || undefined,\n showIf: def.showIf ? JSON.parse(JSON.stringify(def.showIf)) : undefined,\n groupName: def.groupName || undefined,\n sortOrder: def.sortOrder,\n version: def.version,\n status: def.status as any,\n tags: def.tags || undefined,\n createdAt: def.createdAt,\n updatedAt: def.updatedAt,\n createdBy: def.createdBy || undefined,\n };\n\n this.definitionsCache.set(def.key, definition);\n });\n\n this.logger.info('✅ 已加载 ' + (definitions.length) + ' 个配置定义');\n } catch (error) {\n this.logger.error('❌ 加载配置定义失败:', error);\n throw error;\n }\n }\n\n /**\n * 获取单个配置定义\n */\n getDefinition(key: string): ConfigDefinition | undefined {\n return this.definitionsCache.get(key);\n }\n\n /**\n * 获取所有配置定义\n */\n getAllDefinitions(): ConfigDefinition[] {\n return Array.from(this.definitionsCache.values());\n }\n\n /**\n * 获取指定分类的配置定义\n */\n getDefinitionsByCategory(category: string): ConfigDefinition[] {\n return this.getAllDefinitions()\n .filter((def) => def.category === category)\n .sort((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0));\n }\n\n /**\n * 验证配置值\n */\n async validate(key: string, value: any): Promise<ValidationResult> {\n const definition = this.getDefinition(key);\n\n if (!definition) {\n return {\n valid: false,\n errors: ['配置定义不存在'],\n };\n }\n\n const errors: string[] = [];\n\n // 必填验证\n if (definition.isRequired && (value === null || value === undefined || value === '')) {\n errors.push('此配置项为必填');\n return { valid: false, errors };\n }\n\n // 空值跳过后续验证\n if (value === null || value === undefined || value === '') {\n return { valid: true, errors: [] };\n }\n\n // 类型验证\n const typeError = this.validateType(value, definition.type);\n if (typeError) {\n errors.push(typeError);\n }\n\n // 规则验证\n if (definition.validationRules && typeError === null) {\n const ruleErrors = this.validateRules(value, definition.validationRules);\n errors.push(...ruleErrors);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n }\n\n /**\n * 获取配置的完整数据(定义 + 值)\n */\n async getConfigsWithValues(category?: string): Promise<ConfigDefinitionWithValue[]> {\n // 确保已初始化\n if (!this.initialized) {\n await this.initialize();\n }\n\n // 获取定义\n const definitions = category\n ? this.getDefinitionsByCategory(category)\n : this.getAllDefinitions();\n\n // 获取所有配置值\n const configValues = await this.db.select().from(this.tables.systemConfigs);\n const valueMap = new Map((configValues as SystemConfig[]).map((v) => [v.key, v.value]));\n\n // 合并定义和值\n const result: ConfigDefinitionWithValue[] = definitions.map((def) => {\n let value = valueMap.get(def.key) ?? def.defaultValue;\n let displayValue = value;\n\n // 解密敏感配置\n if (def.isSensitive && value && typeof value === 'string') {\n try {\n value = this.decrypt(value);\n // 掩码显示\n displayValue = this.maskValue(value);\n } catch (error) {\n this.logger.warn('解密配置 ' + (def.key) + ' 失败:', error);\n }\n }\n\n return {\n ...def,\n value,\n displayValue,\n };\n });\n\n return result;\n }\n\n /**\n * 获取单个配置值\n */\n async getValue(key: string): Promise<any> {\n const definition = this.getDefinition(key);\n if (!definition) {\n return undefined;\n }\n\n const configs = await this.db\n .select()\n .from(this.tables.systemConfigs)\n .where(eq(this.tables.systemConfigs.key, key))\n .limit(1);\n\n if (configs.length === 0) {\n return definition.defaultValue;\n }\n\n let value = (configs[0] as SystemConfig).value;\n\n // 解密敏感配置\n if (definition.isSensitive && value && typeof value === 'string') {\n try {\n value = this.decrypt(value);\n } catch (error) {\n this.logger.warn('解密配置 ' + (key) + ' 失败:', error);\n }\n }\n\n return value;\n }\n\n /**\n * 设置配置值\n */\n async setValue(\n key: string,\n value: any,\n userId: number = 0,\n options?: {\n reason?: string;\n ipAddress?: string;\n userAgent?: string;\n }\n ): Promise<void> {\n // 验证配置值\n const validation = await this.validate(key, value);\n if (!validation.valid) {\n throw new Error('配置验证失败: ' + (validation.errors.join(', ')));\n }\n\n const definition = this.getDefinition(key);\n if (!definition) {\n throw new Error('配置定义不存在');\n }\n\n // 获取旧值(用于历史记录)\n const oldConfigs = await this.db\n .select()\n .from(this.tables.systemConfigs)\n .where(eq(this.tables.systemConfigs.key, key))\n .limit(1);\n\n const oldValue = oldConfigs.length > 0 ? (oldConfigs[0] as SystemConfig).value : undefined;\n\n // 加密敏感配置\n let finalValue = value;\n if (definition.isSensitive && value) {\n finalValue = this.encrypt(String(value));\n }\n\n // 保存配置值\n if (oldConfigs.length > 0) {\n await this.db\n .update(this.tables.systemConfigs)\n .set({\n value: finalValue,\n updatedAt: new Date().toISOString(),\n })\n .where(eq(this.tables.systemConfigs.key, key));\n } else {\n // 生成 ID\n const id = crypto.randomUUID();\n await this.db.insert(this.tables.systemConfigs).values({\n id,\n key,\n value: finalValue,\n description: definition.description,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n });\n }\n\n // 记录历史\n await this.recordHistory({\n configKey: key,\n oldValue: oldValue ? JSON.stringify(oldValue) : undefined,\n newValue: JSON.stringify(value),\n changeType: oldValue ? 'update' : 'create',\n changedBy: userId,\n reason: options?.reason,\n ipAddress: options?.ipAddress,\n userAgent: options?.userAgent,\n });\n\n this.logger.info('✅ 配置已' + (oldValue ? '更新' : '创建') + ': ' + (key));\n }\n\n /**\n * 批量设置配置值\n */\n async setValues(\n values: Array<{ key: string; value: any }>,\n userId: number = 0,\n options?: {\n reason?: string;\n ipAddress?: string;\n userAgent?: string;\n }\n ): Promise<void> {\n for (const item of values) {\n await this.setValue(item.key, item.value, userId, options);\n }\n }\n\n /**\n * 注册新配置定义\n */\n async registerDefinition(definition: ConfigDefinitionCreate, userId: number = 0): Promise<void> {\n try {\n await this.db.insert(this.tables.configDefinitions).values({\n key: definition.key,\n category: definition.category,\n name: definition.name,\n description: definition.description,\n type: definition.type,\n validationRules: definition.validationRules\n ? JSON.stringify(definition.validationRules)\n : null,\n uiComponent: definition.uiComponent || 'input',\n uiProps: definition.uiProps ? JSON.stringify(definition.uiProps) : null,\n isSensitive: definition.isSensitive || false,\n isRequired: definition.isRequired || false,\n isReadonly: definition.isReadonly || false,\n requiredPermission: definition.requiredPermission,\n defaultValue: definition.defaultValue,\n enumOptions: definition.enumOptions ? JSON.stringify(definition.enumOptions) : null,\n dependsOn: definition.dependsOn,\n showIf: definition.showIf ? JSON.stringify(definition.showIf) : null,\n groupName: definition.groupName,\n sortOrder: definition.sortOrder || 0,\n version: definition.version || 1,\n status: definition.status || 'active',\n tags: definition.tags,\n createdBy: userId,\n updatedAt: new Date().toISOString(),\n });\n\n // 重新加载定义缓存\n await this.loadDefinitions();\n\n this.logger.info('✅ 注册新配置定义: ' + (definition.key));\n } catch (error) {\n this.logger.error(`❌ 注册配置定义失败:`, error);\n throw error;\n }\n }\n\n /**\n * 批量注册配置定义\n */\n async registerDefinitions(\n definitions: ConfigDefinitionCreate[],\n userId: number = 0\n ): Promise<void> {\n for (const definition of definitions) {\n await this.registerDefinition(definition, userId);\n }\n }\n\n /**\n * 记录配置变更历史\n */\n private async recordHistory(record: ConfigHistoryCreate): Promise<void> {\n try {\n await this.db.insert(this.tables.configHistory).values({\n ...record,\n changedAt: new Date().toISOString(),\n });\n } catch (error) {\n this.logger.error('❌ 记录配置历史失败:', error);\n // 不抛出错误,避免影响主流程\n }\n }\n\n /**\n * 获取配置变更历史\n */\n async getHistory(key: string, limit: number = 50): Promise<any[]> {\n try {\n const history = await this.db\n .select()\n .from(this.tables.configHistory)\n .where(eq(this.tables.configHistory.configKey, key))\n .orderBy(this.tables.configHistory.changedAt)\n .limit(limit);\n\n return history;\n } catch (error) {\n this.logger.error('❌ 获取配置历史失败:', error);\n return [];\n }\n }\n\n // ==================== 私有辅助方法 ====================\n\n /**\n * 类型验证\n */\n private validateType(value: any, type: ConfigType): string | null {\n switch (type) {\n case 'string':\n return typeof value === 'string' ? null : '值必须是字符串';\n\n case 'number':\n return typeof value === 'number' && !isNaN(value) ? null : '值必须是数字';\n\n case 'boolean':\n return typeof value === 'boolean' ? null : '值必须是布尔值';\n\n case 'json':\n try {\n if (typeof value === 'string') {\n JSON.parse(value);\n }\n return null;\n } catch {\n return '值必须是有效的 JSON';\n }\n\n case 'url':\n try {\n new URL(value);\n return null;\n } catch {\n return '值必须是有效的 URL';\n }\n\n case 'email':\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value) ? null : '值必须是有效的邮箱地址';\n\n case 'enum':\n return null; // 枚举验证在规则验证中处理\n\n default:\n return null;\n }\n }\n\n /**\n * 规则验证\n */\n private validateRules(value: any, rules: ValidationRules): string[] {\n const errors: string[] = [];\n\n if (rules.min !== undefined && value < rules.min) {\n errors.push('值不能小于 ' + (rules.min));\n }\n\n if (rules.max !== undefined && value > rules.max) {\n errors.push('值不能大于 ' + (rules.max));\n }\n\n if (rules.minLength !== undefined && String(value).length < rules.minLength) {\n errors.push('长度不能小于 ' + (rules.minLength));\n }\n\n if (rules.maxLength !== undefined && String(value).length > rules.maxLength) {\n errors.push('长度不能大于 ' + (rules.maxLength));\n }\n\n if (rules.pattern && !new RegExp(rules.pattern).test(String(value))) {\n errors.push('值不符合要求的格式');\n }\n\n return errors;\n }\n\n /**\n * 加密\n */\n private encrypt(value: string): string {\n const algorithm = 'aes-256-cbc';\n const key = crypto.scryptSync(this.encryptionKey, 'salt', 32);\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv(algorithm, key, iv);\n let encrypted = cipher.update(value, 'utf8', 'hex');\n encrypted += cipher.final('hex');\n return iv.toString('hex') + ':' + encrypted;\n }\n\n /**\n * 解密\n */\n private decrypt(encrypted: string): string {\n const algorithm = 'aes-256-cbc';\n const key = crypto.scryptSync(this.encryptionKey, 'salt', 32);\n const parts = encrypted.split(':');\n if (parts.length !== 2 || !parts[0] || !parts[1]) {\n throw new Error('无效的加密数据格式');\n }\n const [ivHex, encryptedData] = parts;\n const iv = Buffer.from(ivHex, 'hex');\n const decipher = crypto.createDecipheriv(algorithm, key, iv);\n let decrypted = decipher.update(encryptedData, 'hex', 'utf8');\n decrypted += decipher.final('utf8');\n return decrypted;\n }\n\n /**\n * 掩码显示敏感值\n */\n private maskValue(value: string): string {\n if (!value) return '';\n const len = value.length;\n if (len <= 8) {\n return '*'.repeat(len);\n }\n return value.substring(0, 4) + '*'.repeat(len - 8) + value.substring(len - 4);\n }\n}\n\n","/**\n * ConfigService - 简化的配置管理服务\n *\n * 提供更简单的API来管理配置,封装ConfigEngine的复杂性\n *\n * 使用方法:\n * ```typescript\n * import { ConfigService } from 'sa2kit/config/server';\n * import { ConfigCategory, ConfigType } from 'sa2kit/config/server';\n *\n * const service = new ConfigService({ db, tables });\n *\n * // 获取配置\n * const apiKey = await service.getConfig('api_key', 'default-key');\n *\n * // 设置配置\n * await service.setConfig('api_key', 'new-key');\n *\n * // 获取分类下的所有配置\n * const storageConfigs = await service.getConfigsByCategory(ConfigCategory.STORAGE);\n * ```\n */\n\nimport crypto from 'crypto';\nimport { eq } from 'drizzle-orm';\nimport { ConfigEngine, type DatabaseClient, type DatabaseTables, type Logger } from './engine';\nimport { ConfigCategory, type ConfigType, type ConfigItem } from './types';\n\n/**\n * 配置模板(用于初始化默认配置)\n */\nexport type ConfigTemplates = Record<string, ConfigItem[]>;\n\n/**\n * ConfigService 配置选项\n */\nexport interface ConfigServiceOptions {\n /** 数据库客户端 */\n db: DatabaseClient;\n /** 数据库表定义 */\n tables: DatabaseTables;\n /** 加密密钥 */\n encryptionKey?: string;\n /** 日志记录器 */\n logger?: Logger;\n /** 配置模板 */\n templates?: ConfigTemplates;\n}\n\n/**\n * 默认日志记录器\n */\nconst defaultLogger: Logger = {\n info: (message: string, ...args: any[]) => console.log('[ConfigService] ' + (message), ...args),\n warn: (message: string, ...args: any[]) => console.warn('[ConfigService] ' + (message), ...args),\n error: (message: string, ...args: any[]) => console.error('[ConfigService] ' + (message), ...args),\n};\n\n/**\n * 配置管理服务类\n */\nexport class ConfigService {\n private configCache: Map<string, any> = new Map();\n private metadataCache: Map<\n string,\n {\n category: string;\n type: ConfigType;\n isSensitive: boolean;\n isRequired: boolean;\n defaultDescription?: string;\n }\n > = new Map();\n private encryptionKey: string;\n private db: DatabaseClient;\n private tables: DatabaseTables;\n private logger: Logger;\n private templates: ConfigTemplates;\n\n constructor(options: ConfigServiceOptions) {\n this.db = options.db;\n this.tables = options.tables;\n this.logger = options.logger || defaultLogger;\n this.templates = options.templates || {};\n\n // 使用环境变量或默认密钥作为加密密钥\n this.encryptionKey = options.encryptionKey || process.env.CONFIG_ENCRYPTION_KEY || 'default-config-key-2024';\n\n // 初始化时加载配置和元数据\n this.loadConfigsFromDatabase();\n this.loadMetadataFromDatabase();\n }\n\n // 从数据库加载元数据\n private async loadMetadataFromDatabase() {\n if (!this.tables.configMetadata) {\n this.logger.info('配置元数据表未提供,跳过元数据加载');\n return;\n }\n\n try {\n const metadata = await this.db.select().from(this.tables.configMetadata);\n metadata.forEach((meta: any) => {\n this.metadataCache.set(meta.key, {\n category: meta.category,\n type: meta.type as ConfigType,\n isSensitive: meta.isSensitive,\n isRequired: meta.isRequired,\n defaultDescription: meta.defaultDescription || undefined,\n });\n });\n this.logger.info('已加载 ' + (metadata.length) + ' 条配置元数据');\n } catch (error) {\n // 如果表不存在,使用模板作为后备\n this.logger.warn(\n '配置元数据表不存在,使用模板数据',\n error instanceof Error ? error.message : String(error)\n );\n // 不抛出错误,继续使用模板\n }\n }\n\n // 从数据库加载配置到缓存\n private async loadConfigsFromDatabase(): Promise<void> {\n try {\n const configs = await this.db.select().from(this.tables.systemConfigs);\n\n configs.forEach((config: any) => {\n let value = config.value;\n\n // 如果是敏感配置,解密\n if (this.isSensitiveConfig(config.key)) {\n try {\n value = this.decrypt(config.value as string);\n this.logger.info('✅ 成功解密配置: ' + (config.key));\n } catch (error) {\n this.logger.error('❌ 解密配置失败: ' + (config.key), error);\n // 跳过该配置,不加入缓存\n return;\n }\n }\n\n this.configCache.set(config.key, value);\n });\n\n this.logger.info('已加载 ' + (configs.length) + ' 个配置项');\n } catch (error) {\n this.logger.error('加载配置失败', error instanceof Error ? error : new Error(String(error)));\n }\n }\n\n // 获取配置值\n public async getConfig(key: string, defaultValue?: any): Promise<any> {\n if (!key) {\n return defaultValue;\n }\n\n // 优先从环境变量获取\n const envValue = process.env[key.toUpperCase()];\n if (envValue !== undefined) {\n return this.parseValue(envValue, this.getConfigType(key));\n }\n\n // 从缓存获取\n if (this.configCache.has(key)) {\n return this.configCache.get(key);\n }\n\n // 从数据库获取\n try {\n const [config] = await this.db\n .select()\n .from(this.tables.systemConfigs)\n .where(eq(this.tables.systemConfigs.key, key))\n .limit(1);\n\n if (config) {\n let value = config.value;\n\n if (this.isSensitiveConfig(key)) {\n try {\n value = this.decrypt(config.value as string);\n this.logger.info('✅ 成功解密配置: ' + (key) + ', 长度: ' + (value?.length));\n } catch (error) {\n this.logger.error('❌ 解密配置失败: ' + (key), error);\n throw new Error('配置 ' + (key) + ' 解密失败');\n }\n }\n\n this.configCache.set(key, value);\n return value;\n }\n } catch (error) {\n this.logger.error(\n '获取配置 ' + (key) + ' 失败',\n error instanceof Error ? error : new Error(String(error))\n );\n }\n\n return defaultValue;\n }\n\n // 设置配置值\n public async setConfig(key: string, value: any, description?: string): Promise<void> {\n try {\n const category = this.getConfigCategory(key);\n const type = this.getConfigType(key);\n const isSensitive = this.isSensitiveConfig(key);\n\n // 验证配置值\n const validatedValue = this.validateValue(value, type);\n\n // 敏感配置需要加密\n const storageValue = isSensitive ? this.encrypt(validatedValue) : validatedValue;\n\n // 保存到数据库\n const existing = await this.db\n .select()\n .from(this.tables.systemConfigs)\n .where(eq(this.tables.systemConfigs.key, key))\n .limit(1);\n\n if (existing.length > 0) {\n await this.db\n .update(this.tables.systemConfigs)\n .set({\n value: storageValue,\n description: description || this.getConfigDescription(key),\n updatedAt: new Date().toISOString(),\n })\n .where(eq(this.tables.systemConfigs.key, key));\n } else {\n await this.db.insert(this.tables.systemConfigs).values({\n id: crypto.randomBytes(16).toString('hex'),\n key,\n value: storageValue,\n description: description || this.getConfigDescription(key),\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n });\n }\n\n // 更新缓存\n this.configCache.set(key, validatedValue);\n\n this.logger.info('配置 ' + (key) + ' 已更新');\n } catch (error) {\n this.logger.error(\n '设置配置 ' + (key) + ' 失败',\n error instanceof Error ? error : new Error(String(error))\n );\n throw error;\n }\n }\n\n // 获取分类下的所有配置\n public async getConfigsByCategory(category: ConfigCategory): Promise<Record<string, any>> {\n const configs: Record<string, any> = {};\n const template = this.templates[category] || [];\n\n for (const item of template) {\n configs[item.key] = await this.getConfig(item.key, item.defaultValue);\n }\n\n return configs;\n }\n\n // 批量设置配置\n public async setConfigs(configs: Record<string, any>): Promise<void> {\n for (const [key, value] of Object.entries(configs)) {\n await this.setConfig(key, value);\n }\n }\n\n // 删除配置\n public async deleteConfig(key: string): Promise<void> {\n try {\n await this.db.delete(this.tables.systemConfigs).where(eq(this.tables.systemConfigs.key, key));\n\n this.configCache.delete(key);\n this.logger.info('配置 ' + (key) + ' 已删除');\n } catch (error) {\n this.logger.error(\n '删除配置 ' + (key) + ' 失败',\n error instanceof Error ? error : new Error(String(error))\n );\n throw error;\n }\n }\n\n // 获取所有配置(用于管理界面)\n public async getAllConfigs(): Promise<Record<string, any>> {\n const allConfigs: Record<string, any> = {};\n\n // 先获取数据库中所有实际存在的配置\n const dbConfigs = await this.db.select().from(this.tables.systemConfigs);\n const dbConfigKeys = new Set(dbConfigs.map((c: any) => c.key));\n\n for (const [category, items] of Object.entries(this.templates)) {\n allConfigs[category] = {};\n\n for (const item of items) {\n // 只显示数据库中实际存在的配置\n if (dbConfigKeys.has(item.key)) {\n const value = await this.getConfig(item.key, item.defaultValue);\n allConfigs[category][item.key] = {\n ...item,\n value: item.isSensitive ? '' : value, // 敏感信息隐藏\n isStored: true, // 标记为已存储\n };\n }\n }\n }\n\n return allConfigs;\n }\n\n // 刷新配置缓存\n public async refreshCache(): Promise<void> {\n this.configCache.clear();\n await this.loadConfigsFromDatabase();\n }\n\n // 配置验证\n public validateConfig(key: string, value: any): boolean {\n const type = this.getConfigType(key);\n const isRequired = this.isRequiredConfig(key);\n\n if (isRequired && (value === undefined || value === null || value === '')) {\n throw new Error('配置 ' + (key) + ' 是必需的');\n }\n\n try {\n this.validateValue(value, type);\n return true;\n } catch (error: any) {\n throw new Error('配置 ' + (key) + ' 值无效: ' + (error.message));\n }\n }\n\n // 私有方法:加密\n private encrypt(text: string): string {\n const algorithm = 'aes-256-cbc';\n const key = crypto.scryptSync(this.encryptionKey, 'salt', 32);\n const iv = crypto.randomBytes(16);\n\n const cipher = crypto.createCipheriv(algorithm, key, iv);\n let encrypted = cipher.update(text, 'utf8', 'hex');\n encrypted += cipher.final('hex');\n\n return iv.toString('hex') + ':' + encrypted;\n }\n\n // 私有方法:解密\n private decrypt(encryptedText: string): string {\n const algorithm = 'aes-256-cbc';\n const key = crypto.scryptSync(this.encryptionKey, 'salt', 32);\n\n const parts = encryptedText.split(':');\n if (parts.length !== 2 || !parts[0] || !parts[1]) {\n throw new Error('无效的加密数据格式');\n }\n\n const iv = Buffer.from(parts[0], 'hex');\n const encrypted = parts[1];\n\n const decipher = crypto.createDecipheriv(algorithm, key, iv);\n let decrypted = decipher.update(encrypted, 'hex', 'utf8');\n decrypted += decipher.final('utf8');\n\n return decrypted;\n }\n\n // 私有方法:解析值类型\n private parseValue(value: string, type: ConfigType): any {\n switch (type) {\n case 'number':\n return parseInt(value);\n case 'boolean':\n return value.toLowerCase() === 'true';\n case 'json':\n return JSON.parse(value);\n default:\n return value;\n }\n }\n\n // 私有方法:验证值\n private validateValue(value: any, type: ConfigType): any {\n switch (type) {\n case 'string':\n return String(value);\n case 'number':\n const num = Number(value);\n if (isNaN(num)) throw new Error('值必须是数字');\n return num;\n case 'boolean':\n return Boolean(value);\n case 'json':\n if (typeof value === 'string') {\n return JSON.parse(value);\n }\n return value;\n default:\n return value;\n }\n }\n\n // 私有方法:获取配置类型\n private getConfigType(key: string): ConfigType {\n const metadata = this.metadataCache.get(key);\n return metadata?.type || 'string';\n }\n\n // 私有方法:获取配置分类\n private getConfigCategory(key: string): ConfigCategory {\n const metadata = this.metadataCache.get(key);\n return (metadata?.category as ConfigCategory) || ConfigCategory.SYSTEM;\n }\n\n // 私有方法:检查是否为敏感配置\n private isSensitiveConfig(key: string): boolean {\n const metadata = this.metadataCache.get(key);\n return metadata?.isSensitive || false;\n }\n\n // 私有方法:检查是否为必需配置\n private isRequiredConfig(key: string): boolean {\n const metadata = this.metadataCache.get(key);\n return metadata?.isRequired || false;\n }\n\n // 私有方法:获取配置描述\n private getConfigDescription(key: string): string {\n const metadata = this.metadataCache.get(key);\n return metadata?.defaultDescription || '';\n }\n\n // 新增方法:创建或更新配置元数据\n public async setConfigMetadata(\n key: string,\n category: string,\n type: ConfigType = 'string',\n options: {\n isSensitive?: boolean;\n isRequired?: boolean;\n defaultDescription?: string;\n } = {}\n ): Promise<void> {\n if (!this.tables.configMetadata) {\n this.logger.warn('配置元数据表未提供,跳过元数据设置');\n return;\n }\n\n try {\n const now = new Date().toISOString();\n const existing = await this.db\n .select()\n .from(this.tables.configMetadata)\n .where(eq(this.tables.configMetadata.key, key))\n .limit(1);\n\n if (existing.length > 0) {\n await this.db\n .update(this.tables.configMetadata)\n .set({\n category,\n type,\n isSensitive: options.isSensitive ?? false,\n isRequired: options.isRequired ?? false,\n defaultDescription: options.defaultDescription,\n updatedAt: now,\n })\n .where(eq(this.tables.configMetadata.key, key));\n } else {\n await this.db.insert(this.tables.configMetadata).values({\n key,\n category,\n type,\n isSensitive: options.isSensitive ?? false,\n isRequired: options.isRequired ?? false,\n defaultDescription: options.defaultDescription,\n createdAt: now,\n updatedAt: now,\n });\n }\n\n // 更新缓存\n this.metadataCache.set(key, {\n category,\n type,\n isSensitive: options.isSensitive ?? false,\n isRequired: options.isRequired ?? false,\n defaultDescription: options.defaultDescription,\n });\n\n this.logger.info('配置元数据 ' + (key) + ' 已更新');\n } catch (error) {\n this.logger.error(\n '设置配置元数据 ' + (key) + ' 失败',\n error instanceof Error ? error : new Error(String(error))\n );\n throw error;\n }\n }\n}\n\n/**\n * 创建ConfigService实例的工厂函数\n */\nexport function createConfigService(options: ConfigServiceOptions): ConfigService {\n return new ConfigService(options);\n}\n\n","/**\n * 配置模板\n *\n * 提供常用的配置项模板,可用于初始化默认配置\n */\n\nimport { ConfigCategory, type ConfigType, type ConfigItem } from './types';\n\n/**\n * 配置模板类型\n */\nexport type ConfigTemplates = Record<string, ConfigItem[]>;\n\n/**\n * 默认配置模板\n *\n * 包含常见的配置项,可作为参考或直接使用\n */\nexport const DEFAULT_CONFIG_TEMPLATES: ConfigTemplates = {\n // 数据库相关的业务配置(非连接配置)\n [ConfigCategory.DATABASE]: [\n {\n key: 'database_pool_size',\n value: 10,\n category: ConfigCategory.DATABASE,\n type: 'number',\n isRequired: false,\n isSensitive: false,\n description: '数据库连接池大小',\n defaultValue: 10,\n group: '连接池配置',\n },\n {\n key: 'database_query_timeout',\n value: 30000,\n category: ConfigCategory.DATABASE,\n type: 'number',\n isRequired: false,\n isSensitive: false,\n description: '数据库查询超时时间(毫秒)',\n defaultValue: 30000,\n group: '连接池配置',\n },\n {\n key: 'enable_query_logging',\n value: false,\n category: ConfigCategory.DATABASE,\n type: 'boolean',\n isRequired: false,\n isSensitive: false,\n description: '启用数据库查询日志',\n defaultValue: false,\n group: '连接池配置',\n },\n ],\n\n // 存储配置\n [ConfigCategory.STORAGE]: [\n {\n key: 'storage_type',\n value: 'local',\n category: ConfigCategory.STORAGE,\n type: 'string',\n isRequired: true,\n isSensitive: false,\n description: '存储类型(local/aliyun-oss/aws-s3)',\n defaultValue: 'local',\n group: '基础配置',\n },\n {\n key: 'upload_max_size',\n value: 10485760,\n category: ConfigCategory.STORAGE,\n type: 'number',\n isRequired: false,\n isSensitive: false,\n description: '最大上传文件大小(字节)',\n defaultValue: 10485760,\n group: '上传配置',\n },\n ],\n\n // 安全配置\n [ConfigCategory.SECURITY]: [\n {\n key: 'jwt_secret',\n value: '',\n category: ConfigCategory.SECURITY,\n type: 'string',\n isRequired: true,\n isSensitive: true,\n description: 'JWT签名密钥',\n },\n {\n key: 'jwt_expires_in',\n value: '7d',\n category: ConfigCategory.SECURITY,\n type: 'string',\n isRequired: true,\n isSensitive: false,\n description: 'JWT过期时间',\n defaultValue: '7d',\n },\n {\n key: 'enable_rate_limiting',\n value: true,\n category: ConfigCategory.SECURITY,\n type: 'boolean',\n isRequired: false,\n isSensitive: false,\n description: '启用API速率限制',\n defaultValue: true,\n },\n ],\n\n // 系统配置\n [ConfigCategory.SYSTEM]: [\n {\n key: 'app_name',\n value: 'My App',\n category: ConfigCategory.SYSTEM,\n type: 'string',\n isRequired: true,\n isSensitive: false,\n description: '应用名称',\n defaultValue: 'My App',\n },\n {\n key: 'maintenance_mode',\n value: false,\n category: ConfigCategory.SYSTEM,\n type: 'boolean',\n isRequired: false,\n isSensitive: false,\n description: '维护模式',\n defaultValue: false,\n },\n {\n key: 'log_level',\n value: 'info',\n category: ConfigCategory.SYSTEM,\n type: 'string',\n isRequired: false,\n isSensitive: false,\n description: '日志级别',\n defaultValue: 'info',\n },\n ],\n};\n\n/**\n * 创建自定义配置模板\n *\n * @param templates 配置模板\n * @returns 合并后的配置模板\n */\nexport function createConfigTemplates(templates: Partial<ConfigTemplates>): ConfigTemplates {\n const filteredTemplates: ConfigTemplates = { ...DEFAULT_CONFIG_TEMPLATES };\n\n Object.keys(templates).forEach((key) => {\n const value = templates[key];\n if (value !== undefined) {\n filteredTemplates[key] = value;\n }\n });\n\n return filteredTemplates;\n}\n\n","/**\n * 配置服务工厂函数\n *\n * 提供便捷的工厂函数来创建 ConfigService 和 ConfigEngine 实例\n */\n\nimport { ConfigService, type ConfigServiceOptions } from './service';\nimport { ConfigEngine, type ConfigEngineOptions } from './engine';\n\n/**\n * 创建 ConfigService 实例的工厂函数\n */\nexport function createConfigService(options: ConfigServiceOptions): ConfigService {\n return new ConfigService(options);\n}\n\n/**\n * 创建 ConfigEngine 实例的工厂函数\n */\nexport function createConfigEngine(options: ConfigEngineOptions): ConfigEngine {\n return new ConfigEngine(options);\n}\n\n/**\n * 创建全局单例的 ConfigService 工厂\n *\n * @example\n * ```typescript\n * const getConfigService = createGlobalConfigService({\n * db,\n * tables: { systemConfigs, configMetadata, configHistory }\n * });\n *\n * // 在任何地方使用\n * const service = getConfigService();\n * ```\n */\nexport function createGlobalConfigService(options: ConfigServiceOptions): () => ConfigService {\n let instance: ConfigService | null = null;\n\n return () => {\n if (!instance) {\n instance = new ConfigService(options);\n }\n return instance;\n };\n}\n\n/**\n * 创建全局单例的 ConfigEngine 工厂\n *\n * @example\n * ```typescript\n * const getConfigEngine = createGlobalConfigEngine({\n * db,\n * tables: { systemConfigs, configDefinitions, configHistory }\n * });\n *\n * // 在任何地方使用\n * const engine = getConfigEngine();\n * await engine.initialize();\n * ```\n */\nexport function createGlobalConfigEngine(options: ConfigEngineOptions): () => ConfigEngine {\n let instance: ConfigEngine | null = null;\n let isInitializing = false;\n\n return () => {\n if (!instance) {\n instance = new ConfigEngine(options);\n\n // 自动初始化(仅一次)\n if (!isInitializing) {\n isInitializing = true;\n instance.initialize().catch((error) => {\n console.error('[ConfigEngine] 初始化失败:', error);\n });\n }\n }\n return instance;\n };\n}\n\n\n\n\n\n\n\n\n","/**\n * 数据库连接配置管理\n *\n * 注意:这些配置应该从环境变量读取,不存储在数据库中\n * 因为它们是连接数据库本身所需的基础配置\n */\n\nexport interface DatabaseConnectionConfig {\n host: string;\n port: number;\n database: string;\n username: string;\n password: string;\n ssl?: boolean;\n poolSize?: number;\n queryTimeout?: number;\n}\n\nexport interface RedisConnectionConfig {\n host: string;\n port: number;\n password?: string;\n database?: number;\n keyPrefix?: string;\n}\n\n/**\n * 从环境变量解析数据库连接配置\n */\nexport function getDatabaseConfig(): DatabaseConnectionConfig {\n const databaseUrl = process.env.DATABASE_URL;\n\n if (databaseUrl) {\n // 解析 DATABASE_URL\n const url = new URL(databaseUrl);\n return {\n host: url.hostname,\n port: parseInt(url.port) || 5432,\n database: url.pathname.slice(1), // 移除开头的 /\n username: url.username,\n password: url.password,\n ssl: url.searchParams.get('sslmode') === 'require',\n poolSize: parseInt(process.env.DB_POOL_SIZE || '10'),\n queryTimeout: parseInt(process.env.DB_QUERY_TIMEOUT || '30000'),\n };\n }\n\n // 兜底:从单独的环境变量读取\n return {\n host: process.env.DB_HOST || process.env.POSTGRES_HOST || 'localhost',\n port: parseInt(process.env.DB_PORT || process.env.POSTGRES_PORT || '5432'),\n database: process.env.DB_NAME || process.env.POSTGRES_DB || 'lyricnote',\n username: process.env.DB_USER || process.env.POSTGRES_USER || 'lyricnote',\n password: process.env.DB_PASSWORD || process.env.POSTGRES_PASSWORD || '',\n ssl: process.env.DB_SSL === 'true',\n poolSize: parseInt(process.env.DB_POOL_SIZE || '10'),\n queryTimeout: parseInt(process.env.DB_QUERY_TIMEOUT || '30000'),\n };\n}\n\n/**\n * 从环境变量解析 Redis 连接配置\n */\nexport function getRedisConfig(): RedisConnectionConfig {\n const redisUrl = process.env.REDIS_URL;\n\n if (redisUrl) {\n const url = new URL(redisUrl);\n return {\n host: url.hostname,\n port: parseInt(url.port) || 6379,\n password: url.password || undefined,\n database: parseInt(url.pathname.slice(1)) || 0,\n keyPrefix: process.env.REDIS_KEY_PREFIX || 'lyricnote:',\n };\n }\n\n return {\n host: process.env.REDIS_HOST || 'localhost',\n port: parseInt(process.env.REDIS_PORT || '6379'),\n password: process.env.REDIS_PASSWORD || undefined,\n database: parseInt(process.env.REDIS_DB || '0'),\n keyPrefix: process.env.REDIS_KEY_PREFIX || 'lyricnote:',\n };\n}\n\n/**\n * 生成数据库连接 URL\n */\nexport function buildDatabaseUrl(config: DatabaseConnectionConfig): string {\n const { host, port, database, username, password, ssl } = config;\n let url = 'postgresql://' + (username) + ':' + (password) + '@' + (host) + ':' + (port) + '/' + (database);\n\n if (ssl) {\n url += '?sslmode=require';\n }\n\n return url;\n}\n\n/**\n * 生成 Redis 连接 URL\n */\nexport function buildRedisUrl(config: RedisConnectionConfig): string {\n const { host, port, password, database } = config;\n let url = `redis://`;\n\n if (password) {\n url += ':' + (password) + '@';\n }\n\n url += (host) + ':' + (port);\n\n if (database && database !== 0) {\n url += '/' + (database);\n }\n\n return url;\n}\n\n/**\n * 验证数据库连接配置\n */\nexport function validateDatabaseConfig(config: DatabaseConnectionConfig): string[] {\n const errors: string[] = [];\n\n if (!config.host) errors.push('数据库主机地址不能为空');\n if (!config.port || config.port < 1 || config.port > 65535) errors.push('数据库端口号无效');\n if (!config.database) errors.push('数据库名不能为空');\n if (!config.username) errors.push('数据库用户名不能为空');\n if (!config.password) errors.push('数据库密码不能为空');\n\n return errors;\n}\n\n/**\n * 显示数据库连接配置(用于管理界面只读显示)\n * 敏感信息会被掩码处理\n */\nexport function getDatabaseConfigForDisplay(): Record<string, any> {\n const config = getDatabaseConfig();\n\n return {\n // 只显示非敏感信息\n host: config.host,\n port: config.port,\n database: config.database,\n username: config.username,\n password: config.password ? '***' : '',\n ssl: config.ssl || false,\n poolSize: config.poolSize,\n queryTimeout: config.queryTimeout,\n // 连接状态\n connectionString: 'postgresql://' + (config.username) + ':***@' + (config.host) + ':' + (config.port) + '/' + (config.database),\n source: process.env.DATABASE_URL ? 'DATABASE_URL' : 'Environment Variables',\n };\n}\n\n\n\n\n\n\n\n\n"]}