@budibase/server 1.0.123-alpha.0 → 1.0.123

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 (330) hide show
  1. package/builder/assets/index.68a7f4e3.css +6 -0
  2. package/builder/assets/index.8d4a5b33.js +1291 -0
  3. package/builder/assets/{vendor.5240f480.js → vendor.8e34a169.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1763 -758
  6. package/coverage/coverage-final.json +43 -28
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +3 -8
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +4 -9
  9. package/coverage/lcov-report/api/controllers/application.js.html +1436 -0
  10. package/coverage/lcov-report/api/controllers/auth.js.html +3 -8
  11. package/coverage/lcov-report/api/controllers/automation.js.html +3 -8
  12. package/coverage/lcov-report/api/controllers/backup.js.html +3 -8
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +3 -8
  14. package/coverage/lcov-report/api/controllers/component.js.html +3 -8
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +6 -11
  16. package/coverage/lcov-report/api/controllers/dev.js.html +3 -8
  17. package/coverage/lcov-report/api/controllers/index.html +26 -16
  18. package/coverage/lcov-report/api/controllers/integration.js.html +3 -8
  19. package/coverage/lcov-report/api/controllers/layout.js.html +3 -8
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +3 -8
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +3 -8
  22. package/coverage/lcov-report/api/controllers/permission.js.html +3 -8
  23. package/coverage/lcov-report/api/controllers/query/index.html +26 -16
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +713 -0
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +3 -8
  26. package/coverage/lcov-report/api/controllers/role.js.html +5 -10
  27. package/coverage/lcov-report/api/controllers/routing.js.html +4 -9
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +3 -8
  29. package/coverage/lcov-report/api/controllers/row/index.html +35 -25
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +524 -0
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +24 -32
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +16 -21
  33. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +19 -24
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +19 -33
  35. package/coverage/lcov-report/api/controllers/screen.js.html +4 -9
  36. package/coverage/lcov-report/api/controllers/script.js.html +3 -8
  37. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +50 -55
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +3 -8
  39. package/coverage/lcov-report/api/controllers/table/index.html +44 -19
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +15 -20
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +620 -0
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +1331 -0
  43. package/coverage/lcov-report/api/controllers/templates.js.html +3 -8
  44. package/coverage/lcov-report/api/controllers/user.js.html +3 -8
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +3 -8
  46. package/coverage/lcov-report/api/controllers/view/index.html +3 -8
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +5 -10
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +3 -8
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -8
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +5 -10
  51. package/coverage/lcov-report/api/index.html +13 -18
  52. package/coverage/lcov-report/api/index.js.html +8 -28
  53. package/coverage/lcov-report/api/routes/analytics.js.html +3 -8
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +3 -8
  55. package/coverage/lcov-report/api/routes/application.js.html +179 -0
  56. package/coverage/lcov-report/api/routes/auth.js.html +3 -8
  57. package/coverage/lcov-report/api/routes/automation.js.html +3 -8
  58. package/coverage/lcov-report/api/routes/backup.js.html +3 -8
  59. package/coverage/lcov-report/api/routes/cloud.js.html +3 -8
  60. package/coverage/lcov-report/api/routes/component.js.html +3 -8
  61. package/coverage/lcov-report/api/routes/datasource.js.html +3 -8
  62. package/coverage/lcov-report/api/routes/deploy.js.html +3 -8
  63. package/coverage/lcov-report/api/routes/dev.js.html +4 -9
  64. package/coverage/lcov-report/api/routes/index.html +68 -13
  65. package/coverage/lcov-report/api/routes/index.js.html +266 -0
  66. package/coverage/lcov-report/api/routes/integration.js.html +3 -8
  67. package/coverage/lcov-report/api/routes/layout.js.html +3 -8
  68. package/coverage/lcov-report/api/routes/metadata.js.html +3 -8
  69. package/coverage/lcov-report/api/routes/migrations.js.html +3 -8
  70. package/coverage/lcov-report/api/routes/permission.js.html +3 -8
  71. package/coverage/lcov-report/api/routes/query.js.html +3 -8
  72. package/coverage/lcov-report/api/routes/role.js.html +3 -8
  73. package/coverage/lcov-report/api/routes/routing.js.html +3 -8
  74. package/coverage/lcov-report/api/routes/row.js.html +908 -0
  75. package/coverage/lcov-report/api/routes/screen.js.html +3 -8
  76. package/coverage/lcov-report/api/routes/script.js.html +3 -8
  77. package/coverage/lcov-report/{automations/steps/loop.js.html → api/routes/static.js.html} +80 -70
  78. package/coverage/lcov-report/api/routes/table.js.html +3 -8
  79. package/coverage/lcov-report/api/routes/templates.js.html +3 -8
  80. package/coverage/lcov-report/api/routes/user.js.html +3 -8
  81. package/coverage/lcov-report/api/routes/utils/index.html +3 -8
  82. package/coverage/lcov-report/api/routes/utils/validators.js.html +3 -8
  83. package/coverage/lcov-report/api/routes/view.js.html +3 -8
  84. package/coverage/lcov-report/api/routes/webhook.js.html +3 -8
  85. package/coverage/lcov-report/automations/actions.js.html +7 -21
  86. package/coverage/lcov-report/automations/automationUtils.js.html +23 -64
  87. package/coverage/lcov-report/automations/bullboard.js.html +3 -8
  88. package/coverage/lcov-report/automations/index.html +37 -27
  89. package/coverage/lcov-report/automations/index.js.html +3 -8
  90. package/coverage/lcov-report/automations/steps/bash.js.html +3 -8
  91. package/coverage/lcov-report/automations/steps/createRow.js.html +380 -0
  92. package/coverage/lcov-report/automations/steps/delay.js.html +3 -8
  93. package/coverage/lcov-report/automations/steps/deleteRow.js.html +347 -0
  94. package/coverage/lcov-report/automations/steps/discord.js.html +3 -8
  95. package/coverage/lcov-report/automations/steps/executeQuery.js.html +3 -8
  96. package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -8
  97. package/coverage/lcov-report/automations/steps/filter.js.html +3 -8
  98. package/coverage/lcov-report/automations/steps/index.html +41 -31
  99. package/coverage/lcov-report/automations/steps/integromat.js.html +3 -8
  100. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +4 -9
  101. package/coverage/lcov-report/automations/steps/queryRows.js.html +4 -9
  102. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +3 -8
  103. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -8
  104. package/coverage/lcov-report/automations/steps/slack.js.html +3 -8
  105. package/coverage/lcov-report/automations/steps/updateRow.js.html +3 -8
  106. package/coverage/lcov-report/automations/steps/utils.js.html +9 -14
  107. package/coverage/lcov-report/automations/steps/zapier.js.html +3 -8
  108. package/coverage/lcov-report/automations/triggerInfo/app.js.html +3 -8
  109. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +3 -8
  110. package/coverage/lcov-report/automations/triggerInfo/index.html +3 -8
  111. package/coverage/lcov-report/automations/triggerInfo/index.js.html +3 -8
  112. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +3 -8
  113. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +3 -8
  114. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +3 -8
  115. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +3 -8
  116. package/coverage/lcov-report/automations/triggers.js.html +11 -16
  117. package/coverage/lcov-report/automations/utils.js.html +665 -0
  118. package/coverage/lcov-report/block-navigation.js +0 -8
  119. package/coverage/lcov-report/constants/index.html +3 -8
  120. package/coverage/lcov-report/constants/index.js.html +42 -41
  121. package/coverage/lcov-report/constants/layouts.js.html +3 -8
  122. package/coverage/lcov-report/constants/screens.js.html +3 -8
  123. package/coverage/lcov-report/db/inMemoryView.js.html +3 -8
  124. package/coverage/lcov-report/db/index.html +3 -8
  125. package/coverage/lcov-report/db/index.js.html +4 -9
  126. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +23 -25
  127. package/coverage/lcov-report/db/linkedRows/index.html +12 -17
  128. package/coverage/lcov-report/db/linkedRows/index.js.html +17 -22
  129. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +7 -12
  130. package/coverage/lcov-report/db/newid.js.html +6 -11
  131. package/coverage/lcov-report/db/utils.js.html +79 -84
  132. package/coverage/lcov-report/events/AutomationEmitter.js.html +9 -14
  133. package/coverage/lcov-report/events/index.html +3 -8
  134. package/coverage/lcov-report/events/index.js.html +4 -9
  135. package/coverage/lcov-report/events/utils.js.html +13 -18
  136. package/coverage/lcov-report/index.html +132 -137
  137. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +3 -8
  138. package/coverage/lcov-report/integrations/tests/index.html +3 -8
  139. package/coverage/lcov-report/middleware/appInfo.js.html +3 -8
  140. package/coverage/lcov-report/middleware/authorized.js.html +458 -0
  141. package/coverage/lcov-report/middleware/builder.js.html +3 -8
  142. package/coverage/lcov-report/middleware/currentapp.js.html +15 -65
  143. package/coverage/lcov-report/middleware/index.html +50 -25
  144. package/coverage/lcov-report/middleware/joi-validator.js.html +4 -9
  145. package/coverage/lcov-report/middleware/publicApi.js.html +3 -8
  146. package/coverage/lcov-report/middleware/resourceId.js.html +3 -8
  147. package/coverage/lcov-report/middleware/selfhost.js.html +4 -9
  148. package/coverage/lcov-report/middleware/usageQuota.js.html +572 -0
  149. package/coverage/lcov-report/middleware/utils.js.html +3 -8
  150. package/coverage/lcov-report/sorter.js +0 -26
  151. package/coverage/lcov-report/threads/automation.js.html +90 -581
  152. package/coverage/lcov-report/threads/index.html +40 -30
  153. package/coverage/lcov-report/threads/index.js.html +296 -0
  154. package/coverage/lcov-report/threads/query.js.html +4 -9
  155. package/coverage/lcov-report/threads/utils.js.html +9 -17
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +3 -8
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -8
  158. package/coverage/lcov-report/utilities/centralPath.js.html +3 -8
  159. package/coverage/lcov-report/utilities/csvParser.js.html +5 -10
  160. package/coverage/lcov-report/utilities/global.js.html +4 -9
  161. package/coverage/lcov-report/utilities/index.html +3 -8
  162. package/coverage/lcov-report/utilities/index.js.html +6 -11
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -32
  164. package/coverage/lcov-report/utilities/queue/index.html +7 -12
  165. package/coverage/lcov-report/utilities/routing/index.html +3 -8
  166. package/coverage/lcov-report/utilities/routing/index.js.html +3 -8
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -32
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +71 -67
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +106 -27
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +3 -8
  171. package/coverage/lcov-report/utilities/security.js.html +4 -9
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +3 -8
  173. package/coverage/lcov-report/utilities/usageQuota/index.html +34 -24
  174. package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
  175. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +39 -44
  176. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +3 -8
  177. package/coverage/lcov-report/utilities/users.js.html +3 -8
  178. package/coverage/lcov-report/utilities/workerRequests.js.html +4 -9
  179. package/coverage/lcov.info +3061 -1290
  180. package/dist/api/controllers/application.js +73 -145
  181. package/dist/api/controllers/deploy/index.js +36 -68
  182. package/dist/api/controllers/public/applications.js +9 -29
  183. package/dist/api/controllers/public/queries.js +7 -27
  184. package/dist/api/controllers/public/rows.js +12 -32
  185. package/dist/api/controllers/public/tables.js +2 -2
  186. package/dist/api/controllers/public/users.js +8 -8
  187. package/dist/api/controllers/public/utils.js +1 -1
  188. package/dist/api/controllers/query/import/index.js +3 -3
  189. package/dist/api/controllers/query/index.js +44 -57
  190. package/dist/api/controllers/row/ExternalRequest.js +27 -27
  191. package/dist/api/controllers/row/index.js +60 -83
  192. package/dist/api/controllers/row/internal.js +1 -2
  193. package/dist/api/controllers/row/utils.js +1 -2
  194. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -3
  195. package/dist/api/controllers/table/bulkFormula.js +1 -2
  196. package/dist/api/controllers/table/internal.js +55 -40
  197. package/dist/api/controllers/table/utils.js +229 -271
  198. package/dist/api/index.js +0 -5
  199. package/dist/api/routes/application.js +13 -39
  200. package/dist/api/routes/index.js +56 -61
  201. package/dist/api/routes/public/index.js +9 -6
  202. package/dist/api/routes/public/queries.js +1 -1
  203. package/dist/api/routes/public/rows.js +1 -1
  204. package/dist/api/routes/public/tables.js +3 -3
  205. package/dist/api/routes/public/users.js +1 -1
  206. package/dist/api/routes/row.js +17 -43
  207. package/dist/api/routes/static.js +13 -40
  208. package/dist/api/routes/tests/utilities/TestFunctions.js +33 -75
  209. package/dist/app.js +4 -8
  210. package/dist/automations/actions.js +0 -3
  211. package/dist/automations/automationUtils.js +0 -10
  212. package/dist/automations/steps/createRow.js +12 -12
  213. package/dist/automations/steps/deleteRow.js +16 -13
  214. package/dist/automations/tests/utilities/index.js +11 -13
  215. package/dist/automations/utils.js +133 -187
  216. package/dist/constants/index.js +7 -5
  217. package/dist/db/linkedRows/LinkController.js +1 -0
  218. package/dist/definitions/datasource.js +0 -1
  219. package/dist/environment.js +3 -2
  220. package/dist/index.js +0 -4
  221. package/dist/integrations/base/sql.js +2 -2
  222. package/dist/integrations/base/sqlTable.js +2 -2
  223. package/dist/integrations/googlesheets.js +1 -1
  224. package/dist/integrations/index.js +0 -4
  225. package/dist/integrations/microsoftSqlServer.js +8 -8
  226. package/dist/integrations/mysql.js +9 -9
  227. package/dist/integrations/oracle.js +7 -7
  228. package/dist/integrations/postgres.js +7 -7
  229. package/dist/integrations/queries/sql.js +2 -2
  230. package/dist/integrations/rest.js +1 -1
  231. package/dist/middleware/authorized.js +51 -51
  232. package/dist/middleware/currentapp.js +1 -15
  233. package/dist/middleware/usageQuota.js +154 -0
  234. package/dist/migrations/functions/appUrls.js +1 -1
  235. package/dist/migrations/functions/quotas1.js +2 -6
  236. package/dist/migrations/functions/usageQuotas/index.js +4 -0
  237. package/dist/migrations/functions/usageQuotas/syncApps.js +7 -4
  238. package/dist/migrations/functions/usageQuotas/syncRows.js +8 -5
  239. package/dist/migrations/index.js +1 -17
  240. package/dist/package.json +4 -10
  241. package/dist/threads/automation.js +27 -149
  242. package/dist/threads/index.js +10 -36
  243. package/dist/threads/utils.js +0 -1
  244. package/dist/tsconfig.tsbuildinfo +1 -0
  245. package/dist/utilities/queue/inMemoryQueue.js +1 -6
  246. package/dist/utilities/rowProcessor/index.js +11 -6
  247. package/dist/utilities/rowProcessor/utils.js +27 -1
  248. package/dist/utilities/usageQuota/index.js +86 -0
  249. package/nodemon.json +1 -1
  250. package/package.json +9 -15
  251. package/scripts/dev/manage.js +0 -2
  252. package/src/api/controllers/{application.ts → application.js} +51 -118
  253. package/src/api/controllers/deploy/{index.ts → index.js} +29 -53
  254. package/src/api/controllers/public/applications.ts +2 -2
  255. package/src/api/controllers/public/queries.ts +1 -1
  256. package/src/api/controllers/public/rows.ts +1 -1
  257. package/src/api/controllers/query/{index.ts → index.js} +48 -51
  258. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  259. package/src/api/controllers/row/{index.ts → index.js} +17 -24
  260. package/src/api/controllers/row/internal.js +1 -2
  261. package/src/api/controllers/row/utils.js +1 -4
  262. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -3
  263. package/src/api/controllers/table/bulkFormula.js +1 -1
  264. package/src/api/controllers/table/{internal.ts → internal.js} +48 -27
  265. package/src/api/controllers/table/{utils.ts → utils.js} +69 -86
  266. package/src/api/index.js +0 -5
  267. package/src/api/routes/{application.ts → application.js} +14 -8
  268. package/src/api/routes/index.js +62 -0
  269. package/src/api/routes/public/index.ts +4 -1
  270. package/src/api/routes/{row.ts → row.js} +15 -7
  271. package/src/api/routes/{static.ts → static.js} +11 -11
  272. package/src/api/routes/tests/misc.spec.js +37 -39
  273. package/src/api/routes/tests/routing.spec.js +0 -1
  274. package/src/api/routes/tests/utilities/{TestFunctions.ts → TestFunctions.js} +33 -57
  275. package/src/app.ts +2 -1
  276. package/src/automations/actions.js +0 -3
  277. package/src/automations/automationUtils.js +0 -12
  278. package/src/automations/steps/{createRow.ts → createRow.js} +15 -9
  279. package/src/automations/steps/{deleteRow.ts → deleteRow.js} +16 -10
  280. package/src/automations/tests/automation.spec.js +1 -0
  281. package/src/automations/tests/{createRow.spec.ts → createRow.spec.js} +15 -4
  282. package/src/automations/tests/{deleteRow.spec.ts → deleteRow.spec.js} +5 -3
  283. package/src/automations/tests/utilities/index.js +10 -12
  284. package/src/automations/{utils.ts → utils.js} +28 -39
  285. package/src/constants/index.js +8 -6
  286. package/src/db/linkedRows/LinkController.js +1 -0
  287. package/src/definitions/datasource.ts +0 -1
  288. package/src/environment.js +3 -2
  289. package/src/index.ts +0 -3
  290. package/src/integrations/index.ts +0 -4
  291. package/src/middleware/{authorized.ts → authorized.js} +14 -20
  292. package/src/middleware/currentapp.js +1 -16
  293. package/src/middleware/tests/usageQuota.spec.js +120 -0
  294. package/src/middleware/usageQuota.js +164 -0
  295. package/src/migrations/functions/tests/quotas1.spec.js +2 -0
  296. package/src/migrations/functions/usageQuotas/index.ts +5 -0
  297. package/src/migrations/functions/usageQuotas/syncApps.ts +6 -3
  298. package/src/migrations/functions/usageQuotas/syncRows.ts +6 -3
  299. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +41 -0
  300. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +45 -0
  301. package/src/migrations/index.ts +1 -13
  302. package/src/threads/automation.js +34 -196
  303. package/src/threads/{index.ts → index.js} +14 -18
  304. package/src/threads/utils.js +0 -1
  305. package/src/utilities/queue/inMemoryQueue.js +1 -7
  306. package/src/utilities/rowProcessor/index.js +12 -9
  307. package/src/utilities/rowProcessor/utils.js +29 -1
  308. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  309. package/src/utilities/usageQuota/index.js +93 -0
  310. package/tsconfig.json +2 -2
  311. package/builder/assets/index.89795487.css +0 -6
  312. package/builder/assets/index.be9a1b80.js +0 -1299
  313. package/dist/automations/steps/loop.js +0 -51
  314. package/dist/integrations/redis.js +0 -158
  315. package/dist/migrations/functions/developerQuota.js +0 -49
  316. package/dist/migrations/functions/publishedAppsQuota.js +0 -47
  317. package/dist/migrations/functions/usageQuotas/syncDevelopers.js +0 -24
  318. package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +0 -26
  319. package/dist/tsconfig.build.tsbuildinfo +0 -1
  320. package/src/api/routes/index.ts +0 -60
  321. package/src/automations/steps/loop.js +0 -50
  322. package/src/integrations/redis.ts +0 -152
  323. package/src/integrations/tests/redis.spec.js +0 -60
  324. package/src/migrations/functions/developerQuota.ts +0 -15
  325. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  326. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  327. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +0 -21
  328. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +0 -34
  329. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +0 -40
  330. package/tsconfig.build.json +0 -10
package/dist/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "url": "https://github.com/Budibase/budibase.git"
10
10
  },
