@xuda.io/runtime-bundle 1.0.1182 → 1.0.1184
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.
|
@@ -265,635 +265,390 @@ export const check = function (doc) {
|
|
|
265
265
|
export const check_structure = function (doc) {
|
|
266
266
|
var ret = [];
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
268
|
+
// Helper function to add validation errors and continue
|
|
269
|
+
const addValidationError = (code, data) => {
|
|
270
|
+
ret.push({
|
|
271
|
+
code,
|
|
272
|
+
data,
|
|
273
|
+
type: 'E',
|
|
274
|
+
category: 'document',
|
|
275
|
+
structure_error: true,
|
|
276
|
+
});
|
|
277
|
+
};
|
|
277
278
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
},
|
|
284
|
-
});
|
|
285
|
-
}
|
|
279
|
+
// Early exit conditions that prevent further validation
|
|
280
|
+
if (!app_obj || !_.isObject(app_obj) || _.isEmpty(app_obj)) {
|
|
281
|
+
addValidationError('CHK_MSG_OBJ_GEN_002', 'invalid app_obj');
|
|
282
|
+
return ret;
|
|
283
|
+
}
|
|
286
284
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
cause: {
|
|
292
|
-
code: 'CHK_MSG_OBJ_GEN_005',
|
|
293
|
-
data: `error parsing JSON doc`,
|
|
294
|
-
},
|
|
295
|
-
});
|
|
296
|
-
}
|
|
285
|
+
if (!doc || !_.isObject(doc) || _.isEmpty(doc)) {
|
|
286
|
+
addValidationError('CHK_MSG_OBJ_GEN_004', 'doc is not a object');
|
|
287
|
+
return ret;
|
|
288
|
+
}
|
|
297
289
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
});
|
|
305
|
-
}
|
|
290
|
+
try {
|
|
291
|
+
JSON5.parse(JSON.stringify(doc));
|
|
292
|
+
} catch (err) {
|
|
293
|
+
addValidationError('CHK_MSG_OBJ_GEN_005', 'error parsing JSON doc');
|
|
294
|
+
return ret;
|
|
295
|
+
}
|
|
306
296
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
data: `invalid _id value (e.g: 5b1_tbl_a953848a71c5)`,
|
|
312
|
-
},
|
|
313
|
-
});
|
|
314
|
-
}
|
|
297
|
+
// Continue validation even with errors
|
|
298
|
+
if (!doc._id) {
|
|
299
|
+
addValidationError('CHK_MSG_OBJ_GEN_050', 'missing _id value');
|
|
300
|
+
}
|
|
315
301
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
cause: {
|
|
320
|
-
code: 'CHK_MSG_OBJ_GEN_052',
|
|
321
|
-
data: `duplicate doc _id`,
|
|
322
|
-
},
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
////////// properties ////////////////
|
|
302
|
+
if (doc?.studio_meta?.source === 'studio ai' && doc?.properties?.menuType && doc._id && doc._id.substr(0, 7) !== new_node_id(doc.properties.menuType, doc.app_id).substr(0, 7)) {
|
|
303
|
+
addValidationError('CHK_MSG_OBJ_GEN_051', 'invalid _id value (e.g: 5b1_tbl_a953848a71c5)');
|
|
304
|
+
}
|
|
327
305
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
code: 'CHK_MSG_OBJ_GEN_100',
|
|
332
|
-
data: `missing properties object`,
|
|
333
|
-
},
|
|
334
|
-
});
|
|
306
|
+
if (!doc._rev) {
|
|
307
|
+
if (progs_obj?.[doc._id]) {
|
|
308
|
+
addValidationError('CHK_MSG_OBJ_GEN_052', 'duplicate doc _id');
|
|
335
309
|
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
////////// properties ////////////////
|
|
313
|
+
|
|
314
|
+
if (!doc.properties) {
|
|
315
|
+
addValidationError('CHK_MSG_OBJ_GEN_100', 'missing properties object');
|
|
316
|
+
} else {
|
|
336
317
|
if (!_.isObject(doc.properties)) {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
318
|
+
addValidationError('CHK_MSG_OBJ_GEN_102', 'invalid properties object');
|
|
319
|
+
} else {
|
|
320
|
+
if (!doc.properties.menuType) {
|
|
321
|
+
addValidationError('CHK_MSG_OBJ_GEN_104', 'missing properties.menuType');
|
|
322
|
+
} else if (!ALL_MENU_TYPE.includes(doc.properties.menuType)) {
|
|
323
|
+
addValidationError('CHK_MSG_OBJ_GEN_105', `invalid properties.menuType (valid values: ${ALL_MENU_TYPE.join(',')})`);
|
|
324
|
+
}
|
|
344
325
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
code: 'CHK_MSG_OBJ_GEN_104',
|
|
349
|
-
data: `missing properties.menuType`,
|
|
350
|
-
},
|
|
351
|
-
});
|
|
326
|
+
if (!doc.properties.menuName) {
|
|
327
|
+
addValidationError('CHK_MSG_OBJ_GEN_106', 'missing properties.menuName');
|
|
328
|
+
}
|
|
352
329
|
}
|
|
330
|
+
}
|
|
353
331
|
|
|
354
|
-
|
|
355
|
-
throw new Error('', {
|
|
356
|
-
cause: {
|
|
357
|
-
code: 'CHK_MSG_OBJ_GEN_105',
|
|
358
|
-
data: `invalid properties.menuType (valid values: ${ALL_MENU_TYPE.join(',')})`,
|
|
359
|
-
},
|
|
360
|
-
});
|
|
361
|
-
}
|
|
332
|
+
////////// studio_meta ////////////////
|
|
362
333
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
code: 'CHK_MSG_OBJ_GEN_106',
|
|
367
|
-
data: `missing properties.menuName`,
|
|
368
|
-
},
|
|
369
|
-
});
|
|
370
|
-
}
|
|
371
|
-
////////// studio_meta ////////////////
|
|
372
|
-
if (!doc.studio_meta) {
|
|
373
|
-
throw new Error('', {
|
|
374
|
-
cause: {
|
|
375
|
-
code: 'CHK_MSG_OBJ_GEN_112',
|
|
376
|
-
data: `missing studio_meta property`,
|
|
377
|
-
},
|
|
378
|
-
});
|
|
379
|
-
}
|
|
334
|
+
if (!doc.studio_meta) {
|
|
335
|
+
addValidationError('CHK_MSG_OBJ_GEN_112', 'missing studio_meta property');
|
|
336
|
+
} else {
|
|
380
337
|
if (!_.isObject(doc.studio_meta)) {
|
|
381
|
-
|
|
382
|
-
cause: {
|
|
383
|
-
code: 'CHK_MSG_OBJ_GEN_112',
|
|
384
|
-
data: `invalid studio_meta object`,
|
|
385
|
-
},
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
if (!doc.studio_meta.parentId) {
|
|
389
|
-
throw new Error('', {
|
|
390
|
-
cause: {
|
|
391
|
-
code: 'CHK_MSG_OBJ_GEN_114',
|
|
392
|
-
data: `missing studio_meta.parentId value`,
|
|
393
|
-
},
|
|
394
|
-
});
|
|
338
|
+
addValidationError('CHK_MSG_OBJ_GEN_112', 'invalid studio_meta object');
|
|
395
339
|
} else {
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
});
|
|
340
|
+
if (!doc.studio_meta.parentId) {
|
|
341
|
+
addValidationError('CHK_MSG_OBJ_GEN_114', 'missing studio_meta.parentId value');
|
|
342
|
+
} else {
|
|
343
|
+
let menuType = doc?.properties?.menuType === 'globals' ? 'globals' : doc?.properties?.menuType === 'table' ? 'database' : doc?.properties?.menuType === 'route' ? 'routes' : 'programs';
|
|
344
|
+
if (doc.studio_meta.parentId !== menuType && !progs_obj[doc.studio_meta.parentId]) {
|
|
345
|
+
addValidationError('CHK_MSG_OBJ_GEN_116', 'invalid studio_meta.parentId value');
|
|
346
|
+
}
|
|
404
347
|
}
|
|
405
348
|
}
|
|
349
|
+
}
|
|
406
350
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
351
|
+
const check_progFields = function () {
|
|
352
|
+
if (!doc.progFields) return;
|
|
353
|
+
|
|
354
|
+
var ids = [];
|
|
355
|
+
if (!_.isArray(doc.progFields)) {
|
|
356
|
+
addValidationError('CHK_MSG_OBJ_GEN_402', 'invalid progFields Array property');
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
for (let val of doc.progFields) {
|
|
361
|
+
if (!_.isObject(val)) {
|
|
362
|
+
addValidationError('CHK_MSG_OBJ_GEN_404', 'invalid progFields object property');
|
|
363
|
+
continue;
|
|
417
364
|
}
|
|
418
365
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
code: 'CHK_MSG_OBJ_GEN_404',
|
|
424
|
-
data: `invalid progFields object property`,
|
|
425
|
-
},
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
if (!val.id) {
|
|
429
|
-
throw new Error('', {
|
|
430
|
-
cause: {
|
|
431
|
-
code: 'CHK_MSG_OBJ_GEN_406',
|
|
432
|
-
data: `missing progFields.id property`,
|
|
433
|
-
},
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
if (ids.includes(val.id)) {
|
|
437
|
-
throw new Error('', {
|
|
438
|
-
cause: {
|
|
439
|
-
code: 'CHK_MSG_OBJ_GEN_408',
|
|
440
|
-
data: `${val.id} id must be unique in progFields property`,
|
|
441
|
-
},
|
|
442
|
-
});
|
|
443
|
-
}
|
|
444
|
-
ids.push(val.id);
|
|
445
|
-
if (!_.isObject(val.data)) {
|
|
446
|
-
throw new Error('', {
|
|
447
|
-
cause: {
|
|
448
|
-
code: 'CHK_MSG_OBJ_GEN_410',
|
|
449
|
-
data: `invalid progFields.data object property`,
|
|
450
|
-
},
|
|
451
|
-
});
|
|
452
|
-
}
|
|
366
|
+
if (!val.id) {
|
|
367
|
+
addValidationError('CHK_MSG_OBJ_GEN_406', 'missing progFields.id property');
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
453
370
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
},
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
if (!val.data.type) {
|
|
463
|
-
throw new Error('', {
|
|
464
|
-
cause: {
|
|
465
|
-
code: 'CHK_MSG_OBJ_GEN_414',
|
|
466
|
-
data: `invalid progFields.data.type property`,
|
|
467
|
-
},
|
|
468
|
-
});
|
|
469
|
-
}
|
|
470
|
-
if (!_.isObject(val.props)) {
|
|
471
|
-
throw new Error('', {
|
|
472
|
-
cause: {
|
|
473
|
-
code: 'CHK_MSG_OBJ_GEN_416',
|
|
474
|
-
data: `invalid progFields.props Object property`,
|
|
475
|
-
},
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
if (!val.props.fieldType) {
|
|
479
|
-
throw new Error('', {
|
|
480
|
-
cause: {
|
|
481
|
-
code: 'CHK_MSG_OBJ_GEN_418',
|
|
482
|
-
data: `invalid progFields.props.fieldType property`,
|
|
483
|
-
},
|
|
484
|
-
});
|
|
485
|
-
}
|
|
486
|
-
if (!_.isObject(val.props.propExpressions)) {
|
|
487
|
-
throw new Error('', {
|
|
488
|
-
cause: {
|
|
489
|
-
code: 'CHK_MSG_OBJ_GEN_4120',
|
|
490
|
-
data: `invalid val.props.propExpressions Object property`,
|
|
491
|
-
},
|
|
492
|
-
});
|
|
493
|
-
}
|
|
371
|
+
if (ids.includes(val.id)) {
|
|
372
|
+
addValidationError('CHK_MSG_OBJ_GEN_408', `${val.id} id must be unique in progFields property`);
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
ids.push(val.id);
|
|
494
376
|
|
|
495
|
-
|
|
377
|
+
if (!_.isObject(val.data)) {
|
|
378
|
+
addValidationError('CHK_MSG_OBJ_GEN_410', 'invalid progFields.data object property');
|
|
379
|
+
continue;
|
|
496
380
|
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
var ids = [];
|
|
501
|
-
if (!_.isArray(doc.progEvents)) {
|
|
502
|
-
throw new Error('', {
|
|
503
|
-
cause: {
|
|
504
|
-
code: 'CHK_MSG_OBJ_GEN_502',
|
|
505
|
-
data: `invalid progEvents Array property`,
|
|
506
|
-
},
|
|
507
|
-
});
|
|
381
|
+
|
|
382
|
+
if (!val.data.field_id) {
|
|
383
|
+
addValidationError('CHK_MSG_OBJ_GEN_412', 'invalid progFields.data.field_id property');
|
|
508
384
|
}
|
|
509
385
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
cause: {
|
|
514
|
-
code: 'CHK_MSG_OBJ_GEN_504',
|
|
515
|
-
data: `invalid progEvents object property`,
|
|
516
|
-
},
|
|
517
|
-
});
|
|
518
|
-
}
|
|
519
|
-
if (!val.id) {
|
|
520
|
-
throw new Error('', {
|
|
521
|
-
cause: {
|
|
522
|
-
code: 'CHK_MSG_OBJ_GEN_506',
|
|
523
|
-
data: `missing progEvents.id property`,
|
|
524
|
-
},
|
|
525
|
-
});
|
|
526
|
-
}
|
|
527
|
-
if (ids.includes(val.id)) {
|
|
528
|
-
throw new Error('', {
|
|
529
|
-
cause: {
|
|
530
|
-
code: 'CHK_MSG_OBJ_GEN_508',
|
|
531
|
-
data: `${val.id} id must be unique in progEvents property`,
|
|
532
|
-
},
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
ids.push(val.id);
|
|
536
|
-
if (!_.isObject(val.data)) {
|
|
537
|
-
throw new Error('', {
|
|
538
|
-
cause: {
|
|
539
|
-
code: 'CHK_MSG_OBJ_GEN_510',
|
|
540
|
-
data: `invalid progEvents.data object property`,
|
|
541
|
-
},
|
|
542
|
-
});
|
|
543
|
-
}
|
|
386
|
+
if (!val.data.type) {
|
|
387
|
+
addValidationError('CHK_MSG_OBJ_GEN_414', 'invalid progFields.data.type property');
|
|
388
|
+
}
|
|
544
389
|
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
data: `undefined progEvents.data.condition string property`,
|
|
550
|
-
},
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
if (typeof val.data.event_name === 'undefined') {
|
|
554
|
-
throw new Error('', {
|
|
555
|
-
cause: {
|
|
556
|
-
code: 'CHK_MSG_OBJ_GEN_514',
|
|
557
|
-
data: `undefined progEvents.data.event_name string property`,
|
|
558
|
-
},
|
|
559
|
-
});
|
|
560
|
-
}
|
|
561
|
-
if (typeof val.data.properties === 'undefined') {
|
|
562
|
-
throw new Error('', {
|
|
563
|
-
cause: {
|
|
564
|
-
code: 'CHK_MSG_OBJ_GEN_516',
|
|
565
|
-
data: `undefined progEvents.data.properties string property`,
|
|
566
|
-
},
|
|
567
|
-
});
|
|
568
|
-
}
|
|
569
|
-
if (typeof val.data.type === 'undefined') {
|
|
570
|
-
throw new Error('', {
|
|
571
|
-
cause: {
|
|
572
|
-
code: 'CHK_MSG_OBJ_GEN_518',
|
|
573
|
-
data: `undefined progEvents.data.type string property`,
|
|
574
|
-
},
|
|
575
|
-
});
|
|
576
|
-
}
|
|
390
|
+
if (!_.isObject(val.props)) {
|
|
391
|
+
addValidationError('CHK_MSG_OBJ_GEN_416', 'invalid progFields.props Object property');
|
|
392
|
+
continue;
|
|
393
|
+
}
|
|
577
394
|
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
code: 'CHK_MSG_OBJ_GEN_522',
|
|
582
|
-
data: `invalid progEvents.data.parameters Array property`,
|
|
583
|
-
},
|
|
584
|
-
});
|
|
585
|
-
}
|
|
395
|
+
if (!val.props.fieldType) {
|
|
396
|
+
addValidationError('CHK_MSG_OBJ_GEN_418', 'invalid progFields.props.fieldType property');
|
|
397
|
+
}
|
|
586
398
|
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
}
|
|
399
|
+
if (!_.isObject(val.props.propExpressions)) {
|
|
400
|
+
addValidationError('CHK_MSG_OBJ_GEN_4120', 'invalid val.props.propExpressions Object property');
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
check_triggers(val.workflow);
|
|
404
|
+
}
|
|
405
|
+
};
|
|
595
406
|
|
|
596
|
-
|
|
407
|
+
const check_progEvents = function () {
|
|
408
|
+
if (!doc.progEvents) return;
|
|
409
|
+
|
|
410
|
+
var ids = [];
|
|
411
|
+
if (!_.isArray(doc.progEvents)) {
|
|
412
|
+
addValidationError('CHK_MSG_OBJ_GEN_502', 'invalid progEvents Array property');
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
for (let val of doc.progEvents) {
|
|
417
|
+
if (!_.isObject(val)) {
|
|
418
|
+
addValidationError('CHK_MSG_OBJ_GEN_504', 'invalid progEvents object property');
|
|
419
|
+
continue;
|
|
597
420
|
}
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
if (!_.isArray(workflow)) {
|
|
603
|
-
throw new Error('', {
|
|
604
|
-
cause: {
|
|
605
|
-
code: 'CHK_MSG_OBJ_GEN_850',
|
|
606
|
-
data: `invalid workflow Array property`,
|
|
607
|
-
},
|
|
608
|
-
});
|
|
421
|
+
|
|
422
|
+
if (!val.id) {
|
|
423
|
+
addValidationError('CHK_MSG_OBJ_GEN_506', 'missing progEvents.id property');
|
|
424
|
+
continue;
|
|
609
425
|
}
|
|
610
426
|
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
data: `invalid workflow item object property`,
|
|
617
|
-
},
|
|
618
|
-
});
|
|
619
|
-
}
|
|
427
|
+
if (ids.includes(val.id)) {
|
|
428
|
+
addValidationError('CHK_MSG_OBJ_GEN_508', `${val.id} id must be unique in progEvents property`);
|
|
429
|
+
continue;
|
|
430
|
+
}
|
|
431
|
+
ids.push(val.id);
|
|
620
432
|
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
data: `missing workflow.id property`,
|
|
626
|
-
},
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
|
-
if (ids.includes(val.id)) {
|
|
630
|
-
throw new Error('', {
|
|
631
|
-
cause: {
|
|
632
|
-
code: 'CHK_MSG_OBJ_GEN_856',
|
|
633
|
-
data: `${val.id} id must be unique in workflow property`,
|
|
634
|
-
},
|
|
635
|
-
});
|
|
636
|
-
}
|
|
637
|
-
ids.push(val.id);
|
|
433
|
+
if (!_.isObject(val.data)) {
|
|
434
|
+
addValidationError('CHK_MSG_OBJ_GEN_510', 'invalid progEvents.data object property');
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
638
437
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
code: 'CHK_MSG_OBJ_GEN_858',
|
|
643
|
-
data: `invalid workflow.data Object property`,
|
|
644
|
-
},
|
|
645
|
-
});
|
|
646
|
-
}
|
|
438
|
+
if (typeof val.data.condition === 'undefined') {
|
|
439
|
+
addValidationError('CHK_MSG_OBJ_GEN_512', 'undefined progEvents.data.condition string property');
|
|
440
|
+
}
|
|
647
441
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
cause: {
|
|
651
|
-
code: 'CHK_MSG_OBJ_GEN_860',
|
|
652
|
-
data: `invalid workflow.props item object property`,
|
|
653
|
-
},
|
|
654
|
-
});
|
|
655
|
-
}
|
|
442
|
+
if (typeof val.data.event_name === 'undefined') {
|
|
443
|
+
addValidationError('CHK_MSG_OBJ_GEN_514', 'undefined progEvents.data.event_name string property');
|
|
656
444
|
}
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
if (!_.isObject(doc.progDataSource)) {
|
|
661
|
-
throw new Error('', {
|
|
662
|
-
cause: {
|
|
663
|
-
code: 'CHK_MSG_OBJ_GEN_602',
|
|
664
|
-
data: `invalid progDataSource Object property`,
|
|
665
|
-
},
|
|
666
|
-
});
|
|
445
|
+
|
|
446
|
+
if (typeof val.data.properties === 'undefined') {
|
|
447
|
+
addValidationError('CHK_MSG_OBJ_GEN_516', 'undefined progEvents.data.properties string property');
|
|
667
448
|
}
|
|
668
449
|
|
|
669
|
-
if (typeof
|
|
670
|
-
|
|
671
|
-
cause: {
|
|
672
|
-
code: 'CHK_MSG_OBJ_GEN_604',
|
|
673
|
-
data: `undefined progDataSource.dataSourceType string property`,
|
|
674
|
-
},
|
|
675
|
-
});
|
|
450
|
+
if (typeof val.data.type === 'undefined') {
|
|
451
|
+
addValidationError('CHK_MSG_OBJ_GEN_518', 'undefined progEvents.data.type string property');
|
|
676
452
|
}
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
if (!_.isArray(doc.progUi)) {
|
|
681
|
-
throw new Error('', {
|
|
682
|
-
cause: {
|
|
683
|
-
code: 'CHK_MSG_OBJ_GEN_702',
|
|
684
|
-
data: `invalid progUi Array property`,
|
|
685
|
-
},
|
|
686
|
-
});
|
|
453
|
+
|
|
454
|
+
if (!_.isArray(val.data.parameters)) {
|
|
455
|
+
addValidationError('CHK_MSG_OBJ_GEN_522', 'invalid progEvents.data.parameters Array property');
|
|
687
456
|
}
|
|
688
457
|
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
if (!_.isObject(item)) {
|
|
693
|
-
throw new Error('', {
|
|
694
|
-
cause: {
|
|
695
|
-
code: 'CHK_MSG_OBJ_GEN_704',
|
|
696
|
-
data: `invalid progUi item Object property`,
|
|
697
|
-
},
|
|
698
|
-
});
|
|
699
|
-
}
|
|
458
|
+
if (!_.isObject(val.props)) {
|
|
459
|
+
addValidationError('CHK_MSG_OBJ_GEN_522', 'invalid progEvents.props Object property');
|
|
460
|
+
}
|
|
700
461
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
code: 'CHK_MSG_OBJ_GEN_706',
|
|
705
|
-
data: `invalid progUi attributes item Object property`,
|
|
706
|
-
},
|
|
707
|
-
});
|
|
708
|
-
}
|
|
462
|
+
check_triggers(val.workflow);
|
|
463
|
+
}
|
|
464
|
+
};
|
|
709
465
|
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
cause: {
|
|
713
|
-
code: 'CHK_MSG_OBJ_GEN_708',
|
|
714
|
-
data: `undefined progUi type item string property`,
|
|
715
|
-
},
|
|
716
|
-
});
|
|
717
|
-
}
|
|
718
|
-
if (typeof item.tagName === 'undefined') {
|
|
719
|
-
throw new Error('', {
|
|
720
|
-
cause: {
|
|
721
|
-
code: 'CHK_MSG_OBJ_GEN_710',
|
|
722
|
-
data: `undefined progUi tagName item string property`,
|
|
723
|
-
},
|
|
724
|
-
});
|
|
725
|
-
}
|
|
466
|
+
const check_triggers = function (workflow) {
|
|
467
|
+
if (!workflow) return;
|
|
726
468
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
code: 'CHK_MSG_OBJ_GEN_714',
|
|
739
|
-
data: `${item.id} id must be unique in progUi property`,
|
|
740
|
-
},
|
|
741
|
-
});
|
|
742
|
-
}
|
|
743
|
-
ids.push(item.id);
|
|
469
|
+
var ids = [];
|
|
470
|
+
if (!_.isArray(workflow)) {
|
|
471
|
+
addValidationError('CHK_MSG_OBJ_GEN_850', 'invalid workflow Array property');
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
for (let val of workflow) {
|
|
476
|
+
if (!_.isObject(val)) {
|
|
477
|
+
addValidationError('CHK_MSG_OBJ_GEN_852', 'invalid workflow item object property');
|
|
478
|
+
continue;
|
|
479
|
+
}
|
|
744
480
|
|
|
745
|
-
|
|
481
|
+
if (!val.id) {
|
|
482
|
+
addValidationError('CHK_MSG_OBJ_GEN_854', 'missing workflow.id property');
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
746
485
|
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
486
|
+
if (ids.includes(val.id)) {
|
|
487
|
+
addValidationError('CHK_MSG_OBJ_GEN_856', `${val.id} id must be unique in workflow property`);
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
ids.push(val.id);
|
|
491
|
+
|
|
492
|
+
if (!_.isObject(val.data)) {
|
|
493
|
+
addValidationError('CHK_MSG_OBJ_GEN_858', 'invalid workflow.data Object property');
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
if (!_.isObject(val.props)) {
|
|
497
|
+
addValidationError('CHK_MSG_OBJ_GEN_860', 'invalid workflow.props item object property');
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
};
|
|
501
|
+
|
|
502
|
+
const check_progDataSource = function () {
|
|
503
|
+
if (!doc.progDataSource) return;
|
|
504
|
+
|
|
505
|
+
if (!_.isObject(doc.progDataSource)) {
|
|
506
|
+
addValidationError('CHK_MSG_OBJ_GEN_602', 'invalid progDataSource Object property');
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
if (typeof doc.progDataSource.dataSourceType === 'undefined') {
|
|
511
|
+
addValidationError('CHK_MSG_OBJ_GEN_604', 'undefined progDataSource.dataSourceType string property');
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
const check_progUi = function () {
|
|
516
|
+
if (!doc.progUi) return;
|
|
517
|
+
|
|
518
|
+
if (!_.isArray(doc.progUi)) {
|
|
519
|
+
addValidationError('CHK_MSG_OBJ_GEN_702', 'invalid progUi Array property');
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
var ids = [];
|
|
524
|
+
const run_tree = function (node) {
|
|
525
|
+
for (let item of node) {
|
|
526
|
+
if (!_.isObject(item)) {
|
|
527
|
+
addValidationError('CHK_MSG_OBJ_GEN_704', 'invalid progUi item Object property');
|
|
528
|
+
continue;
|
|
750
529
|
}
|
|
751
|
-
|
|
752
|
-
|
|
530
|
+
|
|
531
|
+
if (!_.isObject(item.attributes)) {
|
|
532
|
+
addValidationError('CHK_MSG_OBJ_GEN_706', 'invalid progUi attributes item Object property');
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
if (typeof item.type === 'undefined') {
|
|
536
|
+
addValidationError('CHK_MSG_OBJ_GEN_708', 'undefined progUi type item string property');
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
if (typeof item.tagName === 'undefined') {
|
|
540
|
+
addValidationError('CHK_MSG_OBJ_GEN_710', 'undefined progUi tagName item string property');
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
if (!item.id) {
|
|
544
|
+
addValidationError('CHK_MSG_OBJ_GEN_712', 'missing progUi id item property');
|
|
545
|
+
continue;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
if (ids.includes(item.id)) {
|
|
549
|
+
addValidationError('CHK_MSG_OBJ_GEN_714', `${item.id} id must be unique in progUi property`);
|
|
550
|
+
continue;
|
|
551
|
+
}
|
|
552
|
+
ids.push(item.id);
|
|
553
|
+
|
|
554
|
+
check_triggers(item.workflow);
|
|
555
|
+
|
|
556
|
+
if (item.children) {
|
|
557
|
+
run_tree(item.children);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
753
560
|
};
|
|
561
|
+
run_tree(doc.progUi);
|
|
562
|
+
};
|
|
754
563
|
|
|
564
|
+
// Only proceed with menu type validation if we have the required properties
|
|
565
|
+
if (doc.properties && doc.properties.menuType) {
|
|
755
566
|
switch (doc.properties.menuType) {
|
|
756
567
|
case 'table':
|
|
757
568
|
if (!doc.tableFields) {
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
}
|
|
765
|
-
///////////// tableFields
|
|
766
|
-
if (!_.isArray(doc.tableFields)) {
|
|
767
|
-
throw new Error('', {
|
|
768
|
-
cause: {
|
|
769
|
-
code: 'CHK_MSG_OBJ_GEN_202',
|
|
770
|
-
data: `invalid tableFields Array property`,
|
|
771
|
-
},
|
|
772
|
-
});
|
|
773
|
-
}
|
|
774
|
-
var ids = [];
|
|
569
|
+
addValidationError('CHK_MSG_OBJ_GEN_200', 'missing tableFields property');
|
|
570
|
+
} else {
|
|
571
|
+
if (!_.isArray(doc.tableFields)) {
|
|
572
|
+
addValidationError('CHK_MSG_OBJ_GEN_202', 'invalid tableFields Array property');
|
|
573
|
+
} else {
|
|
574
|
+
var ids = [];
|
|
775
575
|
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
throw new Error('', {
|
|
812
|
-
cause: {
|
|
813
|
-
code: 'CHK_MSG_OBJ_GEN_212',
|
|
814
|
-
data: `invalid tableFields.data.field_id property`,
|
|
815
|
-
},
|
|
816
|
-
});
|
|
817
|
-
}
|
|
818
|
-
if (!_.isObject(val.props)) {
|
|
819
|
-
throw new Error('', {
|
|
820
|
-
cause: {
|
|
821
|
-
code: 'CHK_MSG_OBJ_GEN_214',
|
|
822
|
-
data: `invalid tableFields.props object property`,
|
|
823
|
-
},
|
|
824
|
-
});
|
|
825
|
-
}
|
|
826
|
-
if (!val.props.fieldType) {
|
|
827
|
-
throw new Error('', {
|
|
828
|
-
cause: {
|
|
829
|
-
code: 'CHK_MSG_OBJ_GEN_216',
|
|
830
|
-
data: `invalid tableFields.props.fieldType property`,
|
|
831
|
-
},
|
|
832
|
-
});
|
|
833
|
-
}
|
|
834
|
-
///////////// tableIndexes
|
|
835
|
-
if (!_.isArray(doc.tableIndexes)) {
|
|
836
|
-
throw new Error('', {
|
|
837
|
-
cause: {
|
|
838
|
-
code: 'CHK_MSG_OBJ_GEN_302',
|
|
839
|
-
data: `invalid tableIndexes Array property`,
|
|
840
|
-
},
|
|
841
|
-
});
|
|
576
|
+
for (let val of doc.tableFields) {
|
|
577
|
+
if (!_.isObject(val)) {
|
|
578
|
+
addValidationError('CHK_MSG_OBJ_GEN_204', 'invalid tableFields object property');
|
|
579
|
+
continue;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
if (!val.id) {
|
|
583
|
+
addValidationError('CHK_MSG_OBJ_GEN_206', 'missing tableFields.id property');
|
|
584
|
+
continue;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
if (ids.includes(val.id)) {
|
|
588
|
+
addValidationError('CHK_MSG_OBJ_GEN_208', `${val.id} id must be unique in tableFields property`);
|
|
589
|
+
continue;
|
|
590
|
+
}
|
|
591
|
+
ids.push(val.id);
|
|
592
|
+
|
|
593
|
+
if (!_.isObject(val.data)) {
|
|
594
|
+
addValidationError('CHK_MSG_OBJ_GEN_210', 'invalid tableFields.data object property');
|
|
595
|
+
continue;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
if (!val.data.field_id) {
|
|
599
|
+
addValidationError('CHK_MSG_OBJ_GEN_212', 'invalid tableFields.data.field_id property');
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
if (!_.isObject(val.props)) {
|
|
603
|
+
addValidationError('CHK_MSG_OBJ_GEN_214', 'invalid tableFields.props object property');
|
|
604
|
+
continue;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
if (!val.props.fieldType) {
|
|
608
|
+
addValidationError('CHK_MSG_OBJ_GEN_216', 'invalid tableFields.props.fieldType property');
|
|
609
|
+
}
|
|
610
|
+
}
|
|
842
611
|
}
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
// tableIndexes validation
|
|
615
|
+
if (!doc.tableIndexes) {
|
|
616
|
+
addValidationError('CHK_MSG_OBJ_GEN_302', 'missing tableIndexes property');
|
|
617
|
+
} else if (!_.isArray(doc.tableIndexes)) {
|
|
618
|
+
addValidationError('CHK_MSG_OBJ_GEN_302', 'invalid tableIndexes Array property');
|
|
619
|
+
} else {
|
|
843
620
|
var index_ids = [];
|
|
844
621
|
for (let val of doc.tableIndexes) {
|
|
845
622
|
if (!_.isObject(val)) {
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
code: 'CHK_MSG_OBJ_GEN_304',
|
|
849
|
-
data: `invalid tableIndexes object property`,
|
|
850
|
-
},
|
|
851
|
-
});
|
|
623
|
+
addValidationError('CHK_MSG_OBJ_GEN_304', 'invalid tableIndexes object property');
|
|
624
|
+
continue;
|
|
852
625
|
}
|
|
626
|
+
|
|
853
627
|
if (!val.id) {
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
code: 'CHK_MSG_OBJ_GEN_306',
|
|
857
|
-
data: `missing tableIndexes.id property`,
|
|
858
|
-
},
|
|
859
|
-
});
|
|
628
|
+
addValidationError('CHK_MSG_OBJ_GEN_306', 'missing tableIndexes.id property');
|
|
629
|
+
continue;
|
|
860
630
|
}
|
|
631
|
+
|
|
861
632
|
if (index_ids.includes(val.id)) {
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
code: 'CHK_MSG_OBJ_GEN_308',
|
|
865
|
-
data: `${val.id} id must be unique in tableIndexes property`,
|
|
866
|
-
},
|
|
867
|
-
});
|
|
633
|
+
addValidationError('CHK_MSG_OBJ_GEN_308', `${val.id} id must be unique in tableIndexes property`);
|
|
634
|
+
continue;
|
|
868
635
|
}
|
|
869
636
|
index_ids.push(val.id);
|
|
637
|
+
|
|
870
638
|
if (!_.isObject(val.data)) {
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
code: 'CHK_MSG_OBJ_GEN_310',
|
|
874
|
-
data: `invalid tableIndexes.data object property`,
|
|
875
|
-
},
|
|
876
|
-
});
|
|
639
|
+
addValidationError('CHK_MSG_OBJ_GEN_310', 'invalid tableIndexes.data object property');
|
|
640
|
+
continue;
|
|
877
641
|
}
|
|
642
|
+
|
|
878
643
|
if (!val.data.name) {
|
|
879
|
-
|
|
880
|
-
cause: {
|
|
881
|
-
code: 'CHK_MSG_OBJ_GEN_312',
|
|
882
|
-
data: `invalid tableIndexes.data.name property`,
|
|
883
|
-
},
|
|
884
|
-
});
|
|
644
|
+
addValidationError('CHK_MSG_OBJ_GEN_312', 'invalid tableIndexes.data.name property');
|
|
885
645
|
}
|
|
646
|
+
|
|
886
647
|
if (!_.isArray(val.data.keys)) {
|
|
887
|
-
|
|
888
|
-
cause: {
|
|
889
|
-
code: 'CHK_MSG_OBJ_GEN_312',
|
|
890
|
-
data: `invalid tableIndexes.data.keys Array property`,
|
|
891
|
-
},
|
|
892
|
-
});
|
|
648
|
+
addValidationError('CHK_MSG_OBJ_GEN_312', 'invalid tableIndexes.data.keys Array property');
|
|
893
649
|
}
|
|
894
650
|
}
|
|
895
651
|
}
|
|
896
|
-
|
|
897
652
|
break;
|
|
898
653
|
|
|
899
654
|
case 'globals':
|
|
@@ -916,21 +671,12 @@ export const check_structure = function (doc) {
|
|
|
916
671
|
check_progDataSource();
|
|
917
672
|
check_progUi();
|
|
918
673
|
|
|
919
|
-
if (typeof doc.properties.uiFramework === 'undefined') {
|
|
920
|
-
|
|
921
|
-
cause: {
|
|
922
|
-
code: 'CHK_MSG_OBJ_GEN_120',
|
|
923
|
-
data: `undefined properties.uiFramework string property`,
|
|
924
|
-
},
|
|
925
|
-
});
|
|
674
|
+
if (doc.properties && typeof doc.properties.uiFramework === 'undefined') {
|
|
675
|
+
addValidationError('CHK_MSG_OBJ_GEN_120', 'undefined properties.uiFramework string property');
|
|
926
676
|
}
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
code: 'CHK_MSG_OBJ_GEN_122',
|
|
931
|
-
data: `undefined properties.renderType string property`,
|
|
932
|
-
},
|
|
933
|
-
});
|
|
677
|
+
|
|
678
|
+
if (doc.properties && typeof doc.properties.renderType === 'undefined') {
|
|
679
|
+
addValidationError('CHK_MSG_OBJ_GEN_122', 'undefined properties.renderType string property');
|
|
934
680
|
}
|
|
935
681
|
break;
|
|
936
682
|
|
|
@@ -946,21 +692,8 @@ export const check_structure = function (doc) {
|
|
|
946
692
|
default:
|
|
947
693
|
break;
|
|
948
694
|
}
|
|
949
|
-
} catch (err) {
|
|
950
|
-
if (err.cause) {
|
|
951
|
-
const { code, data } = err.cause;
|
|
952
|
-
ret.push({
|
|
953
|
-
code,
|
|
954
|
-
data,
|
|
955
|
-
type: 'E',
|
|
956
|
-
category: 'document',
|
|
957
|
-
structure_error: true,
|
|
958
|
-
});
|
|
959
|
-
} else {
|
|
960
|
-
console.error(err);
|
|
961
|
-
debugger;
|
|
962
|
-
}
|
|
963
695
|
}
|
|
696
|
+
|
|
964
697
|
return ret;
|
|
965
698
|
};
|
|
966
699
|
|
|
@@ -3319,7 +3052,7 @@ const find_trigger_property_value_in_progs = function (doc, triggers_arr, proper
|
|
|
3319
3052
|
|
|
3320
3053
|
const run_program_search = function (prog) {
|
|
3321
3054
|
// find in events
|
|
3322
|
-
if (prog
|
|
3055
|
+
if (prog?.progEvents && !_.isEmpty(prog.progEvents)) {
|
|
3323
3056
|
for (let event_item of prog.progEvents) {
|
|
3324
3057
|
if (event_item.workflow) {
|
|
3325
3058
|
find_in_triggers(prog, event_item.workflow);
|
|
@@ -3328,7 +3061,7 @@ const find_trigger_property_value_in_progs = function (doc, triggers_arr, proper
|
|
|
3328
3061
|
}
|
|
3329
3062
|
|
|
3330
3063
|
// find in fields
|
|
3331
|
-
if (prog
|
|
3064
|
+
if (prog?.progFields && !_.isEmpty(prog.progFields)) {
|
|
3332
3065
|
for (let field_item of prog.progFields) {
|
|
3333
3066
|
if (field_item.workflow) {
|
|
3334
3067
|
find_in_triggers(prog, field_item.workflow);
|
|
@@ -3337,7 +3070,7 @@ const find_trigger_property_value_in_progs = function (doc, triggers_arr, proper
|
|
|
3337
3070
|
}
|
|
3338
3071
|
|
|
3339
3072
|
// find in ui workflow
|
|
3340
|
-
if (prog
|
|
3073
|
+
if (prog?.progUi && !_.isEmpty(prog.progUi)) {
|
|
3341
3074
|
const run_tree = function (node) {
|
|
3342
3075
|
try {
|
|
3343
3076
|
for (let item of node) {
|