@budibase/server 1.0.151 → 1.0.154

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.
Files changed (172) hide show
  1. package/builder/assets/{index.e05b34c9.js → index.5d695b0f.js} +1 -1
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +144 -123
  4. package/coverage/coverage-final.json +3 -3
  5. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/index.html +1 -1
  15. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  44. package/coverage/lcov-report/api/index.html +1 -1
  45. package/coverage/lcov-report/api/index.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/index.html +1 -1
  57. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/validators.js.html +2 -5
  72. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  74. package/coverage/lcov-report/automations/actions.js.html +1 -1
  75. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  76. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  77. package/coverage/lcov-report/automations/index.html +1 -1
  78. package/coverage/lcov-report/automations/index.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/index.html +1 -1
  86. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  105. package/coverage/lcov-report/constants/index.html +5 -5
  106. package/coverage/lcov-report/constants/index.js.html +19 -4
  107. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  108. package/coverage/lcov-report/constants/screens.js.html +1 -1
  109. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  110. package/coverage/lcov-report/db/index.html +1 -1
  111. package/coverage/lcov-report/db/index.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  116. package/coverage/lcov-report/db/newid.js.html +1 -1
  117. package/coverage/lcov-report/db/utils.js.html +1 -1
  118. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  119. package/coverage/lcov-report/events/index.html +1 -1
  120. package/coverage/lcov-report/events/index.js.html +1 -1
  121. package/coverage/lcov-report/events/utils.js.html +1 -1
  122. package/coverage/lcov-report/index.html +21 -21
  123. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  124. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  125. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  126. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  127. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  128. package/coverage/lcov-report/middleware/index.html +1 -1
  129. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  130. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  131. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  132. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  133. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  134. package/coverage/lcov-report/threads/automation.js.html +117 -63
  135. package/coverage/lcov-report/threads/index.html +19 -19
  136. package/coverage/lcov-report/threads/query.js.html +1 -1
  137. package/coverage/lcov-report/threads/utils.js.html +1 -1
  138. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  139. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  140. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  141. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  142. package/coverage/lcov-report/utilities/global.js.html +1 -1
  143. package/coverage/lcov-report/utilities/index.html +1 -1
  144. package/coverage/lcov-report/utilities/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  146. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  147. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  148. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  150. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  151. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  152. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  153. package/coverage/lcov-report/utilities/security.js.html +1 -1
  154. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  156. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  157. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  158. package/coverage/lcov-report/utilities/users.js.html +1 -1
  159. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  160. package/coverage/lcov.info +242 -207
  161. package/dist/api/controllers/row/index.js +12 -17
  162. package/dist/api/routes/utils/validators.js +0 -1
  163. package/dist/constants/index.js +4 -0
  164. package/dist/package.json +5 -5
  165. package/dist/threads/automation.js +46 -21
  166. package/dist/tsconfig.build.tsbuildinfo +1 -1
  167. package/package.json +6 -6
  168. package/src/api/controllers/row/index.ts +19 -15
  169. package/src/api/routes/tests/row.spec.js +87 -5
  170. package/src/api/routes/utils/validators.js +0 -1
  171. package/src/constants/index.js +5 -0
  172. package/src/threads/automation.js +49 -31
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">57.63% </span>
26
+ <span class="strong">50.6% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>83/144</span>
28
+ <span class='fraction'>83/164</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">32.3% </span>
33
+ <span class="strong">26.66% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>21/65</span>
35
+ <span class='fraction'>20/75</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">81.81% </span>
40
+ <span class="strong">69.23% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/11</span>
42
+ <span class='fraction'>9/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">57.34% </span>
47
+ <span class="strong">50.3% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>82/143</span>
49
+ <span class='fraction'>82/163</span>
50
50
  </div>
51
51
 
52
52
 
@@ -391,7 +391,25 @@
391
391
  <a name='L326'></a><a href='#L326'>326</a>
392
392
  <a name='L327'></a><a href='#L327'>327</a>
