@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">64.13% </span>
26
+ <span class="strong">63.9% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>118/184</span>
28
+ <span class='fraction'>131/205</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">41.41% </span>
33
+ <span class="strong">40% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>41/99</span>
35
+ <span class='fraction'>38/95</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">60.71% </span>
40
+ <span class="strong">58.82% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>17/28</span>
42
+ <span class='fraction'>20/34</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">64.64% </span>
47
+ <span class="strong">64.32% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>117/181</span>
49
+ <span class='fraction'>128/199</span>
50
50
  </div>
51
51
 
52
52
 
@@ -438,39 +438,99 @@
438
438
  <a name='L379'></a><a href='#L379'>379</a>
439
439
  <a name='L380'></a><a href='#L380'>380</a>
440
440
  <a name='L381'></a><a href='#L381'>381</a>
441
- <a name='L382'></a><a href='#L382'>382</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
442
- <span class="cline-any cline-yes">34x</span>
441
+ <a name='L382'></a><a href='#L382'>382</a>
442
+ <a name='L383'></a><a href='#L383'>383</a>
443
+ <a name='L384'></a><a href='#L384'>384</a>
444
+ <a name='L385'></a><a href='#L385'>385</a>
445
+ <a name='L386'></a><a href='#L386'>386</a>
446
+ <a name='L387'></a><a href='#L387'>387</a>
447
+ <a name='L388'></a><a href='#L388'>388</a>
448
+ <a name='L389'></a><a href='#L389'>389</a>
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>
456
+ <a name='L397'></a><a href='#L397'>397</a>
457
+ <a name='L398'></a><a href='#L398'>398</a>
458
+ <a name='L399'></a><a href='#L399'>399</a>
459
+ <a name='L400'></a><a href='#L400'>400</a>
460
+ <a name='L401'></a><a href='#L401'>401</a>
461
+ <a name='L402'></a><a href='#L402'>402</a>
462
+ <a name='L403'></a><a href='#L403'>403</a>
463
+ <a name='L404'></a><a href='#L404'>404</a>
464
+ <a name='L405'></a><a href='#L405'>405</a>
465
+ <a name='L406'></a><a href='#L406'>406</a>
466
+ <a name='L407'></a><a href='#L407'>407</a>
467
+ <a name='L408'></a><a href='#L408'>408</a>
468
+ <a name='L409'></a><a href='#L409'>409</a>
469
+ <a name='L410'></a><a href='#L410'>410</a>
470
+ <a name='L411'></a><a href='#L411'>411</a>
471
+ <a name='L412'></a><a href='#L412'>412</a>
472
+ <a name='L413'></a><a href='#L413'>413</a>
473
+ <a name='L414'></a><a href='#L414'>414</a>
474
+ <a name='L415'></a><a href='#L415'>415</a>
475
+ <a name='L416'></a><a href='#L416'>416</a>
476
+ <a name='L417'></a><a href='#L417'>417</a>
477
+ <a name='L418'></a><a href='#L418'>418</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
443
478
  <span class="cline-any cline-neutral">&nbsp;</span>
444
479
  <span class="cline-any cline-neutral">&nbsp;</span>
445
480
  <span class="cline-any cline-neutral">&nbsp;</span>
446
481
  <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-yes">34x</span>
448
- <span class="cline-any cline-yes">34x</span>
449
- <span class="cline-any cline-yes">34x</span>
450
- <span class="cline-any cline-yes">34x</span>
451
482
  <span class="cline-any cline-neutral">&nbsp;</span>
452
483
  <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-yes">39x</span>
485
+ <span class="cline-any cline-yes">39x</span>
486
+ <span class="cline-any cline-yes">39x</span>
453
487
  <span class="cline-any cline-neutral">&nbsp;</span>
454
488
  <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-yes">34x</span>
456
489
  <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-yes">39x</span>
457
491
  <span class="cline-any cline-neutral">&nbsp;</span>
458
492
  <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">34x</span>
460
- <span class="cline-any cline-yes">34x</span>
461
- <span class="cline-any cline-yes">34x</span>
462
493
  <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-yes">34x</span>
