@budibase/server 1.0.27-alpha.2 → 1.0.27-alpha.23

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 (350) hide show
  1. package/__mocks__/node-fetch.ts +18 -0
  2. package/builder/assets/{index.5522fcd5.css → index.39e01193.css} +1 -1
  3. package/builder/assets/{index.e9e2c4d7.js → index.52b37e8a.js} +247 -242
  4. package/builder/assets/{vendor.f9faf6ab.js → vendor.10e2ad1b.js} +12 -12
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +1128 -968
  7. package/coverage/coverage-final.json +70 -70
  8. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +3 -3
  10. package/coverage/lcov-report/api/controllers/application.js.html +73 -64
  11. package/coverage/lcov-report/api/controllers/auth.js.html +2 -2
  12. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/cloud.js.html +13 -4
  15. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/datasource.js.html +150 -48
  17. package/coverage/lcov-report/api/controllers/dev.js.html +3 -3
  18. package/coverage/lcov-report/api/controllers/hosting.js.html +3 -3
  19. package/coverage/lcov-report/api/controllers/index.html +20 -20
  20. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
  24. package/coverage/lcov-report/api/controllers/query/index.html +21 -21
  25. package/coverage/lcov-report/api/controllers/query/index.js.html +102 -120
  26. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -3
  27. package/coverage/lcov-report/api/controllers/role.js.html +2 -2
  28. package/coverage/lcov-report/api/controllers/routing.js.html +2 -2
  29. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/index.html +11 -11
  31. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/internal.js.html +38 -11
  33. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
  36. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/user.js.html +14 -5
  44. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/webhook.js.html +2 -2
  50. package/coverage/lcov-report/api/index.html +1 -1
  51. package/coverage/lcov-report/api/index.js.html +6 -6
  52. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/apikeys.js.html +2 -2
  54. package/coverage/lcov-report/api/routes/application.js.html +2 -2
  55. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/automation.js.html +2 -2
  57. package/coverage/lcov-report/api/routes/backup.js.html +2 -2
  58. package/coverage/lcov-report/api/routes/cloud.js.html +2 -2
  59. package/coverage/lcov-report/api/routes/component.js.html +2 -2
  60. package/coverage/lcov-report/api/routes/datasource.js.html +2 -2
  61. package/coverage/lcov-report/api/routes/deploy.js.html +2 -2
  62. package/coverage/lcov-report/api/routes/dev.js.html +2 -2
  63. package/coverage/lcov-report/api/routes/hosting.js.html +2 -2
  64. package/coverage/lcov-report/api/routes/index.html +1 -1
  65. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/integration.js.html +2 -2
  67. package/coverage/lcov-report/api/routes/layout.js.html +2 -2
  68. package/coverage/lcov-report/api/routes/metadata.js.html +2 -2
  69. package/coverage/lcov-report/api/routes/permission.js.html +12 -3
  70. package/coverage/lcov-report/api/routes/query.js.html +25 -4
  71. package/coverage/lcov-report/api/routes/role.js.html +2 -2
  72. package/coverage/lcov-report/api/routes/routing.js.html +2 -2
  73. package/coverage/lcov-report/api/routes/row.js.html +2 -2
  74. package/coverage/lcov-report/api/routes/screen.js.html +2 -2
  75. package/coverage/lcov-report/api/routes/script.js.html +2 -2
  76. package/coverage/lcov-report/api/routes/static.js.html +2 -2
  77. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  78. package/coverage/lcov-report/api/routes/templates.js.html +2 -2
  79. package/coverage/lcov-report/api/routes/user.js.html +2 -2
  80. package/coverage/lcov-report/api/routes/view.js.html +2 -2
  81. package/coverage/lcov-report/api/routes/webhook.js.html +2 -2
  82. package/coverage/lcov-report/automations/actions.js.html +1 -1
  83. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  84. package/coverage/lcov-report/automations/bullboard.js.html +2 -2
  85. package/coverage/lcov-report/automations/index.html +1 -1
  86. package/coverage/lcov-report/automations/index.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/executeQuery.js.html +32 -8
  93. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/index.html +11 -11
  96. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  113. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  114. package/coverage/lcov-report/automations/utils.js.html +6 -6
  115. package/coverage/lcov-report/constants/index.html +1 -1
  116. package/coverage/lcov-report/constants/index.js.html +4 -4
  117. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  118. package/coverage/lcov-report/constants/screens.js.html +2 -2
  119. package/coverage/lcov-report/db/client.js.html +2 -2
  120. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  121. package/coverage/lcov-report/db/index.html +1 -1
  122. package/coverage/lcov-report/db/index.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  126. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  127. package/coverage/lcov-report/db/newid.js.html +2 -2
  128. package/coverage/lcov-report/db/utils.js.html +19 -19
  129. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  130. package/coverage/lcov-report/events/index.html +1 -1
  131. package/coverage/lcov-report/events/index.js.html +1 -1
  132. package/coverage/lcov-report/events/utils.js.html +1 -1
  133. package/coverage/lcov-report/index.html +69 -69
  134. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  135. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  136. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  137. package/coverage/lcov-report/middleware/authorized.js.html +12 -12
  138. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  139. package/coverage/lcov-report/middleware/currentapp.js.html +79 -40
  140. package/coverage/lcov-report/middleware/index.html +10 -10
  141. package/coverage/lcov-report/middleware/joi-validator.js.html +9 -9
  142. package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
  143. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  144. package/coverage/lcov-report/middleware/usageQuota.js.html +2 -2
  145. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  146. package/coverage/lcov-report/threads/automation.js.html +3 -3
  147. package/coverage/lcov-report/threads/index.html +31 -31
  148. package/coverage/lcov-report/threads/index.js.html +12 -12
  149. package/coverage/lcov-report/threads/query.js.html +531 -87
  150. package/coverage/lcov-report/threads/utils.js.html +210 -15
  151. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  152. package/coverage/lcov-report/utilities/budibaseDir.js.html +2 -2
  153. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  154. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  155. package/coverage/lcov-report/utilities/global.js.html +28 -19
  156. package/coverage/lcov-report/utilities/index.html +4 -4
  157. package/coverage/lcov-report/utilities/index.js.html +13 -13
  158. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  159. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  160. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  162. package/coverage/lcov-report/utilities/rowProcessor/index.html +19 -19
  163. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +211 -10
  164. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  165. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  166. package/coverage/lcov-report/utilities/security.js.html +13 -4
  167. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  168. package/coverage/lcov-report/utilities/users.js.html +1 -1
  169. package/coverage/lcov-report/utilities/workerRequests.js.html +22 -22
  170. package/coverage/lcov.info +1921 -1630
  171. package/dist/api/controllers/apikeys.js +2 -2
  172. package/dist/api/controllers/application.js +4 -4
  173. package/dist/api/controllers/auth.js +1 -1
  174. package/dist/api/controllers/cloud.js +2 -2
  175. package/dist/api/controllers/datasource.js +29 -0
  176. package/dist/api/controllers/deploy/index.js +2 -2
  177. package/dist/api/controllers/dev.js +2 -2
  178. package/dist/api/controllers/hosting.js +2 -2
  179. package/dist/api/controllers/permission.js +2 -2
  180. package/dist/api/controllers/query/import/sources/base/index.js +2 -1
  181. package/dist/api/controllers/query/import/sources/curl.js +11 -5
  182. package/dist/api/controllers/query/import/sources/openapi2.js +8 -5
  183. package/dist/api/controllers/query/index.js +46 -47
  184. package/dist/api/controllers/query/validation.js +2 -1
  185. package/dist/api/controllers/role.js +1 -1
  186. package/dist/api/controllers/routing.js +1 -1
  187. package/dist/api/controllers/row/internal.js +14 -6
  188. package/dist/api/controllers/row/internalSearch.js +1 -1
  189. package/dist/api/controllers/screen.js +1 -1
  190. package/dist/api/controllers/user.js +3 -3
  191. package/dist/api/controllers/webhook.js +1 -1
  192. package/dist/api/index.js +1 -1
  193. package/dist/api/routes/apikeys.js +1 -1
  194. package/dist/api/routes/application.js +1 -1
  195. package/dist/api/routes/automation.js +1 -1
  196. package/dist/api/routes/backup.js +1 -1
  197. package/dist/api/routes/cloud.js +1 -1
  198. package/dist/api/routes/component.js +1 -1
  199. package/dist/api/routes/datasource.js +1 -1
  200. package/dist/api/routes/deploy.js +1 -1
  201. package/dist/api/routes/dev.js +1 -1
  202. package/dist/api/routes/hosting.js +1 -1
  203. package/dist/api/routes/integration.js +1 -1
  204. package/dist/api/routes/layout.js +1 -1
  205. package/dist/api/routes/metadata.js +1 -1
  206. package/dist/api/routes/permission.js +1 -1
  207. package/dist/api/routes/query.js +4 -2
  208. package/dist/api/routes/role.js +1 -1
  209. package/dist/api/routes/routing.js +1 -1
  210. package/dist/api/routes/row.js +1 -1
  211. package/dist/api/routes/screen.js +1 -1
  212. package/dist/api/routes/script.js +1 -1
  213. package/dist/api/routes/static.js +1 -1
  214. package/dist/api/routes/table.js +1 -1
  215. package/dist/api/routes/templates.js +1 -1
  216. package/dist/api/routes/tests/utilities/TestFunctions.js +1 -1
  217. package/dist/api/routes/user.js +1 -1
  218. package/dist/api/routes/view.js +1 -1
  219. package/dist/api/routes/webhook.js +1 -1
  220. package/dist/app.js +1 -1
  221. package/dist/automations/bullboard.js +1 -1
  222. package/dist/automations/steps/executeQuery.js +9 -2
  223. package/dist/automations/utils.js +1 -1
  224. package/dist/constants/index.js +3 -3
  225. package/dist/constants/screens.js +1 -1
  226. package/dist/db/client.js +1 -1
  227. package/dist/db/utils.js +1 -1
  228. package/dist/environment.js +1 -0
  229. package/dist/integrations/base/sqlTable.js +1 -1
  230. package/dist/integrations/dynamodb.js +19 -0
  231. package/dist/integrations/rest.js +71 -22
  232. package/dist/integrations/s3.js +17 -8
  233. package/dist/integrations/utils.js +40 -37
  234. package/dist/middleware/authorized.js +2 -2
  235. package/dist/middleware/builder.js +2 -2
  236. package/dist/middleware/currentapp.js +15 -6
  237. package/dist/middleware/usageQuota.js +1 -1
  238. package/dist/package.json +5 -4
  239. package/dist/tests/utilities/TestConfiguration.js +55 -8
  240. package/dist/tests/utilities/structures.js +2 -2
  241. package/dist/threads/automation.js +2 -2
  242. package/dist/threads/query.js +195 -50
  243. package/dist/threads/utils.js +62 -1
  244. package/dist/tsconfig.tsbuildinfo +1 -1
  245. package/dist/utilities/budibaseDir.js +1 -1
  246. package/dist/utilities/fileSystem/utilities.js +2 -1
  247. package/dist/utilities/global.js +5 -5
  248. package/dist/utilities/index.js +2 -2
  249. package/dist/utilities/redis.js +1 -1
  250. package/dist/utilities/rowProcessor/index.js +63 -0
  251. package/dist/utilities/security.js +2 -2
  252. package/dist/utilities/usageQuota.js +2 -2
  253. package/dist/utilities/workerRequests.js +3 -3
  254. package/package.json +6 -5
  255. package/scripts/replicateApp.js +1 -1
  256. package/src/api/controllers/apikeys.js +2 -2
  257. package/src/api/controllers/application.js +7 -4
  258. package/src/api/controllers/auth.js +1 -1
  259. package/src/api/controllers/cloud.js +5 -2
  260. package/src/api/controllers/datasource.js +34 -0
  261. package/src/api/controllers/deploy/index.js +2 -2
  262. package/src/api/controllers/dev.js +2 -2
  263. package/src/api/controllers/hosting.js +2 -2
  264. package/src/api/controllers/permission.js +2 -2
  265. package/src/api/controllers/query/import/sources/base/index.ts +3 -1
  266. package/src/api/controllers/query/import/sources/curl.ts +12 -4
  267. package/src/api/controllers/query/import/sources/openapi2.ts +9 -5
  268. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +2 -3
  269. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +6 -7
  270. package/src/api/controllers/query/import/tests/index.spec.js +0 -6
  271. package/src/api/controllers/query/index.js +49 -55
  272. package/src/api/controllers/query/validation.js +2 -1
  273. package/src/api/controllers/role.js +1 -1
  274. package/src/api/controllers/routing.js +1 -1
  275. package/src/api/controllers/row/internal.js +14 -5
  276. package/src/api/controllers/row/internalSearch.js +1 -1
  277. package/src/api/controllers/screen.js +1 -1
  278. package/src/api/controllers/user.js +6 -3
  279. package/src/api/controllers/webhook.js +1 -1
  280. package/src/api/index.js +1 -1
  281. package/src/api/routes/apikeys.js +1 -1
  282. package/src/api/routes/application.js +1 -1
  283. package/src/api/routes/automation.js +1 -1
  284. package/src/api/routes/backup.js +1 -1
  285. package/src/api/routes/cloud.js +1 -1
  286. package/src/api/routes/component.js +1 -1
  287. package/src/api/routes/datasource.js +1 -1
  288. package/src/api/routes/deploy.js +1 -1
  289. package/src/api/routes/dev.js +1 -1
  290. package/src/api/routes/hosting.js +1 -1
  291. package/src/api/routes/integration.js +1 -1
  292. package/src/api/routes/layout.js +1 -1
  293. package/src/api/routes/metadata.js +1 -1
  294. package/src/api/routes/permission.js +4 -1
  295. package/src/api/routes/query.js +9 -2
  296. package/src/api/routes/role.js +1 -1
  297. package/src/api/routes/routing.js +1 -1
  298. package/src/api/routes/row.js +1 -1
  299. package/src/api/routes/screen.js +1 -1
  300. package/src/api/routes/script.js +1 -1
  301. package/src/api/routes/static.js +1 -1
  302. package/src/api/routes/table.js +1 -1
  303. package/src/api/routes/templates.js +1 -1
  304. package/src/api/routes/tests/datasource.spec.js +45 -0
  305. package/src/api/routes/tests/permissions.spec.js +1 -1
  306. package/src/api/routes/tests/query.spec.js +70 -1
  307. package/src/api/routes/tests/role.spec.js +2 -2
  308. package/src/api/routes/tests/routing.spec.js +1 -1
  309. package/src/api/routes/tests/user.spec.js +1 -1
  310. package/src/api/routes/tests/utilities/TestFunctions.js +1 -1
  311. package/src/api/routes/user.js +1 -1
  312. package/src/api/routes/view.js +1 -1
  313. package/src/api/routes/webhook.js +1 -1
  314. package/src/app.ts +1 -1
  315. package/src/automations/bullboard.js +1 -1
  316. package/src/automations/steps/executeQuery.js +10 -2
  317. package/src/automations/utils.js +1 -1
  318. package/src/constants/index.js +3 -3
  319. package/src/constants/screens.js +1 -1
  320. package/src/db/client.js +1 -1
  321. package/src/db/utils.js +1 -1
  322. package/src/definitions/datasource.ts +25 -0
  323. package/src/environment.js +1 -0
  324. package/src/integrations/base/sqlTable.ts +1 -1
  325. package/src/integrations/dynamodb.ts +18 -0
  326. package/src/integrations/rest.ts +103 -20
  327. package/src/integrations/s3.ts +18 -7
  328. package/src/integrations/tests/rest.spec.js +287 -24
  329. package/src/integrations/utils.ts +8 -7
  330. package/src/middleware/authorized.js +2 -2
  331. package/src/middleware/builder.js +2 -2
  332. package/src/middleware/currentapp.js +20 -7
  333. package/src/middleware/tests/authorized.spec.js +2 -2
  334. package/src/middleware/tests/currentapp.spec.js +35 -41
  335. package/src/middleware/tests/usageQuota.spec.js +1 -1
  336. package/src/middleware/usageQuota.js +1 -1
  337. package/src/tests/utilities/TestConfiguration.js +65 -8
  338. package/src/tests/utilities/structures.js +2 -2
  339. package/src/threads/automation.js +2 -2
  340. package/src/threads/query.js +203 -55
  341. package/src/threads/utils.js +66 -1
  342. package/src/utilities/budibaseDir.js +1 -1
  343. package/src/utilities/fileSystem/utilities.js +3 -1
  344. package/src/utilities/global.js +8 -5
  345. package/src/utilities/index.js +2 -2
  346. package/src/utilities/redis.js +1 -1
  347. package/src/utilities/rowProcessor/index.js +67 -0
  348. package/src/utilities/security.js +5 -2
  349. package/src/utilities/usageQuota.js +2 -2
  350. package/src/utilities/workerRequests.js +3 -3
