@budibase/server 2.2.25 → 2.2.27-alpha.0

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.f9b8b175.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.01a9ab3b.js +0 -1024
  642. package/builder/assets/index.96b9ffed.css +0 -6
  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
@@ -6,21 +6,19 @@ import {
6
6
  IntegrationBase,
7
7
  PaginationValues,
8
8
  RestQueryFields as RestQuery,
9
- } from "@budibase/types"
10
- import {
11
9
  RestConfig,
12
- AuthType,
13
- BasicAuthConfig,
14
- BearerAuthConfig,
15
- } from "../definitions/datasource"
10
+ RestAuthType,
11
+ RestBasicAuthConfig,
12
+ RestBearerAuthConfig,
13
+ } from "@budibase/types"
16
14
  import { get } from "lodash"
17
15
  import * as https from "https"
18
16
  import qs from "querystring"
19
- const fetch = require("node-fetch")
20
- const { formatBytes } = require("../utilities")
21
- const { performance } = require("perf_hooks")
22
- const FormData = require("form-data")
23
- const { URLSearchParams } = require("url")
17
+ import fetch from "node-fetch"
18
+ import { formatBytes } from "../utilities"
19
+ import { performance } from "perf_hooks"
20
+ import FormData from "form-data"
21
+ import { URLSearchParams } from "url"
24
22
 
