@alibarbar/common 1.0.9 → 1.0.10
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/{chunk-O3O67R4I.js → algorithm.cjs} +0 -2
- package/dist/algorithm.js +130 -44
- package/dist/{chunk-LOAZSPGQ.js → array.cjs} +0 -2
- package/dist/array.js +135 -84
- package/dist/{chunk-Y364QIQH.js → color.cjs} +0 -2
- package/dist/color.js +127 -40
- package/dist/{chunk-DYBSRI7V.js → crypto.cjs} +0 -2
- package/dist/crypto.js +172 -60
- package/dist/{chunk-BHCRFURU.js → data-structure.cjs} +0 -2
- package/dist/data-structure.js +481 -32
- package/dist/{chunk-I3L42475.js → date.cjs} +0 -2
- package/dist/date.js +125 -72
- package/dist/{chunk-JK2SE3I2.js → dom.cjs} +0 -2
- package/dist/dom.js +84 -56
- package/dist/{chunk-7V5UQXIO.js → file.cjs} +0 -2
- package/dist/file.js +79 -32
- package/dist/{chunk-OX5PLOWB.js → i18n.cjs} +0 -2
- package/dist/i18n.js +78 -40
- package/dist/index.cjs +4132 -0
- package/dist/index.d.mts +3 -159
- package/dist/index.d.ts +3 -159
- package/dist/index.js +3364 -17427
- package/dist/{chunk-4RGXV4SJ.js → network.cjs} +0 -2
- package/dist/network.js +97 -28
- package/dist/{chunk-3FRYJPHG.js → number.cjs} +0 -2
- package/dist/number.js +77 -56
- package/dist/{chunk-27UDDVLZ.js → object.cjs} +0 -2
- package/dist/object.js +237 -80
- package/dist/{chunk-JQZBPAPO.js → performance.cjs} +0 -2
- package/dist/performance.js +145 -40
- package/dist/services.cjs +291 -0
- package/dist/services.d.mts +161 -0
- package/dist/services.d.ts +161 -0
- package/dist/services.js +281 -0
- package/dist/{chunk-WZDOPUJW.js → storage.cjs} +216 -17
- package/dist/storage.js +550 -31
- package/dist/{chunk-D7CS5EKF.js → string.cjs} +0 -2
- package/dist/string.js +91 -68
- package/dist/{chunk-56W6YECK.js → tracking.cjs} +0 -2
- package/dist/tracking.js +359 -52
- package/dist/{chunk-ZDMFMUDR.js → transform.cjs} +0 -2
- package/dist/transform.js +299 -32
- package/dist/{chunk-NJARVI6X.mjs → upload.cjs} +41 -14
- package/dist/upload.js +402 -20
- package/dist/{chunk-KGFTD255.js → url.cjs} +0 -2
- package/dist/url.js +91 -44
- package/dist/{chunk-TQN37HIN.js → validation.cjs} +0 -2
- package/dist/validation.js +77 -60
- package/package.json +7 -2
- package/dist/algorithm.js.map +0 -1
- package/dist/algorithm.mjs +0 -4
- package/dist/algorithm.mjs.map +0 -1
- package/dist/array.js.map +0 -1
- package/dist/array.mjs +0 -4
- package/dist/array.mjs.map +0 -1
- package/dist/chunk-27UDDVLZ.js.map +0 -1
- package/dist/chunk-2R2QWFJC.mjs +0 -138
- package/dist/chunk-2R2QWFJC.mjs.map +0 -1
- package/dist/chunk-3FRYJPHG.js.map +0 -1
- package/dist/chunk-4RGXV4SJ.js.map +0 -1
- package/dist/chunk-56W6YECK.js.map +0 -1
- package/dist/chunk-5BGSUGTI.mjs +0 -128
- package/dist/chunk-5BGSUGTI.mjs.map +0 -1
- package/dist/chunk-7E6GELHJ.mjs +0 -302
- package/dist/chunk-7E6GELHJ.mjs.map +0 -1
- package/dist/chunk-7V5UQXIO.js.map +0 -1
- package/dist/chunk-A4SWQXX7.mjs +0 -484
- package/dist/chunk-A4SWQXX7.mjs.map +0 -1
- package/dist/chunk-BHCRFURU.js.map +0 -1
- package/dist/chunk-CDSGEAOK.mjs +0 -80
- package/dist/chunk-CDSGEAOK.mjs.map +0 -1
- package/dist/chunk-D7CS5EKF.js.map +0 -1
- package/dist/chunk-DYBSRI7V.js.map +0 -1
- package/dist/chunk-FEBKPX5A.js +0 -386
- package/dist/chunk-FEBKPX5A.js.map +0 -1
- package/dist/chunk-FJ6ZGZIA.mjs +0 -39
- package/dist/chunk-FJ6ZGZIA.mjs.map +0 -1
- package/dist/chunk-HLDFI7R2.mjs +0 -175
- package/dist/chunk-HLDFI7R2.mjs.map +0 -1
- package/dist/chunk-I3L42475.js.map +0 -1
- package/dist/chunk-JBLX27WD.mjs +0 -240
- package/dist/chunk-JBLX27WD.mjs.map +0 -1
- package/dist/chunk-JHZ7M2MR.mjs +0 -133
- package/dist/chunk-JHZ7M2MR.mjs.map +0 -1
- package/dist/chunk-JK2SE3I2.js.map +0 -1
- package/dist/chunk-JQZBPAPO.js.map +0 -1
- package/dist/chunk-JXYGC2C5.mjs +0 -100
- package/dist/chunk-JXYGC2C5.mjs.map +0 -1
- package/dist/chunk-KGFTD255.js.map +0 -1
- package/dist/chunk-LBHBNPNJ.mjs +0 -148
- package/dist/chunk-LBHBNPNJ.mjs.map +0 -1
- package/dist/chunk-LF4CILQS.mjs +0 -87
- package/dist/chunk-LF4CILQS.mjs.map +0 -1
- package/dist/chunk-LOAZSPGQ.js.map +0 -1
- package/dist/chunk-NJARVI6X.mjs.map +0 -1
- package/dist/chunk-NSSDYX2U.mjs +0 -80
- package/dist/chunk-NSSDYX2U.mjs.map +0 -1
- package/dist/chunk-O3O67R4I.js.map +0 -1
- package/dist/chunk-OIXQ3E6W.mjs +0 -354
- package/dist/chunk-OIXQ3E6W.mjs.map +0 -1
- package/dist/chunk-OX5PLOWB.js.map +0 -1
- package/dist/chunk-PJ7UCTX4.mjs +0 -362
- package/dist/chunk-PJ7UCTX4.mjs.map +0 -1
- package/dist/chunk-PR4QN5HX.js +0 -44
- package/dist/chunk-PR4QN5HX.js.map +0 -1
- package/dist/chunk-QIBE7GVN.mjs +0 -81
- package/dist/chunk-QIBE7GVN.mjs.map +0 -1
- package/dist/chunk-QIOC54LQ.mjs +0 -130
- package/dist/chunk-QIOC54LQ.mjs.map +0 -1
- package/dist/chunk-TQN37HIN.js.map +0 -1
- package/dist/chunk-WZDOPUJW.js.map +0 -1
- package/dist/chunk-XJTZDXSR.mjs +0 -94
- package/dist/chunk-XJTZDXSR.mjs.map +0 -1
- package/dist/chunk-Y364QIQH.js.map +0 -1
- package/dist/chunk-YXM6Q4JS.mjs +0 -94
- package/dist/chunk-YXM6Q4JS.mjs.map +0 -1
- package/dist/chunk-ZDMFMUDR.js.map +0 -1
- package/dist/chunk-ZVJ6NQUM.mjs +0 -82
- package/dist/chunk-ZVJ6NQUM.mjs.map +0 -1
- package/dist/color.js.map +0 -1
- package/dist/color.mjs +0 -4
- package/dist/color.mjs.map +0 -1
- package/dist/crypto.js.map +0 -1
- package/dist/crypto.mjs +0 -4
- package/dist/crypto.mjs.map +0 -1
- package/dist/data-structure.js.map +0 -1
- package/dist/data-structure.mjs +0 -4
- package/dist/data-structure.mjs.map +0 -1
- package/dist/date.js.map +0 -1
- package/dist/date.mjs +0 -4
- package/dist/date.mjs.map +0 -1
- package/dist/dom.js.map +0 -1
- package/dist/dom.mjs +0 -4
- package/dist/dom.mjs.map +0 -1
- package/dist/file.js.map +0 -1
- package/dist/file.mjs +0 -4
- package/dist/file.mjs.map +0 -1
- package/dist/i18n.js.map +0 -1
- package/dist/i18n.mjs +0 -4
- package/dist/i18n.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -17155
- package/dist/index.mjs.map +0 -1
- package/dist/network.js.map +0 -1
- package/dist/network.mjs +0 -4
- package/dist/network.mjs.map +0 -1
- package/dist/number.js.map +0 -1
- package/dist/number.mjs +0 -4
- package/dist/number.mjs.map +0 -1
- package/dist/object.js.map +0 -1
- package/dist/object.mjs +0 -4
- package/dist/object.mjs.map +0 -1
- package/dist/performance.js.map +0 -1
- package/dist/performance.mjs +0 -4
- package/dist/performance.mjs.map +0 -1
- package/dist/storage.js.map +0 -1
- package/dist/storage.mjs +0 -5
- package/dist/storage.mjs.map +0 -1
- package/dist/string.js.map +0 -1
- package/dist/string.mjs +0 -4
- package/dist/string.mjs.map +0 -1
- package/dist/tracking.js.map +0 -1
- package/dist/tracking.mjs +0 -4
- package/dist/tracking.mjs.map +0 -1
- package/dist/transform.js.map +0 -1
- package/dist/transform.mjs +0 -4
- package/dist/transform.mjs.map +0 -1
- package/dist/upload.js.map +0 -1
- package/dist/upload.mjs +0 -5
- package/dist/upload.mjs.map +0 -1
- package/dist/url.js.map +0 -1
- package/dist/url.mjs +0 -4
- package/dist/url.mjs.map +0 -1
- package/dist/validation.js.map +0 -1
- package/dist/validation.mjs +0 -4
- package/dist/validation.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/date.ts"],"names":[],"mappings":"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","file":"chunk-5BGSUGTI.mjs","sourcesContent":["/**\n * 日期工具函数\n */\n\n/**\n * 格式化日期\n * @param date - 日期对象或时间戳\n * @param format - 格式字符串,默认 'YYYY-MM-DD HH:mm:ss'\n * @returns 格式化后的日期字符串\n */\nexport function formatDate(date: Date | number, format = 'YYYY-MM-DD HH:mm:ss'): string {\n const d = typeof date === 'number' ? new Date(date) : date;\n\n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n const hours = String(d.getHours()).padStart(2, '0');\n const minutes = String(d.getMinutes()).padStart(2, '0');\n const seconds = String(d.getSeconds()).padStart(2, '0');\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n}\n\n/**\n * 获取相对时间描述\n * @param date - 日期对象或时间戳\n * @returns 相对时间字符串,如 '2分钟前', '3小时前'\n */\nexport function getRelativeTime(date: Date | number): string {\n const now = new Date();\n const target = typeof date === 'number' ? new Date(date) : date;\n const diff = now.getTime() - target.getTime();\n\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (years > 0) return `${years}年前`;\n if (months > 0) return `${months}个月前`;\n if (days > 0) return `${days}天前`;\n if (hours > 0) return `${hours}小时前`;\n if (minutes > 0) return `${minutes}分钟前`;\n if (seconds > 0) return `${seconds}秒前`;\n return '刚刚';\n}\n\n/**\n * 判断是否为今天\n * @param date - 日期对象或时间戳\n * @returns 是否为今天\n */\nexport function isToday(date: Date | number): boolean {\n const d = typeof date === 'number' ? new Date(date) : date;\n const today = new Date();\n return (\n d.getDate() === today.getDate() &&\n d.getMonth() === today.getMonth() &&\n d.getFullYear() === today.getFullYear()\n );\n}\n\n/**\n * 判断是否为昨天\n * @param date - 日期对象或时间戳\n * @returns 是否为昨天\n */\nexport function isYesterday(date: Date | number): boolean {\n const d = typeof date === 'number' ? new Date(date) : date;\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return (\n d.getDate() === yesterday.getDate() &&\n d.getMonth() === yesterday.getMonth() &&\n d.getFullYear() === yesterday.getFullYear()\n );\n}\n\n/**\n * 根据格林威治时间与当前时区获取时间 格林威治时间:0表示当前时区,1表示东一区,-1表示西一区\n * 需要返回符合该国家的时间格式\n * @param gmt - 格林威治时间偏移量(小时),0表示GMT+0,1表示GMT+1(东一区),-1表示GMT-1(西一区)\n * @returns 格式化后的时间字符串\n */\nexport function getTimeFromGMT(gmt: number): string {\n const now = new Date();\n const localOffset = now.getTimezoneOffset(); // 本地时区偏移(分钟)\n // GMT偏移量转换为分钟,然后计算目标时区的时间\n const gmtOffsetMinutes = gmt * 60;\n const targetTime = new Date(now.getTime() + localOffset * 60000 + gmtOffsetMinutes * 60000);\n // 获取适合该时区的时间格式\n const format = getDateFormatByGMT(gmt);\n return formatDate(targetTime, format);\n}\n\n/**\n * 获取适合指定GMT时区的时间格式\n * 格林威治时间:0表示GMT+0,1表示东一区(GMT+1),-1表示西一区(GMT-1)\n * @param gmt - GMT时区偏移量(小时)\n * @returns 时间格式字符串\n */\nexport function getDateFormatByGMT(gmt: number): string {\n switch (gmt) {\n case 0:\n // GMT+0 (英国、葡萄牙等)\n return 'YYYY-MM-DD HH:mm:ss';\n case 1:\n case 2:\n case 3:\n // GMT+1~+3 (欧洲大部分地区)\n return 'YYYY-MM-DD HH:mm:ss';\n case 8:\n // GMT+8 (中国、新加坡等)\n return 'YYYY-MM-DD HH:mm:ss';\n case 9:\n // GMT+9 (日本、韩国等)\n return 'YYYY-MM-DD HH:mm:ss';\n case -5:\n case -6:\n case -7:\n case -8:\n // GMT-5~-8 (美洲地区)\n return 'MM/DD/YYYY HH:mm:ss';\n default:\n // 默认格式\n return 'YYYY-MM-DD HH:mm:ss';\n }\n}\n\n/**\n * 日期加减(天数)\n * @param date - 日期对象或时间戳\n * @param days - 要加减的天数(正数为加,负数为减)\n * @returns 新的日期对象\n */\nexport function addDays(date: Date | number, days: number): Date {\n const d = typeof date === 'number' ? new Date(date) : new Date(date);\n d.setDate(d.getDate() + days);\n return d;\n}\n\n/**\n * 日期加减(月数)\n * @param date - 日期对象或时间戳\n * @param months - 要加减的月数(正数为加,负数为减)\n * @returns 新的日期对象\n */\nexport function addMonths(date: Date | number, months: number): Date {\n const d = typeof date === 'number' ? new Date(date) : new Date(date);\n d.setMonth(d.getMonth() + months);\n return d;\n}\n\n/**\n * 日期加减(年数)\n * @param date - 日期对象或时间戳\n * @param years - 要加减的年数(正数为加,负数为减)\n * @returns 新的日期对象\n */\nexport function addYears(date: Date | number, years: number): Date {\n const d = typeof date === 'number' ? new Date(date) : new Date(date);\n d.setFullYear(d.getFullYear() + years);\n return d;\n}\n\n/**\n * 计算日期差值(天数)\n * @param date1 - 第一个日期\n * @param date2 - 第二个日期\n * @returns 相差的天数(date1 - date2)\n */\nexport function diffDays(date1: Date | number, date2: Date | number): number {\n const d1 = typeof date1 === 'number' ? new Date(date1) : date1;\n const d2 = typeof date2 === 'number' ? new Date(date2) : date2;\n const diff = d1.getTime() - d2.getTime();\n return Math.floor(diff / (1000 * 60 * 60 * 24));\n}\n\n/**\n * 获取一天的开始时间(00:00:00)\n * @param date - 日期对象或时间戳\n * @returns 一天的开始时间\n */\nexport function startOfDay(date: Date | number): Date {\n const d = typeof date === 'number' ? new Date(date) : new Date(date);\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\n/**\n * 获取一天的结束时间(23:59:59.999)\n * @param date - 日期对象或时间戳\n * @returns 一天的结束时间\n */\nexport function endOfDay(date: Date | number): Date {\n const d = typeof date === 'number' ? new Date(date) : new Date(date);\n d.setHours(23, 59, 59, 999);\n return d;\n}\n\n/**\n * 判断是否为周末\n * @param date - 日期对象或时间戳\n * @returns 是否为周末\n */\nexport function isWeekend(date: Date | number): boolean {\n const d = typeof date === 'number' ? new Date(date) : date;\n const day = d.getDay();\n return day === 0 || day === 6;\n}\n\n/**\n * 判断是否为工作日\n * @param date - 日期对象或时间戳\n * @returns 是否为工作日\n */\nexport function isWeekday(date: Date | number): boolean {\n return !isWeekend(date);\n}\n\n/**\n * 获取周数(ISO 8601标准)\n * @param date - 日期对象或时间戳\n * @returns 周数(1-53)\n */\nexport function getWeekNumber(date: Date | number): number {\n const d = typeof date === 'number' ? new Date(date) : new Date(date);\n const target = new Date(d.valueOf());\n const dayNr = (d.getDay() + 6) % 7;\n target.setDate(target.getDate() - dayNr + 3);\n const firstThursday = target.valueOf();\n target.setMonth(0, 1);\n if (target.getDay() !== 4) {\n target.setMonth(0, 1 + ((4 - target.getDay() + 7) % 7));\n }\n return 1 + Math.ceil((firstThursday - target.valueOf()) / 604800000);\n}\n\n/**\n * 获取季度(1-4)\n * @param date - 日期对象或时间戳\n * @returns 季度(1-4)\n */\nexport function getQuarter(date: Date | number): number {\n const d = typeof date === 'number' ? new Date(date) : date;\n return Math.floor(d.getMonth() / 3) + 1;\n}\n"]}
|
package/dist/chunk-7E6GELHJ.mjs
DELETED
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
// src/data/transform.ts
|
|
2
|
-
function csvToJson(csv, options = {}) {
|
|
3
|
-
const { delimiter = ",", headers, skipEmptyLines = true } = options;
|
|
4
|
-
const lines = csv.split(/\r?\n/).filter((line) => {
|
|
5
|
-
if (skipEmptyLines) {
|
|
6
|
-
return line.trim().length > 0;
|
|
7
|
-
}
|
|
8
|
-
return true;
|
|
9
|
-
});
|
|
10
|
-
if (lines.length === 0) return [];
|
|
11
|
-
const headerRow = headers || lines[0].split(delimiter).map((h) => h.trim());
|
|
12
|
-
const dataLines = headers ? lines : lines.slice(1);
|
|
13
|
-
return dataLines.map((line) => {
|
|
14
|
-
const values = parseCsvLine(line, delimiter);
|
|
15
|
-
const obj = {};
|
|
16
|
-
headerRow.forEach((header, index) => {
|
|
17
|
-
const val = values[index];
|
|
18
|
-
obj[header] = val !== void 0 ? val : "";
|
|
19
|
-
});
|
|
20
|
-
return obj;
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
function parseCsvLine(line, delimiter) {
|
|
24
|
-
const result = [];
|
|
25
|
-
let current = "";
|
|
26
|
-
let inQuotes = false;
|
|
27
|
-
for (let i = 0; i < line.length; i++) {
|
|
28
|
-
const char = line[i];
|
|
29
|
-
const nextChar = line[i + 1];
|
|
30
|
-
if (char === '"') {
|
|
31
|
-
if (inQuotes && nextChar === '"') {
|
|
32
|
-
current += '"';
|
|
33
|
-
i++;
|
|
34
|
-
} else {
|
|
35
|
-
inQuotes = !inQuotes;
|
|
36
|
-
}
|
|
37
|
-
} else if (char === delimiter && !inQuotes) {
|
|
38
|
-
result.push(current.trim());
|
|
39
|
-
current = "";
|
|
40
|
-
} else {
|
|
41
|
-
current += char;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
result.push(current.trim());
|
|
45
|
-
return result;
|
|
46
|
-
}
|
|
47
|
-
function jsonToCsv(data, options = {}) {
|
|
48
|
-
const { delimiter = ",", headers, includeHeaders = true } = options;
|
|
49
|
-
if (data.length === 0) return "";
|
|
50
|
-
const headerRow = headers || Object.keys(data[0]);
|
|
51
|
-
const lines = [];
|
|
52
|
-
if (includeHeaders) {
|
|
53
|
-
lines.push(headerRow.map(escapeCsvValue).join(delimiter));
|
|
54
|
-
}
|
|
55
|
-
data.forEach((item) => {
|
|
56
|
-
const values = headerRow.map((header) => {
|
|
57
|
-
const value = item[header];
|
|
58
|
-
return escapeCsvValue(value != null ? String(value) : "");
|
|
59
|
-
});
|
|
60
|
-
lines.push(values.join(delimiter));
|
|
61
|
-
});
|
|
62
|
-
return lines.join("\n");
|
|
63
|
-
}
|
|
64
|
-
function escapeCsvValue(value) {
|
|
65
|
-
if (value.includes(",") || value.includes('"') || value.includes("\n")) {
|
|
66
|
-
return `"${value.replace(/"/g, '""')}"`;
|
|
67
|
-
}
|
|
68
|
-
return value;
|
|
69
|
-
}
|
|
70
|
-
function xmlToJson(xml) {
|
|
71
|
-
const parser = new DOMParser();
|
|
72
|
-
const doc = parser.parseFromString(xml, "text/xml");
|
|
73
|
-
const parseError = doc.querySelector("parsererror");
|
|
74
|
-
if (parseError) {
|
|
75
|
-
throw new Error("Invalid XML: " + parseError.textContent);
|
|
76
|
-
}
|
|
77
|
-
const result = xmlNodeToJson(doc.documentElement);
|
|
78
|
-
if (typeof result === "object" && result !== null && !Array.isArray(result)) {
|
|
79
|
-
return result;
|
|
80
|
-
}
|
|
81
|
-
return { value: result };
|
|
82
|
-
}
|
|
83
|
-
function xmlNodeToJson(node) {
|
|
84
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
85
|
-
const text = node.textContent?.trim();
|
|
86
|
-
return text || null;
|
|
87
|
-
}
|
|
88
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
89
|
-
const element = node;
|
|
90
|
-
const result = {};
|
|
91
|
-
if (element.attributes.length > 0) {
|
|
92
|
-
const attrs = {};
|
|
93
|
-
for (let i = 0; i < element.attributes.length; i++) {
|
|
94
|
-
const attr = element.attributes[i];
|
|
95
|
-
attrs[attr.name] = attr.value;
|
|
96
|
-
}
|
|
97
|
-
result["@attributes"] = attrs;
|
|
98
|
-
}
|
|
99
|
-
const children = {};
|
|
100
|
-
let hasText = false;
|
|
101
|
-
let textContent = "";
|
|
102
|
-
for (let i = 0; i < element.childNodes.length; i++) {
|
|
103
|
-
const child = element.childNodes[i];
|
|
104
|
-
if (child.nodeType === Node.TEXT_NODE) {
|
|
105
|
-
const text = child.textContent?.trim();
|
|
106
|
-
if (text) {
|
|
107
|
-
textContent += text;
|
|
108
|
-
hasText = true;
|
|
109
|
-
}
|
|
110
|
-
} else if (child.nodeType === Node.ELEMENT_NODE) {
|
|
111
|
-
const childElement = child;
|
|
112
|
-
const childName = childElement.tagName;
|
|
113
|
-
const childValue = xmlNodeToJson(childElement);
|
|
114
|
-
if (!children[childName]) {
|
|
115
|
-
children[childName] = [];
|
|
116
|
-
}
|
|
117
|
-
children[childName].push(childValue);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
if (hasText && Object.keys(children).length === 0) {
|
|
121
|
-
return textContent;
|
|
122
|
-
}
|
|
123
|
-
Object.keys(children).forEach((key) => {
|
|
124
|
-
result[key] = children[key].length === 1 ? children[key][0] : children[key];
|
|
125
|
-
});
|
|
126
|
-
if (hasText) {
|
|
127
|
-
result["#text"] = textContent;
|
|
128
|
-
}
|
|
129
|
-
return result;
|
|
130
|
-
}
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
function jsonToXml(json, rootTag = "root") {
|
|
134
|
-
return jsonToXmlElement(json, rootTag);
|
|
135
|
-
}
|
|
136
|
-
function jsonToXmlElement(obj, tagName) {
|
|
137
|
-
if (obj === null || obj === void 0) {
|
|
138
|
-
return `<${tagName}></${tagName}>`;
|
|
139
|
-
}
|
|
140
|
-
if (typeof obj === "string" || typeof obj === "number" || typeof obj === "boolean") {
|
|
141
|
-
return `<${tagName}>${escapeXml(String(obj))}</${tagName}>`;
|
|
142
|
-
}
|
|
143
|
-
if (Array.isArray(obj)) {
|
|
144
|
-
return obj.map((item) => jsonToXmlElement(item, tagName)).join("");
|
|
145
|
-
}
|
|
146
|
-
if (typeof obj === "object") {
|
|
147
|
-
const record = obj;
|
|
148
|
-
let xml = `<${tagName}`;
|
|
149
|
-
if (record["@attributes"]) {
|
|
150
|
-
const attrs = record["@attributes"];
|
|
151
|
-
Object.keys(attrs).forEach((key) => {
|
|
152
|
-
xml += ` ${key}="${escapeXml(String(attrs[key]))}"`;
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
xml += ">";
|
|
156
|
-
if (record["#text"]) {
|
|
157
|
-
xml += escapeXml(String(record["#text"]));
|
|
158
|
-
}
|
|
159
|
-
Object.keys(record).forEach((key) => {
|
|
160
|
-
if (key !== "@attributes" && key !== "#text") {
|
|
161
|
-
const value = record[key];
|
|
162
|
-
if (Array.isArray(value)) {
|
|
163
|
-
value.forEach((item) => {
|
|
164
|
-
xml += jsonToXmlElement(item, key);
|
|
165
|
-
});
|
|
166
|
-
} else {
|
|
167
|
-
xml += jsonToXmlElement(value, key);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
xml += `</${tagName}>`;
|
|
172
|
-
return xml;
|
|
173
|
-
}
|
|
174
|
-
return `<${tagName}></${tagName}>`;
|
|
175
|
-
}
|
|
176
|
-
function escapeXml(str) {
|
|
177
|
-
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
178
|
-
}
|
|
179
|
-
function yamlToJson(yaml) {
|
|
180
|
-
const lines = yaml.split(/\r?\n/);
|
|
181
|
-
const result = {};
|
|
182
|
-
const stack = [
|
|
183
|
-
{ obj: result, indent: -1 }
|
|
184
|
-
];
|
|
185
|
-
for (let i = 0; i < lines.length; i++) {
|
|
186
|
-
const line = lines[i];
|
|
187
|
-
const trimmed = line.trim();
|
|
188
|
-
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
189
|
-
const indent = line.length - line.trimStart().length;
|
|
190
|
-
const current = stack[stack.length - 1];
|
|
191
|
-
while (stack.length > 1 && indent <= current.indent) {
|
|
192
|
-
stack.pop();
|
|
193
|
-
}
|
|
194
|
-
const match = trimmed.match(/^([^:]+):\s*(.*)$/);
|
|
195
|
-
if (match) {
|
|
196
|
-
const key = match[1].trim();
|
|
197
|
-
const valueStr = match[2].trim();
|
|
198
|
-
let parsedValue;
|
|
199
|
-
if (valueStr === "") {
|
|
200
|
-
parsedValue = {};
|
|
201
|
-
} else if (valueStr === "[]") {
|
|
202
|
-
parsedValue = [];
|
|
203
|
-
} else if (valueStr.startsWith("[") && valueStr.endsWith("]")) {
|
|
204
|
-
parsedValue = parseYamlArray(valueStr);
|
|
205
|
-
} else if (valueStr === "true" || valueStr === "True") {
|
|
206
|
-
parsedValue = true;
|
|
207
|
-
} else if (valueStr === "false" || valueStr === "False") {
|
|
208
|
-
parsedValue = false;
|
|
209
|
-
} else if (valueStr === "null" || valueStr === "Null" || valueStr === "~") {
|
|
210
|
-
parsedValue = null;
|
|
211
|
-
} else if (/^-?\d+$/.test(valueStr)) {
|
|
212
|
-
parsedValue = parseInt(valueStr, 10);
|
|
213
|
-
} else if (/^-?\d+\.\d+$/.test(valueStr)) {
|
|
214
|
-
parsedValue = parseFloat(valueStr);
|
|
215
|
-
} else if (valueStr.startsWith('"') && valueStr.endsWith('"')) {
|
|
216
|
-
parsedValue = valueStr.slice(1, -1).replace(/\\"/g, '"');
|
|
217
|
-
} else if (valueStr.startsWith("'") && valueStr.endsWith("'")) {
|
|
218
|
-
parsedValue = valueStr.slice(1, -1);
|
|
219
|
-
} else {
|
|
220
|
-
parsedValue = valueStr;
|
|
221
|
-
}
|
|
222
|
-
const currentObj = stack[stack.length - 1].obj;
|
|
223
|
-
if (typeof parsedValue === "object" && parsedValue !== null && !Array.isArray(parsedValue)) {
|
|
224
|
-
stack.push({ obj: parsedValue, indent });
|
|
225
|
-
}
|
|
226
|
-
currentObj[key] = parsedValue;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
return result;
|
|
230
|
-
}
|
|
231
|
-
function parseYamlArray(str) {
|
|
232
|
-
const content = str.slice(1, -1).trim();
|
|
233
|
-
if (!content) return [];
|
|
234
|
-
const items = [];
|
|
235
|
-
const parts = content.split(",").map((s) => s.trim());
|
|
236
|
-
parts.forEach((part) => {
|
|
237
|
-
if (part.startsWith('"') && part.endsWith('"')) {
|
|
238
|
-
items.push(part.slice(1, -1).replace(/\\"/g, '"'));
|
|
239
|
-
} else if (part.startsWith("'") && part.endsWith("'")) {
|
|
240
|
-
items.push(part.slice(1, -1));
|
|
241
|
-
} else if (part === "true" || part === "True") {
|
|
242
|
-
items.push(true);
|
|
243
|
-
} else if (part === "false" || part === "False") {
|
|
244
|
-
items.push(false);
|
|
245
|
-
} else if (part === "null" || part === "Null") {
|
|
246
|
-
items.push(null);
|
|
247
|
-
} else if (/^-?\d+$/.test(part)) {
|
|
248
|
-
items.push(parseInt(part, 10));
|
|
249
|
-
} else if (/^-?\d+\.\d+$/.test(part)) {
|
|
250
|
-
items.push(parseFloat(part));
|
|
251
|
-
} else {
|
|
252
|
-
items.push(part);
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
return items;
|
|
256
|
-
}
|
|
257
|
-
function jsonToYaml(json, indent = 2) {
|
|
258
|
-
return jsonToYamlValue(json, 0, indent);
|
|
259
|
-
}
|
|
260
|
-
function jsonToYamlValue(value, level, indent) {
|
|
261
|
-
const spaces = " ".repeat(level * indent);
|
|
262
|
-
if (value === null) {
|
|
263
|
-
return "null";
|
|
264
|
-
}
|
|
265
|
-
if (typeof value === "string") {
|
|
266
|
-
if (value.includes(":") || value.includes("\n") || value.includes('"')) {
|
|
267
|
-
return `"${value.replace(/"/g, '\\"')}"`;
|
|
268
|
-
}
|
|
269
|
-
return value;
|
|
270
|
-
}
|
|
271
|
-
if (typeof value === "number" || typeof value === "boolean") {
|
|
272
|
-
return String(value);
|
|
273
|
-
}
|
|
274
|
-
if (Array.isArray(value)) {
|
|
275
|
-
if (value.length === 0) {
|
|
276
|
-
return "[]";
|
|
277
|
-
}
|
|
278
|
-
return value.map((item) => `${spaces}- ${jsonToYamlValue(item, level + 1, indent)}`).join("\n");
|
|
279
|
-
}
|
|
280
|
-
if (typeof value === "object") {
|
|
281
|
-
const obj = value;
|
|
282
|
-
const keys = Object.keys(obj);
|
|
283
|
-
if (keys.length === 0) {
|
|
284
|
-
return "{}";
|
|
285
|
-
}
|
|
286
|
-
return keys.map((key) => {
|
|
287
|
-
const val = obj[key];
|
|
288
|
-
const keyStr = /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key) ? key : `"${key}"`;
|
|
289
|
-
const valStr = jsonToYamlValue(val, level + 1, indent);
|
|
290
|
-
if (typeof val === "object" && val !== null) {
|
|
291
|
-
return `${spaces}${keyStr}:
|
|
292
|
-
${valStr}`;
|
|
293
|
-
}
|
|
294
|
-
return `${spaces}${keyStr}: ${valStr}`;
|
|
295
|
-
}).join("\n");
|
|
296
|
-
}
|
|
297
|
-
return String(value);
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
export { csvToJson, jsonToCsv, jsonToXml, jsonToYaml, xmlToJson, yamlToJson };
|
|
301
|
-
//# sourceMappingURL=chunk-7E6GELHJ.mjs.map
|
|
302
|
-
//# sourceMappingURL=chunk-7E6GELHJ.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transform.ts"],"names":[],"mappings":"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","file":"chunk-7E6GELHJ.mjs","sourcesContent":["/**\n * 数据转换工具函数\n */\n\n/**\n * CSV转JSON\n * @param csv - CSV字符串\n * @param options - 选项\n * @returns JSON对象数组\n */\nexport function csvToJson<T extends Record<string, unknown> = Record<string, string>>(\n csv: string,\n options: {\n delimiter?: string;\n headers?: string[];\n skipEmptyLines?: boolean;\n } = {}\n): T[] {\n const { delimiter = ',', headers, skipEmptyLines = true } = options;\n\n const lines = csv.split(/\\r?\\n/).filter(line => {\n if (skipEmptyLines) {\n return line.trim().length > 0;\n }\n return true;\n });\n\n if (lines.length === 0) return [];\n\n // 解析第一行作为表头(如果没有提供)\n const headerRow = headers || lines[0].split(delimiter).map(h => h.trim());\n const dataLines = headers ? lines : lines.slice(1);\n\n return dataLines.map(line => {\n const values = parseCsvLine(line, delimiter);\n const obj: Record<string, unknown> = {};\n headerRow.forEach((header, index) => {\n const val = values[index];\n obj[header] = val !== undefined ? val : '';\n });\n return obj as T;\n });\n}\n\n/**\n * 解析CSV行(处理引号内的逗号)\n */\nfunction parseCsvLine(line: string, delimiter: string): string[] {\n const result: string[] = [];\n let current = '';\n let inQuotes = false;\n\n for (let i = 0; i < line.length; i++) {\n const char = line[i];\n const nextChar = line[i + 1];\n\n if (char === '\"') {\n if (inQuotes && nextChar === '\"') {\n // 转义的引号\n current += '\"';\n i++; // 跳过下一个引号\n } else {\n // 切换引号状态\n inQuotes = !inQuotes;\n }\n } else if (char === delimiter && !inQuotes) {\n result.push(current.trim());\n current = '';\n } else {\n current += char;\n }\n }\n\n result.push(current.trim());\n return result;\n}\n\n/**\n * JSON转CSV\n * @param data - JSON对象数组\n * @param options - 选项\n * @returns CSV字符串\n */\nexport function jsonToCsv<T extends Record<string, unknown>>(\n data: T[],\n options: {\n delimiter?: string;\n headers?: string[];\n includeHeaders?: boolean;\n } = {}\n): string {\n const { delimiter = ',', headers, includeHeaders = true } = options;\n\n if (data.length === 0) return '';\n\n // 获取表头\n const headerRow = headers || Object.keys(data[0]);\n\n const lines: string[] = [];\n\n // 添加表头\n if (includeHeaders) {\n lines.push(headerRow.map(escapeCsvValue).join(delimiter));\n }\n\n // 添加数据行\n data.forEach(item => {\n const values = headerRow.map(header => {\n const value = item[header];\n return escapeCsvValue(value != null ? String(value) : '');\n });\n lines.push(values.join(delimiter));\n });\n\n return lines.join('\\n');\n}\n\n/**\n * 转义CSV值(处理引号和换行)\n */\nfunction escapeCsvValue(value: string): string {\n if (value.includes(',') || value.includes('\"') || value.includes('\\n')) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n}\n\n/**\n * XML转JSON\n * @param xml - XML字符串\n * @returns JSON对象\n */\nexport function xmlToJson(xml: string): Record<string, unknown> {\n const parser = new DOMParser();\n const doc = parser.parseFromString(xml, 'text/xml');\n\n // 检查解析错误\n const parseError = doc.querySelector('parsererror');\n if (parseError) {\n throw new Error('Invalid XML: ' + parseError.textContent);\n }\n\n const result = xmlNodeToJson(doc.documentElement);\n if (typeof result === 'object' && result !== null && !Array.isArray(result)) {\n return result as Record<string, unknown>;\n }\n return { value: result };\n}\n\n/**\n * XML节点转JSON对象\n */\nfunction xmlNodeToJson(node: Node): unknown {\n // 文本节点\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent?.trim();\n return text || null;\n }\n\n // 元素节点\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n const result: Record<string, unknown> = {};\n\n // 处理属性\n if (element.attributes.length > 0) {\n const attrs: Record<string, string> = {};\n for (let i = 0; i < element.attributes.length; i++) {\n const attr = element.attributes[i];\n attrs[attr.name] = attr.value;\n }\n result['@attributes'] = attrs;\n }\n\n // 处理子节点\n const children: Record<string, unknown[]> = {};\n let hasText = false;\n let textContent = '';\n\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i];\n\n if (child.nodeType === Node.TEXT_NODE) {\n const text = child.textContent?.trim();\n if (text) {\n textContent += text;\n hasText = true;\n }\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const childElement = child as Element;\n const childName = childElement.tagName;\n const childValue = xmlNodeToJson(childElement);\n\n if (!children[childName]) {\n children[childName] = [];\n }\n children[childName].push(childValue);\n }\n }\n\n // 合并结果\n if (hasText && Object.keys(children).length === 0) {\n return textContent;\n }\n\n Object.keys(children).forEach(key => {\n result[key] = children[key].length === 1 ? children[key][0] : children[key];\n });\n\n if (hasText) {\n result['#text'] = textContent;\n }\n\n return result;\n }\n\n return null;\n}\n\n/**\n * JSON转XML\n * @param json - JSON对象\n * @param rootTag - 根标签名,默认为 'root'\n * @returns XML字符串\n */\nexport function jsonToXml(json: unknown, rootTag = 'root'): string {\n return jsonToXmlElement(json, rootTag);\n}\n\n/**\n * JSON对象转XML元素\n */\nfunction jsonToXmlElement(obj: unknown, tagName: string): string {\n if (obj === null || obj === undefined) {\n return `<${tagName}></${tagName}>`;\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean') {\n return `<${tagName}>${escapeXml(String(obj))}</${tagName}>`;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(item => jsonToXmlElement(item, tagName)).join('');\n }\n\n if (typeof obj === 'object') {\n const record = obj as Record<string, unknown>;\n let xml = `<${tagName}`;\n\n // 处理属性\n if (record['@attributes']) {\n const attrs = record['@attributes'] as Record<string, unknown>;\n Object.keys(attrs).forEach(key => {\n xml += ` ${key}=\"${escapeXml(String(attrs[key]))}\"`;\n });\n }\n\n xml += '>';\n\n // 处理文本内容\n if (record['#text']) {\n xml += escapeXml(String(record['#text']));\n }\n\n // 处理子元素\n Object.keys(record).forEach(key => {\n if (key !== '@attributes' && key !== '#text') {\n const value = record[key];\n if (Array.isArray(value)) {\n value.forEach(item => {\n xml += jsonToXmlElement(item, key);\n });\n } else {\n xml += jsonToXmlElement(value, key);\n }\n }\n });\n\n xml += `</${tagName}>`;\n return xml;\n }\n\n return `<${tagName}></${tagName}>`;\n}\n\n/**\n * 转义XML特殊字符\n */\nfunction escapeXml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * YAML转JSON\n * @param yaml - YAML字符串\n * @returns JSON对象\n */\nexport function yamlToJson(yaml: string): unknown {\n // 简单的YAML解析器(支持基本语法)\n // 注意:这是一个简化版本,完整的YAML解析需要更复杂的实现\n const lines = yaml.split(/\\r?\\n/);\n const result: Record<string, unknown> = {};\n const stack: Array<{ obj: Record<string, unknown>; indent: number }> = [\n { obj: result, indent: -1 },\n ];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const trimmed = line.trim();\n\n // 跳过空行和注释\n if (!trimmed || trimmed.startsWith('#')) continue;\n\n // 计算缩进\n const indent = line.length - line.trimStart().length;\n const current = stack[stack.length - 1];\n\n // 如果缩进减少,弹出栈\n while (stack.length > 1 && indent <= current.indent) {\n stack.pop();\n }\n\n const match = trimmed.match(/^([^:]+):\\s*(.*)$/);\n if (match) {\n const key = match[1].trim();\n const valueStr = match[2].trim();\n\n // 处理值\n let parsedValue: unknown;\n if (valueStr === '') {\n // 空值,可能是对象或数组\n parsedValue = {};\n } else if (valueStr === '[]') {\n parsedValue = [];\n } else if (valueStr.startsWith('[') && valueStr.endsWith(']')) {\n // 数组\n parsedValue = parseYamlArray(valueStr);\n } else if (valueStr === 'true' || valueStr === 'True') {\n parsedValue = true;\n } else if (valueStr === 'false' || valueStr === 'False') {\n parsedValue = false;\n } else if (valueStr === 'null' || valueStr === 'Null' || valueStr === '~') {\n parsedValue = null;\n } else if (/^-?\\d+$/.test(valueStr)) {\n parsedValue = parseInt(valueStr, 10);\n } else if (/^-?\\d+\\.\\d+$/.test(valueStr)) {\n parsedValue = parseFloat(valueStr);\n } else if (valueStr.startsWith('\"') && valueStr.endsWith('\"')) {\n parsedValue = valueStr.slice(1, -1).replace(/\\\\\"/g, '\"');\n } else if (valueStr.startsWith(\"'\") && valueStr.endsWith(\"'\")) {\n parsedValue = valueStr.slice(1, -1);\n } else {\n parsedValue = valueStr;\n }\n\n const currentObj = stack[stack.length - 1].obj;\n if (typeof parsedValue === 'object' && parsedValue !== null && !Array.isArray(parsedValue)) {\n stack.push({ obj: parsedValue as Record<string, unknown>, indent });\n }\n currentObj[key] = parsedValue;\n }\n }\n\n return result;\n}\n\n/**\n * 解析YAML数组\n */\nfunction parseYamlArray(str: string): unknown[] {\n const content = str.slice(1, -1).trim();\n if (!content) return [];\n\n const items: unknown[] = [];\n const parts = content.split(',').map(s => s.trim());\n\n parts.forEach(part => {\n if (part.startsWith('\"') && part.endsWith('\"')) {\n items.push(part.slice(1, -1).replace(/\\\\\"/g, '\"'));\n } else if (part.startsWith(\"'\") && part.endsWith(\"'\")) {\n items.push(part.slice(1, -1));\n } else if (part === 'true' || part === 'True') {\n items.push(true);\n } else if (part === 'false' || part === 'False') {\n items.push(false);\n } else if (part === 'null' || part === 'Null') {\n items.push(null);\n } else if (/^-?\\d+$/.test(part)) {\n items.push(parseInt(part, 10));\n } else if (/^-?\\d+\\.\\d+$/.test(part)) {\n items.push(parseFloat(part));\n } else {\n items.push(part);\n }\n });\n\n return items;\n}\n\n/**\n * JSON转YAML\n * @param json - JSON对象\n * @param indent - 缩进空格数,默认为 2\n * @returns YAML字符串\n */\nexport function jsonToYaml(json: unknown, indent = 2): string {\n return jsonToYamlValue(json, 0, indent);\n}\n\n/**\n * JSON值转YAML字符串\n */\nfunction jsonToYamlValue(value: unknown, level: number, indent: number): string {\n const spaces = ' '.repeat(level * indent);\n\n if (value === null) {\n return 'null';\n }\n\n if (typeof value === 'string') {\n // 如果包含特殊字符,使用引号\n if (value.includes(':') || value.includes('\\n') || value.includes('\"')) {\n return `\"${value.replace(/\"/g, '\\\\\"')}\"`;\n }\n return value;\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]';\n }\n return value.map(item => `${spaces}- ${jsonToYamlValue(item, level + 1, indent)}`).join('\\n');\n }\n\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>;\n const keys = Object.keys(obj);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n return keys\n .map(key => {\n const val: unknown = obj[key];\n const keyStr = /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key) ? key : `\"${key}\"`;\n const valStr = jsonToYamlValue(val, level + 1, indent);\n\n // 如果是对象或数组,需要换行\n if (typeof val === 'object' && val !== null) {\n return `${spaces}${keyStr}:\\n${valStr}`;\n }\n\n return `${spaces}${keyStr}: ${valStr}`;\n })\n .join('\\n');\n }\n\n return String(value);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/browser/file.ts"],"names":[],"mappings":"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","file":"chunk-7V5UQXIO.js","sourcesContent":["/**\n * 文件工具函数\n */\n\n/**\n * 计算文件的MD5值(使用浏览器原生API)\n * 注意:这里使用SHA-256作为简化实现,实际项目中建议使用spark-md5库计算真正的MD5\n * @param file - 文件对象\n * @returns Promise<string> 哈希值\n */\nexport async function calculateFileMD5(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n if (typeof FileReader === 'undefined') {\n reject(new Error('FileReader is not supported in this environment'));\n return;\n }\n\n const reader = new FileReader();\n reader.onload = async (e: ProgressEvent<FileReader>) => {\n try {\n const arrayBuffer = e.target?.result as ArrayBuffer;\n if (!arrayBuffer) {\n reject(new Error('Failed to read file'));\n return;\n }\n const hashBuffer = await crypto.subtle.digest('SHA-256', arrayBuffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n // 注意:这里使用SHA-256,如果需要MD5需要使用第三方库如spark-md5\n resolve(hashHex);\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(file);\n });\n}\n\n/**\n * 计算Blob的MD5值\n * 注意:这里使用SHA-256作为简化实现,实际项目中建议使用spark-md5库计算真正的MD5\n * @param blob - Blob对象\n * @returns Promise<string> 哈希值\n */\nexport async function calculateBlobMD5(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n if (typeof FileReader === 'undefined') {\n reject(new Error('FileReader is not supported in this environment'));\n return;\n }\n\n const reader = new FileReader();\n reader.onload = async (e: ProgressEvent<FileReader>) => {\n try {\n const arrayBuffer = e.target?.result as ArrayBuffer;\n if (!arrayBuffer) {\n reject(new Error('Failed to read blob'));\n return;\n }\n const hashBuffer = await crypto.subtle.digest('SHA-256', arrayBuffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n resolve(hashHex);\n } catch (error) {\n reject(error);\n }\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(blob);\n });\n}\n\n/**\n * 将文件分割为多个分片\n * @param file - 文件对象\n * @param chunkSize - 分片大小(字节)\n * @returns 分片数组\n */\nexport function splitFileIntoChunks(file: File, chunkSize: number): Blob[] {\n const chunks: Blob[] = [];\n let start = 0;\n\n while (start < file.size) {\n const end = Math.min(start + chunkSize, file.size);\n chunks.push(file.slice(start, end));\n start = end;\n }\n\n return chunks;\n}\n\n/**\n * 格式化文件大小\n * @param bytes - 字节数\n * @returns 格式化后的文件大小字符串\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n\n/**\n * 获取文件扩展名\n * @param fileName - 文件名\n * @returns 扩展名(不含点)\n */\nexport function getFileExtension(fileName: string): string {\n const lastDot = fileName.lastIndexOf('.');\n return lastDot > 0 ? fileName.slice(lastDot + 1) : '';\n}\n\n/**\n * 获取文件名(不含扩展名)\n * @param fileName - 文件名\n * @returns 文件名(不含扩展名)\n */\nexport function getFileNameWithoutExtension(fileName: string): string {\n const lastDot = fileName.lastIndexOf('.');\n return lastDot > 0 ? fileName.slice(0, lastDot) : fileName;\n}\n"]}
|