@budibase/server 2.2.26 → 2.2.27

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 (657) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/aws-sdk.ts +19 -0
  3. package/__mocks__/node-fetch.ts +80 -0
  4. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  5. package/builder/assets/bg.29e85dd5.png +0 -0
  6. package/builder/assets/bulgaria.bd68393d.png +0 -0
  7. package/builder/assets/covanta.72c46c1e.png +0 -0
  8. package/builder/assets/index.3dd03883.css +6 -0
  9. package/builder/assets/index.56a96240.js +1802 -0
  10. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  11. package/builder/index.html +3 -3
  12. package/coverage/clover.xml +6618 -6528
  13. package/coverage/coverage-final.json +282 -276
  14. package/coverage/lcov-report/index.html +489 -444
  15. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
  16. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
  17. package/coverage/lcov-report/src/api/controllers/application.ts.html +362 -266
  18. package/coverage/lcov-report/src/api/controllers/auth.ts.html +12 -12
  19. package/coverage/lcov-report/src/api/controllers/automation.ts.html +61 -61
  20. package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
  21. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +93 -81
  22. package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
  23. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +122 -98
  24. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +21 -18
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.html +21 -21
  26. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +142 -196
  27. package/coverage/lcov-report/src/api/controllers/dev.ts.html +28 -28
  28. package/coverage/lcov-report/src/api/controllers/index.html +115 -115
  29. package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
  30. package/coverage/lcov-report/src/api/controllers/layout.ts.html +9 -9
  31. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
  32. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
  33. package/coverage/lcov-report/src/api/controllers/permission.ts.html +14 -14
  34. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +20 -20
  35. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +62 -62
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  37. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
  38. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +56 -56
  39. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  40. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  41. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  42. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +75 -24
  43. package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
  50. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
  52. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
  53. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
  54. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
  55. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
  57. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
  64. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
  65. package/coverage/lcov-report/src/api/controllers/query/index.html +20 -20
  66. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +131 -107
  67. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +11 -11
  68. package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
  69. package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
  70. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +56 -41
  71. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +87 -57
  72. package/coverage/lcov-report/src/api/controllers/row/index.html +66 -66
  73. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +37 -37
  74. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +181 -106
  75. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
  76. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +44 -35
  77. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +156 -39
  78. package/coverage/lcov-report/src/api/controllers/screen.ts.html +31 -31
  79. package/coverage/lcov-report/src/api/controllers/script.ts.html +19 -19
  80. package/coverage/lcov-report/src/api/controllers/static/index.html +18 -18
  81. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +56 -71
  82. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +60 -60
  83. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +56 -50
  84. package/coverage/lcov-report/src/api/controllers/table/index.html +48 -48
  85. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +157 -70
  86. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +58 -61
  87. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +109 -112
  88. package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
  89. package/coverage/lcov-report/src/api/controllers/user.ts.html +159 -135
  90. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
  91. package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
  92. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +97 -133
  93. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +31 -31
  94. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +37 -37
  95. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  96. package/coverage/lcov-report/src/api/index.html +15 -15
  97. package/coverage/lcov-report/src/api/index.ts.html +40 -40
  98. package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
  99. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
  100. package/coverage/lcov-report/src/api/routes/application.ts.html +46 -13
  101. package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
  102. package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
  103. package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
  104. package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
  105. package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
  106. package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
  107. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -14
  108. package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
  109. package/coverage/lcov-report/src/api/routes/index.html +68 -68
  110. package/coverage/lcov-report/src/api/routes/index.ts.html +49 -40
  111. package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
  112. package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
  113. package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
  114. package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
  115. package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
  116. package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
  117. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +147 -15
  118. package/coverage/lcov-report/src/api/routes/public/index.html +27 -27
  119. package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
  120. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  121. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +28 -16
  122. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
  123. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
  124. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
  125. package/coverage/lcov-report/src/api/routes/public/tests/index.html +7 -7
  126. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
  127. package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
  128. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
  129. package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
  130. package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
  131. package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
  132. package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
  133. package/coverage/lcov-report/src/api/routes/row.ts.html +14 -14
  134. package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
  135. package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
  136. package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
  137. package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
  138. package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +27 -27
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +23 -23
  141. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +33 -33
  142. package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
  143. package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
  144. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
  145. package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
  146. package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
  147. package/coverage/lcov-report/src/app.ts.html +53 -47
  148. package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
  149. package/coverage/lcov-report/src/automations/automationUtils.ts.html +127 -55
  150. package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
  151. package/coverage/lcov-report/src/automations/index.html +54 -54
  152. package/coverage/lcov-report/src/automations/index.ts.html +23 -23
  153. package/coverage/lcov-report/src/automations/logging/index.html +3 -3
  154. package/coverage/lcov-report/src/automations/logging/index.ts.html +15 -15
  155. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  156. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
  157. package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
  158. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
  159. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  160. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  161. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  162. package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
  163. package/coverage/lcov-report/src/automations/steps/index.html +129 -129
  164. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
  165. package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
  166. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
  167. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
  168. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  169. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +19 -19
  170. package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
  171. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +12 -12
  172. package/coverage/lcov-report/src/automations/steps/utils.ts.html +18 -18
  173. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
  175. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +32 -32
  176. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
  177. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
  179. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
  182. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
  183. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
  184. package/coverage/lcov-report/src/automations/triggers.ts.html +53 -38
  185. package/coverage/lcov-report/src/automations/utils.ts.html +80 -80
  186. package/coverage/lcov-report/src/constants/index.html +19 -19
  187. package/coverage/lcov-report/src/constants/index.ts.html +103 -103
  188. package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
  189. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  190. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
  191. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
  192. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
  193. package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
  194. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
  195. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
  196. package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
  197. package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
  198. package/coverage/lcov-report/src/db/index.html +34 -34
  199. package/coverage/lcov-report/src/db/index.ts.html +10 -10
  200. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
  201. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
  202. package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
  203. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
  204. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +25 -25
  205. package/coverage/lcov-report/src/db/newid.ts.html +5 -5
  206. package/coverage/lcov-report/src/db/utils.ts.html +90 -90
  207. package/coverage/lcov-report/src/definitions/automations.ts.html +9 -6
  208. package/coverage/lcov-report/src/definitions/index.html +5 -20
  209. package/coverage/lcov-report/src/environment.ts.html +44 -32
  210. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
  211. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
  212. package/coverage/lcov-report/src/events/index.html +20 -20
  213. package/coverage/lcov-report/src/events/index.ts.html +7 -7
  214. package/coverage/lcov-report/src/events/utils.ts.html +11 -11
  215. package/coverage/lcov-report/src/index.html +47 -47
  216. package/coverage/lcov-report/src/index.ts.html +8 -8
  217. package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
  218. package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
  219. package/coverage/lcov-report/src/integrations/base/index.html +29 -29
  220. package/coverage/lcov-report/src/integrations/base/query.ts.html +15 -9
  221. package/coverage/lcov-report/src/integrations/base/sql.ts.html +38 -38
  222. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +23 -23
  223. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  224. package/coverage/lcov-report/src/integrations/couchdb.ts.html +109 -31
  225. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +17 -17
  226. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +27 -15
  227. package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
  228. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +42 -42
  229. package/coverage/lcov-report/src/integrations/index.html +130 -130
  230. package/coverage/lcov-report/src/integrations/index.ts.html +50 -62
  231. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
  232. package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
  233. package/coverage/lcov-report/src/integrations/mysql.ts.html +28 -28
  234. package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
  235. package/coverage/lcov-report/src/integrations/postgres.ts.html +54 -54
  236. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  237. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +24 -159
  238. package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
  239. package/coverage/lcov-report/src/integrations/rest.ts.html +43 -52
  240. package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
  241. package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
  242. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  243. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  244. package/coverage/lcov-report/src/integrations/utils.ts.html +54 -54
  245. package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
  246. package/coverage/lcov-report/src/middleware/authorized.ts.html +49 -37
  247. package/coverage/lcov-report/src/middleware/builder.ts.html +26 -26
  248. package/coverage/lcov-report/src/middleware/currentapp.ts.html +50 -47
  249. package/coverage/lcov-report/src/middleware/index.html +40 -40
  250. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
  251. package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
  252. package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
  253. package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
  254. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  255. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
  264. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +17 -14
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
  269. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
  271. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
  272. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
  273. package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
  274. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
  275. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
  280. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
  281. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  282. package/coverage/lcov-report/src/migrations/index.html +15 -15
  283. package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
  284. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
  285. package/coverage/lcov-report/src/migrations/tests/index.html +6 -6
  286. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
  287. package/coverage/lcov-report/src/sdk/app/applications/index.html +20 -20
  288. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
  289. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  290. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
  291. package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
  292. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
  293. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  294. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
  295. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
  296. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +45 -57
  297. package/coverage/lcov-report/src/sdk/app/backups/index.html +42 -42
  298. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
  299. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  300. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  302. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  304. package/coverage/lcov-report/src/{utilities/statusCodes.ts.html → sdk/app/queries/index.ts.html} +22 -28
  305. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  306. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
  307. package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
  308. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
  309. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  310. package/coverage/lcov-report/src/sdk/app/tables/index.html +15 -15
  311. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +29 -20
  312. package/coverage/lcov-report/src/sdk/index.html +7 -7
  313. package/coverage/lcov-report/src/sdk/index.ts.html +24 -12
  314. package/coverage/lcov-report/src/sdk/users/index.html +10 -10
  315. package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
  316. package/coverage/lcov-report/src/sdk/users/utils.ts.html +35 -35
  317. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  318. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  319. package/coverage/lcov-report/src/startup.ts.html +48 -63
  320. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +218 -152
  321. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
  322. package/coverage/lcov-report/src/tests/utilities/index.html +33 -33
  323. package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
  324. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +235 -46
  325. package/coverage/lcov-report/src/threads/automation.ts.html +212 -251
  326. package/coverage/lcov-report/src/threads/index.html +46 -46
  327. package/coverage/lcov-report/src/threads/index.ts.html +39 -39
  328. package/coverage/lcov-report/src/threads/query.ts.html +140 -101
  329. package/coverage/lcov-report/src/threads/utils.ts.html +29 -29
  330. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +5 -5
  331. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  332. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  333. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +20 -20
  334. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.html +88 -28
  336. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
  337. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
  338. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
  339. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  340. package/coverage/lcov-report/src/utilities/global.ts.html +60 -60
  341. package/coverage/lcov-report/src/utilities/index.html +89 -119
  342. package/coverage/lcov-report/src/utilities/index.ts.html +40 -172
  343. package/coverage/lcov-report/src/utilities/redis.ts.html +38 -38
  344. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  345. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +34 -34
  347. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +102 -75
  348. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
  349. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +54 -54
  350. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +174 -234
  351. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +33 -33
  352. package/coverage/lcov-report/src/utilities/security.ts.html +13 -13
  353. package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
  354. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +38 -38
  355. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
  356. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  357. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +89 -62
  358. package/coverage/lcov-report/src/watch.ts.html +20 -20
  359. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  360. package/coverage/lcov.info +13499 -12800
  361. package/dist/api/controllers/application.js +120 -109
  362. package/dist/api/controllers/cloud.js +6 -2
  363. package/dist/api/controllers/datasource.js +24 -15
  364. package/dist/api/controllers/deploy/index.js +43 -60
  365. package/dist/api/controllers/plugin/index.js +6 -6
  366. package/dist/api/controllers/public/applications.js +22 -1
  367. package/dist/api/controllers/query/index.js +23 -13
  368. package/dist/api/controllers/row/ExternalRequest.js +12 -4
  369. package/dist/api/controllers/row/external.js +20 -13
  370. package/dist/api/controllers/row/internal.js +52 -27
  371. package/dist/api/controllers/row/staticFormula.js +1 -1
  372. package/dist/api/controllers/row/utils.js +35 -3
  373. package/dist/api/controllers/static/index.js +47 -47
  374. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  375. package/dist/api/controllers/table/external.js +16 -35
  376. package/dist/api/controllers/table/index.js +44 -15
  377. package/dist/api/controllers/table/internal.js +6 -7
  378. package/dist/api/controllers/table/utils.js +9 -9
  379. package/dist/api/controllers/user.js +14 -6
  380. package/dist/api/controllers/view/exporters.js +22 -6
  381. package/dist/api/controllers/view/index.js +23 -58
  382. package/dist/api/controllers/view/viewBuilder.js +15 -2
  383. package/dist/api/controllers/webhook.js +45 -43
  384. package/dist/api/routes/analytics.js +2 -1
  385. package/dist/api/routes/apikeys.js +2 -1
  386. package/dist/api/routes/application.js +5 -1
  387. package/dist/api/routes/auth.js +2 -1
  388. package/dist/api/routes/automation.js +2 -1
  389. package/dist/api/routes/backup.js +2 -1
  390. package/dist/api/routes/cloud.js +2 -1
  391. package/dist/api/routes/component.js +2 -1
  392. package/dist/api/routes/datasource.js +2 -1
  393. package/dist/api/routes/deploy.js +3 -3
  394. package/dist/api/routes/dev.js +2 -1
  395. package/dist/api/routes/index.js +2 -0
  396. package/dist/api/routes/integration.js +2 -1
  397. package/dist/api/routes/layout.js +2 -1
  398. package/dist/api/routes/metadata.js +2 -1
  399. package/dist/api/routes/migrations.js +2 -1
  400. package/dist/api/routes/permission.js +2 -1
  401. package/dist/api/routes/public/applications.js +37 -0
  402. package/dist/api/routes/public/middleware/mapper.js +3 -0
  403. package/dist/api/routes/query.js +2 -1
  404. package/dist/api/routes/role.js +2 -1
  405. package/dist/api/routes/routing.js +2 -1
  406. package/dist/api/routes/row.js +2 -2
  407. package/dist/api/routes/screen.js +2 -1
  408. package/dist/api/routes/script.js +2 -1
  409. package/dist/api/routes/static.js +6 -5
  410. package/dist/api/routes/table.js +8 -38
  411. package/dist/api/routes/templates.js +2 -1
  412. package/dist/api/routes/user.js +2 -1
  413. package/dist/api/routes/utils/validators.js +1 -1
  414. package/dist/api/routes/view.js +2 -1
  415. package/dist/api/routes/webhook.js +2 -1
  416. package/dist/app.js +9 -7
  417. package/dist/automations/automationUtils.js +26 -1
  418. package/dist/automations/logging/index.js +5 -25
  419. package/dist/automations/triggers.js +1 -0
  420. package/dist/db/index.js +5 -2
  421. package/dist/db/linkedRows/LinkController.js +2 -1
  422. package/dist/db/linkedRows/LinkDocument.js +2 -1
  423. package/dist/db/newid.js +4 -2
  424. package/dist/definitions/datasource.js +0 -6
  425. package/dist/environment.js +7 -2
  426. package/dist/events/AutomationEmitter.js +2 -1
  427. package/dist/events/BudibaseEmitter.js +2 -1
  428. package/dist/events/index.js +2 -1
  429. package/dist/index.js +2 -2
  430. package/dist/integrations/base/query.js +7 -2
  431. package/dist/integrations/base/sqlTable.js +14 -14
  432. package/dist/integrations/couchdb.js +34 -8
  433. package/dist/integrations/dynamodb.js +8 -5
  434. package/dist/integrations/elasticsearch.js +7 -3
  435. package/dist/integrations/googlesheets.js +1 -1
  436. package/dist/integrations/index.js +6 -7
  437. package/dist/integrations/mongodb.js +311 -271
  438. package/dist/integrations/mysql.js +2 -2
  439. package/dist/integrations/queries/sql.js +73 -100
  440. package/dist/integrations/rest.js +16 -18
  441. package/dist/middleware/authorized.js +2 -1
  442. package/dist/middleware/builder.js +4 -2
  443. package/dist/middleware/currentapp.js +6 -3
  444. package/dist/middleware/publicApi.js +4 -2
  445. package/dist/middleware/selfhost.js +4 -1
  446. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  447. package/dist/package.json +12 -8
  448. package/dist/sdk/app/backups/imports.js +2 -6
  449. package/dist/sdk/app/datasources/datasources.js +147 -0
  450. package/dist/sdk/app/datasources/index.js +27 -0
  451. package/dist/sdk/app/queries/index.js +27 -0
  452. package/dist/sdk/app/queries/queries.js +60 -0
  453. package/dist/sdk/app/tables/index.js +6 -2
  454. package/dist/sdk/index.js +4 -0
  455. package/dist/sdk/utils/index.js +29 -0
  456. package/dist/startup.js +17 -17
  457. package/dist/threads/automation.js +22 -35
  458. package/dist/threads/index.js +4 -4
  459. package/dist/threads/query.js +27 -13
  460. package/dist/tsconfig.build.tsbuildinfo +1 -1
  461. package/dist/utilities/fileSystem/app.js +97 -0
  462. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  463. package/dist/utilities/fileSystem/filesystem.js +184 -0
  464. package/dist/utilities/fileSystem/index.js +18 -342
  465. package/dist/utilities/fileSystem/plugin.js +66 -0
  466. package/dist/utilities/fileSystem/template.js +47 -0
  467. package/dist/utilities/index.js +1 -44
  468. package/dist/utilities/rowProcessor/index.js +12 -4
  469. package/dist/utilities/schema.js +108 -0
  470. package/dist/utilities/scriptRunner.js +2 -1
  471. package/dist/utilities/statusCodes.js +2 -1
  472. package/dist/utilities/workerRequests.js +2 -0
  473. package/dist/watch.js +2 -25
  474. package/jest.config.ts +5 -2
  475. package/package.json +13 -9
  476. package/scripts/dev/manage.js +3 -2
  477. package/specs/openapi.json +84 -0
  478. package/specs/openapi.yaml +53 -0
  479. package/specs/resources/application.js +19 -0
  480. package/src/api/controllers/application.ts +142 -110
  481. package/src/api/controllers/auth.ts +2 -2
  482. package/src/api/controllers/cloud.ts +10 -6
  483. package/src/api/controllers/datasource.ts +33 -25
  484. package/src/api/controllers/deploy/Deployment.ts +1 -0
  485. package/src/api/controllers/deploy/index.ts +40 -58
  486. package/src/api/controllers/plugin/index.ts +14 -9
  487. package/src/api/controllers/public/applications.ts +17 -0
  488. package/src/api/controllers/query/index.ts +49 -41
  489. package/src/api/controllers/row/ExternalRequest.ts +8 -3
  490. package/src/api/controllers/row/external.ts +24 -14
  491. package/src/api/controllers/row/internal.ts +66 -41
  492. package/src/api/controllers/row/staticFormula.ts +5 -2
  493. package/src/api/controllers/row/utils.ts +42 -3
  494. package/src/api/controllers/static/index.ts +22 -27
  495. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  496. package/src/api/controllers/table/external.ts +18 -16
  497. package/src/api/controllers/table/index.ts +46 -17
  498. package/src/api/controllers/table/internal.ts +6 -7
  499. package/src/api/controllers/table/utils.ts +12 -13
  500. package/src/api/controllers/user.ts +21 -13
  501. package/src/api/controllers/view/exporters.ts +20 -5
  502. package/src/api/controllers/view/index.ts +30 -42
  503. package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
  504. package/src/api/controllers/view/viewBuilder.ts +1 -1
  505. package/src/api/controllers/webhook.ts +48 -46
  506. package/src/api/routes/analytics.ts +1 -1
  507. package/src/api/routes/apikeys.ts +1 -1
  508. package/src/api/routes/application.ts +12 -1
  509. package/src/api/routes/auth.ts +1 -1
  510. package/src/api/routes/automation.ts +1 -1
  511. package/src/api/routes/backup.ts +1 -1
  512. package/src/api/routes/cloud.ts +1 -1
  513. package/src/api/routes/component.ts +1 -1
  514. package/src/api/routes/datasource.ts +1 -1
  515. package/src/api/routes/deploy.ts +1 -2
  516. package/src/api/routes/dev.ts +1 -1
  517. package/src/api/routes/index.ts +6 -3
  518. package/src/api/routes/integration.ts +1 -1
  519. package/src/api/routes/layout.ts +1 -1
  520. package/src/api/routes/metadata.ts +1 -1
  521. package/src/api/routes/migrations.ts +1 -1
  522. package/src/api/routes/permission.ts +1 -1
  523. package/src/api/routes/public/applications.ts +44 -0
  524. package/src/api/routes/public/middleware/mapper.ts +4 -0
  525. package/src/api/routes/query.ts +1 -1
  526. package/src/api/routes/role.ts +1 -1
  527. package/src/api/routes/routing.ts +1 -1
  528. package/src/api/routes/row.ts +1 -1
  529. package/src/api/routes/screen.ts +1 -1
  530. package/src/api/routes/script.ts +1 -1
  531. package/src/api/routes/static.ts +2 -2
  532. package/src/api/routes/table.ts +16 -39
  533. package/src/api/routes/templates.ts +1 -1
  534. package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +0 -0
  535. package/src/api/routes/tests/{application.spec.js → application.spec.ts} +94 -18
  536. package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -6
  537. package/src/api/routes/tests/cloud.spec.ts +65 -0
  538. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  539. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  540. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  541. package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +56 -14
  542. package/src/api/routes/tests/misc.spec.js +4 -10
  543. package/src/api/routes/tests/permissions.spec.js +1 -1
  544. package/src/api/routes/tests/plugin.spec.ts +179 -0
  545. package/src/api/routes/tests/routing.spec.js +1 -2
  546. package/src/api/routes/tests/row.spec.js +4 -2
  547. package/src/api/routes/tests/static.spec.js +2 -17
  548. package/src/api/routes/tests/table.spec.js +16 -32
  549. package/src/api/routes/tests/user.spec.js +105 -0
  550. package/src/api/routes/tests/utilities/TestFunctions.ts +1 -1
  551. package/src/api/routes/tests/utilities/index.ts +2 -2
  552. package/src/api/routes/tests/webhook.spec.js +1 -1
  553. package/src/api/routes/user.ts +1 -1
  554. package/src/api/routes/utils/validators.ts +1 -1
  555. package/src/api/routes/view.ts +1 -1
  556. package/src/api/routes/webhook.ts +1 -1
  557. package/src/app.ts +5 -3
  558. package/src/automations/automationUtils.ts +24 -0
  559. package/src/automations/logging/index.ts +1 -1
  560. package/src/automations/tests/bash.spec.js +34 -0
  561. package/src/automations/tests/discord.spec.js +27 -0
  562. package/src/automations/tests/executeQuery.spec.js +49 -0
  563. package/src/automations/tests/executeScript.spec.js +48 -0
  564. package/src/automations/tests/loop.spec.ts +45 -0
  565. package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
  566. package/src/automations/tests/serverLog.spec.js +22 -0
  567. package/src/automations/tests/utilities/index.ts +2 -2
  568. package/src/automations/tests/zapier.spec.js +27 -0
  569. package/src/automations/triggers.ts +6 -1
  570. package/src/automations/unitTests/automationUtils.spec.ts +65 -0
  571. package/src/db/index.ts +1 -1
  572. package/src/db/linkedRows/LinkController.ts +1 -1
  573. package/src/db/linkedRows/LinkDocument.ts +1 -1
  574. package/src/db/newid.ts +1 -1
  575. package/src/db/tests/linkController.spec.js +1 -1
  576. package/src/definitions/automations.ts +1 -0
  577. package/src/definitions/datasource.ts +0 -41
  578. package/src/definitions/openapi.ts +10 -0
  579. package/src/environment.ts +6 -2
  580. package/src/events/AutomationEmitter.ts +1 -1
  581. package/src/events/BudibaseEmitter.ts +1 -1
  582. package/src/events/index.ts +1 -1
  583. package/src/index.ts +1 -1
  584. package/src/integrations/base/query.ts +3 -1
  585. package/src/integrations/base/sqlTable.ts +1 -1
  586. package/src/integrations/couchdb.ts +40 -14
  587. package/src/integrations/dynamodb.ts +3 -3
  588. package/src/integrations/elasticsearch.ts +8 -4
  589. package/src/integrations/googlesheets.ts +1 -1
  590. package/src/integrations/index.ts +5 -9
  591. package/src/integrations/mongodb.ts +315 -271
  592. package/src/integrations/mysql.ts +1 -1
  593. package/src/integrations/queries/sql.ts +5 -50
  594. package/src/integrations/rest.ts +16 -19
  595. package/src/integrations/tests/couchdb.spec.ts +33 -21
  596. package/src/integrations/tests/rest.spec.ts +19 -15
  597. package/src/middleware/authorized.ts +5 -1
  598. package/src/middleware/builder.ts +1 -1
  599. package/src/middleware/currentapp.ts +4 -3
  600. package/src/middleware/publicApi.ts +1 -1
  601. package/src/middleware/selfhost.ts +1 -1
  602. package/src/middleware/tests/authorized.spec.js +1 -1
  603. package/src/middleware/tests/currentapp.spec.js +1 -1
  604. package/src/middleware/tests/selfhost.spec.js +1 -1
  605. package/src/migrations/functions/backfill/global/configs.ts +5 -4
  606. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  607. package/src/sdk/app/backups/imports.ts +2 -6
  608. package/src/sdk/app/datasources/datasources.ts +136 -0
  609. package/src/sdk/app/datasources/index.ts +5 -0
  610. package/src/sdk/app/queries/index.ts +5 -0
  611. package/src/sdk/app/queries/queries.ts +50 -0
  612. package/src/sdk/app/tables/index.ts +6 -3
  613. package/src/sdk/index.ts +4 -0
  614. package/src/sdk/tests/attachments.spec.ts +1 -4
  615. package/src/sdk/utils/index.ts +16 -0
  616. package/src/startup.ts +3 -8
  617. package/src/tests/jestEnv.ts +13 -0
  618. package/src/tests/jestSetup.ts +4 -15
  619. package/src/tests/utilities/TestConfiguration.ts +38 -16
  620. package/src/tests/utilities/structures.ts +65 -2
  621. package/src/threads/automation.ts +22 -35
  622. package/src/threads/definitions.ts +3 -0
  623. package/src/threads/index.ts +1 -1
  624. package/src/threads/query.ts +28 -15
  625. package/src/utilities/fileSystem/app.ts +86 -0
  626. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  627. package/src/utilities/fileSystem/filesystem.ts +172 -0
  628. package/src/utilities/fileSystem/index.ts +5 -348
  629. package/src/utilities/fileSystem/plugin.ts +64 -0
  630. package/src/utilities/fileSystem/template.ts +36 -0
  631. package/src/utilities/index.ts +1 -45
  632. package/src/utilities/rowProcessor/index.ts +17 -8
  633. package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
  634. package/src/utilities/schema.ts +141 -0
  635. package/src/utilities/scriptRunner.ts +1 -1
  636. package/src/utilities/statusCodes.ts +1 -1
  637. package/src/utilities/workerRequests.ts +10 -1
  638. package/src/watch.ts +1 -1
  639. package/tsconfig.build.json +2 -0
  640. package/tsconfig.json +2 -1
  641. package/builder/assets/index.96b9ffed.css +0 -6
  642. package/builder/assets/index.fae8f9eb.js +0 -1024
  643. package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
  644. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  645. package/dist/api/routes/tests/utilities/index.js +0 -131
  646. package/dist/automations/tests/utilities/index.js +0 -81
  647. package/dist/tests/utilities/TestConfiguration.js +0 -562
  648. package/dist/tests/utilities/controllers.js +0 -40
  649. package/dist/tests/utilities/structures.js +0 -168
  650. package/dist/utilities/csvParser.js +0 -152
  651. package/dist/utilities/plugins.js +0 -26
  652. package/src/api/routes/tests/deployment.spec.ts +0 -25
  653. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  654. package/src/utilities/csvParser.ts +0 -161
  655. package/src/utilities/plugins.ts +0 -22
  656. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  657. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -411,6 +411,30 @@ components:
411
411
  - version
412
412
  required:
413
413
  - data
414
+ deploymentOutput:
415
+ type: object
416
+ properties:
417
+ data:
418
+ type: object
419
+ properties:
420
+ _id:
421
+ description: The ID of the app.
422
+ type: string
423
+ status:
424
+ description: Status of the deployment, whether it succeeded or failed
425
+ type: string
426
+ enum:
427
+ - SUCCESS
428
+ - FAILURE
429
+ appUrl:
430
+ description: The URL of the published app
431
+ type: string
432
+ required:
433
+ - _id
434
+ - status
435
+ - appUrl
436
+ required:
437
+ - data
414
438
  row:
415
439
  description: The row to be created/updated, based on the table schema.
416
440
  type: object
@@ -1453,6 +1477,35 @@ paths:
1453
1477
  examples:
1454
1478
  application:
1455
1479
  $ref: "#/components/examples/application"
1480
+ "/applications/{appId}/unpublish":
1481
+ post:
1482
+ operationId: unpublish
1483
+ summary: Unpublish an application
1484
+ tags:
1485
+ - applications
1486
+ parameters:
1487
+ - $ref: "#/components/parameters/appIdUrl"
1488
+ responses:
1489
+ "204":
1490
+ description: The app was published successfully.
1491
+ "/applications/{appId}/publish":
1492
+ post:
1493
+ operationId: publish
1494
+ summary: Unpublish an application
1495
+ tags:
1496
+ - applications
1497
+ parameters:
1498
+ - $ref: "#/components/parameters/appIdUrl"
1499
+ responses:
1500
+ "200":
1501
+ description: Returns the deployment object.
1502
+ content:
1503
+ application/json:
1504
+ schema:
1505
+ $ref: "#/components/schemas/deploymentOutput"
1506
+ examples:
1507
+ deployment:
1508
+ $ref: "#/components/examples/deploymentOutput"
1456
1509
  /applications/search:
1457
1510
  post:
1458
1511
  operationId: search
@@ -80,6 +80,22 @@ const applicationOutputSchema = object(
80
80
  }
81
81
  )
82
82
 
83
+ const deploymentOutputSchema = object({
84
+ _id: {
85
+ description: "The ID of the app.",
86
+ type: "string",
87
+ },
88
+ status: {
89
+ description: "Status of the deployment, whether it succeeded or failed",
90
+ type: "string",
91
+ enum: ["SUCCESS", "FAILURE"],
92
+ },
93
+ appUrl: {
94
+ description: "The URL of the published app",
95
+ type: "string",
96
+ },
97
+ })
98
+
83
99
  module.exports = new Resource()
84
100
  .setExamples({
85
101
  application: {
@@ -104,4 +120,7 @@ module.exports = new Resource()
104
120
  items: applicationOutputSchema,
105
121
  },
106
122
  }),
123
+ deploymentOutput: object({
124
+ data: deploymentOutputSchema,
125
+ }),
107
126
  })
@@ -23,21 +23,18 @@ import {
23
23
  errors,
24
24
  events,
25
25
  migrations,
26
+ objectStore,
26
27
  } from "@budibase/backend-core"
27
28
  import { USERS_TABLE_SCHEMA } from "../../constants"