11
11
  "scripts": {
12
- "build": "rimraf dist/ && tsc -p tsconfig.build.json && mv dist/src/* dist/ && rimraf dist/src/ && yarn postbuild",
12
+ "build": "rimraf dist/ && tsc && mv dist/src/* dist/ && rmdir dist/src/ && yarn postbuild",
13
13
  "postbuild": "copyfiles -u 1 src/**/*.svelte dist/ && copyfiles -u 1 src/**/*.hbs dist/ && copyfiles -u 1 src/**/*.json dist/",
14
14
  "test": "jest --coverage --maxWorkers=2",
15
15
  "test:watch": "jest --watch",
@@ -71,16 +71,13 @@
71
71
  "@budibase/backend-core": "^1.0.122",
72
72
  "@budibase/client": "^1.0.122",
73
73
  "@budibase/string-templates": "^1.0.122",
74
- "@budibase/pro": "1.0.105-alpha.43",
75
74
  "@bull-board/api": "^3.7.0",
76
75
  "@bull-board/koa": "^3.7.0",
77
76
  "@elastic/elasticsearch": "7.10.0",
78
77
  "@google-cloud/firestore": "^5.0.2",
79
78
  "@koa/router": "8.0.0",
80
79
  "@sendgrid/mail": "7.1.1",
81
- "@sentry/node": "6.17.7",
82
- "@types/global-agent": "^2.1.1",
83
- "@types/koa__router": "^8.0.11",
80
+ "@sentry/node": "^6.0.0",
84
81
  "airtable": "0.10.1",
85
82
  "arangojs": "7.2.0",
86
83
  "aws-sdk": "^2.767.0",
@@ -94,7 +91,6 @@
94
91
  "fix-path": "3.0.0",
95
92
  "form-data": "^4.0.0",
96
93
  "fs-extra": "8.1.0",
97
- "global-agent": "^3.0.0",
98
94
  "google-auth-library": "^7.11.0",
99
95
  "google-spreadsheet": "^3.2.0",
100
96
  "jimp": "0.16.1",
@@ -147,20 +143,18 @@
147
143
  "@types/apidoc": "^0.50.0",
148
144
  "@types/bull": "^3.15.1",
149
145
  "@types/google-spreadsheet": "^3.1.5",
150
- "@types/jest": "^27.4.1",
146
+ "@types/jest": "^26.0.23",
151
147
  "@types/koa": "^2.13.3",
152
148
  "@types/koa-router": "^7.4.2",
153
149
  "@types/lodash": "4.14.180",
154
150
  "@types/node": "^15.12.4",
155
151
  "@types/oracledb": "^5.2.1",
156
152
  "@types/redis": "^4.0.11",
157
- "@typescript-eslint/parser": "5.12.0",
158
153
  "apidoc": "^0.50.2",
159
154
  "babel-jest": "^27.0.2",
160
155
  "copyfiles": "^2.4.1",
161
156
  "docker-compose": "^0.23.6",
162
157
  "eslint": "^6.8.0",
163
- "ioredis-mock": "^7.2.0",
164
158
  "is-wsl": "^2.2.0",
165
159
  "jest": "^27.0.5",
166
160
  "jest-openapi": "^0.14.2",
@@ -174,7 +168,7 @@
174
168
  "swagger-jsdoc": "^6.1.0",
175
169
  "ts-jest": "^27.0.3",
176
170
  "ts-node": "^10.0.0",
177
- "typescript": "^4.5.5",
171
+ "typescript": "^4.3.5",
178
172
  "update-dotenv": "^1.1.1"
179
173
  },
