@tehw0lf/n8n-nodes-toon 1.0.1

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,523 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ToonDecoder = void 0;
37
+ const types_1 = require("./types");
38
+ const utils = __importStar(require("./ToonUtils"));
39
+ class ToonDecoder {
40
+ constructor(options) {
41
+ this.options = options;
42
+ }
43
+ decode(toonText) {
44
+ const lines = this.parseLines(toonText);
45
+ const nonEmptyLines = lines.filter((line) => !line.isEmpty);
46
+ if (nonEmptyLines.length === 0) {
47
+ return null;
48
+ }
49
+ const rootForm = this.determineRootForm(nonEmptyLines);
50
+ let result;
51
+ if (rootForm === 'array') {
52
+ result = this.parseArray(nonEmptyLines, 0);
53
+ }
54
+ else if (rootForm === 'primitive') {
55
+ const token = nonEmptyLines[0].content.trim();
56
+ result = this.parseTokenValue(token);
57
+ }
58
+ else {
59
+ result = this.parseObject(nonEmptyLines, 0, 0);
60
+ }
61
+ if (this.options.expandPaths === 'safe' && utils.isPlainObject(result)) {
62
+ result = this.expandPaths(result);
63
+ }
64
+ return result;
65
+ }
66
+ parseLines(text) {
67
+ const rawLines = text.split('\n');
68
+ const parsed = [];
69
+ for (let i = 0; i < rawLines.length; i++) {
70
+ const line = rawLines[i];
71
+ if (this.options.strict && /^\t/.test(line)) {
72
+ throw new types_1.ToonDecodingError('Tabs not allowed in indentation', {
73
+ lineNumber: i + 1,
74
+ line,
75
+ });
76
+ }
77
+ const match = line.match(/^( *)/);
78
+ const indent = match ? match[1].length : 0;
79
+ if (this.options.strict && indent > 0 && indent % this.options.indent !== 0) {
80
+ throw new types_1.ToonDecodingError(`Indentation must be multiple of ${this.options.indent}, got ${indent} spaces`, {
81
+ lineNumber: i + 1,
82
+ line,
83
+ });
84
+ }
85
+ parsed.push({
86
+ content: line,
87
+ indent,
88
+ lineNumber: i + 1,
89
+ isEmpty: line.trim() === '',
90
+ });
91
+ }
92
+ return parsed;
93
+ }
94
+ determineRootForm(lines) {
95
+ const firstLine = lines[0].content.trim();
96
+ if (/^\[\d+[\t|]?\]/.test(firstLine)) {
97
+ return 'array';
98
+ }
99
+ if (lines.length === 1 && !firstLine.includes(':')) {
100
+ return 'primitive';
101
+ }
102
+ return 'object';
103
+ }
104
+ parseArrayHeader(line) {
105
+ const content = line.content.trim();
106
+ const match = content.match(/^(.*?)\[(\d+)([\t|])?\](?:\{([^}]+)\})?:(.*)$/);
107
+ if (!match) {
108
+ throw new types_1.ToonDecodingError('Invalid array header format', {
109
+ lineNumber: line.lineNumber,
110
+ line: content,
111
+ });
112
+ }
113
+ const [, keyPart, lengthStr, delimSym, fieldsPart] = match;
114
+ let key = keyPart.trim();
115
+ if (key) {
116
+ if (key.startsWith('"') && key.endsWith('"')) {
117
+ key = utils.unescapeString(key.slice(1, -1));
118
+ }
119
+ }
120
+ else {
121
+ key = null;
122
+ }
123
+ const length = parseInt(lengthStr, 10);
124
+ if (isNaN(length) || length < 0) {
125
+ throw new types_1.ToonDecodingError(`Invalid array length: ${lengthStr}`, {
126
+ lineNumber: line.lineNumber,
127
+ });
128
+ }
129
+ let delimiter = ',';
130
+ if (delimSym === '\t') {
131
+ delimiter = '\t';
132
+ }
133
+ else if (delimSym === '|') {
134
+ delimiter = '|';
135
+ }
136
+ let fields = null;
137
+ if (fieldsPart) {
138
+ fields = this.parseDelimitedTokens(fieldsPart, delimiter).map((token) => {
139
+ if (token.startsWith('"') && token.endsWith('"')) {
140
+ return utils.unescapeString(token.slice(1, -1));
141
+ }
142
+ return token;
143
+ });
144
+ }
145
+ return {
146
+ key,
147
+ length,
148
+ delimiter,
149
+ fields,
150
+ rawLine: content,
151
+ lineNumber: line.lineNumber,
152
+ };
153
+ }
154
+ parseDelimitedTokens(text, delimiter) {
155
+ const tokens = [];
156
+ let current = '';
157
+ let inQuotes = false;
158
+ let escaped = false;
159
+ for (let i = 0; i < text.length; i++) {
160
+ const char = text[i];
161
+ if (escaped) {
162
+ current += char;
163
+ escaped = false;
164
+ continue;
165
+ }
166
+ if (char === '\\') {
167
+ current += char;
168
+ escaped = true;
169
+ continue;
170
+ }
171
+ if (char === '"' && !escaped) {
172
+ inQuotes = !inQuotes;
173
+ current += char;
174
+ continue;
175
+ }
176
+ if (!inQuotes) {
177
+ if (delimiter === ',' && text.slice(i, i + 2) === ', ') {
178
+ tokens.push(current.trim());
179
+ current = '';
180
+ i++;
181
+ continue;
182
+ }
183
+ else if (char === delimiter) {
184
+ tokens.push(current.trim());
185
+ current = '';
186
+ continue;
187
+ }
188
+ }
189
+ current += char;
190
+ }
191
+ if (current.trim()) {
192
+ tokens.push(current.trim());
193
+ }
194
+ return tokens;
195
+ }
196
+ parseArray(lines, startIndex) {
197
+ const headerLine = lines[startIndex];
198
+ const header = this.parseArrayHeader(headerLine);
199
+ const inlineMatch = header.rawLine.match(/:\s*(.+)$/);
200
+ if (inlineMatch && inlineMatch[1].trim()) {
201
+ const valuesStr = inlineMatch[1].trim();
202
+ const tokens = this.parseDelimitedTokens(valuesStr, header.delimiter);
203
+ const values = tokens.map((token) => this.parseTokenValue(token));
204
+ if (this.options.strict && values.length !== header.length) {
205
+ throw new types_1.ToonDecodingError(`Array length mismatch: expected ${header.length}, got ${values.length}`, {
206
+ lineNumber: header.lineNumber,
207
+ });
208
+ }
209
+ return values;
210
+ }
211
+ const baseIndent = headerLine.indent;
212
+ const valueIndent = baseIndent + this.options.indent;
213
+ if (header.fields) {
214
+ return this.parseTabularArray(lines, startIndex, header);
215
+ }
216
+ const values = [];
217
+ let currentIndex = startIndex + 1;
218
+ let currentObj = null;
219
+ const seenKeys = new Set();
220
+ while (currentIndex < lines.length) {
221
+ const line = lines[currentIndex];
222
+ if (line.isEmpty) {
223
+ if (this.options.strict) {
224
+ throw new types_1.ToonDecodingError('Blank lines not allowed in arrays in strict mode', {
225
+ lineNumber: line.lineNumber,
226
+ });
227
+ }
228
+ currentIndex++;
229
+ continue;
230
+ }
231
+ if (line.indent <= baseIndent) {
232
+ if (currentObj !== null) {
233
+ values.push(currentObj);
234
+ currentObj = null;
235
+ }
236
+ break;
237
+ }
238
+ if (line.indent < valueIndent) {
239
+ throw new types_1.ToonDecodingError(`Invalid indentation: expected ${valueIndent}, got ${line.indent}`, {
240
+ lineNumber: line.lineNumber,
241
+ });
242
+ }
243
+ const content = line.content.trim();
244
+ if (/^\[\d+[\t|]?\]/.test(content)) {
245
+ if (currentObj !== null) {
246
+ values.push(currentObj);
247
+ currentObj = null;
248
+ seenKeys.clear();
249
+ }
250
+ const nestedArray = this.parseArray(lines, currentIndex);
251
+ values.push(nestedArray);
252
+ const arrayHeader = this.parseArrayHeader(lines[currentIndex]);
253
+ const inlineMatch = arrayHeader.rawLine.match(/:\s*(.+)$/);
254
+ if (inlineMatch && inlineMatch[1].trim()) {
255
+ currentIndex++;
256
+ }
257
+ else {
258
+ currentIndex = this.findNextSiblingIndex(lines, currentIndex, valueIndent);
259
+ }
260
+ }
261
+ else if (content.includes(':')) {
262
+ const colonIndex = this.findUnquotedColon(content);
263
+ if (colonIndex > 0) {
264
+ const valuePart = content.slice(colonIndex + 1).trim();
265
+ const keyPart = content.slice(0, colonIndex).trim();
266
+ let key;
267
+ if (keyPart.startsWith('"') && keyPart.endsWith('"')) {
268
+ key = utils.unescapeString(keyPart.slice(1, -1));
269
+ }
270
+ else {
271
+ key = keyPart;
272
+ }
273
+ if (!valuePart) {
274
+ if (currentObj !== null) {
275
+ values.push(currentObj);
276
+ currentObj = null;
277
+ seenKeys.clear();
278
+ }
279
+ const obj = this.parseObject(lines, currentIndex, valueIndent);
280
+ values.push(obj);
281
+ currentIndex = this.findNextSiblingIndex(lines, currentIndex, valueIndent);
282
+ }
283
+ else {
284
+ if (seenKeys.has(key)) {
285
+ if (currentObj !== null) {
286
+ values.push(currentObj);
287
+ }
288
+ currentObj = {};
289
+ seenKeys.clear();
290
+ }
291
+ if (currentObj === null) {
292
+ currentObj = {};
293
+ }
294
+ currentObj[key] = this.parseTokenValue(valuePart);
295
+ seenKeys.add(key);
296
+ currentIndex++;
297
+ }
298
+ }
299
+ else {
300
+ if (currentObj !== null) {
301
+ values.push(currentObj);
302
+ currentObj = null;
303
+ seenKeys.clear();
304
+ }
305
+ values.push(this.parseTokenValue(content));
306
+ currentIndex++;
307
+ }
308
+ }
309
+ else {
310
+ if (currentObj !== null) {
311
+ values.push(currentObj);
312
+ currentObj = null;
313
+ seenKeys.clear();
314
+ }
315
+ values.push(this.parseTokenValue(content));
316
+ currentIndex++;
317
+ }
318
+ }
319
+ if (currentObj !== null) {
320
+ values.push(currentObj);
321
+ }
322
+ if (this.options.strict && values.length !== header.length) {
323
+ throw new types_1.ToonDecodingError(`Array length mismatch: expected ${header.length}, got ${values.length}`, {
324
+ lineNumber: header.lineNumber,
325
+ });
326
+ }
327
+ return values;
328
+ }
329
+ parseTabularArray(lines, startIndex, header) {
330
+ const rows = [];
331
+ let currentIndex = startIndex + 1;
332
+ const baseIndent = lines[startIndex].indent;
333
+ while (currentIndex < lines.length && rows.length < header.length) {
334
+ const line = lines[currentIndex];
335
+ if (line.isEmpty) {
336
+ if (this.options.strict) {
337
+ throw new types_1.ToonDecodingError('Blank lines not allowed in arrays in strict mode', {
338
+ lineNumber: line.lineNumber,
339
+ });
340
+ }
341
+ currentIndex++;
342
+ continue;
343
+ }
344
+ if (line.indent <= baseIndent) {
345
+ break;
346
+ }
347
+ const content = line.content.trim();
348
+ const tokens = this.parseDelimitedTokens(content, header.delimiter);
349
+ if (this.options.strict && tokens.length !== header.fields.length) {
350
+ throw new types_1.ToonDecodingError(`Row field count mismatch: expected ${header.fields.length}, got ${tokens.length}`, {
351
+ lineNumber: line.lineNumber,
352
+ });
353
+ }
354
+ const row = {};
355
+ for (let i = 0; i < header.fields.length; i++) {
356
+ const field = header.fields[i];
357
+ const value = i < tokens.length ? this.parseTokenValue(tokens[i]) : null;
358
+ row[field] = value;
359
+ }
360
+ rows.push(row);
361
+ currentIndex++;
362
+ }
363
+ return rows;
364
+ }
365
+ parseObject(lines, startIndex, expectedIndent) {
366
+ const obj = {};
367
+ let currentIndex = startIndex;
368
+ while (currentIndex < lines.length) {
369
+ const line = lines[currentIndex];
370
+ if (line.isEmpty) {
371
+ currentIndex++;
372
+ continue;
373
+ }
374
+ if (currentIndex > startIndex && line.indent < expectedIndent) {
375
+ break;
376
+ }
377
+ const content = line.content.trim();
378
+ if (/\[\d+[\t|]?\]/.test(content)) {
379
+ const headerMatch = content.match(/^(.*?)\[/);
380
+ if (headerMatch && headerMatch[1].trim()) {
381
+ const header = this.parseArrayHeader(line);
382
+ const array = this.parseArray(lines, currentIndex);
383
+ if (header.key) {
384
+ obj[header.key] = array;
385
+ }
386
+ currentIndex = this.findNextSiblingIndex(lines, currentIndex, expectedIndent);
387
+ }
388
+ else {
389
+ currentIndex++;
390
+ }
391
+ continue;
392
+ }
393
+ const colonIndex = this.findUnquotedColon(content);
394
+ if (colonIndex < 0) {
395
+ currentIndex++;
396
+ continue;
397
+ }
398
+ const keyPart = content.slice(0, colonIndex).trim();
399
+ const valuePart = content.slice(colonIndex + 1).trim();
400
+ let key;
401
+ if (keyPart.startsWith('"') && keyPart.endsWith('"')) {
402
+ key = utils.unescapeString(keyPart.slice(1, -1));
403
+ }
404
+ else {
405
+ key = keyPart;
406
+ }
407
+ if (!valuePart) {
408
+ const nextLine = currentIndex + 1 < lines.length ? lines[currentIndex + 1] : null;
409
+ if (nextLine && !nextLine.isEmpty && nextLine.indent > line.indent) {
410
+ if (/\[\d+[\t|]?\]/.test(nextLine.content.trim())) {
411
+ const array = this.parseArray(lines, currentIndex + 1);
412
+ obj[key] = array;
413
+ currentIndex = this.findNextSiblingIndex(lines, currentIndex + 1, line.indent);
414
+ }
415
+ else {
416
+ const nestedObj = this.parseObject(lines, currentIndex + 1, line.indent + this.options.indent);
417
+ obj[key] = nestedObj;
418
+ currentIndex = this.findNextSiblingIndex(lines, currentIndex + 1, line.indent);
419
+ }
420
+ }
421
+ else {
422
+ obj[key] = null;
423
+ currentIndex++;
424
+ }
425
+ }
426
+ else {
427
+ obj[key] = this.parseTokenValue(valuePart);
428
+ currentIndex++;
429
+ }
430
+ }
431
+ return obj;
432
+ }
433
+ findUnquotedColon(text) {
434
+ let inQuotes = false;
435
+ let escaped = false;
436
+ for (let i = 0; i < text.length; i++) {
437
+ const char = text[i];
438
+ if (escaped) {
439
+ escaped = false;
440
+ continue;
441
+ }
442
+ if (char === '\\') {
443
+ escaped = true;
444
+ continue;
445
+ }
446
+ if (char === '"') {
447
+ inQuotes = !inQuotes;
448
+ continue;
449
+ }
450
+ if (char === ':' && !inQuotes) {
451
+ return i;
452
+ }
453
+ }
454
+ return -1;
455
+ }
456
+ findNextSiblingIndex(lines, currentIndex, expectedIndent) {
457
+ let index = currentIndex + 1;
458
+ while (index < lines.length) {
459
+ const line = lines[index];
460
+ if (line.isEmpty) {
461
+ index++;
462
+ continue;
463
+ }
464
+ if (line.indent <= expectedIndent) {
465
+ return index;
466
+ }
467
+ index++;
468
+ }
469
+ return lines.length;
470
+ }
471
+ parseTokenValue(token) {
472
+ token = token.trim();
473
+ if (token.startsWith('"') && token.endsWith('"')) {
474
+ return utils.unescapeString(token.slice(1, -1));
475
+ }
476
+ return utils.parseToken(token);
477
+ }
478
+ expandPaths(obj) {
479
+ const result = {};
480
+ for (const [key, value] of Object.entries(obj)) {
481
+ if (key.includes('.') && this.isExpandable(key)) {
482
+ const segments = key.split('.');
483
+ this.deepSet(result, segments, value);
484
+ }
485
+ else {
486
+ if (utils.isPlainObject(value)) {
487
+ result[key] = this.expandPaths(value);
488
+ }
489
+ else {
490
+ result[key] = value;
491
+ }
492
+ }
493
+ }
494
+ return result;
495
+ }
496
+ isExpandable(key) {
497
+ const segments = key.split('.');
498
+ return segments.every((seg) => utils.isIdentifierSegment(seg));
499
+ }
500
+ deepSet(obj, path, value) {
501
+ let current = obj;
502
+ for (let i = 0; i < path.length - 1; i++) {
503
+ const segment = path[i];
504
+ if (!(segment in current)) {
505
+ current[segment] = {};
506
+ }
507
+ else if (!utils.isPlainObject(current[segment])) {
508
+ if (this.options.strict) {
509
+ throw new types_1.ToonDecodingError(`Path expansion conflict at '${path.slice(0, i + 1).join('.')}': expected object, found ${typeof current[segment]}`);
510
+ }
511
+ current[segment] = {};
512
+ }
513
+ current = current[segment];
514
+ }
515
+ const lastSegment = path[path.length - 1];
516
+ if (lastSegment in current && this.options.strict) {
517
+ throw new types_1.ToonDecodingError(`Path expansion conflict: duplicate key '${path.join('.')}'`);
518
+ }
519
+ current[lastSegment] = value;
520
+ }
521
+ }
522
+ exports.ToonDecoder = ToonDecoder;
523
+ //# sourceMappingURL=ToonDecoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToonDecoder.js","sourceRoot":"","sources":["../../../nodes/Toon/ToonDecoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { EncoderOptions } from './types';
2
+ export declare class ToonEncoder {
3
+ private options;
4
+ private documentDelimiter;
5
+ constructor(options: EncoderOptions);
6
+ encode(value: unknown): string;
7
+ private normalizeValue;
8
+ private encodeValue;
9
+ private encodeString;
10
+ private encodeObject;
11
+ private encodeArray;
12
+ private encodePrimitiveArray;
13
+ private encodePrimitiveValue;
14
+ private encodeTabular;
15
+ private encodeMixedArray;
16
+ private foldKeys;
17
+ private extractFoldableChain;
18
+ private isChainSafe;
19
+ private getLeafValue;
20
+ }