@budibase/server 2.2.26 → 2.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/aws-sdk.ts +19 -0
  3. package/__mocks__/node-fetch.ts +80 -0
  4. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  5. package/builder/assets/bg.29e85dd5.png +0 -0
  6. package/builder/assets/bulgaria.bd68393d.png +0 -0
  7. package/builder/assets/covanta.72c46c1e.png +0 -0
  8. package/builder/assets/index.3dd03883.css +6 -0
  9. package/builder/assets/index.56a96240.js +1802 -0
  10. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  11. package/builder/index.html +3 -3
  12. package/coverage/clover.xml +6618 -6528
  13. package/coverage/coverage-final.json +282 -276
  14. package/coverage/lcov-report/index.html +489 -444
  15. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
  16. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
  17. package/coverage/lcov-report/src/api/controllers/application.ts.html +362 -266
  18. package/coverage/lcov-report/src/api/controllers/auth.ts.html +12 -12
  19. package/coverage/lcov-report/src/api/controllers/automation.ts.html +61 -61
  20. package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
  21. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +93 -81
  22. package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
  23. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +122 -98
  24. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +21 -18
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.html +21 -21
  26. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +142 -196
  27. package/coverage/lcov-report/src/api/controllers/dev.ts.html +28 -28
  28. package/coverage/lcov-report/src/api/controllers/index.html +115 -115
  29. package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
  30. package/coverage/lcov-report/src/api/controllers/layout.ts.html +9 -9
  31. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
  32. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
  33. package/coverage/lcov-report/src/api/controllers/permission.ts.html +14 -14
  34. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +20 -20
  35. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +62 -62
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  37. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
  38. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +56 -56
  39. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  40. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  41. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  42. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +75 -24
  43. package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
  50. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
  52. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
  53. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
  54. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
  55. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
  57. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
  64. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
  65. package/coverage/lcov-report/src/api/controllers/query/index.html +20 -20
  66. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +131 -107
  67. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +11 -11
  68. package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
  69. package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
  70. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +56 -41
  71. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +87 -57
  72. package/coverage/lcov-report/src/api/controllers/row/index.html +66 -66
  73. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +37 -37
  74. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +181 -106
  75. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
  76. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +44 -35
  77. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +156 -39
  78. package/coverage/lcov-report/src/api/controllers/screen.ts.html +31 -31
  79. package/coverage/lcov-report/src/api/controllers/script.ts.html +19 -19
  80. package/coverage/lcov-report/src/api/controllers/static/index.html +18 -18
  81. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +56 -71
  82. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +60 -60
  83. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +56 -50
  84. package/coverage/lcov-report/src/api/controllers/table/index.html +48 -48
  85. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +157 -70
  86. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +58 -61
  87. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +109 -112
  88. package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
  89. package/coverage/lcov-report/src/api/controllers/user.ts.html +159 -135
  90. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
  91. package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
  92. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +97 -133
  93. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +31 -31
  94. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +37 -37
  95. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  96. package/coverage/lcov-report/src/api/index.html +15 -15
  97. package/coverage/lcov-report/src/api/index.ts.html +40 -40
  98. package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
  99. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
  100. package/coverage/lcov-report/src/api/routes/application.ts.html +46 -13
  101. package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
  102. package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
  103. package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
  104. package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
  105. package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
  106. package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
  107. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -14
  108. package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
  109. package/coverage/lcov-report/src/api/routes/index.html +68 -68
  110. package/coverage/lcov-report/src/api/routes/index.ts.html +49 -40
  111. package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
  112. package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
  113. package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
  114. package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
  115. package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
  116. package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
  117. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +147 -15
  118. package/coverage/lcov-report/src/api/routes/public/index.html +27 -27
  119. package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
  120. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  121. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +28 -16
  122. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
  123. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
  124. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
  125. package/coverage/lcov-report/src/api/routes/public/tests/index.html +7 -7
  126. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
  127. package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
  128. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
  129. package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
  130. package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
  131. package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
  132. package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
  133. package/coverage/lcov-report/src/api/routes/row.ts.html +14 -14
  134. package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
  135. package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
  136. package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
  137. package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
  138. package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +27 -27
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +23 -23
  141. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +33 -33
  142. package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
  143. package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
  144. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
  145. package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
  146. package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
  147. package/coverage/lcov-report/src/app.ts.html +53 -47
  148. package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
  149. package/coverage/lcov-report/src/automations/automationUtils.ts.html +127 -55
  150. package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
  151. package/coverage/lcov-report/src/automations/index.html +54 -54
  152. package/coverage/lcov-report/src/automations/index.ts.html +23 -23
  153. package/coverage/lcov-report/src/automations/logging/index.html +3 -3
  154. package/coverage/lcov-report/src/automations/logging/index.ts.html +15 -15
  155. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  156. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
  157. package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
  158. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
  159. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  160. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  161. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  162. package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
  163. package/coverage/lcov-report/src/automations/steps/index.html +129 -129
  164. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
  165. package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
  166. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
  167. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
  168. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  169. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +19 -19
  170. package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
  171. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +12 -12
  172. package/coverage/lcov-report/src/automations/steps/utils.ts.html +18 -18
  173. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
  175. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +32 -32
  176. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
  177. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
  179. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
  182. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
  183. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
  184. package/coverage/lcov-report/src/automations/triggers.ts.html +53 -38
  185. package/coverage/lcov-report/src/automations/utils.ts.html +80 -80
  186. package/coverage/lcov-report/src/constants/index.html +19 -19
  187. package/coverage/lcov-report/src/constants/index.ts.html +103 -103
  188. package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
  189. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  190. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
  191. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
  192. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
  193. package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
  194. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
  195. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
  196. package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
  197. package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
  198. package/coverage/lcov-report/src/db/index.html +34 -34
  199. package/coverage/lcov-report/src/db/index.ts.html +10 -10
  200. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
  201. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
  202. package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
  203. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
  204. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +25 -25
  205. package/coverage/lcov-report/src/db/newid.ts.html +5 -5
  206. package/coverage/lcov-report/src/db/utils.ts.html +90 -90
  207. package/coverage/lcov-report/src/definitions/automations.ts.html +9 -6
  208. package/coverage/lcov-report/src/definitions/index.html +5 -20
  209. package/coverage/lcov-report/src/environment.ts.html +44 -32
  210. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
  211. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
  212. package/coverage/lcov-report/src/events/index.html +20 -20
  213. package/coverage/lcov-report/src/events/index.ts.html +7 -7
  214. package/coverage/lcov-report/src/events/utils.ts.html +11 -11
  215. package/coverage/lcov-report/src/index.html +47 -47
  216. package/coverage/lcov-report/src/index.ts.html +8 -8
  217. package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
  218. package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
  219. package/coverage/lcov-report/src/integrations/base/index.html +29 -29
  220. package/coverage/lcov-report/src/integrations/base/query.ts.html +15 -9
  221. package/coverage/lcov-report/src/integrations/base/sql.ts.html +38 -38
  222. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +23 -23
  223. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  224. package/coverage/lcov-report/src/integrations/couchdb.ts.html +109 -31
  225. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +17 -17
  226. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +27 -15
  227. package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
  228. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +42 -42
  229. package/coverage/lcov-report/src/integrations/index.html +130 -130
  230. package/coverage/lcov-report/src/integrations/index.ts.html +50 -62
  231. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
  232. package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
  233. package/coverage/lcov-report/src/integrations/mysql.ts.html +28 -28
  234. package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
  235. package/coverage/lcov-report/src/integrations/postgres.ts.html +54 -54
  236. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  237. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +24 -159
  238. package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
  239. package/coverage/lcov-report/src/integrations/rest.ts.html +43 -52
  240. package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
  241. package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
  242. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  243. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  244. package/coverage/lcov-report/src/integrations/utils.ts.html +54 -54
  245. package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
  246. package/coverage/lcov-report/src/middleware/authorized.ts.html +49 -37
  247. package/coverage/lcov-report/src/middleware/builder.ts.html +26 -26
  248. package/coverage/lcov-report/src/middleware/currentapp.ts.html +50 -47
  249. package/coverage/lcov-report/src/middleware/index.html +40 -40
  250. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
  251. package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
  252. package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
  253. package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
  254. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  255. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
  264. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +17 -14
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
  269. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
  271. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
  272. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
  273. package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
  274. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
  275. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
  280. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
  281. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  282. package/coverage/lcov-report/src/migrations/index.html +15 -15
  283. package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
  284. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
  285. package/coverage/lcov-report/src/migrations/tests/index.html +6 -6
  286. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
  287. package/coverage/lcov-report/src/sdk/app/applications/index.html +20 -20
  288. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
  289. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  290. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
  291. package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
  292. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
  293. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  294. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
  295. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
  296. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +45 -57
  297. package/coverage/lcov-report/src/sdk/app/backups/index.html +42 -42
  298. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
  299. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  300. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  302. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  304. package/coverage/lcov-report/src/{utilities/statusCodes.ts.html → sdk/app/queries/index.ts.html} +22 -28
  305. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  306. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
  307. package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
  308. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
  309. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  310. package/coverage/lcov-report/src/sdk/app/tables/index.html +15 -15
  311. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +29 -20
  312. package/coverage/lcov-report/src/sdk/index.html +7 -7
  313. package/coverage/lcov-report/src/sdk/index.ts.html +24 -12
  314. package/coverage/lcov-report/src/sdk/users/index.html +10 -10
  315. package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
  316. package/coverage/lcov-report/src/sdk/users/utils.ts.html +35 -35
  317. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  318. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  319. package/coverage/lcov-report/src/startup.ts.html +48 -63
  320. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +218 -152
  321. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
  322. package/coverage/lcov-report/src/tests/utilities/index.html +33 -33
  323. package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
  324. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +235 -46
  325. package/coverage/lcov-report/src/threads/automation.ts.html +212 -251
  326. package/coverage/lcov-report/src/threads/index.html +46 -46
  327. package/coverage/lcov-report/src/threads/index.ts.html +39 -39
  328. package/coverage/lcov-report/src/threads/query.ts.html +140 -101
  329. package/coverage/lcov-report/src/threads/utils.ts.html +29 -29
  330. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +5 -5
  331. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  332. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  333. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +20 -20
  334. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.html +88 -28
  336. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
  337. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
  338. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
  339. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  340. package/coverage/lcov-report/src/utilities/global.ts.html +60 -60
  341. package/coverage/lcov-report/src/utilities/index.html +89 -119
  342. package/coverage/lcov-report/src/utilities/index.ts.html +40 -172
  343. package/coverage/lcov-report/src/utilities/redis.ts.html +38 -38
  344. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  345. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +34 -34
  347. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +102 -75
  348. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
  349. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +54 -54
  350. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +174 -234
  351. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +33 -33
  352. package/coverage/lcov-report/src/utilities/security.ts.html +13 -13
  353. package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
  354. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +38 -38
  355. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
  356. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  357. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +89 -62
  358. package/coverage/lcov-report/src/watch.ts.html +20 -20
  359. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  360. package/coverage/lcov.info +13499 -12800
  361. package/dist/api/controllers/application.js +120 -109
  362. package/dist/api/controllers/cloud.js +6 -2
  363. package/dist/api/controllers/datasource.js +24 -15
  364. package/dist/api/controllers/deploy/index.js +43 -60
  365. package/dist/api/controllers/plugin/index.js +6 -6
  366. package/dist/api/controllers/public/applications.js +22 -1
  367. package/dist/api/controllers/query/index.js +23 -13
  368. package/dist/api/controllers/row/ExternalRequest.js +12 -4
  369. package/dist/api/controllers/row/external.js +20 -13
  370. package/dist/api/controllers/row/internal.js +52 -27
  371. package/dist/api/controllers/row/staticFormula.js +1 -1
  372. package/dist/api/controllers/row/utils.js +35 -3
  373. package/dist/api/controllers/static/index.js +47 -47
  374. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  375. package/dist/api/controllers/table/external.js +16 -35
  376. package/dist/api/controllers/table/index.js +44 -15
  377. package/dist/api/controllers/table/internal.js +6 -7
  378. package/dist/api/controllers/table/utils.js +9 -9
  379. package/dist/api/controllers/user.js +14 -6
  380. package/dist/api/controllers/view/exporters.js +22 -6
  381. package/dist/api/controllers/view/index.js +23 -58
  382. package/dist/api/controllers/view/viewBuilder.js +15 -2
  383. package/dist/api/controllers/webhook.js +45 -43
  384. package/dist/api/routes/analytics.js +2 -1
  385. package/dist/api/routes/apikeys.js +2 -1
  386. package/dist/api/routes/application.js +5 -1
  387. package/dist/api/routes/auth.js +2 -1
  388. package/dist/api/routes/automation.js +2 -1
  389. package/dist/api/routes/backup.js +2 -1
  390. package/dist/api/routes/cloud.js +2 -1
  391. package/dist/api/routes/component.js +2 -1
  392. package/dist/api/routes/datasource.js +2 -1
  393. package/dist/api/routes/deploy.js +3 -3
  394. package/dist/api/routes/dev.js +2 -1
  395. package/dist/api/routes/index.js +2 -0
  396. package/dist/api/routes/integration.js +2 -1
  397. package/dist/api/routes/layout.js +2 -1
  398. package/dist/api/routes/metadata.js +2 -1
  399. package/dist/api/routes/migrations.js +2 -1
  400. package/dist/api/routes/permission.js +2 -1
  401. package/dist/api/routes/public/applications.js +37 -0
  402. package/dist/api/routes/public/middleware/mapper.js +3 -0
  403. package/dist/api/routes/query.js +2 -1
  404. package/dist/api/routes/role.js +2 -1
  405. package/dist/api/routes/routing.js +2 -1
  406. package/dist/api/routes/row.js +2 -2
  407. package/dist/api/routes/screen.js +2 -1
  408. package/dist/api/routes/script.js +2 -1
  409. package/dist/api/routes/static.js +6 -5
  410. package/dist/api/routes/table.js +8 -38
  411. package/dist/api/routes/templates.js +2 -1
  412. package/dist/api/routes/user.js +2 -1
  413. package/dist/api/routes/utils/validators.js +1 -1
  414. package/dist/api/routes/view.js +2 -1
  415. package/dist/api/routes/webhook.js +2 -1
  416. package/dist/app.js +9 -7
  417. package/dist/automations/automationUtils.js +26 -1
  418. package/dist/automations/logging/index.js +5 -25
  419. package/dist/automations/triggers.js +1 -0
  420. package/dist/db/index.js +5 -2
  421. package/dist/db/linkedRows/LinkController.js +2 -1
  422. package/dist/db/linkedRows/LinkDocument.js +2 -1
  423. package/dist/db/newid.js +4 -2
  424. package/dist/definitions/datasource.js +0 -6
  425. package/dist/environment.js +7 -2
  426. package/dist/events/AutomationEmitter.js +2 -1
  427. package/dist/events/BudibaseEmitter.js +2 -1
  428. package/dist/events/index.js +2 -1
  429. package/dist/index.js +2 -2
  430. package/dist/integrations/base/query.js +7 -2
  431. package/dist/integrations/base/sqlTable.js +14 -14
  432. package/dist/integrations/couchdb.js +34 -8
  433. package/dist/integrations/dynamodb.js +8 -5
  434. package/dist/integrations/elasticsearch.js +7 -3
  435. package/dist/integrations/googlesheets.js +1 -1
  436. package/dist/integrations/index.js +6 -7
  437. package/dist/integrations/mongodb.js +311 -271
  438. package/dist/integrations/mysql.js +2 -2
  439. package/dist/integrations/queries/sql.js +73 -100
  440. package/dist/integrations/rest.js +16 -18
  441. package/dist/middleware/authorized.js +2 -1
  442. package/dist/middleware/builder.js +4 -2
  443. package/dist/middleware/currentapp.js +6 -3
  444. package/dist/middleware/publicApi.js +4 -2
  445. package/dist/middleware/selfhost.js +4 -1
  446. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  447. package/dist/package.json +12 -8
  448. package/dist/sdk/app/backups/imports.js +2 -6
  449. package/dist/sdk/app/datasources/datasources.js +147 -0
  450. package/dist/sdk/app/datasources/index.js +27 -0
  451. package/dist/sdk/app/queries/index.js +27 -0
  452. package/dist/sdk/app/queries/queries.js +60 -0
  453. package/dist/sdk/app/tables/index.js +6 -2
  454. package/dist/sdk/index.js +4 -0
  455. package/dist/sdk/utils/index.js +29 -0
  456. package/dist/startup.js +17 -17
  457. package/dist/threads/automation.js +22 -35
  458. package/dist/threads/index.js +4 -4
  459. package/dist/threads/query.js +27 -13
  460. package/dist/tsconfig.build.tsbuildinfo +1 -1
  461. package/dist/utilities/fileSystem/app.js +97 -0
  462. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  463. package/dist/utilities/fileSystem/filesystem.js +184 -0
  464. package/dist/utilities/fileSystem/index.js +18 -342
  465. package/dist/utilities/fileSystem/plugin.js +66 -0
  466. package/dist/utilities/fileSystem/template.js +47 -0
  467. package/dist/utilities/index.js +1 -44
  468. package/dist/utilities/rowProcessor/index.js +12 -4
  469. package/dist/utilities/schema.js +108 -0
  470. package/dist/utilities/scriptRunner.js +2 -1
  471. package/dist/utilities/statusCodes.js +2 -1
  472. package/dist/utilities/workerRequests.js +2 -0
  473. package/dist/watch.js +2 -25
  474. package/jest.config.ts +5 -2
  475. package/package.json +13 -9
  476. package/scripts/dev/manage.js +3 -2
  477. package/specs/openapi.json +84 -0
  478. package/specs/openapi.yaml +53 -0
  479. package/specs/resources/application.js +19 -0
  480. package/src/api/controllers/application.ts +142 -110
  481. package/src/api/controllers/auth.ts +2 -2
  482. package/src/api/controllers/cloud.ts +10 -6
  483. package/src/api/controllers/datasource.ts +33 -25
  484. package/src/api/controllers/deploy/Deployment.ts +1 -0
  485. package/src/api/controllers/deploy/index.ts +40 -58
  486. package/src/api/controllers/plugin/index.ts +14 -9
  487. package/src/api/controllers/public/applications.ts +17 -0
  488. package/src/api/controllers/query/index.ts +49 -41
  489. package/src/api/controllers/row/ExternalRequest.ts +8 -3
  490. package/src/api/controllers/row/external.ts +24 -14
  491. package/src/api/controllers/row/internal.ts +66 -41
  492. package/src/api/controllers/row/staticFormula.ts +5 -2
  493. package/src/api/controllers/row/utils.ts +42 -3
  494. package/src/api/controllers/static/index.ts +22 -27
  495. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  496. package/src/api/controllers/table/external.ts +18 -16
  497. package/src/api/controllers/table/index.ts +46 -17
  498. package/src/api/controllers/table/internal.ts +6 -7
  499. package/src/api/controllers/table/utils.ts +12 -13
  500. package/src/api/controllers/user.ts +21 -13
  501. package/src/api/controllers/view/exporters.ts +20 -5
  502. package/src/api/controllers/view/index.ts +30 -42
  503. package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
  504. package/src/api/controllers/view/viewBuilder.ts +1 -1
  505. package/src/api/controllers/webhook.ts +48 -46
  506. package/src/api/routes/analytics.ts +1 -1
  507. package/src/api/routes/apikeys.ts +1 -1
  508. package/src/api/routes/application.ts +12 -1
  509. package/src/api/routes/auth.ts +1 -1
  510. package/src/api/routes/automation.ts +1 -1
  511. package/src/api/routes/backup.ts +1 -1
  512. package/src/api/routes/cloud.ts +1 -1
  513. package/src/api/routes/component.ts +1 -1
  514. package/src/api/routes/datasource.ts +1 -1
  515. package/src/api/routes/deploy.ts +1 -2
  516. package/src/api/routes/dev.ts +1 -1
  517. package/src/api/routes/index.ts +6 -3
  518. package/src/api/routes/integration.ts +1 -1
  519. package/src/api/routes/layout.ts +1 -1
  520. package/src/api/routes/metadata.ts +1 -1
  521. package/src/api/routes/migrations.ts +1 -1
  522. package/src/api/routes/permission.ts +1 -1
  523. package/src/api/routes/public/applications.ts +44 -0
  524. package/src/api/routes/public/middleware/mapper.ts +4 -0
  525. package/src/api/routes/query.ts +1 -1
  526. package/src/api/routes/role.ts +1 -1
  527. package/src/api/routes/routing.ts +1 -1
  528. package/src/api/routes/row.ts +1 -1
  529. package/src/api/routes/screen.ts +1 -1
  530. package/src/api/routes/script.ts +1 -1
  531. package/src/api/routes/static.ts +2 -2
  532. package/src/api/routes/table.ts +16 -39
  533. package/src/api/routes/templates.ts +1 -1
  534. package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +0 -0
  535. package/src/api/routes/tests/{application.spec.js → application.spec.ts} +94 -18
  536. package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -6
  537. package/src/api/routes/tests/cloud.spec.ts +65 -0
  538. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  539. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  540. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  541. package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +56 -14
  542. package/src/api/routes/tests/misc.spec.js +4 -10
  543. package/src/api/routes/tests/permissions.spec.js +1 -1
  544. package/src/api/routes/tests/plugin.spec.ts +179 -0
  545. package/src/api/routes/tests/routing.spec.js +1 -2
  546. package/src/api/routes/tests/row.spec.js +4 -2
  547. package/src/api/routes/tests/static.spec.js +2 -17
  548. package/src/api/routes/tests/table.spec.js +16 -32
  549. package/src/api/routes/tests/user.spec.js +105 -0
  550. package/src/api/routes/tests/utilities/TestFunctions.ts +1 -1
  551. package/src/api/routes/tests/utilities/index.ts +2 -2
  552. package/src/api/routes/tests/webhook.spec.js +1 -1
  553. package/src/api/routes/user.ts +1 -1
  554. package/src/api/routes/utils/validators.ts +1 -1
  555. package/src/api/routes/view.ts +1 -1
  556. package/src/api/routes/webhook.ts +1 -1
  557. package/src/app.ts +5 -3
  558. package/src/automations/automationUtils.ts +24 -0
  559. package/src/automations/logging/index.ts +1 -1
  560. package/src/automations/tests/bash.spec.js +34 -0
  561. package/src/automations/tests/discord.spec.js +27 -0
  562. package/src/automations/tests/executeQuery.spec.js +49 -0
  563. package/src/automations/tests/executeScript.spec.js +48 -0
  564. package/src/automations/tests/loop.spec.ts +45 -0
  565. package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
  566. package/src/automations/tests/serverLog.spec.js +22 -0
  567. package/src/automations/tests/utilities/index.ts +2 -2
  568. package/src/automations/tests/zapier.spec.js +27 -0
  569. package/src/automations/triggers.ts +6 -1
  570. package/src/automations/unitTests/automationUtils.spec.ts +65 -0
  571. package/src/db/index.ts +1 -1
  572. package/src/db/linkedRows/LinkController.ts +1 -1
  573. package/src/db/linkedRows/LinkDocument.ts +1 -1
  574. package/src/db/newid.ts +1 -1
  575. package/src/db/tests/linkController.spec.js +1 -1
  576. package/src/definitions/automations.ts +1 -0
  577. package/src/definitions/datasource.ts +0 -41
  578. package/src/definitions/openapi.ts +10 -0
  579. package/src/environment.ts +6 -2
  580. package/src/events/AutomationEmitter.ts +1 -1
  581. package/src/events/BudibaseEmitter.ts +1 -1
  582. package/src/events/index.ts +1 -1
  583. package/src/index.ts +1 -1
  584. package/src/integrations/base/query.ts +3 -1
  585. package/src/integrations/base/sqlTable.ts +1 -1
  586. package/src/integrations/couchdb.ts +40 -14
  587. package/src/integrations/dynamodb.ts +3 -3
  588. package/src/integrations/elasticsearch.ts +8 -4
  589. package/src/integrations/googlesheets.ts +1 -1
  590. package/src/integrations/index.ts +5 -9
  591. package/src/integrations/mongodb.ts +315 -271
  592. package/src/integrations/mysql.ts +1 -1
  593. package/src/integrations/queries/sql.ts +5 -50
  594. package/src/integrations/rest.ts +16 -19
  595. package/src/integrations/tests/couchdb.spec.ts +33 -21
  596. package/src/integrations/tests/rest.spec.ts +19 -15
  597. package/src/middleware/authorized.ts +5 -1
  598. package/src/middleware/builder.ts +1 -1
  599. package/src/middleware/currentapp.ts +4 -3
  600. package/src/middleware/publicApi.ts +1 -1
  601. package/src/middleware/selfhost.ts +1 -1
  602. package/src/middleware/tests/authorized.spec.js +1 -1
  603. package/src/middleware/tests/currentapp.spec.js +1 -1
  604. package/src/middleware/tests/selfhost.spec.js +1 -1
  605. package/src/migrations/functions/backfill/global/configs.ts +5 -4
  606. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  607. package/src/sdk/app/backups/imports.ts +2 -6
  608. package/src/sdk/app/datasources/datasources.ts +136 -0
  609. package/src/sdk/app/datasources/index.ts +5 -0
  610. package/src/sdk/app/queries/index.ts +5 -0
  611. package/src/sdk/app/queries/queries.ts +50 -0
  612. package/src/sdk/app/tables/index.ts +6 -3
  613. package/src/sdk/index.ts +4 -0
  614. package/src/sdk/tests/attachments.spec.ts +1 -4
  615. package/src/sdk/utils/index.ts +16 -0
  616. package/src/startup.ts +3 -8
  617. package/src/tests/jestEnv.ts +13 -0
  618. package/src/tests/jestSetup.ts +4 -15
  619. package/src/tests/utilities/TestConfiguration.ts +38 -16
  620. package/src/tests/utilities/structures.ts +65 -2
  621. package/src/threads/automation.ts +22 -35
  622. package/src/threads/definitions.ts +3 -0
  623. package/src/threads/index.ts +1 -1
  624. package/src/threads/query.ts +28 -15
  625. package/src/utilities/fileSystem/app.ts +86 -0
  626. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  627. package/src/utilities/fileSystem/filesystem.ts +172 -0
  628. package/src/utilities/fileSystem/index.ts +5 -348
  629. package/src/utilities/fileSystem/plugin.ts +64 -0
  630. package/src/utilities/fileSystem/template.ts +36 -0
  631. package/src/utilities/index.ts +1 -45
  632. package/src/utilities/rowProcessor/index.ts +17 -8
  633. package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
  634. package/src/utilities/schema.ts +141 -0
  635. package/src/utilities/scriptRunner.ts +1 -1
  636. package/src/utilities/statusCodes.ts +1 -1
  637. package/src/utilities/workerRequests.ts +10 -1
  638. package/src/watch.ts +1 -1
  639. package/tsconfig.build.json +2 -0
  640. package/tsconfig.json +2 -1
  641. package/builder/assets/index.96b9ffed.css +0 -6
  642. package/builder/assets/index.fae8f9eb.js +0 -1024
  643. package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
  644. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  645. package/dist/api/routes/tests/utilities/index.js +0 -131
  646. package/dist/automations/tests/utilities/index.js +0 -81
  647. package/dist/tests/utilities/TestConfiguration.js +0 -562
  648. package/dist/tests/utilities/controllers.js +0 -40
  649. package/dist/tests/utilities/structures.js +0 -168
  650. package/dist/utilities/csvParser.js +0 -152
  651. package/dist/utilities/plugins.js +0 -26
  652. package/src/api/routes/tests/deployment.spec.ts +0 -25
  653. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  654. package/src/utilities/csvParser.ts +0 -161
  655. package/src/utilities/plugins.ts +0 -22
  656. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  657. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -1,6 +1,7 @@
