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.
- package/dist/AliyunOSSProvider-4W47OFEK.mjs +6 -0
- package/dist/{AliyunOSSProvider-KJYRIZES.mjs.map → AliyunOSSProvider-4W47OFEK.mjs.map} +1 -1
- package/dist/AliyunOSSProvider-HCNGDJL7.js +15 -0
- package/dist/{AliyunOSSProvider-FWAKUB2T.js.map → AliyunOSSProvider-HCNGDJL7.js.map} +1 -1
- package/dist/ConfigService-3DIC6C3Q.js +21 -0
- package/dist/{ConfigService-7MEZXKJ5.js.map → ConfigService-3DIC6C3Q.js.map} +1 -1
- package/dist/ConfigService-V6ZK273Z.mjs +4 -0
- package/dist/{ConfigService-BV57YYFW.mjs.map → ConfigService-V6ZK273Z.mjs.map} +1 -1
- package/dist/LocalStorageProvider-3RVPCQB3.mjs +6 -0
- package/dist/{LocalStorageProvider-RTPMUOZ2.mjs.map → LocalStorageProvider-3RVPCQB3.mjs.map} +1 -1
- package/dist/LocalStorageProvider-PP7MA5OT.js +15 -0
- package/dist/{LocalStorageProvider-XSRCUXOU.js.map → LocalStorageProvider-PP7MA5OT.js.map} +1 -1
- package/dist/PMXParser-2VTA737I.js +13 -0
- package/dist/{PMXParser-YBS3B6HM.js.map → PMXParser-2VTA737I.js.map} +1 -1
- package/dist/PMXParser-RNVQL76A.mjs +4 -0
- package/dist/{PMXParser-L6IWHL4I.mjs.map → PMXParser-RNVQL76A.mjs.map} +1 -1
- package/dist/analytics/index.js +46 -45
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/index.mjs +45 -44
- package/dist/analytics/index.mjs.map +1 -1
- package/dist/analytics/server/index.js +4 -4
- package/dist/analytics/server/index.js.map +1 -1
- package/dist/analytics/server/index.mjs +4 -4
- package/dist/analytics/server/index.mjs.map +1 -1
- package/dist/api/index.js +5 -5
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +5 -5
- package/dist/api/index.mjs.map +1 -1
- package/dist/audioDetection/index.js +17 -16
- package/dist/audioDetection/index.js.map +1 -1
- package/dist/audioDetection/index.mjs +17 -16
- package/dist/audioDetection/index.mjs.map +1 -1
- package/dist/auth/client/index.js +4 -4
- package/dist/auth/client/index.mjs +1 -1
- package/dist/auth/components/index.js +3 -3
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/components/index.mjs +3 -3
- package/dist/auth/components/index.mjs.map +1 -1
- package/dist/auth/index.js +29 -29
- package/dist/auth/index.mjs +5 -5
- package/dist/auth/middleware/index.js +3 -3
- package/dist/auth/middleware/index.mjs +2 -2
- package/dist/auth/routes/index.js +14 -14
- package/dist/auth/routes/index.mjs +2 -2
- package/dist/auth/services/index.js +7 -7
- package/dist/auth/services/index.mjs +1 -1
- package/dist/calendar/index.js +146 -182
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/index.mjs +139 -175
- package/dist/calendar/index.mjs.map +1 -1
- package/dist/calendar/routes/index.js +1 -1
- package/dist/calendar/routes/index.js.map +1 -1
- package/dist/calendar/routes/index.mjs +1 -1
- package/dist/calendar/routes/index.mjs.map +1 -1
- package/dist/{chunk-5YQ5B7IZ.js → chunk-24HGREE6.js} +5 -5
- package/dist/{chunk-5YQ5B7IZ.js.map → chunk-24HGREE6.js.map} +1 -1
- package/dist/{chunk-6PRFP5EG.js → chunk-25OFOKNF.js} +6 -6
- package/dist/chunk-25OFOKNF.js.map +1 -0
- package/dist/{chunk-KQGP6BTS.mjs → chunk-3DXPQ4YV.mjs} +6 -6
- package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
- package/dist/{chunk-3BGPZN4X.mjs → chunk-3NHAT7D4.mjs} +12 -12
- package/dist/chunk-3NHAT7D4.mjs.map +1 -0
- package/dist/{chunk-MW4BCIZC.mjs → chunk-4HC6M7FK.mjs} +3 -3
- package/dist/chunk-4HC6M7FK.mjs.map +1 -0
- package/dist/{chunk-ESRCX5TQ.mjs → chunk-52TN2QSS.mjs} +3 -3
- package/dist/{chunk-ESRCX5TQ.mjs.map → chunk-52TN2QSS.mjs.map} +1 -1
- package/dist/{chunk-CNTILN5J.mjs → chunk-5YQ62BKX.mjs} +20 -19
- package/dist/chunk-5YQ62BKX.mjs.map +1 -0
- package/dist/{chunk-6W5BMXJG.js → chunk-6OWNMJKG.js} +4 -4
- package/dist/{chunk-6W5BMXJG.js.map → chunk-6OWNMJKG.js.map} +1 -1
- package/dist/{chunk-DUHZ7VZP.js → chunk-7VRT55ZD.js} +3 -3
- package/dist/chunk-7VRT55ZD.js.map +1 -0
- package/dist/{chunk-3WOAPLEG.mjs → chunk-EB4NR623.mjs} +27 -26
- package/dist/chunk-EB4NR623.mjs.map +1 -0
- package/dist/chunk-EI27JKND.mjs +1988 -0
- package/dist/chunk-EI27JKND.mjs.map +1 -0
- package/dist/{chunk-CD77U7LZ.js → chunk-GBPLX42J.js} +9 -9
- package/dist/chunk-GBPLX42J.js.map +1 -0
- package/dist/{chunk-TFQF2HDO.mjs → chunk-HDEOCX2L.mjs} +12 -12
- package/dist/chunk-HDEOCX2L.mjs.map +1 -0
- package/dist/{chunk-TV3VKRJK.mjs → chunk-HDMIOOZY.mjs} +38 -68
- package/dist/chunk-HDMIOOZY.mjs.map +1 -0
- package/dist/{chunk-OPPF3326.js → chunk-HJ6MH7J7.js} +39 -69
- package/dist/chunk-HJ6MH7J7.js.map +1 -0
- package/dist/chunk-KO73EBUT.js +80 -0
- package/dist/chunk-KO73EBUT.js.map +1 -0
- package/dist/{chunk-6YKMCPQI.mjs → chunk-KZKIH4AS.mjs} +4 -4
- package/dist/chunk-KZKIH4AS.mjs.map +1 -0
- package/dist/{chunk-LX4XX6W7.js → chunk-L47ZOYHL.js} +15 -89
- package/dist/chunk-L47ZOYHL.js.map +1 -0
- package/dist/{chunk-6MQUBPKB.mjs → chunk-LJ4CCSSY.mjs} +3 -3
- package/dist/{chunk-6MQUBPKB.mjs.map → chunk-LJ4CCSSY.mjs.map} +1 -1
- package/dist/{chunk-TOC5FSHP.js → chunk-NJ2SNXBJ.js} +12 -12
- package/dist/chunk-NJ2SNXBJ.js.map +1 -0
- package/dist/{chunk-OCR5DS4C.mjs → chunk-PE5EAHZK.mjs} +3 -3
- package/dist/chunk-PE5EAHZK.mjs.map +1 -0
- package/dist/{chunk-LZHMNOED.js → chunk-Q5EDCKQA.js} +26 -26
- package/dist/chunk-Q5EDCKQA.js.map +1 -0
- package/dist/{chunk-CLKKZSPZ.js → chunk-RBKGYWME.js} +20 -19
- package/dist/chunk-RBKGYWME.js.map +1 -0
- package/dist/{chunk-VRTRSEEH.mjs → chunk-RSJSZ7QH.mjs} +11 -11
- package/dist/chunk-RSJSZ7QH.mjs.map +1 -0
- package/dist/{chunk-E7RGBAYJ.js → chunk-TDCDEBGP.js} +30 -29
- package/dist/chunk-TDCDEBGP.js.map +1 -0
- package/dist/{chunk-JZXJQMVE.js → chunk-UIFFDRTE.js} +11 -11
- package/dist/chunk-UIFFDRTE.js.map +1 -0
- package/dist/{chunk-T5OZHYVM.mjs → chunk-UKT3PLON.mjs} +13 -85
- package/dist/chunk-UKT3PLON.mjs.map +1 -0
- package/dist/{chunk-UOFTHYIH.js → chunk-UL6XJGUZ.js} +4 -4
- package/dist/chunk-UL6XJGUZ.js.map +1 -0
- package/dist/chunk-VVWQTO4Y.mjs +77 -0
- package/dist/chunk-VVWQTO4Y.mjs.map +1 -0
- package/dist/{chunk-A3UP56MS.js → chunk-WA67GZSZ.js} +3 -3
- package/dist/chunk-WA67GZSZ.js.map +1 -0
- package/dist/{chunk-OLHGZXN3.mjs → chunk-WEEXCPSE.mjs} +5 -5
- package/dist/chunk-WEEXCPSE.mjs.map +1 -0
- package/dist/chunk-XGBE4SUV.js +2093 -0
- package/dist/chunk-XGBE4SUV.js.map +1 -0
- package/dist/{chunk-QU5OT4DF.js → chunk-XJ7ZAGC5.js} +5 -5
- package/dist/chunk-XJ7ZAGC5.js.map +1 -0
- package/dist/{chunk-ZI25QCHD.mjs → chunk-YOTQG4NP.mjs} +25 -25
- package/dist/chunk-YOTQG4NP.mjs.map +1 -0
- package/dist/{chunk-QAT2RWAO.mjs → chunk-Z36R3P62.mjs} +7 -7
- package/dist/chunk-Z36R3P62.mjs.map +1 -0
- package/dist/{chunk-7Z5LLJ3A.js → chunk-ZWQJSZEY.js} +13 -13
- package/dist/chunk-ZWQJSZEY.js.map +1 -0
- package/dist/config/index.js +6 -6
- package/dist/config/index.js.map +1 -1
- package/dist/config/index.mjs +6 -6
- package/dist/config/index.mjs.map +1 -1
- package/dist/config/server/index.js +37 -37
- package/dist/config/server/index.js.map +1 -1
- package/dist/config/server/index.mjs +37 -37
- package/dist/config/server/index.mjs.map +1 -1
- package/dist/i18n/index.d.mts +2 -2
- package/dist/i18n/index.d.ts +2 -2
- package/dist/i18n/index.js +16 -17
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/index.mjs +16 -17
- package/dist/i18n/index.mjs.map +1 -1
- package/dist/imageCrop/index.js +11 -10
- package/dist/imageCrop/index.js.map +1 -1
- package/dist/imageCrop/index.mjs +11 -10
- package/dist/imageCrop/index.mjs.map +1 -1
- package/dist/index.d.mts +185 -100
- package/dist/index.d.ts +185 -100
- package/dist/index.js +225 -249
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +80 -104
- package/dist/index.mjs.map +1 -1
- package/dist/logger/index.js +6 -6
- package/dist/logger/index.mjs +1 -1
- package/dist/mikuFusionGame/index.d.mts +112 -0
- package/dist/mikuFusionGame/index.d.ts +112 -0
- package/dist/mikuFusionGame/index.js +680 -0
- package/dist/mikuFusionGame/index.js.map +1 -0
- package/dist/mikuFusionGame/index.mjs +667 -0
- package/dist/mikuFusionGame/index.mjs.map +1 -0
- package/dist/mmd/admin/index.js +11 -10
- package/dist/mmd/admin/index.js.map +1 -1
- package/dist/mmd/admin/index.mjs +11 -10
- package/dist/mmd/admin/index.mjs.map +1 -1
- package/dist/mmd/index.js +223 -241
- package/dist/mmd/index.js.map +1 -1
- package/dist/mmd/index.mjs +220 -238
- package/dist/mmd/index.mjs.map +1 -1
- package/dist/mmd/server/index.js +6 -6
- package/dist/mmd/server/index.js.map +1 -1
- package/dist/mmd/server/index.mjs +6 -6
- package/dist/mmd/server/index.mjs.map +1 -1
- package/dist/music/index.js +16 -16
- package/dist/music/index.mjs +2 -2
- package/dist/music/server/index.js +8 -8
- package/dist/music/server/index.mjs +1 -1
- package/dist/request/index.js +2 -2
- package/dist/request/index.js.map +1 -1
- package/dist/request/index.mjs +2 -2
- package/dist/request/index.mjs.map +1 -1
- package/dist/storage/index.js +15 -14
- package/dist/storage/index.mjs +3 -2
- package/dist/testYourself/admin/index.js +3 -3
- package/dist/testYourself/admin/index.mjs +1 -1
- package/dist/testYourself/index.js +22 -22
- package/dist/testYourself/index.js.map +1 -1
- package/dist/testYourself/index.mjs +14 -14
- package/dist/testYourself/index.mjs.map +1 -1
- package/dist/testYourself/server/index.js +4 -4
- package/dist/testYourself/server/index.mjs +1 -1
- package/dist/universalExport/index.d.mts +3 -3
- package/dist/universalExport/index.d.ts +3 -3
- package/dist/universalExport/index.js +48 -47
- package/dist/universalExport/index.js.map +1 -1
- package/dist/universalExport/index.mjs +48 -47
- package/dist/universalExport/index.mjs.map +1 -1
- package/dist/universalExport/server/index.js +29 -29
- package/dist/universalExport/server/index.js.map +1 -1
- package/dist/universalExport/server/index.mjs +28 -28
- package/dist/universalExport/server/index.mjs.map +1 -1
- package/dist/universalFile/index.d.mts +3 -3
- package/dist/universalFile/index.d.ts +3 -3
- package/dist/universalFile/index.js +73 -72
- package/dist/universalFile/index.js.map +1 -1
- package/dist/universalFile/index.mjs +73 -72
- package/dist/universalFile/index.mjs.map +1 -1
- package/dist/universalFile/server/index.js +258 -260
- package/dist/universalFile/server/index.js.map +1 -1
- package/dist/universalFile/server/index.mjs +244 -246
- package/dist/universalFile/server/index.mjs.map +1 -1
- package/dist/utils/index.js +11 -11
- package/dist/utils/index.mjs +2 -2
- package/package.json +25 -31
- package/dist/AliyunOSSProvider-FWAKUB2T.js +0 -15
- package/dist/AliyunOSSProvider-KJYRIZES.mjs +0 -6
- package/dist/ConfigService-7MEZXKJ5.js +0 -21
- package/dist/ConfigService-BV57YYFW.mjs +0 -4
- package/dist/LocalStorageProvider-RTPMUOZ2.mjs +0 -6
- package/dist/LocalStorageProvider-XSRCUXOU.js +0 -15
- package/dist/PMXParser-L6IWHL4I.mjs +0 -4
- package/dist/PMXParser-YBS3B6HM.js +0 -13
- package/dist/chunk-3BGPZN4X.mjs.map +0 -1
- package/dist/chunk-3WOAPLEG.mjs.map +0 -1
- package/dist/chunk-6PRFP5EG.js.map +0 -1
- package/dist/chunk-6YKMCPQI.mjs.map +0 -1
- package/dist/chunk-7Z5LLJ3A.js.map +0 -1
- package/dist/chunk-A3UP56MS.js.map +0 -1
- package/dist/chunk-CD77U7LZ.js.map +0 -1
- package/dist/chunk-CLKKZSPZ.js.map +0 -1
- package/dist/chunk-CNTILN5J.mjs.map +0 -1
- package/dist/chunk-DUHZ7VZP.js.map +0 -1
- package/dist/chunk-DW2ZTOCV.js +0 -1727
- package/dist/chunk-DW2ZTOCV.js.map +0 -1
- package/dist/chunk-E7RGBAYJ.js.map +0 -1
- package/dist/chunk-JZXJQMVE.js.map +0 -1
- package/dist/chunk-KQGP6BTS.mjs.map +0 -1
- package/dist/chunk-LFG6FPM5.mjs +0 -1597
- package/dist/chunk-LFG6FPM5.mjs.map +0 -1
- package/dist/chunk-LX4XX6W7.js.map +0 -1
- package/dist/chunk-LZHMNOED.js.map +0 -1
- package/dist/chunk-MW4BCIZC.mjs.map +0 -1
- package/dist/chunk-OCR5DS4C.mjs.map +0 -1
- package/dist/chunk-OLHGZXN3.mjs.map +0 -1
- package/dist/chunk-OPPF3326.js.map +0 -1
- package/dist/chunk-QAT2RWAO.mjs.map +0 -1
- package/dist/chunk-QU5OT4DF.js.map +0 -1
- package/dist/chunk-T5OZHYVM.mjs.map +0 -1
- package/dist/chunk-TFQF2HDO.mjs.map +0 -1
- package/dist/chunk-TOC5FSHP.js.map +0 -1
- package/dist/chunk-TV3VKRJK.mjs.map +0 -1
- package/dist/chunk-UOFTHYIH.js.map +0 -1
- package/dist/chunk-VRTRSEEH.mjs.map +0 -1
- package/dist/chunk-ZI25QCHD.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ExportConfigError, ExportDataError, ExportFileError } from '../../chunk-LFB5EIIM.mjs';
|
|
2
|
-
import { createLogger } from '../../chunk-
|
|
2
|
+
import { createLogger } from '../../chunk-3DXPQ4YV.mjs';
|
|
3
3
|
import '../../chunk-BJTO5JO5.mjs';
|
|
4
4
|
import * as XLSX from 'xlsx';
|
|
5
5
|
import { pgTable, timestamp, text, integer, boolean, jsonb } from 'drizzle-orm/pg-core';
|
|
@@ -45,12 +45,12 @@ var DEFAULT_FORMATTERS = {
|
|
|
45
45
|
// 货币格式化
|
|
46
46
|
currency: (value) => {
|
|
47
47
|
if (value === null || value === void 0) return "";
|
|
48
|
-
return
|
|
48
|
+
return "\xA5" + Number(value).toFixed(2);
|
|
49
49
|
},
|
|
50
50
|
// 百分比格式化
|
|
51
51
|
percentage: (value) => {
|
|
52
52
|
if (value === null || value === void 0) return "";
|
|
53
|
-
return
|
|
53
|
+
return (Number(value) * 100).toFixed(2) + "%";
|
|
54
54
|
},
|
|
55
55
|
// 布尔值格式化
|
|
56
56
|
boolean: (value) => {
|
|
@@ -106,7 +106,7 @@ var UniversalExportService = class {
|
|
|
106
106
|
return newConfig;
|
|
107
107
|
} catch (error) {
|
|
108
108
|
throw new ExportConfigError(
|
|
109
|
-
|
|
109
|
+
"\u521B\u5EFA\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"),
|
|
110
110
|
{ originalError: error }
|
|
111
111
|
);
|
|
112
112
|
}
|
|
@@ -127,7 +127,7 @@ var UniversalExportService = class {
|
|
|
127
127
|
async updateConfig(configId, updates) {
|
|
128
128
|
const existing = await this.getConfig(configId);
|
|
129
129
|
if (!existing) {
|
|
130
|
-
throw new ExportConfigError(
|
|
130
|
+
throw new ExportConfigError("\u914D\u7F6E\u4E0D\u5B58\u5728: " + configId);
|
|
131
131
|
}
|
|
132
132
|
const updatedConfig = {
|
|
133
133
|
...existing,
|
|
@@ -153,7 +153,7 @@ var UniversalExportService = class {
|
|
|
153
153
|
async deleteConfig(configId) {
|
|
154
154
|
const existing = await this.getConfig(configId);
|
|
155
155
|
if (!existing) {
|
|
156
|
-
throw new ExportConfigError(
|
|
156
|
+
throw new ExportConfigError("\u914D\u7F6E\u4E0D\u5B58\u5728: " + configId);
|
|
157
157
|
}
|
|
158
158
|
this.configCache.delete(configId);
|
|
159
159
|
this.emitEvent({
|
|
@@ -203,7 +203,7 @@ var UniversalExportService = class {
|
|
|
203
203
|
logger.info("\u{1F50D} [UniversalExportService] \u4ECE\u7F13\u5B58\u83B7\u53D6\u914D\u7F6E:", request.configId);
|
|
204
204
|
const cachedConfig = await this.getConfig(request.configId);
|
|
205
205
|
if (!cachedConfig) {
|
|
206
|
-
throw new ExportConfigError(
|
|
206
|
+
throw new ExportConfigError("\u5BFC\u51FA\u914D\u7F6E\u4E0D\u5B58\u5728: " + request.configId);
|
|
207
207
|
}
|
|
208
208
|
config = cachedConfig;
|
|
209
209
|
logger.info("\u2705 [UniversalExportService] \u6210\u529F\u83B7\u53D6\u7F13\u5B58\u914D\u7F6E:", {
|
|
@@ -359,7 +359,7 @@ var UniversalExportService = class {
|
|
|
359
359
|
* 生成唯一ID
|
|
360
360
|
*/
|
|
361
361
|
generateId() {
|
|
362
|
-
return
|
|
362
|
+
return "export_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9);
|
|
363
363
|
}
|
|
364
364
|
/**
|
|
365
365
|
* 验证配置
|
|
@@ -408,7 +408,7 @@ var UniversalExportService = class {
|
|
|
408
408
|
} catch (error) {
|
|
409
409
|
console.error("\u274C [UniversalExportService] \u83B7\u53D6\u6570\u636E\u5931\u8D25:", error);
|
|
410
410
|
throw new ExportDataError(
|
|
411
|
-
|
|
411
|
+
"\u83B7\u53D6\u6570\u636E\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"),
|
|
412
412
|
{ originalError: error }
|
|
413
413
|
);
|
|
414
414
|
}
|
|
@@ -551,7 +551,7 @@ var UniversalExportService = class {
|
|
|
551
551
|
const filteredFields = fields.filter((field) => {
|
|
552
552
|
const forceKeepFields = ["pickupMethod", "notes", "adminNotes"];
|
|
553
553
|
if (forceKeepFields.includes(field.key)) {
|
|
554
|
-
logger.info(
|
|
554
|
+
logger.info('\u{1F527} [UniversalExportService] \u5F3A\u5236\u4FDD\u7559\u5B57\u6BB5 "' + field.key + '" (' + field.label + ")");
|
|
555
555
|
return true;
|
|
556
556
|
}
|
|
557
557
|
const hasValue = data.some((item) => {
|
|
@@ -560,7 +560,7 @@ var UniversalExportService = class {
|
|
|
560
560
|
});
|
|
561
561
|
if (!hasValue) {
|
|
562
562
|
logger.info(
|
|
563
|
-
|
|
563
|
+
'\u{1F50D} [UniversalExportService] \u5B57\u6BB5 "' + field.key + '" (' + field.label + ") \u88AB\u8FC7\u6EE4\u6389 - \u6240\u6709\u884C\u90FD\u4E3A\u7A7A\u503C"
|
|
564
564
|
);
|
|
565
565
|
}
|
|
566
566
|
return hasValue;
|
|
@@ -645,11 +645,11 @@ var UniversalExportService = class {
|
|
|
645
645
|
break;
|
|
646
646
|
default:
|
|
647
647
|
console.error("\u274C [UniversalExportService] \u4E0D\u652F\u6301\u7684\u683C\u5F0F:", config.format);
|
|
648
|
-
throw new ExportFileError(
|
|
648
|
+
throw new ExportFileError("\u4E0D\u652F\u6301\u7684\u5BFC\u51FA\u683C\u5F0F: " + config.format);
|
|
649
649
|
}
|
|
650
650
|
const blob = new Blob([content], { type: this.getMimeType(config.format) });
|
|
651
651
|
if (blob.size > this.config.maxFileSize) {
|
|
652
|
-
throw new ExportFileError(
|
|
652
|
+
throw new ExportFileError("\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7\u9650\u5236: " + blob.size + " > " + this.config.maxFileSize);
|
|
653
653
|
}
|
|
654
654
|
const endTime = /* @__PURE__ */ new Date();
|
|
655
655
|
const duration = endTime.getTime() - startTime.getTime();
|
|
@@ -671,7 +671,7 @@ var UniversalExportService = class {
|
|
|
671
671
|
};
|
|
672
672
|
} catch (error) {
|
|
673
673
|
throw new ExportFileError(
|
|
674
|
-
|
|
674
|
+
"\u751F\u6210\u6587\u4EF6\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"),
|
|
675
675
|
{ originalError: error }
|
|
676
676
|
);
|
|
677
677
|
}
|
|
@@ -759,7 +759,7 @@ var UniversalExportService = class {
|
|
|
759
759
|
*/
|
|
760
760
|
escapeCSVField(value) {
|
|
761
761
|
if (value.includes(",") || value.includes('"') || value.includes("\n")) {
|
|
762
|
-
return
|
|
762
|
+
return '"' + value.replace(/"/g, '""') + '"';
|
|
763
763
|
}
|
|
764
764
|
return value;
|
|
765
765
|
}
|
|
@@ -770,7 +770,7 @@ var UniversalExportService = class {
|
|
|
770
770
|
const now = /* @__PURE__ */ new Date();
|
|
771
771
|
const dateStr = now.toISOString().split("T")[0];
|
|
772
772
|
const timeStr = now.toTimeString().split(" ")[0].replace(/:/g, "-");
|
|
773
|
-
return template.replace("{date}", dateStr).replace("{time}", timeStr).replace("{timestamp}", now.getTime().toString()) +
|
|
773
|
+
return template.replace("{date}", dateStr).replace("{time}", timeStr).replace("{timestamp}", now.getTime().toString()) + "." + extension;
|
|
774
774
|
}
|
|
775
775
|
/**
|
|
776
776
|
* 获取MIME类型
|
|
@@ -900,7 +900,7 @@ var UniversalExportService = class {
|
|
|
900
900
|
const header = { __isGroupHeader: true };
|
|
901
901
|
groupingFields.forEach((field, index) => {
|
|
902
902
|
const value = groupValues[index] === "__NULL__" ? "" : groupValues[index];
|
|
903
|
-
const template = field.groupHeaderTemplate ||
|
|
903
|
+
const template = field.groupHeaderTemplate || field.label + ": {value}";
|
|
904
904
|
header[field.key] = template.replace("{value}", value);
|
|
905
905
|
});
|
|
906
906
|
return header;
|
|
@@ -934,8 +934,8 @@ var UniversalExportService = class {
|
|
|
934
934
|
firstItem.__groupSize = groupItems.length;
|
|
935
935
|
firstItem.__isGroupFirst = true;
|
|
936
936
|
groupFields.forEach((field) => {
|
|
937
|
-
firstItem[
|
|
938
|
-
firstItem[
|
|
937
|
+
firstItem["__" + field.key + "_groupSize"] = groupItems.length;
|
|
938
|
+
firstItem["__" + field.key + "_isGroupFirst"] = true;
|
|
939
939
|
});
|
|
940
940
|
result.push(firstItem);
|
|
941
941
|
logger.info("\u{1F517} [UniversalExportService] \u5904\u7406\u591A\u5B57\u6BB5\u5408\u5E76\u6A21\u5F0F:", {
|
|
@@ -1078,7 +1078,7 @@ var UniversalExportService = class {
|
|
|
1078
1078
|
if (groupField.mergeCells) {
|
|
1079
1079
|
const fieldIndex = fields.findIndex((f) => f.key === groupField.key);
|
|
1080
1080
|
if (fieldIndex >= 0) {
|
|
1081
|
-
const groupSize = item[
|
|
1081
|
+
const groupSize = item["__" + groupField.key + "_groupSize"] || item.__groupSize;
|
|
1082
1082
|
const mergeRange = {
|
|
1083
1083
|
s: { r: currentRow, c: fieldIndex },
|
|
1084
1084
|
// 开始行列
|
|
@@ -1316,7 +1316,7 @@ function validateExportConfig(config) {
|
|
|
1316
1316
|
}
|
|
1317
1317
|
if (config.maxRows && config.maxRows > 1e6) {
|
|
1318
1318
|
console.warn(
|
|
1319
|
-
|
|
1319
|
+
"\u26A0\uFE0F Warning: maxRows (" + config.maxRows + `) is very large. Consider using pagination or streaming for better performance.`
|
|
1320
1320
|
);
|
|
1321
1321
|
}
|
|
1322
1322
|
}
|
|
@@ -1329,7 +1329,7 @@ function validateEnvironment(requiredVars) {
|
|
|
1329
1329
|
}
|
|
1330
1330
|
if (missing.length > 0) {
|
|
1331
1331
|
throw new ConfigValidationError(
|
|
1332
|
-
|
|
1332
|
+
"Missing required environment variables: " + missing.join(", "),
|
|
1333
1333
|
"environment"
|
|
1334
1334
|
);
|
|
1335
1335
|
}
|
|
@@ -1403,14 +1403,14 @@ function getNestedValue(obj, path) {
|
|
|
1403
1403
|
}
|
|
1404
1404
|
function escapeCsvValue(value) {
|
|
1405
1405
|
if (value.includes(",") || value.includes('"') || value.includes("\n")) {
|
|
1406
|
-
return
|
|
1406
|
+
return '"' + value.replace(/"/g, '""') + '"';
|
|
1407
1407
|
}
|
|
1408
1408
|
return value;
|
|
1409
1409
|
}
|
|
1410
1410
|
function generateUniqueFilename(prefix, extension) {
|
|
1411
1411
|
const timestamp2 = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, -5);
|
|
1412
1412
|
const random = Math.random().toString(36).substring(2, 8);
|
|
1413
|
-
return
|
|
1413
|
+
return prefix + "_" + timestamp2 + "_" + random + "." + extension;
|
|
1414
1414
|
}
|
|
1415
1415
|
function calculateProgress(processed, total) {
|
|
1416
1416
|
if (total === 0) return 0;
|
|
@@ -1424,7 +1424,7 @@ function estimateRemainingTime(processed, total, elapsedMs) {
|
|
|
1424
1424
|
}
|
|
1425
1425
|
var exportConfigs = pgTable("ExportConfig", {
|
|
1426
1426
|
/** 主键ID */
|
|
1427
|
-
id: text("id").primaryKey().$defaultFn(() =>
|
|
1427
|
+
id: text("id").primaryKey().$defaultFn(() => "export_config_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9)),
|
|
1428
1428
|
/** 配置名称 */
|
|
1429
1429
|
name: text("name").notNull(),
|
|
1430
1430
|
/** 配置描述 */
|
|
@@ -1462,7 +1462,7 @@ var exportConfigs = pgTable("ExportConfig", {
|
|
|
1462
1462
|
});
|
|
1463
1463
|
var exportHistory = pgTable("ExportHistory", {
|
|
1464
1464
|
/** 主键ID */
|
|
1465
|
-
id: text("id").primaryKey().$defaultFn(() =>
|
|
1465
|
+
id: text("id").primaryKey().$defaultFn(() => "export_history_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9)),
|
|
1466
1466
|
/** 关联的配置ID */
|
|
1467
1467
|
configId: text("configId").notNull(),
|
|
1468
1468
|
/** 导出的文件名 */
|
|
@@ -1503,7 +1503,7 @@ var ExportConfigDatabaseService = class {
|
|
|
1503
1503
|
* 创建导出配置
|
|
1504
1504
|
*/
|
|
1505
1505
|
async createConfig(config) {
|
|
1506
|
-
const id =
|
|
1506
|
+
const id = "export_config_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9);
|
|
1507
1507
|
const now = /* @__PURE__ */ new Date();
|
|
1508
1508
|
const [newConfig] = await this.db.insert(exportConfigs).values({
|
|
1509
1509
|
id,
|
|
@@ -1559,7 +1559,7 @@ var ExportHistoryDatabaseService = class {
|
|
|
1559
1559
|
* 创建导出历史记录
|
|
1560
1560
|
*/
|
|
1561
1561
|
async createHistory(history) {
|
|
1562
|
-
const id =
|
|
1562
|
+
const id = "export_history_" + Date.now() + "_" + Math.random().toString(36).substr(2, 9);
|
|
1563
1563
|
const [newHistory] = await this.db.insert(exportHistory).values({
|
|
1564
1564
|
id,
|
|
1565
1565
|
...history,
|