393
393
  <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
395
413
  <span class="cline-any cline-yes">3x</span>
396
414
  <span class="cline-any cline-yes">3x</span>
397
415
  <span class="cline-any cline-yes">3x</span>
@@ -411,6 +429,41 @@
411
429
  <span class="cline-any cline-yes">3x</span>
412
430
  <span class="cline-any cline-neutral">&nbsp;</span>
413
431
  <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-no">&nbsp;</span>
433
+ <span class="cline-any cline-no">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-no">&nbsp;</span>
437
+ <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-no">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
446
+ <span class="cline-any cline-no">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-neutral">&nbsp;</span>
450
+ <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-no">&nbsp;</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-no">&nbsp;</span>
458
+ <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-no">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-no">&nbsp;</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
463
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
467
  <span class="cline-any cline-neutral">&nbsp;</span>
415
468
  <span class="cline-any cline-neutral">&nbsp;</span>
416
469
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -502,6 +555,8 @@
502
555
  <span class="cline-any cline-yes">5x</span>
503
556
  <span class="cline-any cline-neutral">&nbsp;</span>
504
557
  <span class="cline-any cline-yes">5x</span>
558
+ <span class="cline-any cline-yes">5x</span>
559
+ <span class="cline-any cline-yes">5x</span>
505
560
  <span class="cline-any cline-no">&nbsp;</span>
506
561
  <span class="cline-any cline-no">&nbsp;</span>
507
562
  <span class="cline-any cline-no">&nbsp;</span>
@@ -509,15 +564,11 @@
509
564
  <span class="cline-any cline-neutral">&nbsp;</span>
510
565
  <span class="cline-any cline-yes">5x</span>
511
566
  <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-yes">5x</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-no">&nbsp;</span>
516
568
  <span class="cline-any cline-neutral">&nbsp;</span>
517
569
  <span class="cline-any cline-neutral">&nbsp;</span>
518
570
  <span class="cline-any cline-yes">5x</span>
519
571
  <span class="cline-any cline-yes">5x</span>
520
- <span class="cline-any cline-yes">5x</span>
521
572
  <span class="cline-any cline-neutral">&nbsp;</span>
522
573
  <span class="cline-any cline-neutral">&nbsp;</span>
523
574
  <span class="cline-any cline-yes">5x</span>
@@ -525,17 +576,10 @@
525
576
  <span class="cline-any cline-neutral">&nbsp;</span>
526
577
  <span class="cline-any cline-neutral">&nbsp;</span>
527
578
  <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
579
  <span class="cline-any cline-neutral">&nbsp;</span>
533
580
  <span class="cline-any cline-no">&nbsp;</span>
534
581
  <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-no">&nbsp;</span>
539
583
  <span class="cline-any cline-neutral">&nbsp;</span>
540
584
  <span class="cline-any cline-no">&nbsp;</span>
541
585
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -599,20 +643,12 @@
599
643
  <span class="cline-any cline-neutral">&nbsp;</span>
600
644
  <span class="cline-any cline-no">&nbsp;</span>
601
645
  <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
646
  <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
647
  <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
648
  <span class="cline-any cline-no">&nbsp;</span>
614
649
  <span class="cline-any cline-neutral">&nbsp;</span>
615
650
  <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-no">&nbsp;</span>
616
652
  <span class="cline-any cline-neutral">&nbsp;</span>
617
653
  <span class="cline-any cline-neutral">&nbsp;</span>
618
654
  <span class="cline-any cline-no">&nbsp;</span>
@@ -729,7 +765,7 @@ const { DocumentTypes } = require("../db/utils")
729
765
  const { doInTenant } = require("@budibase/backend-core/tenancy")
730
766
  const { definitions: triggerDefs } = require("../automations/triggerInfo")
731
767
  const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
732
- const { AutomationErrors } = require("../constants")
768
+ const { AutomationErrors, LoopStepTypes } = require("../constants")
733
769
  const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId
734
770
  const LOOP_STEP_ID = actions.ACTION_DEFINITIONS.LOOP.stepId
735
771
  &nbsp;
@@ -738,6 +774,41 @@ const STOPPED_STATUS = { success: false, status: "STOPPED" }
738
774
  const { cloneDeep } = require("lodash/fp")
739
775
  const env = require("../environment")
740
776
  &nbsp;
777
+ function <span class="fstat-no" title="function not covered" >typecastForLooping(</span>loopStep, input) {
778
+ <span class="cstat-no" title="statement not covered" > if (!input || !input.binding) {</span>
779
+ <span class="cstat-no" title="statement not covered" > return null</span>
780
+ }
781
+ const isArray = <span class="cstat-no" title="statement not covered" >Array.isArray(input.binding),</span>
782
+ isString = <span class="cstat-no" title="statement not covered" >typeof input.binding === "string"</span>
783
+ <span class="cstat-no" title="statement not covered" > try {</span>
784
+ <span class="cstat-no" title="statement not covered" > switch (loopStep.inputs.option) {</span>
785
+ case LoopStepTypes.ARRAY:
786
+ <span class="cstat-no" title="statement not covered" > if (isString) {</span>
787
+ <span class="cstat-no" title="statement not covered" > return JSON.parse(input.binding)</span>
788
+ }
789
+ <span class="cstat-no" title="statement not covered" > break</span>
790
+ case LoopStepTypes.STRING:
791
+ <span class="cstat-no" title="statement not covered" > if (isArray) {</span>
792
+ <span class="cstat-no" title="statement not covered" > return input.binding.join(",")</span>
793
+ }
794
+ <span class="cstat-no" title="statement not covered" > break</span>
795
+ }
796
+ } catch (err) {
797
+ <span class="cstat-no" title="statement not covered" > throw new Error("Unable to cast to correct type")</span>
798
+ }
799
+ <span class="cstat-no" title="statement not covered" > return input.binding</span>
800
+ }
801
+ &nbsp;
802
+ function <span class="fstat-no" title="function not covered" >getLoopIterations(</span>loopStep, input) {
803
+ const binding = <span class="cstat-no" title="statement not covered" >typecastForLooping(loopStep, input)</span>
804
+ <span class="cstat-no" title="statement not covered" > if (!loopStep || !binding) {</span>
805
+ <span class="cstat-no" title="statement not covered" > return 1</span>
806
+ }
807
+ <span class="cstat-no" title="statement not covered" > return Array.isArray(binding)</span>
808
+ ? binding.length
809
+ : automationUtils.stringSplit(binding).length
810
+ }
811
+ &nbsp;
741
812
  /**
742
813
  * The automation orchestrator is a class responsible for executing automations.
743
814
  * It handles the context of the automation and makes sure each step gets the correct
@@ -828,7 +899,9 @@ class Orchestrator {
828
899
  let loopSteps = []
829
900
  for (let step of automation.definition.steps) {
830
901
  stepCount++
831
- let input
902
+ let input,
903
+ iterations = 1,
904
+ iterationCount = 0
832
905
  <span class="missing-if-branch" title="if path not taken" >I</span>if (step.stepId === LOOP_STEP_ID) {
833
906
  <span class="cstat-no" title="statement not covered" > loopStep = step</span>
834
907
  <span class="cstat-no" title="statement not covered" > loopStepNumber = stepCount</span>
@@ -837,13 +910,9 @@ class Orchestrator {
837
910
  &nbsp;
838
911
  <span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep) {
839
912
  <span class="cstat-no" title="statement not covered" > input = await processObject(loopStep.inputs, this._context)</span>
913
+ <span class="cstat-no" title="statement not covered" > iterations = getLoopIterations(loopStep, input)</span>
840
914
  }
841
- let iterations = loopStep
842
- ? <span class="branch-0 cbranch-no" title="branch not covered" >Array.isArray(input.binding)</span>
843
- ? input.binding.length
844
- : automationUtils.stringSplit(input.binding).length
845
- : 1
846
- let iterationCount = 0
915
+ &nbsp;
847
916
  for (let index = 0; index &lt; iterations; index++) {
848
917
  let originalStepInput = cloneDeep(step.inputs)
849
918
  &nbsp;
@@ -853,18 +922,11 @@ class Orchestrator {
853
922
  loopStep.inputs,
854
923
  cloneDeep(this._context)
855
924
  )
856
- <span class="cstat-no" title="statement not covered" > newInput = automationUtils.cleanInputValues(</span>
857
- newInput,
858
- loopStep.schema.inputs
859
- )
860
925
  &nbsp;
861
926
  let tempOutput = <span class="cstat-no" title="statement not covered" >{ items: loopSteps, iterations: iterationCount }</span>
862
- <span class="cstat-no" title="statement not covered" > if (</span>
863
- (loopStep.inputs.option === "Array" &amp;&amp;
864
- !Array.isArray(newInput.binding)) ||
865
- (loopStep.inputs.option === "String" &amp;&amp;
866
- typeof newInput.binding !== "string")
867
- ) {
927
+ <span class="cstat-no" title="statement not covered" > try {</span>
928
+ <span class="cstat-no" title="statement not covered" > newInput.binding = typecastForLooping(loopStep, newInput)</span>
929
+ } catch (err) {
868
930
  <span class="cstat-no" title="statement not covered" > this.updateContextAndOutput(loopStepNumber, step, tempOutput, {</span>
869
931
  status: AutomationErrors.INCORRECT_TYPE,
870
932
  success: false,
@@ -926,21 +988,13 @@ class Orchestrator {
926
988
  }
927
989
  &nbsp;
928
990
  let isFailure = <span class="cstat-no" title="statement not covered" >false</span>
929
- <span class="cstat-no" title="statement not covered" > if (</span>
930
- typeof this._context.steps[loopStepNumber]?.currentItem === "object"
931
- ) {
932
- <span class="cstat-no" title="statement not covered" > isFailure = Object.keys(</span>
933
- this._context.steps[loopStepNumber].currentItem
934
- ).some(<span class="fstat-no" title="function not covered" >va</span>lue =&gt; {
935
- <span class="cstat-no" title="statement not covered" > return (</span>
936
- this._context.steps[loopStepNumber].currentItem[value] ===
937
- loopStep.inputs.failure
938
- )
991
+ const currentItem = <span class="cstat-no" title="statement not covered" >this._context.steps[loopStepNumber]?.currentItem</span>
992
+ <span class="cstat-no" title="statement not covered" > if (currentItem &amp;&amp; typeof currentItem === "object") {</span>
993
+ <span class="cstat-no" title="statement not covered" > isFailure = Object.keys(currentItem).some(<span class="fstat-no" title="function not covered" >va</span>lue =&gt; {</span>
994
+ <span class="cstat-no" title="statement not covered" > return currentItem[value] === loopStep.inputs.failure</span>
939
995
  })
940
996
  } else {
941
- <span class="cstat-no" title="statement not covered" > isFailure =</span>
942
- this._context.steps[loopStepNumber]?.currentItem ===
943
- loopStep.inputs.failure
997
+ <span class="cstat-no" title="statement not covered" > isFailure = currentItem &amp;&amp; currentItem === loopStep.inputs.failure</span>
944
998
  }
945
999
  &nbsp;
946
1000
  <span class="cstat-no" title="statement not covered" > if (isFailure) {</span>
@@ -1054,7 +1108,7 @@ module.exports = (input, callback) =&gt; {
1054
1108
  <div class='footer quiet pad2 space-top1 center small'>
1055
1109
  Code coverage generated by
1056
1110
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1057
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
1111
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
1058
1112
  </div>
1059
1113
  <script src="../prettify.js"></script>
1060
1114
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">72.98% </span>
26
+ <span class="strong">68.19% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>208/285</span>
28
+ <span class='fraction'>208/305</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">52.84% </span>
33
+ <span class="strong">48.12% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>65/123</span>
35
+ <span class='fraction'>64/133</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">87.09% </span>
40
+ <span class="strong">81.81% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>27/31</span>
42
+ <span class='fraction'>27/33</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">73.11% </span>
47
+ <span class="strong">68.22% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>204/279</span>
49
+ <span class='fraction'>204/299</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file medium" data-value="automation.js"><a href="automation.js.html">automation.js</a></td>
83
- <td data-value="57.63" class="pic medium">
84
- <div class="chart"><div class="cover-fill" style="width: 57%"></div><div class="cover-empty" style="width: 43%"></div></div>
83
+ <td data-value="50.6" class="pic medium">
84
+ <div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
85
85
  </td>
86
- <td data-value="57.63" class="pct medium">57.63%</td>
87
- <td data-value="144" class="abs medium">83/144</td>
88
- <td data-value="32.3" class="pct low">32.3%</td>
89
- <td data-value="65" class="abs low">21/65</td>
90
- <td data-value="81.81" class="pct high">81.81%</td>
91
- <td data-value="11" class="abs high">9/11</td>
92
- <td data-value="57.34" class="pct medium">57.34%</td>
93
- <td data-value="143" class="abs medium">82/143</td>
86
+ <td data-value="50.6" class="pct medium">50.6%</td>
87
+ <td data-value="164" class="abs medium">83/164</td>
88
+ <td data-value="26.66" class="pct low">26.66%</td>
89
+ <td data-value="75" class="abs low">20/75</td>
90
+ <td data-value="69.23" class="pct medium">69.23%</td>
91
+ <td data-value="13" class="abs medium">9/13</td>
92
+ <td data-value="50.3" class="pct medium">50.3%</td>
93
+ <td data-value="163" class="abs medium">82/163</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
134
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
135
135
  </div>
136
136
  <script src="../prettify.js"></script>
137
137
  <script>
@@ -679,7 +679,7 @@ module.exports = (input, callback) =&gt; {
679
679
  <div class='footer quiet pad2 space-top1 center small'>
680
680
  Code coverage generated by
681
681
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
682
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
682
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
683
683
  </div>
684
684
  <script src="../prettify.js"></script>
685
685
  <script>
@@ -304,7 +304,7 @@ exports.hasExtraData = response =&gt; {
304
304
  <div class='footer quiet pad2 space-top1 center small'>
305
305
  Code coverage generated by
306
306
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
307
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
307
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
308
308
  </div>
309
309
  <script src="../prettify.js"></script>
310
310
  <script>
@@ -115,7 +115,7 @@ const SALT_ROUNDS = <span class="cstat-no" title="statement not covered" >env.SA
115
115
  <div class='footer quiet pad2 space-top1 center small'>
116
116
  Code coverage generated by
117
117
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
118
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
118
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
119
119
  </div>
120
120
  <script src="../prettify.js"></script>
121
121
  <script>
@@ -100,7 +100,7 @@ module.exports.budibaseTempDir = budibaseTempDir
100
100
  <div class='footer quiet pad2 space-top1 center small'>
101
101
  Code coverage generated by
102
102
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
103
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
103
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
104
104
  </div>
105
105
  <script src="../prettify.js"></script>
106
106
  <script>
@@ -136,7 +136,7 @@ exports.resolve = <span class="fstat-no" title="function not covered" >fu</span>
136
136
  <div class='footer quiet pad2 space-top1 center small'>
137
137
  Code coverage generated by
138
138
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
139
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
140
140
  </div>
141
141
  <script src="../prettify.js"></script>
142
142
  <script>
@@ -502,7 +502,7 @@ module.exports = {
502
502
  <div class='footer quiet pad2 space-top1 center small'>
503
503
  Code coverage generated by
504
504
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
505
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
505
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
506
506
  </div>
507
507
  <script src="../prettify.js"></script>
508
508
  <script>
@@ -391,7 +391,7 @@ exports.getGlobalUsersFromMetadata = async users =&gt; {
391
391
  <div class='footer quiet pad2 space-top1 center small'>
392
392
  Code coverage generated by
393
393
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
394
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
394
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
395
395
  </div>
396
396
  <script src="../prettify.js"></script>
397
397
  <script>
@@ -251,7 +251,7 @@
251
251
  <div class='footer quiet pad2 space-top1 center small'>
252
252
  Code coverage generated by
253
253
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
254
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
254
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
255
255
  </div>
256
256
  <script src="../prettify.js"></script>
257
257
  <script>
@@ -559,7 +559,7 @@ exports.convertBookmark = bookmark =&gt; {
559
559
  <div class='footer quiet pad2 space-top1 center small'>
560
560
  Code coverage generated by
561
561
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
562
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
562
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
563
563
  </div>
564
564
  <script src="../prettify.js"></script>
565
565
  <script>
@@ -391,7 +391,7 @@ module.exports = InMemoryQueue
391
391
  <div class='footer quiet pad2 space-top1 center small'>
392
392
  Code coverage generated by
393
393
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
394
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
394
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
395
395
  </div>
396
396
  <script src="../../prettify.js"></script>
397
397
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
104
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
104
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -145,7 +145,7 @@ exports.createRoutingView = createRoutingView
145
145
  <div class='footer quiet pad2 space-top1 center small'>
146
146
  Code coverage generated by
147
147
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
148
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
148
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
149
149
  </div>
150
150
  <script src="../../prettify.js"></script>
151
151
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
119
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -1096,7 +1096,7 @@ exports.cleanupAttachments = async (table, { row, rows, oldRow, oldTable }) =&gt
1096
1096
  <div class='footer quiet pad2 space-top1 center small'>
1097
1097
  Code coverage generated by
1098
1098
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1099
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
1099
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
1100
1100
  </div>
1101
1101
  <script src="../../prettify.js"></script>
1102
1102
  <script>
@@ -271,7 +271,7 @@ exports.processFormulas = (
271
271
  <div class='footer quiet pad2 space-top1 center small'>
272
272
  Code coverage generated by
273
273
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
274
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
274
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
275
275
  </div>
276
276
  <script src="../../prettify.js"></script>
277
277
  <script>
@@ -142,7 +142,7 @@ module.exports = ScriptRunner
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
145
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  <script src="../prettify.js"></script>
148
148
  <script>
@@ -280,7 +280,7 @@ exports.CURRENTLY_SUPPORTED_LEVELS = CURRENTLY_SUPPORTED_LEVELS
280
280
  <div class='footer quiet pad2 space-top1 center small'>
281
281
  Code coverage generated by
282
282
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
283
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
283
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
284
284
  </div>
285
285
  <script src="../prettify.js"></script>
286
286
  <script>
@@ -91,7 +91,7 @@
91
91
  <div class='footer quiet pad2 space-top1 center small'>
92
92
  Code coverage generated by
93
93
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
94
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
94
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
95
95
  </div>
96
96
  <script src="../prettify.js"></script>
97
97
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
119
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -307,7 +307,7 @@ exports.getUniqueRows = async appIds =&gt; {
307
307
  <div class='footer quiet pad2 space-top1 center small'>
308
308
  Code coverage generated by
309
309
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
310
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
310
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
311
311
  </div>
312
312
  <script src="../../prettify.js"></script>
313
313
  <script>
@@ -124,7 +124,7 @@ function <span class="fstat-no" title="function not covered" >resetQuotasIfRequi
124
124
  <div class='footer quiet pad2 space-top1 center small'>
125
125
  Code coverage generated by
126
126
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
127
- at Wed May 11 2022 09:42:04 GMT+0000 (Coordinated Universal Time)
127
+ at Wed May 11 2022 14:05:01 GMT+0000 (Coordinated Universal Time)
128
128
  </div>
129
129
  <script src="../../prettify.js"></script>
130
130
  <script>