@budibase/server 1.0.105-alpha.20 → 1.0.105-alpha.21
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.
- package/builder/assets/{index.6dc91e94.js → index.8d922c8c.js} +197 -197
- package/builder/assets/{index.9e33e753.css → index.b7e0672d.css} +1 -1
- package/builder/index.html +2 -2
- package/coverage/clover.xml +174 -101
- package/coverage/coverage-final.json +6 -5
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +13 -4
- package/coverage/lcov-report/automations/automationUtils.js.html +45 -9
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +20 -5
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/loop.js.html +230 -0
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/automations/utils.js.html +2 -2
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +22 -4
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +1 -1
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +34 -34
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +531 -45
- package/coverage/lcov-report/threads/index.html +20 -20
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +1 -1
- package/coverage/lcov-report/threads/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +280 -159
- package/dist/automations/actions.js +3 -0
- package/dist/automations/automationUtils.js +10 -0
- package/dist/automations/steps/loop.js +51 -0
- package/dist/constants/index.js +5 -0
- package/dist/environment.js +1 -0
- package/dist/package.json +4 -4
- package/dist/threads/automation.js +149 -27
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/automations/actions.js +3 -0
- package/src/automations/automationUtils.js +12 -0
- package/src/automations/steps/loop.js +50 -0
- package/src/constants/index.js +6 -0
- package/src/environment.js +1 -0
- package/src/threads/automation.js +196 -34
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">60.15% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>80/133</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">36.84% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>21/57</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">83.33% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>10/
|
|
42
|
+
<span class='fraction'>10/12</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">84
|
|
47
|
+
<span class="strong">59.84% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>79/132</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line medium'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -198,7 +198,172 @@
|
|
|
198
198
|
<a name='L139'></a><a href='#L139'>139</a>
|
|
199
199
|
<a name='L140'></a><a href='#L140'>140</a>
|
|
200
200
|
<a name='L141'></a><a href='#L141'>141</a>
|
|
201
|
-
<a name='L142'></a><a href='#L142'>142</a
|
|
201
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
202
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
203
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
204
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
205
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
206
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
207
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
208
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
209
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
210
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
211
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
212
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
213
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
214
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
215
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
216
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
222
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
223
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
224
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
225
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
231
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
232
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
233
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
234
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
235
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
236
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
239
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
240
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
241
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
242
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
243
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
244
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
256
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
257
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
258
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
259
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
260
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
261
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
262
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
263
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
264
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
265
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
266
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
267
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
268
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
269
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
270
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
271
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
272
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
273
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
274
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
275
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
276
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
277
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
278
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
279
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
280
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
281
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
282
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
283
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
284
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
285
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
286
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
287
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
288
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
289
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
290
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
291
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
292
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
293
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
294
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
295
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
296
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
297
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
298
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
299
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
300
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
301
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
302
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
303
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
304
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
305
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
306
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
307
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
308
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
309
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
310
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
311
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
312
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
313
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
314
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
315
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
316
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
317
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
318
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
319
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
320
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
321
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
322
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
323
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
324
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
325
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
326
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
327
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
328
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
329
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
330
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
331
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
332
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
333
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
334
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
335
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
336
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
337
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
338
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
339
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
340
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
341
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
342
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
343
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
344
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
345
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
346
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
347
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
348
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
349
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
350
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
351
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
352
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
353
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
354
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
355
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
356
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
357
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
358
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
359
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
360
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
361
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
362
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
363
|
+
<a name='L304'></a><a href='#L304'>304</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
|
|
364
|
+
<span class="cline-any cline-yes">4x</span>
|
|
365
|
+
<span class="cline-any cline-yes">4x</span>
|
|
366
|
+
<span class="cline-any cline-yes">4x</span>
|
|
202
367
|
<span class="cline-any cline-yes">4x</span>
|
|
203
368
|
<span class="cline-any cline-yes">4x</span>
|
|
204
369
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -212,6 +377,7 @@
|
|
|
212
377
|
<span class="cline-any cline-yes">4x</span>
|
|
213
378
|
<span class="cline-any cline-yes">4x</span>
|
|
214
379
|
<span class="cline-any cline-yes">4x</span>
|
|
380
|
+
<span class="cline-any cline-yes">4x</span>
|
|
215
381
|
<span class="cline-any cline-neutral"> </span>
|
|
216
382
|
<span class="cline-any cline-neutral"> </span>
|
|
217
383
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -275,23 +441,145 @@
|
|
|
275
441
|
<span class="cline-any cline-neutral"> </span>
|
|
276
442
|
<span class="cline-any cline-neutral"> </span>
|
|
277
443
|
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-no"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
447
|
+
<span class="cline-any cline-neutral"> </span>
|
|
448
|
+
<span class="cline-any cline-neutral"> </span>
|
|
449
|
+
<span class="cline-any cline-neutral"> </span>
|
|
450
|
+
<span class="cline-any cline-neutral"> </span>
|
|
451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
452
|
+
<span class="cline-any cline-neutral"> </span>
|
|
453
|
+
<span class="cline-any cline-neutral"> </span>
|
|
454
|
+
<span class="cline-any cline-no"> </span>
|
|
455
|
+
<span class="cline-any cline-neutral"> </span>
|
|
456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
457
|
+
<span class="cline-any cline-neutral"> </span>
|
|
458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
460
|
+
<span class="cline-any cline-neutral"> </span>
|
|
461
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
462
|
<span class="cline-any cline-yes">7x</span>
|
|
279
463
|
<span class="cline-any cline-yes">7x</span>
|
|
280
464
|
<span class="cline-any cline-yes">6x</span>
|
|
465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-yes">6x</span>
|
|
468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
469
|
+
<span class="cline-any cline-yes">6x</span>
|
|
281
470
|
<span class="cline-any cline-yes">6x</span>
|
|
471
|
+
<span class="cline-any cline-yes">5x</span>
|
|
282
472
|
<span class="cline-any cline-neutral"> </span>
|
|
283
473
|
<span class="cline-any cline-yes">5x</span>
|
|
284
474
|
<span class="cline-any cline-no"> </span>
|
|
285
475
|
<span class="cline-any cline-no"> </span>
|
|
476
|
+
<span class="cline-any cline-no"> </span>
|
|
477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
479
|
+
<span class="cline-any cline-yes">5x</span>
|
|
480
|
+
<span class="cline-any cline-no"> </span>
|
|
286
481
|
<span class="cline-any cline-neutral"> </span>
|
|
287
482
|
<span class="cline-any cline-yes">5x</span>
|
|
288
483
|
<span class="cline-any cline-yes">5x</span>
|
|
289
484
|
<span class="cline-any cline-yes">5x</span>
|
|
485
|
+
<span class="cline-any cline-yes">5x</span>
|
|
486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-yes">5x</span>
|
|
489
|
+
<span class="cline-any cline-neutral"> </span>
|
|
490
|
+
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-no"> </span>
|
|
492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
495
|
+
<span class="cline-any cline-no"> </span>
|
|
496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
499
|
+
<span class="cline-any cline-no"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
503
|
+
<span class="cline-any cline-no"> </span>
|
|
504
|
+
<span class="cline-any cline-no"> </span>
|
|
505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-no"> </span>
|
|
515
|
+
<span class="cline-any cline-no"> </span>
|
|
516
|
+
<span class="cline-any cline-no"> </span>
|
|
517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
518
|
+
<span class="cline-any cline-neutral"> </span>
|
|
519
|
+
<span class="cline-any cline-neutral"> </span>
|
|
520
|
+
<span class="cline-any cline-neutral"> </span>
|
|
521
|
+
<span class="cline-any cline-no"> </span>
|
|
522
|
+
<span class="cline-any cline-no"> </span>
|
|
523
|
+
<span class="cline-any cline-no"> </span>
|
|
524
|
+
<span class="cline-any cline-neutral"> </span>
|
|
525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
526
|
+
<span class="cline-any cline-no"> </span>
|
|
527
|
+
<span class="cline-any cline-no"> </span>
|
|
528
|
+
<span class="cline-any cline-neutral"> </span>
|
|
529
|
+
<span class="cline-any cline-neutral"> </span>
|
|
530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
531
|
+
<span class="cline-any cline-neutral"> </span>
|
|
532
|
+
<span class="cline-any cline-neutral"> </span>
|
|
533
|
+
<span class="cline-any cline-neutral"> </span>
|
|
534
|
+
<span class="cline-any cline-neutral"> </span>
|
|
535
|
+
<span class="cline-any cline-no"> </span>
|
|
536
|
+
<span class="cline-any cline-no"> </span>
|
|
537
|
+
<span class="cline-any cline-neutral"> </span>
|
|
538
|
+
<span class="cline-any cline-neutral"> </span>
|
|
539
|
+
<span class="cline-any cline-neutral"> </span>
|
|
540
|
+
<span class="cline-any cline-neutral"> </span>
|
|
541
|
+
<span class="cline-any cline-neutral"> </span>
|
|
542
|
+
<span class="cline-any cline-neutral"> </span>
|
|
543
|
+
<span class="cline-any cline-neutral"> </span>
|
|
544
|
+
<span class="cline-any cline-no"> </span>
|
|
545
|
+
<span class="cline-any cline-neutral"> </span>
|
|
546
|
+
<span class="cline-any cline-neutral"> </span>
|
|
547
|
+
<span class="cline-any cline-neutral"> </span>
|
|
548
|
+
<span class="cline-any cline-no"> </span>
|
|
549
|
+
<span class="cline-any cline-neutral"> </span>
|
|
550
|
+
<span class="cline-any cline-neutral"> </span>
|
|
551
|
+
<span class="cline-any cline-neutral"> </span>
|
|
552
|
+
<span class="cline-any cline-no"> </span>
|
|
553
|
+
<span class="cline-any cline-no"> </span>
|
|
554
|
+
<span class="cline-any cline-no"> </span>
|
|
555
|
+
<span class="cline-any cline-neutral"> </span>
|
|
556
|
+
<span class="cline-any cline-neutral"> </span>
|
|
557
|
+
<span class="cline-any cline-no"> </span>
|
|
558
|
+
<span class="cline-any cline-neutral"> </span>
|
|
559
|
+
<span class="cline-any cline-neutral"> </span>
|
|
560
|
+
<span class="cline-any cline-neutral"> </span>
|
|
561
|
+
<span class="cline-any cline-no"> </span>
|
|
562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
563
|
+
<span class="cline-any cline-neutral"> </span>
|
|
564
|
+
<span class="cline-any cline-neutral"> </span>
|
|
565
|
+
<span class="cline-any cline-no"> </span>
|
|
566
|
+
<span class="cline-any cline-no"> </span>
|
|
567
|
+
<span class="cline-any cline-no"> </span>
|
|
290
568
|
<span class="cline-any cline-neutral"> </span>
|
|
291
569
|
<span class="cline-any cline-neutral"> </span>
|
|
292
570
|
<span class="cline-any cline-neutral"> </span>
|
|
293
571
|
<span class="cline-any cline-neutral"> </span>
|
|
294
572
|
<span class="cline-any cline-yes">5x</span>
|
|
573
|
+
<span class="cline-any cline-no"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
575
|
+
<span class="cline-any cline-neutral"> </span>
|
|
576
|
+
<span class="cline-any cline-neutral"> </span>
|
|
577
|
+
<span class="cline-any cline-neutral"> </span>
|
|
578
|
+
<span class="cline-any cline-yes">5x</span>
|
|
579
|
+
<span class="cline-any cline-yes">5x</span>
|
|
580
|
+
<span class="cline-any cline-yes">5x</span>
|
|
581
|
+
<span class="cline-any cline-yes">5x</span>
|
|
582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
583
|
<span class="cline-any cline-yes">5x</span>
|
|
296
584
|
<span class="cline-any cline-yes">5x</span>
|
|
297
585
|
<span class="cline-any cline-yes">5x</span>
|
|
@@ -313,9 +601,45 @@
|
|
|
313
601
|
<span class="cline-any cline-no"> </span>
|
|
314
602
|
<span class="cline-any cline-neutral"> </span>
|
|
315
603
|
<span class="cline-any cline-yes">5x</span>
|
|
604
|
+
<span class="cline-any cline-no"> </span>
|
|
605
|
+
<span class="cline-any cline-neutral"> </span>
|
|
606
|
+
<span class="cline-any cline-yes">5x</span>
|
|
607
|
+
<span class="cline-any cline-neutral"> </span>
|
|
608
|
+
<span class="cline-any cline-neutral"> </span>
|
|
609
|
+
<span class="cline-any cline-neutral"> </span>
|
|
610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
611
|
+
<span class="cline-any cline-neutral"> </span>
|
|
612
|
+
<span class="cline-any cline-neutral"> </span>
|
|
613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
614
|
+
<span class="cline-any cline-no"> </span>
|
|
615
|
+
<span class="cline-any cline-no"> </span>
|
|
616
|
+
<span class="cline-any cline-neutral"> </span>
|
|
617
|
+
<span class="cline-any cline-yes">5x</span>
|
|
618
|
+
<span class="cline-any cline-no"> </span>
|
|
619
|
+
<span class="cline-any cline-no"> </span>
|
|
620
|
+
<span class="cline-any cline-no"> </span>
|
|
621
|
+
<span class="cline-any cline-no"> </span>
|
|
622
|
+
<span class="cline-any cline-no"> </span>
|
|
623
|
+
<span class="cline-any cline-neutral"> </span>
|
|
624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
625
|
+
<span class="cline-any cline-neutral"> </span>
|
|
626
|
+
<span class="cline-any cline-neutral"> </span>
|
|
627
|
+
<span class="cline-any cline-yes">5x</span>
|
|
628
|
+
<span class="cline-any cline-no"> </span>
|
|
629
|
+
<span class="cline-any cline-neutral"> </span>
|
|
630
|
+
<span class="cline-any cline-neutral"> </span>
|
|
631
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
632
|
<span class="cline-any cline-neutral"> </span>
|
|
317
633
|
<span class="cline-any cline-no"> </span>
|
|
634
|
+
<span class="cline-any cline-neutral"> </span>
|
|
635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
636
|
+
<span class="cline-any cline-neutral"> </span>
|
|
637
|
+
<span class="cline-any cline-neutral"> </span>
|
|
638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
318
640
|
<span class="cline-any cline-no"> </span>
|
|
641
|
+
<span class="cline-any cline-no"> </span>
|
|
642
|
+
<span class="cline-any cline-neutral"> </span>
|
|
319
643
|
<span class="cline-any cline-neutral"> </span>
|
|
320
644
|
<span class="cline-any cline-neutral"> </span>
|
|
321
645
|
<span class="cline-any cline-yes">6x</span>
|
|
@@ -349,10 +673,14 @@ const { DocumentTypes } = require("../db/utils")
|
|
|
349
673
|
const { doInTenant } = require("@budibase/backend-core/tenancy")
|
|
350
674
|
const { definitions: triggerDefs } = require("../automations/triggerInfo")
|
|
351
675
|
const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
|
|
352
|
-
|
|
676
|
+
const { AutomationErrors } = require("../constants")
|
|
353
677
|
const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId
|
|
678
|
+
const LOOP_STEP_ID = actions.ACTION_DEFINITIONS.LOOP.stepId
|
|
679
|
+
|
|
354
680
|
const CRON_STEP_ID = triggerDefs.CRON.stepId
|
|
355
681
|
const STOPPED_STATUS = { success: false, status: "STOPPED" }
|
|
682
|
+
const { cloneDeep } = require("lodash/fp")
|
|
683
|
+
const env = require("../environment")
|
|
356
684
|
|
|
357
685
|
/**
|
|
358
686
|
* The automation orchestrator is a class responsible for executing automations.
|
|
@@ -414,51 +742,209 @@ class Orchestrator {
|
|
|
414
742
|
}
|
|
415
743
|
this.executionOutput.steps.push(stepObj)
|
|
416
744
|
}
|
|
745
|
+
|
|
746
|
+
<span class="fstat-no" title="function not covered" > up</span>dateContextAndOutput(loopStepNumber, step, output, result) {
|
|
747
|
+
<span class="cstat-no" title="statement not covered" > this.executionOutput.steps.splice(loopStepNumber, 0, {</span>
|
|
748
|
+
id: step.id,
|
|
749
|
+
stepId: step.stepId,
|
|
750
|
+
outputs: {
|
|
751
|
+
...output,
|
|
752
|
+
success: result.success,
|
|
753
|
+
status: result.status,
|
|
754
|
+
},
|
|
755
|
+
inputs: step.inputs,
|
|
756
|
+
})
|
|
757
|
+
<span class="cstat-no" title="statement not covered" > this._context.steps.splice(loopStepNumber, 0, {</span>
|
|
758
|
+
...output,
|
|
759
|
+
success: result.success,
|
|
760
|
+
status: result.status,
|
|
761
|
+
})
|
|
762
|
+
}
|
|
417
763
|
|
|
418
764
|
async execute() {
|
|
419
765
|
let automation = this._automation
|
|
420
766
|
const app = await this.getApp()
|
|
421
767
|
let stopped = false
|
|
768
|
+
let loopStep
|
|
769
|
+
|
|
770
|
+
let stepCount = 0
|
|
771
|
+
let loopStepNumber
|
|
772
|
+
let loopSteps = []
|
|
422
773
|
for (let step of automation.definition.steps) {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
<span class="
|
|
774
|
+
stepCount++
|
|
775
|
+
let input
|
|
776
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (step.stepId === LOOP_STEP_ID) {
|
|
777
|
+
<span class="cstat-no" title="statement not covered" > loopStep = step</span>
|
|
778
|
+
<span class="cstat-no" title="statement not covered" > loopStepNumber = stepCount</span>
|
|
426
779
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
427
780
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
<span class="cstat-no" title="statement not covered" >
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
}
|
|
781
|
+
|
|
782
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep) {
|
|
783
|
+
<span class="cstat-no" title="statement not covered" > input = await processObject(loopStep.inputs, this._context)</span>
|
|
784
|
+
}
|
|
785
|
+
let iterations = loopStep ? <span class="branch-0 cbranch-no" title="branch not covered" >input.binding.length </span>: 1
|
|
786
|
+
let iterationCount = 0
|
|
787
|
+
for (let index = 0; index < iterations; index++) {
|
|
788
|
+
let originalStepInput = cloneDeep(step.inputs)
|
|
789
|
+
|
|
790
|
+
// Handle if the user has set a max iteration count or if it reaches the max limit set by us
|
|
791
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep) {
|
|
792
|
+
// lets first of all handle the input
|
|
793
|
+
// if the input is array then use it, if it is a string then split it on every new line
|
|
794
|
+
let newInput = <span class="cstat-no" title="statement not covered" >await processObject(</span>
|
|
795
|
+
loopStep.inputs,
|
|
796
|
+
cloneDeep(this._context)
|
|
797
|
+
)
|
|
798
|
+
<span class="cstat-no" title="statement not covered" > newInput = automationUtils.cleanInputValues(</span>
|
|
799
|
+
newInput,
|
|
800
|
+
loopStep.schema.inputs
|
|
801
|
+
)
|
|
802
|
+
<span class="cstat-no" title="statement not covered" > this._context.steps[loopStepNumber] = {</span>
|
|
803
|
+
currentItem: newInput.binding[index],
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
let tempOutput = <span class="cstat-no" title="statement not covered" >{ items: loopSteps, iterations: iterationCount }</span>
|
|
807
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
808
|
+
(loopStep.inputs.option === "Array" &&
|
|
809
|
+
!Array.isArray(newInput.binding)) ||
|
|
810
|
+
(loopStep.inputs.option === "String" &&
|
|
811
|
+
typeof newInput.binding !== "string")
|
|
812
|
+
) {
|
|
813
|
+
<span class="cstat-no" title="statement not covered" > this.updateContextAndOutput(loopStepNumber, step, tempOutput, {</span>
|
|
814
|
+
status: AutomationErrors.INCORRECT_TYPE,
|
|
815
|
+
success: false,
|
|
816
|
+
})
|
|
817
|
+
<span class="cstat-no" title="statement not covered" > loopSteps = null</span>
|
|
818
|
+
<span class="cstat-no" title="statement not covered" > loopStep = null</span>
|
|
819
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
// The "Loop" binding in the front end is "fake", so replace it here so the context can understand it
|
|
823
|
+
// Pretty hacky because we need to account for the row object
|
|
824
|
+
<span class="cstat-no" title="statement not covered" > for (let [key, value] of Object.entries(originalStepInput)) {</span>
|
|
825
|
+
<span class="cstat-no" title="statement not covered" > if (typeof value === "object") {</span>
|
|
826
|
+
<span class="cstat-no" title="statement not covered" > for (let [innerKey, innerValue] of Object.entries(</span>
|
|
827
|
+
originalStepInput[key]
|
|
828
|
+
)) {
|
|
829
|
+
<span class="cstat-no" title="statement not covered" > if (typeof innerValue === "string") {</span>
|
|
830
|
+
<span class="cstat-no" title="statement not covered" > originalStepInput[key][innerKey] =</span>
|
|
831
|
+
automationUtils.substituteLoopStep(
|
|
832
|
+
innerValue,
|
|
833
|
+
`steps.${loopStepNumber}`
|
|
834
|
+
)
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
} else {
|
|
838
|
+
<span class="cstat-no" title="statement not covered" > if (typeof value === "string") {</span>
|
|
839
|
+
<span class="cstat-no" title="statement not covered" > originalStepInput[key] = automationUtils.substituteLoopStep(</span>
|
|
840
|
+
value,
|
|
841
|
+
`steps.${loopStepNumber}`
|
|
842
|
+
)
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
848
|
+
index === parseInt(env.AUTOMATION_MAX_ITERATIONS) ||
|
|
849
|
+
index === loopStep.inputs.iterations
|
|
850
|
+
) {
|
|
851
|
+
<span class="cstat-no" title="statement not covered" > this.updateContextAndOutput(loopStepNumber, step, tempOutput, {</span>
|
|
852
|
+
status: AutomationErrors.MAX_ITERATIONS,
|
|
853
|
+
success: true,
|
|
854
|
+
})
|
|
855
|
+
<span class="cstat-no" title="statement not covered" > loopSteps = null</span>
|
|
856
|
+
<span class="cstat-no" title="statement not covered" > loopStep = null</span>
|
|
857
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
861
|
+
this._context.steps[loopStepNumber]?.currentItem ===
|
|
862
|
+
loopStep.inputs.failure
|
|
863
|
+
) {
|
|
864
|
+
<span class="cstat-no" title="statement not covered" > this.updateContextAndOutput(loopStepNumber, step, tempOutput, {</span>
|
|
865
|
+
status: AutomationErrors.FAILURE_CONDITION,
|
|
866
|
+
success: false,
|
|
867
|
+
})
|
|
868
|
+
<span class="cstat-no" title="statement not covered" > loopSteps = null</span>
|
|
869
|
+
<span class="cstat-no" title="statement not covered" > loopStep = null</span>
|
|
870
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
// execution stopped, record state for that
|
|
875
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (stopped) {
|
|
876
|
+
<span class="cstat-no" title="statement not covered" > this.updateExecutionOutput(step.id, step.stepId, {}, STOPPED_STATUS)</span>
|
|
454
877
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
455
878
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
879
|
+
|
|
880
|
+
// If it's a loop step, we need to manually add the bindings to the context
|
|
881
|
+
let stepFn = await this.getStepFunctionality(step.stepId)
|
|
882
|
+
let inputs = await processObject(originalStepInput, this._context)
|
|
883
|
+
inputs = automationUtils.cleanInputValues(inputs, step.schema.inputs)
|
|
884
|
+
try {
|
|
885
|
+
// appId is always passed
|
|
886
|
+
let tenantId = app.tenantId || <span class="branch-1 cbranch-no" title="branch not covered" >DEFAULT_TENANT_ID</span>
|
|
887
|
+
const outputs = await doInTenant(tenantId, () => {
|
|
888
|
+
return stepFn({
|
|
889
|
+
inputs: inputs,
|
|
890
|
+
appId: this._appId,
|
|
891
|
+
emitter: this._emitter,
|
|
892
|
+
context: this._context,
|
|
893
|
+
})
|
|
894
|
+
})
|
|
895
|
+
this._context.steps[stepCount] = outputs
|
|
896
|
+
// if filter causes us to stop execution don't break the loop, set a var
|
|
897
|
+
// so that we can finish iterating through the steps and record that it stopped
|
|
898
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (step.stepId === FILTER_STEP_ID && <span class="branch-1 cbranch-no" title="branch not covered" >!outputs.success)</span> {
|
|
899
|
+
<span class="cstat-no" title="statement not covered" > stopped = true</span>
|
|
900
|
+
<span class="cstat-no" title="statement not covered" > this.updateExecutionOutput(step.id, step.stepId, step.inputs, {</span>
|
|
901
|
+
...outputs,
|
|
902
|
+
...STOPPED_STATUS,
|
|
903
|
+
})
|
|
904
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
905
|
+
}
|
|
906
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep && <span class="branch-1 cbranch-no" title="branch not covered" >loopSteps)</span> {
|
|
907
|
+
<span class="cstat-no" title="statement not covered" > loopSteps.push(outputs)</span>
|
|
908
|
+
} else {
|
|
909
|
+
this.updateExecutionOutput(
|
|
910
|
+
step.id,
|
|
911
|
+
step.stepId,
|
|
912
|
+
step.inputs,
|
|
913
|
+
outputs
|
|
914
|
+
)
|
|
915
|
+
}
|
|
916
|
+
} catch (err) {
|
|
917
|
+
<span class="cstat-no" title="statement not covered" > console.error(`Automation error - ${step.stepId} - ${err}`)</span>
|
|
918
|
+
<span class="cstat-no" title="statement not covered" > return err</span>
|
|
919
|
+
}
|
|
920
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep) {
|
|
921
|
+
<span class="cstat-no" title="statement not covered" > iterationCount++</span>
|
|
922
|
+
<span class="cstat-no" title="statement not covered" > if (index === iterations - 1) {</span>
|
|
923
|
+
<span class="cstat-no" title="statement not covered" > loopStep = null</span>
|
|
924
|
+
<span class="cstat-no" title="statement not covered" > this._context.steps.splice(loopStepNumber, 1)</span>
|
|
925
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (loopSteps && loopSteps.length) {
|
|
931
|
+
let tempOutput = <span class="cstat-no" title="statement not covered" >{</span>
|
|
932
|
+
success: true,
|
|
933
|
+
items: loopSteps,
|
|
934
|
+
iterations: iterationCount,
|
|
935
|
+
}
|
|
936
|
+
<span class="cstat-no" title="statement not covered" > this.executionOutput.steps.splice(loopStepNumber + 1, 0, {</span>
|
|
937
|
+
id: step.id,
|
|
938
|
+
stepId: step.stepId,
|
|
939
|
+
outputs: tempOutput,
|
|
940
|
+
inputs: step.inputs,
|
|
941
|
+
})
|
|
942
|
+
|
|
943
|
+
<span class="cstat-no" title="statement not covered" > this._context.steps.splice(loopStepNumber, 0, tempOutput)</span>
|
|
944
|
+
<span class="cstat-no" title="statement not covered" > loopSteps = null</span>
|
|
460
945
|
}
|
|
461
946
|
}
|
|
947
|
+
|
|
462
948
|
return this.executionOutput
|
|
463
949
|
}
|
|
464
950
|
}
|
|
@@ -487,7 +973,7 @@ module.exports = (input, callback) => {
|
|
|
487
973
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
488
974
|
Code coverage generated by
|
|
489
975
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
490
|
-
at Tue Apr 19 2022
|
|
976
|
+
at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
|
|
491
977
|
</div>
|
|
492
978
|
</div>
|
|
493
979
|
<script src="../prettify.js"></script>
|