464
- <span class="cline-any cline-yes">99x</span>
465
- <span class="cline-any cline-yes">99x</span>
466
- <span class="cline-any cline-yes">99x</span>
467
- <span class="cline-any cline-yes">99x</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-yes">39x</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-yes">39x</span>
501
+ <span class="cline-any cline-yes">39x</span>
502
+ <span class="cline-any cline-yes">39x</span>
503
+ <span class="cline-any cline-yes">39x</span>
504
+ <span class="cline-any cline-yes">39x</span>
505
+ <span class="cline-any cline-yes">39x</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-yes">39x</span>
508
+ <span class="cline-any cline-no">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-no">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-yes">39x</span>
523
+ <span class="cline-any cline-yes">101x</span>
524
+ <span class="cline-any cline-yes">101x</span>
525
+ <span class="cline-any cline-yes">101x</span>
526
+ <span class="cline-any cline-yes">101x</span>
527
+ <span class="cline-any cline-yes">101x</span>
468
528
  <span class="cline-any cline-yes">4x</span>
469
529
  <span class="cline-any cline-yes">11x</span>
470
530
  <span class="cline-any cline-neutral">&nbsp;</span>
471
531
  <span class="cline-any cline-neutral">&nbsp;</span>
472
532
  <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-yes">99x</span>
533
+ <span class="cline-any cline-yes">101x</span>
474
534
  <span class="cline-any cline-neutral">&nbsp;</span>
475
535
  <span class="cline-any cline-yes">1x</span>
476
536
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -481,6 +541,8 @@
481
541
  <span class="cline-any cline-yes">1x</span>
482
542
  <span class="cline-any cline-yes">1x</span>
483
543
  <span class="cline-any cline-yes">1x</span>
544
+ <span class="cline-any cline-yes">1x</span>
545
+ <span class="cline-any cline-yes">1x</span>
484
546
  <span class="cline-any cline-no">&nbsp;</span>
485
547
  <span class="cline-any cline-no">&nbsp;</span>
486
548
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -489,13 +551,15 @@
489
551
  <span class="cline-any cline-neutral">&nbsp;</span>
490
552
  <span class="cline-any cline-neutral">&nbsp;</span>
491
553
  <span class="cline-any cline-yes">1x</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-yes">1x</span>
492
556
  <span class="cline-any cline-yes">1x</span>
493
557
  <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">99x</span>
558
+ <span class="cline-any cline-yes">101x</span>
495
559
  <span class="cline-any cline-neutral">&nbsp;</span>
496
560
  <span class="cline-any cline-neutral">&nbsp;</span>
497
561
  <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-yes">34x</span>
562
+ <span class="cline-any cline-yes">39x</span>
499
563
  <span class="cline-any cline-yes">4x</span>
500
564
  <span class="cline-any cline-no">&nbsp;</span>
501
565
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -515,9 +579,9 @@
515
579
  <span class="cline-any cline-yes">4x</span>
516
580
  <span class="cline-any cline-neutral">&nbsp;</span>
517
581
  <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">34x</span>
519
- <span class="cline-any cline-yes">100x</span>
520
- <span class="cline-any cline-yes">99x</span>
582
+ <span class="cline-any cline-yes">39x</span>
583
+ <span class="cline-any cline-yes">102x</span>
584
+ <span class="cline-any cline-yes">101x</span>
521
585
  <span class="cline-any cline-neutral">&nbsp;</span>
522
586
  <span class="cline-any cline-neutral">&nbsp;</span>
523
587
  <span class="cline-any cline-yes">1x</span>
@@ -556,15 +620,19 @@
556
620
  <span class="cline-any cline-neutral">&nbsp;</span>
557
621
  <span class="cline-any cline-neutral">&nbsp;</span>
558
622
  <span class="cline-any cline-yes">1x</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-yes">1x</span>
626
+ <span class="cline-any cline-yes">1x</span>
559
627
  <span class="cline-any cline-yes">1x</span>
560
628
  <span class="cline-any cline-yes">1x</span>
561
629
  <span class="cline-any cline-yes">1x</span>
562
630
  <span class="cline-any cline-neutral">&nbsp;</span>
563
631
  <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-yes">34x</span>
565
- <span class="cline-any cline-yes">99x</span>
632
+ <span class="cline-any cline-yes">39x</span>
633
+ <span class="cline-any cline-yes">101x</span>
566
634
  <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-yes">99x</span>
635
+ <span class="cline-any cline-yes">101x</span>
568
636
  <span class="cline-any cline-yes">2x</span>
569
637
  <span class="cline-any cline-yes">2x</span>
570
638
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -602,12 +670,12 @@
602
670
  <span class="cline-any cline-neutral">&nbsp;</span>
