@budibase/server 1.0.49 → 1.0.50-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +4 -5
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +2 -1
  6. package/__mocks__/pg.ts +3 -5
  7. package/builder/assets/{index.2c37968e.js → index.9fe798bd.js} +252 -249
  8. package/builder/assets/index.c0cc369d.css +6 -0
  9. package/builder/assets/{vendor.f9faf6ab.js → vendor.5ad9695a.js} +202 -106
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +3105 -2814
  12. package/coverage/coverage-final.json +106 -101
  13. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/application.js.html +257 -152
  16. package/coverage/lcov-report/api/controllers/auth.js.html +22 -13
  17. package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  20. package/coverage/lcov-report/api/controllers/component.js.html +13 -16
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +81 -51
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/api/controllers/index.html +78 -78
  24. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  26. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  27. package/coverage/lcov-report/api/controllers/migrations.js.html +119 -0
  28. package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
  29. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  30. package/coverage/lcov-report/api/controllers/query/index.js.html +38 -35
  31. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  32. package/coverage/lcov-report/api/controllers/role.js.html +16 -16
  33. package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
  35. package/coverage/lcov-report/api/controllers/row/index.html +55 -40
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +118 -226
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +52 -34
  39. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +548 -0
  40. package/coverage/lcov-report/api/controllers/row/utils.js.html +47 -62
  41. package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
  42. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +599 -0
  44. package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
  45. package/coverage/lcov-report/api/controllers/table/index.html +58 -43
  46. package/coverage/lcov-report/api/controllers/table/index.js.html +58 -82
  47. package/coverage/lcov-report/api/controllers/table/internal.js.html +81 -66
  48. package/coverage/lcov-report/api/controllers/table/utils.js.html +218 -110
  49. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/user.js.html +79 -76
  51. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  52. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  53. package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
  54. package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
  55. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  56. package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
  57. package/coverage/lcov-report/api/index.html +1 -1
  58. package/coverage/lcov-report/api/index.js.html +8 -8
  59. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/index.html +18 -18
  71. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  72. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/{hosting.js.html → migrations.js.html} +17 -14
  76. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/static.js.html +17 -2
  84. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  87. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  88. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  89. package/coverage/lcov-report/automations/actions.js.html +24 -24
  90. package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
  91. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  92. package/coverage/lcov-report/automations/index.html +18 -18
  93. package/coverage/lcov-report/automations/index.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  95. package/coverage/lcov-report/automations/steps/createRow.js.html +13 -22
  96. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  97. package/coverage/lcov-report/automations/steps/deleteRow.js.html +11 -20
  98. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  99. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  101. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  102. package/coverage/lcov-report/automations/steps/index.html +13 -13
  103. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  104. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  105. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  106. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  108. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  109. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  110. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  111. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  112. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  114. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  115. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  116. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  119. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  120. package/coverage/lcov-report/automations/triggers.js.html +61 -55
  121. package/coverage/lcov-report/automations/utils.js.html +54 -42
  122. package/coverage/lcov-report/constants/index.html +5 -5
  123. package/coverage/lcov-report/constants/index.js.html +53 -26
  124. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  125. package/coverage/lcov-report/constants/screens.js.html +4 -4
  126. package/coverage/lcov-report/db/client.js.html +18 -18
  127. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  128. package/coverage/lcov-report/db/index.html +15 -15
  129. package/coverage/lcov-report/db/index.js.html +3 -3
  130. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +25 -37
  131. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  132. package/coverage/lcov-report/db/linkedRows/index.js.html +51 -96
  133. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
  134. package/coverage/lcov-report/db/newid.js.html +4 -4
  135. package/coverage/lcov-report/db/utils.js.html +87 -87
  136. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  137. package/coverage/lcov-report/events/index.html +1 -1
  138. package/coverage/lcov-report/events/index.js.html +5 -5
  139. package/coverage/lcov-report/events/utils.js.html +3 -3
  140. package/coverage/lcov-report/index.html +135 -120
  141. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  142. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  143. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  144. package/coverage/lcov-report/middleware/authorized.js.html +173 -65
  145. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  146. package/coverage/lcov-report/middleware/currentapp.js.html +95 -83
  147. package/coverage/lcov-report/middleware/index.html +38 -38
  148. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  149. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  150. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  151. package/coverage/lcov-report/middleware/usageQuota.js.html +281 -53
  152. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  153. package/coverage/lcov-report/threads/automation.js.html +30 -24
  154. package/coverage/lcov-report/threads/index.html +26 -26
  155. package/coverage/lcov-report/threads/index.js.html +10 -10
  156. package/coverage/lcov-report/threads/query.js.html +39 -24
  157. package/coverage/lcov-report/threads/utils.js.html +14 -14
  158. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  159. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  160. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  161. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  162. package/coverage/lcov-report/utilities/global.js.html +58 -49
  163. package/coverage/lcov-report/utilities/index.html +37 -37
  164. package/coverage/lcov-report/utilities/index.js.html +43 -73
  165. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  166. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  167. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  168. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  169. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  170. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +97 -103
  171. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +75 -27
  172. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  173. package/coverage/lcov-report/utilities/security.js.html +8 -8
  174. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  175. package/coverage/lcov-report/utilities/usageQuota/index.html +141 -0
  176. package/coverage/lcov-report/utilities/usageQuota/index.js.html +359 -0
  177. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +305 -0
  178. package/coverage/lcov-report/{api/controllers/hosting.js.html → utilities/usageQuota/usageQuoteReset.js.html} +36 -48
  179. package/coverage/lcov-report/utilities/users.js.html +9 -9
  180. package/coverage/lcov-report/utilities/workerRequests.js.html +43 -112
  181. package/coverage/lcov.info +5010 -4425
  182. package/dist/api/controllers/application.js +90 -60
  183. package/dist/api/controllers/auth.js +8 -5
  184. package/dist/api/controllers/automation.js +14 -19
  185. package/dist/api/controllers/cloud.js +2 -3
  186. package/dist/api/controllers/component.js +3 -4
  187. package/dist/api/controllers/datasource.js +20 -10
  188. package/dist/api/controllers/deploy/Deployment.js +3 -6
  189. package/dist/api/controllers/deploy/index.js +12 -13
  190. package/dist/api/controllers/dev.js +5 -5
  191. package/dist/api/controllers/layout.js +3 -3
  192. package/dist/api/controllers/metadata.js +4 -4
  193. package/dist/api/controllers/migrations.js +21 -0
  194. package/dist/api/controllers/permission.js +4 -4
  195. package/dist/api/controllers/query/import/index.js +4 -6
  196. package/dist/api/controllers/query/index.js +11 -10
  197. package/dist/api/controllers/role.js +5 -5
  198. package/dist/api/controllers/routing.js +5 -6
  199. package/dist/api/controllers/row/ExternalRequest.js +90 -67
  200. package/dist/api/controllers/row/external.js +14 -22
  201. package/dist/api/controllers/row/internal.js +55 -93
  202. package/dist/api/controllers/row/internalSearch.js +23 -17
  203. package/dist/api/controllers/row/staticFormula.js +147 -0
  204. package/dist/api/controllers/row/utils.js +13 -14
  205. package/dist/api/controllers/screen.js +5 -7
  206. package/dist/api/controllers/static/index.js +62 -16
  207. package/dist/api/controllers/table/bulkFormula.js +159 -0
  208. package/dist/api/controllers/table/external.js +7 -10
  209. package/dist/api/controllers/table/index.js +16 -13
  210. package/dist/api/controllers/table/internal.js +22 -16
  211. package/dist/api/controllers/table/utils.js +62 -35
  212. package/dist/api/controllers/user.js +43 -43
  213. package/dist/api/controllers/view/index.js +8 -10
  214. package/dist/api/controllers/view/utils.js +9 -4
  215. package/dist/api/controllers/webhook.js +10 -8
  216. package/dist/api/routes/index.js +2 -2
  217. package/dist/api/routes/migrations.js +9 -0
  218. package/dist/api/routes/static.js +2 -1
  219. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  220. package/dist/app.js +35 -5
  221. package/dist/automations/automationUtils.js +2 -3
  222. package/dist/automations/steps/createRow.js +3 -5
  223. package/dist/automations/steps/deleteRow.js +1 -4
  224. package/dist/automations/steps/updateRow.js +1 -1
  225. package/dist/automations/triggers.js +27 -25
  226. package/dist/automations/utils.js +10 -5
  227. package/dist/constants/index.js +7 -0
  228. package/dist/db/linkedRows/LinkController.js +3 -7
  229. package/dist/db/linkedRows/index.js +16 -27
  230. package/dist/db/linkedRows/linkUtils.js +6 -6
  231. package/dist/db/views/staticViews.js +9 -10
  232. package/dist/definitions/datasource.js +1 -0
  233. package/dist/environment.js +4 -1
  234. package/dist/integrations/base/sql.js +62 -21
  235. package/dist/integrations/googlesheets.js +340 -0
  236. package/dist/integrations/index.js +3 -0
  237. package/dist/integrations/utils.js +60 -9
  238. package/dist/middleware/authorized.js +57 -30
  239. package/dist/middleware/builder.js +2 -2
  240. package/dist/middleware/currentapp.js +41 -37
  241. package/dist/middleware/usageQuota.js +82 -15
  242. package/dist/migrations/functions/appUrls.js +46 -0
  243. package/dist/migrations/functions/quotas1.js +50 -0
  244. package/dist/migrations/functions/usageQuotas/index.js +20 -0
  245. package/dist/migrations/functions/usageQuotas/syncApps.js +29 -0
  246. package/dist/migrations/functions/usageQuotas/syncRows.js +33 -0
  247. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  248. package/dist/migrations/index.js +62 -0
  249. package/dist/package.json +8 -5
  250. package/dist/tests/utilities/TestConfiguration.js +80 -50
  251. package/dist/threads/automation.js +13 -11
  252. package/dist/threads/query.js +15 -11
  253. package/dist/tsconfig.tsbuildinfo +1 -1
  254. package/dist/utilities/fileSystem/index.js +4 -3
  255. package/dist/utilities/global.js +15 -12
  256. package/dist/utilities/index.js +7 -17
  257. package/dist/utilities/routing/index.js +5 -5
  258. package/dist/utilities/rowProcessor/index.js +23 -17
  259. package/dist/utilities/rowProcessor/utils.js +14 -4
  260. package/dist/utilities/{usageQuota.js → usageQuota/index.js} +45 -31
  261. package/dist/utilities/usageQuota/rows.js +78 -0
  262. package/dist/utilities/usageQuota/usageQuoteReset.js +16 -0
  263. package/dist/utilities/users.js +3 -3
  264. package/dist/utilities/workerRequests.js +4 -24
  265. package/nodemon.json +1 -1
  266. package/package.json +9 -6
  267. package/scripts/integrations/mssql/data/Dockerfile +1 -1
  268. package/scripts/integrations/mssql/data/setup.sql +17 -4
  269. package/scripts/integrations/postgres/init.sql +11 -6
  270. package/scripts/likeCypress.ts +1 -1
  271. package/src/api/controllers/application.js +85 -50
  272. package/src/api/controllers/auth.js +8 -5
  273. package/src/api/controllers/automation.js +13 -23
  274. package/src/api/controllers/cloud.js +2 -3
  275. package/src/api/controllers/component.js +3 -4
  276. package/src/api/controllers/datasource.js +21 -11
  277. package/src/api/controllers/deploy/Deployment.js +3 -7
  278. package/src/api/controllers/deploy/index.js +20 -13
  279. package/src/api/controllers/dev.js +5 -5
  280. package/src/api/controllers/layout.js +3 -3
  281. package/src/api/controllers/metadata.js +4 -9
  282. package/src/api/controllers/migrations.js +13 -0
  283. package/src/api/controllers/permission.js +4 -4
  284. package/src/api/controllers/query/import/index.ts +4 -6
  285. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  286. package/src/api/controllers/query/index.js +11 -10
  287. package/src/api/controllers/role.js +5 -5
  288. package/src/api/controllers/routing.js +5 -6
  289. package/src/api/controllers/row/ExternalRequest.ts +67 -43
  290. package/src/api/controllers/row/external.js +27 -58
  291. package/src/api/controllers/row/internal.js +54 -90
  292. package/src/api/controllers/row/internalSearch.js +23 -17
  293. package/src/api/controllers/row/staticFormula.js +156 -0
  294. package/src/api/controllers/row/utils.js +13 -18
  295. package/src/api/controllers/screen.js +5 -7
  296. package/src/api/controllers/static/index.js +66 -15
  297. package/src/api/controllers/table/bulkFormula.js +173 -0
  298. package/src/api/controllers/table/external.js +7 -10
  299. package/src/api/controllers/table/index.js +20 -28
  300. package/src/api/controllers/table/internal.js +24 -19
  301. package/src/api/controllers/table/utils.js +78 -42
  302. package/src/api/controllers/user.js +46 -45
  303. package/src/api/controllers/view/index.js +8 -10
  304. package/src/api/controllers/view/utils.js +9 -4
  305. package/src/api/controllers/webhook.js +10 -8
  306. package/src/api/routes/index.js +2 -2
  307. package/src/api/routes/migrations.js +14 -0
  308. package/src/api/routes/static.js +5 -0
  309. package/src/api/routes/tests/application.spec.js +2 -2
  310. package/src/api/routes/tests/auth.spec.js +1 -2
  311. package/src/api/routes/tests/automation.spec.js +1 -0
  312. package/src/api/routes/tests/misc.spec.js +0 -1
  313. package/src/api/routes/tests/routing.spec.js +21 -12
  314. package/src/api/routes/tests/row.spec.js +7 -4
  315. package/src/api/routes/tests/static.spec.js +98 -0
  316. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  317. package/src/app.ts +18 -5
  318. package/src/automations/automationUtils.js +2 -3
  319. package/src/automations/steps/createRow.js +2 -5
  320. package/src/automations/steps/deleteRow.js +1 -4
  321. package/src/automations/steps/updateRow.js +1 -1
  322. package/src/automations/triggers.js +33 -31
  323. package/src/automations/utils.js +9 -5
  324. package/src/constants/index.js +9 -0
  325. package/src/db/linkedRows/LinkController.js +3 -7
  326. package/src/db/linkedRows/index.js +16 -31
  327. package/src/db/linkedRows/linkUtils.js +6 -6
  328. package/src/db/tests/linkController.spec.js +0 -1
  329. package/src/db/tests/linkTests.spec.js +5 -6
  330. package/src/db/views/staticViews.js +8 -10
  331. package/src/definitions/common.ts +3 -0
  332. package/src/definitions/datasource.ts +3 -0
  333. package/src/environment.js +4 -1
  334. package/src/integrations/base/sql.ts +75 -29
  335. package/src/integrations/googlesheets.ts +353 -0
  336. package/src/integrations/index.ts +3 -0
  337. package/src/integrations/tests/sql.spec.js +16 -0
  338. package/src/integrations/utils.ts +75 -12
  339. package/src/middleware/authorized.js +66 -30
  340. package/src/middleware/builder.js +2 -2
  341. package/src/middleware/currentapp.js +50 -46
  342. package/src/middleware/tests/authorized.spec.js +13 -6
  343. package/src/middleware/tests/currentapp.spec.js +6 -0
  344. package/src/middleware/tests/usageQuota.spec.js +18 -24
  345. package/src/middleware/usageQuota.js +93 -17
  346. package/src/migrations/functions/appUrls.ts +34 -0
  347. package/src/migrations/functions/quotas1.ts +20 -0
  348. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  349. package/src/migrations/functions/tests/quotas1.spec.js +27 -0
  350. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  351. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  352. package/src/migrations/functions/usageQuotas/syncApps.ts +18 -0
  353. package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
  354. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +37 -0
  355. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +43 -0
  356. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  357. package/src/migrations/index.ts +56 -0
  358. package/src/module.d.ts +3 -0
  359. package/src/tests/utilities/TestConfiguration.js +82 -55
  360. package/src/threads/automation.js +17 -15
  361. package/src/threads/query.js +17 -12
  362. package/src/utilities/fileSystem/index.js +4 -3
  363. package/src/utilities/global.js +15 -12
  364. package/src/utilities/index.js +7 -17
  365. package/src/utilities/routing/index.js +5 -5
  366. package/src/utilities/rowProcessor/index.js +25 -27
  367. package/src/utilities/rowProcessor/utils.js +23 -7
  368. package/src/utilities/tests/usageQuota/usageQuota.spec.js +72 -0
  369. package/src/utilities/usageQuota/index.js +93 -0
  370. package/src/utilities/usageQuota/rows.js +75 -0
  371. package/src/utilities/usageQuota/usageQuoteReset.js +18 -0
  372. package/src/utilities/users.js +3 -3
  373. package/src/utilities/workerRequests.js +4 -27
  374. package/tsconfig.json +4 -2
  375. package/builder/assets/index.39e01193.css +0 -1
  376. package/dist/api/controllers/hosting.js +0 -30
  377. package/dist/api/routes/hosting.js +0 -11
  378. package/src/api/controllers/hosting.js +0 -22
  379. package/src/api/routes/hosting.js +0 -13
  380. package/src/api/routes/tests/hosting.spec.js +0 -36
  381. package/src/utilities/usageQuota.js +0 -73
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">4.66% </span>
26
+ <span class="strong">5.16% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>7/150</span>
28
+ <span class='fraction'>8/155</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/87</span>
35
+ <span class='fraction'>0/95</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">4.76% </span>
47
+ <span class="strong">5.26% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>7/147</span>
49
+ <span class='fraction'>8/152</span>
50
50
  </div>
