@budibase/server 1.0.49 → 1.0.50-alpha.3

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 (381) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +4 -5
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +2 -1
  6. package/__mocks__/pg.ts +3 -5
  7. package/builder/assets/{index.2c37968e.js → index.9fe798bd.js} +252 -249
  8. package/builder/assets/index.c0cc369d.css +6 -0
  9. package/builder/assets/{vendor.f9faf6ab.js → vendor.5ad9695a.js} +202 -106
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +3105 -2814
  12. package/coverage/coverage-final.json +106 -101
  13. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/application.js.html +257 -152
  16. package/coverage/lcov-report/api/controllers/auth.js.html +22 -13
  17. package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  20. package/coverage/lcov-report/api/controllers/component.js.html +13 -16
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +81 -51
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/api/controllers/index.html +78 -78
  24. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  26. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  27. package/coverage/lcov-report/api/controllers/migrations.js.html +119 -0
  28. package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
  29. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  30. package/coverage/lcov-report/api/controllers/query/index.js.html +38 -35
  31. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  32. package/coverage/lcov-report/api/controllers/role.js.html +16 -16
  33. package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
  35. package/coverage/lcov-report/api/controllers/row/index.html +55 -40
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +118 -226
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +52 -34
  39. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +548 -0
  40. package/coverage/lcov-report/api/controllers/row/utils.js.html +47 -62
  41. package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
  42. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +599 -0
  44. package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
  45. package/coverage/lcov-report/api/controllers/table/index.html +58 -43
  46. package/coverage/lcov-report/api/controllers/table/index.js.html +58 -82
  47. package/coverage/lcov-report/api/controllers/table/internal.js.html +81 -66
  48. package/coverage/lcov-report/api/controllers/table/utils.js.html +218 -110
  49. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/user.js.html +79 -76
  51. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  52. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  53. package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
  54. package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
  55. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  56. package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
  57. package/coverage/lcov-report/api/index.html +1 -1
  58. package/coverage/lcov-report/api/index.js.html +8 -8
  59. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/index.html +18 -18
  71. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  72. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/{hosting.js.html → migrations.js.html} +17 -14
  76. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/static.js.html +17 -2
  84. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  87. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  88. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  89. package/coverage/lcov-report/automations/actions.js.html +24 -24
  90. package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
  91. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  92. package/coverage/lcov-report/automations/index.html +18 -18
  93. package/coverage/lcov-report/automations/index.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -22
  96. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  97. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  98. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  99. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  101. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  102. package/coverage/lcov-report/automations/steps/index.html +13 -13
  103. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  105. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  106. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  108. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  109. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  110. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  111. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  112. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  115. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  116. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  119. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  120. package/coverage/lcov-report/automations/triggers.js.html +61 -55
  121. package/coverage/lcov-report/automations/utils.js.html +54 -42
  122. package/coverage/lcov-report/constants/index.html +5 -5
  123. package/coverage/lcov-report/constants/index.js.html +53 -26
  124. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  125. package/coverage/lcov-report/constants/screens.js.html +4 -4
  126. package/coverage/lcov-report/db/client.js.html +18 -18
  127. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  128. package/coverage/lcov-report/db/index.html +15 -15
  129. package/coverage/lcov-report/db/index.js.html +3 -3
  130. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +25 -37
  131. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  132. package/coverage/lcov-report/db/linkedRows/index.js.html +51 -96
  133. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
  134. package/coverage/lcov-report/db/newid.js.html +4 -4
  135. package/coverage/lcov-report/db/utils.js.html +87 -87
  136. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  137. package/coverage/lcov-report/events/index.html +1 -1
  138. package/coverage/lcov-report/events/index.js.html +5 -5
  139. package/coverage/lcov-report/events/utils.js.html +3 -3
  140. package/coverage/lcov-report/index.html +135 -120
  141. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  142. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  143. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  144. package/coverage/lcov-report/middleware/authorized.js.html +173 -65
  145. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  146. package/coverage/lcov-report/middleware/currentapp.js.html +95 -83
  147. package/coverage/lcov-report/middleware/index.html +38 -38
  148. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  149. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  150. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  151. package/coverage/lcov-report/middleware/usageQuota.js.html +281 -53
  152. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  153. package/coverage/lcov-report/threads/automation.js.html +30 -24
  154. package/coverage/lcov-report/threads/index.html +26 -26
  155. package/coverage/lcov-report/threads/index.js.html +10 -10
  156. package/coverage/lcov-report/threads/query.js.html +39 -24
  157. package/coverage/lcov-report/threads/utils.js.html +14 -14
  158. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  159. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  160. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  161. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  162. package/coverage/lcov-report/utilities/global.js.html +58 -49
  163. package/coverage/lcov-report/utilities/index.html +37 -37
  164. package/coverage/lcov-report/utilities/index.js.html +43 -73
  165. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  166. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  167. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  168. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  169. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  170. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +97 -103
  171. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
  172. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  173. package/coverage/lcov-report/utilities/security.js.html +8 -8
  174. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  175. package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
  176. package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
  177. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +305 -0
  178. package/coverage/lcov-report/{api/controllers/hosting.js.html → utilities/usageQuota/usageQuoteReset.js.html} +36 -48
  179. package/coverage/lcov-report/utilities/users.js.html +9 -9
  180. package/coverage/lcov-report/utilities/workerRequests.js.html +43 -112
  181. package/coverage/lcov.info +5010 -4425
  182. package/dist/api/controllers/application.js +90 -60
  183. package/dist/api/controllers/auth.js +8 -5
  184. package/dist/api/controllers/automation.js +14 -19
  185. package/dist/api/controllers/cloud.js +2 -3
  186. package/dist/api/controllers/component.js +3 -4
  187. package/dist/api/controllers/datasource.js +20 -10
  188. package/dist/api/controllers/deploy/Deployment.js +3 -6
  189. package/dist/api/controllers/deploy/index.js +12 -13
  190. package/dist/api/controllers/dev.js +5 -5
  191. package/dist/api/controllers/layout.js +3 -3
  192. package/dist/api/controllers/metadata.js +4 -4
  193. package/dist/api/controllers/migrations.js +21 -0
  194. package/dist/api/controllers/permission.js +4 -4
  195. package/dist/api/controllers/query/import/index.js +4 -6
  196. package/dist/api/controllers/query/index.js +11 -10
  197. package/dist/api/controllers/role.js +5 -5
  198. package/dist/api/controllers/routing.js +5 -6
  199. package/dist/api/controllers/row/ExternalRequest.js +90 -67
  200. package/dist/api/controllers/row/external.js +14 -22
  201. package/dist/api/controllers/row/internal.js +55 -93
  202. package/dist/api/controllers/row/internalSearch.js +23 -17
  203. package/dist/api/controllers/row/staticFormula.js +147 -0
  204. package/dist/api/controllers/row/utils.js +13 -14
  205. package/dist/api/controllers/screen.js +5 -7
  206. package/dist/api/controllers/static/index.js +62 -16
  207. package/dist/api/controllers/table/bulkFormula.js +159 -0
  208. package/dist/api/controllers/table/external.js +7 -10
  209. package/dist/api/controllers/table/index.js +16 -13
  210. package/dist/api/controllers/table/internal.js +22 -16
  211. package/dist/api/controllers/table/utils.js +62 -35
  212. package/dist/api/controllers/user.js +43 -43
  213. package/dist/api/controllers/view/index.js +8 -10
  214. package/dist/api/controllers/view/utils.js +9 -4
  215. package/dist/api/controllers/webhook.js +10 -8
  216. package/dist/api/routes/index.js +2 -2
  217. package/dist/api/routes/migrations.js +9 -0
  218. package/dist/api/routes/static.js +2 -1
  219. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  220. package/dist/app.js +35 -5
  221. package/dist/automations/automationUtils.js +2 -3
  222. package/dist/automations/steps/createRow.js +3 -5
  223. package/dist/automations/steps/deleteRow.js +1 -4
  224. package/dist/automations/steps/updateRow.js +1 -1
  225. package/dist/automations/triggers.js +27 -25
  226. package/dist/automations/utils.js +10 -5
  227. package/dist/constants/index.js +7 -0
  228. package/dist/db/linkedRows/LinkController.js +3 -7
  229. package/dist/db/linkedRows/index.js +16 -27
  230. package/dist/db/linkedRows/linkUtils.js +6 -6
  231. package/dist/db/views/staticViews.js +9 -10
  232. package/dist/definitions/datasource.js +1 -0
  233. package/dist/environment.js +4 -1
  234. package/dist/integrations/base/sql.js +62 -21
  235. package/dist/integrations/googlesheets.js +340 -0
  236. package/dist/integrations/index.js +3 -0
  237. package/dist/integrations/utils.js +60 -9
  238. package/dist/middleware/authorized.js +57 -30
  239. package/dist/middleware/builder.js +2 -2
  240. package/dist/middleware/currentapp.js +41 -37
  241. package/dist/middleware/usageQuota.js +82 -15
  242. package/dist/migrations/functions/appUrls.js +46 -0
  243. package/dist/migrations/functions/quotas1.js +50 -0
  244. package/dist/migrations/functions/usageQuotas/index.js +20 -0
  245. package/dist/migrations/functions/usageQuotas/syncApps.js +29 -0
  246. package/dist/migrations/functions/usageQuotas/syncRows.js +33 -0
  247. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  248. package/dist/migrations/index.js +62 -0
  249. package/dist/package.json +8 -5
  250. package/dist/tests/utilities/TestConfiguration.js +80 -50
  251. package/dist/threads/automation.js +13 -11
  252. package/dist/threads/query.js +15 -11
  253. package/dist/tsconfig.tsbuildinfo +1 -1
  254. package/dist/utilities/fileSystem/index.js +4 -3
  255. package/dist/utilities/global.js +15 -12
  256. package/dist/utilities/index.js +7 -17
  257. package/dist/utilities/routing/index.js +5 -5
  258. package/dist/utilities/rowProcessor/index.js +23 -17
  259. package/dist/utilities/rowProcessor/utils.js +14 -4
  260. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +45 -31
  261. package/dist/utilities/usageQuota/rows.js +78 -0
  262. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  263. package/dist/utilities/users.js +3 -3
  264. package/dist/utilities/workerRequests.js +4 -24
  265. package/nodemon.json +1 -1
  266. package/package.json +9 -6
  267. package/scripts/integrations/mssql/data/Dockerfile +1 -1
  268. package/scripts/integrations/mssql/data/setup.sql +17 -4
  269. package/scripts/integrations/postgres/init.sql +11 -6
  270. package/scripts/likeCypress.ts +1 -1
  271. package/src/api/controllers/application.js +85 -50
  272. package/src/api/controllers/auth.js +8 -5
  273. package/src/api/controllers/automation.js +13 -23
  274. package/src/api/controllers/cloud.js +2 -3
  275. package/src/api/controllers/component.js +3 -4
  276. package/src/api/controllers/datasource.js +21 -11
  277. package/src/api/controllers/deploy/Deployment.js +3 -7
  278. package/src/api/controllers/deploy/index.js +20 -13
  279. package/src/api/controllers/dev.js +5 -5
  280. package/src/api/controllers/layout.js +3 -3
  281. package/src/api/controllers/metadata.js +4 -9
  282. package/src/api/controllers/migrations.js +13 -0
  283. package/src/api/controllers/permission.js +4 -4
  284. package/src/api/controllers/query/import/index.ts +4 -6
  285. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  286. package/src/api/controllers/query/index.js +11 -10
  287. package/src/api/controllers/role.js +5 -5
  288. package/src/api/controllers/routing.js +5 -6
  289. package/src/api/controllers/row/ExternalRequest.ts +67 -43
  290. package/src/api/controllers/row/external.js +27 -58
  291. package/src/api/controllers/row/internal.js +54 -90
  292. package/src/api/controllers/row/internalSearch.js +23 -17
  293. package/src/api/controllers/row/staticFormula.js +156 -0
  294. package/src/api/controllers/row/utils.js +13 -18
  295. package/src/api/controllers/screen.js +5 -7
  296. package/src/api/controllers/static/index.js +66 -15
  297. package/src/api/controllers/table/bulkFormula.js +173 -0
  298. package/src/api/controllers/table/external.js +7 -10
  299. package/src/api/controllers/table/index.js +20 -28
  300. package/src/api/controllers/table/internal.js +24 -19
  301. package/src/api/controllers/table/utils.js +78 -42
  302. package/src/api/controllers/user.js +46 -45
  303. package/src/api/controllers/view/index.js +8 -10
  304. package/src/api/controllers/view/utils.js +9 -4
  305. package/src/api/controllers/webhook.js +10 -8
  306. package/src/api/routes/index.js +2 -2
  307. package/src/api/routes/migrations.js +14 -0
  308. package/src/api/routes/static.js +5 -0
  309. package/src/api/routes/tests/application.spec.js +2 -2
  310. package/src/api/routes/tests/auth.spec.js +1 -2
  311. package/src/api/routes/tests/automation.spec.js +1 -0
  312. package/src/api/routes/tests/misc.spec.js +0 -1
  313. package/src/api/routes/tests/routing.spec.js +21 -12
  314. package/src/api/routes/tests/row.spec.js +7 -4
  315. package/src/api/routes/tests/static.spec.js +98 -0
  316. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  317. package/src/app.ts +18 -5
  318. package/src/automations/automationUtils.js +2 -3
  319. package/src/automations/steps/createRow.js +2 -5
  320. package/src/automations/steps/deleteRow.js +1 -4
  321. package/src/automations/steps/updateRow.js +1 -1
  322. package/src/automations/triggers.js +33 -31
  323. package/src/automations/utils.js +9 -5
  324. package/src/constants/index.js +9 -0
  325. package/src/db/linkedRows/LinkController.js +3 -7
  326. package/src/db/linkedRows/index.js +16 -31
  327. package/src/db/linkedRows/linkUtils.js +6 -6
  328. package/src/db/tests/linkController.spec.js +0 -1
  329. package/src/db/tests/linkTests.spec.js +5 -6
  330. package/src/db/views/staticViews.js +8 -10
  331. package/src/definitions/common.ts +3 -0
  332. package/src/definitions/datasource.ts +3 -0
  333. package/src/environment.js +4 -1
  334. package/src/integrations/base/sql.ts +75 -29
  335. package/src/integrations/googlesheets.ts +353 -0
  336. package/src/integrations/index.ts +3 -0
  337. package/src/integrations/tests/sql.spec.js +16 -0
  338. package/src/integrations/utils.ts +75 -12
  339. package/src/middleware/authorized.js +66 -30
  340. package/src/middleware/builder.js +2 -2
  341. package/src/middleware/currentapp.js +50 -46
  342. package/src/middleware/tests/authorized.spec.js +13 -6
  343. package/src/middleware/tests/currentapp.spec.js +6 -0
  344. package/src/middleware/tests/usageQuota.spec.js +18 -24
  345. package/src/middleware/usageQuota.js +93 -17
  346. package/src/migrations/functions/appUrls.ts +34 -0
  347. package/src/migrations/functions/quotas1.ts +20 -0
  348. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  349. package/src/migrations/functions/tests/quotas1.spec.js +27 -0
  350. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  351. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  352. package/src/migrations/functions/usageQuotas/syncApps.ts +18 -0
  353. package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
  354. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +37 -0
  355. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +43 -0
  356. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  357. package/src/migrations/index.ts +56 -0
  358. package/src/module.d.ts +3 -0
  359. package/src/tests/utilities/TestConfiguration.js +82 -55
  360. package/src/threads/automation.js +17 -15
  361. package/src/threads/query.js +17 -12
  362. package/src/utilities/fileSystem/index.js +4 -3
  363. package/src/utilities/global.js +15 -12
  364. package/src/utilities/index.js +7 -17
  365. package/src/utilities/routing/index.js +5 -5
  366. package/src/utilities/rowProcessor/index.js +25 -27
  367. package/src/utilities/rowProcessor/utils.js +23 -7
  368. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  369. package/src/utilities/usageQuota/index.js +93 -0
  370. package/src/utilities/usageQuota/rows.js +75 -0
  371. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  372. package/src/utilities/users.js +3 -3
  373. package/src/utilities/workerRequests.js +4 -27
  374. package/tsconfig.json +4 -2
  375. package/builder/assets/index.39e01193.css +0 -1
  376. package/dist/api/controllers/hosting.js +0 -30
  377. package/dist/api/routes/hosting.js +0 -11
  378. package/src/api/controllers/hosting.js +0 -22
  379. package/src/api/routes/hosting.js +0 -13
  380. package/src/api/routes/tests/hosting.spec.js +0 -36
  381. package/src/utilities/usageQuota.js +0 -73
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">85.18% </span>
26
+ <span class="strong">82.14% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>23/27</span>
28
+ <span class='fraction'>23/28</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">85.18% </span>
47
+ <span class="strong">82.14% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>23/27</span>
49
+ <span class='fraction'>23/28</span>
50
50
  </div>
