@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,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">74.6% </span>
26
+ <span class="strong">72.46% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>47/63</span>
28
+ <span class='fraction'>50/69</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">71.87% </span>
33
+ <span class="strong">67.64% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>23/32</span>
35
+ <span class='fraction'>23/34</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">60% </span>
40
+ <span class="strong">40% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/5</span>
42
+ <span class='fraction'>2/5</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">78.33% </span>
47
+ <span class="strong">75.75% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>47/60</span>
49
+ <span class='fraction'>50/66</span>
50
50
  </div>
51
51
 
52
52
 
@@ -208,22 +208,30 @@
208
208
  <a name='L149'></a><a href='#L149'>149</a>
209
209
  <a name='L150'></a><a href='#L150'>150</a>
210
210
  <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
212
- <span class="cline-any cline-yes">34x</span>
213
- <span class="cline-any cline-yes">34x</span>
214
- <span class="cline-any cline-yes">34x</span>
211
+ <a name='L152'></a><a href='#L152'>152</a>
212
+ <a name='L153'></a><a href='#L153'>153</a>
213
+ <a name='L154'></a><a href='#L154'>154</a>
214
+ <a name='L155'></a><a href='#L155'>155</a>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
217
+ <span class="cline-any cline-yes">39x</span>
218
+ <span class="cline-any cline-yes">39x</span>
215
219
  <span class="cline-any cline-neutral">&nbsp;</span>
216
220
  <span class="cline-any cline-neutral">&nbsp;</span>
217
221
  <span class="cline-any cline-neutral">&nbsp;</span>
218
222
  <span class="cline-any cline-neutral">&nbsp;</span>
219
223
  <span class="cline-any cline-neutral">&nbsp;</span>
220
- <span class="cline-any cline-yes">34x</span>
224
+ <span class="cline-any cline-yes">39x</span>
225
+ <span class="cline-any cline-yes">39x</span>
226
+ <span class="cline-any cline-yes">39x</span>
227
+ <span class="cline-any cline-yes">39x</span>
228
+ <span class="cline-any cline-yes">39x</span>
229
+ <span class="cline-any cline-yes">39x</span>
221
230
  <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-yes">34x</span>
223
- <span class="cline-any cline-yes">99x</span>
224
- <span class="cline-any cline-yes">99x</span>
225
- <span class="cline-any cline-yes">99x</span>
226
- <span class="cline-any cline-yes">99x</span>
231
+ <span class="cline-any cline-yes">39x</span>
232
+ <span class="cline-any cline-yes">101x</span>
233
+ <span class="cline-any cline-yes">101x</span>
234
+ <span class="cline-any cline-yes">101x</span>
227
235
  <span class="cline-any cline-neutral">&nbsp;</span>
228
236
  <span class="cline-any cline-neutral">&nbsp;</span>
229
237
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -232,27 +240,26 @@
232
240
  <span class="cline-any cline-neutral">&nbsp;</span>
233
241
  <span class="cline-any cline-neutral">&nbsp;</span>
234
242
  <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-yes">99x</span>
243
+ <span class="cline-any cline-yes">101x</span>
236
244
  <span class="cline-any cline-yes">4x</span>
237
245
  <span class="cline-any cline-neutral">&nbsp;</span>
238
246
  <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-yes">99x</span>
247
+ <span class="cline-any cline-yes">101x</span>
240
248
  <span class="cline-any cline-no">&nbsp;</span>
241
249
  <span class="cline-any cline-neutral">&nbsp;</span>
242
250
  <span class="cline-any cline-neutral">&nbsp;</span>
243
251
  <span class="cline-any cline-neutral">&nbsp;</span>
244
252
  <span class="cline-any cline-neutral">&nbsp;</span>
245
- <span class="cline-any cline-yes">99x</span>
253
+ <span class="cline-any cline-yes">101x</span>
246
254
  <span class="cline-any cline-neutral">&nbsp;</span>
247
255
  <span class="cline-any cline-neutral">&nbsp;</span>
248
256
  <span class="cline-any cline-neutral">&nbsp;</span>
249
257
  <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-yes">101x</span>