51
51
 
52
52
 
@@ -446,9 +446,16 @@
446
446
  <a name='L387'></a><a href='#L387'>387</a>
447
447
  <a name='L388'></a><a href='#L388'>388</a>
448
448
  <a name='L389'></a><a href='#L389'>389</a>
449
- <a name='L390'></a><a href='#L390'>390</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
450
- <span class="cline-any cline-yes">33x</span>
451
- <span class="cline-any cline-yes">33x</span>
449
+ <a name='L390'></a><a href='#L390'>390</a>
450
+ <a name='L391'></a><a href='#L391'>391</a>
451
+ <a name='L392'></a><a href='#L392'>392</a>
452
+ <a name='L393'></a><a href='#L393'>393</a>
453
+ <a name='L394'></a><a href='#L394'>394</a>
454
+ <a name='L395'></a><a href='#L395'>395</a>
455
+ <a name='L396'></a><a href='#L396'>396</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">38x</span>
456
+ <span class="cline-any cline-yes">38x</span>
457
+ <span class="cline-any cline-yes">38x</span>
458
+ <span class="cline-any cline-yes">38x</span>
452
459
  <span class="cline-any cline-neutral">&nbsp;</span>
453
460
  <span class="cline-any cline-neutral">&nbsp;</span>
454
461
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -457,7 +464,6 @@
457
464
  <span class="cline-any cline-neutral">&nbsp;</span>
