@budibase/server 2.0.20 → 2.0.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.
Files changed (154) hide show
  1. package/builder/assets/{index.654c9538.js → index.e2f22248.js} +2 -2
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  5. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/index.html +1 -1
  11. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  17. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  30. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  35. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  39. package/coverage/lcov-report/api/index.html +1 -1
  40. package/coverage/lcov-report/api/index.js.html +1 -1
  41. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  42. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  43. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  44. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  45. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/index.html +1 -1
  51. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  65. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  68. package/coverage/lcov-report/automations/actions.js.html +1 -1
  69. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  70. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  71. package/coverage/lcov-report/automations/index.html +1 -1
  72. package/coverage/lcov-report/automations/index.js.html +1 -1
  73. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  74. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  75. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  76. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  77. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/index.html +1 -1
  80. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  90. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  91. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  92. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  93. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  94. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  99. package/coverage/lcov-report/constants/index.html +1 -1
  100. package/coverage/lcov-report/constants/index.js.html +1 -1
  101. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  102. package/coverage/lcov-report/constants/screens.js.html +1 -1
  103. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  104. package/coverage/lcov-report/db/index.html +1 -1
  105. package/coverage/lcov-report/db/index.js.html +1 -1
  106. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  107. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  108. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  109. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  110. package/coverage/lcov-report/db/newid.js.html +1 -1
  111. package/coverage/lcov-report/db/utils.js.html +1 -1
  112. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  113. package/coverage/lcov-report/events/index.html +1 -1
  114. package/coverage/lcov-report/events/index.js.html +1 -1
  115. package/coverage/lcov-report/events/utils.js.html +1 -1
  116. package/coverage/lcov-report/index.html +1 -1
  117. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  118. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  119. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  120. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  121. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  122. package/coverage/lcov-report/middleware/index.html +1 -1
  123. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  124. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  125. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  126. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  127. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  128. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  129. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  130. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  131. package/coverage/lcov-report/utilities/global.js.html +1 -1
  132. package/coverage/lcov-report/utilities/index.html +1 -1
  133. package/coverage/lcov-report/utilities/index.js.html +1 -1
  134. package/coverage/lcov-report/utilities/plugins.js.html +1 -1
  135. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  136. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  137. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  138. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  139. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  140. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  141. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  142. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  143. package/coverage/lcov-report/utilities/security.js.html +1 -1
  144. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  145. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  146. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  147. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  148. package/coverage/lcov-report/utilities/users.js.html +1 -1
  149. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  150. package/dist/package.json +6 -6
  151. package/dist/threads/automation.js +15 -1
  152. package/dist/tsconfig.build.tsbuildinfo +1 -1
  153. package/package.json +7 -7
  154. package/src/threads/automation.ts +24 -5
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "2.0.20",
4
+ "version": "2.0.21",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -77,11 +77,11 @@
77
77
  "license": "GPL-3.0",
78
78
  "dependencies": {
79
79
  "@apidevtools/swagger-parser": "10.0.3",
80
- "@budibase/backend-core": "^2.0.20",
81
- "@budibase/client": "^2.0.20",
82
- "@budibase/pro": "2.0.19",
83
- "@budibase/string-templates": "^2.0.20",
84
- "@budibase/types": "^2.0.20",
80
+ "@budibase/backend-core": "^2.0.21",
81
+ "@budibase/client": "^2.0.21",
82
+ "@budibase/pro": "2.0.20",
83
+ "@budibase/string-templates": "^2.0.21",
84
+ "@budibase/types": "^2.0.21",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",
@@ -199,5 +199,5 @@
199
199
  "optionalDependencies": {
200
200
  "oracledb": "5.3.0"
201
201
  },
202
- "gitHead": "224e33517c20a3f2fe95282b9c28869c4bf816fc"
202
+ "gitHead": "cfebcbf1abeb94c54c14c9d4d93c119a5e7bdc8f"
203
203
  }