250
259
  <span class="cline-any cline-neutral">&nbsp;</span>
251
- <span class="cline-any cline-yes">99x</span>
252
260
  <span class="cline-any cline-neutral">&nbsp;</span>
253
261
  <span class="cline-any cline-neutral">&nbsp;</span>
254
- <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-yes">99x</span>
262
+ <span class="cline-any cline-yes">101x</span>
256
263
  <span class="cline-any cline-yes">4x</span>
257
264
  <span class="cline-any cline-yes">13x</span>
258
265
  <span class="cline-any cline-yes">13x</span>
@@ -262,7 +269,7 @@
262
269
  <span class="cline-any cline-neutral">&nbsp;</span>
263
270
  <span class="cline-any cline-neutral">&nbsp;</span>
264
271
  <span class="cline-any cline-neutral">&nbsp;</span>
265
- <span class="cline-any cline-yes">99x</span>
272
+ <span class="cline-any cline-yes">101x</span>
266
273
  <span class="cline-any cline-neutral">&nbsp;</span>
267
274
  <span class="cline-any cline-neutral">&nbsp;</span>
268
275
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -275,10 +282,10 @@
275
282
  <span class="cline-any cline-neutral">&nbsp;</span>
276
283
  <span class="cline-any cline-neutral">&nbsp;</span>
277
284
  <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-yes">99x</span>
285
+ <span class="cline-any cline-yes">101x</span>
279
286
  <span class="cline-any cline-neutral">&nbsp;</span>
280
287
  <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-yes">99x</span>
288
+ <span class="cline-any cline-yes">101x</span>
282
289
  <span class="cline-any cline-no">&nbsp;</span>
283
290
  <span class="cline-any cline-no">&nbsp;</span>
284
291
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,16 +294,15 @@
287
294
  <span class="cline-any cline-neutral">&nbsp;</span>
288
295
  <span class="cline-any cline-neutral">&nbsp;</span>
289
296
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">99x</span>
291
- <span class="cline-any cline-yes">99x</span>
292
- <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-yes">101x</span>
298
+ <span class="cline-any cline-yes">101x</span>
293
299
  <span class="cline-any cline-neutral">&nbsp;</span>
294
300
  <span class="cline-any cline-neutral">&nbsp;</span>
295
301
  <span class="cline-any cline-neutral">&nbsp;</span>
296
302
  <span class="cline-any cline-neutral">&nbsp;</span>
297
303
  <span class="cline-any cline-neutral">&nbsp;</span>
298
304
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">99x</span>
305
+ <span class="cline-any cline-yes">101x</span>
300
306
  <span class="cline-any cline-yes">4x</span>
301
307
  <span class="cline-any cline-neutral">&nbsp;</span>
302
308
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -305,20 +311,20 @@
305
311
  <span class="cline-any cline-neutral">&nbsp;</span>
306
312
  <span class="cline-any cline-neutral">&nbsp;</span>
307
313
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">99x</span>
309
- <span class="cline-any cline-yes">99x</span>
314
+ <span class="cline-any cline-yes">101x</span>
315
+ <span class="cline-any cline-yes">101x</span>
310
316
  <span class="cline-any cline-yes">1x</span>
311
317
  <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-yes">99x</span>
313
- <span class="cline-any cline-yes">99x</span>
318
+ <span class="cline-any cline-yes">101x</span>
319
+ <span class="cline-any cline-yes">101x</span>
314
320
  <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-yes">99x</span>
321
+ <span class="cline-any cline-yes">101x</span>
316
322
  <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-yes">99x</span>
323
+ <span class="cline-any cline-yes">101x</span>
324
+ <span class="cline-any cline-yes">101x</span>
318
325
  <span class="cline-any cline-neutral">&nbsp;</span>
319
326
  <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-yes">34x</span>
321
- <span class="cline-any cline-yes">2x</span>
327
+ <span class="cline-any cline-yes">39x</span>
322
328
  <span class="cline-any cline-yes">2x</span>
323
329
  <span class="cline-any cline-yes">2x</span>