28
29
  import { buildDefaultDocs } from "../../db/defaultData/datasource_bb_default"
29
30
  import { removeAppFromUserRoles } from "../../utilities/workerRequests"
30
- import {
31
- clientLibraryPath,
32
- stringToReadStream,
33
- isQsTrue,
34
- } from "../../utilities"
31
+ import { stringToReadStream, isQsTrue } from "../../utilities"
35
32
  import { getLocksById } from "../../utilities/redis"
36
33
  import {
37
34
  updateClientLibrary,
38
35
  backupClientLibrary,
39
36
  revertClientLibrary,
40
- } from "../../utilities/fileSystem/clientLibrary"
37
+ } from "../../utilities/fileSystem"
41
38
  import { cleanupAutomations } from "../../automations/utils"
42
39
  import { checkAppMetadata } from "../../automations/logging"
43
40
  import { getUniqueRows } from "../../utilities/usageQuota/rows"
@@ -49,9 +46,9 @@ import {
49
46
  MigrationType,
50
47
  BBContext,
51
48
  Database,
49
+ UserCtx,
52
50
  } from "@budibase/types"
53
51
  import { BASE_LAYOUT_PROP_IDS } from "../../constants/layouts"
54
- import { enrichPluginURLs } from "../../utilities/plugins"
55
52
  import sdk from "../../sdk"
