@alibarbar/common 1.0.8 → 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 +12 -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
package/dist/transform.js
CHANGED
|
@@ -1,33 +1,300 @@
|
|
|
1
|
-
|
|
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
|
+
}
|
|
2
299
|
|
|
3
|
-
|
|
4
|
-
require('./chunk-PR4QN5HX.js');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "csvToJson", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () { return chunkZDMFMUDR_js.csvToJson; }
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "jsonToCsv", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () { return chunkZDMFMUDR_js.jsonToCsv; }
|
|
15
|
-
});
|
|
16
|
-
Object.defineProperty(exports, "jsonToXml", {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
get: function () { return chunkZDMFMUDR_js.jsonToXml; }
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(exports, "jsonToYaml", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: function () { return chunkZDMFMUDR_js.jsonToYaml; }
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "xmlToJson", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () { return chunkZDMFMUDR_js.xmlToJson; }
|
|
27
|
-
});
|
|
28
|
-
Object.defineProperty(exports, "yamlToJson", {
|
|
29
|
-
enumerable: true,
|
|
30
|
-
get: function () { return chunkZDMFMUDR_js.yamlToJson; }
|
|
31
|
-
});
|
|
32
|
-
//# sourceMappingURL=transform.js.map
|
|
33
|
-
//# sourceMappingURL=transform.js.map
|
|
300
|
+
export { csvToJson, jsonToCsv, jsonToXml, jsonToYaml, xmlToJson, yamlToJson };
|
|
@@ -1,15 +1,42 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
// src/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
// src/browser/file.ts
|
|
4
|
+
async function calculateBlobMD5(blob) {
|
|
5
|
+
return new Promise((resolve, reject) => {
|
|
6
|
+
if (typeof FileReader === "undefined") {
|
|
7
|
+
reject(new Error("FileReader is not supported in this environment"));
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const reader = new FileReader();
|
|
11
|
+
reader.onload = async (e) => {
|
|
12
|
+
try {
|
|
13
|
+
const arrayBuffer = e.target?.result;
|
|
14
|
+
if (!arrayBuffer) {
|
|
15
|
+
reject(new Error("Failed to read blob"));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const hashBuffer = await crypto.subtle.digest("SHA-256", arrayBuffer);
|
|
19
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
20
|
+
const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
21
|
+
resolve(hashHex);
|
|
22
|
+
} catch (error) {
|
|
23
|
+
reject(error);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
reader.onerror = reject;
|
|
27
|
+
reader.readAsArrayBuffer(blob);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function splitFileIntoChunks(file, chunkSize) {
|
|
31
|
+
const chunks = [];
|
|
32
|
+
let start = 0;
|
|
33
|
+
while (start < file.size) {
|
|
34
|
+
const end = Math.min(start + chunkSize, file.size);
|
|
35
|
+
chunks.push(file.slice(start, end));
|
|
36
|
+
start = end;
|
|
37
|
+
}
|
|
38
|
+
return chunks;
|
|
39
|
+
}
|
|
13
40
|
|
|
14
41
|
// src/browser/upload.ts
|
|
15
42
|
var ChunkUploader = class {
|
|
@@ -376,6 +403,6 @@ async function uploadFile(file, options) {
|
|
|
376
403
|
return uploader.upload();
|
|
377
404
|
}
|
|
378
405
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
406
|
+
exports.ChunkUploader = ChunkUploader;
|
|
407
|
+
exports.createUploader = createUploader;
|
|
408
|
+
exports.uploadFile = uploadFile;
|