603
671
  <span class="cline-any cline-neutral">&nbsp;</span>
604
672
  <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-yes">99x</span>
673
+ <span class="cline-any cline-yes">101x</span>
606
674
  <span class="cline-any cline-neutral">&nbsp;</span>
607
675
  <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-yes">34x</span>
676
+ <span class="cline-any cline-yes">39x</span>
609
677
  <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-yes">99x</span>
678
+ <span class="cline-any cline-yes">101x</span>
611
679
  <span class="cline-any cline-yes">1x</span>
612
680
  <span class="cline-any cline-neutral">&nbsp;</span>
613
681
  <span class="cline-any cline-yes">5x</span>
@@ -615,60 +683,62 @@
615
683
  <span class="cline-any cline-neutral">&nbsp;</span>
616
684
  <span class="cline-any cline-neutral">&nbsp;</span>
617
685
  <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-yes">99x</span>
686
+ <span class="cline-any cline-yes">101x</span>
619
687
  <span class="cline-any cline-neutral">&nbsp;</span>
620
688
  <span class="cline-any cline-neutral">&nbsp;</span>
621
689
  <span class="cline-any cline-neutral">&nbsp;</span>
622
690
  <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-yes">99x</span>
624
- <span class="cline-any cline-yes">99x</span>
625
- <span class="cline-any cline-yes">99x</span>
626
- <span class="cline-any cline-yes">99x</span>
691
+ <span class="cline-any cline-yes">101x</span>
692
+ <span class="cline-any cline-yes">101x</span>
693
+ <span class="cline-any cline-yes">101x</span>
694
+ <span class="cline-any cline-yes">101x</span>
627
695
  <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-yes">99x</span>
629
- <span class="cline-any cline-yes">99x</span>
696
+ <span class="cline-any cline-yes">101x</span>
630
697
  <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-yes">99x</span>
632
698
  <span class="cline-any cline-neutral">&nbsp;</span>
633
699
  <span class="cline-any cline-neutral">&nbsp;</span>
634
700
  <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-yes">99x</span>
701
+ <span class="cline-any cline-yes">101x</span>
637
702
  <span class="cline-any cline-yes">4x</span>
638
703
  <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-yes">99x</span>
640
- <span class="cline-any cline-yes">99x</span>
704
+ <span class="cline-any cline-yes">101x</span>
705
+ <span class="cline-any cline-yes">101x</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
707
  <span class="cline-any cline-neutral">&nbsp;</span>
642
708
  <span class="cline-any cline-neutral">&nbsp;</span>
643
709
  <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-yes">101x</span>
711
+ <span class="cline-any cline-yes">101x</span>
712
+ <span class="cline-any cline-yes">101x</span>
644
713
  <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-yes">99x</span>
646
714
  <span class="cline-any cline-neutral">&nbsp;</span>
647
715
  <span class="cline-any cline-neutral">&nbsp;</span>
648
716
  <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-yes">101x</span>
718
+ <span class="cline-any cline-yes">101x</span>
719
+ <span class="cline-any cline-yes">101x</span>
649
720
  <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-yes">99x</span>
651
- <span class="cline-any cline-yes">99x</span>
652
721
  <span class="cline-any cline-neutral">&nbsp;</span>
653
722
  <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-yes">101x</span>
654
724
  <span class="cline-any cline-neutral">&nbsp;</span>
655
725
  <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-yes">99x</span>
657
- <span class="cline-any cline-yes">99x</span>
658
726
  <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-yes">39x</span>
728
+ <span class="cline-any cline-yes">207x</span>
729
+ <span class="cline-any cline-yes">207x</span>
659
730
  <span class="cline-any cline-neutral">&nbsp;</span>
660
731
  <span class="cline-any cline-neutral">&nbsp;</span>
661
732
  <span class="cline-any cline-neutral">&nbsp;</span>
662
733
  <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-yes">99x</span>
734
+ <span class="cline-any cline-yes">474x</span>
664
735
  <span class="cline-any cline-neutral">&nbsp;</span>
665
736
  <span class="cline-any cline-neutral">&nbsp;</span>
666
737
  <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-yes">99x</span>
668
738
  <span class="cline-any cline-neutral">&nbsp;</span>
669
739
  <span class="cline-any cline-neutral">&nbsp;</span>
670
740
  <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-yes">34x</span>