@@ -252,7 +252,7 @@ class Orchestrator {
252
252
  let loopStepNumber: any = undefined
253
253
  let loopSteps: LoopStep[] | undefined = []
254
254
  let metadata
255
-
255
+ let wasLoopStep = false
256
256
  // check if this is a recurring automation,
257
257
  if (isProdAppID(this._appId) && isRecurring(automation)) {
258
258
  metadata = await this.getMetadata()
@@ -267,6 +267,7 @@ class Orchestrator {
267
267
  let input,
268
268
  iterations = 1,
269
269
  iterationCount = 0
270
+
270
271
  if (step.stepId === LOOP_STEP_ID) {
271
272
  loopStep = step
272
273
  loopStepNumber = stepCount
@@ -277,10 +278,8 @@ class Orchestrator {
277
278
  input = await processObject(loopStep.inputs, this._context)
278
279
  iterations = getLoopIterations(loopStep as LoopStep, input)
279
280
  }
280
-
281
281
  for (let index = 0; index < iterations; index++) {
282
282
  let originalStepInput = cloneDeep(step.inputs)
283
-
284
283
  // Handle if the user has set a max iteration count or if it reaches the max limit set by us
285
284
  if (loopStep && input.binding) {
286
285
  let newInput = await processObject(
@@ -313,7 +312,6 @@ class Orchestrator {
313
312
  } else {
314
313
  item = loopStep.inputs.binding
315
314
  }
316
-
317
315
  this._context.steps[loopStepNumber] = {
318
316
  currentItem: item[index],
319
317
  }
@@ -331,6 +329,16 @@ class Orchestrator {
331
329
  innerValue,
332
330
  `steps.${loopStepNumber}`
333
331
  )
332
+ } else if (typeof value === "object") {
333
+ for (let [innerObject, innerValue] of Object.entries(
334
+ originalStepInput[key][innerKey]
335
+ )) {
336
+ originalStepInput[key][innerKey][innerObject] =
337
+ automationUtils.substituteLoopStep(
338
+ innerValue,
339
+ `steps.${loopStepNumber}`
340
+ )
341
+ }
334
342
  }
335
343
  }
336
344
  } else {
@@ -386,6 +394,7 @@ class Orchestrator {
386
394
  let stepFn = await this.getStepFunctionality(step.stepId)
387
395
  let inputs = await processObject(originalStepInput, this._context)
388
396
  inputs = automationUtils.cleanInputValues(inputs, step.schema.inputs)
397
+
389
398
  try {
390
399
  // appId is always passed
391
400
  const outputs = await stepFn({
@@ -394,6 +403,7 @@ class Orchestrator {
394
403
  emitter: this._emitter,
395
404
  context: this._context,
396
405
  })
406
+
397
407
  this._context.steps[stepCount] = outputs
398
408
  // if filter causes us to stop execution don't break the loop, set a var
399
409
  // so that we can finish iterating through the steps and record that it stopped
@@ -419,6 +429,7 @@ class Orchestrator {
419
429
  console.error(`Automation error - ${step.stepId} - ${err}`)
420
430
  return err
421
431
  }
432
+
422
433
  if (loopStep) {
423
434
  iterationCount++
424
435
  if (index === iterations - 1) {
@@ -429,6 +440,13 @@ class Orchestrator {
429
440
  }
430
441
  }
431
442
 
443
+ // Delete the step after the loop step as it's irrelevant, since information is included
444
+ // in the loop step
445
+ if (wasLoopStep) {
446
+ this._context.steps.splice(loopStepNumber + 1, 1)
447
+ wasLoopStep = false
448
+ }
449
+
432
450
  if (loopSteps && loopSteps.length) {
433
451
  let tempOutput = {
434
452
  success: true,
@@ -441,9 +459,10 @@ class Orchestrator {
441
459
  outputs: tempOutput,
442
460
  inputs: step.inputs,
443
461
  })
462
+ this._context.steps[loopStepNumber] = tempOutput
444
463
 
445
- this._context.steps.splice(loopStepNumber, 0, tempOutput)
446
464
  loopSteps = undefined
465
+ wasLoopStep = true
447
466
  }
448
467
  }
449
468