sa2kit 1.6.30 → 1.6.32

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 (251) hide show
  1. package/dist/AliyunOSSProvider-4W47OFEK.mjs +6 -0
  2. package/dist/{AliyunOSSProvider-KJYRIZES.mjs.map → AliyunOSSProvider-4W47OFEK.mjs.map} +1 -1
  3. package/dist/AliyunOSSProvider-HCNGDJL7.js +15 -0
  4. package/dist/{AliyunOSSProvider-FWAKUB2T.js.map → AliyunOSSProvider-HCNGDJL7.js.map} +1 -1
  5. package/dist/ConfigService-3DIC6C3Q.js +21 -0
  6. package/dist/{ConfigService-7MEZXKJ5.js.map → ConfigService-3DIC6C3Q.js.map} +1 -1
  7. package/dist/ConfigService-V6ZK273Z.mjs +4 -0
  8. package/dist/{ConfigService-BV57YYFW.mjs.map → ConfigService-V6ZK273Z.mjs.map} +1 -1
  9. package/dist/LocalStorageProvider-3RVPCQB3.mjs +6 -0
  10. package/dist/{LocalStorageProvider-RTPMUOZ2.mjs.map → LocalStorageProvider-3RVPCQB3.mjs.map} +1 -1
  11. package/dist/LocalStorageProvider-PP7MA5OT.js +15 -0
  12. package/dist/{LocalStorageProvider-XSRCUXOU.js.map → LocalStorageProvider-PP7MA5OT.js.map} +1 -1
  13. package/dist/PMXParser-2VTA737I.js +13 -0
  14. package/dist/{PMXParser-YBS3B6HM.js.map → PMXParser-2VTA737I.js.map} +1 -1
  15. package/dist/PMXParser-RNVQL76A.mjs +4 -0
  16. package/dist/{PMXParser-L6IWHL4I.mjs.map → PMXParser-RNVQL76A.mjs.map} +1 -1
  17. package/dist/analytics/index.js +46 -45
  18. package/dist/analytics/index.js.map +1 -1
  19. package/dist/analytics/index.mjs +45 -44
  20. package/dist/analytics/index.mjs.map +1 -1
  21. package/dist/analytics/server/index.js +4 -4
  22. package/dist/analytics/server/index.js.map +1 -1
  23. package/dist/analytics/server/index.mjs +4 -4
  24. package/dist/analytics/server/index.mjs.map +1 -1
  25. package/dist/api/index.js +5 -5
  26. package/dist/api/index.js.map +1 -1
  27. package/dist/api/index.mjs +5 -5
  28. package/dist/api/index.mjs.map +1 -1
  29. package/dist/audioDetection/index.js +17 -16
  30. package/dist/audioDetection/index.js.map +1 -1
  31. package/dist/audioDetection/index.mjs +17 -16
  32. package/dist/audioDetection/index.mjs.map +1 -1
  33. package/dist/auth/client/index.js +4 -4
  34. package/dist/auth/client/index.mjs +1 -1
  35. package/dist/auth/components/index.js +3 -3
  36. package/dist/auth/components/index.js.map +1 -1
  37. package/dist/auth/components/index.mjs +3 -3
  38. package/dist/auth/components/index.mjs.map +1 -1
  39. package/dist/auth/index.js +29 -29
  40. package/dist/auth/index.mjs +5 -5
  41. package/dist/auth/middleware/index.js +3 -3
  42. package/dist/auth/middleware/index.mjs +2 -2
  43. package/dist/auth/routes/index.js +14 -14
  44. package/dist/auth/routes/index.mjs +2 -2
  45. package/dist/auth/services/index.js +7 -7
  46. package/dist/auth/services/index.mjs +1 -1
  47. package/dist/calendar/index.js +146 -182
  48. package/dist/calendar/index.js.map +1 -1
  49. package/dist/calendar/index.mjs +139 -175
  50. package/dist/calendar/index.mjs.map +1 -1
  51. package/dist/calendar/routes/index.js +1 -1
  52. package/dist/calendar/routes/index.js.map +1 -1
  53. package/dist/calendar/routes/index.mjs +1 -1
  54. package/dist/calendar/routes/index.mjs.map +1 -1
  55. package/dist/{chunk-5YQ5B7IZ.js → chunk-24HGREE6.js} +5 -5
  56. package/dist/{chunk-5YQ5B7IZ.js.map → chunk-24HGREE6.js.map} +1 -1
  57. package/dist/{chunk-6PRFP5EG.js → chunk-25OFOKNF.js} +6 -6
  58. package/dist/chunk-25OFOKNF.js.map +1 -0
  59. package/dist/{chunk-KQGP6BTS.mjs → chunk-3DXPQ4YV.mjs} +6 -6
  60. package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
  61. package/dist/{chunk-3BGPZN4X.mjs → chunk-3NHAT7D4.mjs} +12 -12
  62. package/dist/chunk-3NHAT7D4.mjs.map +1 -0
  63. package/dist/{chunk-MW4BCIZC.mjs → chunk-4HC6M7FK.mjs} +3 -3
  64. package/dist/chunk-4HC6M7FK.mjs.map +1 -0
  65. package/dist/{chunk-ESRCX5TQ.mjs → chunk-52TN2QSS.mjs} +3 -3
  66. package/dist/{chunk-ESRCX5TQ.mjs.map → chunk-52TN2QSS.mjs.map} +1 -1
  67. package/dist/{chunk-CNTILN5J.mjs → chunk-5YQ62BKX.mjs} +20 -19
  68. package/dist/chunk-5YQ62BKX.mjs.map +1 -0
  69. package/dist/{chunk-6W5BMXJG.js → chunk-6OWNMJKG.js} +4 -4
  70. package/dist/{chunk-6W5BMXJG.js.map → chunk-6OWNMJKG.js.map} +1 -1
  71. package/dist/{chunk-DUHZ7VZP.js → chunk-7VRT55ZD.js} +3 -3
  72. package/dist/chunk-7VRT55ZD.js.map +1 -0
  73. package/dist/{chunk-3WOAPLEG.mjs → chunk-EB4NR623.mjs} +27 -26
  74. package/dist/chunk-EB4NR623.mjs.map +1 -0
  75. package/dist/chunk-EI27JKND.mjs +1988 -0
  76. package/dist/chunk-EI27JKND.mjs.map +1 -0
  77. package/dist/{chunk-CD77U7LZ.js → chunk-GBPLX42J.js} +9 -9
  78. package/dist/chunk-GBPLX42J.js.map +1 -0
  79. package/dist/{chunk-TFQF2HDO.mjs → chunk-HDEOCX2L.mjs} +12 -12
  80. package/dist/chunk-HDEOCX2L.mjs.map +1 -0
  81. package/dist/{chunk-TV3VKRJK.mjs → chunk-HDMIOOZY.mjs} +38 -68
  82. package/dist/chunk-HDMIOOZY.mjs.map +1 -0
  83. package/dist/{chunk-OPPF3326.js → chunk-HJ6MH7J7.js} +39 -69
  84. package/dist/chunk-HJ6MH7J7.js.map +1 -0
  85. package/dist/chunk-KO73EBUT.js +80 -0
  86. package/dist/chunk-KO73EBUT.js.map +1 -0
  87. package/dist/{chunk-6YKMCPQI.mjs → chunk-KZKIH4AS.mjs} +4 -4
  88. package/dist/chunk-KZKIH4AS.mjs.map +1 -0
  89. package/dist/{chunk-LX4XX6W7.js → chunk-L47ZOYHL.js} +15 -89
  90. package/dist/chunk-L47ZOYHL.js.map +1 -0
  91. package/dist/{chunk-6MQUBPKB.mjs → chunk-LJ4CCSSY.mjs} +3 -3
  92. package/dist/{chunk-6MQUBPKB.mjs.map → chunk-LJ4CCSSY.mjs.map} +1 -1
  93. package/dist/{chunk-TOC5FSHP.js → chunk-NJ2SNXBJ.js} +12 -12
  94. package/dist/chunk-NJ2SNXBJ.js.map +1 -0
  95. package/dist/{chunk-OCR5DS4C.mjs → chunk-PE5EAHZK.mjs} +3 -3
  96. package/dist/chunk-PE5EAHZK.mjs.map +1 -0
  97. package/dist/{chunk-LZHMNOED.js → chunk-Q5EDCKQA.js} +26 -26
  98. package/dist/chunk-Q5EDCKQA.js.map +1 -0
  99. package/dist/{chunk-CLKKZSPZ.js → chunk-RBKGYWME.js} +20 -19
  100. package/dist/chunk-RBKGYWME.js.map +1 -0
  101. package/dist/{chunk-VRTRSEEH.mjs → chunk-RSJSZ7QH.mjs} +11 -11
  102. package/dist/chunk-RSJSZ7QH.mjs.map +1 -0
  103. package/dist/{chunk-E7RGBAYJ.js → chunk-TDCDEBGP.js} +30 -29
  104. package/dist/chunk-TDCDEBGP.js.map +1 -0
  105. package/dist/{chunk-JZXJQMVE.js → chunk-UIFFDRTE.js} +11 -11
  106. package/dist/chunk-UIFFDRTE.js.map +1 -0
  107. package/dist/{chunk-T5OZHYVM.mjs → chunk-UKT3PLON.mjs} +13 -85
  108. package/dist/chunk-UKT3PLON.mjs.map +1 -0
  109. package/dist/{chunk-UOFTHYIH.js → chunk-UL6XJGUZ.js} +4 -4
  110. package/dist/chunk-UL6XJGUZ.js.map +1 -0
  111. package/dist/chunk-VVWQTO4Y.mjs +77 -0
  112. package/dist/chunk-VVWQTO4Y.mjs.map +1 -0
  113. package/dist/{chunk-A3UP56MS.js → chunk-WA67GZSZ.js} +3 -3
  114. package/dist/chunk-WA67GZSZ.js.map +1 -0
  115. package/dist/{chunk-OLHGZXN3.mjs → chunk-WEEXCPSE.mjs} +5 -5
  116. package/dist/chunk-WEEXCPSE.mjs.map +1 -0
  117. package/dist/chunk-XGBE4SUV.js +2093 -0
  118. package/dist/chunk-XGBE4SUV.js.map +1 -0
  119. package/dist/{chunk-QU5OT4DF.js → chunk-XJ7ZAGC5.js} +5 -5
  120. package/dist/chunk-XJ7ZAGC5.js.map +1 -0
  121. package/dist/{chunk-ZI25QCHD.mjs → chunk-YOTQG4NP.mjs} +25 -25
  122. package/dist/chunk-YOTQG4NP.mjs.map +1 -0
  123. package/dist/{chunk-QAT2RWAO.mjs → chunk-Z36R3P62.mjs} +7 -7
  124. package/dist/chunk-Z36R3P62.mjs.map +1 -0
  125. package/dist/{chunk-7Z5LLJ3A.js → chunk-ZWQJSZEY.js} +13 -13
  126. package/dist/chunk-ZWQJSZEY.js.map +1 -0
  127. package/dist/config/index.js +6 -6
  128. package/dist/config/index.js.map +1 -1
  129. package/dist/config/index.mjs +6 -6
  130. package/dist/config/index.mjs.map +1 -1
  131. package/dist/config/server/index.js +37 -37
  132. package/dist/config/server/index.js.map +1 -1
  133. package/dist/config/server/index.mjs +37 -37
  134. package/dist/config/server/index.mjs.map +1 -1
  135. package/dist/i18n/index.d.mts +2 -2
  136. package/dist/i18n/index.d.ts +2 -2
  137. package/dist/i18n/index.js +16 -17
  138. package/dist/i18n/index.js.map +1 -1
  139. package/dist/i18n/index.mjs +16 -17
  140. package/dist/i18n/index.mjs.map +1 -1
  141. package/dist/imageCrop/index.js +11 -10
  142. package/dist/imageCrop/index.js.map +1 -1
  143. package/dist/imageCrop/index.mjs +11 -10
  144. package/dist/imageCrop/index.mjs.map +1 -1
  145. package/dist/index.d.mts +185 -100
  146. package/dist/index.d.ts +185 -100
  147. package/dist/index.js +225 -249
  148. package/dist/index.js.map +1 -1
  149. package/dist/index.mjs +80 -104
  150. package/dist/index.mjs.map +1 -1
  151. package/dist/logger/index.js +6 -6
  152. package/dist/logger/index.mjs +1 -1
  153. package/dist/mikuFusionGame/index.d.mts +112 -0
  154. package/dist/mikuFusionGame/index.d.ts +112 -0
  155. package/dist/mikuFusionGame/index.js +680 -0
  156. package/dist/mikuFusionGame/index.js.map +1 -0
  157. package/dist/mikuFusionGame/index.mjs +667 -0
  158. package/dist/mikuFusionGame/index.mjs.map +1 -0
  159. package/dist/mmd/admin/index.js +11 -10
  160. package/dist/mmd/admin/index.js.map +1 -1
  161. package/dist/mmd/admin/index.mjs +11 -10
  162. package/dist/mmd/admin/index.mjs.map +1 -1
  163. package/dist/mmd/index.js +223 -241
  164. package/dist/mmd/index.js.map +1 -1
  165. package/dist/mmd/index.mjs +220 -238
  166. package/dist/mmd/index.mjs.map +1 -1
  167. package/dist/mmd/server/index.js +6 -6
  168. package/dist/mmd/server/index.js.map +1 -1
  169. package/dist/mmd/server/index.mjs +6 -6
  170. package/dist/mmd/server/index.mjs.map +1 -1
  171. package/dist/music/index.js +16 -16
  172. package/dist/music/index.mjs +2 -2
  173. package/dist/music/server/index.js +8 -8
  174. package/dist/music/server/index.mjs +1 -1
  175. package/dist/request/index.js +2 -2
  176. package/dist/request/index.js.map +1 -1
  177. package/dist/request/index.mjs +2 -2
  178. package/dist/request/index.mjs.map +1 -1
  179. package/dist/storage/index.js +15 -14
  180. package/dist/storage/index.mjs +3 -2
  181. package/dist/testYourself/admin/index.js +3 -3
  182. package/dist/testYourself/admin/index.mjs +1 -1
  183. package/dist/testYourself/index.js +22 -22
  184. package/dist/testYourself/index.js.map +1 -1
  185. package/dist/testYourself/index.mjs +14 -14
  186. package/dist/testYourself/index.mjs.map +1 -1
  187. package/dist/testYourself/server/index.js +4 -4
  188. package/dist/testYourself/server/index.mjs +1 -1
  189. package/dist/universalExport/index.d.mts +3 -3
  190. package/dist/universalExport/index.d.ts +3 -3
  191. package/dist/universalExport/index.js +48 -47
  192. package/dist/universalExport/index.js.map +1 -1
  193. package/dist/universalExport/index.mjs +48 -47
  194. package/dist/universalExport/index.mjs.map +1 -1
  195. package/dist/universalExport/server/index.js +29 -29
  196. package/dist/universalExport/server/index.js.map +1 -1
  197. package/dist/universalExport/server/index.mjs +28 -28
  198. package/dist/universalExport/server/index.mjs.map +1 -1
  199. package/dist/universalFile/index.d.mts +3 -3
  200. package/dist/universalFile/index.d.ts +3 -3
  201. package/dist/universalFile/index.js +73 -72
  202. package/dist/universalFile/index.js.map +1 -1
  203. package/dist/universalFile/index.mjs +73 -72
  204. package/dist/universalFile/index.mjs.map +1 -1
  205. package/dist/universalFile/server/index.js +258 -260
  206. package/dist/universalFile/server/index.js.map +1 -1
  207. package/dist/universalFile/server/index.mjs +244 -246
  208. package/dist/universalFile/server/index.mjs.map +1 -1
  209. package/dist/utils/index.js +11 -11
  210. package/dist/utils/index.mjs +2 -2
  211. package/package.json +25 -31
  212. package/dist/AliyunOSSProvider-FWAKUB2T.js +0 -15
  213. package/dist/AliyunOSSProvider-KJYRIZES.mjs +0 -6
  214. package/dist/ConfigService-7MEZXKJ5.js +0 -21
  215. package/dist/ConfigService-BV57YYFW.mjs +0 -4
  216. package/dist/LocalStorageProvider-RTPMUOZ2.mjs +0 -6
  217. package/dist/LocalStorageProvider-XSRCUXOU.js +0 -15
  218. package/dist/PMXParser-L6IWHL4I.mjs +0 -4
  219. package/dist/PMXParser-YBS3B6HM.js +0 -13
  220. package/dist/chunk-3BGPZN4X.mjs.map +0 -1
  221. package/dist/chunk-3WOAPLEG.mjs.map +0 -1
  222. package/dist/chunk-6PRFP5EG.js.map +0 -1
  223. package/dist/chunk-6YKMCPQI.mjs.map +0 -1
  224. package/dist/chunk-7Z5LLJ3A.js.map +0 -1
  225. package/dist/chunk-A3UP56MS.js.map +0 -1
  226. package/dist/chunk-CD77U7LZ.js.map +0 -1
  227. package/dist/chunk-CLKKZSPZ.js.map +0 -1
  228. package/dist/chunk-CNTILN5J.mjs.map +0 -1
  229. package/dist/chunk-DUHZ7VZP.js.map +0 -1
  230. package/dist/chunk-DW2ZTOCV.js +0 -1727
  231. package/dist/chunk-DW2ZTOCV.js.map +0 -1
  232. package/dist/chunk-E7RGBAYJ.js.map +0 -1
  233. package/dist/chunk-JZXJQMVE.js.map +0 -1
  234. package/dist/chunk-KQGP6BTS.mjs.map +0 -1
  235. package/dist/chunk-LFG6FPM5.mjs +0 -1597
  236. package/dist/chunk-LFG6FPM5.mjs.map +0 -1
  237. package/dist/chunk-LX4XX6W7.js.map +0 -1
  238. package/dist/chunk-LZHMNOED.js.map +0 -1
  239. package/dist/chunk-MW4BCIZC.mjs.map +0 -1
  240. package/dist/chunk-OCR5DS4C.mjs.map +0 -1
  241. package/dist/chunk-OLHGZXN3.mjs.map +0 -1
  242. package/dist/chunk-OPPF3326.js.map +0 -1
  243. package/dist/chunk-QAT2RWAO.mjs.map +0 -1
  244. package/dist/chunk-QU5OT4DF.js.map +0 -1
  245. package/dist/chunk-T5OZHYVM.mjs.map +0 -1
  246. package/dist/chunk-TFQF2HDO.mjs.map +0 -1
  247. package/dist/chunk-TOC5FSHP.js.map +0 -1
  248. package/dist/chunk-TV3VKRJK.mjs.map +0 -1
  249. package/dist/chunk-UOFTHYIH.js.map +0 -1
  250. package/dist/chunk-VRTRSEEH.mjs.map +0 -1
  251. package/dist/chunk-ZI25QCHD.mjs.map +0 -1
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkLZHMNOED_js = require('../../chunk-LZHMNOED.js');
4
- var chunkOPPF3326_js = require('../../chunk-OPPF3326.js');
3
+ var chunkQ5EDCKQA_js = require('../../chunk-Q5EDCKQA.js');
4
+ var chunkHJ6MH7J7_js = require('../../chunk-HJ6MH7J7.js');
5
5
  var chunkKH6RQ4J5_js = require('../../chunk-KH6RQ4J5.js');