51
51
 
52
52
 
@@ -112,7 +112,10 @@
112
112
  <a name='L53'></a><a href='#L53'>53</a>
113
113
  <a name='L54'></a><a href='#L54'>54</a>
114
114
  <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
115
+ <a name='L56'></a><a href='#L56'>56</a>
116
+ <a name='L57'></a><a href='#L57'>57</a>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
116
119
  <span class="cline-any cline-yes">23x</span>
117
120
  <span class="cline-any cline-yes">23x</span>
118
121
  <span class="cline-any cline-yes">23x</span>
@@ -120,7 +123,6 @@
120
123
  <span class="cline-any cline-neutral">&nbsp;</span>
121
124
  <span class="cline-any cline-yes">23x</span>
122
125
  <span class="cline-any cline-yes">1x</span>
123
- <span class="cline-any cline-yes">1x</span>
124
126
  <span class="cline-any cline-neutral">&nbsp;</span>
125
127
  <span class="cline-any cline-neutral">&nbsp;</span>
126
128
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -132,6 +134,8 @@
132
134
  <span class="cline-any cline-yes">1x</span>
133
135
  <span class="cline-any cline-neutral">&nbsp;</span>
134
136
  <span class="cline-any cline-yes">1x</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-yes">1x</span>
135
139
  <span class="cline-any cline-yes">1x</span>
