@budibase/server 1.0.49-alpha.1 → 1.0.49-alpha.13

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 (353) 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.ba78c49d.css → index.83c0944f.css} +1 -1
  8. package/builder/assets/{index.ed1cf508.js → index.f686d3cd.js} +184 -184
  9. package/builder/index.html +2 -2
  10. package/coverage/clover.xml +2656 -2712
  11. package/coverage/coverage-final.json +104 -105
  12. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/application.js.html +157 -136
  15. package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
  16. package/coverage/lcov-report/api/controllers/automation.js.html +39 -69
  17. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
  19. package/coverage/lcov-report/api/controllers/component.js.html +10 -13
  20. package/coverage/lcov-report/api/controllers/datasource.js.html +31 -37
  21. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  22. package/coverage/lcov-report/api/controllers/index.html +69 -54
  23. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  25. package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
  26. package/coverage/lcov-report/{migrations/usageQuotas/syncApps.js.html → api/controllers/migrations.js.html} +30 -45
  27. package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
  28. package/coverage/lcov-report/api/controllers/query/index.html +10 -10
  29. package/coverage/lcov-report/api/controllers/query/index.js.html +38 -35
  30. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  31. package/coverage/lcov-report/api/controllers/role.js.html +16 -16
  32. package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
  33. package/coverage/lcov-report/api/controllers/row/external.js.html +48 -141
  34. package/coverage/lcov-report/api/controllers/row/index.html +28 -28
  35. package/coverage/lcov-report/api/controllers/row/index.js.html +13 -13
  36. package/coverage/lcov-report/api/controllers/row/internal.js.html +60 -105
  37. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +25 -31
  38. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +21 -24
  39. package/coverage/lcov-report/api/controllers/row/utils.js.html +27 -24
  40. package/coverage/lcov-report/api/controllers/screen.js.html +15 -21
  41. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  42. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +27 -57
  43. package/coverage/lcov-report/api/controllers/table/external.js.html +25 -34
  44. package/coverage/lcov-report/api/controllers/table/index.html +37 -37
  45. package/coverage/lcov-report/api/controllers/table/index.js.html +20 -20
  46. package/coverage/lcov-report/api/controllers/table/internal.js.html +45 -54
  47. package/coverage/lcov-report/api/controllers/table/utils.js.html +67 -103
  48. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/user.js.html +43 -52
  50. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  51. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  52. package/coverage/lcov-report/api/controllers/view/index.js.html +27 -33
  53. package/coverage/lcov-report/api/controllers/view/utils.js.html +35 -20
  54. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  55. package/coverage/lcov-report/api/controllers/webhook.js.html +34 -28
  56. package/coverage/lcov-report/api/index.html +1 -1
  57. package/coverage/lcov-report/api/index.js.html +3 -3
  58. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/index.html +22 -7
  70. package/coverage/lcov-report/api/routes/index.js.html +10 -4
  71. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  74. package/coverage/lcov-report/{migrations/usageQuotas/index.js.html → api/routes/migrations.js.html} +25 -55
  75. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  87. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/actions.js.html +24 -24
  89. package/coverage/lcov-report/automations/automationUtils.js.html +7 -10
  90. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  91. package/coverage/lcov-report/automations/index.html +18 -18
  92. package/coverage/lcov-report/automations/index.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  94. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -10
  95. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  96. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  97. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  98. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  99. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  101. package/coverage/lcov-report/automations/steps/index.html +1 -1
  102. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  103. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  104. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  105. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  106. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  107. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  108. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  109. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  110. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  111. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  114. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  115. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  119. package/coverage/lcov-report/automations/triggers.js.html +61 -55
  120. package/coverage/lcov-report/automations/utils.js.html +54 -42
  121. package/coverage/lcov-report/constants/index.html +1 -1
  122. package/coverage/lcov-report/constants/index.js.html +26 -26
  123. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  124. package/coverage/lcov-report/constants/screens.js.html +4 -4
  125. package/coverage/lcov-report/db/client.js.html +18 -18
  126. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  127. package/coverage/lcov-report/db/index.html +1 -1
  128. package/coverage/lcov-report/db/index.js.html +3 -3
  129. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +15 -27
  130. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  131. package/coverage/lcov-report/db/linkedRows/index.js.html +40 -82
  132. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +40 -40
  133. package/coverage/lcov-report/db/newid.js.html +4 -4
  134. package/coverage/lcov-report/db/utils.js.html +74 -74
  135. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  136. package/coverage/lcov-report/events/index.html +1 -1
  137. package/coverage/lcov-report/events/index.js.html +5 -5
  138. package/coverage/lcov-report/events/utils.js.html +3 -3
  139. package/coverage/lcov-report/index.html +97 -112
  140. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  141. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  142. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  143. package/coverage/lcov-report/middleware/authorized.js.html +21 -15
  144. package/coverage/lcov-report/middleware/builder.js.html +3 -3
  145. package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
  146. package/coverage/lcov-report/middleware/index.html +28 -28
  147. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  148. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  149. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  150. package/coverage/lcov-report/middleware/usageQuota.js.html +29 -35
  151. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  152. package/coverage/lcov-report/threads/automation.js.html +30 -24
  153. package/coverage/lcov-report/threads/index.html +25 -25
  154. package/coverage/lcov-report/threads/index.js.html +10 -10
  155. package/coverage/lcov-report/threads/query.js.html +26 -47
  156. package/coverage/lcov-report/threads/utils.js.html +14 -14
  157. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  158. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  159. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  160. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  161. package/coverage/lcov-report/utilities/global.js.html +57 -48
  162. package/coverage/lcov-report/utilities/index.html +27 -27
  163. package/coverage/lcov-report/utilities/index.js.html +42 -72
  164. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  165. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  166. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  167. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  168. package/coverage/lcov-report/utilities/rowProcessor/index.html +11 -11
  169. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +32 -74
  170. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +4 -4
  171. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  172. package/coverage/lcov-report/utilities/security.js.html +8 -8
  173. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  174. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  175. package/coverage/lcov-report/utilities/usageQuota/index.js.html +13 -10
  176. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
  177. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  178. package/coverage/lcov-report/utilities/users.js.html +9 -9
  179. package/coverage/lcov-report/utilities/workerRequests.js.html +16 -16
  180. package/coverage/lcov.info +4018 -4092
  181. package/dist/api/controllers/application.js +49 -48
  182. package/dist/api/controllers/auth.js +4 -5
  183. package/dist/api/controllers/automation.js +14 -19
  184. package/dist/api/controllers/cloud.js +2 -3
  185. package/dist/api/controllers/component.js +3 -4
  186. package/dist/api/controllers/datasource.js +9 -10
  187. package/dist/api/controllers/deploy/Deployment.js +3 -6
  188. package/dist/api/controllers/deploy/index.js +12 -13
  189. package/dist/api/controllers/dev.js +5 -5
  190. package/dist/api/controllers/layout.js +3 -3
  191. package/dist/api/controllers/metadata.js +4 -4
  192. package/dist/api/controllers/migrations.js +21 -0
  193. package/dist/api/controllers/permission.js +4 -4
  194. package/dist/api/controllers/query/import/index.js +4 -6
  195. package/dist/api/controllers/query/index.js +11 -10
  196. package/dist/api/controllers/role.js +5 -5
  197. package/dist/api/controllers/routing.js +5 -6
  198. package/dist/api/controllers/row/ExternalRequest.js +90 -67
  199. package/dist/api/controllers/row/external.js +14 -22
  200. package/dist/api/controllers/row/internal.js +29 -44
  201. package/dist/api/controllers/row/internalSearch.js +11 -13
  202. package/dist/api/controllers/row/staticFormula.js +11 -11
  203. package/dist/api/controllers/row/utils.js +7 -6
  204. package/dist/api/controllers/screen.js +5 -7
  205. package/dist/api/controllers/static/index.js +4 -4
  206. package/dist/api/controllers/table/bulkFormula.js +14 -15
  207. package/dist/api/controllers/table/external.js +7 -10
  208. package/dist/api/controllers/table/index.js +5 -5
  209. package/dist/api/controllers/table/internal.js +16 -19
  210. package/dist/api/controllers/table/utils.js +29 -31
  211. package/dist/api/controllers/user.js +16 -20
  212. package/dist/api/controllers/view/index.js +8 -10
  213. package/dist/api/controllers/view/utils.js +9 -4
  214. package/dist/api/controllers/webhook.js +10 -8
  215. package/dist/api/routes/index.js +2 -0
  216. package/dist/api/routes/migrations.js +9 -0
  217. package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
  218. package/dist/app.js +35 -5
  219. package/dist/automations/automationUtils.js +2 -3
  220. package/dist/automations/steps/createRow.js +1 -1
  221. package/dist/automations/steps/updateRow.js +1 -1
  222. package/dist/automations/triggers.js +27 -25
  223. package/dist/automations/utils.js +10 -5
  224. package/dist/db/linkedRows/LinkController.js +3 -7
  225. package/dist/db/linkedRows/index.js +16 -26
  226. package/dist/db/linkedRows/linkUtils.js +6 -6
  227. package/dist/db/views/staticViews.js +9 -10
  228. package/dist/environment.js +3 -1
  229. package/dist/integrations/base/sql.js +49 -15
  230. package/dist/integrations/utils.js +3 -0
  231. package/dist/middleware/authorized.js +5 -3
  232. package/dist/middleware/builder.js +2 -2
  233. package/dist/middleware/currentapp.js +41 -37
  234. package/dist/middleware/usageQuota.js +2 -4
  235. package/dist/migrations/functions/appUrls.js +46 -0
  236. package/dist/migrations/functions/quotas1.js +50 -0
  237. package/dist/migrations/{usageQuotas → functions/usageQuotas}/index.js +6 -10
  238. package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncApps.js +12 -9
  239. package/dist/migrations/{usageQuotas → functions/usageQuotas}/syncRows.js +16 -12
  240. package/dist/migrations/functions/userEmailViewCasing.js +24 -0
  241. package/dist/migrations/index.js +62 -0
  242. package/dist/package.json +4 -4
  243. package/dist/tests/utilities/TestConfiguration.js +70 -44
  244. package/dist/threads/automation.js +13 -11
  245. package/dist/threads/query.js +13 -19
  246. package/dist/tsconfig.tsbuildinfo +1 -1
  247. package/dist/utilities/fileSystem/index.js +4 -3
  248. package/dist/utilities/global.js +15 -12
  249. package/dist/utilities/index.js +7 -17
  250. package/dist/utilities/routing/index.js +5 -5
  251. package/dist/utilities/rowProcessor/index.js +9 -10
  252. package/dist/utilities/usageQuota/index.js +1 -0
  253. package/dist/utilities/usageQuota/rows.js +1 -0
  254. package/dist/utilities/users.js +3 -3
  255. package/dist/utilities/workerRequests.js +4 -4
  256. package/package.json +5 -5
  257. package/scripts/integrations/mssql/data/Dockerfile +1 -1
  258. package/scripts/integrations/mssql/data/setup.sql +17 -4
  259. package/scripts/integrations/postgres/init.sql +11 -6
  260. package/scripts/likeCypress.ts +1 -1
  261. package/src/api/controllers/application.js +38 -31
  262. package/src/api/controllers/auth.js +4 -5
  263. package/src/api/controllers/automation.js +13 -23
  264. package/src/api/controllers/cloud.js +2 -3
  265. package/src/api/controllers/component.js +3 -4
  266. package/src/api/controllers/datasource.js +9 -11
  267. package/src/api/controllers/deploy/Deployment.js +3 -7
  268. package/src/api/controllers/deploy/index.js +20 -13
  269. package/src/api/controllers/dev.js +5 -5
  270. package/src/api/controllers/layout.js +3 -3
  271. package/src/api/controllers/metadata.js +4 -9
  272. package/src/api/controllers/migrations.js +13 -0
  273. package/src/api/controllers/permission.js +4 -4
  274. package/src/api/controllers/query/import/index.ts +4 -6
  275. package/src/api/controllers/query/import/tests/index.spec.js +2 -1
  276. package/src/api/controllers/query/index.js +11 -10
  277. package/src/api/controllers/role.js +5 -5
  278. package/src/api/controllers/routing.js +5 -6
  279. package/src/api/controllers/row/ExternalRequest.ts +67 -43
  280. package/src/api/controllers/row/external.js +27 -58
  281. package/src/api/controllers/row/internal.js +29 -44
  282. package/src/api/controllers/row/internalSearch.js +11 -13
  283. package/src/api/controllers/row/staticFormula.js +10 -11
  284. package/src/api/controllers/row/utils.js +7 -6
  285. package/src/api/controllers/screen.js +5 -7
  286. package/src/api/controllers/static/index.js +4 -4
  287. package/src/api/controllers/table/bulkFormula.js +13 -23
  288. package/src/api/controllers/table/external.js +7 -10
  289. package/src/api/controllers/table/index.js +5 -5
  290. package/src/api/controllers/table/internal.js +18 -21
  291. package/src/api/controllers/table/utils.js +29 -41
  292. package/src/api/controllers/user.js +17 -20
  293. package/src/api/controllers/view/index.js +8 -10
  294. package/src/api/controllers/view/utils.js +9 -4
  295. package/src/api/controllers/webhook.js +10 -8
  296. package/src/api/routes/index.js +2 -0
  297. package/src/api/routes/migrations.js +14 -0
  298. package/src/api/routes/tests/automation.spec.js +1 -0
  299. package/src/api/routes/tests/misc.spec.js +0 -1
  300. package/src/api/routes/tests/routing.spec.js +21 -12
  301. package/src/api/routes/tests/row.spec.js +7 -4
  302. package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
  303. package/src/app.ts +18 -5
  304. package/src/automations/automationUtils.js +2 -3
  305. package/src/automations/steps/createRow.js +0 -1
  306. package/src/automations/steps/updateRow.js +1 -1
  307. package/src/automations/triggers.js +33 -31
  308. package/src/automations/utils.js +9 -5
  309. package/src/db/linkedRows/LinkController.js +3 -7
  310. package/src/db/linkedRows/index.js +16 -30
  311. package/src/db/linkedRows/linkUtils.js +6 -6
  312. package/src/db/tests/linkController.spec.js +0 -1
  313. package/src/db/tests/linkTests.spec.js +5 -6
  314. package/src/db/views/staticViews.js +8 -10
  315. package/src/environment.js +3 -1
  316. package/src/integrations/base/sql.ts +61 -22
  317. package/src/integrations/utils.ts +4 -1
  318. package/src/middleware/authorized.js +5 -3
  319. package/src/middleware/builder.js +2 -2
  320. package/src/middleware/currentapp.js +50 -46
  321. package/src/middleware/tests/authorized.spec.js +7 -2
  322. package/src/middleware/tests/currentapp.spec.js +6 -0
  323. package/src/middleware/usageQuota.js +2 -4
  324. package/src/migrations/functions/appUrls.ts +34 -0
  325. package/src/migrations/functions/quotas1.ts +20 -0
  326. package/src/migrations/functions/tests/appUrls.spec.js +29 -0
  327. package/src/migrations/{tests/usageQuotas/index.spec.js → functions/tests/quotas1.spec.js} +5 -5
  328. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +25 -0
  329. package/src/migrations/functions/usageQuotas/index.ts +8 -0
  330. package/src/migrations/{usageQuotas/syncApps.js → functions/usageQuotas/syncApps.ts} +6 -6
  331. package/src/migrations/functions/usageQuotas/syncRows.ts +22 -0
  332. package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncApps.spec.js +4 -4
  333. package/src/migrations/{tests/usageQuotas → functions/usageQuotas/tests}/syncRows.spec.js +4 -4
  334. package/src/migrations/functions/userEmailViewCasing.ts +13 -0
  335. package/src/migrations/index.ts +56 -0
  336. package/src/module.d.ts +3 -0
  337. package/src/tests/utilities/TestConfiguration.js +73 -50
  338. package/src/threads/automation.js +17 -15
  339. package/src/threads/query.js +14 -21
  340. package/src/utilities/fileSystem/index.js +4 -3
  341. package/src/utilities/global.js +15 -12
  342. package/src/utilities/index.js +7 -17
  343. package/src/utilities/routing/index.js +5 -5
  344. package/src/utilities/rowProcessor/index.js +9 -23
  345. package/src/utilities/usageQuota/index.js +1 -0
  346. package/src/utilities/usageQuota/rows.js +1 -0
  347. package/src/utilities/users.js +3 -3
  348. package/src/utilities/workerRequests.js +4 -4
  349. package/tsconfig.json +2 -1
  350. package/coverage/lcov-report/migrations/usageQuotas/index.html +0 -141
  351. package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +0 -143
  352. package/src/migrations/usageQuotas/index.js +0 -24
  353. package/src/migrations/usageQuotas/syncRows.js +0 -21
