@budibase/server 1.0.49 → 1.0.50-alpha.0

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.c0cc369d.css +6 -0
  8. package/builder/assets/{index.2c37968e.js → index.ff2bad21.js} +252 -249
  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 +2 -1
  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,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">59.67% </span>
26
+ <span class="strong">59.68% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>74/124</span>
28
+ <span class='fraction'>77/129</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">33.33% </span>
33
+ <span class="strong">37.73% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>15/45</span>
35
+ <span class='fraction'>20/53</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">59.34% </span>
47
+ <span class="strong">59.37% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>73/123</span>
49
+ <span class='fraction'>76/128</span>
50
50
  </div>
51
51
 
52
52
 
@@ -306,23 +306,31 @@
306
306
  <a name='L247'></a><a href='#L247'>247</a>
307
307
  <a name='L248'></a><a href='#L248'>248</a>
308
308
  <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
309
+ <a name='L250'></a><a href='#L250'>250</a>
310
+ <a name='L251'></a><a href='#L251'>251</a>
311
+ <a name='L252'></a><a href='#L252'>252</a>
312
+ <a name='L253'></a><a href='#L253'>253</a>
313
+ <a name='L254'></a><a href='#L254'>254</a>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
310
320
  <span class="cline-any cline-neutral">&nbsp;</span>
311
321
  <span class="cline-any cline-neutral">&nbsp;</span>
312
322
  <span class="cline-any cline-neutral">&nbsp;</span>
313
323
  <span class="cline-any cline-neutral">&nbsp;</span>
314
324
  <span class="cline-any cline-neutral">&nbsp;</span>
315
325
  <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-yes">39x</span>
327
+ <span class="cline-any cline-yes">39x</span>
328
+ <span class="cline-any cline-yes">39x</span>
329
+ <span class="cline-any cline-yes">39x</span>
330
+ <span class="cline-any cline-yes">39x</span>
331
+ <span class="cline-any cline-yes">39x</span>
316
332
  <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-yes">34x</span>
318
- <span class="cline-any cline-yes">34x</span>
319
- <span class="cline-any cline-yes">34x</span>
320
- <span class="cline-any cline-yes">34x</span>
321
- <span class="cline-any cline-yes">34x</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-yes">34x</span>
324
- <span class="cline-any cline-yes">2x</span>
325
- <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-yes">39x</span>
326
334
  <span class="cline-any cline-neutral">&nbsp;</span>
327
335
  <span class="cline-any cline-yes">2x</span>
328
336
  <span class="cline-any cline-yes">2x</span>
@@ -347,9 +355,16 @@
347
355
  <span class="cline-any cline-yes">1x</span>
348
356
  <span class="cline-any cline-neutral">&nbsp;</span>
349
357
  <span class="cline-any cline-yes">2x</span>
358
+ <span class="cline-any cline-yes">1x</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-yes">2x</span>
350
365
  <span class="cline-any cline-neutral">&nbsp;</span>
351
366
  <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-yes">34x</span>
367
+ <span class="cline-any cline-yes">39x</span>
353
368
  <span class="cline-any cline-no">&nbsp;</span>
354
369
  <span class="cline-any cline-no">&nbsp;</span>
355
370
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -369,7 +384,7 @@
369
384
  <span class="cline-any cline-neutral">&nbsp;</span>
370
385
  <span class="cline-any cline-neutral">&nbsp;</span>
371
386
  <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-yes">34x</span>
387
+ <span class="cline-any cline-yes">39x</span>
373
388
  <span class="cline-any cline-yes">6x</span>
374
389
  <span class="cline-any cline-yes">6x</span>
375
390
  <span class="cline-any cline-yes">6x</span>
@@ -398,12 +413,17 @@
398
413
  <span class="cline-any cline-yes">1x</span>
399
414
  <span class="cline-any cline-neutral">&nbsp;</span>
400
415
  <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-yes">34x</span>
416
+ <span class="cline-any cline-yes">39x</span>
402
417
  <span class="cline-any cline-yes">6x</span>
403
418
  <span class="cline-any cline-yes">6x</span>
404
419
  <span class="cline-any cline-yes">6x</span>
405
420
  <span class="cline-any cline-yes">6x</span>
406
421
  <span class="cline-any cline-yes">6x</span>
422
+ <span class="cline-any cline-yes">6x</span>
423
+ <span class="cline-any cline-yes">6x</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
427
  <span class="cline-any cline-neutral">&nbsp;</span>