136
140
  <span class="cline-any cline-neutral">&nbsp;</span>
137
141
  <span class="cline-any cline-yes">1x</span>
@@ -141,6 +145,8 @@
141
145
  <span class="cline-any cline-neutral">&nbsp;</span>
142
146
  <span class="cline-any cline-no">&nbsp;</span>
143
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-no">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
150
  <span class="cline-any cline-neutral">&nbsp;</span>
145
151
  <span class="cline-any cline-neutral">&nbsp;</span>
146
152
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -167,14 +173,13 @@
167
173
  <span class="cline-any cline-no">&nbsp;</span>
168
174
  <span class="cline-any cline-neutral">&nbsp;</span>
169
175
  <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
171
- const { outputProcessing } = require("../../utilities/rowProcessor")
176
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { outputProcessing } = require("../../utilities/rowProcessor")
172
177
  const { InternalTables } = require("../../db/utils")
173
178
  const { getFullUser } = require("../../utilities/users")
174
179
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
180
+ const { getAppDB, getAppId } = require("@budibase/backend-core/context")
175
181
  &nbsp;
176
182
  exports.fetchSelf = async ctx =&gt; {
177
- const appId = ctx.appId
178
183
  let userId = ctx.user.userId || <span class="branch-1 cbranch-no" title="branch not covered" >ctx.user._id</span>
179
184
  /* istanbul ignore next */
180
185
  if (!userId) {
@@ -185,16 +190,20 @@ exports.fetchSelf = async ctx =&gt; {
185
190
  const user = await getFullUser(ctx, userId)
186
191
  // this shouldn't be returned by the app self
187
192
  delete user.roles
193
+ // forward the csrf token from the session
194
+ user.csrfToken = ctx.user.csrfToken
188
195
  &nbsp;
189
- if (appId) {
190
- const db = new CouchDB(appId)
196
+ if (getAppId()) {
197
+ const db = getAppDB()
191
198
  // remove the full roles structure
192
199
  delete user.roles
193
200
  try {
194
201
  const userTable = await db.get(InternalTables.USER_METADATA)
195
202
  const metadata = await db.get(userId)
203
+ // make sure there is never a stale csrf token
204
+ <span class="cstat-no" title="statement not covered" > delete metadata.csrfToken</span>
196
205
  // specifically needs to make sure is enriched
197
- <span class="cstat-no" title="statement not covered" > ctx.body = await outputProcessing(ctx, userTable, {</span>
206
+ <span class="cstat-no" title="statement not covered" > ctx.body = await outputProcessing(userTable, {</span>
198
207
  ...user,
199
208
  ...metadata,
200
209
  })
@@ -229,7 +238,7 @@ exports.fetchSelf = async ctx =&gt; {
229
238
  <div class='footer quiet pad2 space-top1 center small'>
230
239
  Code coverage generated by
231
240
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
232
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
241
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
233
242
  </div>
234
243
  </div>
235
244
  <script src="../../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">89.69% </span>
26
+ <span class="strong">90.52% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>87/97</span>
28
+ <span class='fraction'>86/95</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">89.58% </span>
47
+ <span class="strong">90.42% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>86/96</span>
49
+ <span class='fraction'>85/94</span>
50
50
  </div>
51
51
 
52
52
 
@@ -275,31 +275,21 @@
275
275
  <a name='L216'></a><a href='#L216'>216</a>
276
276
  <a name='L217'></a><a href='#L217'>217</a>
277
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
289
- <span class="cline-any cline-yes">33x</span>
290
- <span class="cline-any cline-yes">33x</span>
291
- <span class="cline-any cline-yes">33x</span>
278
+ <a name='L219'></a><a href='#L219'>219</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">38x</span>
279
+ <span class="cline-any cline-yes">38x</span>
280
+ <span class="cline-any cline-yes">38x</span>
292
281
  <span class="cline-any cline-neutral">&nbsp;</span>
293
282
  <span class="cline-any cline-neutral">&nbsp;</span>
294
283
  <span class="cline-any cline-neutral">&nbsp;</span>
295
284
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">33x</span>
297
- <span class="cline-any cline-yes">33x</span>
298
- <span class="cline-any cline-yes">33x</span>
299
- <span class="cline-any cline-yes">33x</span>
285
+ <span class="cline-any cline-yes">38x</span>
286
+ <span class="cline-any cline-yes">38x</span>
287
+ <span class="cline-any cline-yes">38x</span>
288
+ <span class="cline-any cline-yes">38x</span>
289
+ <span class="cline-any cline-yes">38x</span>
300
290
  <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-yes">33x</span>
302
- <span class="cline-any cline-yes">33x</span>
291
+ <span class="cline-any cline-yes">38x</span>
292
+ <span class="cline-any cline-yes">38x</span>
303
293
  <span class="cline-any cline-neutral">&nbsp;</span>
304
294
  <span class="cline-any cline-neutral">&nbsp;</span>
305
295
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -309,10 +299,6 @@
309
299
  <span class="cline-any cline-neutral">&nbsp;</span>
310
300
  <span class="cline-any cline-neutral">&nbsp;</span>
311
301
  <span class="cline-any cline-yes">1x</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
302
  <span class="cline-any cline-yes">1x</span>
317
303
  <span class="cline-any cline-neutral">&nbsp;</span>
318
304
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -320,7 +306,6 @@
320
306
  <span class="cline-any cline-neutral">&nbsp;</span>
321
307
  <span class="cline-any cline-neutral">&nbsp;</span>
322
308
  <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-neutral">&nbsp;</span>
324
309
  <span class="cline-any cline-yes">22x</span>
325
310
  <span class="cline-any cline-no">&nbsp;</span>
326
311
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -344,7 +329,7 @@
344
329
  <span class="cline-any cline-yes">22x</span>
345
330
  <span class="cline-any cline-neutral">&nbsp;</span>
346
331
  <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-yes">33x</span>
332
+ <span class="cline-any cline-yes">38x</span>
348
333
  <span class="cline-any cline-yes">21x</span>
349
334
  <span class="cline-any cline-yes">21x</span>
350
335
  <span class="cline-any cline-yes">21x</span>
@@ -361,7 +346,6 @@
361
346
  <span class="cline-any cline-yes">20x</span>
362
347
  <span class="cline-any cline-neutral">&nbsp;</span>
363
348
  <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
349
  <span class="cline-any cline-yes">20x</span>
366
350
  <span class="cline-any cline-yes">20x</span>
367
351
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -375,7 +359,7 @@
375
359
  <span class="cline-any cline-neutral">&nbsp;</span>
376
360
  <span class="cline-any cline-neutral">&nbsp;</span>
377
361
  <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-yes">33x</span>
362
+ <span class="cline-any cline-yes">38x</span>
379
363
  <span class="cline-any cline-yes">2x</span>
380
364
  <span class="cline-any cline-yes">2x</span>
381
365
  <span class="cline-any cline-yes">2x</span>
@@ -385,7 +369,6 @@
385
369
  <span class="cline-any cline-neutral">&nbsp;</span>
386
370
  <span class="cline-any cline-neutral">&nbsp;</span>
387
371
  <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
372
  <span class="cline-any cline-yes">2x</span>
390
373
  <span class="cline-any cline-yes">2x</span>
391
374
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -417,7 +400,7 @@
417
400
  <span class="cline-any cline-neutral">&nbsp;</span>
418
401
  <span class="cline-any cline-neutral">&nbsp;</span>
419
402
  <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-yes">33x</span>
403
+ <span class="cline-any cline-yes">38x</span>
421
404
  <span class="cline-any cline-yes">2x</span>
422
405
  <span class="cline-any cline-yes">2x</span>
423
406
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -427,12 +410,12 @@
427
410
  <span class="cline-any cline-yes">2x</span>
428
411
  <span class="cline-any cline-neutral">&nbsp;</span>
429
412
  <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-yes">33x</span>
413
+ <span class="cline-any cline-yes">38x</span>
431
414
  <span class="cline-any cline-yes">1x</span>
432
415
  <span class="cline-any cline-yes">1x</span>
433
416
  <span class="cline-any cline-neutral">&nbsp;</span>
434
417
  <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">33x</span>
418
+ <span class="cline-any cline-yes">38x</span>
436
419
  <span class="cline-any cline-yes">1x</span>
437
420
  <span class="cline-any cline-yes">1x</span>
438
421
  <span class="cline-any cline-yes">1x</span>
@@ -440,20 +423,19 @@
440
423
  <span class="cline-any cline-neutral">&nbsp;</span>
441
424
  <span class="cline-any cline-neutral">&nbsp;</span>
442
425
  <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
426
  <span class="cline-any cline-yes">1x</span>
445
427
  <span class="cline-any cline-yes">1x</span>
446
428
  <span class="cline-any cline-neutral">&nbsp;</span>
447
429
  <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">33x</span>
430
+ <span class="cline-any cline-yes">38x</span>
449
431
  <span class="cline-any cline-yes">1x</span>
450
432
  <span class="cline-any cline-neutral">&nbsp;</span>
451
433
  <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-yes">33x</span>
434
+ <span class="cline-any cline-yes">38x</span>
453
435
  <span class="cline-any cline-yes">1x</span>
454
436
  <span class="cline-any cline-neutral">&nbsp;</span>
455
437
  <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">33x</span>
438
+ <span class="cline-any cline-yes">38x</span>
457
439
  <span class="cline-any cline-yes">1x</span>
458
440
  <span class="cline-any cline-neutral">&nbsp;</span>
459
441
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -466,8 +448,7 @@
466
448
  <span class="cline-any cline-neutral">&nbsp;</span>
467
449
  <span class="cline-any cline-neutral">&nbsp;</span>
468
450
  <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-yes">33x</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
451
+ <span class="cline-any cline-yes">38x</span>
471
452
  <span class="cline-any cline-no">&nbsp;</span>
472
453
  <span class="cline-any cline-no">&nbsp;</span>
473
454
  <span class="cline-any cline-no">&nbsp;</span>
@@ -491,8 +472,7 @@
491
472
  <span class="cline-any cline-yes">2x</span>
492
473
  <span class="cline-any cline-neutral">&nbsp;</span>
493
474
  <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">33x</span>
495
- <span class="cline-any cline-yes">2x</span>
475
+ <span class="cline-any cline-yes">38x</span>
496
476
  <span class="cline-any cline-yes">2x</span>
497
477
  <span class="cline-any cline-yes">2x</span>
498
478
  <span class="cline-any cline-yes">2x</span>
@@ -513,8 +493,7 @@
513
493
  <span class="cline-any cline-yes">2x</span>
514
494
  <span class="cline-any cline-yes">2x</span>
515
495
  <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
517
- const actions = require("../../automations/actions")
496
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const actions = require("../../automations/actions")
518
497
  const triggers = require("../../automations/triggers")
519
498
  const { getAutomationParams, generateAutomationID } = require("../../db/utils")
520
499
  const {
@@ -525,6 +504,7 @@ const {
525
504
  const { deleteEntityMetadata } = require("../../utilities")
526
505
  const { MetadataTypes } = require("../../constants")
527
506
  const { setTestFlag, clearTestFlag } = require("../../utilities/redis")
507
+ const { getAppDB } = require("@budibase/backend-core/context")
528
508
  &nbsp;
529
509
  const ACTION_DEFS = removeDeprecated(actions.ACTION_DEFINITIONS)
530
510
  const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
@@ -535,14 +515,9 @@ const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
535
515
  * *
536
516
  *************************/
537
517
  &nbsp;
538
- async function cleanupAutomationMetadata(appId, automationId) {
539
- await deleteEntityMetadata(
540
- appId,
541
- MetadataTypes.AUTOMATION_TEST_INPUT,
542
- automationId
543
- )
518
+ async function cleanupAutomationMetadata(automationId) {
519
+ await deleteEntityMetadata(MetadataTypes.AUTOMATION_TEST_INPUT, automationId)
544
520
  await deleteEntityMetadata(
545
- appId,
546
521
  MetadataTypes.AUTOMATION_TEST_HISTORY,
547
522
  automationId
548
523
  )
@@ -573,7 +548,7 @@ function cleanAutomationInputs(automation) {
573
548
  }
574
549
  &nbsp;
575
550
  exports.create = async function (ctx) {
576
- const db = new CouchDB(ctx.appId)
551
+ const db = getAppDB()
577
552
  let automation = ctx.request.body
578
553
  automation.appId = ctx.appId
579
554
  &nbsp;
@@ -587,7 +562,6 @@ exports.create = async function (ctx) {
587
562
  automation.type = "automation"
588
563
  automation = cleanAutomationInputs(automation)
589
564
  automation = await checkForWebhooks({
590
- appId: ctx.appId,
591
565
  newAuto: automation,
592
566
  })
593
567
  const response = await db.put(automation)
@@ -604,13 +578,12 @@ exports.create = async function (ctx) {
604
578
  }
605
579
  &nbsp;
606
580
  exports.update = async function (ctx) {
607
- const db = new CouchDB(ctx.appId)
581
+ const db = getAppDB()
608
582
  let automation = ctx.request.body
609
583
  automation.appId = ctx.appId
610
584
  const oldAutomation = await db.get(automation._id)
611
585
  automation = cleanAutomationInputs(automation)
612
586
  automation = await checkForWebhooks({
613
- appId: ctx.appId,
614
587
  oldAuto: oldAutomation,
615
588
  newAuto: automation,
616
589
  })
@@ -646,7 +619,7 @@ exports.update = async function (ctx) {
646
619
  }
647
620
  &nbsp;
648
621
  exports.fetch = async function (ctx) {
649
- const db = new CouchDB(ctx.appId)
622
+ const db = getAppDB()
650
623
  const response = await db.allDocs(
651
624
  getAutomationParams(null, {
652
625
  include_docs: true,
@@ -656,20 +629,19 @@ exports.fetch = async function (ctx) {
656
629
  }
657
630
  &nbsp;
658
631
  exports.find = async function (ctx) {
659
- const db = new CouchDB(ctx.appId)
632
+ const db = getAppDB()
660
633
  ctx.body = await db.get(ctx.params.id)
661
634
  }
662
635
  &nbsp;
663
636
  exports.destroy = async function (ctx) {
664
- const db = new CouchDB(ctx.appId)
637
+ const db = getAppDB()
665
638
  const automationId = ctx.params.id
666
639
  const oldAutomation = await db.get(automationId)
667
640
  await checkForWebhooks({
668
- appId: ctx.appId,
669
641
  oldAuto: oldAutomation,
670
642
  })
671
643
  // delete metadata first
672
- await cleanupAutomationMetadata(ctx.appId, automationId)
644
+ await cleanupAutomationMetadata(automationId)
673
645
  ctx.body = await db.remove(automationId, ctx.params.rev)
674
646
  }
675
647
  &nbsp;
@@ -695,12 +667,11 @@ module.exports.getDefinitionList = async function (ctx) {
695
667
  *********************/
696
668
  &nbsp;
697
669
  exports.trigger = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
698
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
699
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
670
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
700
671
  let automation = <span class="cstat-no" title="statement not covered" >await db.get(ctx.params.id)</span>
701
672
  <span class="cstat-no" title="statement not covered" > await triggers.externalTrigger(automation, {</span>
702
673
  ...ctx.request.body,
703
- appId,
674
+ appId: ctx.appId,
704
675
  })
705
676
  <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
706
677
  message: `Automation ${automation._id} has been triggered.`,
@@ -720,8 +691,7 @@ function prepareTestInput(input) {
720
691
  }
721
692
  &nbsp;
722
693
  exports.test = async function (ctx) {
723
- const appId = ctx.appId
724
- const db = new CouchDB(appId)
694
+ const db = getAppDB()
725
695
  let automation = await db.get(ctx.params.id)
726
696
  await setTestFlag(automation._id)
727
697
  const testInput = prepareTestInput(ctx.request.body)
@@ -729,7 +699,7 @@ exports.test = async function (ctx) {
729
699
  automation,
730
700
  {
731
701
  ...testInput,
732
- appId,
702
+ appId: ctx.appId,
733
703
  },
734
704
  { getResponses: true }
735
705
  )
@@ -748,7 +718,7 @@ exports.test = async function (ctx) {
748
718
  <div class='footer quiet pad2 space-top1 center small'>
749
719
  Code coverage generated by
750
720
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
751
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
721
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
752
722
  </div>
753
723
  </div>
754
724
  <script src="../../prettify.js"></script>
@@ -91,7 +91,7 @@ exports.exportAppDump = async function (ctx) {
91
91
  <div class='footer quiet pad2 space-top1 center small'>
92
92
  Code coverage generated by
93
93
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
94
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
94
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
95
95
  </div>
96
96
  </div>
97
97
  <script src="../../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">19.64% </span>
26
+ <span class="strong">18.18% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>11/56</span>
28
+ <span class='fraction'>10/55</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">20% </span>
47
+ <span class="strong">18.51% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>11/55</span>
49
+ <span class='fraction'>10/54</span>
50
50
  </div>
51
51
 
52
52
 
@@ -170,9 +170,7 @@
170
170
  <a name='L111'></a><a href='#L111'>111</a>
171
171
  <a name='L112'></a><a href='#L112'>112</a>
172
172
  <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
175
- <span class="cline-any cline-yes">23x</span>
173
+ <a name='L114'></a><a href='#L114'>114</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
176
174
  <span class="cline-any cline-yes">23x</span>
177
175
  <span class="cline-any cline-neutral">&nbsp;</span>
178
176
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,7 +285,6 @@
287
285
  <span class="cline-any cline-neutral">&nbsp;</span>
288
286
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const env = require("../../environment")
289
287
  const { getAllApps } = require("@budibase/backend-core/db")
290
- const CouchDB = require("../../db")
291
288
  const {
292
289
  exportDB,
293
290
  sendTempFile,
@@ -317,7 +314,7 @@ exports.exportApps = <span class="fstat-no" title="function not covered" >as</sp
317
314
  <span class="cstat-no" title="statement not covered" > if (env.SELF_HOSTED || !env.MULTI_TENANCY) {</span>
318
315
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Exporting only allowed in multi-tenant cloud environments.")</span>
319
316
  }
320
- const apps = <span class="cstat-no" title="statement not covered" >await getAllApps(CouchDB, { all: true })</span>
317
+ const apps = <span class="cstat-no" title="statement not covered" >await getAllApps({ all: true })</span>
321
318
  const globalDBString = <span class="cstat-no" title="statement not covered" >await exportDB(getGlobalDBName(), {</span>
322
319
  filter: <span class="fstat-no" title="function not covered" >do</span>c =&gt; <span class="cstat-no" title="statement not covered" >!doc._id.startsWith(DocumentTypes.USER),</span>
323
320
  })
@@ -350,7 +347,7 @@ async function <span class="fstat-no" title="function not covered" >hasBeenImpor
350
347
  <span class="cstat-no" title="statement not covered" > if (!env.SELF_HOSTED || env.MULTI_TENANCY) {</span>
351
348
  <span class="cstat-no" title="statement not covered" > return true</span>
352
349
  }
353
- const apps = <span class="cstat-no" title="statement not covered" >await getAllApps(CouchDB, { all: true })</span>
350
+ const apps = <span class="cstat-no" title="statement not covered" >await getAllApps({ all: true })</span>
354
351
  <span class="cstat-no" title="statement not covered" > return apps.length !== 0</span>
355
352
  }
356
353
  &nbsp;
@@ -406,7 +403,7 @@ exports.importApps = <span class="fstat-no" title="function not covered" >as</sp
406
403
  <div class='footer quiet pad2 space-top1 center small'>
407
404
  Code coverage generated by
408
405
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
409
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
406
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
410
407
  </div>
411
408
  </div>
412
409
  <script src="../../prettify.js"></script>
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>18/18</span>
28
+ <span class='fraction'>17/17</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">75% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/4</span>
35
+ <span class='fraction'>2/2</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>18/18</span>
49
+ <span class='fraction'>17/17</span>
50
50
  </div>
51
51
 
52
52
 
@@ -91,15 +91,13 @@
91
91
  <a name='L32'></a><a href='#L32'>32</a>
92
92
  <a name='L33'></a><a href='#L33'>33</a>
93
93
  <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
94
+ <a name='L35'></a><a href='#L35'>35</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
96
95
  <span class="cline-any cline-yes">23x</span>
97
96
  <span class="cline-any cline-yes">23x</span>
98
97
  <span class="cline-any cline-neutral">&nbsp;</span>
99
98
  <span class="cline-any cline-yes">23x</span>
100
99
  <span class="cline-any cline-yes">1x</span>
101
100
  <span class="cline-any cline-yes">1x</span>
102
- <span class="cline-any cline-yes">1x</span>
103
101
  <span class="cline-any cline-neutral">&nbsp;</span>
104
102
  <span class="cline-any cline-yes">1x</span>
105
103
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -114,11 +112,11 @@
114
112
  <span class="cline-any cline-yes">1x</span>
115
113
  <span class="cline-any cline-yes">1x</span>
116
114
  <span class="cline-any cline-yes">1x</span>
117
- <span class="cline-any cline-yes">49x</span>
115
+ <span class="cline-any cline-yes">51x</span>
118
116
  <span class="cline-any cline-yes">1x</span>
119
117
  <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-yes">48x</span>
121
- <span class="cline-any cline-yes">48x</span>
118
+ <span class="cline-any cline-yes">50x</span>
119
+ <span class="cline-any cline-yes">50x</span>
122
120
  <span class="cline-any cline-neutral">&nbsp;</span>
123
121
  <span class="cline-any cline-neutral">&nbsp;</span>
124
122
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -127,18 +125,17 @@
127
125
  <span class="cline-any cline-neutral">&nbsp;</span>
128
126
  <span class="cline-any cline-yes">1x</span>
129
127
  <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
131
- const { DocumentTypes } = require("../../db/utils")
128
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { DocumentTypes } = require("../../db/utils")
132
129
  const { getComponentLibraryManifest } = require("../../utilities/fileSystem")
130
+ const { getAppDB } = require("@budibase/backend-core/context")
133
131
  &nbsp;
134
132
  exports.fetchAppComponentDefinitions = async function (ctx) {
135
- const appId = ctx.params.appId || <span class="branch-1 cbranch-no" title="branch not covered" >ctx.appId</span>
136
- const db = new CouchDB(appId)
133
+ const db = getAppDB()
137
134
  const app = await db.get(DocumentTypes.APP_METADATA)
138
135
  &nbsp;
139
136
  let componentManifests = await Promise.all(
140
137
  app.componentLibraries.map(async library =&gt; {
141
- let manifest = await getComponentLibraryManifest(appId, library)
138
+ let manifest = await getComponentLibraryManifest(library)
142
139
  &nbsp;
143
140
  return {
144
141
  manifest,
@@ -169,7 +166,7 @@ exports.fetchAppComponentDefinitions = async function (ctx) {
169
166
  <div class='footer quiet pad2 space-top1 center small'>
170
167
  Code coverage generated by
171
168
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
172
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
169
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
173
170
  </div>
174
171
  </div>
175
172
  <script src="../../prettify.js"></script>