@@ -1,4 +1,4 @@
1
- const { BUILTIN_ROLE_IDS } = require("@budibase/auth/roles")
1
+ const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
2
2
  const env = require("../../environment")
3
3
  const {
4
4
  basicTable,
@@ -15,14 +15,14 @@ const {
15
15
  const controllers = require("./controllers")
16
16
  const supertest = require("supertest")
17
17
  const { cleanup } = require("../../utilities/fileSystem")
18
- const { Cookies, Headers } = require("@budibase/auth").constants
19
- const { jwt } = require("@budibase/auth").auth
20
- const auth = require("@budibase/auth")
21
- const { getGlobalDB } = require("@budibase/auth/tenancy")
22
- const { createASession } = require("@budibase/auth/sessions")
23
- const { user: userCache } = require("@budibase/auth/cache")
18
+ const { Cookies, Headers } = require("@budibase/backend-core/constants")
19
+ const { jwt } = require("@budibase/backend-core/auth")
20
+ const core = require("@budibase/backend-core")
21
+ const { getGlobalDB } = require("@budibase/backend-core/tenancy")
22
+ const { createASession } = require("@budibase/backend-core/sessions")
23
+ const { user: userCache } = require("@budibase/backend-core/cache")
24
24
  const CouchDB = require("../../db")
25
- auth.init(CouchDB)
25
+ core.init(CouchDB)
26
26
 
27
27
  const GLOBAL_USER_ID = "us_uuid1"
28
28
  const EMAIL = "babs@babs.com"
@@ -316,6 +316,63 @@ class TestConfiguration {
316
316
  return this.datasource
317
317
  }
318
318
 
319
+ async updateDatasource(datasource) {
320
+ const response = await this._req(
321
+ datasource,
322
+ { datasourceId: datasource._id },
323
+ controllers.datasource.update
324
+ )
325
+ this.datasource = response.datasource
326
+ return this.datasource
327
+ }
328
+
329
+ async restDatasource(cfg) {
330
+ return this.createDatasource({
331
+ datasource: {
332
+ ...basicDatasource().datasource,
333
+ source: "REST",
334
+ config: cfg || {},
335
+ },
336
+ })
337
+ }
338
+
339
+ async dynamicVariableDatasource() {
340
+ let datasource = await this.restDatasource()
341
+ const basedOnQuery = await this.createQuery({
342
+ ...basicQuery(datasource._id),
343
+ fields: {
344
+ path: "www.google.com",
345
+ },
346
+ })
347
+ datasource = await this.updateDatasource({
348
+ ...datasource,
349
+ config: {
350
+ dynamicVariables: [
351
+ {
352
+ queryId: basedOnQuery._id,
353
+ name: "variable3",
354
+ value: "{{ data.0.[value] }}",
355
+ },
356
+ ],
357
+ },
358
+ })
359
+ return { datasource, query: basedOnQuery }
360
+ }
361
+
362
+ async previewQuery(request, config, datasource, fields) {
363
+ return request
364
+ .post(`/api/queries/preview`)
365
+ .send({
366
+ datasourceId: datasource._id,
367
+ parameters: {},
368
+ fields,
369
+ queryVerb: "read",
370
+ })
371
+ .set(config.defaultHeaders())
372
+ .expect("Content-Type", /json/)
373
+ .expect(200)
374
+ }
375
+
319
376
  async createQuery(config = null) {
320
377
  if (!this.datasource && !config) {
321
378
  throw "No data source created for query."
@@ -1,5 +1,5 @@
1
- const { BUILTIN_ROLE_IDS } = require("@budibase/auth/roles")
2
- const { BUILTIN_PERMISSION_IDS } = require("@budibase/auth/permissions")
1
+ const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
2
+ const { BUILTIN_PERMISSION_IDS } = require("@budibase/backend-core/permissions")
3
3
  const { createHomeScreen } = require("../../constants/screens")
4
4
  const { EMPTY_LAYOUT } = require("../../constants/layouts")
5
5
  const { cloneDeep } = require("lodash/fp")
@@ -4,10 +4,10 @@ const actions = require("../automations/actions")
4
4
  const automationUtils = require("../automations/automationUtils")
5
5
  const AutomationEmitter = require("../events/AutomationEmitter")
6
6
  const { processObject } = require("@budibase/string-templates")
7
- const { DEFAULT_TENANT_ID } = require("@budibase/auth").constants
7
+ const { DEFAULT_TENANT_ID } = require("@budibase/backend-core/constants")
8
8
  const CouchDB = require("../db")
9
9
  const { DocumentTypes, isDevAppID } = require("../db/utils")
10
- const { doInTenant } = require("@budibase/auth/tenancy")
10
+ const { doInTenant } = require("@budibase/backend-core/tenancy")
11
11
  const usage = require("../utilities/usageQuota")
12
12
  const { definitions: triggerDefs } = require("../automations/triggerInfo")
13
13
 
@@ -1,77 +1,225 @@
1
- require("./utils").threadSetup()
1
+ const threadUtils = require("./utils")
2
+ threadUtils.threadSetup()
2
3
  const ScriptRunner = require("../utilities/scriptRunner")
3
4
  const { integrations } = require("../integrations")
5
+ const { processStringSync } = require("@budibase/string-templates")
6
+ const CouchDB = require("../db")
4
7
 
5
- function formatResponse(resp) {
6
- if (typeof resp === "string") {
7
- try {
8
- resp = JSON.parse(resp)
9
- } catch (err) {
10
- resp = { response: resp }
11
- }
8
+ const IS_TRIPLE_BRACE = new RegExp(/^{{3}.*}{3}$/)
9
+ const IS_HANDLEBARS = new RegExp(/^{{2}.*}{2}$/)
10
+
11
+ class QueryRunner {
12
+ constructor(input, flags = { noRecursiveQuery: false }) {
13
+ this.appId = input.appId
14
+ this.datasource = input.datasource
15
+ this.queryVerb = input.queryVerb
16
+ this.fields = input.fields
17
+ this.parameters = input.parameters
18
+ this.pagination = input.pagination
19
+ this.transformer = input.transformer
20
+ this.queryId = input.queryId
21
+ this.noRecursiveQuery = flags.noRecursiveQuery
22
+ this.cachedVariables = []
23
+ // allows the response from a query to be stored throughout this
24
+ // execution so that if it needs to be re-used for another variable
25
+ // it can be
26
+ this.queryResponse = {}
27
+ this.hasRerun = false
12
28
  }
13
- return resp
14
- }
15
29
 
16
- function hasExtraData(response) {
17
- return (
18
- typeof response === "object" &&
19
- !Array.isArray(response) &&
20
- response.data != null &&
21
- response.info != null
22
- )
23
- }
30
+ async execute() {
31
+ let { datasource, fields, queryVerb, transformer } = this
32
+ // pre-query, make sure datasource variables are added to parameters
33
+ const parameters = await this.addDatasourceVariables()
34
+ let query = this.enrichQueryFields(fields, parameters)
24
35
 
25
- async function runAndTransform(datasource, queryVerb, query, transformer) {
26
- const Integration = integrations[datasource.source]
27
- if (!Integration) {
28
- throw "Integration type does not exist."
29
- }
30
- const integration = new Integration(datasource.config)
31
-
32
- let output = formatResponse(await integration[queryVerb](query))
33
- let rows = output,
34
- info = undefined,
35
- extra = undefined
36
- if (hasExtraData(output)) {
37
- rows = output.data
38
- info = output.info
39
- extra = output.extra
36
+ // Add pagination values for REST queries
37
+ if (this.pagination) {
38
+ query.paginationValues = this.pagination
39
+ }
40
+
41
+ const Integration = integrations[datasource.source]
42
+ if (!Integration) {
43
+ throw "Integration type does not exist."
44
+ }
45
+ const integration = new Integration(datasource.config)
46
+
47
+ let output = threadUtils.formatResponse(await integration[queryVerb](query))
48
+ let rows = output,
49
+ info = undefined,
50
+ extra = undefined,
51
+ pagination = undefined
52
+ if (threadUtils.hasExtraData(output)) {
53
+ rows = output.data
54
+ info = output.info
55
+ extra = output.extra
56
+ pagination = output.pagination
57
+ }
58
+
59
+ // transform as required
60
+ if (transformer) {
61
+ const runner = new ScriptRunner(transformer, {
62
+ data: rows,
63
+ params: parameters,
64
+ })
65
+ rows = runner.execute()
66
+ }
67
+
68
+ // if the request fails we retry once, invalidating the cached value
69
+ if (
70
+ info &&
71
+ info.code >= 400 &&
72
+ this.cachedVariables.length > 0 &&
73
+ !this.hasRerun
74
+ ) {
75
+ this.hasRerun = true
76
+ // invalidate the cache value
77
+ await threadUtils.invalidateDynamicVariables(this.cachedVariables)
78
+ return this.execute()
79
+ }
80
+
81
+ // needs to an array for next step
82
+ if (!Array.isArray(rows)) {
83
+ rows = [rows]
84
+ }
85
+
86
+ // map into JSON if just raw primitive here
87
+ if (rows.find(row => typeof row !== "object")) {
88
+ rows = rows.map(value => ({ value }))
89
+ }
90
+
91
+ // get all the potential fields in the schema
92
+ let keys = rows.flatMap(Object.keys)
93
+
94
+ if (integration.end) {
95
+ integration.end()
96
+ }
97
+
98
+ return { rows, keys, info, extra, pagination }
40
99
  }
41
100
 
42
- // transform as required
43
- if (transformer) {
44
- const runner = new ScriptRunner(transformer, { data: rows })
45
- rows = runner.execute()
101
+ async runAnotherQuery(queryId, parameters) {
102
+ const db = new CouchDB(this.appId)
103
+ const query = await db.get(queryId)
104
+ const datasource = await db.get(query.datasourceId)
105
+ return new QueryRunner(
106
+ {
107
+ appId: this.appId,
108
+ datasource,
109
+ queryVerb: query.queryVerb,
110
+ fields: query.fields,
111
+ parameters,
112
+ transformer: query.transformer,
113
+ },
114
+ { noRecursiveQuery: true }
115
+ ).execute()
46
116
  }
47
117
 
48
- // needs to an array for next step
49
- if (!Array.isArray(rows)) {
50
- rows = [rows]
118
+ async getDynamicVariable(variable) {
119
+ let { parameters } = this
120
+ const queryId = variable.queryId,
121
+ name = variable.name
122
+ let value = await threadUtils.checkCacheForDynamicVariable(queryId, name)
123
+ if (!value) {
124
+ value = this.queryResponse[queryId]
125
+ ? this.queryResponse[queryId]
126
+ : await this.runAnotherQuery(queryId, parameters)
127
+ // store incase this query is to be called again
128
+ this.queryResponse[queryId] = value
129
+ await threadUtils.storeDynamicVariable(queryId, name, value)
130
+ } else {
131
+ this.cachedVariables.push({ queryId, name })
132
+ }
133
+ return value
51
134
  }
52
135
 
53
- // map into JSON if just raw primitive here
54
- if (rows.find(row => typeof row !== "object")) {
55
- rows = rows.map(value => ({ value }))
136
+ async addDatasourceVariables() {
137
+ let { datasource, parameters, fields } = this
138
+ if (!datasource || !datasource.config) {
139
+ return parameters
140
+ }
141
+ const staticVars = datasource.config.staticVariables || {}
142
+ const dynamicVars = datasource.config.dynamicVariables || []
143
+ for (let [key, value] of Object.entries(staticVars)) {
144
+ if (!parameters[key]) {
145
+ parameters[key] = value
146
+ }
147
+ }
148
+ if (!this.noRecursiveQuery) {
149
+ // need to see if this uses any variables
150
+ const stringFields = JSON.stringify(fields)
151
+ const foundVars = dynamicVars.filter(variable => {
152
+ // don't allow a query to use its own dynamic variable (loop)
153
+ if (variable.queryId === this.queryId) {
154
+ return false
155
+ }
156
+ // look for {{ variable }} but allow spaces between handlebars
157
+ const regex = new RegExp(`{{[ ]*${variable.name}[ ]*}}`)
158
+ return regex.test(stringFields)
159
+ })
160
+ const dynamics = foundVars.map(dynVar => this.getDynamicVariable(dynVar))
161
+ const responses = await Promise.all(dynamics)
162
+ for (let i = 0; i < foundVars.length; i++) {
163
+ const variable = foundVars[i]
164
+ parameters[variable.name] = processStringSync(variable.value, {
165
+ data: responses[i].rows,
166
+ info: responses[i].extra,
167
+ })
168
+ // make sure its known that this uses dynamic variables in case it fails
169
+ this.hasDynamicVariables = true
170
+ }
171
+ }
172
+ return parameters
56
173
  }
57
174
 
58
- // get all the potential fields in the schema
59
- let keys = rows.flatMap(Object.keys)
175
+ enrichQueryFields(fields, parameters = {}) {
176
+ const enrichedQuery = {}
60
177
 
61
- if (integration.end) {
62
- integration.end()
178
+ // enrich the fields with dynamic parameters
179
+ for (let key of Object.keys(fields)) {
180
+ if (fields[key] == null) {
181
+ continue
182
+ }
183
+ if (typeof fields[key] === "object") {
184
+ // enrich nested fields object
185
+ enrichedQuery[key] = this.enrichQueryFields(fields[key], parameters)
186
+ } else if (typeof fields[key] === "string") {
187
+ // enrich string value as normal
188
+ let value = fields[key]
189
+ // add triple brace to avoid escaping e.g. '=' in cookie header
190
+ if (IS_HANDLEBARS.test(value) && !IS_TRIPLE_BRACE.test(value)) {
191
+ value = `{${value}}`
192
+ }
193
+ enrichedQuery[key] = processStringSync(value, parameters, {
194
+ noHelpers: true,
195
+ })
196
+ } else {
197
+ enrichedQuery[key] = fields[key]
198
+ }
199
+ }
200
+ if (
201
+ enrichedQuery.json ||
202
+ enrichedQuery.customData ||
203
+ enrichedQuery.requestBody
204
+ ) {
205
+ try {
206
+ enrichedQuery.json = JSON.parse(
207
+ enrichedQuery.json ||
208
+ enrichedQuery.customData ||
209
+ enrichedQuery.requestBody
210
+ )
211
+ } catch (err) {
212
+ // no json found, ignore
213
+ }
214
+ delete enrichedQuery.customData
215
+ }
216
+ return enrichedQuery
63
217
  }
64
-
65
- return { rows, keys, info, extra }
66
218
  }
67
219
 
68
220
  module.exports = (input, callback) => {
69
- runAndTransform(
70
- input.datasource,
71
- input.queryVerb,
72
- input.query,
73
- input.transformer
74
- )
221
+ const Runner = new QueryRunner(input)
222
+ Runner.execute()
75
223
  .then(response => {
76
224
  callback(null, response)
77
225
  })
@@ -1,6 +1,22 @@
1
1
  const env = require("../environment")
2
2
  const CouchDB = require("../db")
3
- const { init } = require("@budibase/auth")
3
+ const { init } = require("@budibase/backend-core")
4
+ const redis = require("@budibase/backend-core/redis")
5
+ const { SEPARATOR } = require("@budibase/backend-core/db")
6
+
7
+ const VARIABLE_TTL_SECONDS = 3600
8
+ let client
9
+
10
+ async function getClient() {
11
+ if (!client) {
12
+ client = await new redis.Client(redis.utils.Databases.QUERY_VARS).init()
13
+ }
14
+ return client
15
+ }
16
+
17
+ process.on("exit", async () => {
18
+ if (client) await client.finish()
19
+ })
4
20
 
5
21
  exports.threadSetup = () => {
6
22
  // don't run this if not threading
@@ -11,3 +27,52 @@ exports.threadSetup = () => {
11
27
  env.setInThread()
12
28
  init(CouchDB)
13
29
  }
30
+
31
+ function makeVariableKey(queryId, variable) {
32
+ return `${queryId}${SEPARATOR}${variable}`
33
+ }
34
+
35
+ exports.checkCacheForDynamicVariable = async (queryId, variable) => {
36
+ const cache = await getClient()
37
+ return cache.get(makeVariableKey(queryId, variable))
38
+ }
39
+
40
+ exports.invalidateDynamicVariables = async cachedVars => {
41
+ const cache = await getClient()
42
+ let promises = []
43
+ for (let variable of cachedVars) {
44
+ promises.push(
45
+ cache.delete(makeVariableKey(variable.queryId, variable.name))
46
+ )
47
+ }
48
+ await Promise.all(promises)
49
+ }
50
+
51
+ exports.storeDynamicVariable = async (queryId, variable, value) => {
52
+ const cache = await getClient()
53
+ await cache.store(
54
+ makeVariableKey(queryId, variable),
55
+ value,
56
+ VARIABLE_TTL_SECONDS
57
+ )
58
+ }
59
+
60
+ exports.formatResponse = resp => {
61
+ if (typeof resp === "string") {
62
+ try {
63
+ resp = JSON.parse(resp)
64
+ } catch (err) {
65
+ resp = { response: resp }
66
+ }
67
+ }
68
+ return resp
69
+ }
70
+
71
+ exports.hasExtraData = response => {
72
+ return (
73
+ typeof response === "object" &&
74
+ !Array.isArray(response) &&
75
+ response.data != null &&
76
+ response.info != null
77
+ )
78
+ }
@@ -1,7 +1,7 @@
1
1
  const { join } = require("./centralPath")
2
2
  const { homedir } = require("os")
3
3
  const env = require("../environment")
4
- const { budibaseTempDir } = require("@budibase/auth").objectStore
4
+ const { budibaseTempDir } = require("@budibase/backend-core/objectStore")
5
5
 
6
6
  module.exports.budibaseAppsDir = function () {
7
7
  return env.BUDIBASE_DIR || join(homedir(), ".budibase")
@@ -2,13 +2,14 @@ const {
2
2
  ObjectStore,
3
3
  makeSureBucketExists,
4
4
  upload,
5
+ deleteFiles,
5
6
  streamUpload,
6
7
  retrieve,
7
8
  retrieveToTmp,
8
9
  deleteFolder,
9
10
  uploadDirectory,
10
11
  downloadTarball,
11
- } = require("@budibase/auth").objectStore
12
+ } = require("@budibase/backend-core/objectStore")
12
13
 
13
14
  /***********************************
14
15
  * NOTE *
@@ -28,3 +29,4 @@ exports.retrieveToTmp = retrieveToTmp
28
29
  exports.deleteFolder = deleteFolder
29
30
  exports.uploadDirectory = uploadDirectory
30
31
  exports.downloadTarball = downloadTarball
32
+ exports.deleteFiles = deleteFiles
@@ -2,11 +2,14 @@ const {
2
2
  getMultiIDParams,
3
3
  getGlobalIDFromUserMetadataID,
4
4
  } = require("../db/utils")
5
- const { BUILTIN_ROLE_IDS } = require("@budibase/auth/roles")
6
- const { getDeployedAppID } = require("@budibase/auth/db")
7
- const { getGlobalUserParams } = require("@budibase/auth/db")
8
- const { user: userCache } = require("@budibase/auth/cache")
9
- const { getGlobalDB, isUserInAppTenant } = require("@budibase/auth/tenancy")
5
+ const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
6
+ const { getDeployedAppID } = require("@budibase/backend-core/db")
7
+ const { getGlobalUserParams } = require("@budibase/backend-core/db")
8
+ const { user: userCache } = require("@budibase/backend-core/cache")
9
+ const {
10
+ getGlobalDB,
11
+ isUserInAppTenant,
12
+ } = require("@budibase/backend-core/tenancy")
10
13
  const env = require("../environment")
11
14
 
12
15
  exports.updateAppRole = (appId, user) => {
@@ -1,6 +1,6 @@
1
1
  const env = require("../environment")
2
2
  const { OBJ_STORE_DIRECTORY } = require("../constants")
3
- const { sanitizeKey } = require("@budibase/auth/src/objectStore")
3
+ const { sanitizeKey } = require("@budibase/backend-core/objectStore")
4
4
  const CouchDB = require("../db")
5
5
  const { generateMetadataID } = require("../db/utils")
6
6
  const Readable = require("stream").Readable
@@ -34,7 +34,7 @@ exports.checkSlashesInUrl = url => {
34
34
  * @return {string} The base URL of the object store (MinIO or S3).
35
35
  */
36
36
  exports.objectStoreUrl = () => {
37
- if (env.SELF_HOSTED) {
37
+ if (env.SELF_HOSTED || env.MINIO_URL) {
38
38
  // can use a relative url for this as all goes through the proxy (this is hosted in minio)
39
39
  return OBJ_STORE_DIRECTORY
40
40
  } else {
@@ -1,4 +1,4 @@
1
- const { Client, utils } = require("@budibase/auth/redis")
1
+ const { Client, utils } = require("@budibase/backend-core/redis")
2
2
  const { getGlobalIDFromUserMetadataID } = require("../db/utils")
3
3
 
4
4
  const APP_DEV_LOCK_SECONDS = 600
@@ -3,6 +3,14 @@ const { cloneDeep } = require("lodash/fp")
3
3
  const { FieldTypes, AutoFieldSubTypes } = require("../../constants")
4
4
  const { attachmentsRelativeURL } = require("../index")
5
5
  const { processFormulas } = require("./utils")
6
+ const { deleteFiles } = require("../../utilities/fileSystem/utilities")
7
+ const { ObjectStoreBuckets } = require("../../constants")
8
+ const {
9
+ isProdAppID,
10
+ getDeployedAppID,
11
+ dbExists,
12
+ } = require("@budibase/backend-core/db")
13
+ const CouchDB = require("../../db")
6
14
 
7
15
  const BASE_AUTO_ID = 1
8
16
 
@@ -95,6 +103,23 @@ const TYPE_TRANSFORM_MAP = {
95
103
  },
96
104
  }
97
105
 
106
+ /**
107
+ * Given the old state of the row and the new one after an update, this will
108
+ * find the keys that have been removed in the updated row.
109
+ */
110
+ function getRemovedAttachmentKeys(oldRow, row, attachmentKey) {
111
+ if (!oldRow[attachmentKey]) {
112
+ return []
113
+ }
114
+ const oldKeys = oldRow[attachmentKey].map(attachment => attachment.key)
115
+ // no attachments in new row, all removed
116
+ if (!row[attachmentKey]) {
117
+ return oldKeys
118
+ }
119
+ const newKeys = row[attachmentKey].map(attachment => attachment.key)
120
+ return oldKeys.filter(key => newKeys.indexOf(key) === -1)
121
+ }
122
+
98
123
  /**
99
124
  * This will update any auto columns that are found on the row/table with the correct information based on
100
125
  * time now and the current logged in user making the request.
@@ -272,3 +297,45 @@ exports.outputProcessing = async (
272
297
  }
273
298
  return wasArray ? enriched : enriched[0]
274
299
  }
300
+
301
+ /**
302
+ * Clean up any attachments that were attached to a row.
303
+ * @param {string} appId The ID of the app from which a row is being deleted.
304
+ * @param {object} table The table from which a row is being removed.
305
+ * @param {any} row optional - the row being removed.
306
+ * @param {any} rows optional - if multiple rows being deleted can do this in bulk.
307
+ * @param {any} oldRow optional - if updating a row this will determine the difference.
308
+ * @return {Promise<void>} When all attachments have been removed this will return.
309
+ */
310
+ exports.cleanupAttachments = async (appId, table, { row, rows, oldRow }) => {
311
+ if (!isProdAppID(appId)) {
312
+ const prodAppId = getDeployedAppID(appId)
313
+ // if prod exists, then don't allow deleting
314
+ const exists = await dbExists(CouchDB, prodAppId)
315
+ if (exists) {
316
+ return
317
+ }
318
+ }
319
+ let files = []
320
+ function addFiles(row, key) {
321
+ if (row[key]) {
322
+ files = files.concat(row[key].map(attachment => attachment.key))
323
+ }
324
+ }
325
+ for (let [key, schema] of Object.entries(table.schema)) {
326
+ if (schema.type !== FieldTypes.ATTACHMENT) {
327
+ continue
328
+ }
329
+ // if updating, need to manage the differences
330
+ if (oldRow && row) {
331
+ files = files.concat(getRemovedAttachmentKeys(oldRow, row, key))
332
+ } else if (row) {
333
+ addFiles(row, key)
334
+ } else if (rows) {
335
+ rows.forEach(row => addFiles(row, key))
336
+ }
337
+ }
338
+ if (files.length > 0) {
339
+ return deleteFiles(ObjectStoreBuckets.APPS, files)
340
+ }
341
+ }
@@ -3,8 +3,11 @@ const {
3
3
  PermissionTypes,
4
4
  getBuiltinPermissionByID,
5
5
  isPermissionLevelHigherThanRead,
6
- } = require("@budibase/auth/permissions")
7
- const { lowerBuiltinRoleID, getBuiltinRoles } = require("@budibase/auth/roles")
6
+ } = require("@budibase/backend-core/permissions")
7
+ const {
8
+ lowerBuiltinRoleID,
9
+ getBuiltinRoles,
10
+ } = require("@budibase/backend-core/roles")
8
11
  const { DocumentTypes } = require("../db/utils")
9
12
 
10
13
  const CURRENTLY_SUPPORTED_LEVELS = [
@@ -1,9 +1,9 @@
1
1
  const env = require("../environment")
2
- const { getGlobalDB } = require("@budibase/auth/tenancy")
2
+ const { getGlobalDB } = require("@budibase/backend-core/tenancy")
3
3
  const {
4
4
  StaticDatabases,
5
5
  generateNewUsageQuotaDoc,
6
- } = require("@budibase/auth/db")
6
+ } = require("@budibase/backend-core/db")
7
7
 
8
8
  function getNewQuotaReset() {
9
9
  return Date.now() + 2592000000
@@ -1,10 +1,10 @@
1
1
  const fetch = require("node-fetch")
2
2
  const env = require("../environment")
3
3
  const { checkSlashesInUrl } = require("./index")
4
- const { getDeployedAppID } = require("@budibase/auth/db")
4
+ const { getDeployedAppID } = require("@budibase/backend-core/db")
5
5
  const { updateAppRole } = require("./global")
6
- const { Headers } = require("@budibase/auth/constants")
7
- const { getTenantId, isTenantIdSet } = require("@budibase/auth/tenancy")
6
+ const { Headers } = require("@budibase/backend-core/constants")
7
+ const { getTenantId, isTenantIdSet } = require("@budibase/backend-core/tenancy")
8
8
 
9
9
  function request(ctx, request) {
10
10
  if (!request.headers) {