458
465
  <span class="cline-any cline-neutral">&nbsp;</span>
459
466
  <span class="cline-any cline-no">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
467
  <span class="cline-any cline-neutral">&nbsp;</span>
462
468
  <span class="cline-any cline-neutral">&nbsp;</span>
463
469
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -488,21 +494,29 @@
488
494
  <span class="cline-any cline-no">&nbsp;</span>
489
495
  <span class="cline-any cline-no">&nbsp;</span>
490
496
  <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-no">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
499
  <span class="cline-any cline-neutral">&nbsp;</span>
492
500
  <span class="cline-any cline-neutral">&nbsp;</span>
493
501
  <span class="cline-any cline-no">&nbsp;</span>
494
502
  <span class="cline-any cline-no">&nbsp;</span>
495
503
  <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-no">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
506
  <span class="cline-any cline-neutral">&nbsp;</span>
497
507
  <span class="cline-any cline-neutral">&nbsp;</span>
498
508
  <span class="cline-any cline-no">&nbsp;</span>
499
509
  <span class="cline-any cline-no">&nbsp;</span>
500
510
  <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
513
  <span class="cline-any cline-neutral">&nbsp;</span>
502
514
  <span class="cline-any cline-neutral">&nbsp;</span>
503
515
  <span class="cline-any cline-no">&nbsp;</span>