6
- var chunk6PRFP5EG_js = require('../../chunk-6PRFP5EG.js');
6
+ var chunk25OFOKNF_js = require('../../chunk-25OFOKNF.js');
7
7
  var chunkZRAW3HXA_js = require('../../chunk-ZRAW3HXA.js');
8
8
  var chunkDGUM43GV_js = require('../../chunk-DGUM43GV.js');
9
9
  var crypto = require('crypto');
@@ -110,7 +110,7 @@ function createFileServiceFromEnv(db) {
110
110
  };
111
111
  break;
112
112
  default:
113
- throw new Error(`Unsupported storage type: ${storageType}`);
113
+ throw new Error("Unsupported storage type: " + storageType);
114
114
  }
115
115
  return createUniversalFileService({
116
116
  storage,
@@ -243,7 +243,7 @@ function validateStorageConfig(storage) {
243
243
  }
244
244
  default:
245
245
  throw new ConfigValidationError(
246
- `Unsupported storage type: ${storage.type}`,
246
+ "Unsupported storage type: " + storage.type,
247
247
  "storage.type"
248
248
  );
249
249
  }
@@ -275,7 +275,7 @@ function validateEnvironment(requiredVars) {
275
275
  }
276
276
  if (missing.length > 0) {
277
277
  throw new ConfigValidationError(
278
- `Missing required environment variables: ${missing.join(", ")}`,
278
+ "Missing required environment variables: " + missing.join(", "),
279
279
  "environment"
280
280
  );
281
281
  }
@@ -295,7 +295,7 @@ function getRequiredEnvVars(storageType) {
295
295
  return [];
296
296
  }
297
297
  }
