@thomlov81/n8n-nodes-esogr-custom 0.1.6 → 0.1.8

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,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class InputValidator implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,411 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InputValidator = void 0;
4
+ const validators_1 = require("./validators");
5
+ const utils_1 = require("./utils");
6
+ class InputValidator {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: 'Input Validator',
10
+ name: 'inputValidator',
11
+ icon: 'file:inputValidator.svg',
12
+ group: ['transform'],
13
+ version: 1,
14
+ subtitle: 'Validate {{$parameter["fields"]["field"].length}} field(s)',
15
+ description: 'Validate input data against defined rules with multi-language error messages',
16
+ defaults: {
17
+ name: 'Input Validator',
18
+ },
19
+ inputs: ['main'],
20
+ outputs: ['main', 'main'],
21
+ outputNames: ['Valid', 'Invalid'],
22
+ properties: [
23
+ {
24
+ displayName: 'Fields',
25
+ name: 'fields',
26
+ type: 'fixedCollection',
27
+ typeOptions: {
28
+ multipleValues: true,
29
+ sortable: true,
30
+ },
31
+ default: {},
32
+ options: [
33
+ {
34
+ name: 'field',
35
+ displayName: 'Field',
36
+ values: [
37
+ {
38
+ displayName: 'Allowed Values',
39
+ name: 'enum',
40
+ type: 'string',
41
+ default: '',
42
+ displayOptions: {
43
+ show: {
44
+ type: ['string'],
45
+ },
46
+ },
47
+ description: 'Comma-separated list of allowed values',
48
+ },
49
+ {
50
+ displayName: 'Input Value',
51
+ name: 'inputValue',
52
+ type: 'string',
53
+ default: '',
54
+ placeholder: '={{ $json.body.email }}',
55
+ description: 'The value to validate (use expressions to reference input data)',
56
+ },
57
+ {
58
+ displayName: 'Max Date',
59
+ name: 'maxDate',
60
+ type: 'dateTime',
61
+ default: '',
62
+ displayOptions: {
63
+ show: {
64
+ type: ['date', 'datetime'],
65
+ },
66
+ },
67
+ description: 'Maximum allowed date',
68
+ },
69
+ {
70
+ displayName: 'Max Items',
71
+ name: 'maxItems',
72
+ type: 'number',
73
+ default: 0,
74
+ displayOptions: {
75
+ show: {
76
+ type: ['array'],
77
+ },
78
+ },
79
+ description: 'Maximum number of items (0 = no limit)',
80
+ },
81
+ {
82
+ displayName: 'Max Length',
83
+ name: 'maxLength',
84
+ type: 'number',
85
+ default: 0,
86
+ displayOptions: {
87
+ show: {
88
+ type: ['string'],
89
+ },
90
+ },
91
+ description: 'Maximum string length (0 = no limit)',
92
+ },
93
+ {
94
+ displayName: 'Maximum',
95
+ name: 'max',
96
+ type: 'number',
97
+ default: '',
98
+ displayOptions: {
99
+ show: {
100
+ type: ['integer', 'number'],
101
+ },
102
+ },
103
+ description: 'Maximum value (leave empty for no limit)',
104
+ },
105
+ {
106
+ displayName: 'Min Date',
107
+ name: 'minDate',
108
+ type: 'dateTime',
109
+ default: '',
110
+ displayOptions: {
111
+ show: {
112
+ type: ['date', 'datetime'],
113
+ },
114
+ },
115
+ description: 'Minimum allowed date',
116
+ },
117
+ {
118
+ displayName: 'Min Items',
119
+ name: 'minItems',
120
+ type: 'number',
121
+ default: 0,
122
+ displayOptions: {
123
+ show: {
124
+ type: ['array'],
125
+ },
126
+ },
127
+ description: 'Minimum number of items (0 = no limit)',
128
+ },
129
+ {
130
+ displayName: 'Min Length',
131
+ name: 'minLength',
132
+ type: 'number',
133
+ default: 0,
134
+ displayOptions: {
135
+ show: {
136
+ type: ['string'],
137
+ },
138
+ },
139
+ description: 'Minimum string length (0 = no limit)',
140
+ },
141
+ {
142
+ displayName: 'Minimum',
143
+ name: 'min',
144
+ type: 'number',
145
+ default: '',
146
+ displayOptions: {
147
+ show: {
148
+ type: ['integer', 'number'],
149
+ },
150
+ },
151
+ description: 'Minimum value (leave empty for no limit)',
152
+ },
153
+ {
154
+ displayName: 'Output Path',
155
+ name: 'outputPath',
156
+ type: 'string',
157
+ default: '',
158
+ placeholder: 'user.email or validated.price',
159
+ description: 'Path to write the validated value (supports dot notation)',
160
+ },
161
+ {
162
+ displayName: 'Pattern (Regex)',
163
+ name: 'pattern',
164
+ type: 'string',
165
+ default: '',
166
+ displayOptions: {
167
+ show: {
168
+ type: ['string'],
169
+ },
170
+ },
171
+ description: 'Regular expression pattern to match',
172
+ },
173
+ {
174
+ displayName: 'Required',
175
+ name: 'required',
176
+ type: 'boolean',
177
+ default: true,
178
+ description: 'Whether the field is required',
179
+ },
180
+ {
181
+ displayName: 'Trim Whitespace',
182
+ name: 'trim',
183
+ type: 'boolean',
184
+ default: true,
185
+ displayOptions: {
186
+ show: {
187
+ type: ['string'],
188
+ },
189
+ },
190
+ description: 'Whether to trim leading/trailing whitespace',
191
+ },
192
+ {
193
+ displayName: 'Type',
194
+ name: 'type',
195
+ type: 'options',
196
+ options: [
197
+ {
198
+ name: 'Array',
199
+ value: 'array',
200
+ },
201
+ {
202
+ name: 'Boolean',
203
+ value: 'boolean',
204
+ },
205
+ {
206
+ name: 'Date (YYYY-MM-DD)',
207
+ value: 'date',
208
+ },
209
+ {
210
+ name: 'Datetime (ISO 8601)',
211
+ value: 'datetime',
212
+ },
213
+ {
214
+ name: 'Email',
215
+ value: 'email',
216
+ },
217
+ {
218
+ name: 'Integer',
219
+ value: 'integer',
220
+ },
221
+ {
222
+ name: 'Number',
223
+ value: 'number',
224
+ },
225
+ {
226
+ name: 'Phone',
227
+ value: 'phone',
228
+ },
229
+ {
230
+ name: 'String',
231
+ value: 'string',
232
+ },
233
+ {
234
+ name: 'Time (HH:MM:SS)',
235
+ value: 'time',
236
+ },
237
+ {
238
+ name: 'URL',
239
+ value: 'url',
240
+ },
241
+ {
242
+ name: 'UUID',
243
+ value: 'uuid',
244
+ },
245
+ ],
246
+ default: 'string',
247
+ description: 'The expected type of the field',
248
+ },
249
+ ],
250
+ },
251
+ ],
252
+ },
253
+ {
254
+ displayName: 'Options',
255
+ name: 'options',
256
+ type: 'collection',
257
+ placeholder: 'Add Option',
258
+ default: {},
259
+ options: [
260
+ {
261
+ displayName: 'Coerce Types',
262
+ name: 'coerceTypes',
263
+ type: 'boolean',
264
+ default: true,
265
+ description: 'Whether to automatically convert compatible types (e.g., "123" to 123)',
266
+ },
267
+ {
268
+ displayName: 'Pass Through All Data',
269
+ name: 'passThrough',
270
+ type: 'boolean',
271
+ default: true,
272
+ description: 'Whether to include all original data in output (false = only validated fields)',
273
+ },
274
+ {
275
+ displayName: 'Stop on First Error',
276
+ name: 'stopOnFirstError',
277
+ type: 'boolean',
278
+ default: false,
279
+ description: 'Whether to stop validation after the first error',
280
+ },
281
+ ],
282
+ },
283
+ ],
284
+ };
285
+ }
286
+ async execute() {
287
+ const items = this.getInputData();
288
+ const validItems = [];
289
+ const invalidItems = [];
290
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
291
+ const item = items[itemIndex];
292
+ const inputData = item.json;
293
+ const fieldsConfig = this.getNodeParameter('fields', itemIndex);
294
+ const options = this.getNodeParameter('options', itemIndex);
295
+ const fields = fieldsConfig.field || [];
296
+ const passThrough = options.passThrough !== false;
297
+ const stopOnFirstError = options.stopOnFirstError === true;
298
+ const coerceTypes = options.coerceTypes !== false;
299
+ const errors = {};
300
+ const validatedData = {};
301
+ for (const fieldConfig of fields) {
302
+ const inputValue = fieldConfig.inputValue;
303
+ const outputPath = fieldConfig.outputPath;
304
+ const type = fieldConfig.type;
305
+ const required = fieldConfig.required;
306
+ if (!outputPath) {
307
+ continue;
308
+ }
309
+ let value = inputValue;
310
+ if (required && (0, utils_1.isEmpty)(value)) {
311
+ errors[outputPath] = {
312
+ code: 'REQUIRED',
313
+ en: 'This field is required',
314
+ no: 'Dette feltet er påkrevd',
315
+ };
316
+ if (stopOnFirstError) {
317
+ break;
318
+ }
319
+ continue;
320
+ }
321
+ if (!required && (0, utils_1.isEmpty)(value)) {
322
+ continue;
323
+ }
324
+ if (coerceTypes && value !== null && value !== undefined) {
325
+ const coerced = (0, utils_1.coerceType)(value, type);
326
+ if (coerced.success) {
327
+ value = coerced.value;
328
+ }
329
+ }
330
+ const validationOptions = {};
331
+ if (type === 'string') {
332
+ if (fieldConfig.minLength && Number(fieldConfig.minLength) > 0) {
333
+ validationOptions.minLength = Number(fieldConfig.minLength);
334
+ }
335
+ if (fieldConfig.maxLength && Number(fieldConfig.maxLength) > 0) {
336
+ validationOptions.maxLength = Number(fieldConfig.maxLength);
337
+ }
338
+ if (fieldConfig.pattern) {
339
+ validationOptions.pattern = fieldConfig.pattern;
340
+ }
341
+ if (fieldConfig.enum) {
342
+ const enumStr = fieldConfig.enum;
343
+ validationOptions.enum = enumStr.split(',').map((s) => s.trim()).filter((s) => s);
344
+ }
345
+ validationOptions.trim = fieldConfig.trim !== false;
346
+ }
347
+ if (type === 'number' || type === 'integer') {
348
+ if (fieldConfig.min !== '' && fieldConfig.min !== undefined) {
349
+ validationOptions.min = Number(fieldConfig.min);
350
+ }
351
+ if (fieldConfig.max !== '' && fieldConfig.max !== undefined) {
352
+ validationOptions.max = Number(fieldConfig.max);
353
+ }
354
+ }
355
+ if (type === 'date' || type === 'datetime') {
356
+ if (fieldConfig.minDate) {
357
+ validationOptions.minDate = fieldConfig.minDate;
358
+ }
359
+ if (fieldConfig.maxDate) {
360
+ validationOptions.maxDate = fieldConfig.maxDate;
361
+ }
362
+ }
363
+ if (type === 'array') {
364
+ if (fieldConfig.minItems && Number(fieldConfig.minItems) > 0) {
365
+ validationOptions.minItems = Number(fieldConfig.minItems);
366
+ }
367
+ if (fieldConfig.maxItems && Number(fieldConfig.maxItems) > 0) {
368
+ validationOptions.maxItems = Number(fieldConfig.maxItems);
369
+ }
370
+ }
371
+ const result = (0, validators_1.validate)(value, type, validationOptions);
372
+ if (!result.valid && result.error) {
373
+ errors[outputPath] = result.error;
374
+ if (stopOnFirstError) {
375
+ break;
376
+ }
377
+ }
378
+ else if (result.valid) {
379
+ (0, utils_1.setNestedValue)(validatedData, outputPath, result.value);
380
+ }
381
+ }
382
+ if (Object.keys(errors).length > 0) {
383
+ invalidItems.push({
384
+ json: {
385
+ error: {
386
+ code: 'VALIDATION_ERROR',
387
+ fields: errors,
388
+ },
389
+ },
390
+ pairedItem: { item: itemIndex },
391
+ });
392
+ }
393
+ else {
394
+ let outputData;
395
+ if (passThrough) {
396
+ outputData = { ...inputData, ...validatedData };
397
+ }
398
+ else {
399
+ outputData = validatedData;
400
+ }
401
+ validItems.push({
402
+ json: outputData,
403
+ pairedItem: { item: itemIndex },
404
+ });
405
+ }
406
+ }
407
+ return [validItems, invalidItems];
408
+ }
409
+ }
410
+ exports.InputValidator = InputValidator;
411
+ //# sourceMappingURL=InputValidator.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputValidator.node.js","sourceRoot":"","sources":["../../../nodes/InputValidator/InputValidator.node.ts"],"names":[],"mappings":";;;AAQA,6CAA6E;AAC7E,mCAA8D;AAY9D,MAAa,cAAc;IAA3B;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,4DAA4D;YACtE,WAAW,EAAE,8EAA8E;YAC3F,QAAQ,EAAE;gBACT,IAAI,EAAE,iBAAiB;aACvB;YACD,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;YACzB,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;YACjC,UAAU,EAAE;gBAEX;oBACC,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE;wBACZ,cAAc,EAAE,IAAI;wBACpB,QAAQ,EAAE,IAAI;qBACd;oBACD,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,OAAO;4BACb,WAAW,EAAE,OAAO;4BACpB,MAAM,EAAE;gCACP;oCACC,WAAW,EAAE,gBAAgB;oCAC7B,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,QAAQ,CAAC;yCAChB;qCACD;oCACD,WAAW,EAAE,wCAAwC;iCACrD;gCACD;oCACC,WAAW,EAAE,aAAa;oCAC1B,IAAI,EAAE,YAAY;oCAClB,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,WAAW,EAAE,yBAAyB;oCACtC,WAAW,EAAE,iEAAiE;iCAC9E;gCACD;oCACC,WAAW,EAAE,UAAU;oCACvB,IAAI,EAAE,SAAS;oCACf,IAAI,EAAE,UAAU;oCAChB,OAAO,EAAE,EAAE;oCACX,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;yCAC1B;qCACD;oCACD,WAAW,EAAE,sBAAsB;iCACnC;gCACD;oCACC,WAAW,EAAE,WAAW;oCACxB,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,CAAC;oCACV,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,OAAO,CAAC;yCACf;qCACD;oCACD,WAAW,EAAE,wCAAwC;iCACrD;gCACD;oCACC,WAAW,EAAE,YAAY;oCACzB,IAAI,EAAE,WAAW;oCACjB,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,CAAC;oCACV,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,QAAQ,CAAC;yCAChB;qCACD;oCACD,WAAW,EAAE,sCAAsC;iCACnD;gCACD;oCACC,WAAW,EAAE,SAAS;oCACtB,IAAI,EAAE,KAAK;oCACX,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;yCAC3B;qCACD;oCACD,WAAW,EAAE,0CAA0C;iCACvD;gCACD;oCACC,WAAW,EAAE,UAAU;oCACvB,IAAI,EAAE,SAAS;oCACf,IAAI,EAAE,UAAU;oCAChB,OAAO,EAAE,EAAE;oCACX,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;yCAC1B;qCACD;oCACD,WAAW,EAAE,sBAAsB;iCACnC;gCACD;oCACC,WAAW,EAAE,WAAW;oCACxB,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,CAAC;oCACV,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,OAAO,CAAC;yCACf;qCACD;oCACD,WAAW,EAAE,wCAAwC;iCACrD;gCACD;oCACC,WAAW,EAAE,YAAY;oCACzB,IAAI,EAAE,WAAW;oCACjB,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,CAAC;oCACV,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,QAAQ,CAAC;yCAChB;qCACD;oCACD,WAAW,EAAE,sCAAsC;iCACnD;gCACD;oCACC,WAAW,EAAE,SAAS;oCACtB,IAAI,EAAE,KAAK;oCACX,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;yCAC3B;qCACD;oCACD,WAAW,EAAE,0CAA0C;iCACvD;gCACD;oCACC,WAAW,EAAE,aAAa;oCAC1B,IAAI,EAAE,YAAY;oCAClB,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,WAAW,EAAE,+BAA+B;oCAC5C,WAAW,EAAE,2DAA2D;iCACxE;gCACD;oCACC,WAAW,EAAE,iBAAiB;oCAC9B,IAAI,EAAE,SAAS;oCACf,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,QAAQ,CAAC;yCAChB;qCACD;oCACD,WAAW,EAAE,qCAAqC;iCAClD;gCACD;oCACC,WAAW,EAAE,UAAU;oCACvB,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,SAAS;oCACf,OAAO,EAAE,IAAI;oCACb,WAAW,EAAE,+BAA+B;iCAC5C;gCACD;oCACC,WAAW,EAAE,iBAAiB;oCAC9B,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,SAAS;oCACf,OAAO,EAAE,IAAI;oCACb,cAAc,EAAE;wCACf,IAAI,EAAE;4CACL,IAAI,EAAE,CAAC,QAAQ,CAAC;yCAChB;qCACD;oCACD,WAAW,EAAE,6CAA6C;iCAC1D;gCACD;oCACC,WAAW,EAAE,MAAM;oCACnB,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,SAAS;oCACf,OAAO,EAAE;wCACR;4CACC,IAAI,EAAE,OAAO;4CACb,KAAK,EAAE,OAAO;yCACd;wCACD;4CACC,IAAI,EAAE,SAAS;4CACf,KAAK,EAAE,SAAS;yCAChB;wCACD;4CACC,IAAI,EAAE,mBAAmB;4CACzB,KAAK,EAAE,MAAM;yCACb;wCACD;4CACC,IAAI,EAAE,qBAAqB;4CAC3B,KAAK,EAAE,UAAU;yCACjB;wCACD;4CACC,IAAI,EAAE,OAAO;4CACb,KAAK,EAAE,OAAO;yCACd;wCACD;4CACC,IAAI,EAAE,SAAS;4CACf,KAAK,EAAE,SAAS;yCAChB;wCACD;4CACC,IAAI,EAAE,QAAQ;4CACd,KAAK,EAAE,QAAQ;yCACf;wCACD;4CACC,IAAI,EAAE,OAAO;4CACb,KAAK,EAAE,OAAO;yCACd;wCACD;4CACC,IAAI,EAAE,QAAQ;4CACd,KAAK,EAAE,QAAQ;yCACf;wCACD;4CACC,IAAI,EAAE,iBAAiB;4CACvB,KAAK,EAAE,MAAM;yCACb;wCACD;4CACC,IAAI,EAAE,KAAK;4CACX,KAAK,EAAE,KAAK;yCACZ;wCACD;4CACC,IAAI,EAAE,MAAM;4CACZ,KAAK,EAAE,MAAM;yCACb;qCACD;oCACD,OAAO,EAAE,QAAQ;oCACjB,WAAW,EAAE,gCAAgC;iCAC7C;6BACD;yBACD;qBACD;iBACD;gBAED;oBACC,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,YAAY;oBACzB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,cAAc;4BAC3B,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,wEAAwE;yBACrF;wBACD;4BACC,WAAW,EAAE,uBAAuB;4BACpC,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,gFAAgF;yBAC7F;wBACD;4BACC,WAAW,EAAE,qBAAqB;4BAClC,IAAI,EAAE,kBAAkB;4BACxB,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,KAAK;4BACd,WAAW,EAAE,kDAAkD;yBAC/D;qBACD;iBACD;aACD;SACD,CAAC;IAiKH,CAAC;IA/JA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAyB,EAAE,CAAC;QAE9C,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;YAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAgB,CAAC;YAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAgB,CAAC;YAE3E,MAAM,MAAM,GAAI,YAAY,CAAC,KAAuB,IAAI,EAAE,CAAC;YAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;YAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC;YAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;YAElD,MAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,MAAM,aAAa,GAA4B,EAAE,CAAC;YAElD,KAAK,MAAM,WAAW,IAAI,MAAM,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;gBAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,UAAoB,CAAC;gBACpD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAc,CAAC;gBACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAmB,CAAC;gBAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;oBACjB,SAAS;gBACV,CAAC;gBAGD,IAAI,KAAK,GAAY,UAAU,CAAC;gBAGhC,IAAI,QAAQ,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,UAAU,CAAC,GAAG;wBACpB,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,wBAAwB;wBAC5B,EAAE,EAAE,yBAAyB;qBAC7B,CAAC;oBAEF,IAAI,gBAAgB,EAAE,CAAC;wBACtB,MAAM;oBACP,CAAC;oBACD,SAAS;gBACV,CAAC;gBAGD,IAAI,CAAC,QAAQ,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,SAAS;gBACV,CAAC;gBAGD,IAAI,WAAW,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC1D,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACxC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBACrB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;oBACvB,CAAC;gBACF,CAAC;gBAGD,MAAM,iBAAiB,GAAsB,EAAE,CAAC;gBAGhD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACvB,IAAI,WAAW,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChE,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBAC7D,CAAC;oBACD,IAAI,WAAW,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChE,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBAC7D,CAAC;oBACD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;wBACzB,iBAAiB,CAAC,OAAO,GAAG,WAAW,CAAC,OAAiB,CAAC;oBAC3D,CAAC;oBACD,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;wBACtB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAc,CAAC;wBAC3C,iBAAiB,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBACnF,CAAC;oBACD,iBAAiB,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC;gBACrD,CAAC;gBAGD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC7C,IAAI,WAAW,CAAC,GAAG,KAAK,EAAE,IAAI,WAAW,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;wBAC7D,iBAAiB,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACjD,CAAC;oBACD,IAAI,WAAW,CAAC,GAAG,KAAK,EAAE,IAAI,WAAW,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;wBAC7D,iBAAiB,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACjD,CAAC;gBACF,CAAC;gBAGD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC5C,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;wBACzB,iBAAiB,CAAC,OAAO,GAAG,WAAW,CAAC,OAAiB,CAAC;oBAC3D,CAAC;oBACD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;wBACzB,iBAAiB,CAAC,OAAO,GAAG,WAAW,CAAC,OAAiB,CAAC;oBAC3D,CAAC;gBACF,CAAC;gBAGD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACtB,IAAI,WAAW,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9D,iBAAiB,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC3D,CAAC;oBACD,IAAI,WAAW,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9D,iBAAiB,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC3D,CAAC;gBACF,CAAC;gBAGD,MAAM,MAAM,GAAqB,IAAA,qBAAQ,EAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;gBAE1E,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;oBAElC,IAAI,gBAAgB,EAAE,CAAC;wBACtB,MAAM;oBACP,CAAC;gBACF,CAAC;qBAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAEzB,IAAA,sBAAc,EAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,CAAC;YACF,CAAC;YAGD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAEpC,YAAY,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE;wBACL,KAAK,EAAE;4BACN,IAAI,EAAE,kBAAkB;4BACxB,MAAM,EAAE,MAAM;yBACd;qBACD;oBACD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC/B,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBAEP,IAAI,UAAuB,CAAC;gBAE5B,IAAI,WAAW,EAAE,CAAC;oBAEjB,UAAU,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,aAAa,EAAiB,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBAEP,UAAU,GAAG,aAA4B,CAAC;gBAC3C,CAAC;gBAED,UAAU,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,UAAU;oBAChB,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC/B,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;CACD;AAxbD,wCAwbC"}
@@ -0,0 +1,9 @@
1
+ export interface ErrorMessage {
2
+ en: string;
3
+ no: string;
4
+ }
5
+ export interface ErrorMessages {
6
+ [key: string]: ErrorMessage;
7
+ }
8
+ export declare const errorMessages: ErrorMessages;
9
+ export declare function formatErrorMessage(code: string, params?: Record<string, string | number>): ErrorMessage;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorMessages = void 0;
4
+ exports.formatErrorMessage = formatErrorMessage;
5
+ exports.errorMessages = {
6
+ REQUIRED: {
7
+ en: 'This field is required',
8
+ no: 'Dette feltet er påkrevd',
9
+ },
10
+ INVALID_TYPE: {
11
+ en: 'Invalid type, expected {expected}',
12
+ no: 'Ugyldig type, forventet {expected}',
13
+ },
14
+ STRING_TOO_SHORT: {
15
+ en: 'Must be at least {min} characters',
16
+ no: 'Må være minst {min} tegn',
17
+ },
18
+ STRING_TOO_LONG: {
19
+ en: 'Must be at most {max} characters',
20
+ no: 'Må være maks {max} tegn',
21
+ },
22
+ INVALID_EMAIL: {
23
+ en: 'Invalid email format',
24
+ no: 'Ugyldig e-postformat',
25
+ },
26
+ INVALID_URL: {
27
+ en: 'Invalid URL format',
28
+ no: 'Ugyldig URL-format',
29
+ },
30
+ INVALID_UUID: {
31
+ en: 'Invalid UUID format',
32
+ no: 'Ugyldig UUID-format',
33
+ },
34
+ INVALID_PHONE: {
35
+ en: 'Invalid phone number format',
36
+ no: 'Ugyldig telefonnummerformat',
37
+ },
38
+ NUMBER_TOO_SMALL: {
39
+ en: 'Must be at least {min}',
40
+ no: 'Må være minst {min}',
41
+ },
42
+ NUMBER_TOO_LARGE: {
43
+ en: 'Must be at most {max}',
44
+ no: 'Må være maks {max}',
45
+ },
46
+ INVALID_INTEGER: {
47
+ en: 'Must be a whole number',
48
+ no: 'Må være et heltall',
49
+ },
50
+ INVALID_NUMBER: {
51
+ en: 'Must be a valid number',
52
+ no: 'Må være et gyldig tall',
53
+ },
54
+ INVALID_DATE: {
55
+ en: 'Invalid date format (expected YYYY-MM-DD)',
56
+ no: 'Ugyldig datoformat (forventet YYYY-MM-DD)',
57
+ },
58
+ DATE_TOO_EARLY: {
59
+ en: 'Date must be on or after {min}',
60
+ no: 'Dato må være på eller etter {min}',
61
+ },
62
+ DATE_TOO_LATE: {
63
+ en: 'Date must be on or before {max}',
64
+ no: 'Dato må være på eller før {max}',
65
+ },
66
+ INVALID_DATETIME: {
67
+ en: 'Invalid datetime format (expected ISO 8601)',
68
+ no: 'Ugyldig dato/tid-format (forventet ISO 8601)',
69
+ },
70
+ DATETIME_TOO_EARLY: {
71
+ en: 'Datetime must be on or after {min}',
72
+ no: 'Dato/tid må være på eller etter {min}',
73
+ },
74
+ DATETIME_TOO_LATE: {
75
+ en: 'Datetime must be on or before {max}',
76
+ no: 'Dato/tid må være på eller før {max}',
77
+ },
78
+ INVALID_TIME: {
79
+ en: 'Invalid time format (expected HH:MM or HH:MM:SS)',
80
+ no: 'Ugyldig tidsformat (forventet HH:MM eller HH:MM:SS)',
81
+ },
82
+ INVALID_BOOLEAN: {
83
+ en: 'Must be true or false',
84
+ no: 'Må være true eller false',
85
+ },
86
+ INVALID_PATTERN: {
87
+ en: 'Value does not match the required pattern',
88
+ no: 'Verdien samsvarer ikke med påkrevd mønster',
89
+ },
90
+ INVALID_ENUM: {
91
+ en: 'Value must be one of: {values}',
92
+ no: 'Verdien må være en av: {values}',
93
+ },
94
+ ARRAY_TOO_SHORT: {
95
+ en: 'Must have at least {min} items',
96
+ no: 'Må ha minst {min} elementer',
97
+ },
98
+ ARRAY_TOO_LONG: {
99
+ en: 'Must have at most {max} items',
100
+ no: 'Må ha maks {max} elementer',
101
+ },
102
+ INVALID_ARRAY: {
103
+ en: 'Must be an array',
104
+ no: 'Må være en liste',
105
+ },
106
+ };
107
+ function formatErrorMessage(code, params = {}) {
108
+ const template = exports.errorMessages[code] || {
109
+ en: `Validation error: ${code}`,
110
+ no: `Valideringsfeil: ${code}`,
111
+ };
112
+ let en = template.en;
113
+ let no = template.no;
114
+ for (const [key, value] of Object.entries(params)) {
115
+ const placeholder = `{${key}}`;
116
+ en = en.replace(placeholder, String(value));
117
+ no = no.replace(placeholder, String(value));
118
+ }
119
+ return { en, no };
120
+ }
121
+ //# sourceMappingURL=errorMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorMessages.js","sourceRoot":"","sources":["../../../nodes/InputValidator/errorMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="60" height="60">
2
+ <defs>
3
+ <linearGradient id="validatorGrad" x1="0%" y1="0%" x2="0%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#2196F3;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#1565C0;stop-opacity:1" />
6
+ </linearGradient>
7
+ </defs>
8
+ <rect x="3" y="3" width="18" height="18" rx="2" fill="url(#validatorGrad)"/>
9
+ <path fill="#fff" d="M7 9h10v1.5H7zM7 12h7v1.5H7zM7 15h5v1.5H7z"/>
10
+ <circle cx="17" cy="15" r="3" fill="#4CAF50"/>
11
+ <path fill="#fff" d="M16.2 15.5l-.7-.7.35-.35.35.35 1.05-1.05.35.35z" transform="scale(1.5) translate(5.5, 4.5)"/>
12
+ </svg>
@@ -0,0 +1,7 @@
1
+ export declare function getNestedValue(obj: unknown, path: string): unknown;
2
+ export declare function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void;
3
+ export declare function coerceType(value: unknown, targetType: string): {
4
+ success: boolean;
5
+ value: unknown;
6
+ };
7
+ export declare function isEmpty(value: unknown): boolean;