1
1
  import controller from "../../controllers/public/applications"
2
2
  import Endpoint from "./utils/Endpoint"
3
3
  const { nameValidator, applicationValidator } = require("../utils/validators")
4
+ import { db } from "@budibase/backend-core"
4
5
 
5
6
  const read = [],
6
7
  write = []
@@ -94,6 +95,49 @@ write.push(
94
95
  */
95
96
  write.push(new Endpoint("delete", "/applications/:appId", controller.destroy))
96
97
 
98
+ /**
99
+ * @openapi
100
+ * /applications/{appId}/unpublish:
101
+ * post:
102
+ * operationId: unpublish
103
+ * summary: Unpublish an application
104
+ * tags:
105
+ * - applications
106
+ * parameters:
107
+ * - $ref: '#/components/parameters/appIdUrl'
108
+ * responses:
109
+ * 204:
110
+ * description: The app was published successfully.
111
+ */
112
+ write.push(
113
+ new Endpoint("post", "/applications/:appId/unpublish", controller.unpublish)
114
+ )
115
+
116
+ /**
117
+ * @openapi
118
+ * /applications/{appId}/publish:
119
+ * post:
120
+ * operationId: publish
121
+ * summary: Unpublish an application
122
+ * tags:
123
+ * - applications
124
+ * parameters:
125
+ * - $ref: '#/components/parameters/appIdUrl'
126
+ * responses:
127
+ * 200:
128
+ * description: Returns the deployment object.
129
+ * content:
130
+ * application/json:
131
+ * schema:
132
+ * $ref: '#/components/schemas/deploymentOutput'
133
+ * examples:
134
+ * deployment:
135
+ * $ref: '#/components/examples/deploymentOutput'
136
+ */
137
+ write.push(
138
+ new Endpoint("post", "/applications/:appId/publish", controller.publish)
139
+ )
140
+
97
141
  /**
98
142
  * @openapi
99
143
  * /applications/{appId}:
@@ -54,9 +54,13 @@ function processQueries(ctx: any) {
54
54
  }
55
55
 
56
56
  export default async (ctx: any, next: any) => {
57
+ if (!ctx.body) {
58
+ return await next()
59
+ }
57
60
  let urlParts = ctx.url.split("/")
58
61
  urlParts = urlParts.slice(4, urlParts.length)
59
62
  let body = {}
63
+
60
64
  switch (urlParts[0]) {
61
65
  case Resources.APPLICATION:
62
66
  body = processApplications(ctx)
@@ -58,4 +58,4 @@ router
58
58
  queryController.executeV2 as any
59
59
  )
60
60
 
61
- export = router
61
+ export default router
@@ -21,4 +21,4 @@ router
21
21
  controller.destroy
22
22
  )
23
23
 
24
- export = router
24
+ export default router
@@ -11,4 +11,4 @@ router
11
11
  // gets the full structure, not just the correct screen ID for user role
12
12
  .get("/api/routing", authorized(permissions.BUILDER), controller.fetch)
13
13
 
14
- export = router
14
+ export default router
@@ -3,7 +3,7 @@ import * as rowController from "../controllers/row"
3
3
  import authorized from "../../middleware/authorized"
4
4
  import { paramResource, paramSubResource } from "../../middleware/resourceId"
5
5
  import { permissions } from "@budibase/backend-core"
6
- const { internalSearchValidator } = require("./utils/validators")
6
+ import { internalSearchValidator } from "./utils/validators"
7
7
  const { PermissionType, PermissionLevel } = permissions
8
8
 
9
9
  const router: Router = new Router()
@@ -20,4 +20,4 @@ router
20
20
  controller.destroy
21
21
  )
22
22
 
23
- export = router
23
+ export default router
@@ -7,4 +7,4 @@ const router: Router = new Router()
7
7
 
8
8
  router.post("/api/script", authorized(permissions.BUILDER), controller.save)
9
9
 
10
- export = router
10
+ export default router
@@ -3,7 +3,7 @@ import * as controller from "../controllers/static"
3
3
  import { budibaseTempDir } from "../../utilities/budibaseDir"
4
4
  import authorized from "../../middleware/authorized"
5
5
  import { permissions } from "@budibase/backend-core"
6
- import * as env from "../../environment"
6
+ import env from "../../environment"
7
7
  import { paramResource } from "../../middleware/resourceId"
8
8
  const { BUILDER, PermissionType, PermissionLevel } = permissions
9
9
 
@@ -62,4 +62,4 @@ router
62
62
  controller.getSignedUploadURL
63
63
  )
64
64
 
65
- export = router
65
+ export default router
@@ -67,10 +67,7 @@ router
67
67
  * structure, and the "updated", new column name should also be supplied. The schema should also be updated, this field
68
68
  * lets the server know that a field hasn't just been deleted, that the data has moved to a new name, this will fix
69
69
  * the rows in the table. This functionality is only available for internal tables.
70
- * @apiParam (Body) {object} [dataImport] When creating an internal table it can be built from a CSV, by using the
71
- * CSV validation endpoint. Send the CSV data to the validation endpoint, then put the results of that call
72
- * into this property, along with the CSV and a table/rows will be built from it. This is not supported when updating
73
- * or for external tables.
70
+ * @apiParam (Body) {object[]} [rows] When creating a table using a compatible data source, an array of objects to be imported into the new table can be provided.
74
71
  *
75
72
  * @apiParamExample {json} Example:
76
73
  * {
@@ -99,15 +96,7 @@ router
99
96
  * "old": "columnName",
100
97
  * "updated": "newColumnName",
101
98
  * },
102
- * "dataImport": {
103
- * "csvString": "column\nvalue",
104
- * "primaryDisplay": "column",
105
- * "schema": {
106
- * "column": {
107
- * "type": "string"
108
- * }
109
- * }
110
- * }
99
+ * "rows": []
111
100
  * }
112
101
  *
113
102
  * @apiSuccess {object} table The response body will contain the table structure after being cleaned up and
@@ -121,30 +110,20 @@ router
121
110
  tableValidator(),
122
111
  tableController.save
123
112
  )
124
- /**
125
- * @api {post} /api/tables/csv/validate Validate a CSV for a table
126
- * @apiName Validate a CSV for a table
127
- * @apiGroup tables
128
- * @apiPermission builder
129
- * @apiDescription When creating a new table, or importing a CSV to an existing table the CSV must be validated and
130
- * converted into a Budibase schema; this endpoint does this.
131
- *
132
- * @apiParam (Body) {string} csvString The CSV which is to be validated as a string.
133
- * @apiParam (Body) {object} [schema] When a CSV has been validated it is possible to re-validate after changing the
134
- * type of a field, by default everything will be strings as there is no way to infer types. The returned schema can
135
- * be updated and then returned to the endpoint to re-validate and check if the type will work for the CSV, e.g.
136
- * using a number instead of strings.
137
- * @apiParam (Body) {string} [tableId] If importing data to an existing table this will pull the current table and
138
- * remove any fields from the CSV schema which do not exist on the table/don't match the type of the table. When
139
- * importing a CSV to an existing table only fields that are present on the table can be imported.
140
- *
141
- * @apiSuccess {object} schema The response body will contain a "schema" object that represents the schema found for
142
- * the CSV - this will be in the same format used for table schema.s
143
- */
144
113
  .post(
145
- "/api/tables/csv/validate",
114
+ "/api/convert/csvToJson",
115
+ authorized(BUILDER),
116
+ tableController.csvToJson
117
+ )
118
+ .post(
119
+ "/api/tables/validateNewTableImport",
120
+ authorized(BUILDER),
121
+ tableController.validateNewTableImport
122
+ )
123
+ .post(
124
+ "/api/tables/validateExistingTableImport",
146
125
  authorized(BUILDER),
147
- tableController.validateCSVSchema
126
+ tableController.validateExistingTableImport
148
127
  )
149
128
  /**
150
129
  * @api {post} /api/tables/:tableId/:revId Delete a table
@@ -177,9 +156,7 @@ router
177
156
  *
178
157
  * @apiParam {string} tableId The ID of the table which the data should be imported to.
179
158
  *
180
- * @apiParam (Body) {object} dataImport This is the same as the structure used when creating an internal table with
181
- * a CSV, it will have the "schema" returned from the CSV validation endpoint and the "csvString" which is to be
182
- * turned into rows.
159
+ * @apiParam (Body) {object[]} rows An array of objects representing the rows to be imported, key-value pairs not matching the table schema will be ignored.
183
160
  *
184
161
  * @apiSuccess {string} message A message stating that the data was imported successfully.
185
162
  */
@@ -190,4 +167,4 @@ router
190
167
  tableController.bulkImport
191
168
  )
