n8n-nodes-data-mapper 0.0.0-stage → 0.1.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.
- package/LICENSE +21 -0
- package/README.md +250 -2
- package/dist/nodes/DataMapper/DataMapper.node.d.ts +5 -0
- package/dist/nodes/DataMapper/DataMapper.node.js +450 -0
- package/dist/nodes/DataMapper/DataMapper.node.js.map +1 -0
- package/dist/nodes/DataMapper/DataMapper.node.json +14 -0
- package/dist/nodes/DataMapper/mapper.dark.svg +1 -0
- package/dist/nodes/DataMapper/mapper.svg +1 -0
- package/dist/nodes/DataMapper/mapping.d.ts +34 -0
- package/dist/nodes/DataMapper/mapping.js +451 -0
- package/dist/nodes/DataMapper/mapping.js.map +1 -0
- package/dist/nodes/DataMapper/xml.d.ts +38 -0
- package/dist/nodes/DataMapper/xml.js +316 -0
- package/dist/nodes/DataMapper/xml.js.map +1 -0
- package/dist/package.json +62 -0
- package/package.json +60 -4
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataMapper = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const mapping_1 = require("./mapping");
|
|
6
|
+
const xml_1 = require("./xml");
|
|
7
|
+
const show = (values) => ({ show: values });
|
|
8
|
+
const mappingFields = [
|
|
9
|
+
{
|
|
10
|
+
displayName: 'Source',
|
|
11
|
+
name: 'sourceType',
|
|
12
|
+
type: 'options',
|
|
13
|
+
options: [
|
|
14
|
+
{ name: 'Input Field', value: 'field', description: 'Read a value from the input by path' },
|
|
15
|
+
{ name: 'Fixed Value', value: 'value', description: 'Write a fixed value or the result of an expression' },
|
|
16
|
+
],
|
|
17
|
+
default: 'field',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
displayName: 'Source Path',
|
|
21
|
+
name: 'source',
|
|
22
|
+
type: 'string',
|
|
23
|
+
default: '',
|
|
24
|
+
placeholder: 'customer.addresses[*].city',
|
|
25
|
+
description: 'Dot path into the input. Use [0] for one array element, [*] for every element, or leave empty for the whole input.',
|
|
26
|
+
displayOptions: show({ sourceType: ['field'] }),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
displayName: 'Value',
|
|
30
|
+
name: 'value',
|
|
31
|
+
type: 'string',
|
|
32
|
+
default: '',
|
|
33
|
+
description: 'Fixed text, or an expression such as {{ $now.toISO() }}',
|
|
34
|
+
displayOptions: show({ sourceType: ['value'] }),
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
displayName: 'Target Path',
|
|
38
|
+
name: 'target',
|
|
39
|
+
type: 'string',
|
|
40
|
+
default: '',
|
|
41
|
+
required: true,
|
|
42
|
+
placeholder: 'shipping.cities[*]',
|
|
43
|
+
description: 'Where to write the value in the output. Each [*] matches a [*] in the source path, in order.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
displayName: 'Transform',
|
|
47
|
+
name: 'transform',
|
|
48
|
+
type: 'options',
|
|
49
|
+
options: [
|
|
50
|
+
{ name: 'None', value: 'none' },
|
|
51
|
+
{ name: 'To String', value: 'string' },
|
|
52
|
+
{ name: 'To Number', value: 'number' },
|
|
53
|
+
{ name: 'To Integer', value: 'integer' },
|
|
54
|
+
{ name: 'Round', value: 'round', description: 'Round a number to a number of decimal places' },
|
|
55
|
+
{ name: 'To Boolean', value: 'boolean', description: 'Accepts true/false, yes/no, 1/0, on/off' },
|
|
56
|
+
{ name: 'Trim', value: 'trim' },
|
|
57
|
+
{ name: 'Uppercase', value: 'uppercase' },
|
|
58
|
+
{ name: 'Lowercase', value: 'lowercase' },
|
|
59
|
+
{ name: 'Format Date', value: 'date', description: 'Read a date and write it in another format (UTC)' },
|
|
60
|
+
{ name: 'Split Into List', value: 'split', description: 'Turn "a,b,c" into ["a", "b", "c"]' },
|
|
61
|
+
{ name: 'Join List', value: 'join', description: 'Turn ["a", "b", "c"] into "a,b,c"' },
|
|
62
|
+
{ name: 'Lookup Table', value: 'lookup', description: 'Replace codes using a key=value table' },
|
|
63
|
+
],
|
|
64
|
+
default: 'none',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
displayName: 'Separator',
|
|
68
|
+
name: 'separator',
|
|
69
|
+
type: 'string',
|
|
70
|
+
default: ',',
|
|
71
|
+
displayOptions: show({ transform: ['split', 'join'] }),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
displayName: 'Decimal Places',
|
|
75
|
+
name: 'decimals',
|
|
76
|
+
type: 'number',
|
|
77
|
+
typeOptions: { minValue: 0, maxValue: 15 },
|
|
78
|
+
default: 2,
|
|
79
|
+
displayOptions: show({ transform: ['round'] }),
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
displayName: 'Input Date Format',
|
|
83
|
+
name: 'dateInputFormat',
|
|
84
|
+
type: 'string',
|
|
85
|
+
default: '',
|
|
86
|
+
placeholder: 'yyyyMMdd',
|
|
87
|
+
description: 'Leave empty for ISO 8601 or Unix milliseconds. Tokens: yyyy, MM, dd, HH, mm, ss, SSS.',
|
|
88
|
+
displayOptions: show({ transform: ['date'] }),
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
displayName: 'Output Date Format',
|
|
92
|
+
name: 'dateOutputFormat',
|
|
93
|
+
type: 'string',
|
|
94
|
+
default: '',
|
|
95
|
+
placeholder: 'dd/MM/yyyy',
|
|
96
|
+
description: 'Leave empty for ISO 8601. Tokens: yyyy, MM, dd, HH, mm, ss, SSS.',
|
|
97
|
+
displayOptions: show({ transform: ['date'] }),
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
displayName: 'Lookup Table',
|
|
101
|
+
name: 'lookupTable',
|
|
102
|
+
type: 'string',
|
|
103
|
+
typeOptions: { rows: 4 },
|
|
104
|
+
default: '',
|
|
105
|
+
placeholder: 'NL=Netherlands\nDE=Germany',
|
|
106
|
+
description: 'One key=value per line, or a JSON object',
|
|
107
|
+
displayOptions: show({ transform: ['lookup'] }),
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
displayName: 'If No Match',
|
|
111
|
+
name: 'lookupFallback',
|
|
112
|
+
type: 'options',
|
|
113
|
+
options: [
|
|
114
|
+
{ name: 'Keep Original Value', value: 'keep' },
|
|
115
|
+
{ name: 'Use Default', value: 'default' },
|
|
116
|
+
{ name: 'Set to Null', value: 'null' },
|
|
117
|
+
{ name: 'Stop With Error', value: 'error' },
|
|
118
|
+
],
|
|
119
|
+
default: 'keep',
|
|
120
|
+
displayOptions: show({ transform: ['lookup'] }),
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
displayName: 'Lookup Default',
|
|
124
|
+
name: 'lookupDefault',
|
|
125
|
+
type: 'string',
|
|
126
|
+
default: '',
|
|
127
|
+
displayOptions: show({ transform: ['lookup'], lookupFallback: ['default'] }),
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
displayName: 'If Source Is Missing',
|
|
131
|
+
name: 'ifMissing',
|
|
132
|
+
type: 'options',
|
|
133
|
+
options: [
|
|
134
|
+
{ name: 'Leave Out', value: 'skip' },
|
|
135
|
+
{ name: 'Set to Null', value: 'null' },
|
|
136
|
+
{ name: 'Use Default', value: 'default' },
|
|
137
|
+
{ name: 'Stop With Error', value: 'error' },
|
|
138
|
+
],
|
|
139
|
+
default: 'skip',
|
|
140
|
+
displayOptions: show({ sourceType: ['field'] }),
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
displayName: 'Default Value',
|
|
144
|
+
name: 'defaultValue',
|
|
145
|
+
type: 'string',
|
|
146
|
+
default: '',
|
|
147
|
+
displayOptions: show({ sourceType: ['field'], ifMissing: ['default'] }),
|
|
148
|
+
},
|
|
149
|
+
];
|
|
150
|
+
const exampleDefinition = JSON.stringify([
|
|
151
|
+
{ source: 'id', target: 'orderId' },
|
|
152
|
+
{ source: 'customer.name', target: 'buyer.name', transform: 'trim' },
|
|
153
|
+
{ source: 'items[*].sku', target: 'lines[*].productCode' },
|
|
154
|
+
{ source: 'items[*].qty', target: 'lines[*].quantity', transform: 'integer' },
|
|
155
|
+
{ value: 'EUR', target: 'lines[*].currency' },
|
|
156
|
+
], null, 2);
|
|
157
|
+
class DataMapper {
|
|
158
|
+
constructor() {
|
|
159
|
+
this.description = {
|
|
160
|
+
displayName: 'Data Mapper',
|
|
161
|
+
name: 'dataMapper',
|
|
162
|
+
icon: { light: 'file:mapper.svg', dark: 'file:mapper.dark.svg' },
|
|
163
|
+
group: ['transform'],
|
|
164
|
+
version: 1,
|
|
165
|
+
subtitle: '={{ $parameter["definitionMode"] === "json" ? "JSON definition" : "Field mappings" }}',
|
|
166
|
+
description: 'Map and transform data from one structure to another, between JSON and XML',
|
|
167
|
+
defaults: {
|
|
168
|
+
name: 'Data Mapper',
|
|
169
|
+
},
|
|
170
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
171
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
172
|
+
usableAsTool: true,
|
|
173
|
+
properties: [
|
|
174
|
+
{
|
|
175
|
+
displayName: 'Input',
|
|
176
|
+
name: 'inputSource',
|
|
177
|
+
type: 'options',
|
|
178
|
+
noDataExpression: true,
|
|
179
|
+
options: [
|
|
180
|
+
{ name: 'Item JSON', value: 'json', description: 'Map the fields of each incoming item' },
|
|
181
|
+
{
|
|
182
|
+
name: 'Text Field',
|
|
183
|
+
value: 'field',
|
|
184
|
+
description: 'Parse JSON or XML text stored in a field first',
|
|
185
|
+
},
|
|
186
|
+
{ name: 'File', value: 'binary', description: 'Parse a JSON or XML file first' },
|
|
187
|
+
],
|
|
188
|
+
default: 'json',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
displayName: 'Input Field',
|
|
192
|
+
name: 'inputField',
|
|
193
|
+
type: 'string',
|
|
194
|
+
default: 'data',
|
|
195
|
+
required: true,
|
|
196
|
+
displayOptions: show({ inputSource: ['field'] }),
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
displayName: 'Input Binary Field',
|
|
200
|
+
name: 'inputBinaryField',
|
|
201
|
+
type: 'string',
|
|
202
|
+
default: 'data',
|
|
203
|
+
required: true,
|
|
204
|
+
displayOptions: show({ inputSource: ['binary'] }),
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
displayName: 'Input Format',
|
|
208
|
+
name: 'inputFormat',
|
|
209
|
+
type: 'options',
|
|
210
|
+
options: [
|
|
211
|
+
{ name: 'Detect Automatically', value: 'auto' },
|
|
212
|
+
{ name: 'JSON', value: 'json' },
|
|
213
|
+
{ name: 'XML', value: 'xml' },
|
|
214
|
+
],
|
|
215
|
+
default: 'auto',
|
|
216
|
+
description: 'XML is read with attributes under "$" and text under "_", so a path looks like order.$.ID or order.total._',
|
|
217
|
+
displayOptions: show({ inputSource: ['field', 'binary'] }),
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
displayName: 'Define Mappings',
|
|
221
|
+
name: 'definitionMode',
|
|
222
|
+
type: 'options',
|
|
223
|
+
noDataExpression: true,
|
|
224
|
+
options: [
|
|
225
|
+
{ name: 'Using Fields Below', value: 'fields' },
|
|
226
|
+
{
|
|
227
|
+
name: 'Using JSON',
|
|
228
|
+
value: 'json',
|
|
229
|
+
description: 'Paste or reference a mapping definition, so one mapping can be reused across workflows',
|
|
230
|
+
},
|
|
231
|
+
],
|
|
232
|
+
default: 'fields',
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
displayName: 'Mappings',
|
|
236
|
+
name: 'mappings',
|
|
237
|
+
placeholder: 'Add Mapping',
|
|
238
|
+
type: 'fixedCollection',
|
|
239
|
+
typeOptions: { multipleValues: true, sortable: true },
|
|
240
|
+
default: {},
|
|
241
|
+
description: 'Applied in order; a later mapping to the same target overwrites an earlier one',
|
|
242
|
+
displayOptions: show({ definitionMode: ['fields'] }),
|
|
243
|
+
options: [{ displayName: 'Mapping', name: 'mapping', values: mappingFields }],
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
displayName: 'Mapping Definition',
|
|
247
|
+
name: 'mappingJson',
|
|
248
|
+
type: 'json',
|
|
249
|
+
default: exampleDefinition,
|
|
250
|
+
description: 'An array of mappings, or { "mappings": [...] }. Each mapping has "target" and either "source" or "value", plus optional "transform", "ifMissing", "default", "separator", "decimals", "dateInputFormat", "dateOutputFormat", "lookup", "lookupFallback" and "lookupDefault".',
|
|
251
|
+
displayOptions: show({ definitionMode: ['json'] }),
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
displayName: 'Unmapped Fields',
|
|
255
|
+
name: 'unmapped',
|
|
256
|
+
type: 'options',
|
|
257
|
+
options: [
|
|
258
|
+
{ name: 'Drop', value: 'drop', description: 'Output only the mapped fields' },
|
|
259
|
+
{
|
|
260
|
+
name: 'Keep',
|
|
261
|
+
value: 'keep',
|
|
262
|
+
description: 'Start from a copy of the input and apply the mappings on top',
|
|
263
|
+
},
|
|
264
|
+
],
|
|
265
|
+
default: 'drop',
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
displayName: 'Output Format',
|
|
269
|
+
name: 'outputFormat',
|
|
270
|
+
type: 'options',
|
|
271
|
+
noDataExpression: true,
|
|
272
|
+
options: [
|
|
273
|
+
{ name: 'JSON', value: 'json', description: 'Output the mapped data as the item' },
|
|
274
|
+
{ name: 'JSON File', value: 'jsonFile', description: 'Output the mapped data as a JSON file' },
|
|
275
|
+
{ name: 'XML', value: 'xml', description: 'Output the mapped data as XML text in a field' },
|
|
276
|
+
{ name: 'XML File', value: 'xmlFile', description: 'Output the mapped data as an XML file' },
|
|
277
|
+
],
|
|
278
|
+
default: 'json',
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
displayName: 'Put Output in Field',
|
|
282
|
+
name: 'outputField',
|
|
283
|
+
type: 'string',
|
|
284
|
+
default: 'xml',
|
|
285
|
+
required: true,
|
|
286
|
+
displayOptions: show({ outputFormat: ['xml'] }),
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
displayName: 'Put Output File in Field',
|
|
290
|
+
name: 'outputBinaryField',
|
|
291
|
+
type: 'string',
|
|
292
|
+
default: 'data',
|
|
293
|
+
required: true,
|
|
294
|
+
displayOptions: show({ outputFormat: ['xmlFile', 'jsonFile'] }),
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
displayName: 'File Name',
|
|
298
|
+
name: 'fileName',
|
|
299
|
+
type: 'string',
|
|
300
|
+
default: '',
|
|
301
|
+
placeholder: 'output.xml',
|
|
302
|
+
description: 'Leave empty to name the file output with the matching extension',
|
|
303
|
+
displayOptions: show({ outputFormat: ['xmlFile', 'jsonFile'] }),
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
displayName: 'Root Element',
|
|
307
|
+
name: 'rootElement',
|
|
308
|
+
type: 'string',
|
|
309
|
+
default: '',
|
|
310
|
+
placeholder: 'order',
|
|
311
|
+
description: 'Name of the XML root element. Leave empty to use the single top-level field, or "root" when there are several.',
|
|
312
|
+
displayOptions: show({ outputFormat: ['xml', 'xmlFile'] }),
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
displayName: 'Include XML Declaration',
|
|
316
|
+
name: 'xmlDeclaration',
|
|
317
|
+
type: 'boolean',
|
|
318
|
+
default: true,
|
|
319
|
+
description: 'Whether to start the XML with <?xml version="1.0" encoding="UTF-8"?>',
|
|
320
|
+
displayOptions: show({ outputFormat: ['xml', 'xmlFile'] }),
|
|
321
|
+
},
|
|
322
|
+
],
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
async execute() {
|
|
326
|
+
const items = this.getInputData();
|
|
327
|
+
const returnData = [];
|
|
328
|
+
for (let i = 0; i < items.length; i++) {
|
|
329
|
+
try {
|
|
330
|
+
const input = await readInput(this, items[i], i);
|
|
331
|
+
const rules = readRules(this, i);
|
|
332
|
+
const unmapped = this.getNodeParameter('unmapped', i);
|
|
333
|
+
const start = unmapped === 'keep' && input && typeof input === 'object' && !Array.isArray(input)
|
|
334
|
+
? structuredClone(input)
|
|
335
|
+
: {};
|
|
336
|
+
const mapped = (0, mapping_1.applyMappings)(input, rules, start);
|
|
337
|
+
returnData.push(await writeOutput(this, mapped, i));
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
if (this.continueOnFail()) {
|
|
341
|
+
returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
throw error instanceof n8n_workflow_1.NodeOperationError
|
|
345
|
+
? error
|
|
346
|
+
: new n8n_workflow_1.NodeOperationError(this.getNode(), error.message, {
|
|
347
|
+
itemIndex: i,
|
|
348
|
+
description: error instanceof mapping_1.MappingError || error instanceof xml_1.XmlParseError
|
|
349
|
+
? undefined
|
|
350
|
+
: 'Unexpected error while mapping this item',
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return [returnData];
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
exports.DataMapper = DataMapper;
|
|
358
|
+
async function readInput(ctx, item, itemIndex) {
|
|
359
|
+
const source = ctx.getNodeParameter('inputSource', itemIndex);
|
|
360
|
+
if (source === 'json')
|
|
361
|
+
return item.json;
|
|
362
|
+
let text;
|
|
363
|
+
if (source === 'field') {
|
|
364
|
+
const field = ctx.getNodeParameter('inputField', itemIndex);
|
|
365
|
+
const value = item.json[field];
|
|
366
|
+
if (value === undefined) {
|
|
367
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), `Input field "${field}" does not exist`, { itemIndex });
|
|
368
|
+
}
|
|
369
|
+
if (typeof value === 'object')
|
|
370
|
+
return value;
|
|
371
|
+
text = String(value);
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
const field = ctx.getNodeParameter('inputBinaryField', itemIndex);
|
|
375
|
+
ctx.helpers.assertBinaryData(itemIndex, field);
|
|
376
|
+
text = (await ctx.helpers.getBinaryDataBuffer(itemIndex, field)).toString('utf8');
|
|
377
|
+
}
|
|
378
|
+
const format = ctx.getNodeParameter('inputFormat', itemIndex, 'auto');
|
|
379
|
+
const trimmed = text.replace(/^\uFEFF/, '').trim();
|
|
380
|
+
const isXml = format === 'xml' || (format === 'auto' && trimmed.startsWith('<'));
|
|
381
|
+
if (isXml) {
|
|
382
|
+
return (0, xml_1.xmlToJson)((0, xml_1.parseXml)(trimmed), {
|
|
383
|
+
attributes: 'group',
|
|
384
|
+
attributeKey: '$',
|
|
385
|
+
textKey: '_',
|
|
386
|
+
includeRoot: true,
|
|
387
|
+
alwaysArray: false,
|
|
388
|
+
trim: true,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
try {
|
|
392
|
+
return JSON.parse(trimmed);
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), 'The input is not valid JSON', {
|
|
396
|
+
itemIndex,
|
|
397
|
+
description: error.message,
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
function readRules(ctx, itemIndex) {
|
|
402
|
+
const mode = ctx.getNodeParameter('definitionMode', itemIndex);
|
|
403
|
+
if (mode === 'json')
|
|
404
|
+
return (0, mapping_1.parseDefinition)(ctx.getNodeParameter('mappingJson', itemIndex));
|
|
405
|
+
const entries = ctx.getNodeParameter('mappings.mapping', itemIndex, []);
|
|
406
|
+
return entries.map((m) => {
|
|
407
|
+
var _a, _b;
|
|
408
|
+
return ({
|
|
409
|
+
...(m.sourceType === 'value' ? { value: (_a = m.value) !== null && _a !== void 0 ? _a : '' } : { source: (_b = m.source) !== null && _b !== void 0 ? _b : '' }),
|
|
410
|
+
target: m.target,
|
|
411
|
+
transform: m.transform,
|
|
412
|
+
separator: m.separator,
|
|
413
|
+
decimals: m.decimals,
|
|
414
|
+
dateInputFormat: m.dateInputFormat,
|
|
415
|
+
dateOutputFormat: m.dateOutputFormat,
|
|
416
|
+
lookup: m.lookupTable,
|
|
417
|
+
lookupFallback: m.lookupFallback,
|
|
418
|
+
lookupDefault: m.lookupDefault,
|
|
419
|
+
ifMissing: m.ifMissing,
|
|
420
|
+
default: m.defaultValue,
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
async function writeOutput(ctx, mapped, itemIndex) {
|
|
425
|
+
const format = ctx.getNodeParameter('outputFormat', itemIndex);
|
|
426
|
+
const pairedItem = { item: itemIndex };
|
|
427
|
+
if (format === 'json')
|
|
428
|
+
return { json: mapped, pairedItem };
|
|
429
|
+
if (format === 'jsonFile') {
|
|
430
|
+
const field = ctx.getNodeParameter('outputBinaryField', itemIndex);
|
|
431
|
+
const fileName = ctx.getNodeParameter('fileName', itemIndex, '') || 'output.json';
|
|
432
|
+
const binary = await ctx.helpers.prepareBinaryData(Buffer.from(JSON.stringify(mapped, null, 2), 'utf8'), fileName, 'application/json');
|
|
433
|
+
return { json: {}, binary: { [field]: binary }, pairedItem };
|
|
434
|
+
}
|
|
435
|
+
const xml = (0, xml_1.jsonToXml)(mapped, {
|
|
436
|
+
rootName: ctx.getNodeParameter('rootElement', itemIndex, '') || undefined,
|
|
437
|
+
declaration: ctx.getNodeParameter('xmlDeclaration', itemIndex, true),
|
|
438
|
+
attributeKey: '$',
|
|
439
|
+
textKey: '_',
|
|
440
|
+
});
|
|
441
|
+
if (format === 'xml') {
|
|
442
|
+
const field = ctx.getNodeParameter('outputField', itemIndex);
|
|
443
|
+
return { json: { [field]: xml }, pairedItem };
|
|
444
|
+
}
|
|
445
|
+
const field = ctx.getNodeParameter('outputBinaryField', itemIndex);
|
|
446
|
+
const fileName = ctx.getNodeParameter('fileName', itemIndex, '') || 'output.xml';
|
|
447
|
+
const binary = await ctx.helpers.prepareBinaryData(Buffer.from(xml, 'utf8'), fileName, 'application/xml');
|
|
448
|
+
return { json: {}, binary: { [field]: binary }, pairedItem };
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=DataMapper.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataMapper.node.js","sourceRoot":"","sources":["../../../nodes/DataMapper/DataMapper.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-data-mapper.dataMapper",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Data & Storage"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"primaryDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://github.com/SilentJMA/n8n-nodes-data-mapper#readme"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"alias": ["map", "mapping", "transform", "restructure", "convert", "xml", "json", "etl", "schema"]
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><g fill="none" stroke="#b39dff" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="8" width="18" height="12" rx="3"/><rect x="4" y="26" width="18" height="12" rx="3"/><rect x="4" y="44" width="18" height="12" rx="3"/><rect x="42" y="17" width="18" height="12" rx="3"/><rect x="42" y="35" width="18" height="12" rx="3"/><path d="M22 14c10 0 10 9 20 9M22 32c10 0 10 9 20 9M22 50c10 0 10-9 20-9"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><g fill="none" stroke="#7c4dff" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="8" width="18" height="12" rx="3"/><rect x="4" y="26" width="18" height="12" rx="3"/><rect x="4" y="44" width="18" height="12" rx="3"/><rect x="42" y="17" width="18" height="12" rx="3"/><rect x="42" y="35" width="18" height="12" rx="3"/><path d="M22 14c10 0 10 9 20 9M22 32c10 0 10 9 20 9M22 50c10 0 10-9 20-9"/></g></svg>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type Transform = 'none' | 'string' | 'number' | 'integer' | 'boolean' | 'round' | 'trim' | 'uppercase' | 'lowercase' | 'date' | 'split' | 'join' | 'lookup';
|
|
2
|
+
export type IfMissing = 'skip' | 'null' | 'default' | 'error';
|
|
3
|
+
export type LookupFallback = 'keep' | 'default' | 'null' | 'error';
|
|
4
|
+
export interface MappingRule {
|
|
5
|
+
source?: string;
|
|
6
|
+
value?: unknown;
|
|
7
|
+
target: string;
|
|
8
|
+
transform?: Transform;
|
|
9
|
+
ifMissing?: IfMissing;
|
|
10
|
+
default?: unknown;
|
|
11
|
+
separator?: string;
|
|
12
|
+
decimals?: number;
|
|
13
|
+
dateInputFormat?: string;
|
|
14
|
+
dateOutputFormat?: string;
|
|
15
|
+
lookup?: Record<string, unknown> | string;
|
|
16
|
+
lookupFallback?: LookupFallback;
|
|
17
|
+
lookupDefault?: unknown;
|
|
18
|
+
}
|
|
19
|
+
export declare class MappingError extends Error {
|
|
20
|
+
}
|
|
21
|
+
type Token = string | number | '*';
|
|
22
|
+
export declare function parsePath(path: string): Token[];
|
|
23
|
+
interface Resolved {
|
|
24
|
+
indices: number[];
|
|
25
|
+
value: unknown;
|
|
26
|
+
}
|
|
27
|
+
export declare function resolvePath(root: unknown, tokens: Token[]): Resolved[];
|
|
28
|
+
export declare function applyMappings(input: unknown, rules: MappingRule[], output?: Record<string, unknown>): Record<string, unknown>;
|
|
29
|
+
export declare function applyTransform(value: unknown, rule: MappingRule): unknown;
|
|
30
|
+
export declare function parseLookupTable(table: Record<string, unknown> | string | undefined): Record<string, unknown>;
|
|
31
|
+
export declare function parseDate(value: unknown, inputFormat?: string): Date;
|
|
32
|
+
export declare function formatDate(date: Date, outputFormat?: string): string;
|
|
33
|
+
export declare function parseDefinition(definition: unknown): MappingRule[];
|
|
34
|
+
export {};
|