@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
@@ -232,27 +232,27 @@
232
232
  <a name='L173'></a><a href='#L173'>173</a>
233
233
  <a name='L174'></a><a href='#L174'>174</a>
234
234
  <a name='L175'></a><a href='#L175'>175</a>
235
- <a name='L176'></a><a href='#L176'>176</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
235
+ <a name='L176'></a><a href='#L176'>176</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">38x</span>
236
236
  <span class="cline-any cline-neutral">&nbsp;</span>
237
237
  <span class="cline-any cline-neutral">&nbsp;</span>
238
238
  <span class="cline-any cline-neutral">&nbsp;</span>
239
239
  <span class="cline-any cline-neutral">&nbsp;</span>
240
240
  <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-yes">33x</span>
242
- <span class="cline-any cline-yes">33x</span>
243
- <span class="cline-any cline-yes">33x</span>
241
+ <span class="cline-any cline-yes">38x</span>
242
+ <span class="cline-any cline-yes">38x</span>
244
243
  <span class="cline-any cline-neutral">&nbsp;</span>
245
244
  <span class="cline-any cline-neutral">&nbsp;</span>
246
245
  <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-yes">33x</span>
248
- <span class="cline-any cline-yes">33x</span>
246
+ <span class="cline-any cline-yes">38x</span>
247
+ <span class="cline-any cline-yes">38x</span>
248
+ <span class="cline-any cline-yes">38x</span>
249
249
  <span class="cline-any cline-neutral">&nbsp;</span>
250
- <span class="cline-any cline-yes">33x</span>
250
+ <span class="cline-any cline-yes">38x</span>
251
251
  <span class="cline-any cline-neutral">&nbsp;</span>
252
252
  <span class="cline-any cline-neutral">&nbsp;</span>
253
253
  <span class="cline-any cline-neutral">&nbsp;</span>
254
254
  <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-yes">33x</span>
255
+ <span class="cline-any cline-yes">38x</span>
256
256
  <span class="cline-any cline-neutral">&nbsp;</span>
257
257
  <span class="cline-any cline-neutral">&nbsp;</span>
258
258
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -330,16 +330,16 @@
330
330
  <span class="cline-any cline-neutral">&nbsp;</span>
331
331
  <span class="cline-any cline-neutral">&nbsp;</span>
332
332
  <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-yes">33x</span>
333
+ <span class="cline-any cline-yes">38x</span>
334
334
  <span class="cline-any cline-yes">1x</span>
335
335
  <span class="cline-any cline-neutral">&nbsp;</span>
336
336
  <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-yes">33x</span>
337
+ <span class="cline-any cline-yes">38x</span>
338
338
  <span class="cline-any cline-neutral">&nbsp;</span>
339
339
  <span class="cline-any cline-yes">1x</span>
340
340
  <span class="cline-any cline-neutral">&nbsp;</span>
341
341
  <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-yes">33x</span>
342
+ <span class="cline-any cline-yes">38x</span>
343
343
  <span class="cline-any cline-yes">1x</span>
344
344
  <span class="cline-any cline-yes">1x</span>
345
345
  <span class="cline-any cline-yes">1x</span>
@@ -365,7 +365,7 @@
365
365
  <span class="cline-any cline-yes">1x</span>
366
366
  <span class="cline-any cline-neutral">&nbsp;</span>
367
367
  <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-yes">33x</span>
368
+ <span class="cline-any cline-yes">38x</span>
369
369
  <span class="cline-any cline-yes">3x</span>
370
370
  <span class="cline-any cline-yes">3x</span>
371
371
  <span class="cline-any cline-yes">3x</span>
@@ -392,7 +392,7 @@
392
392
  <span class="cline-any cline-yes">3x</span>
393
393
  <span class="cline-any cline-neutral">&nbsp;</span>
394
394
  <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">33x</span>
395
+ <span class="cline-any cline-yes">38x</span>
396
396
  <span class="cline-any cline-yes">10x</span>
397
397
  <span class="cline-any cline-neutral">&nbsp;</span>