56
53
 
57
54
  // utility function, need to do away with this
@@ -115,12 +112,11 @@ function checkAppName(
115
112
  }
116
113
  }
117
114
 
118
- async function createInstance(template: any, includeSampleData: boolean) {
119
- const tenantId = tenancy.isMultiTenant() ? tenancy.getTenantId() : null
120
- const baseAppId = generateAppID(tenantId)
121
- const appId = generateDevAppID(baseAppId)
122
- await context.updateAppId(appId)
123
-
115
+ async function createInstance(
116
+ appId: string,
117
+ template: any,
118
+ includeSampleData: boolean
119
+ ) {
124
120
  const db = context.getAppDB()
125
121
  await db.put({
126
122
  _id: "_design/database",
@@ -204,27 +200,34 @@ export async function fetchAppDefinition(ctx: BBContext) {
204
200
  }
205
201
  }
206
202
 
207
- export async function fetchAppPackage(ctx: BBContext) {
203
+ export async function fetchAppPackage(ctx: UserCtx) {
208
204
  const db = context.getAppDB()
209
205
  let application = await db.get(DocumentType.APP_METADATA)
210
206
  const layouts = await getLayouts()
211
207
  let screens = await getScreens()
212
208
 
213
209
  // Enrich plugin URLs
214
- application.usedPlugins = enrichPluginURLs(application.usedPlugins)
210
+ application.usedPlugins = objectStore.enrichPluginURLs(
211
+ application.usedPlugins
212
+ )
215
213
 
216
214
  // Only filter screens if the user is not a builder
217
- if (!(ctx.user?.builder && ctx.user.builder.global)) {
215
+ if (!(ctx.user.builder && ctx.user.builder.global)) {
218
216
  const userRoleId = getUserRoleId(ctx)
219
217
  const accessController = new roles.AccessController()
220
218
  screens = await accessController.checkScreensAccess(screens, userRoleId)
221
219
  }
222
220
 
221
+ const clientLibPath = objectStore.clientLibraryUrl(
222
+ ctx.params.appId,
223
+ application.version
224
+ )
225
+
223
226
  ctx.body = {
224
227
  application,
225
228
  screens,
226
229
  layouts,
227
- clientLibPath: clientLibraryPath(ctx.params.appId, application.version),
230
+ clientLibPath,
228
231
  }
229
232
  }
230
233
 
@@ -246,82 +249,90 @@ async function performAppCreate(ctx: BBContext) {
246
249
  instanceConfig.file = ctx.request.files.templateFile
247
250
  }
248
251
  const includeSampleData = isQsTrue(ctx.request.body.sampleData)
249
- const instance = await createInstance(instanceConfig, includeSampleData)
250
- const appId = instance._id
251
- const db = context.getAppDB()
252
+ const tenantId = tenancy.isMultiTenant() ? tenancy.getTenantId() : null
253
+ const appId = generateDevAppID(generateAppID(tenantId))
252
254
 
253
- let newApplication: App = {
254
- _id: DocumentType.APP_METADATA,
255
- _rev: undefined,
256
- appId,
257
- type: "app",
258
- version: packageJson.version,
259
- componentLibraries: ["@budibase/standard-components"],
260
- name: name,
261
- url: url,
262
- template: templateKey,
263
- instance,
264
- tenantId: tenancy.getTenantId(),
265
- updatedAt: new Date().toISOString(),
266
- createdAt: new Date().toISOString(),
267
- status: AppStatus.DEV,
268
- navigation: {
269
- navigation: "Top",
270
- title: name,
271
- navWidth: "Large",
272
- navBackground: "var(--spectrum-global-color-gray-100)",
273
- links: [
274
- {
275
- url: "/home",
276
- text: "Home",
277
- },
278
- ],
279
- },
280
- theme: "spectrum--light",
281
- customTheme: {
282
- buttonBorderRadius: "16px",
283
- },
284
- }
255
+ return await context.doInAppContext(appId, async () => {
256
+ const instance = await createInstance(
257
+ appId,
258
+ instanceConfig,
259
+ includeSampleData
260
+ )
261
+ const db = context.getAppDB()
285
262
 
286
- // If we used a template or imported an app there will be an existing doc.
287
- // Fetch and migrate some metadata from the existing app.
288
- try {
289
- const existing: App = await db.get(DocumentType.APP_METADATA)
290
- const keys: (keyof App)[] = [
291
- "_rev",
292
- "navigation",
293
- "theme",
294
- "customTheme",
295
- "icon",
296
- ]
297
- keys.forEach(key => {
298
- if (existing[key]) {
299
- // @ts-ignore
300
- newApplication[key] = existing[key]
301
- }
302
- })
263
+ let newApplication: App = {
264
+ _id: DocumentType.APP_METADATA,
265
+ _rev: undefined,
266
+ appId,
267
+ type: "app",
268
+ version: packageJson.version,
269
+ componentLibraries: ["@budibase/standard-components"],
270
+ name: name,
271
+ url: url,
272
+ template: templateKey,
273
+ instance,
274
+ tenantId: tenancy.getTenantId(),
275
+ updatedAt: new Date().toISOString(),
276
+ createdAt: new Date().toISOString(),
277
+ status: AppStatus.DEV,
278
+ navigation: {
279
+ navigation: "Top",
280
+ title: name,
281
+ navWidth: "Large",
282
+ navBackground: "var(--spectrum-global-color-gray-100)",
283
+ links: [
284
+ {
285
+ url: "/home",
286
+ text: "Home",
287
+ },
288
+ ],
289
+ },
290
+ theme: "spectrum--light",
291
+ customTheme: {
292
+ buttonBorderRadius: "16px",
293
+ },
294
+ }
295
+
296
+ // If we used a template or imported an app there will be an existing doc.
297
+ // Fetch and migrate some metadata from the existing app.
298
+ try {
299
+ const existing: App = await db.get(DocumentType.APP_METADATA)
300
+ const keys: (keyof App)[] = [
301
+ "_rev",
302
+ "navigation",
303
+ "theme",
304
+ "customTheme",
305
+ "icon",
306
+ ]
307
+ keys.forEach(key => {
308
+ if (existing[key]) {
309
+ // @ts-ignore
310
+ newApplication[key] = existing[key]
311
+ }
312
+ })
303
313
 
304
- // Migrate navigation settings and screens if required
305
- if (existing) {
306
- const navigation = await migrateAppNavigation()
307
- if (navigation) {
308
- newApplication.navigation = navigation
314
+ // Migrate navigation settings and screens if required
315
+ if (existing) {
316
+ const navigation = await migrateAppNavigation()
317
+ if (navigation) {
318
+ newApplication.navigation = navigation
319
+ }
309
320
  }
321
+ } catch (err) {
322
+ // Nothing to do
310
323
  }
311
- } catch (err) {
312
- // Nothing to do
313
- }
314
324
 
315
- const response = await db.put(newApplication, { force: true })
316
- newApplication._rev = response.rev
325
+ const response = await db.put(newApplication, { force: true })
326
+ newApplication._rev = response.rev
317
327
 
318
- /* istanbul ignore next */
319
- if (!env.isTest()) {
320
- await createApp(appId)
321
- }
328
+ /* istanbul ignore next */
329
+ if (!env.isTest()) {
330
+ await createApp(appId)
331
+ }
322
332
 
323
- await cache.app.invalidateAppMetadata(appId, newApplication)
324
- return newApplication
333
+ await cache.app.invalidateAppMetadata(appId, newApplication)
334
+ return newApplication
335
+ })
325
336
  }
326
337
 
327
338
  async function creationEvents(request: any, app: App) {
@@ -370,7 +381,7 @@ async function appPostCreate(ctx: BBContext, app: App) {
370
381
  if (err.code && err.code === errors.codes.USAGE_LIMIT_EXCEEDED) {
371
382
  // this import resulted in row usage exceeding the quota
372
383
  // delete the app
373
- // skip pre- and post-steps as no rows have been added to quotas yet
384
+ // skip pre and post-steps as no rows have been added to quotas yet
374
385
  ctx.params.appId = app.appId
375
386
  await destroyApp(ctx)
376
387
  }
@@ -460,41 +471,47 @@ export async function revertClient(ctx: BBContext) {
460
471
  ctx.body = app
461
472
  }
462
473
 
474
+ const unpublishApp = async (ctx: any) => {
475
+ let appId = ctx.params.appId
476
+ appId = dbCore.getProdAppID(appId)
477
+
478
+ const db = context.getProdAppDB()
479
+ const result = await db.destroy()
480
+
481
+ await events.app.unpublished({ appId } as App)
482
+
483
+ // automations only in production
484
+ await cleanupAutomations(appId)
485
+
486
+ await cache.app.invalidateAppMetadata(appId)
487
+ return result
488
+ }
489
+
463
490
  async function destroyApp(ctx: BBContext) {
464
491
  let appId = ctx.params.appId
465
- let isUnpublish = ctx.query && ctx.query.unpublish
492
+ appId = dbCore.getProdAppID(appId)
493
+ const devAppId = dbCore.getDevAppID(appId)
466
494
 
467
- if (isUnpublish) {
468
- appId = dbCore.getProdAppID(appId)
469
- const devAppId = dbCore.getDevAppID(appId)
470
- // sync before removing the published app
495
+ // check if we need to unpublish first
496
+ if (await dbCore.dbExists(appId)) {
497
+ // app is deployed, run through unpublish flow
471
498
  await sdk.applications.syncApp(devAppId)
499
+ await unpublishApp(ctx)
472
500
  }
473
501
 
474
- const db = isUnpublish ? context.getProdAppDB() : context.getAppDB()
502
+ const db = dbCore.getDB(devAppId)
503
+ // standard app deletion flow
475
504
  const app = await db.get(DocumentType.APP_METADATA)
476
505
  const result = await db.destroy()
506
+ await quotas.removeApp()
507
+ await events.app.deleted(app)
477
508
 
478
- if (isUnpublish) {
479
- await events.app.unpublished(app)
480
- } else {
481
- await quotas.removeApp()
482
- await events.app.deleted(app)
483
- }
484
-
485
- /* istanbul ignore next */
486
- if (!env.isTest() && !isUnpublish) {
509
+ if (!env.isTest()) {
487
510
  await deleteApp(appId)
488
511
  }
489
- // automations only in production
490
- if (isUnpublish) {
491
- await cleanupAutomations(appId)
492
- }
493
- // remove app role when the dev app is deleted (no trace of app anymore)
494
- else {
495
- await removeAppFromUserRoles(ctx, appId)
496
- }
497
- await cache.app.invalidateAppMetadata(appId)
512
+
513
+ await removeAppFromUserRoles(ctx, appId)
514
+ await cache.app.invalidateAppMetadata(devAppId)
498
515
  return result
499
516
  }
500
517
 
@@ -519,6 +536,21 @@ export async function destroy(ctx: BBContext) {
519
536
  ctx.body = result
520
537
  }
521
538
 
539
+ export const unpublish = async (ctx: BBContext) => {
540
+ const prodAppId = dbCore.getProdAppID(ctx.params.appId)
541
+ const dbExists = await dbCore.dbExists(prodAppId)
542
+
543
+ // check app has been published
544
+ if (!dbExists) {
545
+ return ctx.throw(400, "App has not been published.")
546
+ }
547
+
548
+ await preDestroyApp(ctx)
549
+ await unpublishApp(ctx)
550
+ await postDestroyApp(ctx)
551
+ ctx.status = 204
552
+ }
553
+
522
554
  export async function sync(ctx: BBContext) {
523
555
  const appId = ctx.params.appId
524
556
  try {
@@ -3,7 +3,7 @@ import { InternalTables } from "../../db/utils"
3
3
  import { getFullUser } from "../../utilities/users"
4
4
  import { roles, context } from "@budibase/backend-core"
5
5
  import { groups } from "@budibase/pro"
6
- import { ContextUser, User, Row } from "@budibase/types"
6
+ import { ContextUser, User, Row, UserCtx } from "@budibase/types"
7
7
 
8
8
  const PUBLIC_ROLE = roles.BUILTIN_ROLE_IDS.PUBLIC
9
9
 
@@ -16,7 +16,7 @@ const addSessionAttributesToUser = (ctx: any) => {
16
16
  }
17
17
  }
18
18
 
19
- export async function fetchSelf(ctx: any) {
19
+ export async function fetchSelf(ctx: UserCtx) {
20
20
  let userId = ctx.user.userId || ctx.user._id
21
21
  /* istanbul ignore next */
22
22
  if (!userId || !ctx.isAuthenticated) {
@@ -5,8 +5,8 @@ import { stringToReadStream } from "../../utilities"
5
5
  import { getDocParams, DocumentType, isDevAppID } from "../../db/utils"
6
6
  import { create } from "./application"
7
7
  import { join } from "path"
8
- import { App, BBContext, Database } from "@budibase/types"
9
8
  import sdk from "../../sdk"
9
+ import { App, Ctx, Database } from "@budibase/types"
10
10
 
11
11
  async function createApp(appName: string, appDirectory: string) {
12
12
  const ctx = {
@@ -35,7 +35,7 @@ async function getAllDocType(db: Database, docType: string) {
35
35
  return response.rows.map(row => row.doc)
36
36
  }
37
37
 
38
- export async function exportApps(ctx: BBContext) {
38
+ export async function exportApps(ctx: Ctx) {
39
39
  if (env.SELF_HOSTED || !env.MULTI_TENANCY) {
40
40
  ctx.throw(400, "Exporting only allowed in multi-tenant cloud environments.")
41
41
  }
@@ -65,13 +65,13 @@ async function checkHasBeenImported() {
65
65
  return apps.length !== 0
66
66
  }
67
67
 
68
- export async function hasBeenImported(ctx: BBContext) {
68
+ export async function hasBeenImported(ctx: Ctx) {
69
69
  ctx.body = {
70
70
  imported: await checkHasBeenImported(),
71
71
  }
72
72
  }
73
73
 
74
- export async function importApps(ctx: BBContext) {
74
+ export async function importApps(ctx: Ctx) {
75
75
  if (!env.SELF_HOSTED || env.MULTI_TENANCY) {
76
76
  ctx.throw(400, "Importing only allowed in self hosted environments.")
77
77
  }
@@ -82,12 +82,16 @@ export async function importApps(ctx: BBContext) {
82
82
  "Import file is required and environment must be fresh to import apps."
83
83
  )
84
84
  }
85
- if (ctx.request.files.importFile.type !== "application/gzip") {
85
+ const file = ctx.request.files.importFile as any
86
+ if (Array.isArray(file)) {
87
+ ctx.throw(400, "Single file is required")
88
+ }
89
+ if (file.type !== "application/gzip" && file.type !== "application/x-gzip") {
86
90
  ctx.throw(400, "Import file must be a gzipped tarball.")
87
91
  }
88
92
 
89
93
  // initially get all the app databases out of the tarball
90
- const tmpPath = sdk.backups.untarFile(ctx.request.files.importFile)
94
+ const tmpPath = sdk.backups.untarFile(file)
91
95
  const globalDbImport = sdk.backups.getGlobalDBFile(tmpPath)
92
96
  const appNames = sdk.backups.getListOfAppsInMulti(tmpPath)
93
97
 
@@ -12,9 +12,11 @@ import { getIntegration } from "../../integrations"
12
12
  import { getDatasourceAndQuery } from "./row/utils"
13
13
  import { invalidateDynamicVariables } from "../../threads/utils"
14
14
  import { db as dbCore, context, events } from "@budibase/backend-core"
15
- import { BBContext, Datasource, Row } from "@budibase/types"
15
+ import { UserCtx, Datasource, Row } from "@budibase/types"
16
+ import sdk from "../../sdk"
17
+ import { mergeConfigs } from "../../sdk/app/datasources/datasources"
16
18
 
17
- export async function fetch(ctx: BBContext) {
19
+ export async function fetch(ctx: UserCtx) {
18
20
  // Get internal tables
19
21
  const db = context.getAppDB()
20
22
  const internalTables = await db.allDocs(
@@ -43,25 +45,23 @@ export async function fetch(ctx: BBContext) {
43
45
  )
44
46
  ).rows.map(row => row.doc)
45
47
 
46
- const allDatasources = [bbInternalDb, ...datasources]
48
+ const allDatasources: Datasource[] = await sdk.datasources.removeSecrets([
49
+ bbInternalDb,
50
+ ...datasources,
51
+ ])
47
52
 
48
53
  for (let datasource of allDatasources) {
49
- if (datasource.config && datasource.config.auth) {
50
- // strip secrets from response so they don't show in the network request
51
- delete datasource.config.auth
52
- }
53
-
54
54
  if (datasource.type === dbCore.BUDIBASE_DATASOURCE_TYPE) {
55
- datasource.entities = internal[datasource._id]
55
+ datasource.entities = internal[datasource._id!]
56
56
  }
57
57
  }
58
58
 
59
59
  ctx.body = [bbInternalDb, ...datasources]
60
60
  }
61
61
 
62
- export async function buildSchemaFromDb(ctx: BBContext) {
62
+ export async function buildSchemaFromDb(ctx: UserCtx) {
63
63
  const db = context.getAppDB()
64
- const datasource = await db.get(ctx.params.datasourceId)
64
+ const datasource = await sdk.datasources.get(ctx.params.datasourceId)
65
65
  const tablesFilter = ctx.request.body.tablesFilter
66
66
 
67
67
  let { tables, error } = await buildSchemaHelper(datasource)
@@ -146,11 +146,11 @@ async function invalidateVariables(
146
146
  await invalidateDynamicVariables(toInvalidate)
147
147
  }
148
148
 
149
- export async function update(ctx: BBContext) {
149
+ export async function update(ctx: UserCtx) {
150
150
  const db = context.getAppDB()
151
151
  const datasourceId = ctx.params.datasourceId
152
- let datasource = await db.get(datasourceId)
153
- const auth = datasource.config.auth
152
+ let datasource = await sdk.datasources.get(datasourceId)
153
+ const auth = datasource.config?.auth
154
154
  await invalidateVariables(datasource, ctx.request.body)
155
155
 
156
156
  const isBudibaseSource = datasource.type === dbCore.BUDIBASE_DATASOURCE_TYPE
@@ -159,10 +159,13 @@ export async function update(ctx: BBContext) {
159
159
  ? { name: ctx.request.body?.name }
160
160
  : ctx.request.body
161
161
 
162
- datasource = { ...datasource, ...dataSourceBody }
162
+ datasource = {
163
+ ...datasource,
164
+ ...sdk.datasources.mergeConfigs(dataSourceBody, datasource),
165
+ }
163
166
  if (auth && !ctx.request.body.auth) {
164
167
  // don't strip auth config from DB
165
- datasource.config.auth = auth
168
+ datasource.config!.auth = auth
166
169
  }
167
170
 
168
171
  const response = await db.put(datasource)
@@ -179,10 +182,12 @@ export async function update(ctx: BBContext) {
179
182
 
180
183
  ctx.status = 200
181
184
  ctx.message = "Datasource saved successfully."
182
- ctx.body = { datasource }
185
+ ctx.body = {
186
+ datasource: await sdk.datasources.removeSecretSingle(datasource),
187
+ }
183
188
  }
184
189
 
185
- export async function save(ctx: BBContext) {
190
+ export async function save(ctx: UserCtx) {
186
191
  const db = context.getAppDB()
187
192
  const plus = ctx.request.body.datasource.plus
188
193
  const fetchSchema = ctx.request.body.fetchSchema
@@ -213,7 +218,9 @@ export async function save(ctx: BBContext) {
213
218
  }
214
219
  }
215
220
 
216
- const response: any = { datasource }
221
+ const response: any = {
222
+ datasource: await sdk.datasources.removeSecretSingle(datasource),
223
+ }
217
224
  if (schemaError) {
218
225
  response.error = schemaError
219
226
  }
@@ -251,11 +258,11 @@ async function destroyInternalTablesBySourceId(datasourceId: string) {
251
258
  }
252
259
  }
253
260
 
254
- export async function destroy(ctx: BBContext) {
261
+ export async function destroy(ctx: UserCtx) {
255
262
  const db = context.getAppDB()
256
263
  const datasourceId = ctx.params.datasourceId
257
264
 
258
- const datasource = await db.get(datasourceId)
265
+ const datasource = await sdk.datasources.get(datasourceId)
259
266
  // Delete all queries for the datasource
260
267
 
261
268
  if (datasource.type === dbCore.BUDIBASE_DATASOURCE_TYPE) {
@@ -279,13 +286,14 @@ export async function destroy(ctx: BBContext) {
279
286
  ctx.status = 200
280
287
  }
281
288
 
282
- export async function find(ctx: BBContext) {
289
+ export async function find(ctx: UserCtx) {
283
290
  const database = context.getAppDB()
284
- ctx.body = await database.get(ctx.params.datasourceId)
291
+ const datasource = await database.get(ctx.params.datasourceId)
292
+ ctx.body = await sdk.datasources.removeSecretSingle(datasource)
285
293
  }
286
294
 
287
295
  // dynamic query functionality
288
- export async function query(ctx: BBContext) {
296
+ export async function query(ctx: UserCtx) {
289
297
  const queryJson = ctx.request.body
290
298
  try {
291
299
  ctx.body = await getDatasourceAndQuery(queryJson)
@@ -313,7 +321,7 @@ function updateError(error: any, newError: any, tables: string[]) {
313
321
 
314
322
  async function buildSchemaHelper(datasource: Datasource) {
315
323
  const Connector = await getIntegration(datasource.source)
316
-
324
+ datasource = await sdk.datasources.enrich(datasource)
317
325
  // Connect to the DB and build the schema
318
326
  const connector = new Connector(datasource.config)
319
327
  await connector.buildSchema(datasource._id, datasource.entities)
@@ -9,6 +9,7 @@ export default class Deployment {
9
9
  verification: any
10
10
  status?: string
11
11
  err?: any
12
+ appUrl?: string
12
13
 
13
14
  constructor(id = null) {
14
15
  this._id = id || newid()