741
+ <span class="cline-any cline-yes">39x</span>
672
742
  <span class="cline-any cline-no">&nbsp;</span>
673
743
  <span class="cline-any cline-no">&nbsp;</span>
674
744
  <span class="cline-any cline-no">&nbsp;</span>
@@ -677,22 +747,24 @@
677
747
  <span class="cline-any cline-no">&nbsp;</span>
678
748
  <span class="cline-any cline-neutral">&nbsp;</span>
679
749
  <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-yes">34x</span>
750
+ <span class="cline-any cline-yes">39x</span>
681
751
  <span class="cline-any cline-no">&nbsp;</span>
682
752
  <span class="cline-any cline-no">&nbsp;</span>
683
753
  <span class="cline-any cline-neutral">&nbsp;</span>
684
754
  <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-yes">34x</span>
755
+ <span class="cline-any cline-yes">39x</span>
686
756
  <span class="cline-any cline-yes">30x</span>
687
757
  <span class="cline-any cline-yes">30x</span>
688
758
  <span class="cline-any cline-no">&nbsp;</span>
689
759
  <span class="cline-any cline-no">&nbsp;</span>
760
+ <span class="cline-any cline-no">&nbsp;</span>
761
+ <span class="cline-any cline-no">&nbsp;</span>
690
762
  <span class="cline-any cline-neutral">&nbsp;</span>
691
763
  <span class="cline-any cline-yes">30x</span>
692
764
  <span class="cline-any cline-neutral">&nbsp;</span>
693
765
  <span class="cline-any cline-neutral">&nbsp;</span>
694
766
  <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-yes">34x</span>
767
+ <span class="cline-any cline-yes">39x</span>
696
768
  <span class="cline-any cline-yes">1x</span>
697
769
  <span class="cline-any cline-yes">1x</span>
698
770
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -764,15 +836,15 @@
764
836
  <span class="cline-any cline-neutral">&nbsp;</span>
765
837
  <span class="cline-any cline-neutral">&nbsp;</span>
766
838
  <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-yes">34x</span>
839
+ <span class="cline-any cline-yes">39x</span>
768
840
  <span class="cline-any cline-no">&nbsp;</span>
769
841
  <span class="cline-any cline-neutral">&nbsp;</span>
770
842
  <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-yes">34x</span>
843
+ <span class="cline-any cline-yes">39x</span>
772
844
  <span class="cline-any cline-no">&nbsp;</span>
773
845
  <span class="cline-any cline-neutral">&nbsp;</span>
774
846
  <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-yes">34x</span>
847
+ <span class="cline-any cline-yes">39x</span>
776
848
  <span class="cline-any cline-no">&nbsp;</span>
777
849
  <span class="cline-any cline-neutral">&nbsp;</span>
778
850
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -784,7 +856,7 @@
784
856
  <span class="cline-any cline-no">&nbsp;</span>
785
857
  <span class="cline-any cline-neutral">&nbsp;</span>
786
858
  <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-yes">34x</span>
859
+ <span class="cline-any cline-yes">39x</span>
788
860
  <span class="cline-any cline-no">&nbsp;</span>
789
861
  <span class="cline-any cline-neutral">&nbsp;</span>
790
862
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -801,9 +873,9 @@
801
873
  <span class="cline-any cline-no">&nbsp;</span>
802
874
  <span class="cline-any cline-neutral">&nbsp;</span>
803
875
  <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">34x</span>
805
- <span class="cline-any cline-yes">99x</span>
806
- <span class="cline-any cline-yes">95x</span>
876
+ <span class="cline-any cline-yes">39x</span>
877
+ <span class="cline-any cline-yes">101x</span>
878
+ <span class="cline-any cline-yes">97x</span>
807
879
  <span class="cline-any cline-neutral">&nbsp;</span>
808
880
  <span class="cline-any cline-yes">4x</span>
809
881
  <span class="cline-any cline-yes">11x</span>
@@ -818,17 +890,21 @@
818
890
  <span class="cline-any cline-yes">4x</span>
819
891
  <span class="cline-any cline-neutral">&nbsp;</span>
820
892
  <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-yes">34x</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../../db")
823
- const csvParser = require("../../../utilities/csvParser")
893
+ <span class="cline-any cline-yes">39x</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const csvParser = require("../../../utilities/csvParser")
824
895
  const {
825
896
  getRowParams,
826
897
  generateRowID,
827
898
  InternalTables,
899
+ getTableParams,
900
+ BudibaseInternalDB,
828
901
  } = require("../../../db/utils")