@@ -2,7 +2,8 @@
2
2
  function isTest() {
3
3
  return (process.env.NODE_ENV === "jest" ||
4
4
  process.env.NODE_ENV === "cypress" ||
5
- process.env.JEST_WORKER_ID != null);
5
+ (process.env.JEST_WORKER_ID != null &&
6
+ process.env.JEST_WORKER_ID !== "null"));
6
7
  }
7
8
  function isDev() {
8
9
  return (process.env.NODE_ENV !== "production" &&
@@ -35,6 +36,7 @@ module.exports = {
35
36
  REDIS_PASSWORD: process.env.REDIS_PASSWORD,
36
37
  INTERNAL_API_KEY: process.env.INTERNAL_API_KEY,
37
38
  MULTI_TENANCY: process.env.MULTI_TENANCY,
39
+ HTTP_MIGRATIONS: process.env.HTTP_MIGRATIONS,
38
40
  // environment
39
41
  NODE_ENV: process.env.NODE_ENV,
40
42
  JEST_WORKER_ID: process.env.JEST_WORKER_ID,
@@ -159,15 +159,14 @@ class InternalBuilder {
159
159
  addSorting(query, json) {
160
160
  var _a;
161
161
  let { sort, paginate } = json;
162
- if (!sort) {
163
- return query;
164
- }
165
162
  const table = (_a = json.meta) === null || _a === void 0 ? void 0 : _a.table;
166
- for (let [key, value] of Object.entries(sort)) {
167
- const direction = value === datasource_1.SortDirection.ASCENDING ? "asc" : "desc";
168
- query = query.orderBy(`${table === null || table === void 0 ? void 0 : table.name}.${key}`, direction);
163
+ if (sort) {
164
+ for (let [key, value] of Object.entries(sort)) {
165
+ const direction = value === datasource_1.SortDirection.ASCENDING ? "asc" : "desc";
166
+ query = query.orderBy(`${table === null || table === void 0 ? void 0 : table.name}.${key}`, direction);
167
+ }
169
168
  }
170
- if (this.client === utils_1.SqlClients.MS_SQL && !sort && (paginate === null || paginate === void 0 ? void 0 : paginate.limit)) {
169
+ else if (this.client === utils_1.SqlClients.MS_SQL && (paginate === null || paginate === void 0 ? void 0 : paginate.limit)) {
171
170
  // @ts-ignore
172
171
  query = query.orderBy(`${table === null || table === void 0 ? void 0 : table.name}.${table === null || table === void 0 ? void 0 : table.primary[0]}`);
173
172
  }
@@ -177,20 +176,55 @@ class InternalBuilder {
177
176
  if (!relationships) {
178
177
  return query;
179
178
  }
179
+ const tableSets = {};
180
+ // aggregate into table sets (all the same to tables)
180
181
  for (let relationship of relationships) {
181
- const from = relationship.from, to = relationship.to, toTable = relationship.tableName;
182
- if (!relationship.through) {
182
+ const keyObj = {
183
+ toTable: relationship.tableName,
184
+ throughTable: undefined,
185
+ };
186
+ if (relationship.through) {
187
+ keyObj.throughTable = relationship.through;
188
+ }
189
+ const key = JSON.stringify(keyObj);
190
+ if (tableSets[key]) {
191
+ tableSets[key].push(relationship);
192
+ }
193
+ else {
194
+ tableSets[key] = [relationship];
195
+ }
196
+ }
197
+ for (let [key, relationships] of Object.entries(tableSets)) {
198
+ const { toTable, throughTable } = JSON.parse(key);
199
+ if (!throughTable) {
183
200
  // @ts-ignore
184
- query = query.leftJoin(toTable, `${fromTable}.${from}`, `${toTable}.${to}`);
201
+ query = query.join(toTable, function () {
202
+ for (let relationship of relationships) {
203
+ const from = relationship.from, to = relationship.to;
204
+ // @ts-ignore
205
+ this.orOn(`${fromTable}.${from}`, "=", `${toTable}.${to}`);
206
+ }
207
+ }, "left");
185
208
  }
186
209
  else {
187
- const throughTable = relationship.through;
188
- const fromPrimary = relationship.fromPrimary;
189
- const toPrimary = relationship.toPrimary;
190
210
  query = query
191
211
  // @ts-ignore
192
- .leftJoin(throughTable, `${fromTable}.${fromPrimary}`, `${throughTable}.${from}`)
193
- .leftJoin(toTable, `${toTable}.${toPrimary}`, `${throughTable}.${to}`);
212
+ .join(throughTable, function () {
213
+ for (let relationship of relationships) {
214
+ const fromPrimary = relationship.fromPrimary;
215
+ const from = relationship.from;
216
+ // @ts-ignore
217
+ this.orOn(`${fromTable}.${fromPrimary}`, "=", `${throughTable}.${from}`);
218
+ }
219
+ }, "left")
220
+ .join(toTable, function () {
221
+ for (let relationship of relationships) {
222
+ const toPrimary = relationship.toPrimary;
223
+ const to = relationship.to;
224
+ // @ts-ignore
225
+ this.orOn(`${toTable}.${toPrimary}`, `${throughTable}.${to}`);
226
+ }
227
+ }, "left");
194
228
  }
195
229
  }
196
230
  return query.limit(BASE_LIMIT);
@@ -52,6 +52,9 @@ function buildExternalTableId(datasourceId, tableName) {
52
52
  }
53
53
  exports.buildExternalTableId = buildExternalTableId;
54
54
  function breakExternalTableId(tableId) {
55
+ if (!tableId) {
56
+ return {};
57
+ }
55
58
  const parts = tableId.split(DOUBLE_SEPARATOR);
56
59
  let tableName = parts.pop();
57
60
  // if they need joined
@@ -13,6 +13,7 @@ const { PermissionTypes, doesHaveBasePermission, } = require("@budibase/backend-
13
13
  const builderMiddleware = require("./builder");
14
14
  const { isWebhookEndpoint } = require("./utils");
15
15
  const { buildCsrfMiddleware } = require("@budibase/backend-core/auth");
16
+ const { getAppId } = require("@budibase/backend-core/context");
16
17
  function hasResource(ctx) {
17
18
  return ctx.resourceId != null;
18
19
  }
@@ -38,7 +39,7 @@ const checkAuthorized = (ctx, resourceRoles, permType, permLevel) => __awaiter(v
38
39
  const checkAuthorizedResource = (ctx, resourceRoles, permType, permLevel) => __awaiter(void 0, void 0, void 0, function* () {
39
40
  // get the user's roles
40
41
  const roleId = ctx.roleId || BUILTIN_ROLE_IDS.PUBLIC;
41
- const userRoles = yield getUserRoleHierarchy(ctx.appId, roleId, {
42
+ const userRoles = yield getUserRoleHierarchy(roleId, {
42
43
  idOnly: false,
43
44
  });
44
45
  const permError = "User does not have permission";
@@ -70,8 +71,9 @@ module.exports =
70
71
  yield builderMiddleware(ctx, permType);
71
72
  // get the resource roles
72
73
  let resourceRoles = [];
73
- if (ctx.appId && hasResource(ctx)) {
74
- resourceRoles = yield getRequiredResourceRole(ctx.appId, permLevel, ctx);
74
+ const appId = getAppId();
75
+ if (appId && hasResource(ctx)) {
76
+ resourceRoles = yield getRequiredResourceRole(permLevel, ctx);
75
77
  }
76
78
  // if the resource is public, proceed
77
79
  const isPublicResource = resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC);
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  const { APP_DEV_PREFIX } = require("../db/utils");
12
12
  const { doesUserHaveLock, updateLock, checkDebounce, setDebounce, } = require("../utilities/redis");
13
- const CouchDB = require("../db");
13
+ const { getDB } = require("@budibase/backend-core/db");
14
14
  const { DocumentTypes } = require("../db/utils");
15
15
  const { PermissionTypes } = require("@budibase/backend-core/permissions");
16
16
  const { app: appCache } = require("@budibase/backend-core/cache");
@@ -49,7 +49,7 @@ function updateAppUpdatedAt(ctx) {
49
49
  if (ctx.method === "GET" || (yield checkDebounce(appId))) {
50
50
  return;
51
51
  }
52
- const db = new CouchDB(appId);
52
+ const db = getDB(appId);
53
53
  const metadata = yield db.get(DocumentTypes.APP_METADATA);
54
54
  metadata.updatedAt = new Date().toISOString();
55
55
  const response = yield db.put(metadata);
@@ -16,9 +16,9 @@ const { generateUserMetadataID, isDevAppID } = require("../db/utils");
16
16
  const { dbExists } = require("@budibase/backend-core/db");
17
17
  const { isUserInAppTenant } = require("@budibase/backend-core/tenancy");
18
18
  const { getCachedSelf } = require("../utilities/global");
19
- const CouchDB = require("../db");
20
19
  const env = require("../environment");
21
20
  const { isWebhookEndpoint } = require("./utils");
21
+ const { doInAppContext } = require("@budibase/backend-core/context");
22
22
  module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
23
23
  // try to get the appID from the request
24
24
  let requestAppId = getAppId(ctx);
@@ -36,7 +36,7 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
36
36
  // check the app exists referenced in cookie
37
37
  if (appCookie) {
38
38
  const appId = appCookie.appId;
39
- const exists = yield dbExists(CouchDB, appId);
39
+ const exists = yield dbExists(appId);
40
40
  if (!exists) {
41
41
  clearCookie(ctx, Cookies.CurrentApp);
42
42
  return next();
@@ -45,11 +45,13 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
45
45
  requestAppId = requestAppId || appId;
46
46
  }
47
47
  // deny access to application preview
48
- if (isDevAppID(requestAppId) &&
49
- !isWebhookEndpoint(ctx) &&
50
- (!ctx.user || !ctx.user.builder || !ctx.user.builder.global)) {
51
- clearCookie(ctx, Cookies.CurrentApp);
52
- return ctx.redirect("/");
48
+ if (!env.isTest()) {
49
+ if (isDevAppID(requestAppId) &&
50
+ !isWebhookEndpoint(ctx) &&
51
+ (!ctx.user || !ctx.user.builder || !ctx.user.builder.global)) {
52
+ clearCookie(ctx, Cookies.CurrentApp);
53
+ return ctx.redirect("/");
54
+ }
53
55
  }
54
56
  let appId, roleId = BUILTIN_ROLE_IDS.PUBLIC;
55
57
  if (!ctx.user) {
@@ -67,34 +69,36 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
67
69
  if (!appId) {
68
70
  return next();
69
71
  }
70
- let noCookieSet = false;
71
- // if the user not in the right tenant then make sure they have no permissions
72
- // need to judge this only based on the request app ID,
73
- if (env.MULTI_TENANCY &&
74
- ctx.user &&
75
- requestAppId &&
76
- !isUserInAppTenant(requestAppId)) {
77
- // don't error, simply remove the users rights (they are a public user)
78
- delete ctx.user.builder;
79
- delete ctx.user.admin;
80
- delete ctx.user.roles;
81
- roleId = BUILTIN_ROLE_IDS.PUBLIC;
82
- noCookieSet = true;
83
- }
84
- ctx.appId = appId;
85
- if (roleId) {
86
- ctx.roleId = roleId;
87
- const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null;
88
- ctx.user = Object.assign(Object.assign({}, ctx.user), {
89
- // override userID with metadata one
90
- _id: userId, userId,
91
- roleId, role: yield getRole(appId, roleId) });
92
- }
93
- if ((requestAppId !== appId ||
94
- appCookie == null ||
95
- appCookie.appId !== requestAppId) &&
96
- !noCookieSet) {
97
- setCookie(ctx, { appId }, Cookies.CurrentApp);
98
- }
99
- return next();
72
+ return doInAppContext(appId, () => __awaiter(void 0, void 0, void 0, function* () {
73
+ let noCookieSet = false;
74
+ // if the user not in the right tenant then make sure they have no permissions
75
+ // need to judge this only based on the request app ID,
76
+ if (env.MULTI_TENANCY &&
77
+ ctx.user &&
78
+ requestAppId &&
79
+ !isUserInAppTenant(requestAppId)) {
80
+ // don't error, simply remove the users rights (they are a public user)
81
+ delete ctx.user.builder;
82
+ delete ctx.user.admin;
83
+ delete ctx.user.roles;
84
+ roleId = BUILTIN_ROLE_IDS.PUBLIC;
85
+ noCookieSet = true;
86
+ }
87
+ ctx.appId = appId;
88
+ if (roleId) {
89
+ ctx.roleId = roleId;
90
+ const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null;
91
+ ctx.user = Object.assign(Object.assign({}, ctx.user), {
92
+ // override userID with metadata one
93
+ _id: userId, userId,
94
+ roleId, role: yield getRole(roleId) });
95
+ }
96
+ if ((requestAppId !== appId ||
97
+ appCookie == null ||
98
+ appCookie.appId !== requestAppId) &&
99
+ !noCookieSet) {
100
+ setCookie(ctx, { appId }, Cookies.CurrentApp);
101
+ }
102
+ return next();
103
+ }));
100
104
  });
@@ -8,11 +8,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- const CouchDB = require("../db");
12
11
  const usageQuota = require("../utilities/usageQuota");
13
12
  const { getUniqueRows } = require("../utilities/usageQuota/rows");
14
13
  const { isExternalTable, isRowId: isExternalRowId, } = require("../integrations/utils");
15
- const migration = require("../migrations/usageQuotas");
14
+ const { getAppDB } = require("@budibase/backend-core/context");
16
15
  // currently only counting new writes and deletes
17
16
  const METHOD_MAP = {
18
17
  POST: 1,
@@ -49,7 +48,7 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
49
48
  const usageId = ctx.request.body._id;
50
49
  try {
51
50
  if (ctx.appId) {
52
- const db = new CouchDB(ctx.appId);
51
+ const db = getAppDB();
53
52
  yield db.get(usageId);
54
53
  }
55
54
  return next();
@@ -74,7 +73,6 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
74
73
  usage = files.map(file => file.size).reduce((total, size) => total + size);
75
74
  }
76
75
  try {
77
- yield migration.run();
78
76
  yield performRequest(ctx, next, property, usage);
79
77
  }
80
78
  catch (err) {
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.run = void 0;
13
+ const { DocumentTypes } = require("@budibase/backend-core/db");
14
+ const application_1 = require("../../api/controllers/application");
15
+ /**
16
+ * Date:
17
+ * January 2022
18
+ *
19
+ * Description:
20
+ * Add the url to the app metadata if it doesn't exist
21
+ */
22
+ const run = (appDb) => __awaiter(void 0, void 0, void 0, function* () {
23
+ let metadata;
24
+ try {
25
+ metadata = yield appDb.get(DocumentTypes.APP_METADATA);
26
+ }
27
+ catch (e) {
28
+ // sometimes the metadata document doesn't exist
29
+ // exit early instead of failing the migration
30
+ console.error("Error retrieving app metadata. Skipping", e);
31
+ return;
32
+ }
33
+ if (!metadata.url) {
34
+ const context = {
35
+ request: {
36
+ body: {
37
+ name: metadata.name,
38
+ },
39
+ },
40
+ };
41
+ metadata.url = application_1.getAppUrl(context);
42
+ console.log(`Adding url to app: ${metadata.url}`);
43
+ yield appDb.put(metadata);
44
+ }
45
+ });
46
+ exports.run = run;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.run = void 0;
32
+ const usageQuotas_1 = require("./usageQuotas");
33
+ const syncApps = __importStar(require("./usageQuotas/syncApps"));
34
+ const syncRows = __importStar(require("./usageQuotas/syncRows"));
35
+ /**
36
+ * Date:
37
+ * January 2022
38
+ *
39
+ * Description:
40
+ * Synchronise the app and row quotas to the state of the db after it was
41
+ * discovered that the quota resets were still in place and the row quotas
42
+ * weren't being decremented correctly.
43
+ */
44
+ const run = () => __awaiter(void 0, void 0, void 0, function* () {
45
+ yield usageQuotas_1.runQuotaMigration(() => __awaiter(void 0, void 0, void 0, function* () {
46
+ yield syncApps.run();
47
+ yield syncRows.run();
48
+ }));
49
+ });
50
+ exports.run = run;
@@ -8,17 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- const { MIGRATIONS, MIGRATION_DBS, migrateIfRequired, } = require("@budibase/backend-core/migrations");
12
- const { useQuotas } = require("../../utilities/usageQuota");
13
- const syncApps = require("./syncApps");
14
- const syncRows = require("./syncRows");
15
- exports.run = () => __awaiter(void 0, void 0, void 0, function* () {
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.runQuotaMigration = void 0;
13
+ const { useQuotas } = require("../../../utilities/usageQuota");
14
+ const runQuotaMigration = (migration) => __awaiter(void 0, void 0, void 0, function* () {
16
15
  if (!useQuotas()) {
17
16
  return;
18
17
  }
19
- // Jan 2022
20
- yield migrateIfRequired(MIGRATION_DBS.GLOBAL_DB, MIGRATIONS.QUOTAS_1, () => __awaiter(void 0, void 0, void 0, function* () {
21
- yield syncApps.run();
22
- yield syncRows.run();
23
- }));
18
+ yield migration();
24
19
  });
20
+ exports.runQuotaMigration = runQuotaMigration;
@@ -8,19 +8,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- const { getGlobalDB, getTenantId } = require("@budibase/backend-core/tenancy");
12
- const { getAllApps } = require("@budibase/backend-core/db");
13
- const CouchDB = require("../../db");
14
- const { getUsageQuotaDoc } = require("../../utilities/usageQuota");
15
- exports.run = () => __awaiter(void 0, void 0, void 0, function* () {
16
- const db = getGlobalDB();
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.run = void 0;
13
+ const tenancy_1 = require("@budibase/backend-core/tenancy");
14
+ const db_1 = require("@budibase/backend-core/db");
15
+ const usageQuota_1 = require("../../../utilities/usageQuota");
16
+ const run = () => __awaiter(void 0, void 0, void 0, function* () {
17
+ const db = tenancy_1.getGlobalDB();
17
18
  // get app count
18
- const devApps = yield getAllApps(CouchDB, { dev: true });
19
+ // @ts-ignore
20
+ const devApps = yield db_1.getAllApps({ dev: true });
19
21
  const appCount = devApps ? devApps.length : 0;
20
22
  // sync app count
21
- const tenantId = getTenantId();
23
+ const tenantId = tenancy_1.getTenantId();
22
24
  console.log(`[Tenant: ${tenantId}] Syncing app count: ${appCount}`);
23
- const usageDoc = yield getUsageQuotaDoc(db);
25
+ const usageDoc = yield usageQuota_1.getUsageQuotaDoc(db);
24
26
  usageDoc.usageQuota.apps = appCount;
25
27
  yield db.put(usageDoc);
26
28
  });
29
+ exports.run = run;
@@ -8,22 +8,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- const { getGlobalDB, getTenantId } = require("@budibase/backend-core/tenancy");
12
- const { getAllApps } = require("@budibase/backend-core/db");
13
- const CouchDB = require("../../db");
14
- const { getUsageQuotaDoc } = require("../../utilities/usageQuota");
15
- const { getUniqueRows } = require("../../utilities/usageQuota/rows");
16
- exports.run = () => __awaiter(void 0, void 0, void 0, function* () {
17
- const db = getGlobalDB();
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.run = void 0;
13
+ const tenancy_1 = require("@budibase/backend-core/tenancy");
14
+ const db_1 = require("@budibase/backend-core/db");
15
+ const usageQuota_1 = require("../../../utilities/usageQuota");
16
+ const rows_1 = require("../../../utilities/usageQuota/rows");
17
+ const run = () => __awaiter(void 0, void 0, void 0, function* () {
18
+ const db = tenancy_1.getGlobalDB();
18
19
  // get all rows in all apps
19
- const allApps = yield getAllApps(CouchDB, { all: true });
20
- const appIds = allApps ? allApps.map(app => app.appId) : [];
21
- const rows = yield getUniqueRows(appIds);
20
+ // @ts-ignore
21
+ const allApps = yield db_1.getAllApps({ all: true });
22
+ // @ts-ignore
23
+ const appIds = allApps ? allApps.map((app) => app.appId) : [];
24
+ const rows = yield rows_1.getUniqueRows(appIds);
22
25
  const rowCount = rows ? rows.length : 0;
23
26
  // sync row count
24
- const tenantId = getTenantId();
27
+ const tenantId = tenancy_1.getTenantId();
25
28
  console.log(`[Tenant: ${tenantId}] Syncing row count: ${rowCount}`);
26
- const usageDoc = yield getUsageQuotaDoc(db);
29
+ const usageDoc = yield usageQuota_1.getUsageQuotaDoc(db);
27
30
  usageDoc.usageQuota.rows = rowCount;
28
31
  yield db.put(usageDoc);
29
32
  });
33
+ exports.run = run;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.run = void 0;
13
+ const { createUserEmailView } = require("@budibase/backend-core/db");
14
+ /**
15
+ * Date:
16
+ * October 2021
17
+ *
18
+ * Description:
19
+ * Recreate the user email view to include latest changes i.e. lower casing the email address
20
+ */
21
+ const run = (db) => __awaiter(void 0, void 0, void 0, function* () {
22
+ yield createUserEmailView(db);
23
+ });
24
+ exports.run = run;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.migrate = exports.MIGRATIONS = void 0;
35
+ const db_1 = __importDefault(require("../db"));
36
+ const { MIGRATION_TYPES, runMigrations, } = require("@budibase/backend-core/migrations");
37
+ // migration functions
38
+ const userEmailViewCasing = __importStar(require("./functions/userEmailViewCasing"));
39
+ const quota1 = __importStar(require("./functions/quotas1"));
40
+ const appUrls = __importStar(require("./functions/appUrls"));
41
+ exports.MIGRATIONS = [
42
+ {
43
+ type: MIGRATION_TYPES.GLOBAL,
44
+ name: "user_email_view_casing",
45
+ fn: userEmailViewCasing.run,
46
+ },
47
+ {
48
+ type: MIGRATION_TYPES.GLOBAL,
49
+ name: "quotas_1",
50
+ fn: quota1.run,
51
+ },
52
+ {
53
+ type: MIGRATION_TYPES.APP,
54
+ name: "app_urls",
55
+ opts: { all: true },
56
+ fn: appUrls.run,
57
+ },
58
+ ];
59
+ const migrate = (options) => __awaiter(void 0, void 0, void 0, function* () {
60
+ yield runMigrations(db_1.default, exports.MIGRATIONS, options);
61
+ });
62
+ exports.migrate = migrate;
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.0.49-alpha.0",
4
+ "version": "1.0.49-alpha.12",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -70,9 +70,9 @@
70
70
  "license": "GPL-3.0",
71
71
  "dependencies": {
72
72
  "@apidevtools/swagger-parser": "^10.0.3",
73
- "@budibase/backend-core": "^1.0.49-alpha.0",
74
- "@budibase/client": "^1.0.49-alpha.0",
75
- "@budibase/string-templates": "^1.0.49-alpha.0",
73
+ "@budibase/backend-core": "^1.0.49-alpha.12",
74
+ "@budibase/client": "^1.0.49-alpha.12",
75
+ "@budibase/string-templates": "^1.0.49-alpha.12",
76
76
  "@bull-board/api": "^3.7.0",
77
77
  "@bull-board/koa": "^3.7.0",
78
78
  "@elastic/elasticsearch": "7.10.0",