398
398
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -400,7 +400,7 @@
400
400
  <span class="cline-any cline-neutral">&nbsp;</span>
401
401
  <span class="cline-any cline-neutral">&nbsp;</span>
402
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-yes">33x</span>
403
+ <span class="cline-any cline-yes">38x</span>
404
404
  <span class="cline-any cline-yes">1x</span>
405
405
  <span class="cline-any cline-neutral">&nbsp;</span>
406
406
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -415,12 +415,12 @@ const {
415
415
  getBuiltinRoles,
416
416
  } = require("@budibase/backend-core/roles")
417
417
  const { getRoleParams } = require("../../db/utils")
418
- const CouchDB = require("../../db")
419
418
  const {
420
419
  CURRENTLY_SUPPORTED_LEVELS,
421
420
  getBasePermissions,
422
421
  } = require("../../utilities/security")
423
422
  const { removeFromArray } = require("../../utilities")
423
+ const { getAppDB } = require("@budibase/backend-core/context")
424
424
  &nbsp;
425
425
  const PermissionUpdateType = {
426
426
  REMOVE: "remove",
@@ -444,7 +444,7 @@ async function updatePermissionOnRole(
444
444
  { roleId, resourceId, level },
445
445
  updateType
446
446
  ) {
447
- const db = new CouchDB(appId)
447
+ const db = getAppDB()
448
448
  const remove = updateType === PermissionUpdateType.REMOVE
449
449
  const isABuiltin = isBuiltin(roleId)
450
450
  const dbRoleId = getDBRoleID(roleId)
@@ -515,7 +515,7 @@ exports.fetchLevels = function (ctx) {
515
515
  }
516
516
  &nbsp;
517
517
  exports.fetch = async function (ctx) {
518
- const db = new CouchDB(ctx.appId)
518
+ const db = getAppDB()
519
519
  const roles = await getAllDBRoles(db)
520
520
  let permissions = {}
521
521
  // create an object with structure role ID -&gt; resource ID -&gt; level
@@ -542,7 +542,7 @@ exports.fetch = async function (ctx) {
542
542
  &nbsp;
543
543
  exports.getResourcePerms = async function (ctx) {
544
544
  const resourceId = ctx.params.resourceId
545
- const db = new CouchDB(ctx.appId)
545
+ const db = getAppDB()
546
546
  const body = await db.allDocs(
547
547
  getRoleParams(null, {
548
548
  include_docs: true,
@@ -589,7 +589,7 @@ exports.removePermission = async function (ctx) {
589
589
  <div class='footer quiet pad2 space-top1 center small'>
590
590
  Code coverage generated by
591
591
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
592
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
592
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
593
593
  </div>
594
594
  </div>
595
595
  <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">81.55% </span>
26
+ <span class="strong">81.73% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>84/103</span>
28
+ <span class='fraction'>85/104</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">81.37% </span>
47
+ <span class="strong">81.55% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>83/102</span>
49
+ <span class='fraction'>84/103</span>
50
50
  </div>
51
51
 
52
52
 
@@ -74,17 +74,17 @@
74
74
  </thead>
75
75
  <tbody><tr>
76
76
  <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
77
- <td data-value="80" class="pic high">
77
+ <td data-value="80.2" class="pic high">
78
78
  <div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
79
79
  </td>
80
- <td data-value="80" class="pct high">80%</td>
81
- <td data-value="95" class="abs high">76/95</td>
80
+ <td data-value="80.2" class="pct high">80.2%</td>
81
+ <td data-value="96" class="abs high">77/96</td>
82
82
  <td data-value="65.51" class="pct medium">65.51%</td>
83
83
  <td data-value="29" class="abs medium">19/29</td>
84
84
  <td data-value="85.71" class="pct high">85.71%</td>
85
85
  <td data-value="14" class="abs high">12/14</td>
86
- <td data-value="79.78" class="pct medium">79.78%</td>
87
- <td data-value="94" class="abs medium">75/94</td>
86
+ <td data-value="80" class="pct high">80%</td>
87
+ <td data-value="95" class="abs high">76/95</td>
88
88
  </tr>
89
89
 
90
90
  <tr>
@@ -110,7 +110,7 @@
110
110
  <div class='footer quiet pad2 space-top1 center small'>
111
111
  Code coverage generated by
112
112
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
113
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
113
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
114
114
  </div>
115
115
  </div>
116
116
  <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">80% </span>
26
+ <span class="strong">80.2% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>76/95</span>
28
+ <span class='fraction'>77/96</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">79.78% </span>
47
+ <span class="strong">80% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>75/94</span>
49
+ <span class='fraction'>76/95</span>
50
50
  </div>
51
51
 
52
52
 
@@ -267,20 +267,21 @@
267
267
  <a name='L208'></a><a href='#L208'>208</a>
268
268
  <a name='L209'></a><a href='#L209'>209</a>
269
269
  <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
271
- <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
272
272
  <span class="cline-any cline-neutral">&nbsp;</span>
273
273
  <span class="cline-any cline-neutral">&nbsp;</span>
274
274
  <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-yes">34x</span>
276
- <span class="cline-any cline-yes">34x</span>
277
- <span class="cline-any cline-yes">34x</span>
278
- <span class="cline-any cline-yes">34x</span>
279
- <span class="cline-any cline-yes">34x</span>
280
- <span class="cline-any cline-yes">34x</span>
281
- <span class="cline-any cline-yes">34x</span>
275
+ <span class="cline-any cline-yes">39x</span>
276
+ <span class="cline-any cline-yes">39x</span>
277
+ <span class="cline-any cline-yes">39x</span>
278
+ <span class="cline-any cline-yes">39x</span>
279
+ <span class="cline-any cline-yes">39x</span>
280
+ <span class="cline-any cline-yes">39x</span>
281
+ <span class="cline-any cline-yes">39x</span>
282
+ <span class="cline-any cline-yes">39x</span>
282
283
  <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-yes">34x</span>
284
+ <span class="cline-any cline-yes">39x</span>
284
285
  <span class="cline-any cline-neutral">&nbsp;</span>
285
286
  <span class="cline-any cline-neutral">&nbsp;</span>
286
287
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -296,7 +297,7 @@
296
297
  <span class="cline-any cline-yes">5x</span>
297
298
  <span class="cline-any cline-neutral">&nbsp;</span>
298
299
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">34x</span>
300
+ <span class="cline-any cline-yes">39x</span>
300
301
  <span class="cline-any cline-yes">2x</span>
301
302
  <span class="cline-any cline-neutral">&nbsp;</span>
302
303
  <span class="cline-any cline-yes">2x</span>
@@ -308,7 +309,7 @@
308
309
  <span class="cline-any cline-yes">2x</span>
309
310
  <span class="cline-any cline-neutral">&nbsp;</span>
310
311
  <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-yes">34x</span>
312
+ <span class="cline-any cline-yes">39x</span>
312
313
  <span class="cline-any cline-no">&nbsp;</span>
313
314
  <span class="cline-any cline-no">&nbsp;</span>
314
315
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -347,7 +348,7 @@
347
348
  <span class="cline-any cline-no">&nbsp;</span>
348
349
  <span class="cline-any cline-neutral">&nbsp;</span>
349
350
  <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-yes">34x</span>
351
+ <span class="cline-any cline-yes">39x</span>
351
352
  <span class="cline-any cline-yes">28x</span>
352
353
  <span class="cline-any cline-yes">28x</span>
353
354
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -362,7 +363,7 @@
362
363
  <span class="cline-any cline-yes">28x</span>
363
364
  <span class="cline-any cline-neutral">&nbsp;</span>
364
365
  <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">34x</span>
366
+ <span class="cline-any cline-yes">39x</span>
366
367
  <span class="cline-any cline-yes">3x</span>
367
368
  <span class="cline-any cline-yes">3x</span>
368
369
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -373,7 +374,7 @@
373
374
  <span class="cline-any cline-yes">3x</span>
374
375
  <span class="cline-any cline-neutral">&nbsp;</span>
375
376
  <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-yes">34x</span>
377
+ <span class="cline-any cline-yes">39x</span>
377
378
  <span class="cline-any cline-yes">8x</span>
378
379
  <span class="cline-any cline-neutral">&nbsp;</span>
379
380
  <span class="cline-any cline-yes">8x</span>
@@ -442,15 +443,16 @@
442
443
  <span class="cline-any cline-neutral">&nbsp;</span>
443
444
  <span class="cline-any cline-neutral">&nbsp;</span>
444
445
  <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-yes">34x</span>
446
+ <span class="cline-any cline-yes">39x</span>
446
447
  <span class="cline-any cline-yes">2x</span>
447
448
  <span class="cline-any cline-neutral">&nbsp;</span>
448
449
  <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-yes">34x</span>
450
+ <span class="cline-any cline-yes">39x</span>
450
451
  <span class="cline-any cline-no">&nbsp;</span>
451
452
  <span class="cline-any cline-neutral">&nbsp;</span>
452
453
  <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-yes">34x</span>
454
+ <span class="cline-any cline-yes">39x</span>
455
+ <span class="cline-any cline-yes">2x</span>
454
456
  <span class="cline-any cline-yes">2x</span>
455
457
  <span class="cline-any cline-yes">2x</span>
456
458
  <span class="cline-any cline-yes">2x</span>
@@ -470,15 +472,14 @@
470
472
  <span class="cline-any cline-neutral">&nbsp;</span>
471
473
  <span class="cline-any cline-neutral">&nbsp;</span>
472
474
  <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-yes">34x</span>
475
+ <span class="cline-any cline-yes">39x</span>
474
476
  <span class="cline-any cline-yes">2x</span>
475
477
  <span class="cline-any cline-yes">2x</span>
476
478
  <span class="cline-any cline-yes">2x</span>
477
479
  <span class="cline-any cline-yes">2x</span>
478
480
  <span class="cline-any cline-yes">2x</span>
479
481
  <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
481
- const {
482
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
482
483
  generateQueryID,
483
484
  getQueryParams,
484
485
  isProdAppID,
@@ -489,6 +490,7 @@ const { save: saveDatasource } = require("../datasource")
489
490
  const { RestImporter } = require("./import")
490
491
  const { invalidateDynamicVariables } = require("../../../threads/utils")
491
492
  const environment = require("../../../environment")
493
+ const { getAppDB } = require("@budibase/backend-core/context")
492
494
  &nbsp;
493
495
  const Runner = new Thread(ThreadType.QUERY, {
494
496
  timeoutMs: environment.QUERY_THREAD_TIMEOUT || 10000,
@@ -507,7 +509,7 @@ function enrichQueries(input) {
507
509
  }
508
510
  &nbsp;
509
511
  exports.fetch = async function (ctx) {
510
- const db = new CouchDB(ctx.appId)
512
+ const db = getAppDB()
511
513
  &nbsp;
512
514
  const body = await db.allDocs(
513
515
  getQueryParams(null, {
@@ -548,7 +550,7 @@ exports.import = <span class="fstat-no" title="function not covered" >as</span>y
548
550
  <span class="cstat-no" title="statement not covered" > datasourceId = body.datasourceId</span>
549
551
  }
550
552
  &nbsp;
551
- const importResult = <span class="cstat-no" title="statement not covered" >await importer.importQueries(ctx.appId, datasourceId)</span>
553
+ const importResult = <span class="cstat-no" title="statement not covered" >await importer.importQueries(datasourceId)</span>
552
554
  &nbsp;
553
555
  <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
554
556
  ...importResult,
@@ -558,7 +560,7 @@ exports.import = <span class="fstat-no" title="function not covered" >as</span>y
558
560
  }
559
561
  &nbsp;
560
562
  exports.save = async function (ctx) {
561
- const db = new CouchDB(ctx.appId)
563
+ const db = getAppDB()
562
564
  const query = ctx.request.body
563
565
  &nbsp;
564
566
  if (!query._id) {
@@ -573,7 +575,7 @@ exports.save = async function (ctx) {
573
575
  }
574
576
  &nbsp;
575
577
  exports.find = async function (ctx) {
576
- const db = new CouchDB(ctx.appId)
578
+ const db = getAppDB()
577
579
  const query = enrichQueries(await db.get(ctx.params.queryId))
578
580
  // remove properties that could be dangerous in real app
579
581
  if (isProdAppID(ctx.appId)) {
@@ -584,7 +586,7 @@ exports.find = async function (ctx) {
584
586
  }
585
587
  &nbsp;
586
588
  exports.preview = async function (ctx) {
587
- const db = new CouchDB(ctx.appId)
589
+ const db = getAppDB()
588
590
  &nbsp;
589
591
  const datasource = await db.get(ctx.request.body.datasourceId)
590
592
  // preview may not have a queryId as it hasn't been saved, but if it does
@@ -615,7 +617,7 @@ exports.preview = async function (ctx) {
615
617
  }
616
618
  &nbsp;
617
619
  async function execute(ctx, opts = <span class="branch-0 cbranch-no" title="branch not covered" >{ rowsOnly: false })</span> {
618
- const db = new CouchDB(ctx.appId)
620
+ const db = getAppDB()
619
621
  &nbsp;
620
622
  const query = await db.get(ctx.params.queryId)
621
623
  const datasource = await db.get(query.datasourceId)
@@ -660,7 +662,8 @@ exports.executeV2 = <span class="fstat-no" title="function not covered" >as</spa
660
662
  <span class="cstat-no" title="statement not covered" > return execute(ctx, { rowsOnly: false })</span>
661
663
  }
662
664
  &nbsp;
663
- const removeDynamicVariables = async (db, queryId) =&gt; {
665
+ const removeDynamicVariables = async queryId =&gt; {
666
+ const db = getAppDB()
664
667
  const query = await db.get(queryId)
665
668
  const datasource = await db.get(query.datasourceId)
666
669
  const dynamicVariables = datasource.config.dynamicVariables
@@ -681,8 +684,8 @@ const removeDynamicVariables = async (db, queryId) =&gt; {
681
684
  }
682
685
  &nbsp;
683
686
  exports.destroy = async function (ctx) {
684
- const db = new CouchDB(ctx.appId)
685
- await removeDynamicVariables(db, ctx.params.queryId)
687
+ const db = getAppDB()
688
+ await removeDynamicVariables(ctx.params.queryId)
686
689
  await db.remove(ctx.params.queryId, ctx.params.revId)
687
690
  ctx.message = `Query deleted.`
688
691
  ctx.status = 200
@@ -694,7 +697,7 @@ exports.destroy = async function (ctx) {
694
697
  <div class='footer quiet pad2 space-top1 center small'>
695
698
  Code coverage generated by
696
699
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
697
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
700
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
698
701
  </div>
699
702
  </div>
700
703
  <script src="../../../prettify.js"></script>
@@ -99,10 +99,10 @@
99
99
  <a name='L40'></a><a href='#L40'>40</a>
100
100
  <a name='L41'></a><a href='#L41'>41</a>
101
101
  <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">35x</span>
103
- <span class="cline-any cline-yes">35x</span>
102
+ <a name='L43'></a><a href='#L43'>43</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">40x</span>
103
+ <span class="cline-any cline-yes">40x</span>
104
104
  <span class="cline-any cline-neutral">&nbsp;</span>
105
- <span class="cline-any cline-yes">35x</span>
105
+ <span class="cline-any cline-yes">40x</span>
106
106
  <span class="cline-any cline-yes">28x</span>
107
107
  <span class="cline-any cline-neutral">&nbsp;</span>
108
108
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -124,12 +124,12 @@
124
124
  <span class="cline-any cline-neutral">&nbsp;</span>
125
125
  <span class="cline-any cline-neutral">&nbsp;</span>
126
126
  <span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-yes">35x</span>
127
+ <span class="cline-any cline-yes">40x</span>
128
128
  <span class="cline-any cline-neutral">&nbsp;</span>
129
129
  <span class="cline-any cline-yes">23x</span>
130
130
  <span class="cline-any cline-neutral">&nbsp;</span>
131
131
  <span class="cline-any cline-neutral">&nbsp;</span>
132
- <span class="cline-any cline-yes">35x</span>
132
+ <span class="cline-any cline-yes">40x</span>
133
133
  <span class="cline-any cline-neutral">&nbsp;</span>
134
134
  <span class="cline-any cline-yes">23x</span>
135
135
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -190,7 +190,7 @@ exports.generateQueryPreviewValidation = () =&gt; {
190
190
  <div class='footer quiet pad2 space-top1 center small'>
191
191
  Code coverage generated by
192
192
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
193
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
193
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
194
194
  </div>
195
195
  </div>
196
196
  <script src="../../../prettify.js"></script>
@@ -155,20 +155,20 @@
155
155
  <a name='L96'></a><a href='#L96'>96</a>
156
156
  <a name='L97'></a><a href='#L97'>97</a>
157
157
  <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
158
+ <a name='L99'></a><a href='#L99'>99</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
159
159
  <span class="cline-any cline-neutral">&nbsp;</span>
160
160
  <span class="cline-any cline-neutral">&nbsp;</span>
161
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
162
  <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-yes">38x</span>
163
164
  <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-yes">33x</span>
165
165
  <span class="cline-any cline-neutral">&nbsp;</span>
166
166
  <span class="cline-any cline-neutral">&nbsp;</span>
167
167
  <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-yes">38x</span>
169
+ <span class="cline-any cline-yes">38x</span>
168
170
  <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-yes">33x</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-yes">33x</span>
171
+ <span class="cline-any cline-yes">38x</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
173
  <span class="cline-any cline-neutral">&nbsp;</span>
174
174
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -196,15 +196,15 @@
196
196
  <span class="cline-any cline-neutral">&nbsp;</span>
197
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-yes">33x</span>
199
+ <span class="cline-any cline-yes">38x</span>
200
200
  <span class="cline-any cline-yes">2x</span>
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
202
  <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-yes">33x</span>
203
+ <span class="cline-any cline-yes">38x</span>
204
204
  <span class="cline-any cline-yes">1x</span>
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
206
  <span class="cline-any cline-neutral">&nbsp;</span>
207
- <span class="cline-any cline-yes">33x</span>
207
+ <span class="cline-any cline-yes">38x</span>
208
208
  <span class="cline-any cline-yes">3x</span>
209
209
  <span class="cline-any cline-yes">3x</span>
210
210
  <span class="cline-any cline-yes">3x</span>
@@ -225,7 +225,7 @@
225
225
  <span class="cline-any cline-yes">3x</span>
226
226
  <span class="cline-any cline-neutral">&nbsp;</span>
227
227
  <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-yes">33x</span>
228
+ <span class="cline-any cline-yes">38x</span>
229
229
  <span class="cline-any cline-yes">1x</span>
230
230
  <span class="cline-any cline-yes">1x</span>
231
231
  <span class="cline-any cline-yes">1x</span>
@@ -253,8 +253,7 @@
253
253
  <span class="cline-any cline-yes">1x</span>
254
254
  <span class="cline-any cline-yes">1x</span>
255
255
  <span class="cline-any cline-neutral">&nbsp;</span>
256
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
257
- const {
256
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
258
257
  Role,
259
258
  getRole,
260
259
  isBuiltin,
@@ -265,6 +264,7 @@ const {
265
264
  getUserMetadataParams,
266
265
  InternalTables,
267
266
  } = require("../../db/utils")
267
+ const { getAppDB } = require("@budibase/backend-core/context")
268
268
  &nbsp;
269
269
  const UpdateRolesOptions = {
270
270
  CREATED: "created",
@@ -295,15 +295,15 @@ async function updateRolesOnUserTable(db, roleId, updateOption) {
295
295
  }
296
296
  &nbsp;
297
297
  exports.fetch = async function (ctx) {
298
- ctx.body = await getAllRoles(ctx.appId)
298
+ ctx.body = await getAllRoles()
299
299
  }
300
300
  &nbsp;
301
301
  exports.find = async function (ctx) {
302
- ctx.body = await getRole(ctx.appId, ctx.params.roleId)
302
+ ctx.body = await getRole(ctx.params.roleId)
303
303
  }
304
304
  &nbsp;
305
305
  exports.save = async function (ctx) {
306
- const db = new CouchDB(ctx.appId)
306
+ const db = getAppDB()
307
307
  let { _id, name, inherits, permissionId } = ctx.request.body
308
308
  if (!_id) {
309
309
  _id = generateRoleID()
@@ -324,7 +324,7 @@ exports.save = async function (ctx) {
324
324
  }
325
325
  &nbsp;
326
326
  exports.destroy = async function (ctx) {
327
- const db = new CouchDB(ctx.appId)
327
+ const db = getAppDB()
328
328
  const roleId = ctx.params.roleId
329
329
  <span class="missing-if-branch" title="if path not taken" >I</span>if (isBuiltin(roleId)) {
330
330
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Cannot delete builtin role.")</span>
@@ -358,7 +358,7 @@ exports.destroy = async function (ctx) {
358
358
  <div class='footer quiet pad2 space-top1 center small'>
359
359
  Code coverage generated by
360
360
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
361
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
361
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
362
362
  </div>
363
363
  </div>
364
364
  <script src="../../prettify.js"></script>
@@ -149,8 +149,7 @@
149
149
  <a name='L90'></a><a href='#L90'>90</a>
150
150
  <a name='L91'></a><a href='#L91'>91</a>
151
151
  <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
152
+ <a name='L93'></a><a href='#L93'>93</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
154
153
  <span class="cline-any cline-neutral">&nbsp;</span>
155
154
  <span class="cline-any cline-neutral">&nbsp;</span>
156
155
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -195,7 +194,6 @@
195
194
  <span class="cline-any cline-neutral">&nbsp;</span>
196
195
  <span class="cline-any cline-neutral">&nbsp;</span>
197
196
  <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-neutral">&nbsp;</span>
199
197
  <span class="cline-any cline-yes">3x</span>
200
198
  <span class="cline-any cline-yes">3x</span>
201
199
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -284,12 +282,11 @@ Routing.prototype.addScreenId = function (fullpath, roleId, screenId) {
284
282
  &nbsp;
285
283
  /**
286
284
  * Gets the full routing structure by querying the routing view and processing the result into the tree.
287
- * @param {string} appId The application to produce the routing structure for.
288
285
  * @returns {Promise&lt;object&gt;} The routing structure, this is the full structure designed for use in the builder,
289
286
  * if the client routing is required then the updateRoutingStructureForUserRole should be used.
290
287
  */
291
- async function getRoutingStructure(appId) {
292
- const screenRoutes = await getRoutingInfo(appId)
288
+ async function getRoutingStructure() {
289
+ const screenRoutes = await getRoutingInfo()
293
290
  const routing = new Routing()
294
291
  &nbsp;
295
292
  for (let screenRoute of screenRoutes) {
@@ -302,13 +299,13 @@ async function getRoutingStructure(appId) {
302
299
  }
303
300
  &nbsp;
304
301
  exports.fetch = async ctx =&gt; {
305
- ctx.body = await getRoutingStructure(ctx.appId)
302
+ ctx.body = await getRoutingStructure()
306
303
  }
307
304
  &nbsp;
308
305
  exports.clientFetch = async ctx =&gt; {
309
- const routing = await getRoutingStructure(ctx.appId)
306
+ const routing = await getRoutingStructure()
310
307
  let roleId = ctx.user.role._id
311
- const roleIds = await getUserRoleHierarchy(ctx.appId, roleId)
308
+ const roleIds = await getUserRoleHierarchy(roleId)
312
309
  for (let topLevel of Object.values(routing.routes)) {
313
310
  for (let subpathKey of Object.keys(topLevel.subpaths)) {
314
311
  let found = false
@@ -343,7 +340,7 @@ exports.clientFetch = async ctx =&gt; {
343
340
  <div class='footer quiet pad2 space-top1 center small'>
344
341
  Code coverage generated by
345
342
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
346
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
343
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
347
344
  </div>
348
345
  </div>
349
346
  <script src="../../prettify.js"></script>