@budibase/server 2.2.26 → 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.96b9ffed.css +0 -6
  642. package/builder/assets/index.fae8f9eb.js +0 -1024
  643. package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
  644. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  645. package/dist/api/routes/tests/utilities/index.js +0 -131
  646. package/dist/automations/tests/utilities/index.js +0 -81
  647. package/dist/tests/utilities/TestConfiguration.js +0 -562
  648. package/dist/tests/utilities/controllers.js +0 -40
  649. package/dist/tests/utilities/structures.js +0 -168
  650. package/dist/utilities/csvParser.js +0 -152
  651. package/dist/utilities/plugins.js +0 -26
  652. package/src/api/routes/tests/deployment.spec.ts +0 -25
  653. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  654. package/src/utilities/csvParser.ts +0 -161
  655. package/src/utilities/plugins.ts +0 -22
  656. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  657. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -32,10 +32,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
32
32
  });
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.destroy = exports.update = exports.read = exports.create = exports.search = void 0;
35
+ exports.publish = exports.unpublish = exports.destroy = exports.update = exports.read = exports.create = exports.search = void 0;
36
36
  const backend_core_1 = require("@budibase/backend-core");
37
37
  const utils_1 = require("./utils");
38
38
  const controller = __importStar(require("../application"));
39
+ const deployController = __importStar(require("../deploy"));
39
40
  function fixAppID(app, params) {
40
41
  if (!params) {
41
42
  return app;
@@ -116,10 +117,30 @@ function destroy(ctx, next) {
116
117
  });
117
118
  }
118
119
  exports.destroy = destroy;
120
+ function unpublish(ctx, next) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ yield backend_core_1.context.doInAppContext(ctx.params.appId, () => __awaiter(this, void 0, void 0, function* () {
123
+ yield controller.unpublish(ctx);
124
+ yield next();
125
+ }));
126
+ });
127
+ }
128
+ exports.unpublish = unpublish;
129
+ function publish(ctx, next) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ yield backend_core_1.context.doInAppContext(ctx.params.appId, () => __awaiter(this, void 0, void 0, function* () {
132
+ yield deployController.publishApp(ctx);
133
+ yield next();
134
+ }));
135
+ });
136
+ }
137
+ exports.publish = publish;
119
138
  exports.default = {
120
139
  create,
121
140
  update,
122
141
  read,
123
142
  destroy,
124
143
  search,
144
+ publish,
145
+ unpublish,
125
146
  };
@@ -8,6 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.destroy = exports.executeV2 = exports.executeV1 = exports.preview = exports.find = exports.save = exports.import = exports.fetch = void 0;
13
16
  const utils_1 = require("../../../db/utils");
@@ -16,11 +19,12 @@ const threads_1 = require("../../../threads");
16
19
  const datasource_1 = require("../datasource");
17
20
  const import_1 = require("./import");
18
21
  const utils_2 = require("../../../threads/utils");
19
- const environment_1 = require("../../../environment");
22
+ const environment_1 = __importDefault(require("../../../environment"));
20
23
  const pro_1 = require("@budibase/pro");
21
24
  const backend_core_1 = require("@budibase/backend-core");
25
+ const sdk_1 = __importDefault(require("../../../sdk"));
22
26
  const Runner = new threads_1.Thread(threads_1.ThreadType.QUERY, {
23
- timeoutMs: environment_1.QUERY_THREAD_TIMEOUT || 10000,
27
+ timeoutMs: environment_1.default.QUERY_THREAD_TIMEOUT || 10000,
24
28
  });
25
29
  // simple function to append "readable" to all read queries
