@budibase/server 2.2.12-alpha.43 → 2.2.12-alpha.45

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 (423) hide show
  1. package/__mocks__/node-fetch.ts +2 -0
  2. package/builder/assets/{index.68e5f22f.js → index.353f1284.js} +392 -386
  3. package/builder/assets/{index.80229ab4.css → index.f9c1cb26.css} +2 -2
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +1872 -1762
  6. package/coverage/coverage-final.json +83 -78
  7. package/coverage/lcov-report/index.html +141 -96
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +158 -137
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +1 -1
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +1 -1
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +99 -75
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +12 -12
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +69 -69
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +1 -1
  21. package/coverage/lcov-report/src/api/controllers/index.html +24 -24
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +1 -1
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +1 -1
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +14 -14
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +1 -1
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/index.html +7 -7
  59. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +70 -46
  60. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
  61. package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
  62. package/coverage/lcov-report/src/api/controllers/routing.ts.html +1 -1
  63. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +9 -9
  64. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +11 -14
  65. package/coverage/lcov-report/src/api/controllers/row/index.html +15 -15
  66. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +1 -1
  67. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +1 -1
  68. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
  69. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +1 -1
  70. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +4 -4
  71. package/coverage/lcov-report/src/api/controllers/screen.ts.html +1 -1
  72. package/coverage/lcov-report/src/api/controllers/script.ts.html +1 -1
  73. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  74. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +21 -24
  75. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +1 -1
  76. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +21 -15
  77. package/coverage/lcov-report/src/api/controllers/table/index.html +13 -13
  78. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +1 -1
  79. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +1 -1
  80. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1 -1
  81. package/coverage/lcov-report/src/api/controllers/templates.ts.html +1 -1
  82. package/coverage/lcov-report/src/api/controllers/user.ts.html +1 -1
  83. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +1 -1
  84. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +1 -1
  87. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +1 -1
  88. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +57 -51
  89. package/coverage/lcov-report/src/api/index.html +1 -1
  90. package/coverage/lcov-report/src/api/index.ts.html +7 -7
  91. package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
  92. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +1 -1
  93. package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
  94. package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
  95. package/coverage/lcov-report/src/api/routes/automation.ts.html +1 -1
  96. package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
  97. package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
  98. package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
  99. package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
  100. package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
  101. package/coverage/lcov-report/src/api/routes/dev.ts.html +1 -1
  102. package/coverage/lcov-report/src/api/routes/index.html +5 -5
  103. package/coverage/lcov-report/src/api/routes/index.ts.html +10 -4
  104. package/coverage/lcov-report/src/api/routes/integration.ts.html +1 -1
  105. package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
  106. package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
  107. package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
  108. package/coverage/lcov-report/src/api/routes/permission.ts.html +1 -1
  109. package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
  110. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +1 -1
  111. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/index.ts.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +1 -1
  115. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
  116. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
  117. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
  121. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/query.ts.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/row.ts.html +2 -2
  127. package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
  128. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
  130. package/coverage/lcov-report/src/api/routes/table.ts.html +1 -1
  131. package/coverage/lcov-report/src/api/routes/templates.ts.html +1 -1
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
  136. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
  139. package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
  140. package/coverage/lcov-report/src/app.ts.html +1 -1
  141. package/coverage/lcov-report/src/automations/actions.ts.html +1 -1
  142. package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
  143. package/coverage/lcov-report/src/automations/bullboard.ts.html +2 -2
  144. package/coverage/lcov-report/src/automations/index.html +15 -15
  145. package/coverage/lcov-report/src/automations/index.ts.html +1 -1
  146. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  147. package/coverage/lcov-report/src/automations/logging/index.ts.html +4 -4
  148. package/coverage/lcov-report/src/automations/steps/bash.ts.html +1 -1
  149. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
  150. package/coverage/lcov-report/src/automations/steps/delay.ts.html +1 -1
  151. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
  152. package/coverage/lcov-report/src/automations/steps/discord.ts.html +1 -1
  153. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
  154. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
  155. package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
  156. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
  158. package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
  159. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
  160. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
  161. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
  162. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
  163. package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
  164. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
  165. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  166. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
  170. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +2 -2
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
  176. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
  177. package/coverage/lcov-report/src/automations/triggers.ts.html +1 -1
  178. package/coverage/lcov-report/src/automations/utils.ts.html +21 -21
  179. package/coverage/lcov-report/src/constants/index.html +1 -1
  180. package/coverage/lcov-report/src/constants/index.ts.html +2 -2
  181. package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
  182. package/coverage/lcov-report/src/constants/screens.ts.html +1 -1
  183. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
  184. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
  185. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
  186. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  187. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
  188. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
  189. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  190. package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
  191. package/coverage/lcov-report/src/db/index.html +1 -1
  192. package/coverage/lcov-report/src/db/index.ts.html +1 -1
  193. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1 -1
  194. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
  195. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  196. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +1 -1
  197. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +1 -1
  198. package/coverage/lcov-report/src/db/newid.ts.html +3 -3
  199. package/coverage/lcov-report/src/db/utils.ts.html +17 -17
  200. package/coverage/lcov-report/src/definitions/automations.ts.html +5 -2
  201. package/coverage/lcov-report/src/definitions/datasource.ts.html +2 -2
  202. package/coverage/lcov-report/src/definitions/index.html +1 -1
  203. package/coverage/lcov-report/src/environment.ts.html +9 -9
  204. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
  205. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
  206. package/coverage/lcov-report/src/events/index.html +1 -1
  207. package/coverage/lcov-report/src/events/index.ts.html +1 -1
  208. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  209. package/coverage/lcov-report/src/index.html +7 -7
  210. package/coverage/lcov-report/src/index.ts.html +5 -5
  211. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  212. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  213. package/coverage/lcov-report/src/integrations/base/index.html +11 -11
  214. package/coverage/lcov-report/src/integrations/base/query.ts.html +13 -7
  215. package/coverage/lcov-report/src/integrations/base/sql.ts.html +12 -12
  216. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  217. package/coverage/lcov-report/src/integrations/base/utils.ts.html +2 -2
  218. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  219. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +9 -9
  220. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  221. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  222. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  223. package/coverage/lcov-report/src/integrations/index.html +1 -1
  224. package/coverage/lcov-report/src/integrations/index.ts.html +37 -37
  225. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  226. package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
  227. package/coverage/lcov-report/src/integrations/mysql.ts.html +11 -11
  228. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  229. package/coverage/lcov-report/src/integrations/postgres.ts.html +10 -10
  230. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  231. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +15 -150
  232. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  233. package/coverage/lcov-report/src/integrations/rest.ts.html +24 -24
  234. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  235. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  236. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  237. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  238. package/coverage/lcov-report/src/integrations/utils.ts.html +2 -2
  239. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  240. package/coverage/lcov-report/src/middleware/authorized.ts.html +19 -19
  241. package/coverage/lcov-report/src/middleware/builder.ts.html +13 -13
  242. package/coverage/lcov-report/src/middleware/currentapp.ts.html +33 -33
  243. package/coverage/lcov-report/src/middleware/index.html +1 -1
  244. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  245. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  246. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  247. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  248. package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
  249. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  265. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  268. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  275. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  276. package/coverage/lcov-report/src/migrations/index.html +1 -1
  277. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  279. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  280. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  281. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  282. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
  283. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +18 -18
  284. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +7 -7
  285. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
  288. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  289. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +1 -1
  290. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  292. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  293. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
  294. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +379 -0
  295. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  296. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  297. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  298. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +100 -0
  299. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +235 -0
  300. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
  301. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  302. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
  303. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
  304. package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
  305. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +18 -9
  306. package/coverage/lcov-report/src/sdk/index.html +5 -5
  307. package/coverage/lcov-report/src/sdk/index.ts.html +17 -5
  308. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  309. package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
  310. package/coverage/lcov-report/src/sdk/users/utils.ts.html +20 -20
  311. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  312. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  313. package/coverage/lcov-report/src/startup.ts.html +1 -1
  314. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +89 -80
  315. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +4 -4
  316. package/coverage/lcov-report/src/tests/utilities/index.html +5 -5
  317. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  318. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +4 -4
  319. package/coverage/lcov-report/src/threads/automation.ts.html +42 -24
  320. package/coverage/lcov-report/src/threads/index.html +28 -28
  321. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  322. package/coverage/lcov-report/src/threads/query.ts.html +68 -29
  323. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  324. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
  325. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  326. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +8 -8
  327. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  328. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +18 -12
  329. package/coverage/lcov-report/src/utilities/fileSystem/index.html +17 -17
  330. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  331. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +5 -8
  332. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +3 -3
  334. package/coverage/lcov-report/src/utilities/global.ts.html +33 -33
  335. package/coverage/lcov-report/src/utilities/index.html +16 -16
  336. package/coverage/lcov-report/src/utilities/index.ts.html +12 -12
  337. package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  339. package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
  340. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  341. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +1 -1
  342. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +1 -1
  343. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +1 -1
  344. package/coverage/lcov-report/src/utilities/schema.ts.html +1 -1
  345. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
  346. package/coverage/lcov-report/src/utilities/security.ts.html +1 -1
  347. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  348. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +1 -1
  349. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  350. package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
  351. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +1 -1
  352. package/coverage/lcov-report/src/watch.ts.html +1 -1
  353. package/coverage/lcov-report/src/websocket.ts.html +3 -3
  354. package/coverage/lcov.info +2986 -2796
  355. package/dist/api/controllers/application.js +73 -74
  356. package/dist/api/controllers/datasource.js +24 -15
  357. package/dist/api/controllers/query/index.js +18 -11
  358. package/dist/api/controllers/row/ExternalRequest.js +5 -3
  359. package/dist/api/controllers/row/external.js +6 -5
  360. package/dist/api/controllers/row/utils.js +5 -2
  361. package/dist/api/controllers/static/index.js +38 -38
  362. package/dist/api/controllers/table/external.js +8 -5
  363. package/dist/api/controllers/webhook.js +45 -43
  364. package/dist/api/routes/index.js +2 -0
  365. package/dist/api/routes/row.js +2 -2
  366. package/dist/index.js +2 -2
  367. package/dist/integrations/base/query.js +7 -2
  368. package/dist/integrations/base/sqlTable.js +14 -14
  369. package/dist/integrations/dynamodb.js +8 -5
  370. package/dist/integrations/mysql.js +2 -2
  371. package/dist/integrations/queries/sql.js +73 -100
  372. package/dist/integrations/rest.js +14 -14
  373. package/dist/package.json +6 -6
  374. package/dist/sdk/app/datasources/datasources.js +113 -0
  375. package/dist/sdk/app/datasources/index.js +27 -0
  376. package/dist/sdk/app/queries/index.js +27 -0
  377. package/dist/sdk/app/queries/queries.js +60 -0
  378. package/dist/sdk/app/tables/index.js +6 -2
  379. package/dist/sdk/index.js +4 -0
  380. package/dist/sdk/utils/index.js +29 -0
  381. package/dist/threads/automation.js +9 -2
  382. package/dist/threads/query.js +27 -13
  383. package/dist/tsconfig.build.tsbuildinfo +1 -1
  384. package/dist/utilities/fileSystem/filesystem.js +36 -34
  385. package/dist/utilities/fileSystem/plugin.js +17 -14
  386. package/dist/utilities/fileSystem/template.js +7 -4
  387. package/package.json +7 -7
  388. package/scripts/dev/manage.js +1 -0
  389. package/src/api/controllers/application.ts +81 -74
  390. package/src/api/controllers/datasource.ts +33 -25
  391. package/src/api/controllers/query/index.ts +47 -39
  392. package/src/api/controllers/row/ExternalRequest.ts +2 -2
  393. package/src/api/controllers/row/external.ts +3 -4
  394. package/src/api/controllers/row/utils.ts +2 -2
  395. package/src/api/controllers/static/index.ts +17 -18
  396. package/src/api/controllers/table/external.ts +8 -6
  397. package/src/api/controllers/webhook.ts +48 -46
  398. package/src/api/routes/index.ts +2 -0
  399. package/src/api/routes/row.ts +1 -1
  400. package/src/api/routes/tests/datasource.spec.ts +35 -1
  401. package/src/definitions/automations.ts +1 -0
  402. package/src/index.ts +1 -1
  403. package/src/integrations/base/query.ts +3 -1
  404. package/src/integrations/base/sqlTable.ts +1 -1
  405. package/src/integrations/dynamodb.ts +3 -3
  406. package/src/integrations/mysql.ts +1 -1
  407. package/src/integrations/queries/sql.ts +5 -50
  408. package/src/integrations/rest.ts +8 -8
  409. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  410. package/src/sdk/app/datasources/datasources.ts +98 -0
  411. package/src/sdk/app/datasources/index.ts +5 -0
  412. package/src/sdk/app/queries/index.ts +5 -0
  413. package/src/sdk/app/queries/queries.ts +50 -0
  414. package/src/sdk/app/tables/index.ts +6 -3
  415. package/src/sdk/index.ts +4 -0
  416. package/src/sdk/utils/index.ts +16 -0
  417. package/src/tests/utilities/TestConfiguration.ts +15 -12
  418. package/src/threads/automation.ts +9 -3
  419. package/src/threads/definitions.ts +3 -0
  420. package/src/threads/query.ts +28 -15
  421. package/src/utilities/fileSystem/filesystem.ts +6 -4
  422. package/src/utilities/fileSystem/plugin.ts +3 -4
  423. package/src/utilities/fileSystem/template.ts +2 -2