504
516
  <span class="cline-any cline-no">&nbsp;</span>
505
517
  <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-no">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
520
  <span class="cline-any cline-neutral">&nbsp;</span>
507
521
  <span class="cline-any cline-neutral">&nbsp;</span>
508
522
  <span class="cline-any cline-no">&nbsp;</span>
@@ -682,6 +696,7 @@
682
696
  <span class="cline-any cline-neutral">&nbsp;</span>
683
697
  <span class="cline-any cline-neutral">&nbsp;</span>
684
698
  <span class="cline-any cline-no">&nbsp;</span>
699
+ <span class="cline-any cline-no">&nbsp;</span>
685
700
  <span class="cline-any cline-neutral">&nbsp;</span>
686
701
  <span class="cline-any cline-neutral">&nbsp;</span>
687
702
  <span class="cline-any cline-no">&nbsp;</span>
@@ -695,7 +710,7 @@
695
710
  <span class="cline-any cline-neutral">&nbsp;</span>
696
711
  <span class="cline-any cline-neutral">&nbsp;</span>
697
712
  <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-yes">33x</span>
713
+ <span class="cline-any cline-yes">38x</span>
699
714
  <span class="cline-any cline-no">&nbsp;</span>
700
715
  <span class="cline-any cline-neutral">&nbsp;</span>