324
330
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -329,6 +335,7 @@
329
335
  <span class="cline-any cline-neutral">&nbsp;</span>
330
336
  <span class="cline-any cline-neutral">&nbsp;</span>
331
337
  <span class="cline-any cline-yes">2x</span>
338
+ <span class="cline-any cline-yes">2x</span>
332
339
  <span class="cline-any cline-neutral">&nbsp;</span>
333
340
  <span class="cline-any cline-neutral">&nbsp;</span>
334
341
  <span class="cline-any cline-yes">2x</span>
@@ -337,30 +344,32 @@
337
344
  <span class="cline-any cline-neutral">&nbsp;</span>
338
345
  <span class="cline-any cline-neutral">&nbsp;</span>
339
346
  <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-neutral">&nbsp;</span>
341
347
  <span class="cline-any cline-yes">2x</span>
342
348
  <span class="cline-any cline-neutral">&nbsp;</span>
343
349
  <span class="cline-any cline-neutral">&nbsp;</span>
344
350
  <span class="cline-any cline-yes">2x</span>
345
- <span class="cline-any cline-yes">2x</span>
346
- <span class="cline-any cline-yes">2x</span>
351
+ <span class="cline-any cline-no">&nbsp;</span>
352
+ <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-no">&nbsp;</span>
347
354
  <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-yes">2x</span>
349
355
  <span class="cline-any cline-no">&nbsp;</span>
356
+ <span class="cline-any cline-no">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
358
  <span class="cline-any cline-neutral">&nbsp;</span>
351
359
  <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-yes">2x</span>
362
+ <span class="cline-any cline-yes">2x</span>
352
363
  <span class="cline-any cline-yes">2x</span>
353
364
  <span class="cline-any cline-neutral">&nbsp;</span>
354
365
  <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-yes">34x</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-yes">39x</span>
357
367
  <span class="cline-any cline-no">&nbsp;</span>
358
368
  <span class="cline-any cline-no">&nbsp;</span>
359
369
  <span class="cline-any cline-no">&nbsp;</span>
360
370
  <span class="cline-any cline-no">&nbsp;</span>
361
371
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
363
- const linkRows = require("../../../db/linkedRows")
372
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const linkRows = require("../../../db/linkedRows")
364
373
  const { getRowParams, generateTableID } = require("../../../db/utils")
365
374
  const { FieldTypes } = require("../../../constants")