180
174
  "optionalDependencies": {
@@ -18,13 +18,9 @@ const { DocumentTypes } = require("../db/utils");
18
18
  const { doInTenant } = require("@budibase/backend-core/tenancy");
19
19
  const { definitions: triggerDefs } = require("../automations/triggerInfo");
20
20
  const { doInAppContext, getAppDB } = require("@budibase/backend-core/context");
21
- const { AutomationErrors } = require("../constants");
22
21
  const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId;
23
- const LOOP_STEP_ID = actions.ACTION_DEFINITIONS.LOOP.stepId;
24
22
  const CRON_STEP_ID = triggerDefs.CRON.stepId;
25
23
  const STOPPED_STATUS = { success: false, status: "STOPPED" };
26
- const { cloneDeep } = require("lodash/fp");
27
- const env = require("../environment");
28
24
  /**
29
25
  * The automation orchestrator is a class responsible for executing automations.
30
26
  * It handles the context of the automation and makes sure each step gets the correct
@@ -85,162 +81,44 @@ class Orchestrator {
85
81
  }
86
82
  this.executionOutput.steps.push(stepObj);
87
83
  }
88
- updateContextAndOutput(loopStepNumber, step, output, result) {
89
- this.executionOutput.steps.splice(loopStepNumber, 0, {
90
- id: step.id,
91
- stepId: step.stepId,
92
- outputs: Object.assign(Object.assign({}, output), { success: result.success, status: result.status }),
93
- inputs: step.inputs,
94
- });
95
- this._context.steps.splice(loopStepNumber, 0, Object.assign(Object.assign({}, output), { success: result.success, status: result.status }));
96
- }
97
84
  execute() {
98
- var _a;
99
85
  return __awaiter(this, void 0, void 0, function* () {
100
86
  let automation = this._automation;
101
87
  const app = yield this.getApp();
102
88
  let stopped = false;
103
- let loopStep;
104
- let stepCount = 0;
105
- let loopStepNumber;
106
- let loopSteps = [];
107
89
  for (let step of automation.definition.steps) {
108
- stepCount++;
109
- let input;
110
- if (step.stepId === LOOP_STEP_ID) {
111
- loopStep = step;
112
- loopStepNumber = stepCount;
90
+ // execution stopped, record state for that
91
+ if (stopped) {
92
+ this.updateExecutionOutput(step.id, step.stepId, {}, STOPPED_STATUS);
113
93
  continue;
114
94
  }
115
- if (loopStep) {
116
- input = yield processObject(loopStep.inputs, this._context);
117
- }
118
- let iterations = loopStep ? input.binding.length : 1;
119
- let iterationCount = 0;
120
- for (let index = 0; index < iterations; index++) {
121
- let originalStepInput = cloneDeep(step.inputs);
122
- // Handle if the user has set a max iteration count or if it reaches the max limit set by us
123
- if (loopStep) {
124
- // lets first of all handle the input
125
- // if the input is array then use it, if it is a string then split it on every new line
126
- let newInput = yield processObject(loopStep.inputs, cloneDeep(this._context));
127
- newInput = automationUtils.cleanInputValues(newInput, loopStep.schema.inputs);
128
- this._context.steps[loopStepNumber] = {
129
- currentItem: newInput.binding[index],
130
- };
131
- let tempOutput = { items: loopSteps, iterations: iterationCount };
132
- if ((loopStep.inputs.option === "Array" &&
133
- !Array.isArray(newInput.binding)) ||
134
- (loopStep.inputs.option === "String" &&
135
- typeof newInput.binding !== "string")) {
136
- this.updateContextAndOutput(loopStepNumber, step, tempOutput, {
137
- status: AutomationErrors.INCORRECT_TYPE,
138
- success: false,
139
- });
140
- loopSteps = null;
141
- loopStep = null;
142
- break;
143
- }
144
- // The "Loop" binding in the front end is "fake", so replace it here so the context can understand it
145
- // Pretty hacky because we need to account for the row object
146
- for (let [key, value] of Object.entries(originalStepInput)) {
147
- if (typeof value === "object") {
148
- for (let [innerKey, innerValue] of Object.entries(originalStepInput[key])) {
149
- if (typeof innerValue === "string") {
150
- originalStepInput[key][innerKey] =
151
- automationUtils.substituteLoopStep(innerValue, `steps.${loopStepNumber}`);
152
- }
153
- }
154
- }
155
- else {
156
- if (typeof value === "string") {
157
- originalStepInput[key] = automationUtils.substituteLoopStep(value, `steps.${loopStepNumber}`);
158
- }
159
- }
160
- }
161
- if (index === parseInt(env.AUTOMATION_MAX_ITERATIONS) ||
162
- index === loopStep.inputs.iterations) {
163
- this.updateContextAndOutput(loopStepNumber, step, tempOutput, {
164
- status: AutomationErrors.MAX_ITERATIONS,
165
- success: true,
166
- });
167
- loopSteps = null;
168
- loopStep = null;
169
- break;
170
- }
171
- if (((_a = this._context.steps[loopStepNumber]) === null || _a === void 0 ? void 0 : _a.currentItem) ===
172
- loopStep.inputs.failure) {
173
- this.updateContextAndOutput(loopStepNumber, step, tempOutput, {
174
- status: AutomationErrors.FAILURE_CONDITION,
175
- success: false,
176
- });
177
- loopSteps = null;
178
- loopStep = null;
179
- break;
180
- }
181
- }
182
- // execution stopped, record state for that
183
- if (stopped) {
184
- this.updateExecutionOutput(step.id, step.stepId, {}, STOPPED_STATUS);
185
- continue;
186
- }
187
- // If it's a loop step, we need to manually add the bindings to the context
188
- let stepFn = yield this.getStepFunctionality(step.stepId);
189
- let inputs = yield processObject(originalStepInput, this._context);
190
- inputs = automationUtils.cleanInputValues(inputs, step.schema.inputs);
191
- try {
192
- // appId is always passed
193
- let tenantId = app.tenantId || DEFAULT_TENANT_ID;
194
- const outputs = yield doInTenant(tenantId, () => {
195
- return stepFn({
196
- inputs: inputs,
197
- appId: this._appId,
198
- emitter: this._emitter,
199
- context: this._context,
200
- });
95
+ let stepFn = yield this.getStepFunctionality(step.stepId);
96
+ step.inputs = yield processObject(step.inputs, this._context);
97
+ step.inputs = automationUtils.cleanInputValues(step.inputs, step.schema.inputs);
98
+ // appId is always passed
99
+ try {
100
+ let tenantId = app.tenantId || DEFAULT_TENANT_ID;
101
+ const outputs = yield doInTenant(tenantId, () => {
102
+ return stepFn({
103
+ inputs: step.inputs,
104
+ appId: this._appId,
105
+ emitter: this._emitter,
106
+ context: this._context,
201
107
  });
202
- this._context.steps[stepCount] = outputs;
203
- // if filter causes us to stop execution don't break the loop, set a var
204
- // so that we can finish iterating through the steps and record that it stopped
205
- if (step.stepId === FILTER_STEP_ID && !outputs.success) {
206
- stopped = true;
207
- this.updateExecutionOutput(step.id, step.stepId, step.inputs, Object.assign(Object.assign({}, outputs), STOPPED_STATUS));
208
- continue;
209
- }
210
- if (loopStep && loopSteps) {
211
- loopSteps.push(outputs);
212
- }
213
- else {
214
- this.updateExecutionOutput(step.id, step.stepId, step.inputs, outputs);
215
- }
216
- }
217
- catch (err) {
218
- console.error(`Automation error - ${step.stepId} - ${err}`);
219
- return err;
220
- }
221
- if (loopStep) {
222
- iterationCount++;
223
- if (index === iterations - 1) {
224
- loopStep = null;
225
- this._context.steps.splice(loopStepNumber, 1);
226
- break;
227
- }
108
+ });
109
+ this._context.steps.push(outputs);
110
+ // if filter causes us to stop execution don't break the loop, set a var
111
+ // so that we can finish iterating through the steps and record that it stopped
112
+ if (step.stepId === FILTER_STEP_ID && !outputs.success) {
113
+ stopped = true;
114
+ this.updateExecutionOutput(step.id, step.stepId, step.inputs, Object.assign(Object.assign({}, outputs), STOPPED_STATUS));
115
+ continue;
228
116
  }
117
+ this.updateExecutionOutput(step.id, step.stepId, step.inputs, outputs);
229
118
  }
230
- if (loopSteps && loopSteps.length) {
231
- let tempOutput = {
232
- success: true,
233
- items: loopSteps,
234
- iterations: iterationCount,
235
- };
236
- this.executionOutput.steps.splice(loopStepNumber + 1, 0, {
237
- id: step.id,
238
- stepId: step.stepId,
239
- outputs: tempOutput,
240
- inputs: step.inputs,
241
- });
242
- this._context.steps.splice(loopStepNumber, 0, tempOutput);
243
- loopSteps = null;
119
+ catch (err) {
120
+ console.error(`Automation error - ${step.stepId} - ${err}`);
121
+ return err;
244
122
  }
245
123
  }
246
124
  return this.executionOutput;
@@ -1,45 +1,17 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.Thread = exports.ThreadType = void 0;
30
- const worker_farm_1 = __importDefault(require("worker-farm"));
31
- const env = __importStar(require("../environment"));
32
- exports.ThreadType = {
2
+ const workerFarm = require("worker-farm");
3
+ const env = require("../environment");
4
+ const ThreadType = {
33
5
  QUERY: "query",
34
6
  AUTOMATION: "automation",
35
7
  };
36
8
  function typeToFile(type) {
37
9
  let filename = null;
38
10
  switch (type) {
39
- case exports.ThreadType.QUERY:
11
+ case ThreadType.QUERY:
40
12
  filename = "./query";
41
13
  break;
42
- case exports.ThreadType.AUTOMATION:
14
+ case ThreadType.AUTOMATION:
43
15
  filename = "./automation";
44
16
  break;
45
17
  default:
@@ -65,10 +37,11 @@ class Thread {
65
37
  this.timeoutMs = opts.timeoutMs;
66
38
  workerOpts.maxCallTime = opts.timeoutMs;
67
39
  }
68
- this.workers = (0, worker_farm_1.default)(workerOpts, typeToFile(type));
40
+ this.workers = workerFarm(workerOpts, typeToFile(type));
69
41
  }
70
42
  }
71
43
  run(data) {
44
+ const timeoutMs = this.timeoutMs;
72
45
  return new Promise((resolve, reject) => {
73
46
  let fncToCall;
74
47
  // if in test then don't use threading
@@ -80,7 +53,7 @@ class Thread {
80
53
  }
81
54
  fncToCall(data, (err, response) => {
82
55
  if (err && err.type === "TimeoutError") {
83
- reject(new Error(`Query response time exceeded ${this.timeoutMs}ms timeout.`));
56
+ reject(new Error(`Query response time exceeded ${timeoutMs}ms timeout.`));
84
57
  }
85
58
  else if (err) {
86
59
  reject(err);
@@ -92,4 +65,5 @@ class Thread {
92
65
  });
93
66
  }
94
67
  }
95
- exports.Thread = Thread;
68
+ module.exports.Thread = Thread;
69
+ module.exports.ThreadType = ThreadType;
@@ -68,7 +68,6 @@ exports.formatResponse = resp => {
68
68
  exports.hasExtraData = response => {
69
69
  return (typeof response === "object" &&
70
70
  !Array.isArray(response) &&
71
- response &&
72
71
  response.data != null &&
73
72
  response.info != null);
74
73
  };