@budibase/server 1.0.49-alpha.6 → 1.0.49

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 (376) hide show
  1. package/__mocks__/arangojs.ts +1 -1
  2. package/__mocks__/aws-sdk.ts +4 -4
  3. package/__mocks__/mongodb.ts +5 -4
  4. package/__mocks__/mssql.ts +3 -3
  5. package/__mocks__/node-fetch.ts +1 -2
  6. package/__mocks__/pg.ts +5 -3
  7. package/builder/assets/{index.1b905242.js → index.2c37968e.js} +231 -234
  8. package/builder/assets/index.39e01193.css +1 -0
  9. package/builder/assets/{vendor.d526bfe8.js → vendor.f9faf6ab.js} +12 -12
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +2816 -3119
  12. package/coverage/coverage-final.json +101 -106
  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 +152 -257
  16. package/coverage/lcov-report/api/controllers/auth.js.html +13 -22
  17. package/coverage/lcov-report/api/controllers/automation.js.html +69 -39
  18. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -8
  20. package/coverage/lcov-report/api/controllers/component.js.html +16 -13
  21. package/coverage/lcov-report/api/controllers/datasource.js.html +51 -81
  22. package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
  23. package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → api/controllers/hosting.js.html} +48 -36
  24. package/coverage/lcov-report/api/controllers/index.html +76 -76
  25. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/metadata.js.html +21 -6
  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 +35 -38
  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 +10 -7
  34. package/coverage/lcov-report/api/controllers/row/external.js.html +27 -21
  35. package/coverage/lcov-report/api/controllers/row/index.html +34 -49
  36. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  37. package/coverage/lcov-report/api/controllers/row/internal.js.html +226 -118
  38. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +34 -52
  39. package/coverage/lcov-report/api/controllers/row/utils.js.html +62 -47
  40. package/coverage/lcov-report/api/controllers/screen.js.html +21 -15
  41. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  42. package/coverage/lcov-report/api/controllers/table/external.js.html +34 -25
  43. package/coverage/lcov-report/api/controllers/table/index.html +43 -58
  44. package/coverage/lcov-report/api/controllers/table/index.js.html +82 -58
  45. package/coverage/lcov-report/api/controllers/table/internal.js.html +66 -81
  46. package/coverage/lcov-report/api/controllers/table/utils.js.html +110 -218
  47. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/user.js.html +50 -47
  49. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  50. package/coverage/lcov-report/api/controllers/view/index.html +16 -16
  51. package/coverage/lcov-report/api/controllers/view/index.js.html +33 -27
  52. package/coverage/lcov-report/api/controllers/view/utils.js.html +20 -35
  53. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  54. package/coverage/lcov-report/api/controllers/webhook.js.html +28 -34
  55. package/coverage/lcov-report/api/index.html +1 -1
  56. package/coverage/lcov-report/api/index.js.html +8 -8
  57. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/{migrations.js.html → hosting.js.html} +14 -17
  69. package/coverage/lcov-report/api/routes/index.html +18 -18
  70. package/coverage/lcov-report/api/routes/index.js.html +3 -3
  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/api/routes/permission.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/static.js.html +2 -17
  82. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  83. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  84. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  85. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  86. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  87. package/coverage/lcov-report/automations/actions.js.html +24 -24
  88. package/coverage/lcov-report/automations/automationUtils.js.html +10 -7
  89. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  90. package/coverage/lcov-report/automations/index.html +18 -18
  91. package/coverage/lcov-report/automations/index.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  93. package/coverage/lcov-report/automations/steps/createRow.js.html +22 -13
  94. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  95. package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
  96. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  97. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  98. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  99. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  100. package/coverage/lcov-report/automations/steps/index.html +13 -13
  101. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  102. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  103. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  104. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  105. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  106. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  107. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  108. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  109. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  110. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  114. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  115. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  116. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  117. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  118. package/coverage/lcov-report/automations/triggers.js.html +55 -61
  119. package/coverage/lcov-report/automations/utils.js.html +42 -54
  120. package/coverage/lcov-report/constants/index.html +5 -5
  121. package/coverage/lcov-report/constants/index.js.html +26 -53
  122. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  123. package/coverage/lcov-report/constants/screens.js.html +4 -4
  124. package/coverage/lcov-report/db/client.js.html +18 -18
  125. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  126. package/coverage/lcov-report/db/index.html +15 -15
  127. package/coverage/lcov-report/db/index.js.html +3 -3
  128. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +37 -25
  129. package/coverage/lcov-report/db/linkedRows/index.html +27 -27
  130. package/coverage/lcov-report/db/linkedRows/index.js.html +96 -51
  131. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
  132. package/coverage/lcov-report/db/newid.js.html +4 -4
  133. package/coverage/lcov-report/db/utils.js.html +87 -87
  134. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  135. package/coverage/lcov-report/events/index.html +1 -1
  136. package/coverage/lcov-report/events/index.js.html +5 -5
  137. package/coverage/lcov-report/events/utils.js.html +3 -3
  138. package/coverage/lcov-report/index.html +120 -135
  139. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  140. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  141. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  142. package/coverage/lcov-report/middleware/authorized.js.html +65 -173
  143. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  144. package/coverage/lcov-report/middleware/currentapp.js.html +83 -95
  145. package/coverage/lcov-report/middleware/index.html +38 -38
  146. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  147. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  148. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  149. package/coverage/lcov-report/middleware/usageQuota.js.html +53 -281
  150. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  151. package/coverage/lcov-report/threads/automation.js.html +24 -30
  152. package/coverage/lcov-report/threads/index.html +26 -26
  153. package/coverage/lcov-report/threads/index.js.html +10 -10
  154. package/coverage/lcov-report/threads/query.js.html +26 -62
  155. package/coverage/lcov-report/threads/utils.js.html +14 -14
  156. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  157. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  158. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  159. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  160. package/coverage/lcov-report/utilities/global.js.html +49 -58
  161. package/coverage/lcov-report/utilities/index.html +37 -37
  162. package/coverage/lcov-report/utilities/index.js.html +73 -43
  163. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  164. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  165. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  166. package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
  167. package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
  168. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +103 -97
  169. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +27 -75
  170. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  171. package/coverage/lcov-report/utilities/security.js.html +8 -8
  172. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  173. package/coverage/lcov-report/utilities/users.js.html +9 -9
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +112 -43
  175. package/coverage/lcov.info +4423 -5022
  176. package/dist/api/controllers/application.js +60 -90
  177. package/dist/api/controllers/auth.js +5 -8
  178. package/dist/api/controllers/automation.js +19 -14
  179. package/dist/api/controllers/cloud.js +3 -2
  180. package/dist/api/controllers/component.js +4 -3
  181. package/dist/api/controllers/datasource.js +10 -20
  182. package/dist/api/controllers/deploy/Deployment.js +6 -3
  183. package/dist/api/controllers/deploy/index.js +13 -12
  184. package/dist/api/controllers/dev.js +5 -5
  185. package/dist/api/controllers/hosting.js +30 -0
  186. package/dist/api/controllers/layout.js +3 -3
  187. package/dist/api/controllers/metadata.js +4 -4
  188. package/dist/api/controllers/permission.js +4 -4
  189. package/dist/api/controllers/query/import/index.js +6 -4
  190. package/dist/api/controllers/query/index.js +10 -11
  191. package/dist/api/controllers/role.js +5 -5
  192. package/dist/api/controllers/routing.js +6 -5
  193. package/dist/api/controllers/row/ExternalRequest.js +63 -76
  194. package/dist/api/controllers/row/external.js +4 -4
  195. package/dist/api/controllers/row/internal.js +93 -55
  196. package/dist/api/controllers/row/internalSearch.js +17 -23
  197. package/dist/api/controllers/row/utils.js +14 -13
  198. package/dist/api/controllers/screen.js +7 -5
  199. package/dist/api/controllers/static/index.js +12 -61
  200. package/dist/api/controllers/table/external.js +10 -7
  201. package/dist/api/controllers/table/index.js +13 -16
  202. package/dist/api/controllers/table/internal.js +16 -22
  203. package/dist/api/controllers/table/utils.js +35 -62
  204. package/dist/api/controllers/user.js +20 -18
  205. package/dist/api/controllers/view/index.js +10 -8
  206. package/dist/api/controllers/view/utils.js +4 -9
  207. package/dist/api/controllers/webhook.js +8 -10
  208. package/dist/api/routes/hosting.js +11 -0
  209. package/dist/api/routes/index.js +2 -2
  210. package/dist/api/routes/static.js +1 -2
  211. package/dist/api/routes/tests/utilities/TestFunctions.js +17 -37
  212. package/dist/app.js +5 -35
  213. package/dist/automations/automationUtils.js +3 -2
  214. package/dist/automations/steps/createRow.js +5 -3
  215. package/dist/automations/steps/deleteRow.js +4 -1
  216. package/dist/automations/steps/updateRow.js +1 -1
  217. package/dist/automations/triggers.js +25 -27
  218. package/dist/automations/utils.js +5 -10
  219. package/dist/constants/index.js +0 -7
  220. package/dist/db/linkedRows/LinkController.js +7 -3
  221. package/dist/db/linkedRows/index.js +27 -16
  222. package/dist/db/linkedRows/linkUtils.js +6 -6
  223. package/dist/db/views/staticViews.js +10 -9
  224. package/dist/definitions/datasource.js +0 -1
  225. package/dist/environment.js +1 -4
  226. package/dist/integrations/base/sql.js +6 -13
  227. package/dist/integrations/index.js +0 -3
  228. package/dist/integrations/utils.js +9 -60
  229. package/dist/middleware/authorized.js +30 -57
  230. package/dist/middleware/builder.js +2 -2
  231. package/dist/middleware/currentapp.js +37 -41
  232. package/dist/middleware/usageQuota.js +15 -82
  233. package/dist/package.json +5 -8
  234. package/dist/tests/utilities/TestConfiguration.js +50 -80
  235. package/dist/threads/automation.js +11 -13
  236. package/dist/threads/query.js +13 -23
  237. package/dist/tsconfig.tsbuildinfo +1 -1
  238. package/dist/utilities/fileSystem/index.js +3 -4
  239. package/dist/utilities/global.js +12 -15
  240. package/dist/utilities/index.js +17 -7
  241. package/dist/utilities/routing/index.js +5 -5
  242. package/dist/utilities/rowProcessor/index.js +17 -23
  243. package/dist/utilities/rowProcessor/utils.js +4 -14
  244. package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -45
  245. package/dist/utilities/users.js +3 -3
  246. package/dist/utilities/workerRequests.js +24 -4
  247. package/nodemon.json +1 -1
  248. package/package.json +6 -9
  249. package/scripts/likeCypress.ts +1 -1
  250. package/src/api/controllers/application.js +50 -85
  251. package/src/api/controllers/auth.js +5 -8
  252. package/src/api/controllers/automation.js +23 -13
  253. package/src/api/controllers/cloud.js +3 -2
  254. package/src/api/controllers/component.js +4 -3
  255. package/src/api/controllers/datasource.js +11 -21
  256. package/src/api/controllers/deploy/Deployment.js +7 -3
  257. package/src/api/controllers/deploy/index.js +13 -20
  258. package/src/api/controllers/dev.js +5 -5
  259. package/src/api/controllers/hosting.js +22 -0
  260. package/src/api/controllers/layout.js +3 -3
  261. package/src/api/controllers/metadata.js +9 -4
  262. package/src/api/controllers/permission.js +4 -4
  263. package/src/api/controllers/query/import/index.ts +6 -4
  264. package/src/api/controllers/query/import/tests/index.spec.js +1 -2
  265. package/src/api/controllers/query/index.js +10 -11
  266. package/src/api/controllers/role.js +5 -5
  267. package/src/api/controllers/routing.js +6 -5
  268. package/src/api/controllers/row/ExternalRequest.ts +42 -53
  269. package/src/api/controllers/row/external.js +6 -4
  270. package/src/api/controllers/row/internal.js +90 -54
  271. package/src/api/controllers/row/internalSearch.js +17 -23
  272. package/src/api/controllers/row/utils.js +18 -13
  273. package/src/api/controllers/screen.js +7 -5
  274. package/src/api/controllers/static/index.js +12 -65
  275. package/src/api/controllers/table/external.js +10 -7
  276. package/src/api/controllers/table/index.js +28 -20
  277. package/src/api/controllers/table/internal.js +19 -24
  278. package/src/api/controllers/table/utils.js +42 -78
  279. package/src/api/controllers/user.js +20 -19
  280. package/src/api/controllers/view/index.js +10 -8
  281. package/src/api/controllers/view/utils.js +4 -9
  282. package/src/api/controllers/webhook.js +8 -10
  283. package/src/api/routes/hosting.js +13 -0
  284. package/src/api/routes/index.js +2 -2
  285. package/src/api/routes/static.js +0 -5
  286. package/src/api/routes/tests/application.spec.js +2 -2
  287. package/src/api/routes/tests/auth.spec.js +2 -1
  288. package/src/api/routes/tests/automation.spec.js +0 -1
  289. package/src/api/routes/tests/hosting.spec.js +36 -0
  290. package/src/api/routes/tests/misc.spec.js +1 -0
  291. package/src/api/routes/tests/routing.spec.js +12 -21
  292. package/src/api/routes/tests/row.spec.js +4 -7
  293. package/src/api/routes/tests/utilities/TestFunctions.js +17 -39
  294. package/src/app.ts +5 -18
  295. package/src/automations/automationUtils.js +3 -2
  296. package/src/automations/steps/createRow.js +5 -2
  297. package/src/automations/steps/deleteRow.js +4 -1
  298. package/src/automations/steps/updateRow.js +1 -1
  299. package/src/automations/triggers.js +31 -33
  300. package/src/automations/utils.js +5 -9
  301. package/src/constants/index.js +0 -9
  302. package/src/db/linkedRows/LinkController.js +7 -3
  303. package/src/db/linkedRows/index.js +31 -16
  304. package/src/db/linkedRows/linkUtils.js +6 -6
  305. package/src/db/tests/linkController.spec.js +1 -0
  306. package/src/db/tests/linkTests.spec.js +6 -5
  307. package/src/db/views/staticViews.js +10 -8
  308. package/src/definitions/common.ts +0 -3
  309. package/src/definitions/datasource.ts +0 -3
  310. package/src/environment.js +1 -4
  311. package/src/integrations/base/sql.ts +7 -14
  312. package/src/integrations/index.ts +0 -3
  313. package/src/integrations/tests/sql.spec.js +0 -16
  314. package/src/integrations/utils.ts +12 -75
  315. package/src/middleware/authorized.js +30 -66
  316. package/src/middleware/builder.js +2 -2
  317. package/src/middleware/currentapp.js +46 -50
  318. package/src/middleware/tests/authorized.spec.js +6 -13
  319. package/src/middleware/tests/currentapp.spec.js +0 -6
  320. package/src/middleware/tests/usageQuota.spec.js +24 -18
  321. package/src/middleware/usageQuota.js +17 -93
  322. package/src/tests/utilities/TestConfiguration.js +55 -82
  323. package/src/threads/automation.js +15 -17
  324. package/src/threads/query.js +14 -26
  325. package/src/utilities/fileSystem/index.js +3 -4
  326. package/src/utilities/global.js +12 -15
  327. package/src/utilities/index.js +17 -7
  328. package/src/utilities/routing/index.js +5 -5
  329. package/src/utilities/rowProcessor/index.js +27 -25
  330. package/src/utilities/rowProcessor/utils.js +7 -23
  331. package/src/utilities/usageQuota.js +73 -0
  332. package/src/utilities/users.js +3 -3
  333. package/src/utilities/workerRequests.js +27 -4
  334. package/builder/assets/index.83c0944f.css +0 -1
  335. package/coverage/lcov-report/api/controllers/migrations.js.html +0 -119
  336. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +0 -548
  337. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +0 -599
  338. package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
  339. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
  340. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -305
  341. package/dist/api/controllers/migrations.js +0 -21
  342. package/dist/api/controllers/row/staticFormula.js +0 -147
  343. package/dist/api/controllers/table/bulkFormula.js +0 -159
  344. package/dist/api/routes/migrations.js +0 -9
  345. package/dist/integrations/googlesheets.js +0 -340
  346. package/dist/migrations/functions/appUrls.js +0 -46
  347. package/dist/migrations/functions/quotas1.js +0 -50
  348. package/dist/migrations/functions/usageQuotas/index.js +0 -20
  349. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -30
  350. package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
  351. package/dist/migrations/functions/userEmailViewCasing.js +0 -24
  352. package/dist/migrations/index.js +0 -62
  353. package/dist/utilities/usageQuota/rows.js +0 -78
  354. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  355. package/src/api/controllers/migrations.js +0 -13
  356. package/src/api/controllers/row/staticFormula.js +0 -156
  357. package/src/api/controllers/table/bulkFormula.js +0 -173
  358. package/src/api/routes/migrations.js +0 -14
  359. package/src/api/routes/tests/static.spec.js +0 -98
  360. package/src/integrations/googlesheets.ts +0 -353
  361. package/src/migrations/functions/appUrls.ts +0 -34
  362. package/src/migrations/functions/quotas1.ts +0 -20
  363. package/src/migrations/functions/tests/appUrls.spec.js +0 -29
  364. package/src/migrations/functions/tests/quotas1.spec.js +0 -27
  365. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +0 -25
  366. package/src/migrations/functions/usageQuotas/index.ts +0 -8
  367. package/src/migrations/functions/usageQuotas/syncApps.ts +0 -19
  368. package/src/migrations/functions/usageQuotas/syncRows.ts +0 -22
  369. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
  370. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
  371. package/src/migrations/functions/userEmailViewCasing.ts +0 -13
  372. package/src/migrations/index.ts +0 -56
  373. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  374. package/src/utilities/usageQuota/index.js +0 -93
  375. package/src/utilities/usageQuota/rows.js +0 -75
  376. package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