366
375
  const {
@@ -369,10 +378,14 @@ const {
369
378
  getTable,
370
379
  handleDataImport,
371
380
  } = require("./utils")
381
+ const usageQuota = require("../../../utilities/usageQuota")
382
+ const { getAppDB } = require("@budibase/backend-core/context")
383
+ const env = require("../../../environment")
384
+ const { cleanupAttachments } = require("../../../utilities/rowProcessor")
385
+ const { runStaticFormulaChecks } = require("./bulkFormula")
372
386
  &nbsp;
373
387
  exports.save = async function (ctx) {
374
- const appId = ctx.appId
375
- const db = new CouchDB(appId)
388
+ const db = getAppDB()
376
389
  const { dataImport, ...rest } = ctx.request.body
377
390
  let tableToSave = {
378
391
  type: "table",
@@ -394,8 +407,7 @@ exports.save = async function (ctx) {
394
407
  // saving a table is a complex operation, involving many different steps, this
395
408
  // has been broken out into a utility to make it more obvious/easier to manipulate
396
409
  const tableSaveFunctions = new TableSaveFunctions({
397
- db,
398
- ctx,
410
+ user: ctx.user,
399
411
  oldTable,
400
412
  dataImport,
401
413
  })
@@ -440,7 +452,6 @@ exports.save = async function (ctx) {
440
452
  // update linked rows
441
453
  try {
442
454
  const linkResp = await linkRows.updateLinks({
443
- appId,
444
455
  eventType: oldTable
445
456
  ? linkRows.EventType.TABLE_UPDATED
446
457
  : linkRows.EventType.TABLE_SAVE,
@@ -464,13 +475,13 @@ exports.save = async function (ctx) {
464
475
  tableToSave._rev = result.rev
465
476
  &nbsp;
466
477
  tableToSave = await tableSaveFunctions.after(tableToSave)
467
- &nbsp;
478
+ // has to run after, make sure it has _id
479
+ await runStaticFormulaChecks(tableToSave, { oldTable })
468
480
  return tableToSave
469
481
  }
470
482
  &nbsp;
471
483
  exports.destroy = async function (ctx) {
472
- const appId = ctx.appId
473
- const db = new CouchDB(appId)
484
+ const db = getAppDB()
474
485
  const tableToDelete = await db.get(ctx.params.tableId)
475
486
  &nbsp;
476
487
  // Delete all rows for that table
@@ -480,10 +491,10 @@ exports.destroy = async function (ctx) {
480
491
  })
481
492
  )
482
493
  await db.bulkDocs(rows.rows.map(<span class="fstat-no" title="function not covered" >ro</span>w =&gt; (<span class="cstat-no" title="statement not covered" >{ ...row.doc, _deleted: true })</span>))
494
+ await usageQuota.update(usageQuota.Properties.ROW, -rows.rows.length)
483
495
  &nbsp;
484
496
  // update linked rows
485
497
  await linkRows.updateLinks({
486
- appId,
487
498
  eventType: linkRows.EventType.TABLE_DELETE,
488
499
  table: tableToDelete,
489
500
  })
@@ -492,22 +503,26 @@ exports.destroy = async function (ctx) {
492
503
  await db.remove(tableToDelete)
493
504
  &nbsp;
494
505
  // remove table search index
495
- const currentIndexes = await db.getIndexes()
496
- const existingIndex = currentIndexes.indexes.find(
497
- existing =&gt; existing.name === `search:${ctx.params.tableId}`
498
- )
499
- <span class="missing-if-branch" title="if path not taken" >I</span>if (existingIndex) {
500
- <span class="cstat-no" title="statement not covered" > await db.deleteIndex(existingIndex)</span>
506
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
507
+ const currentIndexes = <span class="cstat-no" title="statement not covered" >await db.getIndexes()</span>
508
+ const existingIndex = <span class="cstat-no" title="statement not covered" >currentIndexes.indexes.find(</span>
509
+ <span class="fstat-no" title="function not covered" > ex</span>isting =&gt; <span class="cstat-no" title="statement not covered" >existing.name === `search:${ctx.params.tableId}`</span>
510
+ )
511
+ <span class="cstat-no" title="statement not covered" > if (existingIndex) {</span>
512
+ <span class="cstat-no" title="statement not covered" > await db.deleteIndex(existingIndex)</span>
513
+ }
501
514
  }
502
515
  &nbsp;
516
+ // has to run after, make sure it has _id
517
+ await runStaticFormulaChecks(tableToDelete, { deletion: true })
518
+ await cleanupAttachments(tableToDelete, { rows })
503
519
  return tableToDelete
504
520
  }
505
521
  &nbsp;
506
522
  exports.bulkImport = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
507
- const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
508
- const table = <span class="cstat-no" title="statement not covered" >await getTable(appId, ctx.params.tableId)</span>
523
+ const table = <span class="cstat-no" title="statement not covered" >await getTable(ctx.params.tableId)</span>
509
524
  const { dataImport } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
510
- <span class="cstat-no" title="statement not covered" > await handleDataImport(appId, ctx.user, table, dataImport)</span>
525
+ <span class="cstat-no" title="statement not covered" > await handleDataImport(ctx.user, table, dataImport)</span>
511
526
  <span class="cstat-no" title="statement not covered" > return table</span>
512
527
  }
513
528
  &nbsp;</pre></td></tr></table></pre>
@@ -517,7 +532,7 @@ exports.bulkImport = <span class="fstat-no" title="function not covered" >as</sp
517
532
  <div class='footer quiet pad2 space-top1 center small'>
518
533
  Code coverage generated by
519
534
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
520
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
535
+ at Mon Feb 07 2022 20:42:11 GMT+0000 (Coordinated Universal Time)
521
536
  </div>
522
537
  </div>
523
538
  <script src="../../../prettify.js"></script>