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.
@@ -0,0 +1,451 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MappingError = void 0;
4
+ exports.parsePath = parsePath;
5
+ exports.resolvePath = resolvePath;
6
+ exports.applyMappings = applyMappings;
7
+ exports.applyTransform = applyTransform;
8
+ exports.parseLookupTable = parseLookupTable;
9
+ exports.parseDate = parseDate;
10
+ exports.formatDate = formatDate;
11
+ exports.parseDefinition = parseDefinition;
12
+ class MappingError extends Error {
13
+ }
14
+ exports.MappingError = MappingError;
15
+ const WILDCARD = '*';
16
+ const pathCache = new Map();
17
+ function parsePath(path) {
18
+ const cached = pathCache.get(path);
19
+ if (cached)
20
+ return cached;
21
+ const tokens = [];
22
+ const trimmed = path.trim();
23
+ if (trimmed !== '' && trimmed !== '.') {
24
+ let i = 0;
25
+ let key = '';
26
+ const pushKey = () => {
27
+ if (key !== '')
28
+ tokens.push(key);
29
+ key = '';
30
+ };
31
+ while (i < trimmed.length) {
32
+ const ch = trimmed[i];
33
+ if (ch === '.') {
34
+ pushKey();
35
+ i++;
36
+ }
37
+ else if (ch === '[') {
38
+ pushKey();
39
+ const close = trimmed.indexOf(']', i);
40
+ if (close === -1)
41
+ throw new MappingError(`Missing "]" in path "${path}"`);
42
+ const inner = trimmed.slice(i + 1, close).trim();
43
+ if (inner === WILDCARD)
44
+ tokens.push(WILDCARD);
45
+ else if (/^\d+$/.test(inner))
46
+ tokens.push(Number(inner));
47
+ else if (/^(["']).*\1$/.test(inner))
48
+ tokens.push(inner.slice(1, -1));
49
+ else
50
+ throw new MappingError(`Invalid index "[${inner}]" in path "${path}". Use [0], [*] or ["key"].`);
51
+ i = close + 1;
52
+ }
53
+ else {
54
+ key += ch;
55
+ i++;
56
+ }
57
+ }
58
+ pushKey();
59
+ }
60
+ pathCache.set(path, tokens);
61
+ return tokens;
62
+ }
63
+ function nthWildcardPosition(tokens, n) {
64
+ if (n === 0)
65
+ return -1;
66
+ let seen = 0;
67
+ return tokens.findIndex((t) => t === WILDCARD && ++seen === n);
68
+ }
69
+ function countWildcards(tokens) {
70
+ return tokens.filter((t) => t === WILDCARD).length;
71
+ }
72
+ function resolvePath(root, tokens) {
73
+ const results = [];
74
+ const walk = (current, depth, indices) => {
75
+ if (depth === tokens.length) {
76
+ results.push({ indices, value: current });
77
+ return;
78
+ }
79
+ const token = tokens[depth];
80
+ if (token === WILDCARD) {
81
+ if (current === undefined || current === null)
82
+ return;
83
+ const list = Array.isArray(current) ? current : [current];
84
+ list.forEach((entry, index) => walk(entry, depth + 1, [...indices, index]));
85
+ return;
86
+ }
87
+ if (current === null || typeof current !== 'object') {
88
+ walk(undefined, depth + 1, indices);
89
+ return;
90
+ }
91
+ if (typeof token === 'number' && !Array.isArray(current)) {
92
+ walk(token === 0 ? current : undefined, depth + 1, indices);
93
+ return;
94
+ }
95
+ walk(current[token], depth + 1, indices);
96
+ };
97
+ walk(root, 0, []);
98
+ return results;
99
+ }
100
+ function isContainer(value) {
101
+ return value !== null && typeof value === 'object';
102
+ }
103
+ function setAt(root, tokens, indices, value, target) {
104
+ if (tokens.length === 0) {
105
+ if (!isContainer(value) || Array.isArray(value)) {
106
+ throw new MappingError(`Target "${target}" refers to the whole output, so the value must be an object`);
107
+ }
108
+ Object.assign(root, value);
109
+ return;
110
+ }
111
+ let current = root;
112
+ let wildcard = 0;
113
+ tokens.forEach((token, depth) => {
114
+ const key = token === WILDCARD ? indices[wildcard++] : token;
115
+ if (depth === tokens.length - 1) {
116
+ current[key] = value;
117
+ return;
118
+ }
119
+ const next = tokens[depth + 1];
120
+ const wantArray = typeof next === 'number' || next === WILDCARD;
121
+ if (!isContainer(current[key]))
122
+ current[key] = wantArray ? [] : {};
123
+ current = current[key];
124
+ });
125
+ }
126
+ function broadcast(root, tokens, value, target) {
127
+ const walk = (current, depth) => {
128
+ const token = tokens[depth];
129
+ const last = depth === tokens.length - 1;
130
+ if (token === WILDCARD) {
131
+ if (!Array.isArray(current))
132
+ return;
133
+ current.forEach((entry, index) => {
134
+ if (last)
135
+ current[index] = value;
136
+ else if (isContainer(entry))
137
+ walk(entry, depth + 1);
138
+ });
139
+ return;
140
+ }
141
+ if (last) {
142
+ current[token] = value;
143
+ return;
144
+ }
145
+ const next = tokens[depth + 1];
146
+ if (!isContainer(current[token])) {
147
+ if (next === WILDCARD)
148
+ return;
149
+ current[token] = typeof next === 'number' ? [] : {};
150
+ }
151
+ walk(current[token], depth + 1);
152
+ };
153
+ if (tokens.length === 0)
154
+ throw new MappingError(`Target "${target}" must not be empty`);
155
+ walk(root, 0);
156
+ }
157
+ const isMissing = (value) => value === undefined;
158
+ function applyMappings(input, rules, output = {}) {
159
+ rules.forEach((rule, ruleIndex) => {
160
+ let failure;
161
+ try {
162
+ applyRule(input, rule, output);
163
+ }
164
+ catch (error) {
165
+ failure = error;
166
+ }
167
+ if (failure instanceof MappingError) {
168
+ const label = `Mapping ${ruleIndex + 1}${rule.target ? ` (→ ${rule.target})` : ''}`;
169
+ throw new MappingError(`${label}: ${failure.message}`);
170
+ }
171
+ if (failure)
172
+ throw failure;
173
+ });
174
+ return output;
175
+ }
176
+ function applyRule(input, rule, output) {
177
+ var _a, _b;
178
+ if (typeof rule.target !== 'string')
179
+ throw new MappingError('"target" is required');
180
+ const targetTokens = parsePath(rule.target);
181
+ const targetWildcards = countWildcards(targetTokens);
182
+ if (rule.value !== undefined) {
183
+ const value = finalize(rule.value, rule);
184
+ if (value === SKIP)
185
+ return;
186
+ if (targetWildcards > 0)
187
+ broadcast(output, targetTokens, value, rule.target);
188
+ else
189
+ setAt(output, targetTokens, [], value, rule.target);
190
+ return;
191
+ }
192
+ const sourceTokens = parsePath((_a = rule.source) !== null && _a !== void 0 ? _a : '');
193
+ const sourceWildcards = countWildcards(sourceTokens);
194
+ if (targetWildcards > sourceWildcards) {
195
+ throw new MappingError(`Target has ${targetWildcards} [*] but source "${(_b = rule.source) !== null && _b !== void 0 ? _b : ''}" has ${sourceWildcards}. Each [*] in the target needs a matching [*] in the source.`);
196
+ }
197
+ const resolved = resolvePath(input, sourceTokens);
198
+ if (targetWildcards === sourceWildcards) {
199
+ if (resolved.length === 0 && sourceWildcards === 0)
200
+ resolved.push({ indices: [], value: undefined });
201
+ for (const { indices, value } of resolved) {
202
+ const final = finalize(value, rule);
203
+ if (final !== SKIP)
204
+ setAt(output, targetTokens, indices, final, rule.target);
205
+ }
206
+ return;
207
+ }
208
+ const groups = new Map();
209
+ const parentTokens = sourceTokens.slice(0, nthWildcardPosition(sourceTokens, targetWildcards) + 1);
210
+ for (const { indices } of resolvePath(input, parentTokens)) {
211
+ groups.set(indices.join(','), { indices, values: [] });
212
+ }
213
+ const perValueRule = rule.transform === 'join' ? { ...rule, transform: 'none' } : rule;
214
+ for (const { indices, value } of resolved) {
215
+ const keep = indices.slice(0, targetWildcards);
216
+ const key = keep.join(',');
217
+ if (!groups.has(key))
218
+ groups.set(key, { indices: keep, values: [] });
219
+ const final = finalize(value, perValueRule);
220
+ if (final !== SKIP)
221
+ groups.get(key).values.push(final);
222
+ }
223
+ for (const { indices, values } of groups.values()) {
224
+ const result = rule.transform === 'join' ? applyTransform(values, rule) : values;
225
+ setAt(output, targetTokens, indices, result, rule.target);
226
+ }
227
+ }
228
+ const SKIP = Symbol('skip');
229
+ function finalize(raw, rule) {
230
+ var _a, _b;
231
+ let value = raw;
232
+ if (isMissing(value)) {
233
+ switch ((_a = rule.ifMissing) !== null && _a !== void 0 ? _a : 'skip') {
234
+ case 'skip':
235
+ return SKIP;
236
+ case 'null':
237
+ return null;
238
+ case 'default':
239
+ return rule.default;
240
+ case 'error':
241
+ throw new MappingError(`Source "${(_b = rule.source) !== null && _b !== void 0 ? _b : ''}" was not found in the input`);
242
+ }
243
+ }
244
+ value = applyTransform(value, rule);
245
+ return value;
246
+ }
247
+ const TRUE_WORDS = new Set(['true', '1', 'yes', 'y', 'on']);
248
+ const FALSE_WORDS = new Set(['false', '0', 'no', 'n', 'off', '']);
249
+ function applyTransform(value, rule) {
250
+ var _a, _b, _c, _d;
251
+ const transform = (_a = rule.transform) !== null && _a !== void 0 ? _a : 'none';
252
+ if (value === null && transform !== 'lookup' && transform !== 'string')
253
+ return null;
254
+ switch (transform) {
255
+ case 'none':
256
+ return value;
257
+ case 'string':
258
+ if (value === null)
259
+ return '';
260
+ return typeof value === 'object' ? JSON.stringify(value) : String(value);
261
+ case 'number':
262
+ case 'integer':
263
+ case 'round': {
264
+ const num = toNumber(value);
265
+ if (transform === 'integer')
266
+ return Math.trunc(num);
267
+ if (transform === 'round') {
268
+ const factor = 10 ** ((_b = rule.decimals) !== null && _b !== void 0 ? _b : 0);
269
+ return Math.round((num + Number.EPSILON) * factor) / factor;
270
+ }
271
+ return num;
272
+ }
273
+ case 'boolean': {
274
+ if (typeof value === 'boolean')
275
+ return value;
276
+ const word = String(value).trim().toLowerCase();
277
+ if (TRUE_WORDS.has(word))
278
+ return true;
279
+ if (FALSE_WORDS.has(word))
280
+ return false;
281
+ throw new MappingError(`Cannot convert "${String(value)}" to a boolean`);
282
+ }
283
+ case 'trim':
284
+ return mapStrings(value, (s) => s.trim());
285
+ case 'uppercase':
286
+ return mapStrings(value, (s) => s.toUpperCase());
287
+ case 'lowercase':
288
+ return mapStrings(value, (s) => s.toLowerCase());
289
+ case 'date':
290
+ return formatDate(parseDate(value, rule.dateInputFormat), rule.dateOutputFormat);
291
+ case 'split':
292
+ if (Array.isArray(value))
293
+ return value;
294
+ return String(value)
295
+ .split((_c = rule.separator) !== null && _c !== void 0 ? _c : ',')
296
+ .map((s) => s.trim())
297
+ .filter((s) => s !== '');
298
+ case 'join':
299
+ return (Array.isArray(value) ? value : [value]).map((v) => String(v)).join((_d = rule.separator) !== null && _d !== void 0 ? _d : ',');
300
+ case 'lookup':
301
+ return lookup(value, rule);
302
+ default:
303
+ throw new MappingError(`Unknown transform "${String(transform)}"`);
304
+ }
305
+ }
306
+ function toNumber(value) {
307
+ if (typeof value === 'number')
308
+ return value;
309
+ const text = String(value).trim();
310
+ const num = text === '' ? NaN : Number(text);
311
+ if (Number.isNaN(num))
312
+ throw new MappingError(`Cannot convert "${String(value)}" to a number`);
313
+ return num;
314
+ }
315
+ function mapStrings(value, fn) {
316
+ if (Array.isArray(value))
317
+ return value.map((v) => (typeof v === 'string' ? fn(v) : v));
318
+ return typeof value === 'string' ? fn(value) : value;
319
+ }
320
+ function parseLookupTable(table) {
321
+ if (table === undefined || table === null)
322
+ return {};
323
+ if (typeof table === 'object')
324
+ return table;
325
+ const trimmed = table.trim();
326
+ if (trimmed.startsWith('{')) {
327
+ const parsed = tryParseJson(trimmed);
328
+ if (parsed.error)
329
+ throw new MappingError('Lookup table looks like JSON but could not be parsed');
330
+ return parsed.value;
331
+ }
332
+ const result = {};
333
+ for (const line of trimmed.split(/\r?\n/)) {
334
+ if (line.trim() === '')
335
+ continue;
336
+ const eq = line.indexOf('=');
337
+ if (eq === -1)
338
+ throw new MappingError(`Lookup table line "${line}" must look like key=value`);
339
+ result[line.slice(0, eq).trim()] = line.slice(eq + 1).trim();
340
+ }
341
+ return result;
342
+ }
343
+ function lookup(value, rule) {
344
+ var _a;
345
+ const table = parseLookupTable(rule.lookup);
346
+ const key = value === null || value === undefined ? '' : String(value);
347
+ if (Object.prototype.hasOwnProperty.call(table, key))
348
+ return table[key];
349
+ switch ((_a = rule.lookupFallback) !== null && _a !== void 0 ? _a : 'keep') {
350
+ case 'keep':
351
+ return value;
352
+ case 'default':
353
+ return rule.lookupDefault;
354
+ case 'null':
355
+ return null;
356
+ case 'error':
357
+ throw new MappingError(`No lookup entry for "${key}"`);
358
+ }
359
+ }
360
+ const DATE_TOKENS = /yyyy|SSS|MM|dd|HH|mm|ss/g;
361
+ function parseDate(value, inputFormat) {
362
+ if (value instanceof Date)
363
+ return value;
364
+ if (typeof value === 'number')
365
+ return new Date(value);
366
+ const text = String(value).trim();
367
+ if (inputFormat) {
368
+ const fields = [];
369
+ const pattern = inputFormat.replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(DATE_TOKENS, (token) => {
370
+ fields.push(token);
371
+ return `(\\d{${token.length}})`;
372
+ });
373
+ const match = new RegExp(`^${pattern}$`).exec(text);
374
+ if (!match)
375
+ throw new MappingError(`Date "${text}" does not match format "${inputFormat}"`);
376
+ const parts = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, SSS: 0 };
377
+ fields.forEach((token, i) => (parts[token] = Number(match[i + 1])));
378
+ return new Date(Date.UTC(parts.yyyy, parts.MM - 1, parts.dd, parts.HH, parts.mm, parts.ss, parts.SSS));
379
+ }
380
+ const date = /^\d+$/.test(text) ? new Date(Number(text)) : new Date(text);
381
+ if (Number.isNaN(date.getTime())) {
382
+ throw new MappingError(`Cannot read "${text}" as a date. Set an input date format such as yyyyMMdd.`);
383
+ }
384
+ return date;
385
+ }
386
+ function formatDate(date, outputFormat) {
387
+ if (!outputFormat)
388
+ return date.toISOString();
389
+ const pad = (n, width = 2) => String(n).padStart(width, '0');
390
+ const parts = {
391
+ yyyy: String(date.getUTCFullYear()),
392
+ MM: pad(date.getUTCMonth() + 1),
393
+ dd: pad(date.getUTCDate()),
394
+ HH: pad(date.getUTCHours()),
395
+ mm: pad(date.getUTCMinutes()),
396
+ ss: pad(date.getUTCSeconds()),
397
+ SSS: pad(date.getUTCMilliseconds(), 3),
398
+ };
399
+ return outputFormat.replace(DATE_TOKENS, (token) => parts[token]);
400
+ }
401
+ const RULE_KEYS = new Set([
402
+ 'source',
403
+ 'value',
404
+ 'target',
405
+ 'transform',
406
+ 'ifMissing',
407
+ 'default',
408
+ 'separator',
409
+ 'decimals',
410
+ 'dateInputFormat',
411
+ 'dateOutputFormat',
412
+ 'lookup',
413
+ 'lookupFallback',
414
+ 'lookupDefault',
415
+ ]);
416
+ function parseDefinition(definition) {
417
+ let parsed = definition;
418
+ if (typeof parsed === 'string') {
419
+ const result = tryParseJson(parsed);
420
+ if (result.error)
421
+ throw new MappingError(`Mapping definition is not valid JSON: ${result.error}`);
422
+ parsed = result.value;
423
+ }
424
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed) && 'mappings' in parsed) {
425
+ parsed = parsed.mappings;
426
+ }
427
+ if (!Array.isArray(parsed)) {
428
+ throw new MappingError('Mapping definition must be an array of mappings or an object with a "mappings" array');
429
+ }
430
+ return parsed.map((rule, i) => {
431
+ if (!rule || typeof rule !== 'object' || Array.isArray(rule)) {
432
+ throw new MappingError(`Mapping ${i + 1} must be an object`);
433
+ }
434
+ const unknownKey = Object.keys(rule).find((k) => !RULE_KEYS.has(k));
435
+ if (unknownKey)
436
+ throw new MappingError(`Mapping ${i + 1} has an unknown property "${unknownKey}"`);
437
+ if (typeof rule.target !== 'string') {
438
+ throw new MappingError(`Mapping ${i + 1} needs a "target" path`);
439
+ }
440
+ return rule;
441
+ });
442
+ }
443
+ function tryParseJson(text) {
444
+ try {
445
+ return { value: JSON.parse(text) };
446
+ }
447
+ catch (error) {
448
+ return { error: error.message };
449
+ }
450
+ }
451
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../../nodes/DataMapper/mapping.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;