829
- const { isEqual } = require("lodash/fp")
902
+ const { isEqual } = require("lodash")
830
903
  const { AutoFieldSubTypes, FieldTypes } = require("../../../constants")
831
- const { inputProcessing } = require("../../../utilities/rowProcessor")
904
+ const {
905
+ inputProcessing,
906
+ cleanupAttachments,
907
+ } = require("../../../utilities/rowProcessor")
832
908
  const {
833
909
  USERS_TABLE_SCHEMA,
834
910
  SwitchableTypes,
@@ -837,11 +913,31 @@ const {
837
913
  const {
838
914
  isExternalTable,
839
915
  breakExternalTableId,
916
+ isSQL,
840
917
  } = require("../../../integrations/utils")
841
918
  const { getViews, saveView } = require("../view/utils")
842
919
  const viewTemplate = require("../view/viewBuilder")
920
+ const usageQuota = require("../../../utilities/usageQuota")
921
+ const { getAppDB } = require("@budibase/backend-core/context")
922
+ const { cloneDeep } = require("lodash/fp")
843
923
  &nbsp;
844
- exports.checkForColumnUpdates = async (db, oldTable, updatedTable) =&gt; {
924
+ exports.clearColumns = <span class="fstat-no" title="function not covered" >as</span>ync (table, columnNames) =&gt; {
925
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
926
+ const rows = <span class="cstat-no" title="statement not covered" >await db.allDocs(</span>
927
+ getRowParams(table._id, null, {
928
+ include_docs: true,
929
+ })
930
+ )
931
+ <span class="cstat-no" title="statement not covered" > return db.bulkDocs(</span>
932
+ rows.rows.map(<span class="fstat-no" title="function not covered" >({</span> doc }) =&gt; {
933
+ <span class="cstat-no" title="statement not covered" > columnNames.forEach(<span class="fstat-no" title="function not covered" >co</span>lName =&gt; <span class="cstat-no" title="statement not covered" >delete doc[colName])</span></span>
934
+ <span class="cstat-no" title="statement not covered" > return doc</span>
935
+ })
936
+ )
937
+ }
938
+ &nbsp;
939
+ exports.checkForColumnUpdates = async (oldTable, updatedTable) =&gt; {
940
+ const db = getAppDB()
845
941
  let updatedRows = []
846
942
  const rename = updatedTable._rename
847
943
  let deletedColumns = []
@@ -858,18 +954,22 @@ exports.checkForColumnUpdates = async (db, oldTable, updatedTable) =&gt; {
858
954
  include_docs: true,
859
955
  })
860
956
  )
861
- updatedRows = rows.rows.map(({ doc }) =&gt; {
957
+ const rawRows = rows.rows.map(({ doc }) =&gt; doc)
958
+ updatedRows = rawRows.map(row =&gt; {
959
+ row = cloneDeep(row)
862
960
  if (rename) {
863
- doc[rename.updated] = doc[rename.old]
864
- delete doc[rename.old]
961
+ row[rename.updated] = row[rename.old]
962
+ delete row[rename.old]
865
963
  } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (deletedColumns.length !== 0) {</span>
866
- <span class="cstat-no" title="statement not covered" > deletedColumns.forEach(<span class="fstat-no" title="function not covered" >co</span>lName =&gt; <span class="cstat-no" title="statement not covered" >delete doc[colName])</span></span>
964
+ <span class="cstat-no" title="statement not covered" > deletedColumns.forEach(<span class="fstat-no" title="function not covered" >co</span>lName =&gt; <span class="cstat-no" title="statement not covered" >delete row[colName])</span></span>
867
965
  }
868
- return doc
966
+ return row
869
967
  })
870
968
  &nbsp;
969
+ // cleanup any attachments from object storage for deleted attachment columns
970
+ await cleanupAttachments(updatedTable, { oldTable, rows: rawRows })
871
971
  // Update views
872
- await exports.checkForViewUpdates(db, updatedTable, rename, deletedColumns)
972
+ await exports.checkForViewUpdates(updatedTable, rename, deletedColumns)
873
973
  delete updatedTable._rename
874
974
  }
875
975
  return { rows: updatedRows, table: updatedTable }
@@ -896,12 +996,12 @@ exports.makeSureTableUpToDate = (table, tableToSave) =&gt; {
896
996
  return tableToSave
897
997
  }
898
998
  &nbsp;
899
- exports.handleDataImport = async (appId, user, table, dataImport) =&gt; {
999
+ exports.handleDataImport = async (user, table, dataImport) =&gt; {
900
1000
  if (!dataImport || !dataImport.csvString) {
901
1001
  return table
902
1002
  }
903
1003
  &nbsp;
904
- const db = new CouchDB(appId)
1004
+ const db = getAppDB()
905
1005
  // Populate the table with rows imported from CSV in a bulk update
906
1006
  const data = await csvParser.transform({
907
1007
  ...dataImport,
@@ -936,14 +1036,18 @@ exports.handleDataImport = async (appId, user, table, dataImport) =&gt; {
936
1036
  finalData.push(row)
937
1037
  }
938
1038
  &nbsp;
1039
+ await usageQuota.update(usageQuota.Properties.ROW, finalData.length, {
1040
+ dryRun: true,
1041
+ })
939
1042
  await db.bulkDocs(finalData)
1043
+ await usageQuota.update(usageQuota.Properties.ROW, finalData.length)
940
1044
  let response = await db.put(table)
941
1045
  table._rev = response._rev
942
1046
  return table
943
1047
  }
944
1048
  &nbsp;
945
- exports.handleSearchIndexes = async (appId, table) =&gt; {
946
- const db = new CouchDB(appId)
1049
+ exports.handleSearchIndexes = async table =&gt; {
1050
+ const db = getAppDB()
947
1051
  // create relevant search indexes
948
1052
  if (table.indexes &amp;&amp; table.indexes.length &gt; 0) {
949
1053
  const currentIndexes = await db.getIndexes()
@@ -1000,12 +1104,9 @@ exports.checkStaticTables = table =&gt; {
1000
1104
  }
1001
1105
  &nbsp;
1002
1106
  class TableSaveFunctions {
1003
- constructor({ db, ctx, oldTable, dataImport }) {
1004
- this.db = db
1005
- this.ctx = ctx
1006
- if (this.ctx &amp;&amp; this.ctx.user) {
1007
- this.appId = this.ctx.appId
1008
- }
1107
+ constructor({ user, oldTable, dataImport }) {
1108
+ this.db = getAppDB()
1109
+ this.user = user
1009
1110
  this.oldTable = oldTable
1010
1111
  this.dataImport = dataImport
1011
1112
  // any rows that need updated
@@ -1023,24 +1124,15 @@ class TableSaveFunctions {
1023
1124
  &nbsp;
1024
1125
  // when confirmed valid
1025
1126
  async mid(table) {
1026
- let response = await exports.checkForColumnUpdates(
1027
- this.db,
1028
- this.oldTable,
1029
- table
1030
- )
1127
+ let response = await exports.checkForColumnUpdates(this.oldTable, table)
1031
1128
  this.rows = this.rows.concat(response.rows)
1032
1129
  return table
1033
1130
  }
1034
1131
  &nbsp;
1035
1132
  // after saving
1036
1133
  async after(table) {
1037
- table = await exports.handleSearchIndexes(this.appId, table)
1038
- table = await exports.handleDataImport(
1039
- this.appId,
1040
- this.ctx.user,
1041
- table,
1042
- this.dataImport
1043
- )
1134
+ table = await exports.handleSearchIndexes(table)
1135
+ table = await exports.handleDataImport(this.user, table, this.dataImport)
1044
1136
  return table
1045
1137
  }
1046
1138
  &nbsp;
@@ -1049,8 +1141,22 @@ class TableSaveFunctions {
1049
1141
  }
1050
1142
  }
1051
1143
  &nbsp;
1052
- exports.getAllExternalTables = <span class="fstat-no" title="function not covered" >as</span>ync (appId, datasourceId) =&gt; {
1053
- const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
1144
+ exports.getAllInternalTables = async () =&gt; {
1145
+ const db = getAppDB()
1146
+ const internalTables = await db.allDocs(
1147
+ getTableParams(null, {
1148
+ include_docs: true,
1149
+ })
1150
+ )
1151
+ return internalTables.rows.map(tableDoc =&gt; ({
1152
+ ...tableDoc.doc,
1153
+ type: "internal",
1154
+ sourceId: BudibaseInternalDB._id,
1155
+ }))
1156
+ }
1157
+ &nbsp;
1158
+ exports.getAllExternalTables = <span class="fstat-no" title="function not covered" >as</span>ync datasourceId =&gt; {
1159
+ const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
1054
1160
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
1055
1161
  <span class="cstat-no" title="statement not covered" > if (!datasource || !datasource.entities) {</span>
1056
1162
  <span class="cstat-no" title="statement not covered" > throw "Datasource is not configured fully."</span>
@@ -1058,23 +1164,25 @@ exports.getAllExternalTables = <span class="fstat-no" title="function not covere
1058
1164
  <span class="cstat-no" title="statement not covered" > return datasource.entities</span>
1059
1165
  }
1060
1166
  &nbsp;
1061
- exports.getExternalTable = <span class="fstat-no" title="function not covered" >as</span>ync (appId, datasourceId, tableName) =&gt; {
1062
- const entities = <span class="cstat-no" title="statement not covered" >await exports.getAllExternalTables(appId, datasourceId)</span>
1167
+ exports.getExternalTable = <span class="fstat-no" title="function not covered" >as</span>ync (datasourceId, tableName) =&gt; {
1168
+ const entities = <span class="cstat-no" title="statement not covered" >await exports.getAllExternalTables(datasourceId)</span>
1063
1169
  <span class="cstat-no" title="statement not covered" > return entities[tableName]</span>
1064
1170
  }
1065
1171
  &nbsp;
1066
- exports.getTable = async (appId, tableId) =&gt; {
1067
- const db = new CouchDB(appId)
1172
+ exports.getTable = async tableId =&gt; {
1173
+ const db = getAppDB()
1068
1174
  <span class="missing-if-branch" title="if path not taken" >I</span>if (isExternalTable(tableId)) {
1069
1175
  let { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
1070
- <span class="cstat-no" title="statement not covered" > return exports.getExternalTable(appId, datasourceId, tableName)</span>
1176
+ const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
1177
+ const table = <span class="cstat-no" title="statement not covered" >await exports.getExternalTable(datasourceId, tableName)</span>
1178
+ <span class="cstat-no" title="statement not covered" > return { ...table, sql: isSQL(datasource) }</span>
1071
1179
  } else {
1072
1180
  return db.get(tableId)
1073
1181
  }
1074
1182
  }
1075
1183
  &nbsp;
1076
- exports.checkForViewUpdates = async (db, table, rename, deletedColumns) =&gt; {
1077
- const views = await getViews(db)
1184
+ exports.checkForViewUpdates = async (table, rename, deletedColumns) =&gt; {
1185
+ const views = await getViews()
1078
1186
  const tableViews = views.filter(<span class="fstat-no" title="function not covered" >vi</span>ew =&gt; <span class="cstat-no" title="statement not covered" >view.meta.tableId === table._id)</span>
1079
1187
  &nbsp;
1080
1188
  // Check each table view to see if impacted by this table action
@@ -1136,7 +1244,7 @@ exports.checkForViewUpdates = async (db, table, rename, deletedColumns) =&gt; {
1136
1244
  // Update view if required
1137
1245
  <span class="cstat-no" title="statement not covered" > if (needsUpdated) {</span>
1138
1246
  const newViewTemplate = <span class="cstat-no" title="statement not covered" >viewTemplate(view.meta)</span>
1139
- <span class="cstat-no" title="statement not covered" > await saveView(db, null, view.name, newViewTemplate)</span>
1247
+ <span class="cstat-no" title="statement not covered" > await saveView(null, view.name, newViewTemplate)</span>
1140
1248
  <span class="cstat-no" title="statement not covered" > if (!newViewTemplate.meta.schema) {</span>
1141
1249
  <span class="cstat-no" title="statement not covered" > newViewTemplate.meta.schema = table.schema</span>
1142
1250
  }
@@ -1207,7 +1315,7 @@ exports.TableSaveFunctions = TableSaveFunctions
1207
1315
  <div class='footer quiet pad2 space-top1 center small'>
1208
1316
  Code coverage generated by
1209
1317
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1210
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
1318
+ at Mon Feb 07 2022 20:42:11 GMT+0000 (Coordinated Universal Time)
1211
1319
  </div>
1212
1320
  </div>
1213
1321
  <script src="../../../prettify.js"></script>
@@ -181,7 +181,7 @@ exports.downloadTemplate = async function (ctx) {
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
184
- at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
184
+ at Mon Feb 07 2022 20:42:11 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>