701
716
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -730,8 +745,7 @@
730
745
  <span class="cline-any cline-neutral">&nbsp;</span>
731
746
  <span class="cline-any cline-neutral">&nbsp;</span>
732
747
  <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-yes">33x</span>
748
+ <span class="cline-any cline-yes">38x</span>
735
749
  <span class="cline-any cline-no">&nbsp;</span>
736
750
  <span class="cline-any cline-no">&nbsp;</span>
737
751
  <span class="cline-any cline-no">&nbsp;</span>
@@ -779,8 +793,7 @@
779
793
  <span class="cline-any cline-neutral">&nbsp;</span>
780
794
  <span class="cline-any cline-neutral">&nbsp;</span>
781
795
  <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-yes">33x</span>
796
+ <span class="cline-any cline-yes">38x</span>
784
797
  <span class="cline-any cline-no">&nbsp;</span>
785
798
  <span class="cline-any cline-no">&nbsp;</span>
786
799
  <span class="cline-any cline-no">&nbsp;</span>
@@ -825,8 +838,7 @@
825
838
  <span class="cline-any cline-neutral">&nbsp;</span>
826
839
  <span class="cline-any cline-neutral">&nbsp;</span>
827
840
  <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-yes">33x</span>
841
+ <span class="cline-any cline-yes">38x</span>
830
842
  <span class="cline-any cline-no">&nbsp;</span>