408
428
  <span class="cline-any cline-yes">6x</span>
409
429
  <span class="cline-any cline-yes">6x</span>
@@ -421,43 +441,43 @@
421
441
  <span class="cline-any cline-yes">6x</span>
422
442
  <span class="cline-any cline-neutral">&nbsp;</span>
423
443
  <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-yes">34x</span>
425
- <span class="cline-any cline-yes">35x</span>
426
- <span class="cline-any cline-yes">35x</span>
427
- <span class="cline-any cline-yes">35x</span>
444
+ <span class="cline-any cline-yes">39x</span>
445
+ <span class="cline-any cline-yes">39x</span>
446
+ <span class="cline-any cline-yes">39x</span>
447
+ <span class="cline-any cline-yes">39x</span>
428
448
  <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-yes">35x</span>
449
+ <span class="cline-any cline-yes">39x</span>
430
450
  <span class="cline-any cline-neutral">&nbsp;</span>
431
451
  <span class="cline-any cline-neutral">&nbsp;</span>
432
452
  <span class="cline-any cline-neutral">&nbsp;</span>
433
453
  <span class="cline-any cline-neutral">&nbsp;</span>
434
454
  <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">35x</span>
436
- <span class="cline-any cline-yes">35x</span>
455
+ <span class="cline-any cline-yes">39x</span>
456
+ <span class="cline-any cline-yes">39x</span>
437
457
  <span class="cline-any cline-no">&nbsp;</span>
438
458
  <span class="cline-any cline-no">&nbsp;</span>
439
459
  <span class="cline-any cline-no">&nbsp;</span>
440
460
  <span class="cline-any cline-neutral">&nbsp;</span>
441
461
  <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-yes">35x</span>
443
- <span class="cline-any cline-yes">35x</span>
462
+ <span class="cline-any cline-yes">39x</span>
463
+ <span class="cline-any cline-yes">39x</span>
444
464
  <span class="cline-any cline-neutral">&nbsp;</span>
445
465
  <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-yes">35x</span>
447
- <span class="cline-any cline-yes">35x</span>
448
- <span class="cline-any cline-yes">35x</span>
466
+ <span class="cline-any cline-yes">39x</span>
467
+ <span class="cline-any cline-yes">39x</span>
468
+ <span class="cline-any cline-yes">39x</span>
449
469
  <span class="cline-any cline-no">&nbsp;</span>
450
470
  <span class="cline-any cline-neutral">&nbsp;</span>
451
471
  <span class="cline-any cline-neutral">&nbsp;</span>
452
472
  <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-yes">35x</span>
454
- <span class="cline-any cline-yes">35x</span>
473
+ <span class="cline-any cline-yes">39x</span>
474
+ <span class="cline-any cline-yes">39x</span>
455
475
  <span class="cline-any cline-no">&nbsp;</span>
456
476
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">35x</span>
477
+ <span class="cline-any cline-yes">39x</span>
458
478
  <span class="cline-any cline-neutral">&nbsp;</span>
459
479
  <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-yes">34x</span>
480
+ <span class="cline-any cline-yes">39x</span>
461
481
  <span class="cline-any cline-yes">1x</span>
462
482
  <span class="cline-any cline-neutral">&nbsp;</span>
463
483
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -479,13 +499,13 @@
479
499
  <span class="cline-any cline-yes">1x</span>
480
500
  <span class="cline-any cline-neutral">&nbsp;</span>
481
501
  <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-yes">34x</span>
502
+ <span class="cline-any cline-yes">39x</span>
483
503
  <span class="cline-any cline-yes">1x</span>
484
504
  <span class="cline-any cline-yes">1x</span>
485
505
  <span class="cline-any cline-neutral">&nbsp;</span>
486
506
  <span class="cline-any cline-neutral">&nbsp;</span>
487
507
  <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-yes">34x</span>
508
+ <span class="cline-any cline-yes">39x</span>
489
509
  <span class="cline-any cline-yes">1x</span>
490
510
  <span class="cline-any cline-yes">1x</span>
491
511
  <span class="cline-any cline-yes">1x</span>
@@ -511,7 +531,7 @@
511
531
  <span class="cline-any cline-no">&nbsp;</span>
512
532
  <span class="cline-any cline-neutral">&nbsp;</span>
513
533
  <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-yes">34x</span>
534
+ <span class="cline-any cline-yes">39x</span>
515
535
  <span class="cline-any cline-no">&nbsp;</span>