192
169
 
193
- export = router
170
+ export default router
@@ -13,4 +13,4 @@ router
13
13
  controller.downloadTemplate
14
14
  )
15
15
 
16
- export = router
16
+ export default router
@@ -11,14 +11,11 @@ jest.mock("../../../utilities/redis", () => ({
11
11
  checkDebounce: jest.fn(),
12
12
  shutdown: jest.fn(),
13
13
  }))
14
-
15
- const {
16
- clearAllApps,
17
- checkBuilderEndpoint,
18
- } = require("./utilities/TestFunctions")
19
- const setup = require("./utilities")
20
- const { AppStatus } = require("../../../db/utils")
21
- const { events } = require("@budibase/backend-core")
14
+ import { clearAllApps, checkBuilderEndpoint } from "./utilities/TestFunctions"
15
+ import * as setup from "./utilities"
16
+ import { AppStatus } from "../../../db/utils"
17
+ import { events } from "@budibase/backend-core"
18
+ import env from "../../../environment"
22
19
 
23
20
  describe("/applications", () => {
24
21
  let request = setup.getRequest()
@@ -162,33 +159,30 @@ describe("/applications", () => {
162
159
  })
163
160
  })
164
161
 
165
- describe("delete", () => {
166
- it("should delete app", async () => {
167
- await config.createApp("to-delete")
162
+ describe("publish", () => {
163
+ it("should publish app with dev app ID", async () => {
168
164
  const appId = config.getAppId()
169
165
  await request
170
- .delete(`/api/applications/${appId}`)
166
+ .post(`/api/applications/${appId}/publish`)
171
167
  .set(config.defaultHeaders())
172
168
  .expect("Content-Type", /json/)
173
169
  .expect(200)
174
- expect(events.app.deleted).toBeCalledTimes(1)
170
+ expect(events.app.published).toBeCalledTimes(1)
175
171
  })
176
172
 
177
- it("should unpublish app", async () => {
178
- await config.createApp("to-unpublish")
173
+ it("should publish app with prod app ID", async () => {
179
174
  const appId = config.getProdAppId()
180
175
  await request
181
- .delete(`/api/applications/${appId}?unpublish=true`)
176
+ .post(`/api/applications/${appId}/publish`)
182
177
  .set(config.defaultHeaders())
183
178
  .expect("Content-Type", /json/)
184
179
  .expect(200)
185
- expect(events.app.unpublished).toBeCalledTimes(1)
180
+ expect(events.app.published).toBeCalledTimes(1)
186
181
  })
187
182
  })
188
183
 
189
184
  describe("manage client library version", () => {
190
185
  it("should be able to update the app client library version", async () => {
191
- console.log(config.getAppId())
192
186
  await request
193
187
  .post(`/api/applications/${config.getAppId()}/client/update`)
194
188
  .set(config.defaultHeaders())
@@ -196,6 +190,7 @@ describe("/applications", () => {
196
190
  .expect(200)
197
191
  expect(events.app.versionUpdated).toBeCalledTimes(1)
198
192
  })
193
+
199
194
  it("should be able to revert the app client library version", async () => {
200
195
  // We need to first update the version so that we can then revert
201
196
  await request
@@ -234,4 +229,85 @@ describe("/applications", () => {
234
229
  expect(getRes.body.application.updatedAt).toBeDefined()
235
230
  })
236
231
  })
232
+
233
+ describe("sync", () => {
234
+ it("app should sync correctly", async () => {
235
+ const res = await request
236
+ .post(`/api/applications/${config.getAppId()}/sync`)
237
+ .set(config.defaultHeaders())
238
+ .expect("Content-Type", /json/)
239
+ .expect(200)
240
+ expect(res.body.message).toEqual("App sync completed successfully.")
241
+ })
242
+
243
+ it("app should not sync if production", async () => {
244
+ const res = await request
245
+ .post(`/api/applications/app_123456/sync`)
246
+ .set(config.defaultHeaders())
247
+ .expect("Content-Type", /json/)
248
+ .expect(400)
249
+ expect(res.body.message).toEqual(
250
+ "This action cannot be performed for production apps"
251
+ )
252
+ })
253
+
254
+ it("app should not sync if sync is disabled", async () => {
255
+ env._set("DISABLE_AUTO_PROD_APP_SYNC", true)
256
+ const res = await request
257
+ .post(`/api/applications/${config.getAppId()}/sync`)
258
+ .set(config.defaultHeaders())
259
+ .expect("Content-Type", /json/)
260
+ .expect(200)
261
+ expect(res.body.message).toEqual(
262
+ "App sync disabled. You can reenable with the DISABLE_AUTO_PROD_APP_SYNC environment variable."
263
+ )
264
+ env._set("DISABLE_AUTO_PROD_APP_SYNC", false)
265
+ })
266
+ })
267
+
268
+ describe("unpublish", () => {
269
+ it("should unpublish app with dev app ID", async () => {
270
+ const appId = config.getAppId()
271
+ await request
272
+ .post(`/api/applications/${appId}/unpublish`)
273
+ .set(config.defaultHeaders())
274
+ .expect(204)
275
+ expect(events.app.unpublished).toBeCalledTimes(1)
276
+ })
277
+
278
+ it("should unpublish app with prod app ID", async () => {
279
+ const appId = config.getProdAppId()
280
+ await request
281
+ .post(`/api/applications/${appId}/unpublish`)
282
+ .set(config.defaultHeaders())
283
+ .expect(204)
284
+ expect(events.app.unpublished).toBeCalledTimes(1)
285
+ })
286
+ })
287
+
288
+ describe("delete", () => {
289
+ it("should delete published app and dev apps with dev app ID", async () => {
290
+ await config.createApp("to-delete")
291
+ const appId = config.getAppId()
292
+ await request
293
+ .delete(`/api/applications/${appId}`)
294
+ .set(config.defaultHeaders())
295
+ .expect("Content-Type", /json/)
296
+ .expect(200)
297
+ expect(events.app.deleted).toBeCalledTimes(1)
298
+ expect(events.app.unpublished).toBeCalledTimes(1)
299
+ })
300
+
301
+ it("should delete published app and dev app with prod app ID", async () => {
302
+ await config.createApp("to-delete")
303
+ const appId = config.getProdAppId()
304
+ await request
305
+ .delete(`/api/applications/${appId}`)
306
+ .set(config.defaultHeaders())
307
+ .expect("Content-Type", /json/)
308
+ .expect(200)
309
+ expect(events.app.deleted).toBeCalledTimes(1)
310
+ expect(events.app.unpublished).toBeCalledTimes(1)
311
+ })
312
+ })
237
313
  })
@@ -8,10 +8,10 @@ jest.mock("@budibase/backend-core", () => {
8
8
  }
9
9
  })
10
10
 
11
- const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
12
- const setup = require("./utilities")
13
- const { events } = require("@budibase/backend-core")
14
-
11
+ import * as setup from "./utilities"
12
+ import { events } from "@budibase/backend-core"
13
+ import sdk from "../../../sdk"
14
+ import { checkBuilderEndpoint } from "./utilities/TestFunctions"
15
15
  describe("/backups", () => {
16
16
  let request = setup.getRequest()
17
17
  let config = setup.getConfig()
@@ -30,7 +30,7 @@ describe("/backups", () => {
30
30
  .expect(200)
31
31
  expect(res.text).toBeDefined()
32
32
  expect(res.headers["content-type"]).toEqual("application/gzip")
33
- expect(events.app.exported.mock.calls.length).toBe(1)
33
+ expect(events.app.exported).toBeCalledTimes(1)
34
34
  })
35
35
 
36
36
  it("should apply authorization to endpoint", async () => {
@@ -41,4 +41,15 @@ describe("/backups", () => {
41
41
  })
42
42
  })
43
43
  })
44
- })
44
+
45
+ describe("calculateBackupStats", () => {
46
+ it("should be able to calculate the backup statistics", async () => {
47
+ config.createAutomation()
48
+ config.createScreen()
49
+ let res = await sdk.backups.calculateBackupStats(config.getAppId())
50
+ expect(res.automations).toEqual(1)
51
+ expect(res.datasources).toEqual(1)
52
+ expect(res.screens).toEqual(1)
53
+ })
54
+ })
55
+ })
@@ -0,0 +1,65 @@
1
+ import { db as dbCore } from "@budibase/backend-core"
2
+ import { AppStatus } from "../../../db/utils"
3
+
4
+ import * as setup from "./utilities"
5
+
6
+ describe("/cloud", () => {
7
+ let request = setup.getRequest()
8
+ let config = setup.getConfig()
9
+
10
+ afterAll(setup.afterAll)
11
+
12
+ beforeEach(async () => {
13
+ await config.init()
14
+ })
15
+
16
+ afterEach(async () => {
17
+ // clear all mocks
18
+ jest.clearAllMocks()
19
+ })
20
+
21
+ describe("import", () => {
22
+ it("should be able to import apps", async () => {
23
+ // first we need to delete any existing apps on the system so it looks clean otherwise the
24
+ // import will not run
25
+ await request
26
+ .post(
27
+ `/api/applications/${dbCore.getProdAppID(
28
+ config.getAppId()
29
+ )}/unpublish`
30
+ )
31
+ .set(config.defaultHeaders())
32
+ .expect(204)
33
+ await request
34
+ .delete(`/api/applications/${config.getAppId()}`)
35
+ .set(config.defaultHeaders())
36
+ .expect("Content-Type", /json/)
37
+ .expect(200)
38
+
39
+ // get a count of apps before the import
40
+ const preImportApps = await request
41
+ .get(`/api/applications?status=${AppStatus.ALL}`)
42
+ .set(config.defaultHeaders())
43
+ .expect("Content-Type", /json/)
44
+ .expect(200)
45
+
46
+ // Perform the import
47
+ const res = await request
48
+ .post(`/api/cloud/import`)
49
+ .attach("importFile", "src/api/routes/tests/data/export-test.tar.gz")
50
+ .set(config.defaultHeaders())
51
+ .expect(200)
52
+ expect(res.body.message).toEqual("Apps successfully imported.")
53
+
54
+ // get a count of apps after the import
55
+ const postImportApps = await request
56
+ .get(`/api/applications?status=${AppStatus.ALL}`)
57
+ .set(config.defaultHeaders())
58
+ .expect("Content-Type", /json/)
59
+ .expect(200)
60
+
61
+ // There are two apps in the file that was imported so check for this
62
+ expect(postImportApps.body.length).toEqual(2)
63
+ })
64
+ })
65
+ })
@@ -1,16 +1,17 @@
1
1
  jest.mock("pg")
2
+ import * as setup from "./utilities"
3
+ import { checkBuilderEndpoint } from "./utilities/TestFunctions"
4
+ import { checkCacheForDynamicVariable } from "../../../threads/utils"
5
+ import { context, events } from "@budibase/backend-core"
6
+ import sdk from "../../../sdk"
2
7
 
3
- let setup = require("./utilities")
4
8
  let { basicDatasource } = setup.structures
5
- let { checkBuilderEndpoint } = require("./utilities/TestFunctions")
6
9
  const pg = require("pg")
7
- const { checkCacheForDynamicVariable } = require("../../../threads/utils")
8
- const { events } = require("@budibase/backend-core")
9
10
 
10
11
  describe("/datasources", () => {
11
12
  let request = setup.getRequest()
12
13
  let config = setup.getConfig()
13
- let datasource
14
+ let datasource: any
14
15
 
15
16
  afterAll(setup.afterAll)
16
17
 
@@ -26,7 +27,7 @@ describe("/datasources", () => {
26
27
  .post(`/api/datasources`)
27
28
  .send(basicDatasource())
28
29
  .set(config.defaultHeaders())
29
- .expect('Content-Type', /json/)
30
+ .expect("Content-Type", /json/)
30
31
  .expect(200)
31
32
 
32
33
  expect(res.body.datasource.name).toEqual("Test")
@@ -42,7 +43,7 @@ describe("/datasources", () => {
42
43
  .put(`/api/datasources/${datasource._id}`)
43
44
  .send(datasource)
44
45
  .set(config.defaultHeaders())
45
- .expect('Content-Type', /json/)
46
+ .expect("Content-Type", /json/)
46
47
  .expect(200)
47
48
 
48
49
  expect(res.body.datasource.name).toEqual("Updated Test")
@@ -51,25 +52,34 @@ describe("/datasources", () => {
51
52
  })
52
53
 
53
54
  describe("dynamic variables", () => {
54
- async function preview(datasource, fields) {
55
+ async function preview(
56
+ datasource: any,
57
+ fields: { path: string; queryString: string }
58
+ ) {
55
59
  return config.previewQuery(request, config, datasource, fields)
56
60
  }
57
61
 
58
62
  it("should invalidate changed or removed variables", async () => {
59
63
  const { datasource, query } = await config.dynamicVariableDatasource()
60
64
  // preview once to cache variables
61
- await preview(datasource, { path: "www.test.com", queryString: "test={{ variable3 }}" })
65
+ await preview(datasource, {
66
+ path: "www.test.com",
67
+ queryString: "test={{ variable3 }}",
68
+ })
62
69
  // check variables in cache
63
- let contents = await checkCacheForDynamicVariable(query._id, "variable3")
70
+ let contents = await checkCacheForDynamicVariable(
71
+ query._id,
72
+ "variable3"
73
+ )
64
74
  expect(contents.rows.length).toEqual(1)
65
-
75
+
66
76
  // update the datasource to remove the variables
67
77
  datasource.config.dynamicVariables = []
68
78
  const res = await request
69
79
  .put(`/api/datasources/${datasource._id}`)
70
80
  .send(datasource)
71
81
  .set(config.defaultHeaders())
72
- .expect('Content-Type', /json/)
82
+ .expect("Content-Type", /json/)
73
83
  .expect(200)
74
84
  expect(res.body.errors).toBeUndefined()
75
85
 
@@ -85,7 +95,7 @@ describe("/datasources", () => {
85
95
  const res = await request
86
96
  .get(`/api/datasources`)
87
97
  .set(config.defaultHeaders())
88
- .expect('Content-Type', /json/)
98
+ .expect("Content-Type", /json/)
89
99
  .expect(200)
90
100
 
91
101
  const datasources = res.body
@@ -160,7 +170,7 @@ describe("/datasources", () => {
160
170
  const res = await request
161
171
  .get(`/api/datasources`)
162
172
  .set(config.defaultHeaders())
163
- .expect('Content-Type', /json/)
173
+ .expect("Content-Type", /json/)
164
174
  .expect(200)
165
175
 
166
176
  expect(res.body.length).toEqual(1)
@@ -174,6 +184,38 @@ describe("/datasources", () => {
174
184
  url: `/api/datasources/${datasource._id}/${datasource._rev}`,
175
185
  })
176
186
  })
187
+ })
188
+
189
+ describe("check secret replacement", () => {
190
+ async function makeDatasource() {
191
+ datasource = basicDatasource()
192
+ datasource.datasource.config.password = "testing"
193
+ const res = await request
194
+ .post(`/api/datasources`)
195
+ .send(datasource)
196
+ .set(config.defaultHeaders())
197
+ .expect("Content-Type", /json/)
198
+ .expect(200)
199
+ return res.body.datasource
200
+ }
201
+
202
+ it("should save a datasource with password", async () => {
203
+ const datasource = await makeDatasource()
204
+ expect(datasource.config.password).toBe("--secret-value--")
205
+ })
177
206
 
207
+ it("should not the password on update with the --secret-value--", async () => {
208
+ const datasource = await makeDatasource()
209
+ await request
210
+ .put(`/api/datasources/${datasource._id}`)
211
+ .send(datasource)
212
+ .set(config.defaultHeaders())
213
+ .expect("Content-Type", /json/)
214
+ .expect(200)
215
+ await context.doInAppContext(config.getAppId(), async () => {
216
+ const dbDatasource: any = await sdk.datasources.get(datasource._id)
217
+ expect(dbDatasource.config.password).toBe("testing")
218
+ })
219
+ })
178
220
  })
179
221
  })
@@ -42,7 +42,7 @@ describe("run misc tests", () => {
42
42
  })
43
43
 
44
44
  describe("test table utilities", () => {
45
- it("should be able to import a CSV", async () => {
45
+ it("should be able to import data", async () => {
46
46
  return config.doInContext(null, async () => {
47
47
  const table = await config.createTable({
48
48
  name: "table",
@@ -75,17 +75,11 @@ describe("run misc tests", () => {
75
75
  },
76
76
  },
77
77
  })
78
- const dataImport = {
79
- csvString: "a,b,c,d\n1,2,3,4",
80
- schema: {},
81
- }
82
- for (let col of ["a", "b", "c", "d"]) {
83
- dataImport.schema[col] = { type: "string" }
84
- }
78
+
85
79
  await tableUtils.handleDataImport(
86
80
  { userId: "test" },
87
81
  table,
88
- dataImport
82
+ [{ a: '1', b: '2', c: '3', d: '4'}]
89
83
  )
90
84
  const rows = await config.getRows()
91
85
  expect(rows[0].a).toEqual("1")
@@ -94,4 +88,4 @@ describe("run misc tests", () => {
94
88
  })
95
89
  })
96
90
  })
97
- })
91
+ })