@@ -1,17 +1,13 @@
1
+ const CouchDB = require("../../../db")
1
2
  const csvParser = require("../../../utilities/csvParser")
2
3
  const {
3
4
  getRowParams,
4
5
  generateRowID,
5
6
  InternalTables,
6
- getTableParams,
7
- BudibaseInternalDB,
8
7
  } = require("../../../db/utils")
9
- const { isEqual } = require("lodash")
8
+ const { isEqual } = require("lodash/fp")
10
9
  const { AutoFieldSubTypes, FieldTypes } = require("../../../constants")
11
- const {
12
- inputProcessing,
13
- cleanupAttachments,
14
- } = require("../../../utilities/rowProcessor")
10
+ const { inputProcessing } = require("../../../utilities/rowProcessor")
15
11
  const {
16
12
  USERS_TABLE_SCHEMA,
17
13
  SwitchableTypes,
@@ -20,31 +16,11 @@ const {
20
16
  const {
21
17
  isExternalTable,
22
18
  breakExternalTableId,
23
- isSQL,
24
19
  } = require("../../../integrations/utils")
25
20
  const { getViews, saveView } = require("../view/utils")
26
21
  const viewTemplate = require("../view/viewBuilder")
27
- const usageQuota = require("../../../utilities/usageQuota")
28
- const { getAppDB } = require("@budibase/backend-core/context")
29
- const { cloneDeep } = require("lodash/fp")
30
-
31
- exports.clearColumns = async (table, columnNames) => {
32
- const db = getAppDB()
33
- const rows = await db.allDocs(
34
- getRowParams(table._id, null, {
35
- include_docs: true,
36
- })
37
- )
38
- return db.bulkDocs(
39
- rows.rows.map(({ doc }) => {
40
- columnNames.forEach(colName => delete doc[colName])
41
- return doc
42
- })
43
- )
44
- }
45
22
 
46
- exports.checkForColumnUpdates = async (oldTable, updatedTable) => {
47
- const db = getAppDB()
23
+ exports.checkForColumnUpdates = async (db, oldTable, updatedTable) => {
48
24
  let updatedRows = []
49
25
  const rename = updatedTable._rename
50
26
  let deletedColumns = []
@@ -61,22 +37,18 @@ exports.checkForColumnUpdates = async (oldTable, updatedTable) => {
61
37
  include_docs: true,
62
38
  })
63
39
  )
64
- const rawRows = rows.rows.map(({ doc }) => doc)
65
- updatedRows = rawRows.map(row => {
66
- row = cloneDeep(row)
40
+ updatedRows = rows.rows.map(({ doc }) => {
67
41
  if (rename) {
68
- row[rename.updated] = row[rename.old]
69
- delete row[rename.old]
42
+ doc[rename.updated] = doc[rename.old]
43
+ delete doc[rename.old]
70
44
  } else if (deletedColumns.length !== 0) {
71
- deletedColumns.forEach(colName => delete row[colName])
45
+ deletedColumns.forEach(colName => delete doc[colName])
72
46
  }
73
- return row
47
+ return doc
74
48
  })
75
49
 
76
- // cleanup any attachments from object storage for deleted attachment columns
77
- await cleanupAttachments(updatedTable, { oldTable, rows: rawRows })
78
50
  // Update views
79
- await exports.checkForViewUpdates(updatedTable, rename, deletedColumns)
51
+ await exports.checkForViewUpdates(db, updatedTable, rename, deletedColumns)
80
52
  delete updatedTable._rename
81
53
  }
82
54
  return { rows: updatedRows, table: updatedTable }
@@ -103,12 +75,12 @@ exports.makeSureTableUpToDate = (table, tableToSave) => {
103
75
  return tableToSave
104
76
  }
105
77
 
106
- exports.handleDataImport = async (user, table, dataImport) => {
78
+ exports.handleDataImport = async (appId, user, table, dataImport) => {
107
79
  if (!dataImport || !dataImport.csvString) {
108
80
  return table
109
81
  }
110
82
 
111
- const db = getAppDB()
83
+ const db = new CouchDB(appId)
112
84
  // Populate the table with rows imported from CSV in a bulk update
113
85
  const data = await csvParser.transform({
114
86
  ...dataImport,
@@ -143,18 +115,14 @@ exports.handleDataImport = async (user, table, dataImport) => {
143
115
  finalData.push(row)
144
116
  }
145
117
 
146
- await usageQuota.update(usageQuota.Properties.ROW, finalData.length, {
147
- dryRun: true,
148
- })
149
118
  await db.bulkDocs(finalData)
150
- await usageQuota.update(usageQuota.Properties.ROW, finalData.length)
151
119
  let response = await db.put(table)
152
120
  table._rev = response._rev
153
121
  return table
154
122
  }
155
123
 
156
- exports.handleSearchIndexes = async table => {
157
- const db = getAppDB()
124
+ exports.handleSearchIndexes = async (appId, table) => {
125
+ const db = new CouchDB(appId)
158
126
  // create relevant search indexes
159
127
  if (table.indexes && table.indexes.length > 0) {
160
128
  const currentIndexes = await db.getIndexes()
@@ -211,9 +179,12 @@ exports.checkStaticTables = table => {
211
179
  }
212
180
 
213
181
  class TableSaveFunctions {
214
- constructor({ user, oldTable, dataImport }) {
215
- this.db = getAppDB()
216
- this.user = user
182
+ constructor({ db, ctx, oldTable, dataImport }) {
183
+ this.db = db
184
+ this.ctx = ctx
185
+ if (this.ctx && this.ctx.user) {
186
+ this.appId = this.ctx.appId
187
+ }
217
188
  this.oldTable = oldTable
218
189
  this.dataImport = dataImport
219
190
  // any rows that need updated
@@ -231,15 +202,24 @@ class TableSaveFunctions {
231
202
 
232
203
  // when confirmed valid
233
204
  async mid(table) {
234
- let response = await exports.checkForColumnUpdates(this.oldTable, table)
205
+ let response = await exports.checkForColumnUpdates(
206
+ this.db,
207
+ this.oldTable,
208
+ table
209
+ )
235
210
  this.rows = this.rows.concat(response.rows)
236
211
  return table
237
212
  }
238
213
 
239
214
  // after saving
240
215
  async after(table) {
241
- table = await exports.handleSearchIndexes(table)
242
- table = await exports.handleDataImport(this.user, table, this.dataImport)
216
+ table = await exports.handleSearchIndexes(this.appId, table)
217
+ table = await exports.handleDataImport(
218
+ this.appId,
219
+ this.ctx.user,
220
+ table,
221
+ this.dataImport
222
+ )
243
223
  return table
244
224
  }
245
225
 
@@ -248,22 +228,8 @@ class TableSaveFunctions {
248
228
  }
249
229
  }
250
230
 
251
- exports.getAllInternalTables = async () => {
252
- const db = getAppDB()
253
- const internalTables = await db.allDocs(
254
- getTableParams(null, {
255
- include_docs: true,
256
- })
257
- )
258
- return internalTables.rows.map(tableDoc => ({
259
- ...tableDoc.doc,
260
- type: "internal",
261
- sourceId: BudibaseInternalDB._id,
262
- }))
263
- }
264
-
265
- exports.getAllExternalTables = async datasourceId => {
266
- const db = getAppDB()
231
+ exports.getAllExternalTables = async (appId, datasourceId) => {
232
+ const db = new CouchDB(appId)
267
233
  const datasource = await db.get(datasourceId)
268
234
  if (!datasource || !datasource.entities) {
269
235
  throw "Datasource is not configured fully."
@@ -271,25 +237,23 @@ exports.getAllExternalTables = async datasourceId => {
271
237
  return datasource.entities
272
238
  }
273
239
 
274
- exports.getExternalTable = async (datasourceId, tableName) => {
275
- const entities = await exports.getAllExternalTables(datasourceId)
240
+ exports.getExternalTable = async (appId, datasourceId, tableName) => {
241
+ const entities = await exports.getAllExternalTables(appId, datasourceId)
276
242
  return entities[tableName]
277
243
  }
278
244
 
279
- exports.getTable = async tableId => {
280
- const db = getAppDB()
245
+ exports.getTable = async (appId, tableId) => {
246
+ const db = new CouchDB(appId)
281
247
  if (isExternalTable(tableId)) {
282
248
  let { datasourceId, tableName } = breakExternalTableId(tableId)
283
- const datasource = await db.get(datasourceId)
284
- const table = await exports.getExternalTable(datasourceId, tableName)
285
- return { ...table, sql: isSQL(datasource) }
249
+ return exports.getExternalTable(appId, datasourceId, tableName)
286
250
  } else {
287
251
  return db.get(tableId)
288
252
  }
289
253
  }
290
254
 
291
- exports.checkForViewUpdates = async (table, rename, deletedColumns) => {
292
- const views = await getViews()
255
+ exports.checkForViewUpdates = async (db, table, rename, deletedColumns) => {
256
+ const views = await getViews(db)
293
257
  const tableViews = views.filter(view => view.meta.tableId === table._id)
294
258
 
295
259
  // Check each table view to see if impacted by this table action
@@ -351,7 +315,7 @@ exports.checkForViewUpdates = async (table, rename, deletedColumns) => {
351
315
  // Update view if required
352
316
  if (needsUpdated) {
353
317
  const newViewTemplate = viewTemplate(view.meta)
354
- await saveView(null, view.name, newViewTemplate)
318
+ await saveView(db, null, view.name, newViewTemplate)
355
319
  if (!newViewTemplate.meta.schema) {
356
320
  newViewTemplate.meta.schema = table.schema
357
321
  }
@@ -1,3 +1,4 @@
1
+ const CouchDB = require("../../db")
1
2
  const {
2
3
  generateUserMetadataID,
3
4
  getUserMetadataParams,
@@ -10,14 +11,12 @@ const { isEqual } = require("lodash")
10
11
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
11
12
  const {
12
13
  getDevelopmentAppID,
13
- getProdAppIDs,
14
- dbExists,
14
+ getDeployedAppIDs,
15
15
  } = require("@budibase/backend-core/db")
16
+ const { doesDatabaseExist } = require("../../utilities")
16
17
  const { UserStatus } = require("@budibase/backend-core/constants")
17
- const { getAppDB } = require("@budibase/backend-core/context")
18
18
 
19
- async function rawMetadata() {
20
- const db = getAppDB()
19
+ async function rawMetadata(db) {
21
20
  return (
22
21
  await db.allDocs(
23
22
  getUserMetadataParams(null, {
@@ -55,10 +54,13 @@ function combineMetadataAndUser(user, metadata) {
55
54
  return null
56
55
  }
57
56
 
58
- exports.syncGlobalUsers = async () => {
57
+ exports.syncGlobalUsers = async appId => {
59
58
  // sync user metadata
60
- const db = getAppDB()
61
- const [users, metadata] = await Promise.all([getGlobalUsers(), rawMetadata()])
59
+ const db = new CouchDB(appId)
60
+ const [users, metadata] = await Promise.all([
61
+ getGlobalUsers(appId),
62
+ rawMetadata(db),
63
+ ])
62
64
  const toWrite = []
63
65
  for (let user of users) {
64
66
  const combined = await combineMetadataAndUser(user, metadata)
@@ -92,7 +94,7 @@ exports.syncUser = async function (ctx) {
92
94
  let prodAppIds
93
95
  // if they are a builder then get all production app IDs
94
96
  if ((user.builder && user.builder.global) || deleting) {
95
- prodAppIds = await getProdAppIDs()
97
+ prodAppIds = await getDeployedAppIDs(CouchDB)
96
98
  } else {
97
99
  prodAppIds = Object.entries(roles)
98
100
  .filter(entry => entry[1] !== BUILTIN_ROLE_IDS.PUBLIC)
@@ -102,10 +104,10 @@ exports.syncUser = async function (ctx) {
102
104
  const roleId = roles[prodAppId]
103
105
  const devAppId = getDevelopmentAppID(prodAppId)
104
106
  for (let appId of [prodAppId, devAppId]) {
105
- if (!(await dbExists(appId))) {
107
+ if (!(await doesDatabaseExist(appId))) {
106
108
  continue
107
109
  }
108
- const db = getAppDB()
110
+ const db = new CouchDB(appId)
109
111
  const metadataId = generateUserMetadataID(userId)
110
112
  let metadata
111
113
  try {
@@ -141,8 +143,8 @@ exports.syncUser = async function (ctx) {
141
143
  }
142
144
 
143
145
  exports.fetchMetadata = async function (ctx) {
144
- const database = getAppDB()
145
- const global = await getGlobalUsers()
146
+ const database = new CouchDB(ctx.appId)
147
+ const global = await getGlobalUsers(ctx.appId)
146
148
  const metadata = await rawMetadata(database)
147
149
  const users = []
148
150
  for (let user of global) {
@@ -165,13 +167,12 @@ exports.updateSelfMetadata = async function (ctx) {
165
167
  ctx.request.body._id = ctx.user._id
166
168
  // make sure no stale rev
167
169
  delete ctx.request.body._rev
168
- // make sure no csrf token
169
- delete ctx.request.body.csrfToken
170
170
  await exports.updateMetadata(ctx)
171
171
  }
172
172
 
173
173
  exports.updateMetadata = async function (ctx) {
174
- const db = getAppDB()
174
+ const appId = ctx.appId
175
+ const db = new CouchDB(appId)
175
176
  const user = ctx.request.body
176
177
  // this isn't applicable to the user
177
178
  delete user.roles
@@ -183,7 +184,7 @@ exports.updateMetadata = async function (ctx) {
183
184
  }
184
185
 
185
186
  exports.destroyMetadata = async function (ctx) {
186
- const db = getAppDB()
187
+ const db = new CouchDB(ctx.appId)
187
188
  try {
188
189
  const dbUser = await db.get(ctx.params.id)
189
190
  await db.remove(dbUser._id, dbUser._rev)
@@ -206,7 +207,7 @@ exports.setFlag = async function (ctx) {
206
207
  ctx.throw(400, "Must supply a 'flag' field in request body.")
207
208
  }
208
209
  const flagDocId = generateUserFlagID(userId)
209
- const db = getAppDB()
210
+ const db = new CouchDB(ctx.appId)
210
211
  let doc
211
212
  try {
212
213
  doc = await db.get(flagDocId)
@@ -221,7 +222,7 @@ exports.setFlag = async function (ctx) {
221
222
  exports.getFlags = async function (ctx) {
222
223
  const userId = ctx.user._id
223
224
  const docId = generateUserFlagID(userId)
224
- const db = getAppDB()
225
+ const db = new CouchDB(ctx.appId)
225
226
  let doc
226
227
  try {
227
228
  doc = await db.get(docId)
@@ -1,3 +1,4 @@
1
+ const CouchDB = require("../../../db")
1
2
  const viewTemplate = require("./viewBuilder")
2
3
  const { apiFileReturn } = require("../../../utilities/fileSystem")
3
4
  const exporters = require("./exporters")
@@ -5,14 +6,14 @@ const { saveView, getView, getViews, deleteView } = require("./utils")
5
6
  const { fetchView } = require("../row")
6
7
  const { getTable } = require("../table/utils")
7
8
  const { FieldTypes } = require("../../../constants")
8
- const { getAppDB } = require("@budibase/backend-core/context")
9
9
 
10
10
  exports.fetch = async ctx => {
11
- ctx.body = await getViews()
11
+ const db = new CouchDB(ctx.appId)
12
+ ctx.body = await getViews(db)
12
13
  }
13
14
 
14
15
  exports.save = async ctx => {
15
- const db = getAppDB()
16
+ const db = new CouchDB(ctx.appId)
16
17
  const { originalName, ...viewToSave } = ctx.request.body
17
18
  const view = viewTemplate(viewToSave)
18
19
 
@@ -20,7 +21,7 @@ exports.save = async ctx => {
20
21
  ctx.throw(400, "Cannot create view without a name")
21
22
  }
22
23
 
23
- await saveView(originalName, viewToSave.name, view)
24
+ await saveView(db, originalName, viewToSave.name, view)
24
25
 
25
26
  // add views to table document
26
27
  const table = await db.get(ctx.request.body.tableId)
@@ -41,9 +42,9 @@ exports.save = async ctx => {
41
42
  }
42
43
 
43
44
  exports.destroy = async ctx => {
44
- const db = getAppDB()
45
+ const db = new CouchDB(ctx.appId)
45
46
  const viewName = decodeURI(ctx.params.viewName)
46
- const view = await deleteView(viewName)
47
+ const view = await deleteView(db, viewName)
47
48
  const table = await db.get(view.meta.tableId)
48
49
  delete table.views[viewName]
49
50
  await db.put(table)
@@ -52,8 +53,9 @@ exports.destroy = async ctx => {
52
53
  }
53
54
 
54
55
  exports.exportView = async ctx => {
56
+ const db = new CouchDB(ctx.appId)
55
57
  const viewName = decodeURI(ctx.query.view)
56
- const view = await getView(viewName)
58
+ const view = await getView(db, viewName)
57
59
 
58
60
  const format = ctx.query.format
59
61
  if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
@@ -81,7 +83,7 @@ exports.exportView = async ctx => {
81
83
  let schema = view && view.meta && view.meta.schema
82
84
  if (!schema) {
83
85
  const tableId = ctx.params.tableId || view.meta.tableId
84
- const table = await getTable(tableId)
86
+ const table = await getTable(ctx.appId, tableId)
85
87
  schema = table.schema
86
88
  }
87
89
 
@@ -6,10 +6,8 @@ const {
6
6
  SEPARATOR,
7
7
  } = require("../../../db/utils")
8
8
  const env = require("../../../environment")
9
- const { getAppDB } = require("@budibase/backend-core/context")
10
9
 
11
- exports.getView = async viewName => {
12
- const db = getAppDB()
10
+ exports.getView = async (db, viewName) => {
13
11
  if (env.SELF_HOSTED) {
14
12
  const designDoc = await db.get("_design/database")
15
13
  return designDoc.views[viewName]
@@ -24,8 +22,7 @@ exports.getView = async viewName => {
24
22
  }
25
23
  }
26
24
 
27
- exports.getViews = async () => {
28
- const db = getAppDB()
25
+ exports.getViews = async db => {
29
26
  const response = []
30
27
  if (env.SELF_HOSTED) {
31
28
  const designDoc = await db.get("_design/database")
@@ -57,8 +54,7 @@ exports.getViews = async () => {
57
54
  return response
58
55
  }
59
56
 
60
- exports.saveView = async (originalName, viewName, viewTemplate) => {
61
- const db = getAppDB()
57
+ exports.saveView = async (db, originalName, viewName, viewTemplate) => {
62
58
  if (env.SELF_HOSTED) {
63
59
  const designDoc = await db.get("_design/database")
64
60
  designDoc.views = {
@@ -95,8 +91,7 @@ exports.saveView = async (originalName, viewName, viewTemplate) => {
95
91
  }
96
92
  }
97
93
 
98
- exports.deleteView = async viewName => {
99
- const db = getAppDB()
94
+ exports.deleteView = async (db, viewName) => {
100
95
  if (env.SELF_HOSTED) {
101
96
  const designDoc = await db.get("_design/database")
102
97
  const view = designDoc.views[viewName]
@@ -1,9 +1,9 @@
1
+ const CouchDB = require("../../db")
1
2
  const { generateWebhookID, getWebhookParams } = require("../../db/utils")
2
3
  const toJsonSchema = require("to-json-schema")
3
4
  const validate = require("jsonschema").validate
4
5
  const triggers = require("../../automations/triggers")
5
- const { getProdAppID } = require("@budibase/backend-core/db")
6
- const { getAppDB, updateAppId } = require("@budibase/backend-core/context")
6
+ const { getDeployedAppID } = require("@budibase/backend-core/db")
7
7
 
8
8
  const AUTOMATION_DESCRIPTION = "Generated from Webhook Schema"
9
9
 
@@ -23,7 +23,7 @@ exports.WebhookType = {
23
23
  }
24
24
 
25
25
  exports.fetch = async ctx => {
26
- const db = getAppDB()
26
+ const db = new CouchDB(ctx.appId)
27
27
  const response = await db.allDocs(
28
28
  getWebhookParams(null, {
29
29
  include_docs: true,
@@ -33,7 +33,7 @@ exports.fetch = async ctx => {
33
33
  }
34
34
 
35
35
  exports.save = async ctx => {
36
- const db = getAppDB()
36
+ const db = new CouchDB(ctx.appId)
37
37
  const webhook = ctx.request.body
38
38
  webhook.appId = ctx.appId
39
39
 
@@ -52,13 +52,12 @@ exports.save = async ctx => {
52
52
  }
53
53
 
54
54
  exports.destroy = async ctx => {
55
- const db = getAppDB()
55
+ const db = new CouchDB(ctx.appId)
56
56
  ctx.body = await db.remove(ctx.params.id, ctx.params.rev)
57
57
  }
58
58
 
59
59
  exports.buildSchema = async ctx => {
60
- updateAppId(ctx.params.instance)
61
- const db = getAppDB()
60
+ const db = new CouchDB(ctx.params.instance)
62
61
  const webhook = await db.get(ctx.params.id)
63
62
  webhook.bodySchema = toJsonSchema(ctx.request.body)
64
63
  // update the automation outputs
@@ -82,10 +81,9 @@ exports.buildSchema = async ctx => {
82
81
  }
83
82
 
84
83
  exports.trigger = async ctx => {
85
- const prodAppId = getProdAppID(ctx.params.instance)
86
- updateAppId(prodAppId)
84
+ const prodAppId = getDeployedAppID(ctx.params.instance)
87
85
  try {
88
- const db = getAppDB()
86
+ const db = new CouchDB(prodAppId)
89
87
  const webhook = await db.get(ctx.params.id)
90
88
  // validate against the schema
91
89
  if (webhook.bodySchema) {
@@ -0,0 +1,13 @@
1
+ const Router = require("@koa/router")
2
+ const controller = require("../controllers/hosting")
3
+ const authorized = require("../../middleware/authorized")
4
+ const { BUILDER } = require("@budibase/backend-core/permissions")
5
+
6
+ const router = Router()
7
+
8
+ router
9
+ .get("/api/hosting/urls", authorized(BUILDER), controller.fetchUrls)
10
+ // this isn't risky, doesn't return anything about apps other than names and URLs
11
+ .get("/api/hosting/apps", controller.getDeployedApps)
12
+
13
+ module.exports = router
@@ -20,11 +20,11 @@ const integrationRoutes = require("./integration")
20
20
  const permissionRoutes = require("./permission")
21
21
  const datasourceRoutes = require("./datasource")
22
22
  const queryRoutes = require("./query")
23
+ const hostingRoutes = require("./hosting")
23
24
  const backupRoutes = require("./backup")
24
25
  const metadataRoutes = require("./metadata")
25
26
  const devRoutes = require("./dev")
26
27
  const cloudRoutes = require("./cloud")
27
- const migrationRoutes = require("./migrations")
28
28
 
29
29
  exports.mainRoutes = [
30
30
  authRoutes,
@@ -46,6 +46,7 @@ exports.mainRoutes = [
46
46
  permissionRoutes,
47
47
  datasourceRoutes,
48
48
  queryRoutes,
49
+ hostingRoutes,
49
50
  backupRoutes,
50
51
  metadataRoutes,
51
52
  devRoutes,
@@ -54,7 +55,6 @@ exports.mainRoutes = [
54
55
  // this could be breaking as koa may recognise other routes as this
55
56
  tableRoutes,
56
57
  rowRoutes,
57
- migrationRoutes,
58
58
  ]
59
59
 
60
60
  exports.staticRoutes = staticRoutes
@@ -46,10 +46,5 @@ router
46
46
  )
47
47
  // TODO: this likely needs to be secured in some way
48
48
  .get("/:appId/:path*", controller.serveApp)
49
- .post(
50
- "/api/attachments/:datasourceId/url",
51
- authorized(PermissionTypes.TABLE, PermissionLevels.READ),
52
- controller.getSignedUploadURL
53
- )
54
49
 
55
50
  module.exports = router
@@ -53,8 +53,8 @@ describe("/applications", () => {
53
53
 
54
54
  describe("fetch", () => {
55
55
  it("lists all applications", async () => {
56
- await config.createApp("app1")
57
- await config.createApp("app2")
56
+ await config.createApp(request, "app1")
57
+ await config.createApp(request, "app2")
58
58
 
59
59
  const res = await request
60
60
  .get(`/api/applications?status=${AppStatus.DEV}`)
@@ -13,9 +13,10 @@ describe("/authenticate", () => {
13
13
 
14
14
  describe("fetch self", () => {
15
15
  it("should be able to fetch self", async () => {
16
+ const headers = await config.login()
16
17
  const res = await request
17
18
  .get(`/api/self`)
18
- .set(config.defaultHeaders())
19
+ .set(headers)
19
20
  .expect("Content-Type", /json/)
20
21
  .expect(200)
21
22
  expect(res.body._id).toEqual(generateUserMetadataID("us_uuid1"))
@@ -145,7 +145,6 @@ describe("/automations", () => {
145
145
  let table = await config.createTable()
146
146
  automation.definition.trigger.inputs.tableId = table._id
147
147
  automation.definition.steps[0].inputs.row.tableId = table._id
148
- automation.appId = config.appId
149
148
  automation = await config.createAutomation(automation)
150
149
  await setup.delay(500)
151
150
  const res = await testAutomation(config, automation)
@@ -0,0 +1,36 @@
1
+ // mock out node fetch for this
2
+ jest.mock("node-fetch")
3
+
4
+ const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
5
+ const setup = require("./utilities")
6
+
7
+ describe("/hosting", () => {
8
+ let request = setup.getRequest()
9
+ let config = setup.getConfig()
10
+ let app
11
+
12
+ afterAll(setup.afterAll)
13
+
14
+ beforeEach(async () => {
15
+ app = await config.init()
16
+ })
17
+
18
+ describe("fetchUrls", () => {
19
+ it("should be able to fetch current app URLs", async () => {
20
+ const res = await request
21
+ .get(`/api/hosting/urls`)
22
+ .set(config.defaultHeaders())
23
+ .expect("Content-Type", /json/)
24
+ .expect(200)
25
+ expect(res.body.app).toEqual(`http://localhost:10000/app`)
26
+ })
27
+
28
+ it("should apply authorization to endpoint", async () => {
29
+ await checkBuilderEndpoint({
30
+ config,
31
+ method: "GET",
32
+ url: `/api/hosting/urls`,
33
+ })
34
+ })
35
+ })
36
+ })
@@ -82,6 +82,7 @@ describe("run misc tests", () => {
82
82
  dataImport.schema[col] = { type: "string" }
83
83
  }
84
84
  await tableUtils.handleDataImport(
85
+ config.getAppId(),
85
86
  { userId: "test" },
86
87
  table,
87
88
  dataImport