26
30
  function enrichQueries(input) {
@@ -81,7 +85,7 @@ function save(ctx) {
81
85
  return __awaiter(this, void 0, void 0, function* () {
82
86
  const db = backend_core_1.context.getAppDB();
83
87
  const query = ctx.request.body;
84
- const datasource = yield db.get(query.datasourceId);
88
+ const datasource = yield sdk_1.default.datasources.get(query.datasourceId);
85
89
  let eventFn;
86
90
  if (!query._id) {
87
91
  query._id = (0, utils_1.generateQueryID)(query.datasourceId);
@@ -126,15 +130,14 @@ function getAuthConfig(ctx) {
126
130
  }
127
131
  function preview(ctx) {
128
132
  return __awaiter(this, void 0, void 0, function* () {
129
- const db = backend_core_1.context.getAppDB();
130
- const datasource = yield db.get(ctx.request.body.datasourceId);
133
+ const { datasource, envVars } = yield sdk_1.default.datasources.getWithEnvVars(ctx.request.body.datasourceId);
131
134
  const query = ctx.request.body;
132
135
  // preview may not have a queryId as it hasn't been saved, but if it does
133
136
  // this stops dynamic variables from calling the same query
134
137
  const { fields, parameters, queryVerb, transformer, queryId } = query;
135
138
  const authConfigCtx = getAuthConfig(ctx);
136
139
  try {
137
- const runFn = () => Runner.run({
140
+ const inputs = {
138
141
  appId: ctx.appId,
139
142
  datasource,
140
143
  queryVerb,
@@ -142,11 +145,14 @@ function preview(ctx) {
142
145
  parameters,
143
146
  transformer,
144
147
  queryId,
148
+ // have to pass down to the thread runner - can't put into context now
149
+ environmentVariables: envVars,
145
150
  ctx: {
146
151
  user: ctx.user,
147
152
  auth: Object.assign({}, authConfigCtx),
148
153
  },
149
- });
154
+ };
155
+ const runFn = () => Runner.run(inputs);
150
156
  const { rows, keys, info, extra } = yield pro_1.quotas.addQuery(runFn, {
151
157
  datasourceId: datasource._id,
152
158
  });
@@ -196,7 +202,7 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
196
202
  return __awaiter(this, void 0, void 0, function* () {
197
203
  const db = backend_core_1.context.getAppDB();
198
204
  const query = yield db.get(ctx.params.queryId);
199
- const datasource = yield db.get(query.datasourceId);
205
+ const { datasource, envVars } = yield sdk_1.default.datasources.getWithEnvVars(query.datasourceId);
200
206
  let authConfigCtx = {};
201
207
  if (!opts.isAutomation) {
202
208
  authConfigCtx = getAuthConfig(ctx);
@@ -212,7 +218,7 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
212
218
  }
213
219
  // call the relevant CRUD method on the integration class
214
220
  try {
215
- const runFn = () => Runner.run({
221
+ const inputs = {
216
222
  appId: ctx.appId,
217
223
  datasource,
218
224
  queryVerb: query.queryVerb,
@@ -221,11 +227,14 @@ function execute(ctx, opts = { rowsOnly: false, isAutomation: false }) {
221
227
  parameters: enrichedParameters,
222
228
  transformer: query.transformer,
223
229
  queryId: ctx.params.queryId,
230
+ // have to pass down to the thread runner - can't put into context now
231
+ environmentVariables: envVars,
224
232
  ctx: {
225
233
  user: ctx.user,
226
234
  auth: Object.assign({}, authConfigCtx),
227
235
  },
228
- });
236
+ };
237
+ const runFn = () => Runner.run(inputs);
229
238
  const { rows, pagination, extra } = yield pro_1.quotas.addQuery(runFn, {
230
239
  datasourceId: datasource._id,
231
240
  });
@@ -258,10 +267,11 @@ function executeV2(ctx, { isAutomation } = {}) {
258
267
  }
259
268
  exports.executeV2 = executeV2;
260
269
  const removeDynamicVariables = (queryId) => __awaiter(void 0, void 0, void 0, function* () {
270
+ var _a;
261
271
  const db = backend_core_1.context.getAppDB();
262
272
  const query = yield db.get(queryId);
263
- const datasource = yield db.get(query.datasourceId);
264
- const dynamicVariables = datasource.config.dynamicVariables;
273
+ const datasource = yield sdk_1.default.datasources.get(query.datasourceId);
274
+ const dynamicVariables = (_a = datasource.config) === null || _a === void 0 ? void 0 : _a.dynamicVariables;
265
275
  if (dynamicVariables) {
266
276
  // delete dynamic variables from the datasource
267
277
  datasource.config.dynamicVariables = dynamicVariables.filter((dv) => dv.queryId !== queryId);
@@ -277,7 +287,7 @@ function destroy(ctx) {
277
287
  const queryId = ctx.params.queryId;
278
288
  yield removeDynamicVariables(queryId);
279
289
  const query = yield db.get(queryId);
280
- const datasource = yield db.get(query.datasourceId);
290
+ const datasource = yield sdk_1.default.datasources.get(query.datasourceId);
281
291
  yield db.remove(ctx.params.queryId, ctx.params.revId);
282
292
  ctx.message = `Query deleted.`;
283
293
  ctx.status = 200;
@@ -19,6 +19,9 @@ var __rest = (this && this.__rest) || function (s, e) {
19
19
  }
20
20
  return t;
21
21
  };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
22
25
  Object.defineProperty(exports, "__esModule", { value: true });
23
26
  exports.ExternalRequest = void 0;
24
27
  const types_1 = require("@budibase/types");
@@ -27,11 +30,10 @@ const utils_2 = require("./utils");
27
30
  const constants_1 = require("../../../constants");
28
31
  const utils_3 = require("../../../integrations/utils");
29
32
  const string_templates_1 = require("@budibase/string-templates");
30
- // @ts-ignore
31
33
  const fp_1 = require("lodash/fp");
32
34
  const rowProcessor_1 = require("../../../utilities/rowProcessor");
33
- const backend_core_1 = require("@budibase/backend-core");
34
35
  const utils_4 = require("./utils");
36
+ const sdk_1 = __importDefault(require("../../../sdk"));
35
37
  function buildFilters(id, filters, table) {
36
38
  const primary = table.primary;
37
39
  // if passed in array need to copy for shifting etc
@@ -563,6 +565,7 @@ class ExternalRequest {
563
565
  return fields;
564
566
  }
565
567
  run(config) {
568
+ var _a;
566
569
  return __awaiter(this, void 0, void 0, function* () {
567
570
  const { operation, tableId } = this;
568
571
  let { datasourceId, tableName } = (0, utils_3.breakExternalTableId)(tableId);
@@ -570,8 +573,7 @@ class ExternalRequest {
570
573
  throw "Unable to run without a table name";
571
574
  }
572
575
  if (!this.datasource) {
573
- const db = backend_core_1.context.getAppDB();
574
- this.datasource = yield db.get(datasourceId);
576
+ this.datasource = yield sdk_1.default.datasources.get(datasourceId);
575
577
  if (!this.datasource || !this.datasource.entities) {
576
578
  throw "No tables found, fetch tables before query.";
577
579
  }
@@ -584,6 +586,12 @@ class ExternalRequest {
584
586
  }
585
587
  // look for specific components of config which may not be considered acceptable
586
588
  let { id, row, filters, sort, paginate, rows } = cleanupConfig(config, table);
589
+ //if the sort column is a formula, remove it
590
+ for (let sortColumn of Object.keys(sort || {})) {
591
+ if (((_a = table.schema[sortColumn]) === null || _a === void 0 ? void 0 : _a.type) === "formula") {
592
+ sort === null || sort === void 0 ? true : delete sort[sortColumn];
593
+ }
594
+ }
587
595
  filters = buildFilters(id, filters || {}, table);
588
596
  const relationships = this.buildRelationships(table);
589
597
  // clean up row on ingress using schema
@@ -42,15 +42,19 @@ var __rest = (this && this.__rest) || function (s, e) {
42
42
  }
43
43
  return t;
44
44
  };
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
45
48
  Object.defineProperty(exports, "__esModule", { value: true });
46
49
  exports.fetchEnrichedRow = exports.exportRows = exports.validate = exports.search = exports.bulkDestroy = exports.destroy = exports.find = exports.fetch = exports.fetchView = exports.save = exports.patch = exports.handleRequest = void 0;
47
50
  const constants_1 = require("../../../constants");
48
51
  const utils_1 = require("../../../integrations/utils");
49
52
  const ExternalRequest_1 = require("./ExternalRequest");
50
- const backend_core_1 = require("@budibase/backend-core");
51
53
  const exporters = __importStar(require("../view/exporters"));
52
54
  const fileSystem_1 = require("../../../utilities/fileSystem");
53
55
  const types_1 = require("@budibase/types");
56
+ const sdk_1 = __importDefault(require("../../../sdk"));
57
+ const { cleanExportRows } = require("./utils");
54
58
  function handleRequest(operation, tableId, opts) {
55
59
  return __awaiter(this, void 0, void 0, function* () {
56
60
  // make sure the filters are cleaned up, no empty strings for equals, fuzzy or string
@@ -222,20 +226,21 @@ exports.validate = validate;
222
226
  function exportRows(ctx) {
223
227
  return __awaiter(this, void 0, void 0, function* () {
224
228
  const { datasourceId } = (0, utils_1.breakExternalTableId)(ctx.params.tableId);
225
- const db = backend_core_1.context.getAppDB();
226
229
  const format = ctx.query.format;
227
230
  const { columns } = ctx.request.body;
228
- const datasource = yield db.get(datasourceId);
231
+ const datasource = yield sdk_1.default.datasources.get(datasourceId);
229
232
  if (!datasource || !datasource.entities) {
230
233
  ctx.throw(400, "Datasource has not been configured for plus API.");
231
234
  }
232
- ctx.request.body = {
233
- query: {
234
- oneOf: {
235
- _id: ctx.request.body.rows.map((row) => JSON.parse(decodeURI(row))[0]),
235
+ if (ctx.request.body.rows) {
236
+ ctx.request.body = {
237
+ query: {
238
+ oneOf: {
239
+ _id: ctx.request.body.rows.map((row) => JSON.parse(decodeURI(row))[0]),
240
+ },
236
241
  },
237
- },
238
- };
242
+ };
243
+ }
239
244
  let result = yield search(ctx);
240
245
  let rows = [];
241
246
  // Filter data to only specified columns if required
@@ -250,13 +255,16 @@ function exportRows(ctx) {
250
255
  else {
251
256
  rows = result.rows;
252
257
  }
253
- let headers = Object.keys(rows[0]);
258
+ // @ts-ignore
259
+ let schema = datasource.entities[tableName].schema;
260
+ let exportRows = cleanExportRows(rows, schema, format, columns);
261
+ let headers = Object.keys(schema);
254
262
  // @ts-ignore
255
263
  const exporter = exporters[format];
256
264
  const filename = `export.${format}`;
257
265
  // send down the file
258
266
  ctx.attachment(filename);
259
- return (0, fileSystem_1.apiFileReturn)(exporter(headers, rows));
267
+ return (0, fileSystem_1.apiFileReturn)(exporter(headers, exportRows));
260
268
  });
261
269
  }
262
270
  exports.exportRows = exportRows;
@@ -266,8 +274,7 @@ function fetchEnrichedRow(ctx) {
266
274
  const id = ctx.params.rowId;
267
275
  const tableId = ctx.params.tableId;
268
276
  const { datasourceId, tableName } = (0, utils_1.breakExternalTableId)(tableId);
269
- const db = backend_core_1.context.getAppDB();
270
- const datasource = yield db.get(datasourceId);
277
+ const datasource = yield sdk_1.default.datasources.get(datasourceId);
271
278
  if (!tableName) {
272
279
  ctx.throw(400, "Unable to find table.");
273
280
  }
@@ -52,17 +52,18 @@ const utils_1 = require("../../../db/utils");
52
52
  const userController = __importStar(require("../user"));
53
53
  const rowProcessor_1 = require("../../../utilities/rowProcessor");
54
54
  const constants_1 = require("../../../constants");
55
- const utils_2 = require("./utils");
55
+ const utils = __importStar(require("./utils"));
56
56
  const internalSearch_1 = require("./internalSearch");
57
57
  const global_1 = require("../../../utilities/global");
58
58
  const inMemoryViews = __importStar(require("../../../db/inMemoryView"));
59
59
  const environment_1 = __importDefault(require("../../../environment"));
60
- const utils_3 = require("../view/utils");
60
+ const utils_2 = require("../view/utils");
61
61
  const fp_1 = require("lodash/fp");
62
62
  const backend_core_1 = require("@budibase/backend-core");
63
63
  const staticFormula_1 = require("./staticFormula");
64
- const exporters = __importStar(require("../view/exporters"));
64
+ const exporters_1 = require("../view/exporters");
65
65
  const fileSystem_1 = require("../../../utilities/fileSystem");
66
+ const { cleanExportRows } = require("./utils");
66
67
  const CALCULATION_TYPES = {
67
68
  SUM: "sum",
68
69
  COUNT: "count",
@@ -70,9 +71,9 @@ const CALCULATION_TYPES = {
70
71
  };
71
72
  function getView(db, viewName) {
72
73
  return __awaiter(this, void 0, void 0, function* () {
73
- let mainGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromDesignDoc : utils_3.getFromMemoryDoc;
74
- let secondaryGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromMemoryDoc : utils_3.getFromDesignDoc;
75
- let migration = environment_1.default.SELF_HOSTED ? utils_3.migrateToDesignView : utils_3.migrateToInMemoryView;
74
+ let mainGetter = environment_1.default.SELF_HOSTED ? utils_2.getFromDesignDoc : utils_2.getFromMemoryDoc;
75
+ let secondaryGetter = environment_1.default.SELF_HOSTED ? utils_2.getFromMemoryDoc : utils_2.getFromDesignDoc;
76
+ let migration = environment_1.default.SELF_HOSTED ? utils_2.migrateToDesignView : utils_2.migrateToInMemoryView;
76
77
  let viewInfo, migrate = false;
77
78
  try {
78
79
  viewInfo = yield mainGetter(db, viewName);
@@ -121,7 +122,7 @@ function patch(ctx) {
121
122
  let oldRow;
122
123
  try {
123
124
  let dbTable = yield db.get(tableId);
124
- oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield (0, utils_2.findRow)(ctx, tableId, inputs._id));
125
+ oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield utils.findRow(ctx, tableId, inputs._id));
125
126
  }
126
127
  catch (err) {
127
128
  if (isUserTable) {
@@ -145,7 +146,7 @@ function patch(ctx) {
145
146
  }
146
147
  // this returns the table and row incase they have been updated
147
148
  let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, combinedRow);
148
- const validateResult = yield (0, utils_2.validate)({
149
+ const validateResult = yield utils.validate({
149
150
  row,
150
151
  table,
151
152
  });
@@ -185,7 +186,7 @@ function save(ctx) {
185
186
  // this returns the table and row incase they have been updated
186
187
  const dbTable = yield db.get(inputs.tableId);
187
188
  let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, inputs);
188
- const validateResult = yield (0, utils_2.validate)({
189
+ const validateResult = yield utils.validate({
189
190
  row,
190
191
  table,
191
192
  });
@@ -208,7 +209,7 @@ function save(ctx) {
208
209
  exports.save = save;
209
210
  function fetchView(ctx) {
210
211
  return __awaiter(this, void 0, void 0, function* () {
211
- const viewName = ctx.params.viewName;
212
+ const viewName = decodeURIComponent(ctx.params.viewName);
212
213
  // if this is a table view being looked for just transfer to that
213
214
  if (viewName.startsWith(utils_1.DocumentType.TABLE)) {
214
215
  ctx.params.tableId = viewName;
@@ -274,7 +275,7 @@ function find(ctx) {
274
275
  return __awaiter(this, void 0, void 0, function* () {
275
276
  const db = backend_core_1.db.getDB(ctx.appId);
276
277
  const table = yield db.get(ctx.params.tableId);
277
- let row = yield (0, utils_2.findRow)(ctx, ctx.params.tableId, ctx.params.rowId);
278
+ let row = yield utils.findRow(ctx, ctx.params.tableId, ctx.params.rowId);
278
279
  row = yield (0, rowProcessor_1.outputProcessing)(table, row);
279
280
  return row;
280
281
  });
@@ -364,6 +365,13 @@ function search(ctx) {
364
365
  const _a = ctx.request.body, { paginate, query } = _a, params = __rest(_a, ["paginate", "query"]);
365
366
  params.version = ctx.version;
366
367
  params.tableId = tableId;
368
+ let table;
369
+ if (params.sort && !params.sortType) {
370
+ table = yield db.get(tableId);
371
+ const schema = table.schema;
372
+ const sortField = schema[params.sort];
373
+ params.sortType = sortField.type == "number" ? "number" : "string";
374
+ }
367
375
  let response;
368
376
  if (paginate) {
369
377
  response = yield (0, internalSearch_1.paginatedSearch)(query, params);
@@ -377,7 +385,7 @@ function search(ctx) {
377
385
  if (tableId === utils_1.InternalTables.USER_METADATA) {
378
386
  response.rows = yield (0, global_1.getGlobalUsersFromMetadata)(response.rows);
379
387
  }
380
- const table = yield db.get(tableId);
388
+ table = table || (yield db.get(tableId));
381
389
  response.rows = yield (0, rowProcessor_1.outputProcessing)(table, response.rows);
382
390
  }
383
391
  return response;
@@ -386,7 +394,7 @@ function search(ctx) {
386
394
  exports.search = search;
387
395
  function validate(ctx) {
388
396
  return __awaiter(this, void 0, void 0, function* () {
389
- return (0, utils_2.validate)({
397
+ return utils.validate({
390
398
  tableId: ctx.params.tableId,
391
399
  row: ctx.request.body,
392
400
  });
@@ -399,13 +407,21 @@ function exportRows(ctx) {
399
407
  const table = yield db.get(ctx.params.tableId);
400
408
  const rowIds = ctx.request.body.rows;
401
409
  let format = ctx.query.format;
402
- const { columns } = ctx.request.body;
403
- let response = (yield db.allDocs({
404
- include_docs: true,
405
- keys: rowIds,
406
- })).rows.map(row => row.doc);
407
- let result = (yield (0, rowProcessor_1.outputProcessing)(table, response));
410
+ const { columns, query } = ctx.request.body;
411
+ let result;
412
+ if (rowIds) {
413
+ let response = (yield db.allDocs({
414
+ include_docs: true,
415
+ keys: rowIds,
416
+ })).rows.map(row => row.doc);
417
+ result = yield (0, rowProcessor_1.outputProcessing)(table, response);
418
+ }
419
+ else if (query) {
420
+ let searchResponse = yield exports.search(ctx);
421
+ result = searchResponse.rows;
422
+ }
408
423
  let rows = [];
424
+ let schema = table.schema;
409
425
  // Filter data to only specified columns if required
410
426
  if (columns && columns.length) {
411
427
  for (let i = 0; i < result.length; i++) {
@@ -418,13 +434,22 @@ function exportRows(ctx) {
418
434
  else {
419
435
  rows = result;
420
436
  }
421
- let headers = Object.keys(rows[0]);
422
- // @ts-ignore
423
- const exporter = exporters[format];
424
- const filename = `export.${format}`;
425
- // send down the file
426
- ctx.attachment(filename);
427
- return (0, fileSystem_1.apiFileReturn)(exporter(headers, rows));
437
+ let exportRows = cleanExportRows(rows, schema, format, columns);
438
+ if (format === exporters_1.Format.CSV) {
439
+ ctx.attachment("export.csv");
440
+ return (0, fileSystem_1.apiFileReturn)((0, exporters_1.csv)(Object.keys(rows[0]), exportRows));
441
+ }
442
+ else if (format === exporters_1.Format.JSON) {
443
+ ctx.attachment("export.json");
444
+ return (0, fileSystem_1.apiFileReturn)((0, exporters_1.json)(exportRows));
445
+ }
446
+ else if (format === exporters_1.Format.JSON_WITH_SCHEMA) {
447
+ ctx.attachment("export.json");
448
+ return (0, fileSystem_1.apiFileReturn)((0, exporters_1.jsonWithSchema)(schema, exportRows));
449
+ }
450
+ else {
451
+ throw "Format not recognised";
452
+ }
428
453
  });
429
454
  }
430
455
  exports.exportRows = exportRows;
@@ -436,7 +461,7 @@ function fetchEnrichedRow(ctx) {
436
461
  // need table to work out where links go in row
437
462
  let [table, row] = yield Promise.all([
438
463
  db.get(tableId),
439
- (0, utils_2.findRow)(ctx, tableId, rowId),
464
+ utils.findRow(ctx, tableId, rowId),
440
465
  ]);
441
466
  // get the link docs
442
467
  const linkVals = (yield linkRows.getLinkDocuments({
@@ -153,7 +153,7 @@ function finaliseRow(table, row, { oldTable, updateFormula } = {
153
153
  enrichedRow = yield (0, rowProcessor_1.processFormulas)(table, enrichedRow, { dynamic: false });
154
154
  // this updates the related formulas in other rows based on the relations to this row
155
155
  if (updateFormula) {
156
- yield exports.updateRelatedFormula(table, enrichedRow);
156
+ yield updateRelatedFormula(table, enrichedRow);
157
157
  }
158
158
  return { row: enrichedRow, table };
159
159
  });
@@ -31,8 +31,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
31
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
32
32
  });
33
33
  };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
34
37
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.validate = exports.findRow = exports.getDatasourceAndQuery = exports.removeKeyNumbering = void 0;
38
+ exports.cleanExportRows = exports.validate = exports.findRow = exports.getDatasourceAndQuery = exports.removeKeyNumbering = void 0;
36
39
  const utils_1 = require("../../../db/utils");
37
40
  const userController = __importStar(require("../user"));
38
41
  const constants_1 = require("../../../constants");
@@ -42,6 +45,8 @@ var utils_2 = require("../../../integrations/base/utils");
42
45
  Object.defineProperty(exports, "removeKeyNumbering", { enumerable: true, get: function () { return utils_2.removeKeyNumbering; } });
43
46
  const validateJs = require("validate.js");
44
47
  const { cloneDeep } = require("lodash/fp");
48
+ const exporters_1 = require("../view/exporters");
49
+ const sdk_1 = __importDefault(require("../../../sdk"));
45
50
  validateJs.extend(validateJs.validators.datetime, {
46
51
  parse: function (value) {
47
52
  return new Date(value).getTime();
@@ -54,8 +59,7 @@ validateJs.extend(validateJs.validators.datetime, {
54
59
  function getDatasourceAndQuery(json) {
55
60
  return __awaiter(this, void 0, void 0, function* () {
56
61
  const datasourceId = json.endpoint.datasourceId;
57
- const db = backend_core_1.context.getAppDB();
58
- const datasource = yield db.get(datasourceId);
62
+ const datasource = yield sdk_1.default.datasources.get(datasourceId);
59
63
  return (0, query_1.makeExternalQuery)(datasource, json);
60
64
  });
61
65
  }
@@ -151,3 +155,31 @@ function validate({ tableId, row, table, }) {
151
155
  });
152
156
  }
153
157
  exports.validate = validate;
158
+ function cleanExportRows(rows, schema, format, columns) {
159
+ let cleanRows = [...rows];
160
+ const relationships = Object.entries(schema)
161
+ .filter((entry) => entry[1].type === constants_1.FieldTypes.LINK)
162
+ .map(entry => entry[0]);
163
+ relationships.forEach(column => {
164
+ cleanRows.forEach(row => {
165
+ delete row[column];
166
+ });
167
+ delete schema[column];
168
+ });
169
+ // Intended to avoid 'undefined' in export
170
+ if (format === exporters_1.Format.CSV) {
171
+ const schemaKeys = Object.keys(schema);
172
+ for (let key of schemaKeys) {
173
+ if ((columns === null || columns === void 0 ? void 0 : columns.length) && columns.indexOf(key) > 0) {
174
+ continue;
175
+ }
176
+ for (let row of cleanRows) {
177
+ if (row[key] == null) {
178
+ row[key] = "";
179
+ }
180
+ }
181
+ }
182
+ }
183
+ return cleanRows;
184
+ }
185
+ exports.cleanExportRows = cleanExportRows;