n8n-nodes-data-mapper 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,527 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProfileError = void 0;
4
+ exports.detectFormat = detectFormat;
5
+ exports.parseProfile = parseProfile;
6
+ exports.flattenSource = flattenSource;
7
+ exports.autoMap = autoMap;
8
+ const xml_1 = require("./xml");
9
+ class ProfileError extends Error {
10
+ }
11
+ exports.ProfileError = ProfileError;
12
+ const DATE_HINT = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})/;
13
+ function dataTypeToField(type) {
14
+ switch ((type !== null && type !== void 0 ? type : '').toLowerCase()) {
15
+ case 'number':
16
+ case 'integer':
17
+ case 'float':
18
+ case 'double':
19
+ case 'decimal':
20
+ return 'number';
21
+ case 'boolean':
22
+ case 'bit':
23
+ return 'boolean';
24
+ case 'datetime':
25
+ case 'date':
26
+ case 'time':
27
+ return 'datetime';
28
+ default:
29
+ return 'string';
30
+ }
31
+ }
32
+ function localName(name) {
33
+ const colon = name.indexOf(':');
34
+ return colon === -1 ? name : name.slice(colon + 1);
35
+ }
36
+ function childElements(element) {
37
+ return element.children.filter((c) => c.type === 'element');
38
+ }
39
+ function findDescendant(element, name) {
40
+ const queue = [element];
41
+ while (queue.length > 0) {
42
+ const current = queue.shift();
43
+ for (const child of childElements(current)) {
44
+ if (localName(child.name) === name)
45
+ return child;
46
+ queue.push(child);
47
+ }
48
+ }
49
+ return undefined;
50
+ }
51
+ function detectFormat(text) {
52
+ const trimmed = text.replace(/^\uFEFF/, '').trim();
53
+ if (trimmed.startsWith('<')) {
54
+ if (/type\s*=\s*"profile\.(xml|json|flatfile)"/.test(trimmed))
55
+ return 'component';
56
+ if (/<(\w+:)?(XMLProfile|JSONProfile|FlatFileProfile)[\s>]/.test(trimmed))
57
+ return 'component';
58
+ if (/<(\w+:)?schema[\s>]/.test(trimmed) && /XMLSchema/.test(trimmed))
59
+ return 'xsd';
60
+ return 'sampleXml';
61
+ }
62
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
63
+ if (/"\$schema"/.test(trimmed) || /"properties"\s*:/.test(trimmed))
64
+ return 'jsonSchema';
65
+ return 'sampleJson';
66
+ }
67
+ return 'csv';
68
+ }
69
+ function parseProfile(text, format = 'auto') {
70
+ const trimmed = text.replace(/^\uFEFF/, '').trim();
71
+ if (trimmed === '')
72
+ throw new ProfileError('The target profile is empty');
73
+ const kind = format === 'auto' ? detectFormat(trimmed) : format;
74
+ let result;
75
+ let failure;
76
+ try {
77
+ result = dispatchProfile(kind, trimmed);
78
+ }
79
+ catch (error) {
80
+ failure = error;
81
+ }
82
+ if (result)
83
+ return result;
84
+ if (failure instanceof ProfileError)
85
+ throw failure;
86
+ if (failure instanceof xml_1.XmlParseError)
87
+ throw new ProfileError(`Could not read the profile as XML: ${failure.message}`);
88
+ if (failure instanceof SyntaxError)
89
+ throw new ProfileError(`Could not read the profile as JSON: ${failure.message}`);
90
+ throw failure !== null && failure !== void 0 ? failure : new ProfileError('Could not read the profile');
91
+ }
92
+ function dispatchProfile(kind, trimmed) {
93
+ switch (kind) {
94
+ case 'component':
95
+ return parseComponentProfile(trimmed);
96
+ case 'xsd':
97
+ return parseXsd(trimmed);
98
+ case 'sampleXml':
99
+ return parseSampleXml(trimmed);
100
+ case 'jsonSchema':
101
+ return parseJsonSchema(trimmed);
102
+ case 'sampleJson':
103
+ return parseSampleJson(trimmed);
104
+ case 'csv':
105
+ return parseCsvHeader(trimmed);
106
+ default:
107
+ throw new ProfileError(`Unknown profile format "${kind}"`);
108
+ }
109
+ }
110
+ function parseComponentProfile(text) {
111
+ var _a, _b, _c;
112
+ const doc = (0, xml_1.parseXml)(text);
113
+ const xml = (_a = findDescendant(doc.root, 'XMLProfile')) !== null && _a !== void 0 ? _a : (localName(doc.root.name) === 'XMLProfile' ? doc.root : undefined);
114
+ if (xml)
115
+ return parseComponentXml(xml);
116
+ const json = (_b = findDescendant(doc.root, 'JSONProfile')) !== null && _b !== void 0 ? _b : (localName(doc.root.name) === 'JSONProfile' ? doc.root : undefined);
117
+ if (json)
118
+ return parseComponentJson(json);
119
+ const flat = (_c = findDescendant(doc.root, 'FlatFileProfile')) !== null && _c !== void 0 ? _c : (localName(doc.root.name) === 'FlatFileProfile' ? doc.root : undefined);
120
+ if (flat)
121
+ return parseComponentFlatFile(flat);
122
+ throw new ProfileError('This XML is not a recognized profile component (XML, JSON or Flat File)');
123
+ }
124
+ function parseComponentXml(xmlProfile) {
125
+ const dataElements = findDescendant(xmlProfile, 'DataElements');
126
+ if (!dataElements)
127
+ throw new ProfileError('The XML profile component has no <DataElements>');
128
+ const fields = [];
129
+ let rootName;
130
+ const walk = (element, prefix, isRoot) => {
131
+ for (const node of childElements(element)) {
132
+ const name = node.attributes.name;
133
+ if (localName(node.name) !== 'XMLElement' || !name)
134
+ continue;
135
+ if (isRoot && rootName === undefined)
136
+ rootName = name;
137
+ const repeating = node.attributes.maxOccurs === '-1';
138
+ const segment = `${name}${repeating ? '[*]' : ''}`;
139
+ const path = prefix ? `${prefix}.${segment}` : segment;
140
+ const kids = childElements(node).filter((c) => localName(c.name) === 'XMLElement');
141
+ const attrs = childElements(node).filter((c) => localName(c.name) === 'XMLAttribute');
142
+ const hasChildElements = kids.length > 0;
143
+ if (!hasChildElements && node.attributes.isMappable !== 'false') {
144
+ fields.push({ path, name, type: dataTypeToField(node.attributes.dataType), repeating, required: node.attributes.minOccurs === '1' });
145
+ }
146
+ for (const attr of attrs) {
147
+ const attrName = attr.attributes.name;
148
+ if (attrName)
149
+ fields.push({ path: `${path}.$.${attrName}`, name: attrName, type: dataTypeToField(attr.attributes.dataType), repeating: false, required: attr.attributes.required === 'true' });
150
+ }
151
+ if (hasChildElements)
152
+ walk(node, path, false);
153
+ }
154
+ };
155
+ walk(dataElements, '', true);
156
+ return { kind: 'component', rootName, fields };
157
+ }
158
+ function parseComponentJson(jsonProfile) {
159
+ const dataElements = findDescendant(jsonProfile, 'DataElements');
160
+ if (!dataElements)
161
+ throw new ProfileError('The JSON profile component has no <DataElements>');
162
+ const fields = [];
163
+ const walkObject = (objectEl, prefix) => {
164
+ for (const entry of childElements(objectEl)) {
165
+ if (localName(entry.name) !== 'JSONObjectEntry')
166
+ continue;
167
+ const name = entry.attributes.name;
168
+ if (!name)
169
+ continue;
170
+ const nestedObject = childElements(entry).find((c) => localName(c.name) === 'JSONObject');
171
+ const array = childElements(entry).find((c) => localName(c.name) === 'JSONArray');
172
+ if (array) {
173
+ const arrayElement = childElements(array).find((c) => localName(c.name) === 'JSONArrayElement');
174
+ const arrObject = arrayElement && childElements(arrayElement).find((c) => localName(c.name) === 'JSONObject');
175
+ const path = `${prefix}${name}[*]`;
176
+ if (arrObject)
177
+ walkObject(arrObject, `${path}.`);
178
+ else
179
+ fields.push({ path, name, type: dataTypeToField(arrayElement === null || arrayElement === void 0 ? void 0 : arrayElement.attributes.dataType), repeating: true, required: false });
180
+ }
181
+ else if (nestedObject) {
182
+ walkObject(nestedObject, `${prefix}${name}.`);
183
+ }
184
+ else {
185
+ fields.push({ path: `${prefix}${name}`, name, type: dataTypeToField(entry.attributes.dataType), repeating: false, required: false });
186
+ }
187
+ }
188
+ };
189
+ const root = childElements(dataElements).find((c) => localName(c.name) === 'JSONRootValue');
190
+ const rootObject = root && childElements(root).find((c) => localName(c.name) === 'JSONObject');
191
+ if (rootObject)
192
+ walkObject(rootObject, '');
193
+ else if (root)
194
+ walkObject(root, '');
195
+ return { kind: 'component', fields };
196
+ }
197
+ function parseComponentFlatFile(flatProfile) {
198
+ var _a;
199
+ const dataElements = findDescendant(flatProfile, 'DataElements');
200
+ if (!dataElements)
201
+ throw new ProfileError('The Flat File profile component has no <DataElements>');
202
+ const records = childElements(dataElements).filter((c) => localName(c.name) === 'FlatFileRecord');
203
+ const multi = records.length > 1;
204
+ const fields = [];
205
+ for (const record of records) {
206
+ const recordName = (_a = record.attributes.name) !== null && _a !== void 0 ? _a : 'Record';
207
+ const elements = findDescendant(record, 'FlatFileElements');
208
+ if (!elements)
209
+ continue;
210
+ for (const el of childElements(elements)) {
211
+ if (localName(el.name) !== 'FlatFileElement')
212
+ continue;
213
+ const name = el.attributes.name;
214
+ if (!name || el.attributes.isMappable === 'false')
215
+ continue;
216
+ fields.push({ path: multi ? `${recordName}.${name}` : name, name, type: dataTypeToField(el.attributes.dataType), repeating: false, required: el.attributes.mandatory === 'true' });
217
+ }
218
+ }
219
+ return { kind: 'component', fields };
220
+ }
221
+ function parseXsd(text) {
222
+ const doc = (0, xml_1.parseXml)(text);
223
+ const fields = [];
224
+ let rootName;
225
+ const complexTypes = new Map();
226
+ for (const node of descendants(doc.root)) {
227
+ if (localName(node.name) === 'complexType' && node.attributes.name)
228
+ complexTypes.set(node.attributes.name, node);
229
+ }
230
+ const walk = (element, prefix, isRoot, seen) => {
231
+ var _a;
232
+ const name = element.attributes.name;
233
+ if (!name)
234
+ return;
235
+ if (isRoot && rootName === undefined)
236
+ rootName = name;
237
+ const repeating = element.attributes.maxOccurs === 'unbounded' || Number(element.attributes.maxOccurs) > 1;
238
+ const segment = `${name}${repeating ? '[*]' : ''}`;
239
+ const path = prefix ? `${prefix}.${segment}` : segment;
240
+ let complex = childElements(element).find((c) => localName(c.name) === 'complexType');
241
+ const typeName = element.attributes.type ? localName(element.attributes.type) : undefined;
242
+ if (!complex && typeName && complexTypes.has(typeName) && !seen.has(typeName))
243
+ complex = complexTypes.get(typeName);
244
+ if (complex) {
245
+ const next = typeName ? new Set([...seen, typeName]) : seen;
246
+ for (const child of descendants(complex)) {
247
+ if (localName(child.name) === 'element')
248
+ walk(child, path, false, next);
249
+ if (localName(child.name) === 'attribute' && child.attributes.name) {
250
+ fields.push({ path: `${path}.$.${child.attributes.name}`, name: child.attributes.name, type: dataTypeToField(localName((_a = child.attributes.type) !== null && _a !== void 0 ? _a : '')), repeating: false, required: child.attributes.use === 'required' });
251
+ }
252
+ }
253
+ }
254
+ else {
255
+ fields.push({ path, name, type: dataTypeToField(typeName), repeating, required: element.attributes.minOccurs !== '0' });
256
+ }
257
+ };
258
+ const roots = childElements(doc.root).filter((c) => localName(c.name) === 'element');
259
+ for (const root of roots)
260
+ walk(root, '', true, new Set());
261
+ if (fields.length === 0)
262
+ throw new ProfileError('No elements found in the XSD');
263
+ return { kind: 'xsd', rootName, fields };
264
+ }
265
+ function* descendants(element) {
266
+ for (const child of childElements(element)) {
267
+ yield child;
268
+ yield* descendants(child);
269
+ }
270
+ }
271
+ function parseJsonSchema(text) {
272
+ const schema = JSON.parse(text);
273
+ const fields = [];
274
+ const walk = (node, prefix) => {
275
+ var _a, _b;
276
+ if (!node || typeof node !== 'object')
277
+ return;
278
+ const s = node;
279
+ const type = Array.isArray(s.type) ? s.type.find((t) => t !== 'null') : s.type;
280
+ if (type === 'object' || s.properties) {
281
+ const props = ((_a = s.properties) !== null && _a !== void 0 ? _a : {});
282
+ const required = new Set((_b = s.required) !== null && _b !== void 0 ? _b : []);
283
+ for (const [key, child] of Object.entries(props)) {
284
+ walkField(key, child, prefix, required.has(key));
285
+ }
286
+ }
287
+ };
288
+ const walkField = (key, child, prefix, required) => {
289
+ const c = (child !== null && child !== void 0 ? child : {});
290
+ const type = Array.isArray(c.type) ? c.type.find((t) => t !== 'null') : c.type;
291
+ if (type === 'object' || c.properties) {
292
+ walk(c, `${prefix}${key}.`);
293
+ }
294
+ else if (type === 'array' && c.items) {
295
+ const items = c.items;
296
+ const itemType = items.type;
297
+ if (itemType === 'object' || items.properties)
298
+ walk(items, `${prefix}${key}[*].`);
299
+ else
300
+ fields.push({ path: `${prefix}${key}[*]`, name: key, type: schemaType(itemType, items.format), repeating: true, required });
301
+ }
302
+ else {
303
+ fields.push({ path: `${prefix}${key}`, name: key, type: schemaType(type, c.format), repeating: false, required });
304
+ }
305
+ };
306
+ walk(schema, '');
307
+ if (fields.length === 0)
308
+ throw new ProfileError('No properties found in the JSON Schema');
309
+ return { kind: 'jsonSchema', fields };
310
+ }
311
+ function schemaType(type, format) {
312
+ if (format === 'date' || format === 'date-time' || format === 'time')
313
+ return 'datetime';
314
+ return dataTypeToField(type);
315
+ }
316
+ function parseSampleJson(text) {
317
+ const sample = JSON.parse(text);
318
+ const fields = [];
319
+ inferFields(Array.isArray(sample) ? sample[0] : sample, '', fields);
320
+ if (fields.length === 0)
321
+ throw new ProfileError('Could not find any fields in the sample JSON');
322
+ return { kind: 'sampleJson', fields };
323
+ }
324
+ function parseSampleXml(text) {
325
+ const doc = (0, xml_1.parseXml)(text);
326
+ const fields = [];
327
+ const sample = elementToSample(doc.root);
328
+ inferFields(sample, '', fields);
329
+ return { kind: 'sampleXml', rootName: localName(doc.root.name), fields: fields.map((f) => ({ ...f, path: stripRoot(f.path, localName(doc.root.name)) })) };
330
+ }
331
+ function stripRoot(path, root) {
332
+ return path === root ? path : path.startsWith(`${root}.`) ? path.slice(root.length + 1) : path;
333
+ }
334
+ function elementToSample(element) {
335
+ const result = {};
336
+ if (Object.keys(element.attributes).length > 0)
337
+ result.$ = { ...element.attributes };
338
+ const kids = childElements(element);
339
+ const text = element.children.filter((c) => c.type === 'text').map((c) => c.value).join('').trim();
340
+ if (kids.length === 0) {
341
+ if (Object.keys(element.attributes).length === 0)
342
+ return text;
343
+ if (text !== '')
344
+ result._ = text;
345
+ return result;
346
+ }
347
+ for (const kid of kids) {
348
+ const name = localName(kid.name);
349
+ const value = elementToSample(kid);
350
+ if (name in result) {
351
+ const existing = result[name];
352
+ result[name] = Array.isArray(existing) ? [...existing, value] : [existing, value];
353
+ }
354
+ else {
355
+ result[name] = value;
356
+ }
357
+ }
358
+ if (text !== '')
359
+ result._ = text;
360
+ return result;
361
+ }
362
+ function inferFields(value, prefix, fields) {
363
+ if (value === null || typeof value !== 'object') {
364
+ fields.push({ path: prefix, name: lastSegment(prefix), type: inferType(value), repeating: false, required: false });
365
+ return;
366
+ }
367
+ if (Array.isArray(value)) {
368
+ const sample = mergeArraySample(value);
369
+ if (sample !== undefined && typeof sample === 'object' && sample !== null && !Array.isArray(sample)) {
370
+ inferFields(sample, `${prefix}[*]`, fields);
371
+ }
372
+ else {
373
+ fields.push({ path: `${prefix}[*]`, name: lastSegment(prefix), type: inferType(sample), repeating: true, required: false });
374
+ }
375
+ return;
376
+ }
377
+ for (const [key, child] of Object.entries(value)) {
378
+ inferFields(child, prefix ? `${prefix}.${key}` : key, fields);
379
+ }
380
+ }
381
+ function mergeArraySample(array) {
382
+ if (array.length === 0)
383
+ return undefined;
384
+ if (array.some((e) => e === null || typeof e !== 'object' || Array.isArray(e)))
385
+ return array[0];
386
+ const merged = {};
387
+ for (const entry of array) {
388
+ for (const [key, value] of Object.entries(entry)) {
389
+ if (!(key in merged) || merged[key] === null || merged[key] === undefined)
390
+ merged[key] = value;
391
+ }
392
+ }
393
+ return merged;
394
+ }
395
+ function inferType(value) {
396
+ if (typeof value === 'number')
397
+ return 'number';
398
+ if (typeof value === 'boolean')
399
+ return 'boolean';
400
+ if (typeof value === 'string' && DATE_HINT.test(value))
401
+ return 'datetime';
402
+ return 'string';
403
+ }
404
+ function parseCsvHeader(text) {
405
+ const firstLine = text.split(/\r?\n/)[0];
406
+ const delimiter = [',', ';', '\t', '|'].map((d) => ({ d, n: firstLine.split(d).length })).sort((a, b) => b.n - a.n)[0].d;
407
+ const columns = firstLine
408
+ .split(delimiter)
409
+ .map((c) => c.trim().replace(/^["']|["']$/g, '').trim())
410
+ .filter((c) => c !== '');
411
+ if (columns.length === 0)
412
+ throw new ProfileError('No columns found in the CSV header');
413
+ return { kind: 'csv', fields: columns.map((name) => ({ path: name, name, type: 'string', repeating: false, required: false })) };
414
+ }
415
+ function flattenSource(data) {
416
+ const paths = [];
417
+ const walk = (value, prefix) => {
418
+ if (value === null || typeof value !== 'object') {
419
+ if (prefix)
420
+ paths.push({ path: prefix, name: lastSegment(prefix) });
421
+ return;
422
+ }
423
+ if (Array.isArray(value)) {
424
+ const sample = mergeArraySample(value);
425
+ if (sample !== undefined && typeof sample === 'object' && sample !== null && !Array.isArray(sample)) {
426
+ walk(sample, `${prefix}[*]`);
427
+ }
428
+ else if (prefix) {
429
+ paths.push({ path: `${prefix}[*]`, name: lastSegment(prefix) });
430
+ }
431
+ return;
432
+ }
433
+ for (const [key, child] of Object.entries(value)) {
434
+ walk(child, prefix ? `${prefix}.${key}` : key);
435
+ }
436
+ };
437
+ walk(data, '');
438
+ return paths;
439
+ }
440
+ function lastSegment(path) {
441
+ const segments = path.replace(/\[\*\]/g, '').split('.').filter(Boolean);
442
+ return segments.length ? segments[segments.length - 1] : path;
443
+ }
444
+ function normalize(name) {
445
+ return name.toLowerCase().replace(/[^a-z0-9]/g, '');
446
+ }
447
+ function countStars(path) {
448
+ var _a;
449
+ return ((_a = path.match(/\[\*\]/g)) !== null && _a !== void 0 ? _a : []).length;
450
+ }
451
+ function levenshtein(a, b) {
452
+ if (a === b)
453
+ return 0;
454
+ if (a.length === 0)
455
+ return b.length;
456
+ if (b.length === 0)
457
+ return a.length;
458
+ let prev = Array.from({ length: b.length + 1 }, (_, i) => i);
459
+ for (let i = 0; i < a.length; i++) {
460
+ const curr = [i + 1];
461
+ for (let j = 0; j < b.length; j++) {
462
+ curr.push(Math.min(prev[j + 1] + 1, curr[j] + 1, prev[j] + (a[i] === b[j] ? 0 : 1)));
463
+ }
464
+ prev = curr;
465
+ }
466
+ return prev[b.length];
467
+ }
468
+ function similarity(a, b) {
469
+ if (a === '' || b === '')
470
+ return 0;
471
+ if (a === b)
472
+ return 1;
473
+ const distance = levenshtein(a, b);
474
+ const ratio = 1 - distance / Math.max(a.length, b.length);
475
+ const contains = a.includes(b) || b.includes(a) ? 0.15 : 0;
476
+ return Math.min(1, ratio + contains);
477
+ }
478
+ const TYPE_TRANSFORM = {
479
+ string: 'none',
480
+ number: 'number',
481
+ boolean: 'boolean',
482
+ datetime: 'date',
483
+ };
484
+ function autoMap(sources, target, options) {
485
+ const matched = [];
486
+ const unmatched = [];
487
+ const rules = [];
488
+ const used = new Set();
489
+ const prep = (s) => (options.caseSensitive ? s : s.toLowerCase());
490
+ for (const field of target.fields) {
491
+ const targetStars = countStars(field.path);
492
+ const targetKey = options.caseSensitive ? field.name : normalize(field.name);
493
+ const targetTokens = field.path.replace(/\[\*\]/g, '').split('.').filter(Boolean).map((t) => (options.caseSensitive ? t : normalize(t)));
494
+ let best;
495
+ for (const source of sources) {
496
+ if (!options.reuseSources && used.has(source.path))
497
+ continue;
498
+ if (countStars(source.path) < targetStars)
499
+ continue;
500
+ const sourceKey = options.caseSensitive ? source.name : normalize(source.name);
501
+ let score = options.caseSensitive ? (sourceKey === targetKey ? 1 : similarity(prep(source.name), prep(field.name))) : similarity(sourceKey, targetKey);
502
+ const sourceTokens = source.path.replace(/\[\*\]/g, '').split('.').filter(Boolean).map((t) => (options.caseSensitive ? t : normalize(t)));
503
+ if (targetTokens.length > 1 && sourceTokens.length > 1) {
504
+ const tParent = targetTokens[targetTokens.length - 2];
505
+ const sParent = sourceTokens[sourceTokens.length - 2];
506
+ if (tParent === sParent)
507
+ score = Math.min(1, score + 0.1);
508
+ }
509
+ if (options.strategy === 'exact' && score < 1)
510
+ continue;
511
+ if (!best || score > best.score)
512
+ best = { source, score };
513
+ }
514
+ if (best && best.score >= options.threshold) {
515
+ used.add(best.source.path);
516
+ matched.push({ target: field.path, source: best.source.path, confidence: Math.round(best.score * 100) / 100 });
517
+ rules.push({ source: best.source.path, target: field.path, transform: TYPE_TRANSFORM[field.type] });
518
+ }
519
+ else {
520
+ unmatched.push(field.path);
521
+ if (options.unmatched === 'null')
522
+ rules.push({ source: '\u0000__never__', target: field.path, ifMissing: 'null' });
523
+ }
524
+ }
525
+ return { rules, matched, unmatched };
526
+ }
527
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../nodes/DataMapper/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface XmlElement {
2
+ type: 'element';
3
+ name: string;
4
+ attributes: Record<string, string>;
5
+ children: XmlNode[];
6
+ }
7
+ export type XmlNode = XmlElement | {
8
+ type: 'text';
9
+ value: string;
10
+ cdata: boolean;
11
+ } | {
12
+ type: 'comment';
13
+ value: string;
14
+ };
15
+ export interface XmlDocument {
16
+ declaration?: string;
17
+ root: XmlElement;
18
+ }
19
+ export interface XmlToJsonOptions {
20
+ attributes: 'group' | 'merge' | 'ignore';
21
+ attributeKey: string;
22
+ textKey: string;
23
+ includeRoot: boolean;
24
+ alwaysArray: boolean;
25
+ trim: boolean;
26
+ }
27
+ export declare class XmlParseError extends Error {
28
+ }
29
+ export declare function parseXml(input: string): XmlDocument;
30
+ export declare function xmlToJson(document: XmlDocument, options: XmlToJsonOptions): Record<string, unknown>;
31
+ export declare function formatXml(document: XmlDocument, indent?: string): string;
32
+ export interface JsonToXmlOptions {
33
+ rootName?: string;
34
+ declaration: boolean;
35
+ attributeKey: string;
36
+ textKey: string;
37
+ }
38
+ export declare function jsonToXml(data: Record<string, unknown>, options: JsonToXmlOptions): string;