25
23
  const BodyTypes = {
26
24
  NONE: "none",
@@ -204,12 +202,12 @@ class RestIntegration implements IntegrationBase {
204
202
 
205
203
  // Append page number or cursor param if configured
206
204
  if (pageParam && paginationValues.page != null) {
207
- params.append(pageParam, paginationValues.page)
205
+ params.append(pageParam, paginationValues.page as string)
208
206
  }
209
207
 
210
208
  // Append page size param if configured
211
209
  if (sizeParam && paginationValues.limit != null) {
212
- params.append(sizeParam, paginationValues.limit)
210
+ params.append(sizeParam, String(paginationValues.limit))
213
211
  }
214
212
 
215
213
  // Prepend query string with pagination params
@@ -280,7 +278,7 @@ class RestIntegration implements IntegrationBase {
280
278
  case BodyTypes.ENCODED:
281
279
  const params = new URLSearchParams()
282
280
  for (let [key, value] of Object.entries(object)) {
283
- params.append(key, value)
281
+ params.append(key, value as string)
284
282
  }
285
283
  addPaginationToBody((key: string, value: any) => {
286
284
  params.append(key, value)
@@ -331,14 +329,14 @@ class RestIntegration implements IntegrationBase {
331
329
  if (authConfig) {
332
330
  let config
333
331
  switch (authConfig.type) {
334
- case AuthType.BASIC:
335
- config = authConfig.config as BasicAuthConfig
332
+ case RestAuthType.BASIC:
333
+ config = authConfig.config as RestBasicAuthConfig
336
334
  headers.Authorization = `Basic ${Buffer.from(
337
335
  `${config.username}:${config.password}`
338
336
  ).toString("base64")}`
339
337
  break
340
- case AuthType.BEARER:
341
- config = authConfig.config as BearerAuthConfig
338
+ case RestAuthType.BEARER:
339
+ config = authConfig.config as RestBearerAuthConfig
342
340
  headers.Authorization = `Bearer ${config.token}`
343
341
  break
344
342
  }
@@ -428,5 +426,4 @@ class RestIntegration implements IntegrationBase {
428
426
  export default {
429
427
  schema: SCHEMA,
430
428
  integration: RestIntegration,
431
- AuthType,
432
429
  }
@@ -1,23 +1,32 @@
1
- jest.mock(
2
- "pouchdb",
3
- () =>
4
- function CouchDBMock(this: any) {
5
- this.post = jest.fn()
6
- this.allDocs = jest.fn(() => ({ rows: [] }))
7
- this.put = jest.fn()
8
- this.get = jest.fn()
9
- this.remove = jest.fn()
10
- this.plugin = jest.fn()
11
- this.close = jest.fn()
12
- }
13
- )
1
+ import { DatabaseWithConnection } from "@budibase/backend-core/src/db"
2
+
3
+ jest.mock("@budibase/backend-core", () => {
4
+ const core = jest.requireActual("@budibase/backend-core")
5
+ return {
6
+ ...core,
7
+ db: {
8
+ ...core.db,
9
+ DatabaseWithConnection: function () {
10
+ return {
11
+ post: jest.fn(),
12
+ allDocs: jest.fn().mockReturnValue({ rows: [] }),
13
+ put: jest.fn(),
14
+ get: jest.fn().mockReturnValue({ _rev: "a" }),
15
+ remove: jest.fn(),
16
+ }
17
+ },
18
+ },
19
+ }
20
+ })
14
21
 
15
22
  import { default as CouchDBIntegration } from "../couchdb"
16
23
 
17
24
  class TestConfiguration {
18
25
  integration: any
19
26
 
20
- constructor(config: any = {}) {
27
+ constructor(
28
+ config: any = { url: "http://somewhere", database: "something" }
29
+ ) {
21
30
  this.integration = new CouchDBIntegration.integration(config)
22
31
  }
23
32
  }
@@ -33,8 +42,8 @@ describe("CouchDB Integration", () => {
33
42
  const doc = {
34
43
  test: 1,
35
44
  }
36
- const response = await config.integration.create({
37
- json: doc,
45
+ await config.integration.create({
46
+ json: JSON.stringify(doc),
38
47
  })
39
48
  expect(config.integration.client.post).toHaveBeenCalledWith(doc)
40
49
  })
@@ -44,8 +53,8 @@ describe("CouchDB Integration", () => {
44
53
  name: "search",
45
54
  }
46
55
 
47
- const response = await config.integration.read({
48
- json: doc,
56
+ await config.integration.read({
57
+ json: JSON.stringify(doc),
49
58
  })
50
59
 
51
60
  expect(config.integration.client.allDocs).toHaveBeenCalledWith({
@@ -60,11 +69,14 @@ describe("CouchDB Integration", () => {
60
69
  name: "search",
61
70
  }
62
71
 
63
- const response = await config.integration.update({
64
- json: doc,
72
+ await config.integration.update({
73
+ json: JSON.stringify(doc),
65
74
  })
66
75
 
67
- expect(config.integration.client.put).toHaveBeenCalledWith(doc)
76
+ expect(config.integration.client.put).toHaveBeenCalledWith({
77
+ ...doc,
78
+ _rev: "a",
79
+ })
68
80
  })
69
81
 
70
82
  it("calls the delete method with the correct params", async () => {
@@ -1,18 +1,21 @@
1
- const mockFetch = jest.fn(() => ({
2
- headers: {
3
- raw: () => {
4
- return { "content-type": ["application/json"] }
1
+ jest.mock("node-fetch", () => {
2
+ return jest.fn(() => ({
3
+ headers: {
4
+ raw: () => {
5
+ return { "content-type": ["application/json"] }
6
+ },
7
+ get: () => ["application/json"],
5
8
  },
6
- get: () => ["application/json"],
7
- },
8
- json: jest.fn(() => ({
9
- my_next_cursor: 123,
10
- })),
11
- text: jest.fn(),
12
- }))
13
- jest.mock("node-fetch", () => mockFetch)
9
+ json: jest.fn(() => ({
10
+ my_next_cursor: 123,
11
+ })),
12
+ text: jest.fn(),
13
+ }))
14
+ })
15
+
14
16
  import fetch from "node-fetch"
15
17
  import { default as RestIntegration } from "../rest"
18
+ import { RestAuthType } from "@budibase/types"
16
19
  const FormData = require("form-data")
17
20
  const { URLSearchParams } = require("url")
18
21
 
@@ -227,7 +230,7 @@ describe("REST Integration", () => {
227
230
  const basicAuth = {
228
231
  _id: "c59c14bd1898a43baa08da68959b24686",
229
232
  name: "basic-1",
230
- type: RestIntegration.AuthType.BASIC,
233
+ type: RestAuthType.BASIC,
231
234
  config: {
232
235
  username: "user",
233
236
  password: "password",
@@ -237,7 +240,7 @@ describe("REST Integration", () => {
237
240
  const bearerAuth = {
238
241
  _id: "0d91d732f34e4befabeff50b392a8ff3",
239
242
  name: "bearer-1",
240
- type: RestIntegration.AuthType.BEARER,
243
+ type: RestAuthType.BEARER,
241
244
  config: {
242
245
  token: "mytoken",
243
246
  },
@@ -579,7 +582,8 @@ describe("REST Integration", () => {
579
582
  })
580
583
  await config.integration.read({})
581
584
 
582
- const calls: any = mockFetch.mock.calls[0]
585
+ // @ts-ignore
586
+ const calls: any = fetch.mock.calls[0]
583
587
  const url = calls[0]
584
588
  expect(url).toBe(`${BASE_URL}/`)
585
589
 
@@ -63,7 +63,11 @@ const checkAuthorizedResource = async (
63
63
  }
64
64
  }
65
65
 
66
- export = (permType: any, permLevel: any = null, opts = { schema: false }) =>
66
+ export default (
67
+ permType: any,
68
+ permLevel: any = null,
69
+ opts = { schema: false }
70
+ ) =>
67
71
  async (ctx: any, next: any) => {
68
72
  // webhooks don't need authentication, each webhook unique
69
73
  // also internal requests (between services) don't need authorized
@@ -64,7 +64,7 @@ async function updateAppUpdatedAt(ctx: BBContext) {
64
64
  })
65
65
  }
66
66
 
67
- export = async function builder(ctx: BBContext, permType: string) {
67
+ export default async function builder(ctx: BBContext, permType: string) {
68
68
  const appId = ctx.appId
69
69
  // this only functions within an app context
70
70
  if (!appId) {
@@ -12,7 +12,7 @@ import env from "../environment"
12
12
  import { isWebhookEndpoint } from "./utils"
13
13
  import { BBContext } from "@budibase/types"
14
14
 
15
- export = async (ctx: BBContext, next: any) => {
15
+ export default async (ctx: BBContext, next: any) => {
16
16
  // try to get the appID from the request
17
17
  let requestAppId = await utils.getAppIdFromCtx(ctx)
18
18
  // get app cookie if it exists
@@ -25,6 +25,7 @@ export = async (ctx: BBContext, next: any) => {
25
25
  if (!appCookie && !requestAppId) {
26
26
  return next()
27
27
  }
28
+
28
29
  // check the app exists referenced in cookie
29
30
  if (appCookie) {
30
31
  const appId = appCookie.appId
@@ -51,7 +52,7 @@ export = async (ctx: BBContext, next: any) => {
51
52
 
52
53
  let appId: string | undefined,
53
54
  roleId = roles.BUILTIN_ROLE_IDS.PUBLIC
54
- if (!ctx.user) {
55
+ if (!ctx.user?._id) {
55
56
  // not logged in, try to set a cookie for public apps
56
57
  appId = requestAppId
57
58
  } else if (requestAppId != null) {
@@ -96,7 +97,7 @@ export = async (ctx: BBContext, next: any) => {
96
97
  // need to judge this only based on the request app ID,
97
98
  if (
98
99
  env.MULTI_TENANCY &&
99
- ctx.user &&
100
+ ctx.user?._id &&
100
101
  requestAppId &&
101
102
  !tenancy.isUserInAppTenant(requestAppId, ctx.user)
102
103
  ) {
@@ -1,7 +1,7 @@
1
1
  import { constants, utils } from "@budibase/backend-core"
2
2
  import { BBContext } from "@budibase/types"
3
3
 
4
- export = function ({ requiresAppId }: { requiresAppId?: boolean } = {}) {
4
+ export default function ({ requiresAppId }: { requiresAppId?: boolean } = {}) {
5
5
  return async (ctx: BBContext, next: any) => {
6
6
  const appId = await utils.getAppIdFromCtx(ctx)
7
7
  if (requiresAppId && !appId) {
@@ -3,7 +3,7 @@ import { BBContext } from "@budibase/types"
3
3
 
4
4
  // if added as a middleware will stop requests unless builder is in self host mode
5
5
  // or cloud is in self host
6
- export = async (ctx: BBContext, next: any) => {
6
+ export default async (ctx: BBContext, next: any) => {
7
7
  if (env.SELF_HOSTED) {
8
8
  await next()
9
9
  return
@@ -7,7 +7,7 @@ jest.mock("../../environment", () => ({
7
7
  }
8
8
  })
9
9
  )
10
- const authorizedMiddleware = require("../authorized")
10
+ const authorizedMiddleware = require("../authorized").default
11
11
  const env = require("../../environment")
12
12
  const { permissions } = require("@budibase/backend-core")
13
13
 
@@ -124,7 +124,7 @@ class TestConfiguration {
124
124
  // import as late as possible for mocks
125
125
  jest.resetModules()
126
126
  require("../../db").init()
127
- const currentAppMiddleware = require("../currentapp")
127
+ const currentAppMiddleware = require("../currentapp").default
128
128
  return currentAppMiddleware(this.ctx, this.next)
129
129
  }
130
130
  }
@@ -1,4 +1,4 @@
1
- const selfHostMiddleware = require("../selfhost")
1
+ const selfHostMiddleware = require("../selfhost").default
2
2
  const env = require("../../environment")
3
3
  jest.mock("../../environment")
4
4
 
@@ -5,6 +5,7 @@ import {
5
5
  isGoogleConfig,
6
6
  isOIDCConfig,
7
7
  isSettingsConfig,
8
+ ConfigType,
8
9
  } from "@budibase/types"
9
10
  import env from "./../../../../environment"
10
11
 
@@ -31,15 +32,15 @@ export const backfill = async (
31
32
  await events.email.SMTPCreated(timestamp)
32
33
  }
33
34
  if (isGoogleConfig(config)) {
34
- await events.auth.SSOCreated("google", timestamp)
35
+ await events.auth.SSOCreated(ConfigType.GOOGLE, timestamp)
35
36
  if (config.config.activated) {
36
- await events.auth.SSOActivated("google", timestamp)
37
+ await events.auth.SSOActivated(ConfigType.GOOGLE, timestamp)
37
38
  }
38
39
  }
39
40
  if (isOIDCConfig(config)) {
40
- await events.auth.SSOCreated("oidc", timestamp)
41
+ await events.auth.SSOCreated(ConfigType.OIDC, timestamp)
41
42
  if (config.config.configs[0].activated) {
42
- await events.auth.SSOActivated("oidc", timestamp)
43
+ await events.auth.SSOActivated(ConfigType.OIDC, timestamp)
43
44
  }
44
45
  }
45
46
  if (isSettingsConfig(config)) {
@@ -2,7 +2,7 @@ import TestConfig from "../../../../tests/utilities/TestConfiguration"
2
2
  import * as syncRows from "../syncRows"
3
3
  import { quotas } from "@budibase/pro"
4
4
  import { QuotaUsageType, StaticQuotaName } from "@budibase/types"
5
- const { db: dbCore } = require("@budibase/backend-core")
5
+ import { db as dbCore, context } from "@budibase/backend-core"
6
6
 
7
7
  describe("syncRows", () => {
8
8
  let config = new TestConfig(false)
@@ -24,13 +24,17 @@ describe("syncRows", () => {
24
24
 
25
25
  // app 1
26
26
  const app1 = config.app
27
- await config.createTable()
28
- await config.createRow()
27
+ await context.doInAppContext(app1.appId, async () => {
28
+ await config.createTable()
29
+ await config.createRow()
30
+ })
29
31
  // app 2
30
32
  const app2 = await config.createApp("second-app")
31
- await config.createTable()
32
- await config.createRow()
33
- await config.createRow()
33
+ await context.doInAppContext(app2.appId, async () => {
34
+ await config.createTable()
35
+ await config.createRow()
36
+ await config.createRow()
37
+ })
34
38
 
35
39
  // migrate
36
40
  await syncRows.run()
@@ -26,11 +26,7 @@ type TemplateType = {
26
26
 
27
27
  function rewriteAttachmentUrl(appId: string, attachment: RowAttachment) {
28
28
  // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv
29
- const urlParts = attachment.url.split("/")
30
- // drop the first empty element
31
- urlParts.shift()
32
- // get the prefix
33
- const prefix = urlParts.shift()
29
+ const urlParts = attachment.key.split("/")
34
30
  // remove the app ID
35
31
  urlParts.shift()
36
32
  // add new app ID
@@ -39,7 +35,7 @@ function rewriteAttachmentUrl(appId: string, attachment: RowAttachment) {
39
35
  return {
40
36
  ...attachment,
41
37
  key,
42
- url: `/${prefix}/${key}`,
38
+ url: "", // calculated on retrieval using key
43
39
  }
44
40
  }
45
41
 
@@ -0,0 +1,136 @@
1
+ import { context } from "@budibase/backend-core"
2
+ import { findHBSBlocks, processObjectSync } from "@budibase/string-templates"
3
+ import {
4
+ Datasource,
5
+ DatasourceFieldType,
6
+ PASSWORD_REPLACEMENT,
7
+ RestAuthConfig,
8
+ RestAuthType,
9
+ RestBasicAuthConfig,
10
+ SourceName,
11
+ } from "@budibase/types"
12
+ import { cloneDeep } from "lodash/fp"
13
+ import { getEnvironmentVariables } from "../../utils"
14
+ import { getDefinitions } from "../../../integrations"
15
+
16
+ const ENV_VAR_PREFIX = "env."
17
+
18
+ async function enrichDatasourceWithValues(datasource: Datasource) {
19
+ const cloned = cloneDeep(datasource)
20
+ const env = await getEnvironmentVariables()
21
+ const processed = processObjectSync(cloned, { env }, { onlyFound: true })
22
+ return {
23
+ datasource: processed as Datasource,
24
+ envVars: env as Record<string, string>,
25
+ }
26
+ }
27
+
28
+ export async function enrich(datasource: Datasource) {
29
+ const { datasource: response } = await enrichDatasourceWithValues(datasource)
30
+ return response
31
+ }
32
+
33
+ export async function get(
34
+ datasourceId: string,
35
+ opts?: { enriched: boolean }
36
+ ): Promise<Datasource> {
37
+ const appDb = context.getAppDB()
38
+ const datasource = await appDb.get(datasourceId)
39
+ if (opts?.enriched) {
40
+ return (await enrichDatasourceWithValues(datasource)).datasource
41
+ } else {
42
+ return datasource
43
+ }
44
+ }
45
+
46
+ export async function getWithEnvVars(datasourceId: string) {
47
+ const appDb = context.getAppDB()
48
+ const datasource = await appDb.get(datasourceId)
49
+ return enrichDatasourceWithValues(datasource)
50
+ }
51
+
52
+ function hasAuthConfigs(datasource: Datasource) {
53
+ return datasource.source === SourceName.REST && datasource.config?.authConfigs
54
+ }
55
+
56
+ function useEnvVars(str: any) {
57
+ if (typeof str !== "string") {
58
+ return false
59
+ }
60
+ const blocks = findHBSBlocks(str)
61
+ return blocks.find(block => block.includes(ENV_VAR_PREFIX)) != null
62
+ }
63
+
64
+ export async function removeSecrets(datasources: Datasource[]) {
65
+ const definitions = await getDefinitions()
66
+ for (let datasource of datasources) {
67
+ const schema = definitions[datasource.source]
68
+ if (datasource.config) {
69
+ // strip secrets from response, so they don't show in the network request
70
+ if (datasource.config.auth) {
71
+ delete datasource.config.auth
72
+ }
73
+ // specific to REST datasources, contains passwords
74
+ if (hasAuthConfigs(datasource)) {
75
+ const configs = datasource.config.authConfigs as RestAuthConfig[]
76
+ for (let config of configs) {
77
+ if (config.type !== RestAuthType.BASIC) {
78
+ continue
79
+ }
80
+ const basic = config.config as RestBasicAuthConfig
81
+ if (!useEnvVars(basic.password)) {
82
+ basic.password = PASSWORD_REPLACEMENT
83
+ }
84
+ }
85
+ }
86
+ // remove general passwords
87
+ for (let key of Object.keys(datasource.config)) {
88
+ if (
89
+ schema.datasource?.[key]?.type === DatasourceFieldType.PASSWORD &&
90
+ !useEnvVars(datasource.config[key])
91
+ ) {
92
+ datasource.config[key] = PASSWORD_REPLACEMENT
93
+ }
94
+ }
95
+ }
96
+ }
97
+ return datasources
98
+ }
99
+
100
+ export async function removeSecretSingle(datasource: Datasource) {
101
+ return (await removeSecrets([datasource]))[0]
102
+ }
103
+
104
+ export function mergeConfigs(update: Datasource, old: Datasource) {
105
+ if (!update.config) {
106
+ return update
107
+ }
108
+ // specific to REST datasources, fix the auth configs again if required
109
+ if (hasAuthConfigs(update)) {
110
+ const configs = update.config.authConfigs as RestAuthConfig[]
111
+ const oldConfigs = old.config?.authConfigs as RestAuthConfig[]
112
+ for (let config of configs) {
113
+ if (config.type !== RestAuthType.BASIC) {
114
+ continue
115
+ }
116
+ const basic = config.config as RestBasicAuthConfig
117
+ const oldBasic = oldConfigs.find(old => old.name === config.name)
118
+ ?.config as RestBasicAuthConfig
119
+ if (basic.password === PASSWORD_REPLACEMENT) {
120
+ basic.password = oldBasic.password
121
+ }
122
+ }
123
+ }
124
+ // update back to actual passwords for everything else
125
+ for (let [key, value] of Object.entries(update.config)) {
126
+ if (value !== PASSWORD_REPLACEMENT) {
127
+ continue
128
+ }
129
+ if (old.config?.[key]) {
130
+ update.config[key] = old.config?.[key]
131
+ } else {
132
+ delete update.config[key]
133
+ }
134
+ }
135
+ return update
136
+ }
@@ -0,0 +1,5 @@
1
+ import * as datasources from "./datasources"
2
+
3
+ export default {
4
+ ...datasources,
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as queries from "./queries"
2
+
3
+ export default {
4
+ ...queries,
5
+ }
@@ -0,0 +1,50 @@
1
+ import { getEnvironmentVariables } from "../../utils"
2
+ import { processStringSync } from "@budibase/string-templates"
3
+
4
+ export async function enrichContext(
5
+ fields: Record<string, any>,
6
+ inputs = {}
7
+ ): Promise<Record<string, any>> {
8
+ const enrichedQuery: Record<string, any> = Array.isArray(fields) ? [] : {}
9
+ if (!fields || !inputs) {
10
+ return enrichedQuery
11
+ }
12
+ const env = await getEnvironmentVariables()
13
+ const parameters = { ...inputs, env }
14
+ // enrich the fields with dynamic parameters
15
+ for (let key of Object.keys(fields)) {
16
+ if (fields[key] == null) {
17
+ continue
18
+ }
19
+ if (typeof fields[key] === "object") {
20
+ // enrich nested fields object
21
+ enrichedQuery[key] = await enrichContext(fields[key], parameters)
22
+ } else if (typeof fields[key] === "string") {
23
+ // enrich string value as normal
24
+ enrichedQuery[key] = processStringSync(fields[key], parameters, {
25
+ noEscaping: true,
26
+ noHelpers: true,
27
+ escapeNewlines: true,
28
+ })
29
+ } else {
30
+ enrichedQuery[key] = fields[key]
31
+ }
32
+ }
33
+ if (
34
+ enrichedQuery.json ||
35
+ enrichedQuery.customData ||
36
+ enrichedQuery.requestBody
37
+ ) {
38
+ try {
39
+ enrichedQuery.json = JSON.parse(
40
+ enrichedQuery.json ||
41
+ enrichedQuery.customData ||
42
+ enrichedQuery.requestBody
43
+ )
44
+ } catch (err) {
45
+ // no json found, ignore
46
+ }
47
+ delete enrichedQuery.customData
48
+ }
49
+ return enrichedQuery
50
+ }
@@ -6,6 +6,7 @@ import {
6
6
  isSQL,
7
7
  } from "../../../integrations/utils"
8
8
  import { Table, Database } from "@budibase/types"
9
+ import datasources from "../datasources"
9
10
 
10
11
  async function getAllInternalTables(db?: Database): Promise<Table[]> {
11
12
  if (!db) {
@@ -23,9 +24,11 @@ async function getAllInternalTables(db?: Database): Promise<Table[]> {
23
24
  }))
24
25
  }
25
26
 
26
- async function getAllExternalTables(datasourceId: any): Promise<Table[]> {
27
+ async function getAllExternalTables(
28
+ datasourceId: any
29
+ ): Promise<Record<string, Table>> {
27
30
  const db = context.getAppDB()
28
- const datasource = await db.get(datasourceId)
31
+ const datasource = await datasources.get(datasourceId, { enriched: true })
29
32
  if (!datasource || !datasource.entities) {
30
33
  throw "Datasource is not configured fully."
31
34
  }
@@ -44,7 +47,7 @@ async function getTable(tableId: any): Promise<Table> {
44
47
  const db = context.getAppDB()
45
48
  if (isExternalTable(tableId)) {
46
49
  let { datasourceId, tableName } = breakExternalTableId(tableId)
47
- const datasource = await db.get(datasourceId)
50
+ const datasource = await datasources.get(datasourceId!)
48
51
  const table = await getExternalTable(datasourceId, tableName)
49
52
  return { ...table, sql: isSQL(datasource) }
50
53
  } else {
package/src/sdk/index.ts CHANGED
@@ -2,6 +2,8 @@ import { default as backups } from "./app/backups"
2
2
  import { default as tables } from "./app/tables"
3
3
  import { default as automations } from "./app/automations"
4
4
  import { default as applications } from "./app/applications"
5
+ import { default as datasources } from "./app/datasources"
6
+ import { default as queries } from "./app/queries"
5
7
  import { default as rows } from "./app/rows"
6
8
  import { default as users } from "./users"
7
9
 
@@ -12,6 +14,8 @@ const sdk = {
12
14
  applications,
13
15
  rows,
14
16
  users,
17
+ datasources,
18
+ queries,
15
19
  }
16
20
 
17
21
  // default export for TS