516
536
  <span class="cline-any cline-neutral">&nbsp;</span>
517
537
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -555,8 +575,7 @@
555
575
  <span class="cline-any cline-neutral">&nbsp;</span>
556
576
  <span class="cline-any cline-no">&nbsp;</span>
557
577
  <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
559
- const {
578
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
560
579
  generateDatasourceID,
561
580
  getDatasourceParams,
562
581
  getQueryParams,
@@ -568,12 +587,11 @@ const { BuildSchemaErrors, InvalidColumns } = require("../../constants")
568
587
  const { integrations } = require("../../integrations")
569
588
  const { getDatasourceAndQuery } = require("./row/utils")
570
589
  const { invalidateDynamicVariables } = require("../../threads/utils")
590
+ const { getAppDB } = require("@budibase/backend-core/context")
571
591
  &nbsp;
572
592
  exports.fetch = async function (ctx) {
573
- const database = new CouchDB(ctx.appId)
574
- &nbsp;
575
593
  // Get internal tables
576
- const db = new CouchDB(ctx.appId)
594
+ const db = getAppDB()
577
595
  const internalTables = await db.allDocs(
578
596
  getTableParams(null, {
579
597
  include_docs: true,
@@ -588,18 +606,25 @@ exports.fetch = async function (ctx) {
588
606
  &nbsp;
589
607
  // Get external datasources
590
608
  const datasources = (
591
- await database.allDocs(
609
+ await db.allDocs(
592
610
  getDatasourceParams(null, {
593
611
  include_docs: true,
594
612
  })
595
613
  )
596
614
  ).rows.map(row =&gt; row.doc)
615
+ &nbsp;
616
+ for (let datasource of datasources) {
617
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (datasource.config &amp;&amp; datasource.config.auth) {
618
+ // strip secrets from response so they don't show in the network request
619
+ <span class="cstat-no" title="statement not covered" > delete datasource.config.auth</span>
620
+ }
621
+ }
597
622
  &nbsp;
598
623
  ctx.body = [bbInternalDb, ...datasources]
599
624
  }
600
625
  &nbsp;
601
626
  exports.buildSchemaFromDb = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
602
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(ctx.appId)</span>
627
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
603
628
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(ctx.params.datasourceId)</span>
604
629
  &nbsp;
605
630
  const { tables, error } = <span class="cstat-no" title="statement not covered" >await buildSchemaHelper(datasource)</span>
@@ -648,11 +673,16 @@ const invalidateVariables = async (existingDatasource, updatedDatasource) =&gt;
648
673
  }
649
674
  &nbsp;
650
675
  exports.update = async function (ctx) {
651
- const db = new CouchDB(ctx.appId)
676
+ const db = getAppDB()
652
677
  const datasourceId = ctx.params.datasourceId
653
678
  let datasource = await db.get(datasourceId)
679
+ const auth = datasource.config.auth
654
680
  await invalidateVariables(datasource, ctx.request.body)
655
681
  datasource = { ...datasource, ...ctx.request.body }
682
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (auth &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!ctx.request.body.auth)</span> {
683
+ // don't strip auth config from DB
684
+ <span class="cstat-no" title="statement not covered" > datasource.config.auth = auth</span>
685
+ }
656
686
  &nbsp;
657
687
  const response = await db.put(datasource)
658
688
  datasource._rev = response.rev
@@ -671,7 +701,7 @@ exports.update = async function (ctx) {
671
701
  }
672
702
  &nbsp;
673
703
  exports.save = async function (ctx) {
674
- const db = new CouchDB(ctx.appId)
704
+ const db = getAppDB()
675
705
  const plus = ctx.request.body.datasource.plus
676
706
  const fetchSchema = ctx.request.body.fetchSchema
677
707
  &nbsp;
@@ -707,7 +737,7 @@ exports.save = async function (ctx) {
707
737
  }
708
738
  &nbsp;
709
739
  exports.destroy = async function (ctx) {
710
- const db = new CouchDB(ctx.appId)
740
+ const db = getAppDB()
711
741
  &nbsp;
712
742
  // Delete all queries for the datasource
713
743
  const queries = await db.allDocs(
@@ -729,7 +759,7 @@ exports.destroy = async function (ctx) {
729
759
  }
730
760
  &nbsp;
731
761
  exports.find = async function (ctx) {
732
- const database = new CouchDB(ctx.appId)
762
+ const database = getAppDB()
733
763
  ctx.body = await database.get(ctx.params.datasourceId)
734
764
  }
735
765
  &nbsp;
@@ -737,7 +767,7 @@ exports.find = async function (ctx) {
737
767
  exports.query = async function (ctx) {
738
768
  const queryJson = ctx.request.body
739
769
  try {
740
- ctx.body = await getDatasourceAndQuery(ctx.appId, queryJson)
770
+ ctx.body = await getDatasourceAndQuery(queryJson)
741
771
  } catch (err) {
742
772
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, err)</span>
743
773
  }
@@ -811,7 +841,7 @@ const buildSchemaHelper = <span class="fstat-no" title="function not covered" >a
811
841
  <div class='footer quiet pad2 space-top1 center small'>
812
842
  Code coverage generated by
813
843
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
814
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
844
+ at Mon Feb 07 2022 20:42:11 GMT+0000 (Coordinated Universal Time)
815
845
  </div>
816
846
  </div>
817
847
  <script src="../../prettify.js"></script>
@@ -302,14 +302,14 @@
302
302
  <span class="cline-any cline-no">&nbsp;</span>
303
303
  <span class="cline-any cline-neutral">&nbsp;</span>
304
304
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const fetch = require("node-fetch")
305
- const CouchDB = require("../../db")
306
305
  const env = require("../../environment")
307
306
  const { checkSlashesInUrl } = require("../../utilities")
308
307
  const { request } = require("../../utilities/workerRequests")
309
308
  const { clearLock } = require("../../utilities/redis")
310
- const { Replication } = require("@budibase/backend-core/db")
309
+ const { Replication, getProdAppID } = require("@budibase/backend-core/db")
311
310
  const { DocumentTypes } = require("../../db/utils")
312
311
  const { app: appCache } = require("@budibase/backend-core/cache")
312
+ const { getProdAppDB, getAppDB } = require("@budibase/backend-core/context")
313
313
  &nbsp;
314
314
  async function <span class="fstat-no" title="function not covered" >redirect(</span>ctx, method, path = <span class="branch-0 cbranch-no" title="branch not covered" >"global")</span> {
315
315
  const { devPath } = <span class="cstat-no" title="statement not covered" >ctx.params</span>
@@ -380,11 +380,11 @@ exports.clearLock = <span class="fstat-no" title="function not covered" >as</spa
380
380
  &nbsp;
381
381
  exports.revert = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
382
382
  const { appId } = <span class="cstat-no" title="statement not covered" >ctx.params</span>
383
- const productionAppId = <span class="cstat-no" title="statement not covered" >appId.replace("_dev", "")</span>
383
+ const productionAppId = <span class="cstat-no" title="statement not covered" >getProdAppID(appId)</span>
384
384
  &nbsp;
385
385
  // App must have been deployed first
386
386
  <span class="cstat-no" title="statement not covered" > try {</span>
387
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(productionAppId, { skip_setup: true })</span>
387
+ const db = <span class="cstat-no" title="statement not covered" >getProdAppDB({ skip_setup: true })</span>
388
388
  const info = <span class="cstat-no" title="statement not covered" >await db.info()</span>
389
389
  <span class="cstat-no" title="statement not covered" > if (info.error) <span class="cstat-no" title="statement not covered" >throw info.error</span></span>
390
390
  const deploymentDoc = <span class="cstat-no" title="statement not covered" >await db.get(DocumentTypes.DEPLOYMENTS)</span>
@@ -406,7 +406,7 @@ exports.revert = <span class="fstat-no" title="function not covered" >as</span>y
406
406
  &nbsp;
407
407
  <span class="cstat-no" title="statement not covered" > await replication.rollback()</span>
408
408
  // update appID in reverted app to be dev version again
409
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
409
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
410
410
  const appDoc = <span class="cstat-no" title="statement not covered" >await db.get(DocumentTypes.APP_METADATA)</span>
411
411
  <span class="cstat-no" title="statement not covered" > appDoc.appId = appId</span>
412
412
  <span class="cstat-no" title="statement not covered" > appDoc.instance._id = appId</span>
@@ -430,7 +430,7 @@ exports.getBudibaseVersion = <span class="fstat-no" title="function not covered"
430
430
  <div class='footer quiet pad2 space-top1 center small'>
431
431
  Code coverage generated by
432
432
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
433
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
433
+ at Mon Feb 07 2022 20:42:11 GMT+0000 (Coordinated Universal Time)
434
434
  </div>
435
435
  </div>
436
436
  <script src="../../prettify.js"></script>