@@ -7,6 +7,8 @@ import { invalidateDynamicVariables } from "../../../threads/utils"
7
7
  import env from "../../../environment"
8
8
  import { quotas } from "@budibase/pro"
9
9
  import { events, context, utils, constants } from "@budibase/backend-core"
10
+ import sdk from "../../../sdk"
11
+ import { QueryEvent } from "../../../threads/definitions"
10
12
 
11
13
  const Runner = new Thread(ThreadType.QUERY, {
12
14
  timeoutMs: env.QUERY_THREAD_TIMEOUT || 10000,
@@ -81,7 +83,7 @@ export async function save(ctx: any) {
81
83
  const db = context.getAppDB()
82
84
  const query = ctx.request.body
83
85
 
84
- const datasource = await db.get(query.datasourceId)
86
+ const datasource = await sdk.datasources.get(query.datasourceId)
85
87
 
86
88
  let eventFn
87
89
  if (!query._id) {
@@ -126,9 +128,9 @@ function getAuthConfig(ctx: any) {
126
128
  }
127
129
 
128
130
  export async function preview(ctx: any) {
129
- const db = context.getAppDB()
130
-
131
- const datasource = await db.get(ctx.request.body.datasourceId)
131
+ const { datasource, envVars } = await sdk.datasources.getWithEnvVars(
132
+ ctx.request.body.datasourceId
133
+ )
132
134
  const query = ctx.request.body
133
135
  // preview may not have a queryId as it hasn't been saved, but if it does
134
136
  // this stops dynamic variables from calling the same query
@@ -137,20 +139,22 @@ export async function preview(ctx: any) {
137
139
  const authConfigCtx: any = getAuthConfig(ctx)
138
140
 
139
141
  try {
140
- const runFn = () =>
141
- Runner.run({
142
- appId: ctx.appId,
143
- datasource,
144
- queryVerb,
145
- fields,
146
- parameters,
147
- transformer,
148
- queryId,
149
- ctx: {
150
- user: ctx.user,
151
- auth: { ...authConfigCtx },
152
- },
153
- })
142
+ const inputs: QueryEvent = {
143
+ appId: ctx.appId,
144
+ datasource,
145
+ queryVerb,
146
+ fields,
147
+ parameters,
148
+ transformer,
149
+ queryId,
150
+ // have to pass down to the thread runner - can't put into context now
151
+ environmentVariables: envVars,
152
+ ctx: {
153
+ user: ctx.user,
154
+ auth: { ...authConfigCtx },
155
+ },
156
+ }
157
+ const runFn = () => Runner.run(inputs)
154
158
 
155
159
  const { rows, keys, info, extra } = await quotas.addQuery(runFn, {
156
160
  datasourceId: datasource._id,
@@ -201,7 +205,9 @@ async function execute(
201
205
  const db = context.getAppDB()
202
206
 
203
207
  const query = await db.get(ctx.params.queryId)
204
- const datasource = await db.get(query.datasourceId)
208
+ const { datasource, envVars } = await sdk.datasources.getWithEnvVars(
209
+ query.datasourceId
210
+ )
205
211
 
206
212
  let authConfigCtx: any = {}
207
213
  if (!opts.isAutomation) {
@@ -219,21 +225,23 @@ async function execute(
219
225
 
220
226
  // call the relevant CRUD method on the integration class
221
227
  try {
222
- const runFn = () =>
223
- Runner.run({
224
- appId: ctx.appId,
225
- datasource,
226
- queryVerb: query.queryVerb,
227
- fields: query.fields,
228
- pagination: ctx.request.body.pagination,
229
- parameters: enrichedParameters,
230
- transformer: query.transformer,
231
- queryId: ctx.params.queryId,
232
- ctx: {
233
- user: ctx.user,
234
- auth: { ...authConfigCtx },
235
- },
236
- })
228
+ const inputs: QueryEvent = {
229
+ appId: ctx.appId,
230
+ datasource,
231
+ queryVerb: query.queryVerb,
232
+ fields: query.fields,
233
+ pagination: ctx.request.body.pagination,
234
+ parameters: enrichedParameters,
235
+ transformer: query.transformer,
236
+ queryId: ctx.params.queryId,
237
+ // have to pass down to the thread runner - can't put into context now
238
+ environmentVariables: envVars,
239
+ ctx: {
240
+ user: ctx.user,
241
+ auth: { ...authConfigCtx },
242
+ },
243
+ }
244
+ const runFn = () => Runner.run(inputs)
237
245
 
238
246
  const { rows, pagination, extra } = await quotas.addQuery(runFn, {
239
247
  datasourceId: datasource._id,
@@ -266,18 +274,18 @@ export async function executeV2(
266
274
  const removeDynamicVariables = async (queryId: any) => {
267
275
  const db = context.getAppDB()
268
276
  const query = await db.get(queryId)
269
- const datasource = await db.get(query.datasourceId)
270
- const dynamicVariables = datasource.config.dynamicVariables
277
+ const datasource = await sdk.datasources.get(query.datasourceId)
278
+ const dynamicVariables = datasource.config?.dynamicVariables as any[]
271
279
 
272
280
  if (dynamicVariables) {
273
281
  // delete dynamic variables from the datasource
274
- datasource.config.dynamicVariables = dynamicVariables.filter(
282
+ datasource.config!.dynamicVariables = dynamicVariables!.filter(
275
283
  (dv: any) => dv.queryId !== queryId
276
284
  )
277
285
  await db.put(datasource)
278
286
 
279
287
  // invalidate the deleted variables
280
- const variablesToDelete = dynamicVariables.filter(
288
+ const variablesToDelete = dynamicVariables!.filter(
281
289
  (dv: any) => dv.queryId === queryId
282
290
  )
283
291
  await invalidateDynamicVariables(variablesToDelete)
@@ -289,7 +297,7 @@ export async function destroy(ctx: any) {
289
297
  const queryId = ctx.params.queryId
290
298
  await removeDynamicVariables(queryId)
291
299
  const query = await db.get(queryId)
292
- const datasource = await db.get(query.datasourceId)
300
+ const datasource = await sdk.datasources.get(query.datasourceId)
293
301
  await db.remove(ctx.params.queryId, ctx.params.revId)
294
302
  ctx.message = `Query deleted.`
295
303
  ctx.status = 200
@@ -25,6 +25,7 @@ import { cloneDeep } from "lodash/fp"
25
25
  import { processFormulas, processDates } from "../../../utilities/rowProcessor"
26
26
  import { context } from "@budibase/backend-core"
27
27
  import { removeKeyNumbering } from "./utils"
28
+ import sdk from "../../../sdk"
28
29
 
29
30
  export interface ManyRelationship {
30
31
  tableId?: string
@@ -664,8 +665,7 @@ export class ExternalRequest {
664
665
  throw "Unable to run without a table name"
665
666
  }
666
667
  if (!this.datasource) {
667
- const db = context.getAppDB()
668
- this.datasource = await db.get(datasourceId)
668
+ this.datasource = await sdk.datasources.get(datasourceId!)
669
669
  if (!this.datasource || !this.datasource.entities) {
670
670
  throw "No tables found, fetch tables before query."
671
671
  }
@@ -19,6 +19,7 @@ import {
19
19
  Table,
20
20
  Datasource,
21
21
  } from "@budibase/types"
22
+ import sdk from "../../../sdk"
22
23
 
23
24
  export async function handleRequest(
24
25
  operation: Operation,
@@ -179,10 +180,9 @@ export async function validate(ctx: BBContext) {
179
180
 
180
181
  export async function exportRows(ctx: BBContext) {
181
182
  const { datasourceId } = breakExternalTableId(ctx.params.tableId)
182
- const db = context.getAppDB()
183
183
  const format = ctx.query.format
184
184
  const { columns } = ctx.request.body
185
- const datasource = await db.get(datasourceId)
185
+ const datasource = await sdk.datasources.get(datasourceId!)
186
186
  if (!datasource || !datasource.entities) {
187
187
  ctx.throw(400, "Datasource has not been configured for plus API.")
188
188
  }
@@ -225,8 +225,7 @@ export async function fetchEnrichedRow(ctx: BBContext) {
225
225
  const id = ctx.params.rowId
226
226
  const tableId = ctx.params.tableId
227
227
  const { datasourceId, tableName } = breakExternalTableId(tableId)
228
- const db = context.getAppDB()
229
- const datasource: Datasource = await db.get(datasourceId)
228
+ const datasource: Datasource = await sdk.datasources.get(datasourceId!)
230
229
  if (!tableName) {
231
230
  ctx.throw(400, "Unable to find table.")
232
231
  }
@@ -8,6 +8,7 @@ export { removeKeyNumbering } from "../../../integrations/base/utils"
8
8
  const validateJs = require("validate.js")
9
9
  const { cloneDeep } = require("lodash/fp")
10
10
  import { Ctx } from "@budibase/types"
11
+ import sdk from "../../../sdk"
11
12
 
12
13
  validateJs.extend(validateJs.validators.datetime, {
13
14
  parse: function (value: string) {
@@ -21,8 +22,7 @@ validateJs.extend(validateJs.validators.datetime, {
21
22
 
22
23
  export async function getDatasourceAndQuery(json: any) {
23
24
  const datasourceId = json.endpoint.datasourceId
24
- const db = context.getAppDB()
25
- const datasource = await db.get(datasourceId)
25
+ const datasource = await sdk.datasources.get(datasourceId)
26
26
  return makeExternalQuery(datasource, json)
27
27
  }
28
28
 
@@ -1,20 +1,21 @@
1
1
  require("svelte/register")
2
2
 
3
- const send = require("koa-send")
4
- const { resolve, join } = require("../../../utilities/centralPath")
3
+ import { resolve, join } from "../../../utilities/centralPath"
5
4
  const uuid = require("uuid")
6
5
  import { ObjectStoreBuckets } from "../../../constants"
7
- const { processString } = require("@budibase/string-templates")
8
- const {
6
+ import { processString } from "@budibase/string-templates"
7
+ import {
9
8
  loadHandlebarsFile,
10
9
  NODE_MODULES_PATH,
11
10
  TOP_LEVEL_PATH,
12
- } = require("../../../utilities/fileSystem")
11
+ } from "../../../utilities/fileSystem"
13
12
  import env from "../../../environment"
14
- const { DocumentType } = require("../../../db/utils")
15
- const { context, objectStore, utils } = require("@budibase/backend-core")
16
- const AWS = require("aws-sdk")
17
- const fs = require("fs")
13
+ import { DocumentType } from "../../../db/utils"
14
+ import { context, objectStore, utils } from "@budibase/backend-core"
15
+ import AWS from "aws-sdk"
16
+ import fs from "fs"
17
+ import sdk from "../../../sdk"
18
+ const send = require("koa-send")
18
19
 
19
20
  async function prepareUpload({ s3Key, bucket, metadata, file }: any) {
20
21
  const response = await objectStore.upload({
@@ -110,7 +111,7 @@ export const serveApp = async function (ctx: any) {
110
111
  title: appInfo.name,
111
112
  production: env.isProd(),
112
113
  appId,
113
- clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
114
+ clientLibPath: objectStore.clientLibraryUrl(appId!, appInfo.version),
114
115
  usedPlugins: plugins,
115
116
  })
116
117
 
@@ -135,7 +136,7 @@ export const serveBuilderPreview = async function (ctx: any) {
135
136
  let appId = context.getAppId()
136
137
  const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`)
137
138
  ctx.body = await processString(previewHbs, {
138
- clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
139
+ clientLibPath: objectStore.clientLibraryUrl(appId!, appInfo.version),
139
140
  })
140
141
  } else {
141
142
  // just return the app info for jest to assert on
@@ -150,13 +151,11 @@ export const serveClientLibrary = async function (ctx: any) {
150
151
  }
151
152
 
152
153
  export const getSignedUploadURL = async function (ctx: any) {
153
- const database = context.getAppDB()
154
-
155
154
  // Ensure datasource is valid
156
155
  let datasource
157
156
  try {
158
157
  const { datasourceId } = ctx.params
159
- datasource = await database.get(datasourceId)
158
+ datasource = await sdk.datasources.get(datasourceId, { enriched: true })
160
159
  if (!datasource) {
161
160
  ctx.throw(400, "The specified datasource could not be found")
162
161
  }
@@ -172,8 +171,8 @@ export const getSignedUploadURL = async function (ctx: any) {
172
171
  // Determine type of datasource and generate signed URL
173
172
  let signedUrl
174
173
  let publicUrl
175
- const awsRegion = datasource?.config?.region || "eu-west-1"
176
- if (datasource.source === "S3") {
174
+ const awsRegion = (datasource?.config?.region || "eu-west-1") as string
175
+ if (datasource?.source === "S3") {
177
176
  const { bucket, key } = ctx.request.body || {}
178
177
  if (!bucket || !key) {
179
178
  ctx.throw(400, "bucket and key values are required")
@@ -182,8 +181,8 @@ export const getSignedUploadURL = async function (ctx: any) {
182
181
  try {
183
182
  const s3 = new AWS.S3({
184
183
  region: awsRegion,
185
- accessKeyId: datasource?.config?.accessKeyId,
186
- secretAccessKey: datasource?.config?.secretAccessKey,
184
+ accessKeyId: datasource?.config?.accessKeyId as string,
185
+ secretAccessKey: datasource?.config?.secretAccessKey as string,
187
186
  apiVersion: "2006-03-01",
188
187
  signatureVersion: "v4",
189
188
  })
@@ -219,7 +219,7 @@ export async function save(ctx: BBContext) {
219
219
  }
220
220
 
221
221
  const db = context.getAppDB()
222
- const datasource = await db.get(datasourceId)
222
+ const datasource = await sdk.datasources.get(datasourceId)
223
223
  if (!datasource.entities) {
224
224
  datasource.entities = {}
225
225
  }
@@ -322,15 +322,17 @@ export async function destroy(ctx: BBContext) {
322
322
  const datasourceId = getDatasourceId(tableToDelete)
323
323
 
324
324
  const db = context.getAppDB()
325
- const datasource = await db.get(datasourceId)
325
+ const datasource = await sdk.datasources.get(datasourceId!)
326
326
  const tables = datasource.entities
327
327
 
328
328
  const operation = Operation.DELETE_TABLE
329
- await makeTableRequest(datasource, operation, tableToDelete, tables)
330
-
331
- cleanupRelationships(tableToDelete, tables)
329
+ if (tables) {
330
+ await makeTableRequest(datasource, operation, tableToDelete, tables)
331
+ cleanupRelationships(tableToDelete, tables)
332
+ delete tables[tableToDelete.name]
333
+ datasource.entities = tables
334
+ }
332
335
 
333
- delete datasource.entities[tableToDelete.name]
334
336
  await db.put(datasource)
335
337
 
336
338
  return tableToDelete
@@ -39,60 +39,62 @@ export async function destroy(ctx: BBContext) {
39
39
  }
40
40
 
41
41
  export async function buildSchema(ctx: BBContext) {
42
- await context.updateAppId(ctx.params.instance)
43
- const db = context.getAppDB()
44
- const webhook = (await db.get(ctx.params.id)) as Webhook
45
- webhook.bodySchema = toJsonSchema(ctx.request.body)
46
- // update the automation outputs
47
- if (webhook.action.type === WebhookActionType.AUTOMATION) {
48
- let automation = (await db.get(webhook.action.target)) as Automation
49
- const autoOutputs = automation.definition.trigger.schema.outputs
50
- let properties = webhook.bodySchema.properties
51
- // reset webhook outputs
52
- autoOutputs.properties = {
53
- body: autoOutputs.properties.body,
54
- }
55
- for (let prop of Object.keys(properties)) {
56
- autoOutputs.properties[prop] = {
57
- type: properties[prop].type,
58
- description: AUTOMATION_DESCRIPTION,
42
+ await context.doInAppContext(ctx.params.instance, async () => {
43
+ const db = context.getAppDB()
44
+ const webhook = (await db.get(ctx.params.id)) as Webhook
45
+ webhook.bodySchema = toJsonSchema(ctx.request.body)
46
+ // update the automation outputs
47
+ if (webhook.action.type === WebhookActionType.AUTOMATION) {
48
+ let automation = (await db.get(webhook.action.target)) as Automation
49
+ const autoOutputs = automation.definition.trigger.schema.outputs
50
+ let properties = webhook.bodySchema.properties
51
+ // reset webhook outputs
52
+ autoOutputs.properties = {
53
+ body: autoOutputs.properties.body,
59
54
  }
55
+ for (let prop of Object.keys(properties)) {
56
+ autoOutputs.properties[prop] = {
57
+ type: properties[prop].type,
58
+ description: AUTOMATION_DESCRIPTION,
59
+ }
60
+ }
61
+ await db.put(automation)
60
62
  }
61
- await db.put(automation)
62
- }
63
- ctx.body = await db.put(webhook)
63
+ ctx.body = await db.put(webhook)
64
+ })
64
65
  }
65
66
 
66
67
  export async function trigger(ctx: BBContext) {
67
68
  const prodAppId = dbCore.getProdAppID(ctx.params.instance)
68
- await context.updateAppId(prodAppId)
69
- try {
70
- const db = context.getAppDB()
71
- const webhook = (await db.get(ctx.params.id)) as Webhook
72
- // validate against the schema
73
- if (webhook.bodySchema) {
74
- validate(ctx.request.body, webhook.bodySchema)
75
- }
76
- const target = await db.get(webhook.action.target)
77
- if (webhook.action.type === WebhookActionType.AUTOMATION) {
78
- // trigger with both the pure request and then expand it
79
- // incase the user has produced a schema to bind to
80
- await triggers.externalTrigger(target, {
81
- body: ctx.request.body,
82
- ...ctx.request.body,
83
- appId: prodAppId,
84
- })
85
- }
86
- ctx.status = 200
87
- ctx.body = {
88
- message: "Webhook trigger fired successfully",
89
- }
90
- } catch (err: any) {
91
- if (err.status === 404) {
69
+ await context.doInAppContext(prodAppId, async () => {
70
+ try {
71
+ const db = context.getAppDB()
72
+ const webhook = (await db.get(ctx.params.id)) as Webhook
73
+ // validate against the schema
74
+ if (webhook.bodySchema) {
75
+ validate(ctx.request.body, webhook.bodySchema)
76
+ }
77
+ const target = await db.get(webhook.action.target)
78
+ if (webhook.action.type === WebhookActionType.AUTOMATION) {
79
+ // trigger with both the pure request and then expand it
80
+ // incase the user has produced a schema to bind to
81
+ await triggers.externalTrigger(target, {
82
+ body: ctx.request.body,
83
+ ...ctx.request.body,
84
+ appId: prodAppId,
85
+ })
86
+ }
92
87
  ctx.status = 200
93
88
  ctx.body = {
94
- message: "Application not deployed yet.",
89
+ message: "Webhook trigger fired successfully",
90
+ }
91
+ } catch (err: any) {
92
+ if (err.status === 404) {
93
+ ctx.status = 200
94
+ ctx.body = {
95
+ message: "Application not deployed yet.",
96
+ }
95
97
  }
96
98
  }
97
- }
99
+ })
98
100
  }
@@ -33,6 +33,7 @@ export { default as publicRoutes } from "./public"
33
33
 
34
34
  const appBackupRoutes = pro.appBackups
35
35
  const scheduleRoutes = pro.schedules
36
+ const environmentVariableRoutes = pro.environmentVariables
36
37
 
37
38
  export const mainRoutes: Router[] = [
38
39
  appBackupRoutes,
@@ -63,6 +64,7 @@ export const mainRoutes: Router[] = [
63
64
  migrationRoutes,
64
65
  pluginRoutes,
65
66
  scheduleRoutes,
67
+ environmentVariableRoutes,
66
68
  // these need to be handled last as they still use /api/:tableId
67
69
  // this could be breaking as koa may recognise other routes as this
68
70
  tableRoutes,
@@ -3,7 +3,7 @@ import * as rowController from "../controllers/row"
3
3
  import authorized from "../../middleware/authorized"
4
4
  import { paramResource, paramSubResource } from "../../middleware/resourceId"
5
5
  import { permissions } from "@budibase/backend-core"
6
- const { internalSearchValidator } = require("./utils/validators")
6
+ import { internalSearchValidator } from "./utils/validators"
7
7
  const { PermissionType, PermissionLevel } = permissions
8
8
 
9
9
  const router: Router = new Router()
@@ -2,7 +2,8 @@ jest.mock("pg")
2
2
  import * as setup from "./utilities"
3
3
  import { checkBuilderEndpoint } from "./utilities/TestFunctions"
4
4
  import { checkCacheForDynamicVariable } from "../../../threads/utils"
5
- import { events } from "@budibase/backend-core"
5
+ import { context, events } from "@budibase/backend-core"
6
+ import sdk from "../../../sdk"
6
7
 
7
8
  let { basicDatasource } = setup.structures
8
9
  const pg = require("pg")
@@ -184,4 +185,37 @@ describe("/datasources", () => {
184
185
  })
185
186
  })
186
187
  })
188
+
189
+ describe("check secret replacement", () => {
190
+ async function makeDatasource() {
191
+ datasource = basicDatasource()
192
+ datasource.datasource.config.password = "testing"
193
+ const res = await request
194
+ .post(`/api/datasources`)
195
+ .send(datasource)
196
+ .set(config.defaultHeaders())
197
+ .expect("Content-Type", /json/)
198
+ .expect(200)
199
+ return res.body.datasource
200
+ }
201
+
202
+ it("should save a datasource with password", async () => {
203
+ const datasource = await makeDatasource()
204
+ expect(datasource.config.password).toBe("--secret-value--")
205
+ })
206
+
207
+ it("should not the password on update with the --secret-value--", async () => {
208
+ const datasource = await makeDatasource()
209
+ await request
210
+ .put(`/api/datasources/${datasource._id}`)
211
+ .send(datasource)
212
+ .set(config.defaultHeaders())
213
+ .expect("Content-Type", /json/)
214
+ .expect(200)
215
+ await context.doInAppContext(config.getAppId(), async () => {
216
+ const dbDatasource: any = await sdk.datasources.get(datasource._id)
217
+ expect(dbDatasource.config.password).toBe("testing")
218
+ })
219
+ })
220
+ })
187
221
  })
@@ -24,6 +24,7 @@ export interface TriggerOutput {
24
24
 
25
25
  export interface AutomationContext extends AutomationResults {
26
26
  steps: any[]
27
+ env?: Record<string, string>
27
28
  trigger: any
28
29
  }
29
30
 
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { bootstrap } from "global-agent"
2
2
  const fixPath = require("fix-path")
3
- const { checkDevelopmentEnvironment } = require("./utilities/fileSystem")
3
+ import { checkDevelopmentEnvironment } from "./utilities/fileSystem"
4
4
 
5
5
  function runServer() {
6
6
  // this will shutdown the system if development environment not ready
@@ -1,10 +1,12 @@
1
1
  import { QueryJson, Datasource } from "@budibase/types"
2
- const { getIntegration } = require("../index")
2
+ import { getIntegration } from "../index"
3
+ import sdk from "../../sdk"
3
4
 
4
5
  export async function makeExternalQuery(
5
6
  datasource: Datasource,
6
7
  json: QueryJson
7
8
  ) {
9
+ datasource = await sdk.datasources.enrich(datasource)
8
10
  const Integration = await getIntegration(datasource.source)
9
11
  // query is the opinionated function
10
12
  if (Integration.prototype.query) {
@@ -3,7 +3,7 @@ import { Operation, QueryJson, RenameColumn, Table } from "@budibase/types"
3
3
  import { breakExternalTableId } from "../utils"
4
4
  import SchemaBuilder = Knex.SchemaBuilder
5
5
  import CreateTableBuilder = Knex.CreateTableBuilder
6
- const { FieldTypes, RelationshipTypes } = require("../../constants")
6
+ import { FieldTypes, RelationshipTypes } from "../../constants"
7
7
 
8
8
  function generateSchema(
9
9
  schema: CreateTableBuilder,
@@ -5,8 +5,8 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- const AWS = require("aws-sdk")
9
- const { AWS_REGION } = require("../db/dynamoClient")
8
+ import AWS from "aws-sdk"
9
+ import { AWS_REGION } from "../db/dynamoClient"
10
10
 
11
11
  interface DynamoDBConfig {
12
12
  region: string
@@ -182,7 +182,7 @@ class DynamoDBIntegration implements IntegrationBase {
182
182
  return response
183
183
  }
184
184
 
185
- async describe(query: { table: string }) {
185
+ async describe(query: { table: string }): Promise<any> {
186
186
  const params = {
187
187
  TableName: query.table,
188
188
  }
@@ -16,7 +16,7 @@ import {
16
16
  finaliseExternalTables,
17
17
  } from "./utils"
18
18
  import dayjs from "dayjs"
19
- const { NUMBER_REGEX } = require("../utilities")
19
+ import { NUMBER_REGEX } from "../utilities"
20
20
  import Sql from "./base/sql"
21
21
  import { MySQLColumn } from "./base/types"
22
22