831
843
  <span class="cline-any cline-no">&nbsp;</span>
832
844
  <span class="cline-any cline-no">&nbsp;</span>
@@ -838,14 +850,14 @@
838
850
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { SearchIndexes } = require("../../../db/utils")
839
851
  const fetch = require("node-fetch")
840
852
  const { getCouchUrl } = require("@budibase/backend-core/db")
853
+ const { getAppId } = require("@budibase/backend-core/context")
841
854
  &nbsp;
842
855
  /**
843
856
  * Class to build lucene query URLs.
844
857
  * Optionally takes a base lucene query object.
845
858
  */
846
859
  class QueryBuilder {
847
- <span class="fstat-no" title="function not covered" > co</span>nstructor(appId, base) {
848
- <span class="cstat-no" title="statement not covered" > this.appId = appId</span>
860
+ <span class="fstat-no" title="function not covered" > co</span>nstructor(base) {
849
861
  <span class="cstat-no" title="statement not covered" > this.query = {</span>
850
862
  string: {},
851
863
  fuzzy: {},
@@ -874,22 +886,30 @@ class QueryBuilder {
874
886
  }
875
887
  &nbsp;
876
888
  <span class="fstat-no" title="function not covered" > se</span>tLimit(limit) {
877
- <span class="cstat-no" title="statement not covered" > this.limit = limit</span>
889
+ <span class="cstat-no" title="statement not covered" > if (limit != null) {</span>
890
+ <span class="cstat-no" title="statement not covered" > this.limit = limit</span>
891
+ }
878
892
  <span class="cstat-no" title="statement not covered" > return this</span>
879
893
  }
880
894
  &nbsp;
881
895
  <span class="fstat-no" title="function not covered" > se</span>tSort(sort) {
882
- <span class="cstat-no" title="statement not covered" > this.sort = sort</span>
896
+ <span class="cstat-no" title="statement not covered" > if (sort != null) {</span>
897
+ <span class="cstat-no" title="statement not covered" > this.sort = sort</span>
898
+ }
883
899
  <span class="cstat-no" title="statement not covered" > return this</span>
884
900
  }
885
901
  &nbsp;
886
902
  <span class="fstat-no" title="function not covered" > se</span>tSortOrder(sortOrder) {
887
- <span class="cstat-no" title="statement not covered" > this.sortOrder = sortOrder</span>
903
+ <span class="cstat-no" title="statement not covered" > if (sortOrder != null) {</span>
904
+ <span class="cstat-no" title="statement not covered" > this.sortOrder = sortOrder</span>
905
+ }
888
906
  <span class="cstat-no" title="statement not covered" > return this</span>
889
907
  }
890
908
  &nbsp;
891
909
  <span class="fstat-no" title="function not covered" > se</span>tSortType(sortType) {
892
- <span class="cstat-no" title="statement not covered" > this.sortType = sortType</span>
910
+ <span class="cstat-no" title="statement not covered" > if (sortType != null) {</span>
911
+ <span class="cstat-no" title="statement not covered" > this.sortType = sortType</span>
912
+ }
893
913
  <span class="cstat-no" title="statement not covered" > return this</span>
894
914
  }
895
915
  &nbsp;
@@ -1070,7 +1090,8 @@ class QueryBuilder {
1070
1090
  }
1071
1091
  &nbsp;
1072
1092
  <span class="fstat-no" title="function not covered" > as</span>ync run() {
1073
- const url = <span class="cstat-no" title="statement not covered" >`${getCouchUrl()}/${this.appId}/_design/database/_search/${</span>
1093
+ const appId = <span class="cstat-no" title="statement not covered" >getAppId()</span>
1094
+ const url = <span class="cstat-no" title="statement not covered" >`${getCouchUrl()}/${appId}/_design/database/_search/${</span>
1074
1095
  SearchIndexes.ROWS
1075
1096
  }`
1076
1097
  const body = <span class="cstat-no" title="statement not covered" >this.buildSearchBody()</span>
@@ -1107,7 +1128,6 @@ const runQuery = <span class="fstat-no" title="function not covered" >as</span>y
1107
1128
  * Gets round the fixed limit of 200 results from a query by fetching as many
1108
1129
  * pages as required and concatenating the results. This recursively operates
1109
1130
  * until enough results have been found.
1110
- * @param appId {string} The app ID to search
1111
1131
  * @param query {object} The JSON query structure
1112
1132
  * @param params {object} The search params including:
1113
1133
  * tableId {string} The table ID to search
@@ -1120,7 +1140,7 @@ const runQuery = <span class="fstat-no" title="function not covered" >as</span>y
1120
1140
  * rows {array|null} Current results in the recursive search
1121
1141
  * @returns {Promise&lt;*[]|*&gt;}
1122
1142
  */
1123
- const recursiveSearch = <span class="fstat-no" title="function not covered" >as</span>ync (appId, query, params) =&gt; {
1143
+ const recursiveSearch = <span class="fstat-no" title="function not covered" >as</span>ync (query, params) =&gt; {
1124
1144
  const bookmark = <span class="cstat-no" title="statement not covered" >params.bookmark</span>
1125
1145
  const rows = <span class="cstat-no" title="statement not covered" >params.rows || []</span>
1126
1146
  <span class="cstat-no" title="statement not covered" > if (rows.length &gt;= params.limit) {</span>
@@ -1130,7 +1150,7 @@ const recursiveSearch = <span class="fstat-no" title="function not covered" >as<
1130
1150
  <span class="cstat-no" title="statement not covered" > if (rows.length &gt; params.limit - 200) {</span>
1131
1151
  <span class="cstat-no" title="statement not covered" > pageSize = params.limit - rows.length</span>
1132
1152
  }
1133
- const page = <span class="cstat-no" title="statement not covered" >await new QueryBuilder(appId, query)</span>
1153
+ const page = <span class="cstat-no" title="statement not covered" >await new QueryBuilder(query)</span>
1134
1154
  .setVersion(params.version)
1135
1155
  .setTable(params.tableId)
1136
1156
  .setBookmark(bookmark)
@@ -1150,14 +1170,13 @@ const recursiveSearch = <span class="fstat-no" title="function not covered" >as<
1150
1170
  bookmark: page.bookmark,
1151
1171
  rows: [...rows, ...page.rows],
1152
1172
  }
1153
- <span class="cstat-no" title="statement not covered" > return await recursiveSearch(appId, query, newParams)</span>
1173
+ <span class="cstat-no" title="statement not covered" > return await recursiveSearch(query, newParams)</span>
1154
1174
  }
1155
1175
  &nbsp;
1156
1176
  /**
1157
1177
  * Performs a paginated search. A bookmark will be returned to allow the next
1158
1178
  * page to be fetched. There is a max limit off 200 results per page in a
1159
1179
  * paginated search.
1160
- * @param appId {string} The app ID to search
1161
1180
  * @param query {object} The JSON query structure
1162
1181
  * @param params {object} The search params including:
1163
1182
  * tableId {string} The table ID to search
@@ -1169,13 +1188,13 @@ const recursiveSearch = <span class="fstat-no" title="function not covered" >as<
1169
1188
  * bookmark {string} The bookmark to resume from
1170
1189
  * @returns {Promise&lt;{hasNextPage: boolean, rows: *[]}&gt;}
1171
1190
  */
1172
- exports.paginatedSearch = <span class="fstat-no" title="function not covered" >as</span>ync (appId, query, params) =&gt; {
1191
+ exports.paginatedSearch = <span class="fstat-no" title="function not covered" >as</span>ync (query, params) =&gt; {
1173
1192
  let limit = <span class="cstat-no" title="statement not covered" >params.limit</span>
1174
1193
  <span class="cstat-no" title="statement not covered" > if (limit == null || isNaN(limit) || limit &lt; 0) {</span>
1175
1194
  <span class="cstat-no" title="statement not covered" > limit = 50</span>
1176
1195
  }
1177
1196
  <span class="cstat-no" title="statement not covered" > limit = Math.min(limit, 200)</span>
1178
- const search = <span class="cstat-no" title="statement not covered" >new QueryBuilder(appId, query)</span>
1197
+ const search = <span class="cstat-no" title="statement not covered" >new QueryBuilder(query)</span>
1179
1198
  .setVersion(params.version)
1180
1199
  .setTable(params.tableId)
1181
1200
  .setSort(params.sort)
@@ -1204,7 +1223,6 @@ exports.paginatedSearch = <span class="fstat-no" title="function not covered" >a
1204
1223
  * desired amount of results. There is a limit of 1000 results to avoid
1205
1224
  * heavy performance hits, and to avoid client components breaking from
1206
1225
  * handling too much data.
1207
- * @param appId {string} The app ID to search
1208
1226
  * @param query {object} The JSON query structure
1209
1227
  * @param params {object} The search params including:
1210
1228
  * tableId {string} The table ID to search
@@ -1215,13 +1233,13 @@ exports.paginatedSearch = <span class="fstat-no" title="function not covered" >a
1215
1233
  * limit {number} The desired number of results
1216
1234
  * @returns {Promise&lt;{rows: *}&gt;}
1217
1235
  */
1218
- exports.fullSearch = <span class="fstat-no" title="function not covered" >as</span>ync (appId, query, params) =&gt; {
1236
+ exports.fullSearch = <span class="fstat-no" title="function not covered" >as</span>ync (query, params) =&gt; {
1219
1237
  let limit = <span class="cstat-no" title="statement not covered" >params.limit</span>
1220
1238
  <span class="cstat-no" title="statement not covered" > if (limit == null || isNaN(limit) || limit &lt; 0) {</span>
1221
1239
  <span class="cstat-no" title="statement not covered" > limit = 1000</span>
1222
1240
  }
1223
1241
  <span class="cstat-no" title="statement not covered" > params.limit = Math.min(limit, 1000)</span>
1224
- const rows = <span class="cstat-no" title="statement not covered" >await recursiveSearch(appId, query, params)</span>
1242
+ const rows = <span class="cstat-no" title="statement not covered" >await recursiveSearch(query, params)</span>
1225
1243
  <span class="cstat-no" title="statement not covered" > return { rows }</span>
1226
1244
  }
1227
1245
  &nbsp;</pre></td></tr></table></pre>
@@ -1231,7 +1249,7 @@ exports.fullSearch = <span class="fstat-no" title="function not covered" >as</sp
1231
1249
  <div class='footer quiet pad2 space-top1 center small'>
1232
1250
  Code coverage generated by
1233
1251
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1234
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
1252
+ at Tue Feb 08 2022 15:32:15 GMT+0000 (Coordinated Universal Time)
1235
1253
  </div>
1236
1254
  </div>
1237
1255
  <script src="../../../prettify.js"></script>