298
- var logger = chunk6PRFP5EG_js.createLogger("AliyunCDNProvider");
298
+ var logger = chunk25OFOKNF_js.createLogger("AliyunCDNProvider");
299
299
  var AliyunCDNProvider = class {
300
300
  constructor() {
301
301
  this.type = "aliyun-cdn";
@@ -311,7 +311,7 @@ var AliyunCDNProvider = class {
311
311
  throw new chunkKH6RQ4J5_js.CDNProviderError("\u914D\u7F6E\u7C7B\u578B\u4E0D\u5339\u914D\uFF1A\u671F\u671B aliyun-cdn");
312
312
  }
313
313
  this.config = config;
314
- logger.info(`\u{1F310} [AliyunCDNProvider] \u521D\u59CB\u5316\u963F\u91CC\u4E91CDN\uFF0C\u57DF\u540D: ${this.config.domain}`);
314
+ logger.info("\u{1F310} [AliyunCDNProvider] \u521D\u59CB\u5316\u963F\u91CC\u4E91CDN\uFF0C\u57DF\u540D: " + this.config.domain);
315
315
  try {
316
316
  this.validateConfig();
317
317
  try {
@@ -333,7 +333,7 @@ var AliyunCDNProvider = class {
333
333
  } catch (error) {
334
334
  logger.error("\u274C [AliyunCDNProvider] \u963F\u91CC\u4E91CDN\u521D\u59CB\u5316\u5931\u8D25:", error);
335
335
  throw new chunkKH6RQ4J5_js.CDNProviderError(
336
- `\u963F\u91CC\u4E91CDN\u521D\u59CB\u5316\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
336
+ "\u963F\u91CC\u4E91CDN\u521D\u59CB\u5316\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
337
337
  );
338
338
  }
339
339
  }
@@ -342,16 +342,16 @@ var AliyunCDNProvider = class {
342
342
  */
343
343
  async generateUrl(originalUrl) {
344
344
  this.ensureInitialized();
345
- logger.info(`\u{1F517} [AliyunCDNProvider] \u751F\u6210CDN URL: ${originalUrl}`);
345
+ logger.info("\u{1F517} [AliyunCDNProvider] \u751F\u6210CDN URL: " + originalUrl);
346
346
  try {
347
347
  const url = new URL(originalUrl);
348
- const cdnUrl = `${url.protocol}//${this.config.domain}${url.pathname}${url.search}${url.hash}`;
349
- logger.info(`\u2705 [AliyunCDNProvider] CDN URL\u751F\u6210\u5B8C\u6210: ${cdnUrl}`);
348
+ const cdnUrl = url.protocol + "//" + this.config.domain + url.pathname + url.search + url.hash;
349
+ logger.info("\u2705 [AliyunCDNProvider] CDN URL\u751F\u6210\u5B8C\u6210: " + cdnUrl);
350
350
  return cdnUrl;
351
351
  } catch (error) {
352
- logger.error(`\u274C [AliyunCDNProvider] CDN URL\u751F\u6210\u5931\u8D25: ${originalUrl}:`, error);
352
+ logger.error("\u274C [AliyunCDNProvider] CDN URL\u751F\u6210\u5931\u8D25: " + originalUrl + ":", error);
353
353
  throw new chunkKH6RQ4J5_js.CDNProviderError(
354
- `CDN URL\u751F\u6210\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
354
+ "CDN URL\u751F\u6210\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
355
355
  );
356
356
  }
357
357
  }
@@ -360,7 +360,7 @@ var AliyunCDNProvider = class {
360
360
  */
361
361
  async refreshCache(urls) {
362
362
  this.ensureInitialized();
363
- logger.info(`\u{1F504} [AliyunCDNProvider] \u5F00\u59CB\u5237\u65B0CDN\u7F13\u5B58\uFF0CURL\u6570\u91CF: ${urls.length}`);
363
+ logger.info("\u{1F504} [AliyunCDNProvider] \u5F00\u59CB\u5237\u65B0CDN\u7F13\u5B58\uFF0CURL\u6570\u91CF: " + urls.length);
364
364
  try {
365
365
  const cdnUrls = await Promise.all(urls.map((url) => this.generateUrl(url)));
366
366
  const result = await this.client.refreshObjectCaches({
@@ -370,7 +370,7 @@ var AliyunCDNProvider = class {
370
370
  // File 或 Directory
371
371
  });
372
372
  logger.info(
373
- `\u2705 [AliyunCDNProvider] CDN\u7F13\u5B58\u5237\u65B0\u5B8C\u6210\uFF0C\u4EFB\u52A1ID: ${result.RefreshTaskId || "unknown"}`
373
+ "\u2705 [AliyunCDNProvider] CDN\u7F13\u5B58\u5237\u65B0\u5B8C\u6210\uFF0C\u4EFB\u52A1ID: " + (result.RefreshTaskId || "unknown")
374
374
  );
375
375
  return {
376
376
  success: true,
@@ -384,7 +384,7 @@ var AliyunCDNProvider = class {
384
384
  logger.error(`\u274C [AliyunCDNProvider] CDN\u7F13\u5B58\u5237\u65B0\u5931\u8D25:`, error);
385
385
  return {
386
386
  success: false,
387
- error: `CDN\u7F13\u5B58\u5237\u65B0\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
387
+ error: "CDN\u7F13\u5B58\u5237\u65B0\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
388
388
  };
389
389
  }
390
390
  }
@@ -393,7 +393,7 @@ var AliyunCDNProvider = class {
393
393
  */
394
394
  async preheatCache(urls) {
395
395
  this.ensureInitialized();
396
- logger.info(`\u{1F525} [AliyunCDNProvider] \u5F00\u59CB\u9884\u70EDCDN\u7F13\u5B58\uFF0CURL\u6570\u91CF: ${urls.length}`);
396
+ logger.info("\u{1F525} [AliyunCDNProvider] \u5F00\u59CB\u9884\u70EDCDN\u7F13\u5B58\uFF0CURL\u6570\u91CF: " + urls.length);
397
397
  try {
398
398
  const cdnUrls = await Promise.all(urls.map((url) => this.generateUrl(url)));
399
399
  const result = await this.client.pushObjectCache({
@@ -403,7 +403,7 @@ var AliyunCDNProvider = class {
403
403
  // domestic, overseas, global
404
404
  });
405
405
  logger.info(
406
- `\u2705 [AliyunCDNProvider] CDN\u7F13\u5B58\u9884\u70ED\u5B8C\u6210\uFF0C\u4EFB\u52A1ID: ${result.PushTaskId || "unknown"}`
406
+ "\u2705 [AliyunCDNProvider] CDN\u7F13\u5B58\u9884\u70ED\u5B8C\u6210\uFF0C\u4EFB\u52A1ID: " + (result.PushTaskId || "unknown")
407
407
  );
408
408
  return {
409
409
  success: true,
@@ -417,7 +417,7 @@ var AliyunCDNProvider = class {
417
417
  logger.error(`\u274C [AliyunCDNProvider] CDN\u7F13\u5B58\u9884\u70ED\u5931\u8D25:`, error);
418
418
  return {
419
419
  success: false,
420
- error: `CDN\u7F13\u5B58\u9884\u70ED\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
420
+ error: "CDN\u7F13\u5B58\u9884\u70ED\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
421
421
  };
422
422
  }
423
423
  }
@@ -427,7 +427,7 @@ var AliyunCDNProvider = class {
427
427
  async getAccessStats(startTime, endTime) {
428
428
  this.ensureInitialized();
429
429
  logger.info(
430
- `\u{1F4CA} [AliyunCDNProvider] \u83B7\u53D6CDN\u8BBF\u95EE\u7EDF\u8BA1: ${startTime.toISOString()} - ${endTime.toISOString()}`
430
+ "\u{1F4CA} [AliyunCDNProvider] \u83B7\u53D6CDN\u8BBF\u95EE\u7EDF\u8BA1: " + startTime.toISOString() + " - " + endTime.toISOString()
431
431
  );
432
432
  try {
433
433
  const formatTime = (date) => date.toISOString().slice(0, 19).replace("T", " ") + "Z";
@@ -454,7 +454,7 @@ var AliyunCDNProvider = class {
454
454
  logger.error(`\u274C [AliyunCDNProvider] CDN\u8BBF\u95EE\u7EDF\u8BA1\u83B7\u53D6\u5931\u8D25:`, error);
455
455
  return {
456
456
  success: false,
457
- error: `CDN\u8BBF\u95EE\u7EDF\u8BA1\u83B7\u53D6\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
457
+ error: "CDN\u8BBF\u95EE\u7EDF\u8BA1\u83B7\u53D6\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
458
458
  };
459
459
  }
460
460
  }
@@ -464,7 +464,7 @@ var AliyunCDNProvider = class {
464
464
  */
465
465
  async generateSignedUrl(originalUrl, expiresIn = 3600, authKey) {
466
466
  this.ensureInitialized();
467
- logger.info(`\u{1F510} [AliyunCDNProvider] \u751F\u6210\u9632\u76D7\u94FE\u7B7E\u540DURL: ${originalUrl}`);
467
+ logger.info("\u{1F510} [AliyunCDNProvider] \u751F\u6210\u9632\u76D7\u94FE\u7B7E\u540DURL: " + originalUrl);
468
468
  try {
469
469
  const cdnUrl = await this.generateUrl(originalUrl);
470
470
  if (!authKey) {
@@ -473,15 +473,15 @@ var AliyunCDNProvider = class {
473
473
  }
474
474
  const parsedUrl = new URL(cdnUrl);
475
475
  const timestamp2 = Math.floor(Date.now() / 1e3) + expiresIn;
476
- const signString = `${parsedUrl.pathname}-${timestamp2}-0-0-${authKey}`;
476
+ const signString = parsedUrl.pathname + "-" + timestamp2 + "-0-0-" + authKey;
477
477
  const authValue = crypto.createHash("md5").update(signString).digest("hex");
478
- const signedUrl = `${cdnUrl}?auth_key=${timestamp2}-0-0-${authValue}`;
478
+ const signedUrl = cdnUrl + "?auth_key=" + timestamp2 + "-0-0-" + authValue;
479
479
  logger.info(`\u2705 [AliyunCDNProvider] \u9632\u76D7\u94FE\u7B7E\u540DURL\u751F\u6210\u5B8C\u6210`);
480
480
  return signedUrl;
481
481
  } catch (error) {
482
- logger.error(`\u274C [AliyunCDNProvider] \u9632\u76D7\u94FE\u7B7E\u540DURL\u751F\u6210\u5931\u8D25: ${originalUrl}:`, error);
482
+ logger.error("\u274C [AliyunCDNProvider] \u9632\u76D7\u94FE\u7B7E\u540DURL\u751F\u6210\u5931\u8D25: " + originalUrl + ":", error);
483
483
  throw new chunkKH6RQ4J5_js.CDNProviderError(
484
- `\u9632\u76D7\u94FE\u7B7E\u540DURL\u751F\u6210\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
484
+ "\u9632\u76D7\u94FE\u7B7E\u540DURL\u751F\u6210\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
485
485
  );
486
486
  }
487
487
  }
@@ -504,7 +504,7 @@ var AliyunCDNProvider = class {
504
504
  } catch (error) {
505
505
  return {
506
506
  success: false,
507
- error: `\u67E5\u8BE2\u5237\u65B0\u4EFB\u52A1\u72B6\u6001\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
507
+ error: "\u67E5\u8BE2\u5237\u65B0\u4EFB\u52A1\u72B6\u6001\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
508
508
  };
509
509
  }
510
510
  }
@@ -527,7 +527,7 @@ var AliyunCDNProvider = class {
527
527
  } catch (error) {
528
528
  return {
529
529
  success: false,
530
- error: `\u67E5\u8BE2\u9884\u70ED\u4EFB\u52A1\u72B6\u6001\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
530
+ error: "\u67E5\u8BE2\u9884\u70ED\u4EFB\u52A1\u72B6\u6001\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
531
531
  };
532
532
  }
533
533
  }
@@ -550,7 +550,7 @@ var AliyunCDNProvider = class {
550
550
  } catch (error) {
551
551
  return {
552
552
  success: false,
553
- error: `\u83B7\u53D6\u57DF\u540D\u914D\u7F6E\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
553
+ error: "\u83B7\u53D6\u57DF\u540D\u914D\u7F6E\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
554
554
  };
555
555
  }
556
556
  }
@@ -564,23 +564,23 @@ var AliyunCDNProvider = class {
564
564
  const url = new URL(cdnUrl);
565
565
  const params = new URLSearchParams(url.search);
566
566
  if (options.imageQuality) {
567
- params.set("x-oss-process", `image/quality,q_${options.imageQuality}`);
567
+ params.set("x-oss-process", "image/quality,q_" + options.imageQuality);
568
568
  }
569
569
  if (options.imageFormat) {
570
570
  const formatParam = params.get("x-oss-process") || "image";
571
- params.set("x-oss-process", `${formatParam}/format,${options.imageFormat}`);
571
+ params.set("x-oss-process", formatParam + "/format," + options.imageFormat);
572
572
  }
573
573
  if (options.imageResize) {
574
574
  const resizeParam = params.get("x-oss-process") || "image";
575
575
  let resize = "resize";
576
- if (options.imageResize.width) resize += `,w_${options.imageResize.width}`;
577
- if (options.imageResize.height) resize += `,h_${options.imageResize.height}`;
578
- params.set("x-oss-process", `${resizeParam}/${resize}`);
576
+ if (options.imageResize.width) resize += ",w_" + options.imageResize.width;
577
+ if (options.imageResize.height) resize += ",h_" + options.imageResize.height;
578
+ params.set("x-oss-process", resizeParam + "/" + resize);
579
579
  }
580
580
  url.search = params.toString();
581
581
  return url.toString();
582
582
  } catch (error) {
583
- logger.error(`\u274C [AliyunCDNProvider] URL\u4F18\u5316\u5931\u8D25: ${originalUrl}:`, error);
583
+ logger.error("\u274C [AliyunCDNProvider] URL\u4F18\u5316\u5931\u8D25: " + originalUrl + ":", error);
584
584
  return this.generateUrl(originalUrl);
585
585
  }
586
586
  }
@@ -603,10 +603,10 @@ var AliyunCDNProvider = class {
603
603
  const required = ["domain", "accessKeyId", "accessKeySecret"];
604
604
  const missing = required.filter((key) => !this.config[key]);
605
605
  if (missing.length > 0) {
606
- throw new chunkKH6RQ4J5_js.CDNProviderError(`CDN\u914D\u7F6E\u7F3A\u5C11\u5FC5\u9700\u9879: ${missing.join(", ")}`);
606
+ throw new chunkKH6RQ4J5_js.CDNProviderError("CDN\u914D\u7F6E\u7F3A\u5C11\u5FC5\u9700\u9879: " + missing.join(", "));
607
607
  }
608
608
  if (!this.isValidDomain(this.config.domain)) {
609
- throw new chunkKH6RQ4J5_js.CDNProviderError(`\u65E0\u6548\u7684CDN\u57DF\u540D: ${this.config.domain}`);
609
+ throw new chunkKH6RQ4J5_js.CDNProviderError("\u65E0\u6548\u7684CDN\u57DF\u540D: " + this.config.domain);
610
610
  }
611
611
  }
612
612
  /**
@@ -636,15 +636,15 @@ var AliyunCDNProvider = class {
636
636
  async refreshObjectCaches(params) {
637
637
  logger.info("\u{1F504} [MockCDN] \u6A21\u62DF\u5237\u65B0\u7F13\u5B58:", params);
638
638
  return {
639
- RefreshTaskId: `mock-refresh-${Date.now()}`,
640
- RequestId: `mock-request-${Date.now()}`
639
+ RefreshTaskId: "mock-refresh-" + Date.now(),
640
+ RequestId: "mock-request-" + Date.now()
641
641
  };
642
642
  },
643
643
  async pushObjectCache(params) {
644
644
  logger.info("\u{1F525} [MockCDN] \u6A21\u62DF\u9884\u70ED\u7F13\u5B58:", params);
645
645
  return {
646
- PushTaskId: `mock-push-${Date.now()}`,
647
- RequestId: `mock-request-${Date.now()}`
646
+ PushTaskId: "mock-push-" + Date.now(),
647
+ RequestId: "mock-request-" + Date.now()
648
648
  };
649
649
  },
650
650
  async describeRefreshTasks(params) {
@@ -660,7 +660,7 @@ var AliyunCDNProvider = class {
660
660
  }
661
661
  ]
662
662
  },
663
- RequestId: `mock-request-${Date.now()}`
663
+ RequestId: "mock-request-" + Date.now()
664
664
  };
665
665
  },
666
666
  async describePushTasks(params) {
@@ -676,7 +676,7 @@ var AliyunCDNProvider = class {
676
676
  }
677
677
  ]
678
678
  },
679
- RequestId: `mock-request-${Date.now()}`
679
+ RequestId: "mock-request-" + Date.now()
680
680
  };
681
681
  },
682
682
  async describeDomainConfigs(params) {
@@ -691,7 +691,7 @@ var AliyunCDNProvider = class {
691
691
  }
692
692
  ]
693
693
  },
694
- RequestId: `mock-request-${Date.now()}`
694
+ RequestId: "mock-request-" + Date.now()
695
695
  };
696
696
  },
697
697
  async describeCdnDomainLogs(params) {
@@ -700,7 +700,7 @@ var AliyunCDNProvider = class {
700
700
  DomainLogDetails: {
701
701
  DomainLogDetail: []
702
702
  },
703
- RequestId: `mock-request-${Date.now()}`
703
+ RequestId: "mock-request-" + Date.now()
704
704
  };
705
705
  },
706
706
  async describeDomainRealTimeData(params) {
@@ -715,7 +715,7 @@ var AliyunCDNProvider = class {
715
715
  ]
716
716
  },
717
717
  DataInterval: "60",
718
- RequestId: `mock-request-${Date.now()}`
718
+ RequestId: "mock-request-" + Date.now()
719
719
  };
720
720
  }
721
721
  };
@@ -726,7 +726,7 @@ var AliyunCDNProvider = class {
726
726
  async batchRefreshCache(urls, batchSize = 20, onProgress) {
727
727
  this.ensureInitialized();
728
728
  logger.info(
729
- `\u{1F504} [AliyunCDNProvider] \u5F00\u59CB\u6279\u91CF\u5237\u65B0\u7F13\u5B58\uFF0C\u603BURL\u6570: ${urls.length}\uFF0C\u6279\u6B21\u5927\u5C0F: ${batchSize}`
729
+ "\u{1F504} [AliyunCDNProvider] \u5F00\u59CB\u6279\u91CF\u5237\u65B0\u7F13\u5B58\uFF0C\u603BURL\u6570: " + urls.length + "\uFF0C\u6279\u6B21\u5927\u5C0F: " + batchSize
730
730
  );
731
731
  try {
732
732
  const results = [];
@@ -744,7 +744,7 @@ var AliyunCDNProvider = class {
744
744
  }
745
745
  }
746
746
  const successCount = results.filter((r) => r.success).length;
747
- logger.info(`\u2705 [AliyunCDNProvider] \u6279\u91CF\u5237\u65B0\u5B8C\u6210\uFF0C\u6210\u529F: ${successCount}/${results.length}`);
747
+ logger.info("\u2705 [AliyunCDNProvider] \u6279\u91CF\u5237\u65B0\u5B8C\u6210\uFF0C\u6210\u529F: " + successCount + "/" + results.length);
748
748
  return {
749
749
  success: successCount === results.length,
750
750
  data: {
@@ -757,7 +757,7 @@ var AliyunCDNProvider = class {
757
757
  logger.error(`\u274C [AliyunCDNProvider] \u6279\u91CF\u5237\u65B0\u5931\u8D25:`, error);
758
758
  return {
759
759
  success: false,
760
- error: `\u6279\u91CF\u5237\u65B0\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
760
+ error: "\u6279\u91CF\u5237\u65B0\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
761
761
  };
762
762
  }
763
763
  }
@@ -967,7 +967,7 @@ var CdnCacheStrategy = class {
967
967
  Expires: new Date(Date.now() + strategy.browserCacheTtl * 1e3).toUTCString()
968
968
  };
969
969
  if (strategy.browserCache) {
970
- headers["ETag"] = `"${Date.now()}"`;
970
+ headers["ETag"] = '"' + Date.now() + '"';
971
971
  }
972
972
  headers["Last-Modified"] = (/* @__PURE__ */ new Date()).toUTCString();
973
973
  if (strategy.type === "static" /* STATIC */) {
@@ -1046,7 +1046,7 @@ var CdnCacheStrategy = class {
1046
1046
  if (stats.hitRate < 60) {
1047
1047
  suggestions.push({
1048
1048
  type,
1049
- issue: `${type}\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u547D\u4E2D\u7387\u8FC7\u4F4E (${stats.hitRate.toFixed(1)}%)`,
1049
+ issue: type + "\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u547D\u4E2D\u7387\u8FC7\u4F4E (" + stats.hitRate.toFixed(1) + "%)",
1050
1050
  suggestion: "\u8003\u8651\u589E\u52A0\u7F13\u5B58\u65F6\u95F4\u6216\u542F\u7528\u9884\u70ED\u673A\u5236",
1051
1051
  severity: stats.hitRate < 30 ? "high" : "medium"
1052
1052
  });
@@ -1054,7 +1054,7 @@ var CdnCacheStrategy = class {
1054
1054
  if (stats.estimatedSize > 1024 * 1024 * 1024) {
1055
1055
  suggestions.push({
1056
1056
  type,
1057
- issue: `${type}\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u5360\u7528\u7A7A\u95F4\u8FC7\u5927 (${(stats.estimatedSize / 1024 / 1024 / 1024).toFixed(2)}GB)`,
1057
+ issue: type + "\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u5360\u7528\u7A7A\u95F4\u8FC7\u5927 (" + (stats.estimatedSize / 1024 / 1024 / 1024).toFixed(2) + "GB)",
1058
1058
  suggestion: "\u8003\u8651\u51CF\u5C11\u7F13\u5B58\u65F6\u95F4\u6216\u4F18\u5316\u6587\u4EF6\u538B\u7F29",
1059
1059
  severity: "medium"
1060
1060
  });
@@ -1089,7 +1089,7 @@ var CdnCacheStrategy = class {
1089
1089
  }
1090
1090
  };
1091
1091
  var cdnCacheStrategy = new CdnCacheStrategy();
1092
- var logger2 = chunk6PRFP5EG_js.createLogger("ImageProcessor");
1092
+ var logger2 = chunk25OFOKNF_js.createLogger("ImageProcessor");
1093
1093
  var ImageProcessor = class {
1094
1094
  constructor() {
1095
1095
  this.type = "image";
@@ -1126,16 +1126,16 @@ var ImageProcessor = class {
1126
1126
  }
1127
1127
  const imageOptions = options;
1128
1128
  const startTime = Date.now();
1129
- logger2.info(`\u{1F5BC}\uFE0F [ImageProcessor] \u5F00\u59CB\u5904\u7406\u56FE\u7247: ${inputPath}`);
1129
+ logger2.info("\u{1F5BC}\uFE0F [ImageProcessor] \u5F00\u59CB\u5904\u7406\u56FE\u7247: " + inputPath);
1130
1130
  try {
1131
1131
  if (!fs.existsSync(inputPath)) {
1132
- throw new Error(`\u8F93\u5165\u6587\u4EF6\u4E0D\u5B58\u5728: ${inputPath}`);
1132
+ throw new Error("\u8F93\u5165\u6587\u4EF6\u4E0D\u5B58\u5728: " + inputPath);
1133
1133
  }
1134
1134
  const outputDir = path3__namespace.dirname(outputPath);
1135
1135
  await fs.promises.mkdir(outputDir, { recursive: true });
1136
1136
  const metadata = await this.getImageMetadata(inputPath);
1137
1137
  logger2.info(
1138
- `\u{1F4CA} [ImageProcessor] \u56FE\u7247\u4FE1\u606F: ${metadata.width}x${metadata.height}, \u683C\u5F0F: ${metadata.format}`
1138
+ "\u{1F4CA} [ImageProcessor] \u56FE\u7247\u4FE1\u606F: " + metadata.width + "x" + metadata.height + ", \u683C\u5F0F: " + metadata.format
1139
1139
  );
1140
1140
  let sharpInstance = this.sharp(inputPath);
1141
1141
  sharpInstance = await this.applyImageOperations(sharpInstance, imageOptions);
@@ -1147,7 +1147,7 @@ var ImageProcessor = class {
1147
1147
  thumbnailPath = await this.generateThumbnail(inputPath, outputPath, imageOptions);
1148
1148
  }
1149
1149
  const processingTime = Date.now() - startTime;
1150
- logger2.info(`\u2705 [ImageProcessor] \u56FE\u7247\u5904\u7406\u5B8C\u6210: ${outputPath}, \u8017\u65F6: ${processingTime}ms`);
1150
+ logger2.info("\u2705 [ImageProcessor] \u56FE\u7247\u5904\u7406\u5B8C\u6210: " + outputPath + ", \u8017\u65F6: " + processingTime + "ms");
1151
1151
  return {
1152
1152
  success: true,
1153
1153
  processedPath: outputPath,
@@ -1169,10 +1169,10 @@ var ImageProcessor = class {
1169
1169
  }
1170
1170
  };
1171
1171
  } catch (error) {
1172
- console.error(`\u274C [ImageProcessor] \u56FE\u7247\u5904\u7406\u5931\u8D25: ${inputPath}:`, error);
1172
+ console.error("\u274C [ImageProcessor] \u56FE\u7247\u5904\u7406\u5931\u8D25: " + inputPath + ":", error);
1173
1173
  return {
1174
1174
  success: false,
1175
- error: `\u56FE\u7247\u5904\u7406\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`,
1175
+ error: "\u56FE\u7247\u5904\u7406\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"),
1176
1176
  processingTime: Date.now() - startTime
1177
1177
  };
1178
1178
  }
@@ -1216,7 +1216,7 @@ var ImageProcessor = class {
1216
1216
  megapixels: metadata.width * metadata.height / 1e6
1217
1217
  };
1218
1218
  } catch (error) {
1219
- console.error(`\u274C [ImageProcessor] \u83B7\u53D6\u56FE\u7247\u4FE1\u606F\u5931\u8D25: ${filePath}:`, error);
1219
+ console.error("\u274C [ImageProcessor] \u83B7\u53D6\u56FE\u7247\u4FE1\u606F\u5931\u8D25: " + filePath + ":", error);
1220
1220
  throw error;
1221
1221
  }
1222
1222
  }
@@ -1245,8 +1245,8 @@ var ImageProcessor = class {
1245
1245
  orientation: metadata.orientation
1246
1246
  };
1247
1247
  } catch (error) {
1248
- console.error(`\u274C [ImageProcessor] \u83B7\u53D6\u56FE\u7247\u5143\u6570\u636E\u5931\u8D25: ${filePath}:`, error);
1249
- throw new Error(`\u65E0\u6CD5\u8BFB\u53D6\u56FE\u7247\u5143\u6570\u636E: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`);
1248
+ console.error("\u274C [ImageProcessor] \u83B7\u53D6\u56FE\u7247\u5143\u6570\u636E\u5931\u8D25: " + filePath + ":", error);
1249
+ throw new Error("\u65E0\u6CD5\u8BFB\u53D6\u56FE\u7247\u5143\u6570\u636E: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"));
1250
1250
  }
1251
1251
  }
1252
1252
  /**
@@ -1264,7 +1264,7 @@ var ImageProcessor = class {
1264
1264
  };
1265
1265
  sharpInstance = sharpInstance.resize(resizeOptions);
1266
1266
  logger2.info(
1267
- `\u{1F527} [ImageProcessor] \u5E94\u7528\u5C3A\u5BF8\u8C03\u6574: ${options.width || "auto"}x${options.height || "auto"}`
1267
+ "\u{1F527} [ImageProcessor] \u5E94\u7528\u5C3A\u5BF8\u8C03\u6574: " + (options.width || "auto") + "x" + (options.height || "auto")
1268
1268
  );
1269
1269
  }
1270
1270
  sharpInstance = sharpInstance.rotate();
@@ -1279,7 +1279,7 @@ var ImageProcessor = class {
1279
1279
  async applyWatermark(sharpInstance, watermarkOptions) {
1280
1280
  try {
1281
1281
  if (watermarkOptions.text) {
1282
- logger2.info(`\u{1F4A7} [ImageProcessor] \u5E94\u7528\u6587\u5B57\u6C34\u5370: ${watermarkOptions.text}`);
1282
+ logger2.info("\u{1F4A7} [ImageProcessor] \u5E94\u7528\u6587\u5B57\u6C34\u5370: " + watermarkOptions.text);
1283
1283
  const textSvg = this.createTextWatermarkSvg(
1284
1284
  watermarkOptions.text,
1285
1285
  watermarkOptions.opacity || 0.5
@@ -1292,7 +1292,7 @@ var ImageProcessor = class {
1292
1292
  }
1293
1293
  ]);
1294
1294
  } else if (watermarkOptions.image && fs.existsSync(watermarkOptions.image)) {
1295
- logger2.info(`\u{1F4A7} [ImageProcessor] \u5E94\u7528\u56FE\u7247\u6C34\u5370: ${watermarkOptions.image}`);
1295
+ logger2.info("\u{1F4A7} [ImageProcessor] \u5E94\u7528\u56FE\u7247\u6C34\u5370: " + watermarkOptions.image);
1296
1296
  let watermarkBuffer = await fs.promises.readFile(watermarkOptions.image);
1297
1297
  if (watermarkOptions.opacity && watermarkOptions.opacity < 1) {
1298
1298
  const watermarkSharp = this.sharp(watermarkBuffer).png().modulate({ brightness: 1, saturation: 1, alpha: watermarkOptions.opacity });
@@ -1317,8 +1317,7 @@ var ImageProcessor = class {
1317
1317
  createTextWatermarkSvg(text2, opacity) {
1318
1318
  const fontSize = 24;
1319
1319
  const padding = 10;
1320
- return `
1321
- <svg width="200" height="50" xmlns="http://www.w3.org/2000/svg">
1320
+ return `<svg width="200" height="50" xmlns="http://www.w3.org/2000/svg">
1322
1321
  <text
1323
1322
  x="${padding}"
1324
1323
  y="${fontSize + padding}"
@@ -1332,8 +1331,7 @@ var ImageProcessor = class {
1332
1331
  >
1333
1332
  ${text2}
1334
1333
  </text>
1335
- </svg>
1336
- `.trim();
1334
+ </svg>`.trim();
1337
1335
  }
1338
1336
  /**
1339
1337
  * 获取水印位置对应的gravity值
@@ -1418,7 +1416,7 @@ var ImageProcessor = class {
1418
1416
  fit: "cover",
1419
1417
  position: "center"
1420
1418
  }).jpeg({ quality: 70 }).toFile(thumbnailPath);
1421
- logger2.info(`\u{1F5BC}\uFE0F [ImageProcessor] \u7F29\u7565\u56FE\u751F\u6210\u5B8C\u6210: ${thumbnailPath}`);
1419
+ logger2.info("\u{1F5BC}\uFE0F [ImageProcessor] \u7F29\u7565\u56FE\u751F\u6210\u5B8C\u6210: " + thumbnailPath);
1422
1420
  return thumbnailPath;
1423
1421
  } catch (error) {
1424
1422
  console.warn(`\u26A0\uFE0F [ImageProcessor] \u7F29\u7565\u56FE\u751F\u6210\u5931\u8D25:`, error);
@@ -1431,7 +1429,7 @@ var ImageProcessor = class {
1431
1429
  getThumbnailPath(originalPath) {
1432
1430
  const ext = path3__namespace.extname(originalPath);
1433
1431
  const basePath = originalPath.replace(ext, "");
1434
- return `${basePath}_thumb${ext}`;
1432
+ return basePath + "_thumb" + ext;
1435
1433
  }
1436
1434
  /**
1437
1435
  * 创建模拟Sharp对象(开发测试用)
@@ -1439,7 +1437,7 @@ var ImageProcessor = class {
1439
1437
  createMockSharp() {
1440
1438
  logger2.info("\u{1F9EA} [ImageProcessor] \u521B\u5EFA\u6A21\u62DFSharp\u5904\u7406\u5668");
1441
1439
  const mockSharp = (input) => {
1442
- logger2.info(`\u{1F9EA} [MockSharp] \u5904\u7406\u56FE\u7247: ${input}`);
1440
+ logger2.info("\u{1F9EA} [MockSharp] \u5904\u7406\u56FE\u7247: " + input);
1443
1441
  return {
1444
1442
  metadata: async () => ({
1445
1443
  format: "jpeg",
@@ -1478,10 +1476,10 @@ var ImageProcessor = class {
1478
1476
  return mockSharp(input);
1479
1477
  },
1480
1478
  toFile: async (outputPath) => {
1481
- logger2.info(`\u{1F9EA} [MockSharp] \u4FDD\u5B58\u5230\u6587\u4EF6: ${outputPath}`);
1479
+ logger2.info("\u{1F9EA} [MockSharp] \u4FDD\u5B58\u5230\u6587\u4EF6: " + outputPath);
1482
1480
  const outputDir = path3__namespace.dirname(outputPath);
1483
1481
  await fs.promises.mkdir(outputDir, { recursive: true });
1484
- await fs.promises.writeFile(outputPath, `Mock processed image from ${input}`);
1482
+ await fs.promises.writeFile(outputPath, "Mock processed image from " + input);
1485
1483
  return {
1486
1484
  format: "jpeg",
1487
1485
  width: 800,
@@ -1505,7 +1503,7 @@ var ImageProcessor = class {
1505
1503
  */
1506
1504
  async batchProcess(inputPaths, outputDir, options, onProgress) {
1507
1505
  this.ensureInitialized();
1508
- logger2.info(`\u{1F5BC}\uFE0F [ImageProcessor] \u5F00\u59CB\u6279\u91CF\u5904\u7406 ${inputPaths.length} \u5F20\u56FE\u7247`);
1506
+ logger2.info("\u{1F5BC}\uFE0F [ImageProcessor] \u5F00\u59CB\u6279\u91CF\u5904\u7406 " + inputPaths.length + " \u5F20\u56FE\u7247");
1509
1507
  const results = [];
1510
1508
  for (let i = 0; i < inputPaths.length; i++) {
1511
1509
  const inputPath = inputPaths[i];
@@ -1518,19 +1516,19 @@ var ImageProcessor = class {
1518
1516
  onProgress(i + 1, inputPaths.length);
1519
1517
  }
1520
1518
  } catch (error) {
1521
- console.error(`\u274C [ImageProcessor] \u6279\u91CF\u5904\u7406\u5931\u8D25: ${inputPath}:`, error);
1519
+ console.error("\u274C [ImageProcessor] \u6279\u91CF\u5904\u7406\u5931\u8D25: " + inputPath + ":", error);
1522
1520
  results.push({
1523
1521
  success: false,
1524
- error: `\u5904\u7406\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
1522
+ error: "\u5904\u7406\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
1525
1523
  });
1526
1524
  }
1527
1525
  }
1528
1526
  const successCount = results.filter((r) => r.success).length;
1529
- logger2.info(`\u2705 [ImageProcessor] \u6279\u91CF\u5904\u7406\u5B8C\u6210\uFF0C\u6210\u529F: ${successCount}/${inputPaths.length}`);
1527
+ logger2.info("\u2705 [ImageProcessor] \u6279\u91CF\u5904\u7406\u5B8C\u6210\uFF0C\u6210\u529F: " + successCount + "/" + inputPaths.length);
1530
1528
  return results;
1531
1529
  }
1532
1530
  };
1533
- var logger3 = chunk6PRFP5EG_js.createLogger("AudioProcessor");
1531
+ var logger3 = chunk25OFOKNF_js.createLogger("AudioProcessor");
1534
1532
  var AudioProcessor = class {
1535
1533
  constructor() {
1536
1534
  this.type = "audio";
@@ -1567,22 +1565,22 @@ var AudioProcessor = class {
1567
1565
  }
1568
1566
  const audioOptions = options;
1569
1567
  const startTime = Date.now();
1570
- logger3.info(`\u{1F3B5} [AudioProcessor] \u5F00\u59CB\u5904\u7406\u97F3\u9891: ${inputPath}`);
1568
+ logger3.info("\u{1F3B5} [AudioProcessor] \u5F00\u59CB\u5904\u7406\u97F3\u9891: " + inputPath);
1571
1569
  try {
1572
1570
  if (!fs.existsSync(inputPath)) {
1573
- throw new Error(`\u8F93\u5165\u6587\u4EF6\u4E0D\u5B58\u5728: ${inputPath}`);
1571
+ throw new Error("\u8F93\u5165\u6587\u4EF6\u4E0D\u5B58\u5728: " + inputPath);
1574
1572
  }
1575
1573
  const outputDir = path3__namespace.dirname(outputPath);
1576
1574
  await fs.promises.mkdir(outputDir, { recursive: true });
1577
1575
  const metadata = await this.getAudioMetadata(inputPath);
1578
1576
  logger3.info(
1579
- `\u{1F4CA} [AudioProcessor] \u97F3\u9891\u4FE1\u606F: ${this.formatDuration(metadata.duration)}, ${metadata.bitrate}kbps, ${metadata.sampleRate}Hz`
1577
+ "\u{1F4CA} [AudioProcessor] \u97F3\u9891\u4FE1\u606F: " + this.formatDuration(metadata.duration) + ", " + metadata.bitrate + "kbps, " + metadata.sampleRate + "Hz"
1580
1578
  );
1581
1579
  const outputFormat = this.determineOutputFormat(outputPath, audioOptions.format);
1582
1580
  await this.processAudio(inputPath, outputPath, audioOptions, outputFormat);
1583
1581
  const processedStats = await fs.promises.stat(outputPath);
1584
1582
  const processingTime = Date.now() - startTime;
1585
- logger3.info(`\u2705 [AudioProcessor] \u97F3\u9891\u5904\u7406\u5B8C\u6210: ${outputPath}, \u8017\u65F6: ${processingTime}ms`);
1583
+ logger3.info("\u2705 [AudioProcessor] \u97F3\u9891\u5904\u7406\u5B8C\u6210: " + outputPath + ", \u8017\u65F6: " + processingTime + "ms");
1586
1584
  return {
1587
1585
  success: true,
1588
1586
  processedPath: outputPath,
@@ -1602,10 +1600,10 @@ var AudioProcessor = class {
1602
1600
  }
1603
1601
  };
1604
1602
  } catch (error) {
1605
- console.error(`\u274C [AudioProcessor] \u97F3\u9891\u5904\u7406\u5931\u8D25: ${inputPath}:`, error);
1603
+ console.error("\u274C [AudioProcessor] \u97F3\u9891\u5904\u7406\u5931\u8D25: " + inputPath + ":", error);
1606
1604
  return {
1607
1605
  success: false,
1608
- error: `\u97F3\u9891\u5904\u7406\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`,
1606
+ error: "\u97F3\u9891\u5904\u7406\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"),
1609
1607
  processingTime: Date.now() - startTime
1610
1608
  };
1611
1609
  }
@@ -1653,7 +1651,7 @@ var AudioProcessor = class {
1653
1651
  quality: this.getQualityDescription(metadata.bitrate, metadata.sampleRate)
1654
1652
  };
1655
1653
  } catch (error) {
1656
- console.error(`\u274C [AudioProcessor] \u83B7\u53D6\u97F3\u9891\u4FE1\u606F\u5931\u8D25: ${filePath}:`, error);
1654
+ console.error("\u274C [AudioProcessor] \u83B7\u53D6\u97F3\u9891\u4FE1\u606F\u5931\u8D25: " + filePath + ":", error);
1657
1655
  throw error;
1658
1656
  }
1659
1657
  }
@@ -1674,8 +1672,8 @@ var AudioProcessor = class {
1674
1672
  try {
1675
1673
  this.ffmpeg.ffprobe(filePath, (err, metadata) => {
1676
1674
  if (err) {
1677
- console.error(`\u274C [AudioProcessor] \u83B7\u53D6\u97F3\u9891\u5143\u6570\u636E\u5931\u8D25: ${filePath}:`, err);
1678
- reject(new Error(`\u65E0\u6CD5\u8BFB\u53D6\u97F3\u9891\u5143\u6570\u636E: ${err.message}`));
1675
+ console.error("\u274C [AudioProcessor] \u83B7\u53D6\u97F3\u9891\u5143\u6570\u636E\u5931\u8D25: " + filePath + ":", err);
1676
+ reject(new Error("\u65E0\u6CD5\u8BFB\u53D6\u97F3\u9891\u5143\u6570\u636E: " + err.message));
1679
1677
  return;
1680
1678
  }
1681
1679
  const audioStream = metadata.streams?.find(
@@ -1712,28 +1710,28 @@ var AudioProcessor = class {
1712
1710
  command = this.setAudioCodec(command, outputFormat);
1713
1711
  if (options.bitrate) {
1714
1712
  command = command.audioBitrate(options.bitrate);
1715
- logger3.info(`\u{1F527} [AudioProcessor] \u8BBE\u7F6E\u6BD4\u7279\u7387: ${options.bitrate}kbps`);
1713
+ logger3.info("\u{1F527} [AudioProcessor] \u8BBE\u7F6E\u6BD4\u7279\u7387: " + options.bitrate + "kbps");
1716
1714
  }
1717
1715
  if (options.sampleRate) {
1718
1716
  command = command.audioFrequency(options.sampleRate);
1719
- logger3.info(`\u{1F527} [AudioProcessor] \u8BBE\u7F6E\u91C7\u6837\u7387: ${options.sampleRate}Hz`);
1717
+ logger3.info("\u{1F527} [AudioProcessor] \u8BBE\u7F6E\u91C7\u6837\u7387: " + options.sampleRate + "Hz");
1720
1718
  }
1721
1719
  if (options.channels) {
1722
1720
  command = command.audioChannels(options.channels);
1723
- logger3.info(`\u{1F527} [AudioProcessor] \u8BBE\u7F6E\u58F0\u9053\u6570: ${options.channels}`);
1721
+ logger3.info("\u{1F527} [AudioProcessor] \u8BBE\u7F6E\u58F0\u9053\u6570: " + options.channels);
1724
1722
  }
1725
1723
  command = command.format(outputFormat);
1726
1724
  command.on("progress", (progress) => {
1727
1725
  if (progress.percent) {
1728
- logger3.info(`\u{1F3B5} [AudioProcessor] \u5904\u7406\u8FDB\u5EA6: ${Math.round(progress.percent)}%`);
1726
+ logger3.info("\u{1F3B5} [AudioProcessor] \u5904\u7406\u8FDB\u5EA6: " + Math.round(progress.percent) + "%");
1729
1727
  }
1730
1728
  });
1731
1729
  command.on("error", (err) => {
1732
1730
  console.error(`\u274C [AudioProcessor] FFmpeg\u5904\u7406\u9519\u8BEF:`, err);
1733
- reject(new Error(`\u97F3\u9891\u5904\u7406\u5931\u8D25: ${err.message}`));
1731
+ reject(new Error("\u97F3\u9891\u5904\u7406\u5931\u8D25: " + err.message));
1734
1732
  });
1735
1733
  command.on("end", () => {
1736
- logger3.info(`\u2705 [AudioProcessor] FFmpeg\u5904\u7406\u5B8C\u6210: ${outputPath}`);
1734
+ logger3.info("\u2705 [AudioProcessor] FFmpeg\u5904\u7406\u5B8C\u6210: " + outputPath);
1737
1735
  resolve();
1738
1736
  });
1739
1737
  command.save(outputPath);
@@ -1782,7 +1780,7 @@ var AudioProcessor = class {
1782
1780
  formatDuration(seconds) {
1783
1781
  const minutes = Math.floor(seconds / 60);
1784
1782
  const remainingSeconds = Math.floor(seconds % 60);
1785
- return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
1783
+ return minutes + ":" + remainingSeconds.toString().padStart(2, "0");
1786
1784
  }
1787
1785
  /**
1788
1786
  * 获取声道描述
@@ -1798,7 +1796,7 @@ var AudioProcessor = class {
1798
1796
  case 8:
1799
1797
  return "7.1\u73AF\u7ED5\u58F0";
1800
1798
  default:
1801
- return `${channels}\u58F0\u9053`;
1799
+ return channels + "\u58F0\u9053";
1802
1800
  }
1803
1801
  }
1804
1802
  /**
@@ -1821,30 +1819,30 @@ var AudioProcessor = class {
1821
1819
  createMockFFmpeg() {
1822
1820
  logger3.info("\u{1F9EA} [AudioProcessor] \u521B\u5EFA\u6A21\u62DFFFmpeg\u5904\u7406\u5668");
1823
1821
  const mockFFmpeg = (input) => {
1824
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u5904\u7406\u97F3\u9891: ${input}`);
1822
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u5904\u7406\u97F3\u9891: " + input);
1825
1823
  return {
1826
1824
  audioBitrate: (bitrate) => {
1827
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u6BD4\u7279\u7387: ${bitrate}kbps`);
1825
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u6BD4\u7279\u7387: " + bitrate + "kbps");
1828
1826
  return mockFFmpeg(input);
1829
1827
  },
1830
1828
  audioFrequency: (sampleRate) => {
1831
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u91C7\u6837\u7387: ${sampleRate}Hz`);
1829
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u91C7\u6837\u7387: " + sampleRate + "Hz");
1832
1830
  return mockFFmpeg(input);
1833
1831
  },
1834
1832
  audioChannels: (channels) => {
1835
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u58F0\u9053\u6570: ${channels}`);
1833
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u58F0\u9053\u6570: " + channels);
1836
1834
  return mockFFmpeg(input);
1837
1835
  },
1838
1836
  audioCodec: (codec) => {
1839
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u7F16\u89E3\u7801\u5668: ${codec}`);
1837
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u7F16\u89E3\u7801\u5668: " + codec);
1840
1838
  return mockFFmpeg(input);
1841
1839
  },
1842
1840
  format: (format) => {
1843
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u8F93\u51FA\u683C\u5F0F: ${format}`);
1841
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u8F93\u51FA\u683C\u5F0F: " + format);
1844
1842
  return mockFFmpeg(input);
1845
1843
  },
1846
1844
  on: (event, callback) => {
1847
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u6CE8\u518C\u4E8B\u4EF6\u76D1\u542C: ${event}`);
1845
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u6CE8\u518C\u4E8B\u4EF6\u76D1\u542C: " + event);
1848
1846
  if (event === "progress") {
1849
1847
  setTimeout(() => callback({ percent: 50 }), 100);
1850
1848
  setTimeout(() => callback({ percent: 100 }), 200);
@@ -1854,15 +1852,15 @@ var AudioProcessor = class {
1854
1852
  return mockFFmpeg(input);
1855
1853
  },
1856
1854
  save: async (outputPath) => {
1857
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u4FDD\u5B58\u97F3\u9891\u6587\u4EF6: ${outputPath}`);
1855
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u4FDD\u5B58\u97F3\u9891\u6587\u4EF6: " + outputPath);
1858
1856
  const outputDir = path3__namespace.dirname(outputPath);
1859
1857
  await fs.promises.mkdir(outputDir, { recursive: true });
1860
- await fs.promises.writeFile(outputPath, `Mock processed audio from ${input}`);
1858
+ await fs.promises.writeFile(outputPath, "Mock processed audio from " + input);
1861
1859
  }
1862
1860
  };
1863
1861
  };
1864
1862
  mockFFmpeg.ffprobe = (filePath, callback) => {
1865
- logger3.info(`\u{1F9EA} [MockFFmpeg] \u83B7\u53D6\u97F3\u9891\u5143\u6570\u636E: ${filePath}`);
1863
+ logger3.info("\u{1F9EA} [MockFFmpeg] \u83B7\u53D6\u97F3\u9891\u5143\u6570\u636E: " + filePath);
1866
1864
  setTimeout(() => {
1867
1865
  const mockMetadata = {
1868
1866
  streams: [
@@ -1890,14 +1888,14 @@ var AudioProcessor = class {
1890
1888
  */
1891
1889
  async batchProcess(inputPaths, outputDir, options, onProgress) {
1892
1890
  this.ensureInitialized();
1893
- logger3.info(`\u{1F3B5} [AudioProcessor] \u5F00\u59CB\u6279\u91CF\u5904\u7406 ${inputPaths.length} \u4E2A\u97F3\u9891\u6587\u4EF6`);
1891
+ logger3.info("\u{1F3B5} [AudioProcessor] \u5F00\u59CB\u6279\u91CF\u5904\u7406 " + inputPaths.length + " \u4E2A\u97F3\u9891\u6587\u4EF6");
1894
1892
  const results = [];
1895
1893
  for (let i = 0; i < inputPaths.length; i++) {
1896
1894
  const inputPath = inputPaths[i];
1897
1895
  const fileName = path3__namespace.basename(inputPath);
1898
1896
  const nameWithoutExt = path3__namespace.parse(fileName).name;
1899
1897
  const outputFormat = options.format || "mp3";
1900
- const outputPath = path3__namespace.join(outputDir, `${nameWithoutExt}.${outputFormat}`);
1898
+ const outputPath = path3__namespace.join(outputDir, nameWithoutExt + "." + outputFormat);
1901
1899
  try {
1902
1900
  const result = await this.process(inputPath, outputPath, options);
1903
1901
  results.push(result);
@@ -1905,15 +1903,15 @@ var AudioProcessor = class {
1905
1903
  onProgress(i + 1, inputPaths.length);
1906
1904
  }
1907
1905
  } catch (error) {
1908
- console.error(`\u274C [AudioProcessor] \u6279\u91CF\u5904\u7406\u5931\u8D25: ${inputPath}:`, error);
1906
+ console.error("\u274C [AudioProcessor] \u6279\u91CF\u5904\u7406\u5931\u8D25: " + inputPath + ":", error);
1909
1907
  results.push({
1910
1908
  success: false,
1911
- error: `\u5904\u7406\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
1909
+ error: "\u5904\u7406\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
1912
1910
  });
1913
1911
  }
1914
1912
  }
1915
1913
  const successCount = results.filter((r) => r.success).length;
1916
- logger3.info(`\u2705 [AudioProcessor] \u6279\u91CF\u5904\u7406\u5B8C\u6210\uFF0C\u6210\u529F: ${successCount}/${inputPaths.length}`);
1914
+ logger3.info("\u2705 [AudioProcessor] \u6279\u91CF\u5904\u7406\u5B8C\u6210\uFF0C\u6210\u529F: " + successCount + "/" + inputPaths.length);
1917
1915
  return results;
1918
1916
  }
1919
1917
  /**
@@ -1924,10 +1922,10 @@ var AudioProcessor = class {
1924
1922
  return new Promise((resolve) => {
1925
1923
  try {
1926
1924
  this.ffmpeg(inputPath).outputOptions(["-an", "-vcodec copy"]).on("error", (err) => {
1927
- console.warn(`\u26A0\uFE0F [AudioProcessor] \u63D0\u53D6\u5C01\u9762\u5931\u8D25: ${err.message}`);
1925
+ console.warn("\u26A0\uFE0F [AudioProcessor] \u63D0\u53D6\u5C01\u9762\u5931\u8D25: " + err.message);
1928
1926
  resolve(false);
1929
1927
  }).on("end", () => {
1930
- logger3.info(`\u{1F5BC}\uFE0F [AudioProcessor] \u97F3\u9891\u5C01\u9762\u63D0\u53D6\u5B8C\u6210: ${outputPath}`);
1928
+ logger3.info("\u{1F5BC}\uFE0F [AudioProcessor] \u97F3\u9891\u5C01\u9762\u63D0\u53D6\u5B8C\u6210: " + outputPath);
1931
1929
  resolve(true);
1932
1930
  }).save(outputPath);
1933
1931
  } catch (error) {
@@ -1942,13 +1940,13 @@ var AudioProcessor = class {
1942
1940
  async denoise(inputPath, outputPath) {
1943
1941
  this.ensureInitialized();
1944
1942
  const startTime = Date.now();
1945
- logger3.info(`\u{1F507} [AudioProcessor] \u5F00\u59CB\u97F3\u9891\u964D\u566A: ${inputPath}`);
1943
+ logger3.info("\u{1F507} [AudioProcessor] \u5F00\u59CB\u97F3\u9891\u964D\u566A: " + inputPath);
1946
1944
  return new Promise((resolve) => {
1947
1945
  try {
1948
1946
  this.ffmpeg(inputPath).audioFilters("highpass=f=200,lowpass=f=3000").on("error", (err) => {
1949
1947
  resolve({
1950
1948
  success: false,
1951
- error: `\u964D\u566A\u5904\u7406\u5931\u8D25: ${err.message}`,
1949
+ error: "\u964D\u566A\u5904\u7406\u5931\u8D25: " + err.message,
1952
1950
  processingTime: Date.now() - startTime
1953
1951
  });
1954
1952
  }).on("end", async () => {
@@ -1967,14 +1965,14 @@ var AudioProcessor = class {
1967
1965
  } catch (error) {
1968
1966
  resolve({
1969
1967
  success: false,
1970
- error: `\u964D\u566A\u5904\u7406\u5F02\u5E38: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`,
1968
+ error: "\u964D\u566A\u5904\u7406\u5F02\u5E38: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"),
1971
1969
  processingTime: Date.now() - startTime
1972
1970
  });
1973
1971
  }
1974
1972
  });
1975
1973
  }
1976
1974
  };
1977
- var logger4 = chunk6PRFP5EG_js.createLogger("VideoProcessor");
1975
+ var logger4 = chunk25OFOKNF_js.createLogger("VideoProcessor");
1978
1976
  var VideoProcessor = class {
1979
1977
  constructor() {
1980
1978
  this.type = "video";
@@ -2011,16 +2009,16 @@ var VideoProcessor = class {
2011
2009
  }
2012
2010
  const videoOptions = options;
2013
2011
  const startTime = Date.now();
2014
- logger4.info(`\u{1F3AC} [VideoProcessor] \u5F00\u59CB\u5904\u7406\u89C6\u9891: ${inputPath}`);
2012
+ logger4.info("\u{1F3AC} [VideoProcessor] \u5F00\u59CB\u5904\u7406\u89C6\u9891: " + inputPath);
2015
2013
  try {
2016
2014
  if (!fs.existsSync(inputPath)) {
2017
- throw new Error(`\u8F93\u5165\u6587\u4EF6\u4E0D\u5B58\u5728: ${inputPath}`);
2015
+ throw new Error("\u8F93\u5165\u6587\u4EF6\u4E0D\u5B58\u5728: " + inputPath);
2018
2016
  }
2019
2017
  const outputDir = path3__namespace.dirname(outputPath);
2020
2018
  await fs.promises.mkdir(outputDir, { recursive: true });
2021
2019
  const metadata = await this.getVideoMetadata(inputPath);
2022
2020
  logger4.info(
2023
- `\u{1F4CA} [VideoProcessor] \u89C6\u9891\u4FE1\u606F: ${metadata.width}x${metadata.height}, ${this.formatDuration(metadata.duration)}, ${metadata.fps}fps`
2021
+ "\u{1F4CA} [VideoProcessor] \u89C6\u9891\u4FE1\u606F: " + metadata.width + "x" + metadata.height + ", " + this.formatDuration(metadata.duration) + ", " + metadata.fps + "fps"
2024
2022
  );
2025
2023
  const outputFormat = this.determineOutputFormat(outputPath, videoOptions.format);
2026
2024
  await this.processVideo(inputPath, outputPath, videoOptions, outputFormat);
@@ -2034,7 +2032,7 @@ var VideoProcessor = class {
2034
2032
  }
2035
2033
  const processedStats = await fs.promises.stat(outputPath);
2036
2034
  const processingTime = Date.now() - startTime;
2037
- logger4.info(`\u2705 [VideoProcessor] \u89C6\u9891\u5904\u7406\u5B8C\u6210: ${outputPath}, \u8017\u65F6: ${processingTime}ms`);
2035
+ logger4.info("\u2705 [VideoProcessor] \u89C6\u9891\u5904\u7406\u5B8C\u6210: " + outputPath + ", \u8017\u65F6: " + processingTime + "ms");
2038
2036
  return {
2039
2037
  success: true,
2040
2038
  processedPath: outputPath,
@@ -2058,10 +2056,10 @@ var VideoProcessor = class {
2058
2056
  }
2059
2057
  };
2060
2058
  } catch (error) {
2061
- console.error(`\u274C [VideoProcessor] \u89C6\u9891\u5904\u7406\u5931\u8D25: ${inputPath}:`, error);
2059
+ console.error("\u274C [VideoProcessor] \u89C6\u9891\u5904\u7406\u5931\u8D25: " + inputPath + ":", error);
2062
2060
  return {
2063
2061
  success: false,
2064
- error: `\u89C6\u9891\u5904\u7406\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`,
2062
+ error: "\u89C6\u9891\u5904\u7406\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"),
2065
2063
  processingTime: Date.now() - startTime
2066
2064
  };
2067
2065
  }
@@ -2113,7 +2111,7 @@ var VideoProcessor = class {
2113
2111
  quality: this.getQualityDescription(metadata.width, metadata.height, metadata.bitrate)
2114
2112
  };
2115
2113
  } catch (error) {
2116
- console.error(`\u274C [VideoProcessor] \u83B7\u53D6\u89C6\u9891\u4FE1\u606F\u5931\u8D25: ${filePath}:`, error);
2114
+ console.error("\u274C [VideoProcessor] \u83B7\u53D6\u89C6\u9891\u4FE1\u606F\u5931\u8D25: " + filePath + ":", error);
2117
2115
  throw error;
2118
2116
  }
2119
2117
  }
@@ -2134,8 +2132,8 @@ var VideoProcessor = class {
2134
2132
  try {
2135
2133
  this.ffmpeg.ffprobe(filePath, (err, metadata) => {
2136
2134
  if (err) {
2137
- console.error(`\u274C [VideoProcessor] \u83B7\u53D6\u89C6\u9891\u5143\u6570\u636E\u5931\u8D25: ${filePath}:`, err);
2138
- reject(new Error(`\u65E0\u6CD5\u8BFB\u53D6\u89C6\u9891\u5143\u6570\u636E: ${err.message}`));
2135
+ console.error("\u274C [VideoProcessor] \u83B7\u53D6\u89C6\u9891\u5143\u6570\u636E\u5931\u8D25: " + filePath + ":", err);
2136
+ reject(new Error("\u65E0\u6CD5\u8BFB\u53D6\u89C6\u9891\u5143\u6570\u636E: " + err.message));
2139
2137
  return;
2140
2138
  }
2141
2139
  const videoStream = metadata.streams?.find(
@@ -2185,20 +2183,20 @@ var VideoProcessor = class {
2185
2183
  command = this.setVideoCodec(command, outputFormat);
2186
2184
  if (options.quality) {
2187
2185
  command = this.setVideoQuality(command, options.quality);
2188
- logger4.info(`\u{1F527} [VideoProcessor] \u8BBE\u7F6E\u89C6\u9891\u8D28\u91CF: ${options.quality}`);
2186
+ logger4.info("\u{1F527} [VideoProcessor] \u8BBE\u7F6E\u89C6\u9891\u8D28\u91CF: " + options.quality);
2189
2187
  }
2190
2188
  command = command.format(outputFormat);
2191
2189
  command.on("progress", (progress) => {
2192
2190
  if (progress.percent) {
2193
- logger4.info(`\u{1F3AC} [VideoProcessor] \u5904\u7406\u8FDB\u5EA6: ${Math.round(progress.percent)}%`);
2191
+ logger4.info("\u{1F3AC} [VideoProcessor] \u5904\u7406\u8FDB\u5EA6: " + Math.round(progress.percent) + "%");
2194
2192
  }
2195
2193
  });
2196
2194
  command.on("error", (err) => {
2197
2195
  console.error(`\u274C [VideoProcessor] FFmpeg\u5904\u7406\u9519\u8BEF:`, err);
2198
- reject(new Error(`\u89C6\u9891\u5904\u7406\u5931\u8D25: ${err.message}`));
2196
+ reject(new Error("\u89C6\u9891\u5904\u7406\u5931\u8D25: " + err.message));
2199
2197
  });
2200
2198
  command.on("end", () => {
2201
- logger4.info(`\u2705 [VideoProcessor] FFmpeg\u5904\u7406\u5B8C\u6210: ${outputPath}`);
2199
+ logger4.info("\u2705 [VideoProcessor] FFmpeg\u5904\u7406\u5B8C\u6210: " + outputPath);
2202
2200
  resolve();
2203
2201
  });
2204
2202
  command.save(outputPath);
@@ -2229,7 +2227,7 @@ var VideoProcessor = class {
2229
2227
  */
2230
2228
  setVideoQuality(command, quality) {
2231
2229
  const crf = Math.max(18, Math.min(51, 51 - Math.floor(quality * 0.33)));
2232
- return command.outputOptions([`-crf ${crf}`]);
2230
+ return command.outputOptions(["-crf " + crf]);
2233
2231
  }
2234
2232
  /**
2235
2233
  * 确定输出格式
@@ -2255,10 +2253,10 @@ var VideoProcessor = class {
2255
2253
  try {
2256
2254
  const thumbnailPath = this.getThumbnailPath(outputPath);
2257
2255
  this.ffmpeg(inputPath).seekInput(timeOffset).frames(1).size("320x240").on("error", (err) => {
2258
- console.warn(`\u26A0\uFE0F [VideoProcessor] \u7F29\u7565\u56FE\u751F\u6210\u5931\u8D25: ${err.message}`);
2256
+ console.warn("\u26A0\uFE0F [VideoProcessor] \u7F29\u7565\u56FE\u751F\u6210\u5931\u8D25: " + err.message);
2259
2257
  reject(err);
2260
2258
  }).on("end", () => {
2261
- logger4.info(`\u{1F5BC}\uFE0F [VideoProcessor] \u89C6\u9891\u7F29\u7565\u56FE\u751F\u6210\u5B8C\u6210: ${thumbnailPath}`);
2259
+ logger4.info("\u{1F5BC}\uFE0F [VideoProcessor] \u89C6\u9891\u7F29\u7565\u56FE\u751F\u6210\u5B8C\u6210: " + thumbnailPath);
2262
2260
  resolve(thumbnailPath);
2263
2261
  }).save(thumbnailPath);
2264
2262
  } catch (error) {
@@ -2273,7 +2271,7 @@ var VideoProcessor = class {
2273
2271
  getThumbnailPath(originalPath) {
2274
2272
  const ext = path3__namespace.extname(originalPath);
2275
2273
  const basePath = originalPath.replace(ext, "");
2276
- return `${basePath}_thumb.jpg`;
2274
+ return basePath + "_thumb.jpg";
2277
2275
  }
2278
2276
  /**
2279
2277
  * 格式化时长显示
@@ -2283,9 +2281,9 @@ var VideoProcessor = class {
2283
2281
  const minutes = Math.floor(seconds % 3600 / 60);
2284
2282
  const remainingSeconds = Math.floor(seconds % 60);
2285
2283
  if (hours > 0) {
2286
- return `${hours}:${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
2284
+ return hours + ":" + minutes.toString().padStart(2, "0") + ":" + remainingSeconds.toString().padStart(2, "0");
2287
2285
  } else {
2288
- return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
2286
+ return minutes + ":" + remainingSeconds.toString().padStart(2, "0");
2289
2287
  }
2290
2288
  }
2291
2289
  /**
@@ -2301,7 +2299,7 @@ var VideoProcessor = class {
2301
2299
  } else if (width >= 640 && height >= 480) {
2302
2300
  return "480p SD";
2303
2301
  } else {
2304
- return `${width}x${height}`;
2302
+ return width + "x" + height;
2305
2303
  }
2306
2304
  }
2307
2305
  /**
@@ -2326,18 +2324,18 @@ var VideoProcessor = class {
2326
2324
  createMockFFmpeg() {
2327
2325
  logger4.info("\u{1F9EA} [VideoProcessor] \u521B\u5EFA\u6A21\u62DFFFmpeg\u5904\u7406\u5668");
2328
2326
  const mockFFmpeg = (input) => {
2329
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u5904\u7406\u89C6\u9891: ${input}`);
2327
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u5904\u7406\u89C6\u9891: " + input);
2330
2328
  return {
2331
2329
  videoCodec: (codec) => {
2332
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u89C6\u9891\u7F16\u89E3\u7801\u5668: ${codec}`);
2330
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u89C6\u9891\u7F16\u89E3\u7801\u5668: " + codec);
2333
2331
  return mockFFmpeg(input);
2334
2332
  },
2335
2333
  audioCodec: (codec) => {
2336
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u97F3\u9891\u7F16\u89E3\u7801\u5668: ${codec}`);
2334
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u97F3\u9891\u7F16\u89E3\u7801\u5668: " + codec);
2337
2335
  return mockFFmpeg(input);
2338
2336
  },
2339
2337
  format: (format) => {
2340
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u8F93\u51FA\u683C\u5F0F: ${format}`);
2338
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u8F93\u51FA\u683C\u5F0F: " + format);
2341
2339
  return mockFFmpeg(input);
2342
2340
  },
2343
2341
  outputOptions: (options) => {
@@ -2345,19 +2343,19 @@ var VideoProcessor = class {
2345
2343
  return mockFFmpeg(input);
2346
2344
  },
2347
2345
  seekInput: (time) => {
2348
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u8DF3\u8F6C\u5230\u65F6\u95F4: ${time}s`);
2346
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u8DF3\u8F6C\u5230\u65F6\u95F4: " + time + "s");
2349
2347
  return mockFFmpeg(input);
2350
2348
  },
2351
2349
  frames: (count) => {
2352
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u63D0\u53D6\u5E27\u6570: ${count}`);
2350
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u63D0\u53D6\u5E27\u6570: " + count);
2353
2351
  return mockFFmpeg(input);
2354
2352
  },
2355
2353
  size: (size) => {
2356
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u5C3A\u5BF8: ${size}`);
2354
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u8BBE\u7F6E\u5C3A\u5BF8: " + size);
2357
2355
  return mockFFmpeg(input);
2358
2356
  },
2359
2357
  on: (event, callback) => {
2360
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u6CE8\u518C\u4E8B\u4EF6\u76D1\u542C: ${event}`);
2358
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u6CE8\u518C\u4E8B\u4EF6\u76D1\u542C: " + event);
2361
2359
  if (event === "progress") {
2362
2360
  setTimeout(() => callback({ percent: 25 }), 100);
2363
2361
  setTimeout(() => callback({ percent: 50 }), 200);
@@ -2369,15 +2367,15 @@ var VideoProcessor = class {
2369
2367
  return mockFFmpeg(input);
2370
2368
  },
2371
2369
  save: async (outputPath) => {
2372
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u4FDD\u5B58\u89C6\u9891\u6587\u4EF6: ${outputPath}`);
2370
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u4FDD\u5B58\u89C6\u9891\u6587\u4EF6: " + outputPath);
2373
2371
  const outputDir = path3__namespace.dirname(outputPath);
2374
2372
  await fs.promises.mkdir(outputDir, { recursive: true });
2375
- await fs.promises.writeFile(outputPath, `Mock processed video from ${input}`);
2373
+ await fs.promises.writeFile(outputPath, "Mock processed video from " + input);
2376
2374
  }
2377
2375
  };
2378
2376
  };
2379
2377
  mockFFmpeg.ffprobe = (filePath, callback) => {
2380
- logger4.info(`\u{1F9EA} [MockFFmpeg] \u83B7\u53D6\u89C6\u9891\u5143\u6570\u636E: ${filePath}`);
2378
+ logger4.info("\u{1F9EA} [MockFFmpeg] \u83B7\u53D6\u89C6\u9891\u5143\u6570\u636E: " + filePath);
2381
2379
  setTimeout(() => {
2382
2380
  const mockMetadata = {
2383
2381
  streams: [
@@ -2406,14 +2404,14 @@ var VideoProcessor = class {
2406
2404
  */
2407
2405
  async batchProcess(inputPaths, outputDir, options, onProgress) {
2408
2406
  this.ensureInitialized();
2409
- logger4.info(`\u{1F3AC} [VideoProcessor] \u5F00\u59CB\u6279\u91CF\u5904\u7406 ${inputPaths.length} \u4E2A\u89C6\u9891\u6587\u4EF6`);
2407
+ logger4.info("\u{1F3AC} [VideoProcessor] \u5F00\u59CB\u6279\u91CF\u5904\u7406 " + inputPaths.length + " \u4E2A\u89C6\u9891\u6587\u4EF6");
2410
2408
  const results = [];
2411
2409
  for (let i = 0; i < inputPaths.length; i++) {
2412
2410
  const inputPath = inputPaths[i];
2413
2411
  const fileName = path3__namespace.basename(inputPath);
2414
2412
  const nameWithoutExt = path3__namespace.parse(fileName).name;
2415
2413
  const outputFormat = options.format || "mp4";
2416
- const outputPath = path3__namespace.join(outputDir, `${nameWithoutExt}.${outputFormat}`);
2414
+ const outputPath = path3__namespace.join(outputDir, nameWithoutExt + "." + outputFormat);
2417
2415
  try {
2418
2416
  const result = await this.process(inputPath, outputPath, options);
2419
2417
  results.push(result);
@@ -2421,15 +2419,15 @@ var VideoProcessor = class {
2421
2419
  onProgress(i + 1, inputPaths.length);
2422
2420
  }
2423
2421
  } catch (error) {
2424
- console.error(`\u274C [VideoProcessor] \u6279\u91CF\u5904\u7406\u5931\u8D25: ${inputPath}:`, error);
2422
+ console.error("\u274C [VideoProcessor] \u6279\u91CF\u5904\u7406\u5931\u8D25: " + inputPath + ":", error);
2425
2423
  results.push({
2426
2424
  success: false,
2427
- error: `\u5904\u7406\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
2425
+ error: "\u5904\u7406\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
2428
2426
  });
2429
2427
  }
2430
2428
  }
2431
2429
  const successCount = results.filter((r) => r.success).length;
2432
- logger4.info(`\u2705 [VideoProcessor] \u6279\u91CF\u5904\u7406\u5B8C\u6210\uFF0C\u6210\u529F: ${successCount}/${inputPaths.length}`);
2430
+ logger4.info("\u2705 [VideoProcessor] \u6279\u91CF\u5904\u7406\u5B8C\u6210\uFF0C\u6210\u529F: " + successCount + "/" + inputPaths.length);
2433
2431
  return results;
2434
2432
  }
2435
2433
  /**
@@ -2438,24 +2436,24 @@ var VideoProcessor = class {
2438
2436
  async extractFrames(inputPath, outputDir, options = {}) {
2439
2437
  this.ensureInitialized();
2440
2438
  const { count = 10, interval, format = "jpg" } = options;
2441
- logger4.info(`\u{1F5BC}\uFE0F [VideoProcessor] \u63D0\u53D6\u89C6\u9891\u5E27: ${inputPath}, \u6570\u91CF: ${count}`);
2439
+ logger4.info("\u{1F5BC}\uFE0F [VideoProcessor] \u63D0\u53D6\u89C6\u9891\u5E27: " + inputPath + ", \u6570\u91CF: " + count);
2442
2440
  return new Promise((resolve, reject) => {
2443
2441
  try {
2444
2442
  let command = this.ffmpeg(inputPath);
2445
2443
  if (interval) {
2446
- command = command.outputOptions([`-vf fps=1/${interval}`]);
2444
+ command = command.outputOptions(["-vf fps=1/" + interval]);
2447
2445
  } else {
2448
2446
  command = command.frames(count);
2449
2447
  }
2450
- const outputPattern = path3__namespace.join(outputDir, `frame_%03d.${format}`);
2448
+ const outputPattern = path3__namespace.join(outputDir, "frame_%03d." + format);
2451
2449
  command.on("error", (err) => {
2452
2450
  console.error(`\u274C [VideoProcessor] \u63D0\u53D6\u5E27\u5931\u8D25:`, err);
2453
- reject(new Error(`\u63D0\u53D6\u5E27\u5931\u8D25: ${err.message}`));
2451
+ reject(new Error("\u63D0\u53D6\u5E27\u5931\u8D25: " + err.message));
2454
2452
  }).on("end", async () => {
2455
2453
  try {
2456
2454
  const files = await fs.promises.readdir(outputDir);
2457
- const frameFiles = files.filter((file) => file.startsWith("frame_") && file.endsWith(`.${format}`)).sort().map((file) => path3__namespace.join(outputDir, file));
2458
- logger4.info(`\u2705 [VideoProcessor] \u5E27\u63D0\u53D6\u5B8C\u6210\uFF0C\u5171 ${frameFiles.length} \u5E27`);
2455
+ const frameFiles = files.filter((file) => file.startsWith("frame_") && file.endsWith("." + format)).sort().map((file) => path3__namespace.join(outputDir, file));
2456
+ logger4.info("\u2705 [VideoProcessor] \u5E27\u63D0\u53D6\u5B8C\u6210\uFF0C\u5171 " + frameFiles.length + " \u5E27");
2459
2457
  resolve(frameFiles);
2460
2458
  } catch (error) {
2461
2459
  reject(error);
@@ -2471,7 +2469,7 @@ var VideoProcessor = class {
2471
2469
  */
2472
2470
  async compress(inputPath, outputPath, compressionLevel = "medium") {
2473
2471
  this.ensureInitialized();
2474
- logger4.info(`\u{1F5DC}\uFE0F [VideoProcessor] \u5F00\u59CB\u89C6\u9891\u538B\u7F29: ${inputPath}, \u7EA7\u522B: ${compressionLevel}`);
2472
+ logger4.info("\u{1F5DC}\uFE0F [VideoProcessor] \u5F00\u59CB\u89C6\u9891\u538B\u7F29: " + inputPath + ", \u7EA7\u522B: " + compressionLevel);
2475
2473
  const options = {
2476
2474
  type: "video",
2477
2475
  quality: this.getCompressionQuality(compressionLevel),
@@ -2495,7 +2493,7 @@ var VideoProcessor = class {
2495
2493
  }
2496
2494
  }
2497
2495
  };
2498
- var logger5 = chunk6PRFP5EG_js.createLogger("ProcessingQueue");
2496
+ var logger5 = chunk25OFOKNF_js.createLogger("ProcessingQueue");
2499
2497
  var ProcessingQueue = class extends events.EventEmitter {
2500
2498
  constructor(options = {}) {
2501
2499
  super();
@@ -2522,7 +2520,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2522
2520
  */
2523
2521
  registerProcessor(processor) {
2524
2522
  this.processors.set(processor.type, processor);
2525
- logger5.info(`\u{1F527} [ProcessingQueue] \u6CE8\u518C\u5904\u7406\u5668: ${processor.type}`);
2523
+ logger5.info("\u{1F527} [ProcessingQueue] \u6CE8\u518C\u5904\u7406\u5668: " + processor.type);
2526
2524
  }
2527
2525
  /**
2528
2526
  * 添加任务到队列
@@ -2544,11 +2542,11 @@ var ProcessingQueue = class extends events.EventEmitter {
2544
2542
  };
2545
2543
  const processor = this.processors.get(options.type);
2546
2544
  if (!processor) {
2547
- throw new Error(`\u672A\u627E\u5230\u7C7B\u578B\u4E3A ${options.type} \u7684\u6587\u4EF6\u5904\u7406\u5668`);
2545
+ throw new Error("\u672A\u627E\u5230\u7C7B\u578B\u4E3A " + options.type + " \u7684\u6587\u4EF6\u5904\u7406\u5668");
2548
2546
  }
2549
2547
  task.processor = processor;
2550
2548
  this.tasks.set(taskId, task);
2551
- logger5.info(`\u{1F4DD} [ProcessingQueue] \u6DFB\u52A0\u4EFB\u52A1: ${taskId} (${inputPath})`);
2549
+ logger5.info("\u{1F4DD} [ProcessingQueue] \u6DFB\u52A0\u4EFB\u52A1: " + taskId + " (" + inputPath + ")");
2552
2550
  this.emit("taskAdded", task);
2553
2551
  if (this.isStarted) {
2554
2552
  this.processNext();
@@ -2593,15 +2591,15 @@ var ProcessingQueue = class extends events.EventEmitter {
2593
2591
  pauseTask(taskId) {
2594
2592
  const task = this.tasks.get(taskId);
2595
2593
  if (!task) {
2596
- console.warn(`\u26A0\uFE0F [ProcessingQueue] \u4EFB\u52A1\u4E0D\u5B58\u5728: ${taskId}`);
2594
+ console.warn("\u26A0\uFE0F [ProcessingQueue] \u4EFB\u52A1\u4E0D\u5B58\u5728: " + taskId);
2597
2595
  return false;
2598
2596
  }
2599
2597
  if (task.status === "running") {
2600
- console.warn(`\u26A0\uFE0F [ProcessingQueue] \u65E0\u6CD5\u6682\u505C\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1: ${taskId}`);
2598
+ console.warn("\u26A0\uFE0F [ProcessingQueue] \u65E0\u6CD5\u6682\u505C\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1: " + taskId);
2601
2599
  return false;
2602
2600
  }
2603
2601
  task.status = "cancelled";
2604
- logger5.info(`\u23F8\uFE0F [ProcessingQueue] \u6682\u505C\u4EFB\u52A1: ${taskId}`);
2602
+ logger5.info("\u23F8\uFE0F [ProcessingQueue] \u6682\u505C\u4EFB\u52A1: " + taskId);
2605
2603
  this.emit("taskCancelled", task);
2606
2604
  return true;
2607
2605
  }
@@ -2611,15 +2609,15 @@ var ProcessingQueue = class extends events.EventEmitter {
2611
2609
  cancelTask(taskId) {
2612
2610
  const task = this.tasks.get(taskId);
2613
2611
  if (!task) {
2614
- console.warn(`\u26A0\uFE0F [ProcessingQueue] \u4EFB\u52A1\u4E0D\u5B58\u5728: ${taskId}`);
2612
+ console.warn("\u26A0\uFE0F [ProcessingQueue] \u4EFB\u52A1\u4E0D\u5B58\u5728: " + taskId);
2615
2613
  return false;
2616
2614
  }
2617
2615
  if (task.status === "running") {
2618
- console.warn(`\u26A0\uFE0F [ProcessingQueue] \u65E0\u6CD5\u53D6\u6D88\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1: ${taskId}`);
2616
+ console.warn("\u26A0\uFE0F [ProcessingQueue] \u65E0\u6CD5\u53D6\u6D88\u6B63\u5728\u8FD0\u884C\u7684\u4EFB\u52A1: " + taskId);
2619
2617
  return false;
2620
2618
  }
2621
2619
  task.status = "cancelled";
2622
- logger5.info(`\u274C [ProcessingQueue] \u53D6\u6D88\u4EFB\u52A1: ${taskId}`);
2620
+ logger5.info("\u274C [ProcessingQueue] \u53D6\u6D88\u4EFB\u52A1: " + taskId);
2623
2621
  this.emit("taskCancelled", task);
2624
2622
  return true;
2625
2623
  }
@@ -2682,7 +2680,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2682
2680
  }
2683
2681
  const afterCount = this.tasks.size;
2684
2682
  const cleanedCount = beforeCount - afterCount;
2685
- logger5.info(`\u{1F9F9} [ProcessingQueue] \u6E05\u7406\u5B8C\u6210\uFF0C\u79FB\u9664 ${cleanedCount} \u4E2A\u4EFB\u52A1`);
2683
+ logger5.info("\u{1F9F9} [ProcessingQueue] \u6E05\u7406\u5B8C\u6210\uFF0C\u79FB\u9664 " + cleanedCount + " \u4E2A\u4EFB\u52A1");
2686
2684
  this.emit("cleanup", { cleaned: cleanedCount, remaining: afterCount });
2687
2685
  }
2688
2686
  // ============= 私有方法 =============
@@ -2733,7 +2731,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2733
2731
  this.failTask(task, "\u672A\u627E\u5230\u5BF9\u5E94\u7684\u6587\u4EF6\u5904\u7406\u5668");
2734
2732
  return;
2735
2733
  }
2736
- logger5.info(`\u{1F680} [ProcessingQueue] \u5F00\u59CB\u5904\u7406\u4EFB\u52A1: ${task.id}`);
2734
+ logger5.info("\u{1F680} [ProcessingQueue] \u5F00\u59CB\u5904\u7406\u4EFB\u52A1: " + task.id);
2737
2735
  task.status = "running";
2738
2736
  task.startTime = Date.now();
2739
2737
  this.runningTasks.add(task.id);
@@ -2765,7 +2763,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2765
2763
  task.endTime = Date.now();
2766
2764
  task.result = result;
2767
2765
  this.runningTasks.delete(task.id);
2768
- logger5.info(`\u2705 [ProcessingQueue] \u4EFB\u52A1\u5B8C\u6210: ${task.id}`);
2766
+ logger5.info("\u2705 [ProcessingQueue] \u4EFB\u52A1\u5B8C\u6210: " + task.id);
2769
2767
  if (task.onComplete) {
2770
2768
  try {
2771
2769
  task.onComplete(task, result);
@@ -2785,7 +2783,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2785
2783
  task.retries++;
2786
2784
  task.status = "pending";
2787
2785
  task.error = void 0;
2788
- logger5.info(`\u{1F504} [ProcessingQueue] \u91CD\u8BD5\u4EFB\u52A1: ${task.id} (${task.retries}/${task.maxRetries})`);
2786
+ logger5.info("\u{1F504} [ProcessingQueue] \u91CD\u8BD5\u4EFB\u52A1: " + task.id + " (" + task.retries + "/" + task.maxRetries + ")");
2789
2787
  this.emit("taskRetried", task);
2790
2788
  setTimeout(() => {
2791
2789
  if (this.isStarted) {
@@ -2804,7 +2802,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2804
2802
  task.endTime = Date.now();
2805
2803
  task.error = error;
2806
2804
  this.runningTasks.delete(task.id);
2807
- console.error(`\u274C [ProcessingQueue] \u4EFB\u52A1\u5931\u8D25: ${task.id} - ${error}`);
2805
+ console.error("\u274C [ProcessingQueue] \u4EFB\u52A1\u5931\u8D25: " + task.id + " - " + error);
2808
2806
  if (task.onError) {
2809
2807
  try {
2810
2808
  task.onError(task, error);
@@ -2819,7 +2817,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2819
2817
  * 生成唯一任务ID
2820
2818
  */
2821
2819
  generateTaskId() {
2822
- return `task_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
2820
+ return "task_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9);
2823
2821
  }
2824
2822
  /**
2825
2823
  * 批量添加任务
@@ -2828,7 +2826,7 @@ var ProcessingQueue = class extends events.EventEmitter {
2828
2826
  const taskIds = [];
2829
2827
  const results = /* @__PURE__ */ new Map();
2830
2828
  let completedCount = 0;
2831
- logger5.info(`\u{1F4E6} [ProcessingQueue] \u6279\u91CF\u6DFB\u52A0 ${tasks.length} \u4E2A\u4EFB\u52A1`);
2829
+ logger5.info("\u{1F4E6} [ProcessingQueue] \u6279\u91CF\u6DFB\u52A0 " + tasks.length + " \u4E2A\u4EFB\u52A1");
2832
2830
  for (const taskSpec of tasks) {
2833
2831
  const taskId = this.addTask(taskSpec.inputPath, taskSpec.outputPath, taskSpec.options, {
2834
2832
  priority: taskSpec.priority,
@@ -2865,15 +2863,15 @@ var ProcessingQueue = class extends events.EventEmitter {
2865
2863
  const issues = [];
2866
2864
  const recommendations = [];
2867
2865
  if (stats.successRate < 0.8 && stats.totalTasks > 10) {
2868
- issues.push(`\u6210\u529F\u7387\u8FC7\u4F4E: ${(stats.successRate * 100).toFixed(1)}%`);
2866
+ issues.push("\u6210\u529F\u7387\u8FC7\u4F4E: " + (stats.successRate * 100).toFixed(1) + "%");
2869
2867
  recommendations.push("\u68C0\u67E5\u6587\u4EF6\u5904\u7406\u5668\u914D\u7F6E\u548C\u8F93\u5165\u6587\u4EF6\u8D28\u91CF");
2870
2868
  }
2871
2869
  if (stats.pendingTasks > 50) {
2872
- issues.push(`\u5F85\u5904\u7406\u4EFB\u52A1\u79EF\u538B: ${stats.pendingTasks} \u4E2A`);
2870
+ issues.push("\u5F85\u5904\u7406\u4EFB\u52A1\u79EF\u538B: " + stats.pendingTasks + " \u4E2A");
2873
2871
  recommendations.push("\u8003\u8651\u589E\u52A0\u5E76\u53D1\u5904\u7406\u6570\u6216\u4F18\u5316\u5904\u7406\u6027\u80FD");
2874
2872
  }
2875
2873
  if (stats.averageProcessingTime > 6e4) {
2876
- issues.push(`\u5E73\u5747\u5904\u7406\u65F6\u95F4\u8FC7\u957F: ${(stats.averageProcessingTime / 1e3).toFixed(1)}\u79D2`);
2874
+ issues.push("\u5E73\u5747\u5904\u7406\u65F6\u95F4\u8FC7\u957F: " + (stats.averageProcessingTime / 1e3).toFixed(1) + "\u79D2");
2877
2875
  recommendations.push("\u4F18\u5316\u6587\u4EF6\u5904\u7406\u903B\u8F91\u6216\u51CF\u5C11\u5904\u7406\u590D\u6742\u5EA6");
2878
2876
  }
2879
2877
  return {
@@ -2939,7 +2937,7 @@ function getMimeType(filename) {
2939
2937
  const ext = path3__namespace.extname(filename).toLowerCase();
2940
2938
  return MIME_TYPES[ext] || "application/octet-stream";
2941
2939
  }
2942
- var logger6 = chunk6PRFP5EG_js.createLogger("UniversalFileService");
2940
+ var logger6 = chunk25OFOKNF_js.createLogger("UniversalFileService");
2943
2941
  var UniversalFileService = class extends events.EventEmitter {
2944
2942
  constructor(config) {
2945
2943
  super();
@@ -2973,23 +2971,23 @@ var UniversalFileService = class extends events.EventEmitter {
2973
2971
  try {
2974
2972
  const metadata = data.metadata || data;
2975
2973
  await repository.save(metadata);
2976
- logger6.info(`\u{1F4BE} [Persistence] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u81EA\u52A8\u4FDD\u5B58: ${fileId}`);
2974
+ logger6.info("\u{1F4BE} [Persistence] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u81EA\u52A8\u4FDD\u5B58: " + fileId);
2977
2975
  } catch (error) {
2978
- logger6.error(`\u274C [Persistence] \u4FDD\u5B58\u5931\u8D25: ${fileId}`, error);
2976
+ logger6.error("\u274C [Persistence] \u4FDD\u5B58\u5931\u8D25: " + fileId, error);
2979
2977
  }
2980
2978
  });
2981
2979
  this.on("file:deleted", async (fileId) => {
2982
2980
  try {
2983
2981
  await repository.delete(fileId);
2984
- logger6.info(`\u{1F5D1}\uFE0F [Persistence] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u81EA\u52A8\u5220\u9664: ${fileId}`);
2982
+ logger6.info("\u{1F5D1}\uFE0F [Persistence] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u81EA\u52A8\u5220\u9664: " + fileId);
2985
2983
  } catch (error) {
2986
- logger6.error(`\u274C [Persistence] \u5220\u9664\u5931\u8D25: ${fileId}`, error);
2984
+ logger6.error("\u274C [Persistence] \u5220\u9664\u5931\u8D25: " + fileId, error);
2987
2985
  }
2988
2986
  });
2989
2987
  this.on("files:batch-deleted", async (fileIds) => {
2990
2988
  try {
2991
2989
  await repository.batchDelete(fileIds);
2992
- logger6.info(`\u{1F5D1}\uFE0F [Persistence] \u6279\u91CF\u5220\u9664\u5143\u6570\u636E: ${fileIds.length} \u4E2A\u6587\u4EF6`);
2990
+ logger6.info("\u{1F5D1}\uFE0F [Persistence] \u6279\u91CF\u5220\u9664\u5143\u6570\u636E: " + fileIds.length + " \u4E2A\u6587\u4EF6");
2993
2991
  } catch (error) {
2994
2992
  logger6.error(`\u274C [Persistence] \u6279\u91CF\u5220\u9664\u5931\u8D25`, error);
2995
2993
  }
@@ -3021,16 +3019,16 @@ var UniversalFileService = class extends events.EventEmitter {
3021
3019
  for (const [type, provider] of this.storageProviders) {
3022
3020
  if ("reinitialize" in provider) {
3023
3021
  try {
3024
- logger6.info(`\u{1F504} [UniversalFileService] \u91CD\u65B0\u521D\u59CB\u5316\u5B58\u50A8\u63D0\u4F9B\u8005: ${type}...`);
3022
+ logger6.info("\u{1F504} [UniversalFileService] \u91CD\u65B0\u521D\u59CB\u5316\u5B58\u50A8\u63D0\u4F9B\u8005: " + type + "...");
3025
3023
  const config = this.config.storageProviders?.[type];
3026
3024
  if (config) {
3027
3025
  await provider.reinitialize(config);
3028
- logger6.info(`\u2705 [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u91CD\u65B0\u521D\u59CB\u5316\u5B8C\u6210: ${type}`);
3026
+ logger6.info("\u2705 [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u91CD\u65B0\u521D\u59CB\u5316\u5B8C\u6210: " + type);
3029
3027
  } else {
3030
- logger6.warn(`\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u914D\u7F6E\u4E0D\u5B58\u5728: ${type}`);
3028
+ logger6.warn("\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u914D\u7F6E\u4E0D\u5B58\u5728: " + type);
3031
3029
  }
3032
3030
  } catch (error) {
3033
- logger6.error(`\u274C [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u91CD\u65B0\u521D\u59CB\u5316\u5931\u8D25: ${type}`, error);
3031
+ logger6.error("\u274C [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u91CD\u65B0\u521D\u59CB\u5316\u5931\u8D25: " + type, error);
3034
3032
  }
3035
3033
  }
3036
3034
  }
@@ -3045,21 +3043,21 @@ var UniversalFileService = class extends events.EventEmitter {
3045
3043
  */
3046
3044
  registerStorageProvider(provider) {
3047
3045
  this.storageProviders.set(provider.type, provider);
3048
- logger6.info(`\u{1F4E6} [UniversalFileService] \u6CE8\u518C\u5B58\u50A8\u63D0\u4F9B\u8005: ${provider.type}`);
3046
+ logger6.info("\u{1F4E6} [UniversalFileService] \u6CE8\u518C\u5B58\u50A8\u63D0\u4F9B\u8005: " + provider.type);
3049
3047
  }
3050
3048
  /**
3051
3049
  * 注册CDN提供者
3052
3050
  */
3053
3051
  registerCDNProvider(provider) {
3054
3052
  this.cdnProviders.set(provider.type, provider);
3055
- logger6.info(`\u{1F310} [UniversalFileService] \u6CE8\u518CCDN\u63D0\u4F9B\u8005: ${provider.type}`);
3053
+ logger6.info("\u{1F310} [UniversalFileService] \u6CE8\u518CCDN\u63D0\u4F9B\u8005: " + provider.type);
3056
3054
  }
3057
3055
  /**
3058
3056
  * 注册文件处理器
3059
3057
  */
3060
3058
  registerFileProcessor(processor) {
3061
3059
  this.fileProcessors.set(processor.type, processor);
3062
- logger6.info(`\u2699\uFE0F [UniversalFileService] \u6CE8\u518C\u6587\u4EF6\u5904\u7406\u5668: ${processor.type}`);
3060
+ logger6.info("\u2699\uFE0F [UniversalFileService] \u6CE8\u518C\u6587\u4EF6\u5904\u7406\u5668: " + processor.type);
3063
3061
  }
3064
3062
  // ============= 核心文件操作方法 =============
3065
3063
  /**
@@ -3068,7 +3066,7 @@ var UniversalFileService = class extends events.EventEmitter {
3068
3066
  async uploadFile(fileInfo, storageType, onProgress) {
3069
3067
  const fileId = uuid.v4();
3070
3068
  const startTime = Date.now();
3071
- logger6.info(`\u{1F4E4} [UniversalFileService] \u5F00\u59CB\u4E0A\u4F20\u6587\u4EF6: ${fileInfo.file.name}, ID: ${fileId}`);
3069
+ logger6.info("\u{1F4E4} [UniversalFileService] \u5F00\u59CB\u4E0A\u4F20\u6587\u4EF6: " + fileInfo.file.name + ", ID: " + fileId);
3072
3070
  try {
3073
3071
  await this.validateFile(fileInfo.file);
3074
3072
  const progress = {
@@ -3087,7 +3085,7 @@ var UniversalFileService = class extends events.EventEmitter {
3087
3085
  let storageProvider = this.storageProviders.get(selectedStorageType);
3088
3086
  if (!storageProvider) {
3089
3087
  logger6.info(
3090
- `\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005 ${selectedStorageType} \u4E0D\u53EF\u7528\uFF0C\u5C1D\u8BD5\u4F7F\u7528OSS`
3088
+ "\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005 " + selectedStorageType + " \u4E0D\u53EF\u7528\uFF0C\u5C1D\u8BD5\u4F7F\u7528OSS"
3091
3089
  );
3092
3090
  storageProvider = this.storageProviders.get("aliyun-oss");
3093
3091
  if (!storageProvider) {
@@ -3106,7 +3104,7 @@ var UniversalFileService = class extends events.EventEmitter {
3106
3104
  this.emitFileEvent("upload:progress", fileId, { progress: progress.progress });
3107
3105
  const uploadResult = await storageProvider.upload(fileInfo, storagePath);
3108
3106
  if (!uploadResult.success) {
3109
- throw new chunkZRAW3HXA_js.FileUploadError(`\u4E0A\u4F20\u5931\u8D25: ${uploadResult.error}`);
3107
+ throw new chunkZRAW3HXA_js.FileUploadError("\u4E0A\u4F20\u5931\u8D25: " + uploadResult.error);
3110
3108
  }
3111
3109
  metadata.storagePath = uploadResult.path || storagePath;
3112
3110
  metadata.storageProvider = selectedStorageType;
@@ -3129,7 +3127,7 @@ var UniversalFileService = class extends events.EventEmitter {
3129
3127
  this.uploadProgressMap.set(fileId, progress);
3130
3128
  onProgress?.(progress);
3131
3129
  const uploadTime = Date.now() - startTime;
3132
- logger6.info(`\u2705 [UniversalFileService] \u6587\u4EF6\u4E0A\u4F20\u5B8C\u6210: ${fileId}, \u8017\u65F6: ${uploadTime}ms`);
3130
+ logger6.info("\u2705 [UniversalFileService] \u6587\u4EF6\u4E0A\u4F20\u5B8C\u6210: " + fileId + ", \u8017\u65F6: " + uploadTime + "ms");
3133
3131
  this.emitFileEvent("upload:complete", fileId, {
3134
3132
  fileName: fileInfo.file.name,
3135
3133
  size: fileInfo.file.size,
@@ -3137,7 +3135,7 @@ var UniversalFileService = class extends events.EventEmitter {
3137
3135
  });
3138
3136
  return metadata;
3139
3137
  } catch (error) {
3140
- console.error(`\u274C [UniversalFileService] \u6587\u4EF6\u4E0A\u4F20\u5931\u8D25: ${fileId}:`, error);
3138
+ console.error("\u274C [UniversalFileService] \u6587\u4EF6\u4E0A\u4F20\u5931\u8D25: " + fileId + ":", error);
3141
3139
  const progress = this.uploadProgressMap.get(fileId);
3142
3140
  if (progress) {
3143
3141
  progress.status = "failed";
@@ -3165,27 +3163,27 @@ var UniversalFileService = class extends events.EventEmitter {
3165
3163
  * 下载文件
3166
3164
  */
3167
3165
  async downloadFile(fileId, userId) {
3168
- logger6.info(`\u{1F4E5} [UniversalFileService] \u5F00\u59CB\u4E0B\u8F7D\u6587\u4EF6: ${fileId}`);
3166
+ logger6.info("\u{1F4E5} [UniversalFileService] \u5F00\u59CB\u4E0B\u8F7D\u6587\u4EF6: " + fileId);
3169
3167
  try {
3170
3168
  this.emitFileEvent("download:start", fileId);
3171
3169
  const metadata = await this.getFileMetadata(fileId);
3172
3170
  if (!metadata) {
3173
- throw new chunkZRAW3HXA_js.FileUploadError(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${fileId}`);
3171
+ throw new chunkZRAW3HXA_js.FileUploadError("\u6587\u4EF6\u4E0D\u5B58\u5728: " + fileId);
3174
3172
  }
3175
3173
  await this.checkFileAccess(metadata, userId);
3176
3174
  const storageProvider = this.storageProviders.get(metadata.storageProvider);
3177
3175
  if (!storageProvider) {
3178
- throw new chunkZRAW3HXA_js.StorageProviderError(`\u5B58\u50A8\u63D0\u4F9B\u8005\u4E0D\u5B58\u5728: ${metadata.storageProvider}`);
3176
+ throw new chunkZRAW3HXA_js.StorageProviderError("\u5B58\u50A8\u63D0\u4F9B\u8005\u4E0D\u5B58\u5728: " + metadata.storageProvider);
3179
3177
  }
3180
3178
  const fileBuffer = await storageProvider.download(metadata.storagePath);
3181
3179
  if (this.config.persistence?.enabled) {
3182
3180
  await this.updateAccessStats(fileId);
3183
3181
  }
3184
- logger6.info(`\u2705 [UniversalFileService] \u6587\u4EF6\u4E0B\u8F7D\u5B8C\u6210: ${fileId}`);
3182
+ logger6.info("\u2705 [UniversalFileService] \u6587\u4EF6\u4E0B\u8F7D\u5B8C\u6210: " + fileId);
3185
3183
  this.emitFileEvent("download:complete", fileId, { size: fileBuffer.length });
3186
3184
  return fileBuffer;
3187
3185
  } catch (error) {
3188
- console.error(`\u274C [UniversalFileService] \u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25: ${fileId}:`, error);
3186
+ console.error("\u274C [UniversalFileService] \u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25: " + fileId + ":", error);
3189
3187
  this.emitFileEvent("download:error", fileId, void 0, error instanceof Error ? error.message : "\u4E0B\u8F7D\u5931\u8D25");
3190
3188
  throw error;
3191
3189
  }
@@ -3194,30 +3192,30 @@ var UniversalFileService = class extends events.EventEmitter {
3194
3192
  * 删除文件
3195
3193
  */
3196
3194
  async deleteFile(fileId, userId) {
3197
- logger6.info(`\u{1F5D1}\uFE0F [UniversalFileService] \u5F00\u59CB\u5220\u9664\u6587\u4EF6: ${fileId}`);
3195
+ logger6.info("\u{1F5D1}\uFE0F [UniversalFileService] \u5F00\u59CB\u5220\u9664\u6587\u4EF6: " + fileId);
3198
3196
  try {
3199
3197
  const metadata = await this.getFileMetadata(fileId);
3200
3198
  if (!metadata) {
3201
- throw new chunkZRAW3HXA_js.FileUploadError(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${fileId}`);
3199
+ throw new chunkZRAW3HXA_js.FileUploadError("\u6587\u4EF6\u4E0D\u5B58\u5728: " + fileId);
3202
3200
  }
3203
3201
  await this.checkFileDeleteAccess(metadata, userId);
3204
3202
  const storageProvider = this.storageProviders.get(metadata.storageProvider);
3205
3203
  if (!storageProvider) {
3206
- throw new chunkZRAW3HXA_js.StorageProviderError(`\u5B58\u50A8\u63D0\u4F9B\u8005\u4E0D\u5B58\u5728: ${metadata.storageProvider}`);
3204
+ throw new chunkZRAW3HXA_js.StorageProviderError("\u5B58\u50A8\u63D0\u4F9B\u8005\u4E0D\u5B58\u5728: " + metadata.storageProvider);
3207
3205
  }
3208
3206
  const deleteResult = await storageProvider.delete(metadata.storagePath);
3209
3207
  if (!deleteResult.success) {
3210
- console.warn(`\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u6587\u4EF6\u5220\u9664\u5931\u8D25: ${deleteResult.error}`);
3208
+ console.warn("\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u6587\u4EF6\u5220\u9664\u5931\u8D25: " + deleteResult.error);
3211
3209
  }
3212
3210
  if (this.config.persistence?.enabled) {
3213
3211
  await this.deleteFileMetadata(fileId);
3214
3212
  }
3215
3213
  this.clearMetadataCache(fileId);
3216
- logger6.info(`\u2705 [UniversalFileService] \u6587\u4EF6\u5220\u9664\u5B8C\u6210: ${fileId}`);
3214
+ logger6.info("\u2705 [UniversalFileService] \u6587\u4EF6\u5220\u9664\u5B8C\u6210: " + fileId);
3217
3215
  this.emitFileEvent("delete:complete", fileId);
3218
3216
  this.emit("file:deleted", fileId);
3219
3217
  } catch (error) {
3220
- console.error(`\u274C [UniversalFileService] \u6587\u4EF6\u5220\u9664\u5931\u8D25: ${fileId}:`, error);
3218
+ console.error("\u274C [UniversalFileService] \u6587\u4EF6\u5220\u9664\u5931\u8D25: " + fileId + ":", error);
3221
3219
  this.emitFileEvent("delete:error", fileId, void 0, error instanceof Error ? error.message : "\u5220\u9664\u5931\u8D25");
3222
3220
  throw error;
3223
3221
  }
@@ -3226,14 +3224,14 @@ var UniversalFileService = class extends events.EventEmitter {
3226
3224
  * 获取文件访问URL
3227
3225
  */
3228
3226
  async getFileUrl(fileId, userId, expiresIn) {
3229
- const cacheKey = `${fileId}_${userId || "public"}_${expiresIn || 0}`;
3227
+ const cacheKey = fileId + "_" + (userId || "public") + "_" + (expiresIn || 0);
3230
3228
  const cached = this.urlCache.get(cacheKey);
3231
3229
  if (cached && cached.expires > Date.now()) {
3232
3230
  return cached.url;
3233
3231
  }
3234
3232
  const metadata = await this.getFileMetadata(fileId);
3235
3233
  if (!metadata) {
3236
- throw new chunkZRAW3HXA_js.FileUploadError(`\u6587\u4EF6\u4E0D\u5B58\u5728: ${fileId}`);
3234
+ throw new chunkZRAW3HXA_js.FileUploadError("\u6587\u4EF6\u4E0D\u5B58\u5728: " + fileId);
3237
3235
  }
3238
3236
  await this.checkFileAccess(metadata, userId);
3239
3237
  let url;
@@ -3242,7 +3240,7 @@ var UniversalFileService = class extends events.EventEmitter {
3242
3240
  } else {
3243
3241
  const storageProvider = this.storageProviders.get(metadata.storageProvider);
3244
3242
  if (!storageProvider) {
3245
- throw new chunkZRAW3HXA_js.StorageProviderError(`\u5B58\u50A8\u63D0\u4F9B\u8005\u4E0D\u5B58\u5728: ${metadata.storageProvider}`);
3243
+ throw new chunkZRAW3HXA_js.StorageProviderError("\u5B58\u50A8\u63D0\u4F9B\u8005\u4E0D\u5B58\u5728: " + metadata.storageProvider);
3246
3244
  }
3247
3245
  url = await storageProvider.getAccessUrl(metadata.storagePath, expiresIn);
3248
3246
  }
@@ -3270,7 +3268,7 @@ var UniversalFileService = class extends events.EventEmitter {
3270
3268
  return null;
3271
3269
  }
3272
3270
  }
3273
- logger6.warn(`\u26A0\uFE0F [UniversalFileService] \u6301\u4E45\u5316\u672A\u542F\u7528,\u65E0\u6CD5\u67E5\u8BE2\u6587\u4EF6\u5143\u6570\u636E: ${fileId}`);
3271
+ logger6.warn("\u26A0\uFE0F [UniversalFileService] \u6301\u4E45\u5316\u672A\u542F\u7528,\u65E0\u6CD5\u67E5\u8BE2\u6587\u4EF6\u5143\u6570\u636E: " + fileId);
3274
3272
  return null;
3275
3273
  }
3276
3274
  /**
@@ -3376,7 +3374,7 @@ var UniversalFileService = class extends events.EventEmitter {
3376
3374
  if (i === maxRetries - 1) {
3377
3375
  throw new Error("OSS\u914D\u7F6E\u52A0\u8F7D\u8D85\u65F6\uFF1A\u7F3A\u5C11\u5FC5\u9700\u7684\u914D\u7F6E\u9879 (accessKeyId, accessKeySecret, bucket, region)");
3378
3376
  }
3379
- logger6.debug(`\u7B49\u5F85OSS\u914D\u7F6E\u52A0\u8F7D\u4E2D... (${i + 1}/${maxRetries})`);
3377
+ logger6.debug("\u7B49\u5F85OSS\u914D\u7F6E\u52A0\u8F7D\u4E2D... (" + (i + 1) + "/" + maxRetries + ")");
3380
3378
  }
3381
3379
  }
3382
3380
  }
@@ -3397,12 +3395,12 @@ var UniversalFileService = class extends events.EventEmitter {
3397
3395
  if (provider) {
3398
3396
  try {
3399
3397
  await provider.initialize(config);
3400
- logger6.info(`\u2705 [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u521D\u59CB\u5316\u5B8C\u6210: ${type}`);
3398
+ logger6.info("\u2705 [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u521D\u59CB\u5316\u5B8C\u6210: " + type);
3401
3399
  } catch (error) {
3402
- console.warn(`\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u521D\u59CB\u5316\u5931\u8D25: ${type}:`, error);
3400
+ console.warn("\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u521D\u59CB\u5316\u5931\u8D25: " + type + ":", error);
3403
3401
  }
3404
3402
  } else {
3405
- console.warn(`\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u672A\u6CE8\u518C: ${type}`);
3403
+ console.warn("\u26A0\uFE0F [UniversalFileService] \u5B58\u50A8\u63D0\u4F9B\u8005\u672A\u6CE8\u518C: " + type);
3406
3404
  }
3407
3405
  }
3408
3406
  }
@@ -3413,19 +3411,19 @@ var UniversalFileService = class extends events.EventEmitter {
3413
3411
  try {
3414
3412
  if (this.config.storage) {
3415
3413
  if (this.config.storage.type === "aliyun-oss" && this.config.storage.enabled) {
3416
- const { AliyunOSSProvider: AliyunOSSProvider2 } = await import('../../AliyunOSSProvider-FWAKUB2T.js');
3414
+ const { AliyunOSSProvider: AliyunOSSProvider2 } = await import('../../AliyunOSSProvider-HCNGDJL7.js');
3417
3415
  const ossProvider = new AliyunOSSProvider2();
3418
3416
  this.registerStorageProvider(ossProvider);
3419
3417
  logger6.info("\u2705 [UniversalFileService] \u963F\u91CC\u4E91OSS\u63D0\u4F9B\u8005\u6CE8\u518C\u6210\u529F");
3420
3418
  } else if (this.config.storage.type === "local" && this.config.storage.enabled) {
3421
- const { LocalStorageProvider: LocalStorageProvider2 } = await import('../../LocalStorageProvider-XSRCUXOU.js');
3419
+ const { LocalStorageProvider: LocalStorageProvider2 } = await import('../../LocalStorageProvider-PP7MA5OT.js');
3422
3420
  const localProvider = new LocalStorageProvider2();
3423
3421
  this.registerStorageProvider(localProvider);
3424
3422
  logger6.info("\u2705 [UniversalFileService] \u672C\u5730\u5B58\u50A8\u63D0\u4F9B\u8005\u6CE8\u518C\u6210\u529F");
3425
3423
  }
3426
3424
  }
3427
3425
  if (this.storageProviders.size === 0) {
3428
- const { LocalStorageProvider: LocalStorageProvider2 } = await import('../../LocalStorageProvider-XSRCUXOU.js');
3426
+ const { LocalStorageProvider: LocalStorageProvider2 } = await import('../../LocalStorageProvider-PP7MA5OT.js');
3429
3427
  const fallbackProvider = new LocalStorageProvider2();
3430
3428
  this.registerStorageProvider(fallbackProvider);
3431
3429
  logger6.info("\u2705 [UniversalFileService] \u5DF2\u6CE8\u518C\u5907\u7528\u672C\u5730\u5B58\u50A8\u63D0\u4F9B\u8005");
@@ -3437,22 +3435,22 @@ var UniversalFileService = class extends events.EventEmitter {
3437
3435
  }
3438
3436
  async initializeCDNProviders() {
3439
3437
  if (this.config.cdn && this.config.cdn.enabled) {
3440
- logger6.info(`\u2705 [UniversalFileService] CDN\u914D\u7F6E\u5DF2\u542F\u7528: ${this.config.cdn.type}`);
3438
+ logger6.info("\u2705 [UniversalFileService] CDN\u914D\u7F6E\u5DF2\u542F\u7528: " + this.config.cdn.type);
3441
3439
  }
3442
3440
  }
3443
3441
  async initializeFileProcessors() {
3444
3442
  for (const processor of Array.from(this.fileProcessors.values())) {
3445
3443
  await processor.initialize();
3446
- logger6.info(`\u2705 [UniversalFileService] \u6587\u4EF6\u5904\u7406\u5668\u521D\u59CB\u5316\u5B8C\u6210: ${processor.type}`);
3444
+ logger6.info("\u2705 [UniversalFileService] \u6587\u4EF6\u5904\u7406\u5668\u521D\u59CB\u5316\u5B8C\u6210: " + processor.type);
3447
3445
  }
3448
3446
  }
3449
3447
  async validateFile(file) {
3450
3448
  if (this.config.maxFileSize && file.size > this.config.maxFileSize) {
3451
- throw new chunkZRAW3HXA_js.FileUploadError(`\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7\u9650\u5236: ${file.size} > ${this.config.maxFileSize}`);
3449
+ throw new chunkZRAW3HXA_js.FileUploadError("\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7\u9650\u5236: " + file.size + " > " + this.config.maxFileSize);
3452
3450
  }
3453
3451
  const mimeType = file.type || getMimeType(file.name);
3454
3452
  if (this.config.allowedMimeTypes && this.config.allowedMimeTypes.length > 0 && !this.config.allowedMimeTypes.includes(mimeType)) {
3455
- throw new chunkZRAW3HXA_js.FileUploadError(`\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B: ${mimeType}`);
3453
+ throw new chunkZRAW3HXA_js.FileUploadError("\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B: " + mimeType);
3456
3454
  }
3457
3455
  }
3458
3456
  async generateFileMetadata(fileId, fileInfo) {
@@ -3463,7 +3461,7 @@ var UniversalFileService = class extends events.EventEmitter {
3463
3461
  return {
3464
3462
  id: fileId,
3465
3463
  originalName: fileInfo.file.name,
3466
- storageName: `${fileId}${extension}`,
3464
+ storageName: fileId + extension,
3467
3465
  size: fileInfo.file.size,
3468
3466
  mimeType,
3469
3467
  extension,
@@ -3484,7 +3482,7 @@ var UniversalFileService = class extends events.EventEmitter {
3484
3482
  const year = date.getFullYear();
3485
3483
  const month = String(date.getMonth() + 1).padStart(2, "0");
3486
3484
  const day = String(date.getDate()).padStart(2, "0");
3487
- return `${metadata.moduleId}/${year}/${month}/${day}/${metadata.storageName}`;
3485
+ return metadata.moduleId + "/" + year + "/" + month + "/" + day + "/" + metadata.storageName;
3488
3486
  }
3489
3487
  async generateFileHash(file) {
3490
3488
  const buffer = await file.arrayBuffer();
@@ -3498,7 +3496,7 @@ var UniversalFileService = class extends events.EventEmitter {
3498
3496
  }
3499
3497
  const processor = this.fileProcessors.get(options.type);
3500
3498
  if (!processor) {
3501
- console.warn(`\u26A0\uFE0F [UniversalFileService] \u6587\u4EF6\u5904\u7406\u5668\u4E0D\u5B58\u5728: ${options.type}`);
3499
+ console.warn("\u26A0\uFE0F [UniversalFileService] \u6587\u4EF6\u5904\u7406\u5668\u4E0D\u5B58\u5728: " + options.type);
3502
3500
  return;
3503
3501
  }
3504
3502
  if (this.processingQueue.length >= 1e3) {
@@ -3519,7 +3517,7 @@ var UniversalFileService = class extends events.EventEmitter {
3519
3517
  const basePath = metadata.storagePath;
3520
3518
  const extension = path3__namespace.extname(basePath);
3521
3519
  const basename4 = basePath.replace(extension, "");
3522
- return `${basename4}_processed${extension}`;
3520
+ return basename4 + "_processed" + extension;
3523
3521
  }
3524
3522
  async processFileQueue() {
3525
3523
  if (this.isProcessingQueueRunning || this.processingQueue.length === 0) {
@@ -3538,7 +3536,7 @@ var UniversalFileService = class extends events.EventEmitter {
3538
3536
  this.emitFileEvent("processing:error", task.fileId, void 0, result.error);
3539
3537
  }
3540
3538
  } catch (error) {
3541
- console.error(`\u274C [UniversalFileService] \u6587\u4EF6\u5904\u7406\u5931\u8D25: ${task.fileId}:`, error);
3539
+ console.error("\u274C [UniversalFileService] \u6587\u4EF6\u5904\u7406\u5931\u8D25: " + task.fileId + ":", error);
3542
3540
  this.emitFileEvent(
3543
3541
  "processing:error",
3544
3542
  task.fileId,
@@ -3582,7 +3580,7 @@ var UniversalFileService = class extends events.EventEmitter {
3582
3580
  } catch (error) {
3583
3581
  console.error("\u274C [UniversalFileService] \u4FDD\u5B58\u6587\u4EF6\u5143\u6570\u636E\u5931\u8D25:", error);
3584
3582
  throw new chunkZRAW3HXA_js.FileUploadError(
3585
- `\u4FDD\u5B58\u6587\u4EF6\u5143\u6570\u636E\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
3583
+ "\u4FDD\u5B58\u6587\u4EF6\u5143\u6570\u636E\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
3586
3584
  );
3587
3585
  }
3588
3586
  }
@@ -3599,7 +3597,7 @@ var UniversalFileService = class extends events.EventEmitter {
3599
3597
  } catch (error) {
3600
3598
  console.error("\u274C [UniversalFileService] \u5220\u9664\u6587\u4EF6\u5143\u6570\u636E\u5931\u8D25:", error);
3601
3599
  throw new chunkZRAW3HXA_js.FileUploadError(
3602
- `\u5220\u9664\u6587\u4EF6\u5143\u6570\u636E\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
3600
+ "\u5220\u9664\u6587\u4EF6\u5143\u6570\u636E\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")
3603
3601
  );
3604
3602
  }
3605
3603
  }
@@ -3647,14 +3645,14 @@ var UniversalFileService = class extends events.EventEmitter {
3647
3645
  const startTime = Date.now();
3648
3646
  while (!this.isFullyInitialized()) {
3649
3647
  if (Date.now() - startTime > timeoutMs) {
3650
- throw new Error(`\u670D\u52A1\u521D\u59CB\u5316\u8D85\u65F6 (${timeoutMs}ms)`);
3648
+ throw new Error("\u670D\u52A1\u521D\u59CB\u5316\u8D85\u65F6 (" + timeoutMs + "ms)");
3651
3649
  }
3652
3650
  await new Promise((resolve) => setTimeout(resolve, 100));
3653
3651
  }
3654
3652
  logger6.info("\u2705 [UniversalFileService] \u670D\u52A1\u5B8C\u5168\u521D\u59CB\u5316\u5C31\u7EEA");
3655
3653
  }
3656
3654
  };
3657
- var logger7 = chunk6PRFP5EG_js.createLogger("CacheManager");
3655
+ var logger7 = chunk25OFOKNF_js.createLogger("CacheManager");
3658
3656
  var CacheManager = class {
3659
3657
  constructor(options = {}) {
3660
3658
  this.redisClient = null;
@@ -3705,7 +3703,7 @@ var CacheManager = class {
3705
3703
  * 生成缓存键
3706
3704
  */
3707
3705
  generateKey(key) {
3708
- return `${this.options.keyPrefix}${key}`;
3706
+ return this.options.keyPrefix + key;
3709
3707
  }
3710
3708
  /**
3711
3709
  * 获取缓存数据
@@ -3818,7 +3816,7 @@ var CacheManager = class {
3818
3816
  try {
3819
3817
  this.memoryCache.clear();
3820
3818
  if (this.redisClient && this.stats.redisConnected) {
3821
- const keys = await this.redisClient.keys(`${this.options.keyPrefix}*`);
3819
+ const keys = await this.redisClient.keys(this.options.keyPrefix + "*");
3822
3820
  if (keys.length > 0) {
3823
3821
  await this.redisClient.del(...keys);
3824
3822
  }
@@ -3850,7 +3848,7 @@ var CacheManager = class {
3850
3848
  * 预热缓存
3851
3849
  */
3852
3850
  async warmup(items) {
3853
- logger7.info(`\u5F00\u59CB\u9884\u70ED\u7F13\u5B58\uFF0C\u5171 ${items.length} \u9879...`);
3851
+ logger7.info("\u5F00\u59CB\u9884\u70ED\u7F13\u5B58\uFF0C\u5171 " + items.length + " \u9879...");
3854
3852
  const promises = items.map((item) => this.set(item.key, item.data, item.ttl));
3855
3853
  try {
3856
3854
  await Promise.all(promises);
@@ -3876,7 +3874,7 @@ var CacheManager = class {
3876
3874
  */
3877
3875
  matchPattern(key, pattern) {
3878
3876
  const regexPattern = pattern.replace(/\*/g, ".*").replace(/\?/g, ".");
3879
- const regex = new RegExp(`^${regexPattern}$`);
3877
+ const regex = new RegExp("^" + regexPattern + "$");
3880
3878
  return regex.test(key);
3881
3879
  }
3882
3880
  /**
@@ -4409,7 +4407,7 @@ var CdnCacheStrategy2 = class {
4409
4407
  Expires: new Date(Date.now() + strategy.browserCacheTtl * 1e3).toUTCString()
4410
4408
  };
4411
4409
  if (strategy.browserCache) {
4412
- headers["ETag"] = `"${Date.now()}"`;
4410
+ headers["ETag"] = '"' + Date.now() + '"';
4413
4411
  }
4414
4412
  headers["Last-Modified"] = (/* @__PURE__ */ new Date()).toUTCString();
4415
4413
  if (strategy.type === "static" /* STATIC */) {
@@ -4488,7 +4486,7 @@ var CdnCacheStrategy2 = class {
4488
4486
  if (stats.hitRate < 60) {
4489
4487
  suggestions.push({
4490
4488
  type,
4491
- issue: `${type}\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u547D\u4E2D\u7387\u8FC7\u4F4E (${stats.hitRate.toFixed(1)}%)`,
4489
+ issue: type + "\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u547D\u4E2D\u7387\u8FC7\u4F4E (" + stats.hitRate.toFixed(1) + "%)",
4492
4490
  suggestion: "\u8003\u8651\u589E\u52A0\u7F13\u5B58\u65F6\u95F4\u6216\u542F\u7528\u9884\u70ED\u673A\u5236",
4493
4491
  severity: stats.hitRate < 30 ? "high" : "medium"
4494
4492
  });
@@ -4496,7 +4494,7 @@ var CdnCacheStrategy2 = class {
4496
4494
  if (stats.estimatedSize > 1024 * 1024 * 1024) {
4497
4495
  suggestions.push({
4498
4496
  type,
4499
- issue: `${type}\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u5360\u7528\u7A7A\u95F4\u8FC7\u5927 (${(stats.estimatedSize / 1024 / 1024 / 1024).toFixed(2)}GB)`,
4497
+ issue: type + "\u7C7B\u578B\u6587\u4EF6\u7F13\u5B58\u5360\u7528\u7A7A\u95F4\u8FC7\u5927 (" + (stats.estimatedSize / 1024 / 1024 / 1024).toFixed(2) + "GB)",
4500
4498
  suggestion: "\u8003\u8651\u51CF\u5C11\u7F13\u5B58\u65F6\u95F4\u6216\u4F18\u5316\u6587\u4EF6\u538B\u7F29",
4501
4499
  severity: "medium"
4502
4500
  });
@@ -4656,7 +4654,7 @@ var ApiError = class _ApiError extends Error {
4656
4654
  });
4657
4655
  }
4658
4656
  };
4659
- var logger8 = chunk6PRFP5EG_js.createLogger("DrizzleFileRepository");
4657
+ var logger8 = chunk25OFOKNF_js.createLogger("DrizzleFileRepository");
4660
4658
  function createDrizzleRepository(config) {
4661
4659
  const { db, table, fieldMapping = {} } = config;
4662
4660
  const getField = (field) => {
@@ -4719,13 +4717,13 @@ function createDrizzleRepository(config) {
4719
4717
  const existing = await db.select().from(table).where(drizzleOrm.eq(table[getField("id")], metadata.id)).limit(1);
4720
4718
  if (existing && existing.length > 0) {
4721
4719
  await db.update(table).set(record).where(drizzleOrm.eq(table[getField("id")], metadata.id));
4722
- logger8.info(`\u2705 [DrizzleRepository] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u66F4\u65B0: ${metadata.id}`);
4720
+ logger8.info("\u2705 [DrizzleRepository] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u66F4\u65B0: " + metadata.id);
4723
4721
  } else {
4724
4722
  await db.insert(table).values(record);
4725
- logger8.info(`\u2705 [DrizzleRepository] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u63D2\u5165: ${metadata.id}`);
4723
+ logger8.info("\u2705 [DrizzleRepository] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u63D2\u5165: " + metadata.id);
4726
4724
  }
4727
4725
  } catch (error) {
4728
- logger8.error(`\u274C [DrizzleRepository] \u4FDD\u5B58\u5931\u8D25: ${metadata.id}`, error);
4726
+ logger8.error("\u274C [DrizzleRepository] \u4FDD\u5B58\u5931\u8D25: " + metadata.id, error);
4729
4727
  throw error;
4730
4728
  }
4731
4729
  },
@@ -4737,7 +4735,7 @@ function createDrizzleRepository(config) {
4737
4735
  }
4738
4736
  return toFileMetadata(result[0]);
4739
4737
  } catch (error) {
4740
- logger8.error(`\u274C [DrizzleRepository] \u67E5\u8BE2\u5931\u8D25: ${fileId}`, error);
4738
+ logger8.error("\u274C [DrizzleRepository] \u67E5\u8BE2\u5931\u8D25: " + fileId, error);
4741
4739
  throw error;
4742
4740
  }
4743
4741
  },
@@ -4772,14 +4770,14 @@ function createDrizzleRepository(config) {
4772
4770
  conditions.push(drizzleOrm.eq(table[getField("status")], status));
4773
4771
  }
4774
4772
  if (startDate) {
4775
- conditions.push(drizzleOrm.sql`${table[getField("uploadedAt")]} >= ${startDate}`);
4773
+ conditions.push(drizzleOrm.sql(table[getField("uploadedAt")]) + " >= " + startDate);
4776
4774
  }
4777
4775
  if (endDate) {
4778
- conditions.push(drizzleOrm.sql`${table[getField("uploadedAt")]} <= ${endDate}`);
4776
+ conditions.push(drizzleOrm.sql(table[getField("uploadedAt")]) + " <= " + endDate);
4779
4777
  }
4780
4778
  if (tags && tags.length > 0) {
4781
4779
  for (const tag of tags) {
4782
- conditions.push(drizzleOrm.sql`${table[getField("tags")]} @> ${JSON.stringify([tag])}`);
4780
+ conditions.push(drizzleOrm.sql(table[getField("tags")]) + " @> " + JSON.stringify([tag]));
4783
4781
  }
4784
4782
  }
4785
4783
  const countResult = await db.select({ count: drizzleOrm.sql`count(*)` }).from(table).where(conditions.length > 0 ? drizzleOrm.and(...conditions) : void 0);
@@ -4802,17 +4800,17 @@ function createDrizzleRepository(config) {
4802
4800
  async delete(fileId) {
4803
4801
  try {
4804
4802
  await db.delete(table).where(drizzleOrm.eq(table[getField("id")], fileId));
4805
- logger8.info(`\u{1F5D1}\uFE0F [DrizzleRepository] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u5220\u9664: ${fileId}`);
4803
+ logger8.info("\u{1F5D1}\uFE0F [DrizzleRepository] \u6587\u4EF6\u5143\u6570\u636E\u5DF2\u5220\u9664: " + fileId);
4806
4804
  } catch (error) {
4807
- logger8.error(`\u274C [DrizzleRepository] \u5220\u9664\u5931\u8D25: ${fileId}`, error);
4805
+ logger8.error("\u274C [DrizzleRepository] \u5220\u9664\u5931\u8D25: " + fileId, error);
4808
4806
  throw error;
4809
4807
  }
4810
4808
  },
4811
4809
  async batchDelete(fileIds) {
4812
4810
  try {
4813
4811
  if (fileIds.length === 0) return;
4814
- await db.delete(table).where(drizzleOrm.sql`${table[getField("id")]} = ANY(${fileIds})`);
4815
- logger8.info(`\u{1F5D1}\uFE0F [DrizzleRepository] \u6279\u91CF\u5220\u9664\u6210\u529F: ${fileIds.length} \u4E2A\u6587\u4EF6`);
4812
+ await db.delete(table).where(drizzleOrm.sql(table[getField("id")]) + " = ANY(" + fileIds + ")");
4813
+ logger8.info("\u{1F5D1}\uFE0F [DrizzleRepository] \u6279\u91CF\u5220\u9664\u6210\u529F: " + fileIds.length + " \u4E2A\u6587\u4EF6");
4816
4814
  } catch (error) {
4817
4815
  logger8.error(`\u274C [DrizzleRepository] \u6279\u91CF\u5220\u9664\u5931\u8D25`, error);
4818
4816
  throw error;
@@ -4822,7 +4820,7 @@ function createDrizzleRepository(config) {
4822
4820
  }
4823
4821
 
4824
4822
  // src/universalFile/server/config-helpers.ts
4825
- var logger9 = chunk6PRFP5EG_js.createLogger("FileConfigHelpers");
4823
+ var logger9 = chunk25OFOKNF_js.createLogger("FileConfigHelpers");
4826
4824
  var DEFAULT_MAX_FILE_SIZE = 104857600;
4827
4825
  var DEFAULT_ALLOWED_MIME_TYPES = [
4828
4826
  // 图片类型
@@ -4960,7 +4958,7 @@ function loadConfigFromEnv() {
4960
4958
  const cdnConfig = loadCDNConfigFromEnv();
4961
4959
  const storage = ossConfig || getDefaultLocalStorage();
4962
4960
  const defaultStorage = ossConfig ? "aliyun-oss" : "local";
4963
- logger9.info(`\u4F7F\u7528\u5B58\u50A8\u65B9\u5F0F: ${defaultStorage}`);
4961
+ logger9.info("\u4F7F\u7528\u5B58\u50A8\u65B9\u5F0F: " + defaultStorage);
4964
4962
  const config = {
4965
4963
  storage,
4966
4964
  defaultStorage,
@@ -4988,7 +4986,7 @@ var DEFAULT_OSS_CONFIG_KEYS = {
4988
4986
  internal: "aliyun_oss_internal"
4989
4987
  };
4990
4988
  async function loadOSSConfigFromService(configService, keyMapping = DEFAULT_OSS_CONFIG_KEYS) {
4991
- const logger10 = chunk6PRFP5EG_js.createLogger("loadOSSConfigFromService");
4989
+ const logger10 = chunk25OFOKNF_js.createLogger("loadOSSConfigFromService");
4992
4990
  try {
4993
4991
  const keys = { ...DEFAULT_OSS_CONFIG_KEYS, ...keyMapping };
4994
4992
  const [region, bucket, accessKeyId, accessKeySecret, customDomain, secure, internal] = await Promise.all([
@@ -5042,7 +5040,7 @@ async function createFileServiceWithFactory(options = {}) {
5042
5040
  customConfig,
5043
5041
  autoInitialize = false
5044
5042
  } = options;
5045
- const logger10 = chunk6PRFP5EG_js.createLogger("FileServiceFactory");
5043
+ const logger10 = chunk25OFOKNF_js.createLogger("FileServiceFactory");
5046
5044
  logger10.info("\u521B\u5EFA\u6587\u4EF6\u670D\u52A1...");
5047
5045
  let config = null;
5048
5046
  for (const loader of configLoaders) {
@@ -5087,7 +5085,7 @@ async function createFileServiceWithFactory(options = {}) {
5087
5085
  }
5088
5086
  function createSingleton(factory, options = {}) {
5089
5087
  const { autoInitialize = true, name = "Singleton" } = options;
5090
- const singletonLogger = chunk6PRFP5EG_js.createLogger(name);
5088
+ const singletonLogger = chunk25OFOKNF_js.createLogger(name);
5091
5089
  let instance = null;
5092
5090
  let initPromise = null;
5093
5091
  return {
@@ -5582,11 +5580,11 @@ var fileThumbnailsRelations = drizzleOrm.relations(fileThumbnails, ({ one }) =>
5582
5580
 
5583
5581
  Object.defineProperty(exports, "LocalStorageProvider", {
5584
5582
  enumerable: true,
5585
- get: function () { return chunkLZHMNOED_js.LocalStorageProvider; }
5583
+ get: function () { return chunkQ5EDCKQA_js.LocalStorageProvider; }
5586
5584
  });
5587
5585
  Object.defineProperty(exports, "AliyunOSSProvider", {
5588
5586
  enumerable: true,
5589
- get: function () { return chunkOPPF3326_js.AliyunOSSProvider; }
5587
+ get: function () { return chunkHJ6MH7J7_js.AliyunOSSProvider; }
5590
5588
  });
5591
5589
  exports.AliyunCDNProvider = AliyunCDNProvider;
5592
5590
  exports.ApiError = ApiError;