@budibase/server 2.2.12-alpha.7 → 2.2.12-alpha.70

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 (484) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/node-fetch.ts +2 -0
  3. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  4. package/builder/assets/bg.29e85dd5.png +0 -0
  5. package/builder/assets/bulgaria.bd68393d.png +0 -0
  6. package/builder/assets/covanta.72c46c1e.png +0 -0
  7. package/builder/assets/index.80bd6b61.css +6 -0
  8. package/builder/assets/index.c1b13e6f.js +1798 -0
  9. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +5113 -4924
  12. package/coverage/coverage-final.json +268 -264
  13. package/coverage/lcov-report/index.html +202 -157
  14. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
  15. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/application.ts.html +185 -164
  17. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  18. package/coverage/lcov-report/src/api/controllers/automation.ts.html +24 -24
  19. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  20. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +15 -15
  21. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  22. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +112 -88
  23. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  24. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +80 -80
  26. package/coverage/lcov-report/src/api/controllers/dev.ts.html +17 -17
  27. package/coverage/lcov-report/src/api/controllers/index.html +36 -36
  28. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  30. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  31. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  32. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  33. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  34. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  35. package/coverage/lcov-report/src/api/controllers/plugin/index.html +19 -19
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +29 -29
  37. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  38. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  39. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  40. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  41. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
  42. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  50. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
  52. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
  53. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
  54. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
  55. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
  64. package/coverage/lcov-report/src/api/controllers/query/index.html +7 -7
  65. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +89 -65
  66. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  67. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  68. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  69. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +36 -18
  70. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +60 -30
  71. package/coverage/lcov-report/src/api/controllers/row/index.html +40 -40
  72. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +34 -34
  73. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +142 -70
  74. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +120 -120
  75. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
  76. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +152 -38
  77. package/coverage/lcov-report/src/api/controllers/screen.ts.html +7 -7
  78. package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
  79. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  80. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +39 -42
  81. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +52 -52
  82. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +43 -37
  83. package/coverage/lcov-report/src/api/controllers/table/index.html +34 -34
  84. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +155 -68
  85. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +47 -47
  86. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +66 -69
  87. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  88. package/coverage/lcov-report/src/api/controllers/user.ts.html +99 -75
  89. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +62 -17
  90. package/coverage/lcov-report/src/api/controllers/view/index.html +29 -29
  91. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +53 -92
  92. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
  93. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +6 -6
  94. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  95. package/coverage/lcov-report/src/api/index.html +1 -1
  96. package/coverage/lcov-report/src/api/index.ts.html +27 -27
  97. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  98. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
  100. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  101. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  102. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  103. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  104. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  106. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  107. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  108. package/coverage/lcov-report/src/api/routes/index.html +5 -5
  109. package/coverage/lcov-report/src/api/routes/index.ts.html +42 -36
  110. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  111. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  112. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  113. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  114. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  115. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  116. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +14 -14
  117. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  119. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
  121. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  122. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  123. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  124. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  127. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  128. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  130. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  131. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  132. package/coverage/lcov-report/src/api/routes/row.ts.html +12 -12
  133. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  134. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  136. package/coverage/lcov-report/src/api/routes/table.ts.html +26 -95
  137. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  138. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +1 -1
  141. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  142. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  143. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +43 -43
  144. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  145. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  146. package/coverage/lcov-report/src/app.ts.html +13 -7
  147. package/coverage/lcov-report/src/automations/actions.ts.html +27 -27
  148. package/coverage/lcov-report/src/automations/automationUtils.ts.html +59 -59
  149. package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
  150. package/coverage/lcov-report/src/automations/index.html +30 -30
  151. package/coverage/lcov-report/src/automations/index.ts.html +10 -10
  152. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  153. package/coverage/lcov-report/src/automations/logging/index.ts.html +7 -7
  154. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  155. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  156. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  157. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  158. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  159. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  160. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  161. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  162. package/coverage/lcov-report/src/automations/steps/index.html +15 -15
  163. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  164. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  165. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
  166. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +38 -38
  167. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  168. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +7 -7
  169. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  170. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  171. package/coverage/lcov-report/src/automations/steps/utils.ts.html +10 -10
  172. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  173. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +13 -13
  175. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  179. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  182. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  183. package/coverage/lcov-report/src/automations/triggers.ts.html +52 -37
  184. package/coverage/lcov-report/src/automations/utils.ts.html +52 -52
  185. package/coverage/lcov-report/src/constants/index.html +1 -1
  186. package/coverage/lcov-report/src/constants/index.ts.html +2 -2
  187. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  188. package/coverage/lcov-report/src/constants/screens.ts.html +3 -3
  189. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +22 -22
  190. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  191. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  192. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  193. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  194. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  195. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  196. package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
  197. package/coverage/lcov-report/src/db/index.html +1 -1
  198. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  199. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +18 -18
  200. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  201. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  202. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +27 -27
  203. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +13 -13
  204. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  205. package/coverage/lcov-report/src/db/utils.ts.html +40 -40
  206. package/coverage/lcov-report/src/definitions/automations.ts.html +6 -3
  207. package/coverage/lcov-report/src/definitions/index.html +5 -20
  208. package/coverage/lcov-report/src/environment.ts.html +10 -10
  209. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +8 -8
  210. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  211. package/coverage/lcov-report/src/events/index.html +1 -1
  212. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  213. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  214. package/coverage/lcov-report/src/index.html +13 -13
  215. package/coverage/lcov-report/src/index.ts.html +5 -5
  216. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  217. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/base/index.html +11 -11
  219. package/coverage/lcov-report/src/integrations/base/query.ts.html +14 -8
  220. package/coverage/lcov-report/src/integrations/base/sql.ts.html +12 -12
  221. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  222. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  223. package/coverage/lcov-report/src/integrations/couchdb.ts.html +110 -32
  224. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +9 -9
  225. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +26 -14
  226. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  227. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  228. package/coverage/lcov-report/src/integrations/index.html +47 -47
  229. package/coverage/lcov-report/src/integrations/index.ts.html +49 -49
  230. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  231. package/coverage/lcov-report/src/integrations/mongodb.ts.html +417 -285
  232. package/coverage/lcov-report/src/integrations/mysql.ts.html +11 -11
  233. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  234. package/coverage/lcov-report/src/integrations/postgres.ts.html +10 -10
  235. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  236. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +15 -150
  237. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  238. package/coverage/lcov-report/src/integrations/rest.ts.html +36 -45
  239. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  240. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  241. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  242. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  243. package/coverage/lcov-report/src/integrations/utils.ts.html +18 -18
  244. package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
  245. package/coverage/lcov-report/src/middleware/authorized.ts.html +27 -27
  246. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  247. package/coverage/lcov-report/src/middleware/currentapp.ts.html +45 -42
  248. package/coverage/lcov-report/src/middleware/index.html +1 -1
  249. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  250. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  251. package/coverage/lcov-report/src/middleware/resourceId.ts.html +21 -21
  252. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  253. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  254. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  264. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  269. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  271. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  272. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  273. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  274. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  275. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  280. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  281. package/coverage/lcov-report/src/migrations/index.html +1 -1
  282. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  283. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  284. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  285. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  288. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
  289. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  290. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  292. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +3 -3
  293. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  294. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  295. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
  296. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  298. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  299. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  300. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  302. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +100 -0
  304. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  305. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  306. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  307. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  308. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  309. package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
  310. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +27 -18
  311. package/coverage/lcov-report/src/sdk/index.html +5 -5
  312. package/coverage/lcov-report/src/sdk/index.ts.html +23 -11
  313. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  314. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  315. package/coverage/lcov-report/src/sdk/users/utils.ts.html +28 -28
  316. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  317. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  318. package/coverage/lcov-report/src/startup.ts.html +34 -34
  319. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +134 -125
  320. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  321. package/coverage/lcov-report/src/tests/utilities/index.html +21 -21
  322. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  323. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +213 -24
  324. package/coverage/lcov-report/src/threads/automation.ts.html +216 -186
  325. package/coverage/lcov-report/src/threads/index.html +30 -30
  326. package/coverage/lcov-report/src/threads/index.ts.html +24 -24
  327. package/coverage/lcov-report/src/threads/query.ts.html +68 -29
  328. package/coverage/lcov-report/src/threads/utils.ts.html +9 -9
  329. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
  330. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  331. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +9 -9
  332. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +27 -21
  334. package/coverage/lcov-report/src/utilities/fileSystem/index.html +21 -21
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  336. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +5 -8
  337. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +3 -3
  339. package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
  340. package/coverage/lcov-report/src/utilities/index.html +39 -39
  341. package/coverage/lcov-report/src/utilities/index.ts.html +12 -12
  342. package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
  343. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  344. package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
  345. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +50 -50
  347. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  348. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +14 -14
  349. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
  350. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  351. package/coverage/lcov-report/src/utilities/security.ts.html +4 -4
  352. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  353. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +4 -4
  354. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  355. package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
  356. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +38 -11
  357. package/coverage/lcov-report/src/watch.ts.html +7 -7
  358. package/coverage/lcov-report/src/websocket.ts.html +3 -3
  359. package/coverage/lcov.info +7892 -7532
  360. package/dist/api/controllers/application.js +73 -74
  361. package/dist/api/controllers/cloud.js +1 -1
  362. package/dist/api/controllers/datasource.js +24 -15
  363. package/dist/api/controllers/query/index.js +18 -11
  364. package/dist/api/controllers/row/ExternalRequest.js +12 -3
  365. package/dist/api/controllers/row/external.js +20 -13
  366. package/dist/api/controllers/row/internal.js +40 -15
  367. package/dist/api/controllers/row/utils.js +35 -3
  368. package/dist/api/controllers/static/index.js +38 -38
  369. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  370. package/dist/api/controllers/table/external.js +16 -35
  371. package/dist/api/controllers/table/index.js +44 -15
  372. package/dist/api/controllers/table/internal.js +4 -4
  373. package/dist/api/controllers/table/utils.js +9 -9
  374. package/dist/api/controllers/user.js +14 -6
  375. package/dist/api/controllers/view/exporters.js +22 -6
  376. package/dist/api/controllers/view/index.js +20 -56
  377. package/dist/api/controllers/webhook.js +45 -43
  378. package/dist/api/routes/index.js +2 -0
  379. package/dist/api/routes/row.js +2 -2
  380. package/dist/api/routes/table.js +6 -37
  381. package/dist/api/routes/utils/validators.js +1 -1
  382. package/dist/app.js +1 -0
  383. package/dist/automations/triggers.js +1 -0
  384. package/dist/definitions/datasource.js +0 -6
  385. package/dist/index.js +2 -2
  386. package/dist/integrations/base/query.js +7 -2
  387. package/dist/integrations/base/sqlTable.js +14 -14
  388. package/dist/integrations/couchdb.js +34 -8
  389. package/dist/integrations/dynamodb.js +8 -5
  390. package/dist/integrations/elasticsearch.js +7 -3
  391. package/dist/integrations/index.js +5 -5
  392. package/dist/integrations/mongodb.js +311 -271
  393. package/dist/integrations/mysql.js +2 -2
  394. package/dist/integrations/queries/sql.js +73 -100
  395. package/dist/integrations/rest.js +16 -18
  396. package/dist/middleware/currentapp.js +4 -2
  397. package/dist/package.json +7 -7
  398. package/dist/sdk/app/datasources/datasources.js +147 -0
  399. package/dist/sdk/app/datasources/index.js +27 -0
  400. package/dist/sdk/app/queries/index.js +27 -0
  401. package/dist/sdk/app/queries/queries.js +60 -0
  402. package/dist/sdk/app/tables/index.js +6 -2
  403. package/dist/sdk/index.js +4 -0
  404. package/dist/sdk/utils/index.js +29 -0
  405. package/dist/threads/automation.js +18 -7
  406. package/dist/threads/query.js +27 -13
  407. package/dist/tsconfig.build.tsbuildinfo +1 -1
  408. package/dist/utilities/fileSystem/filesystem.js +36 -34
  409. package/dist/utilities/fileSystem/plugin.js +17 -14
  410. package/dist/utilities/fileSystem/template.js +7 -4
  411. package/dist/utilities/schema.js +108 -0
  412. package/dist/utilities/workerRequests.js +2 -0
  413. package/package.json +8 -8
  414. package/scripts/dev/manage.js +3 -2
  415. package/src/api/controllers/application.ts +81 -74
  416. package/src/api/controllers/cloud.ts +1 -1
  417. package/src/api/controllers/datasource.ts +33 -25
  418. package/src/api/controllers/query/index.ts +47 -39
  419. package/src/api/controllers/row/ExternalRequest.ts +8 -2
  420. package/src/api/controllers/row/external.ts +24 -14
  421. package/src/api/controllers/row/internal.ts +42 -18
  422. package/src/api/controllers/row/utils.ts +40 -2
  423. package/src/api/controllers/static/index.ts +17 -18
  424. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  425. package/src/api/controllers/table/external.ts +18 -16
  426. package/src/api/controllers/table/index.ts +46 -17
  427. package/src/api/controllers/table/internal.ts +4 -4
  428. package/src/api/controllers/table/utils.ts +12 -13
  429. package/src/api/controllers/user.ts +21 -13
  430. package/src/api/controllers/view/exporters.ts +20 -5
  431. package/src/api/controllers/view/index.ts +22 -35
  432. package/src/api/controllers/webhook.ts +48 -46
  433. package/src/api/routes/index.ts +2 -0
  434. package/src/api/routes/row.ts +1 -1
  435. package/src/api/routes/table.ts +15 -38
  436. package/src/api/routes/tests/datasource.spec.ts +35 -1
  437. package/src/api/routes/tests/misc.spec.js +4 -10
  438. package/src/api/routes/tests/table.spec.js +8 -30
  439. package/src/api/routes/tests/user.spec.js +20 -1
  440. package/src/api/routes/utils/validators.ts +1 -1
  441. package/src/app.ts +3 -1
  442. package/src/automations/tests/loop.spec.ts +45 -0
  443. package/src/automations/triggers.ts +6 -1
  444. package/src/definitions/automations.ts +1 -0
  445. package/src/definitions/datasource.ts +0 -41
  446. package/src/index.ts +1 -1
  447. package/src/integrations/base/query.ts +3 -1
  448. package/src/integrations/base/sqlTable.ts +1 -1
  449. package/src/integrations/couchdb.ts +40 -14
  450. package/src/integrations/dynamodb.ts +3 -3
  451. package/src/integrations/elasticsearch.ts +8 -4
  452. package/src/integrations/index.ts +4 -4
  453. package/src/integrations/mongodb.ts +315 -271
  454. package/src/integrations/mysql.ts +1 -1
  455. package/src/integrations/queries/sql.ts +5 -50
  456. package/src/integrations/rest.ts +16 -19
  457. package/src/integrations/tests/couchdb.spec.ts +33 -21
  458. package/src/integrations/tests/rest.spec.ts +4 -2
  459. package/src/middleware/currentapp.ts +3 -2
  460. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  461. package/src/sdk/app/datasources/datasources.ts +136 -0
  462. package/src/sdk/app/datasources/index.ts +5 -0
  463. package/src/sdk/app/queries/index.ts +5 -0
  464. package/src/sdk/app/queries/queries.ts +50 -0
  465. package/src/sdk/app/tables/index.ts +6 -3
  466. package/src/sdk/index.ts +4 -0
  467. package/src/sdk/utils/index.ts +16 -0
  468. package/src/tests/utilities/TestConfiguration.ts +15 -12
  469. package/src/tests/utilities/structures.ts +65 -2
  470. package/src/threads/automation.ts +18 -8
  471. package/src/threads/definitions.ts +3 -0
  472. package/src/threads/query.ts +28 -15
  473. package/src/utilities/fileSystem/filesystem.ts +6 -4
  474. package/src/utilities/fileSystem/plugin.ts +3 -4
  475. package/src/utilities/fileSystem/template.ts +2 -2
  476. package/src/utilities/schema.ts +141 -0
  477. package/src/utilities/workerRequests.ts +10 -1
  478. package/tsconfig.json +2 -1
  479. package/builder/assets/index.e386f2c1.js +0 -1023
  480. package/builder/assets/index.fa480d5b.css +0 -6
  481. package/dist/utilities/csvParser.js +0 -152
  482. package/src/utilities/csvParser.ts +0 -161
  483. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  484. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -49,13 +26,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
49
26
  exports.exportView = exports.destroy = exports.filterEvents = exports.calculationEvents = exports.save = exports.fetch = void 0;
50
27
  const viewBuilder_1 = __importDefault(require("./viewBuilder"));
51
28
  const fileSystem_1 = require("../../../utilities/fileSystem");
52
- const exporters = __importStar(require("./exporters"));
29
+ const exporters_1 = require("./exporters");
53
30
  const utils_1 = require("./utils");
54
31
  const row_1 = require("../row");
55
- const constants_1 = require("../../../constants");
56
32
  const backend_core_1 = require("@budibase/backend-core");
57
33
  const utils_2 = require("../../../db/utils");
58
34
  const sdk_1 = __importDefault(require("../../../sdk"));
35
+ const utils_3 = require("../row/utils");
59
36
  const { cloneDeep, isEqual } = require("lodash");
60
37
  function fetch(ctx) {
61
38
  return __awaiter(this, void 0, void 0, function* () {
@@ -160,8 +137,8 @@ function exportView(ctx) {
160
137
  const viewName = decodeURIComponent(ctx.query.view);
161
138
  const view = yield (0, utils_1.getView)(viewName);
162
139
  const format = ctx.query.format;
163
- if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
164
- ctx.throw(400, "Format must be specified, either csv or json");
140
+ if (!(0, exporters_1.isFormat)(format)) {
141
+ ctx.throw(400, "Format must be specified, either csv, json or jsonWithSchema");
165
142
  }
166
143
  if (view) {
167
144
  ctx.params.viewName = viewName;
@@ -187,35 +164,22 @@ function exportView(ctx) {
187
164
  if (!schema) {
188
165
  schema = table.schema;
189
166
  }
190
- // remove any relationships
191
- const relationships = Object.entries(schema)
192
- .filter(entry => entry[1].type === constants_1.FieldTypes.LINK)
193
- .map(entry => entry[0]);
194
- // iterate relationship columns and remove from and row and schema
195
- relationships.forEach(column => {
196
- rows.forEach(row => {
197
- delete row[column];
198
- });
199
- delete schema[column];
200
- });
201
- // make sure no "undefined" entries appear in the CSV
202
- if (format === exporters.ExportFormats.CSV) {
203
- const schemaKeys = Object.keys(schema);
204
- for (let key of schemaKeys) {
205
- for (let row of rows) {
206
- if (row[key] == null) {
207
- row[key] = "";
208
- }
209
- }
210
- }
211
- }
212
- // Export part
213
- let headers = Object.keys(schema);
214
- const exporter = format === "csv" ? exporters.csv : exporters.json;
215
- const filename = `${viewName}.${format}`;
216
- // send down the file
217
- ctx.attachment(filename);
218
- ctx.body = (0, fileSystem_1.apiFileReturn)(exporter(headers, rows));
167
+ let exportRows = (0, utils_3.cleanExportRows)(rows, schema, format, []);
168
+ if (format === exporters_1.Format.CSV) {
169
+ ctx.attachment(`${viewName}.csv`);
170
+ ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.csv)(Object.keys(schema), exportRows));
171
+ }
172
+ else if (format === exporters_1.Format.JSON) {
173
+ ctx.attachment(`${viewName}.json`);
174
+ ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.json)(exportRows));
175
+ }
176
+ else if (format === exporters_1.Format.JSON_WITH_SCHEMA) {
177
+ ctx.attachment(`${viewName}.json`);
178
+ ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.jsonWithSchema)(schema, exportRows));
179
+ }
180
+ else {
181
+ throw "Format not recognised";
182
+ }
219
183
  if (viewName.startsWith(utils_2.DocumentType.TABLE)) {
220
184
  yield backend_core_1.events.table.exported(table, format);
221
185
  }
@@ -72,61 +72,63 @@ function destroy(ctx) {
72
72
  exports.destroy = destroy;
73
73
  function buildSchema(ctx) {
74
74
  return __awaiter(this, void 0, void 0, function* () {
75
- yield backend_core_1.context.updateAppId(ctx.params.instance);
76
- const db = backend_core_1.context.getAppDB();
77
- const webhook = (yield db.get(ctx.params.id));
78
- webhook.bodySchema = toJsonSchema(ctx.request.body);
79
- // update the automation outputs
80
- if (webhook.action.type === types_1.WebhookActionType.AUTOMATION) {
81
- let automation = (yield db.get(webhook.action.target));
82
- const autoOutputs = automation.definition.trigger.schema.outputs;
83
- let properties = webhook.bodySchema.properties;
84
- // reset webhook outputs
85
- autoOutputs.properties = {
86
- body: autoOutputs.properties.body,
87
- };
88
- for (let prop of Object.keys(properties)) {
89
- autoOutputs.properties[prop] = {
90
- type: properties[prop].type,
91
- description: AUTOMATION_DESCRIPTION,
75
+ yield backend_core_1.context.doInAppContext(ctx.params.instance, () => __awaiter(this, void 0, void 0, function* () {
76
+ const db = backend_core_1.context.getAppDB();
77
+ const webhook = (yield db.get(ctx.params.id));
78
+ webhook.bodySchema = toJsonSchema(ctx.request.body);
79
+ // update the automation outputs
80
+ if (webhook.action.type === types_1.WebhookActionType.AUTOMATION) {
81
+ let automation = (yield db.get(webhook.action.target));
82
+ const autoOutputs = automation.definition.trigger.schema.outputs;
83
+ let properties = webhook.bodySchema.properties;
84
+ // reset webhook outputs
85
+ autoOutputs.properties = {
86
+ body: autoOutputs.properties.body,
92
87
  };
88
+ for (let prop of Object.keys(properties)) {
89
+ autoOutputs.properties[prop] = {
90
+ type: properties[prop].type,
91
+ description: AUTOMATION_DESCRIPTION,
92
+ };
93
+ }
94
+ yield db.put(automation);
93
95
  }
94
- yield db.put(automation);
95
- }
96
- ctx.body = yield db.put(webhook);
96
+ ctx.body = yield db.put(webhook);
97
+ }));
97
98
  });
98
99
  }
99
100
  exports.buildSchema = buildSchema;
100
101
  function trigger(ctx) {
101
102
  return __awaiter(this, void 0, void 0, function* () {
102
103
  const prodAppId = backend_core_1.db.getProdAppID(ctx.params.instance);
103
- yield backend_core_1.context.updateAppId(prodAppId);
104
- try {
105
- const db = backend_core_1.context.getAppDB();
106
- const webhook = (yield db.get(ctx.params.id));
107
- // validate against the schema
108
- if (webhook.bodySchema) {
109
- validate(ctx.request.body, webhook.bodySchema);
110
- }
111
- const target = yield db.get(webhook.action.target);
112
- if (webhook.action.type === types_1.WebhookActionType.AUTOMATION) {
113
- // trigger with both the pure request and then expand it
114
- // incase the user has produced a schema to bind to
115
- yield triggers.externalTrigger(target, Object.assign(Object.assign({ body: ctx.request.body }, ctx.request.body), { appId: prodAppId }));
116
- }
117
- ctx.status = 200;
118
- ctx.body = {
119
- message: "Webhook trigger fired successfully",
120
- };
121
- }
122
- catch (err) {
123
- if (err.status === 404) {
104
+ yield backend_core_1.context.doInAppContext(prodAppId, () => __awaiter(this, void 0, void 0, function* () {
105
+ try {
106
+ const db = backend_core_1.context.getAppDB();
107
+ const webhook = (yield db.get(ctx.params.id));
108
+ // validate against the schema
109
+ if (webhook.bodySchema) {
110
+ validate(ctx.request.body, webhook.bodySchema);
111
+ }
112
+ const target = yield db.get(webhook.action.target);
113
+ if (webhook.action.type === types_1.WebhookActionType.AUTOMATION) {
114
+ // trigger with both the pure request and then expand it
115
+ // incase the user has produced a schema to bind to
116
+ yield triggers.externalTrigger(target, Object.assign(Object.assign({ body: ctx.request.body }, ctx.request.body), { appId: prodAppId }));
117
+ }
124
118
  ctx.status = 200;
125
119
  ctx.body = {
126
- message: "Application not deployed yet.",
120
+ message: "Webhook trigger fired successfully",
127
121
  };
128
122
  }
129
- }
123
+ catch (err) {
124
+ if (err.status === 404) {
125
+ ctx.status = 200;
126
+ ctx.body = {
127
+ message: "Application not deployed yet.",
128
+ };
129
+ }
130
+ }
131
+ }));
130
132
  });
131
133
  }
132
134
  exports.trigger = trigger;
@@ -38,6 +38,7 @@ var public_1 = require("./public");
38
38
  Object.defineProperty(exports, "publicRoutes", { enumerable: true, get: function () { return __importDefault(public_1).default; } });
39
39
  const appBackupRoutes = pro_1.api.appBackups;
40
40
  const scheduleRoutes = pro_1.api.schedules;
41
+ const environmentVariableRoutes = pro_1.api.environmentVariables;
41
42
  exports.mainRoutes = [
42
43
  appBackupRoutes,
43
44
  backup_1.default,
@@ -67,6 +68,7 @@ exports.mainRoutes = [
67
68
  migrations_1.default,
68
69
  plugin_1.default,
69
70
  scheduleRoutes,
71
+ environmentVariableRoutes,
70
72
  // these need to be handled last as they still use /api/:tableId
71
73
  // this could be breaking as koa may recognise other routes as this
72
74
  table_1.default,
@@ -31,7 +31,7 @@ const rowController = __importStar(require("../controllers/row"));
31
31
  const authorized_1 = __importDefault(require("../../middleware/authorized"));
32
32
  const resourceId_1 = require("../../middleware/resourceId");
33
33
  const backend_core_1 = require("@budibase/backend-core");
34
- const { internalSearchValidator } = require("./utils/validators");
34
+ const validators_1 = require("./utils/validators");
35
35
  const { PermissionType, PermissionLevel } = backend_core_1.permissions;
36
36
  const router = new router_1.default();
37
37
  router
@@ -142,7 +142,7 @@ router
142
142
  * @apiSuccess {string} bookmark The bookmark to be sent with the next request to get the next
143
143
  * page.
144
144
  */
145
- .post("/api/:tableId/search", internalSearchValidator(), (0, resourceId_1.paramResource)("tableId"), (0, authorized_1.default)(PermissionType.TABLE, PermissionLevel.READ), rowController.search)
145
+ .post("/api/:tableId/search", (0, validators_1.internalSearchValidator)(), (0, resourceId_1.paramResource)("tableId"), (0, authorized_1.default)(PermissionType.TABLE, PermissionLevel.READ), rowController.search)
146
146
  // DEPRECATED - this is an old API, but for backwards compat it needs to be
147
147
  // supported still
148
148
  .post("/api/search/:tableId/rows", (0, resourceId_1.paramResource)("tableId"), (0, authorized_1.default)(PermissionType.TABLE, PermissionLevel.READ), rowController.search)
@@ -88,10 +88,7 @@ router
88
88
  * structure, and the "updated", new column name should also be supplied. The schema should also be updated, this field
89
89
  * lets the server know that a field hasn't just been deleted, that the data has moved to a new name, this will fix
90
90
  * the rows in the table. This functionality is only available for internal tables.
91
- * @apiParam (Body) {object} [dataImport] When creating an internal table it can be built from a CSV, by using the
92
- * CSV validation endpoint. Send the CSV data to the validation endpoint, then put the results of that call
93
- * into this property, along with the CSV and a table/rows will be built from it. This is not supported when updating
94
- * or for external tables.
91
+ * @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.
95
92
  *
96
93
  * @apiParamExample {json} Example:
97
94
  * {
@@ -120,15 +117,7 @@ router
120
117
  * "old": "columnName",
121
118
  * "updated": "newColumnName",
122
119
  * },
123
- * "dataImport": {
124
- * "csvString": "column\nvalue",
125
- * "primaryDisplay": "column",
126
- * "schema": {
127
- * "column": {
128
- * "type": "string"
129
- * }
130
- * }
131
- * }
120
+ * "rows": []
132
121
  * }
133
122
  *
134
123
  * @apiSuccess {object} table The response body will contain the table structure after being cleaned up and
@@ -137,27 +126,9 @@ router
137
126
  .post("/api/tables",
138
127
  // allows control over updating a table
139
128
  (0, resourceId_1.bodyResource)("_id"), (0, authorized_1.default)(BUILDER), (0, validators_1.tableValidator)(), tableController.save)
140
- /**
141
- * @api {post} /api/tables/csv/validate Validate a CSV for a table
142
- * @apiName Validate a CSV for a table
143
- * @apiGroup tables
144
- * @apiPermission builder
145
- * @apiDescription When creating a new table, or importing a CSV to an existing table the CSV must be validated and
146
- * converted into a Budibase schema; this endpoint does this.
147
- *
148
- * @apiParam (Body) {string} csvString The CSV which is to be validated as a string.
149
- * @apiParam (Body) {object} [schema] When a CSV has been validated it is possible to re-validate after changing the
150
- * type of a field, by default everything will be strings as there is no way to infer types. The returned schema can
151
- * be updated and then returned to the endpoint to re-validate and check if the type will work for the CSV, e.g.
152
- * using a number instead of strings.
153
- * @apiParam (Body) {string} [tableId] If importing data to an existing table this will pull the current table and
154
- * remove any fields from the CSV schema which do not exist on the table/don't match the type of the table. When
155
- * importing a CSV to an existing table only fields that are present on the table can be imported.
156
- *
157
- * @apiSuccess {object} schema The response body will contain a "schema" object that represents the schema found for
158
- * the CSV - this will be in the same format used for table schema.s
159
- */
160
- .post("/api/tables/csv/validate", (0, authorized_1.default)(BUILDER), tableController.validateCSVSchema)
129
+ .post("/api/convert/csvToJson", (0, authorized_1.default)(BUILDER), tableController.csvToJson)
130
+ .post("/api/tables/validateNewTableImport", (0, authorized_1.default)(BUILDER), tableController.validateNewTableImport)
131
+ .post("/api/tables/validateExistingTableImport", (0, authorized_1.default)(BUILDER), tableController.validateExistingTableImport)
161
132
  /**
162
133
  * @api {post} /api/tables/:tableId/:revId Delete a table
163
134
  * @apiName Delete a table
@@ -184,9 +155,7 @@ router
184
155
  *
185
156
  * @apiParam {string} tableId The ID of the table which the data should be imported to.
186
157
  *
187
- * @apiParam (Body) {object} dataImport This is the same as the structure used when creating an internal table with
188
- * a CSV, it will have the "schema" returned from the CSV validation endpoint and the "csvString" which is to be
189
- * turned into rows.
158
+ * @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.
190
159
  *
191
160
  * @apiSuccess {string} message A message stating that the data was imported successfully.
192
161
  */
@@ -22,7 +22,7 @@ function tableValidator() {
22
22
  schema: joi_1.default.object().required(),
23
23
  name: joi_1.default.string().required(),
24
24
  views: joi_1.default.object(),
25
- dataImport: joi_1.default.object(),
25
+ rows: joi_1.default.array(),
26
26
  }).unknown(true));
27
27
  }
28
28
  exports.tableValidator = tableValidator;
package/dist/app.js CHANGED
@@ -69,6 +69,7 @@ app.use((0, koa_body_1.default)({
69
69
  enableTypes: ["json", "form", "text"],
70
70
  parsedMethods: ["POST", "PUT", "PATCH", "DELETE"],
71
71
  }));
72
+ app.use(backend_core_1.middleware.logging);
72
73
  if (environment_1.default.isProd()) {
73
74
  environment_1.default._set("NODE_ENV", "production");
74
75
  Sentry.init();
@@ -134,6 +134,7 @@ function externalTrigger(automation, params, { getResponses } = {}) {
134
134
  }
135
135
  const data = { automation, event: params };
136
136
  if (getResponses) {
137
+ data.event = Object.assign(Object.assign({}, data.event), { appId: backend_core_1.context.getAppId(), automation });
137
138
  return utils.processEvent({ data });
138
139
  }
139
140
  else {
@@ -5,9 +5,3 @@
5
5
  * be exposed for use by other services. *
6
6
  ********************************************/
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.AuthType = void 0;
9
- var AuthType;
10
- (function (AuthType) {
11
- AuthType["BASIC"] = "basic";
12
- AuthType["BEARER"] = "bearer";
13
- })(AuthType = exports.AuthType || (exports.AuthType = {}));
package/dist/index.js CHANGED
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const global_agent_1 = require("global-agent");
4
4
  const fixPath = require("fix-path");
5
- const { checkDevelopmentEnvironment } = require("./utilities/fileSystem");
5
+ const fileSystem_1 = require("./utilities/fileSystem");
6
6
  function runServer() {
7
7
  // this will shutdown the system if development environment not ready
8
8
  // will print an error explaining what to do
9
- checkDevelopmentEnvironment();
9
+ (0, fileSystem_1.checkDevelopmentEnvironment)();
10
10
  fixPath();
11
11
  // this will setup http and https proxies form env variables
12
12
  process.env.GLOBAL_AGENT_FORCE_GLOBAL_AGENT = "false";
@@ -8,12 +8,17 @@ 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.makeExternalQuery = void 0;
13
- const { getIntegration } = require("../index");
16
+ const index_1 = require("../index");
17
+ const sdk_1 = __importDefault(require("../../sdk"));
14
18
  function makeExternalQuery(datasource, json) {
15
19
  return __awaiter(this, void 0, void 0, function* () {
16
- const Integration = yield getIntegration(datasource.source);
20
+ datasource = yield sdk_1.default.datasources.enrich(datasource);
21
+ const Integration = yield (0, index_1.getIntegration)(datasource.source);
17
22
  // query is the opinionated function
18
23
  if (Integration.prototype.query) {
19
24
  const integration = new Integration(datasource.config);
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const knex_1 = require("knex");
4
4
  const types_1 = require("@budibase/types");
5
5
  const utils_1 = require("../utils");
6
- const { FieldTypes, RelationshipTypes } = require("../../constants");
6
+ const constants_1 = require("../../constants");
7
7
  function generateSchema(schema, table, tables, oldTable = null, renamed) {
8
8
  let primaryKey = table && table.primary ? table.primary[0] : null;
9
9
  const columns = Object.values(table.schema);
@@ -28,13 +28,13 @@ function generateSchema(schema, table, tables, oldTable = null, renamed) {
28
28
  continue;
29
29
  }
30
30
  switch (column.type) {
31
- case FieldTypes.STRING:
32
- case FieldTypes.OPTIONS:
33
- case FieldTypes.LONGFORM:
34
- case FieldTypes.BARCODEQR:
31
+ case constants_1.FieldTypes.STRING:
32
+ case constants_1.FieldTypes.OPTIONS:
33
+ case constants_1.FieldTypes.LONGFORM:
34
+ case constants_1.FieldTypes.BARCODEQR:
35
35
  schema.text(key);
36
36
  break;
37
- case FieldTypes.NUMBER:
37
+ case constants_1.FieldTypes.NUMBER:
38
38
  // if meta is specified then this is a junction table entry
39
39
  if (column.meta && column.meta.toKey && column.meta.toTable) {
40
40
  const { toKey, toTable } = column.meta;
@@ -45,21 +45,21 @@ function generateSchema(schema, table, tables, oldTable = null, renamed) {
45
45
  schema.float(key);
46
46
  }
47
47
  break;
48
- case FieldTypes.BOOLEAN:
48
+ case constants_1.FieldTypes.BOOLEAN:
49
49
  schema.boolean(key);
50
50
  break;
51
- case FieldTypes.DATETIME:
51
+ case constants_1.FieldTypes.DATETIME:
52
52
  schema.datetime(key, {
53
53
  useTz: !column.ignoreTimezones,
54
54
  });
55
55
  break;
56
- case FieldTypes.ARRAY:
56
+ case constants_1.FieldTypes.ARRAY:
57
57
  schema.json(key);
58
58
  break;
59
- case FieldTypes.LINK:
59
+ case constants_1.FieldTypes.LINK:
60
60
  // this side of the relationship doesn't need any SQL work
61
- if (column.relationshipType !== RelationshipTypes.MANY_TO_ONE &&
62
- column.relationshipType !== RelationshipTypes.MANY_TO_MANY) {
61
+ if (column.relationshipType !== constants_1.RelationshipTypes.MANY_TO_ONE &&
62
+ column.relationshipType !== constants_1.RelationshipTypes.MANY_TO_MANY) {
63
63
  if (!column.foreignKey || !column.tableId) {
64
64
  throw "Invalid relationship schema";
65
65
  }
@@ -83,8 +83,8 @@ function generateSchema(schema, table, tables, oldTable = null, renamed) {
83
83
  // need to check if any columns have been deleted
84
84
  if (oldTable) {
85
85
  const deletedColumns = Object.entries(oldTable.schema)
86
- .filter(([key, schema]) => schema.type !== FieldTypes.LINK &&
87
- schema.type !== FieldTypes.FORMULA &&
86
+ .filter(([key, schema]) => schema.type !== constants_1.FieldTypes.LINK &&
87
+ schema.type !== constants_1.FieldTypes.FORMULA &&
88
88
  table.schema[key] == null)
89
89
  .map(([key]) => key);
90
90
  deletedColumns.forEach(key => {
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const types_1 = require("@budibase/types");
13
- const PouchDB = require("pouchdb");
13
+ const backend_core_1 = require("@budibase/backend-core");
14
14
  const SCHEMA = {
15
15
  docs: "https://docs.couchdb.org/en/stable/",
16
16
  friendlyName: "CouchDB",
@@ -37,6 +37,15 @@ const SCHEMA = {
37
37
  update: {
38
38
  type: types_1.QueryType.JSON,
39
39
  },
40
+ get: {
41
+ type: types_1.QueryType.FIELDS,
42
+ fields: {
43
+ id: {
44
+ type: types_1.DatasourceFieldType.STRING,
45
+ required: true,
46
+ },
47
+ },
48
+ },
40
49
  delete: {
41
50
  type: types_1.QueryType.FIELDS,
42
51
  fields: {
@@ -51,14 +60,12 @@ const SCHEMA = {
51
60
  class CouchDBIntegration {
52
61
  constructor(config) {
53
62
  this.config = config;
54
- this.client = new PouchDB(`${config.url}/${config.database}`);
63
+ this.client = backend_core_1.db.DatabaseWithConnection(config.database, config.url);
55
64
  }
56
65
  query(command, errorMsg, query) {
57
66
  return __awaiter(this, void 0, void 0, function* () {
58
67
  try {
59
- const response = yield this.client[command](query.id || query.json);
60
- yield this.client.close();
61
- return response;
68
+ return yield this.client[command](query.id || query.json);
62
69
  }
63
70
  catch (err) {
64
71
  console.error(errorMsg, err);
@@ -66,22 +73,41 @@ class CouchDBIntegration {
66
73
  }
67
74
  });
68
75
  }
76
+ parse(query) {
77
+ return typeof query.json === "string" ? JSON.parse(query.json) : query.json;
78
+ }
69
79
  create(query) {
70
80
  return __awaiter(this, void 0, void 0, function* () {
71
- return this.query("post", "Error writing to couchDB", query);
81
+ const parsed = this.parse(query);
82
+ return this.query("post", "Error writing to couchDB", { json: parsed });
72
83
  });
73
84
  }
74
85
  read(query) {
75
86
  return __awaiter(this, void 0, void 0, function* () {
87
+ const parsed = this.parse(query);
76
88
  const result = yield this.query("allDocs", "Error querying couchDB", {
77
- json: Object.assign({ include_docs: true }, query.json),
89
+ json: Object.assign({ include_docs: true }, parsed),
78
90
  });
79
91
  return result.rows.map((row) => row.doc);
80
92
  });
81
93
  }
82
94
  update(query) {
83
95
  return __awaiter(this, void 0, void 0, function* () {
84
- return this.query("put", "Error updating couchDB document", query);
96
+ const parsed = this.parse(query);
97
+ if (!(parsed === null || parsed === void 0 ? void 0 : parsed._rev) && (parsed === null || parsed === void 0 ? void 0 : parsed._id)) {
98
+ const oldDoc = yield this.get({ id: parsed._id });
99
+ parsed._rev = oldDoc._rev;
100
+ }
101
+ return this.query("put", "Error updating couchDB document", {
102
+ json: parsed,
103
+ });
104
+ });
105
+ }
106
+ get(query) {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ return this.query("get", "Error retrieving couchDB document by ID", {
109
+ id: query.id,
110
+ });
85
111
  });
86
112
  }
87
113
  delete(query) {
@@ -8,10 +8,13 @@ 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
  const types_1 = require("@budibase/types");
13
- const AWS = require("aws-sdk");
14
- const { AWS_REGION } = require("../db/dynamoClient");
16
+ const aws_sdk_1 = __importDefault(require("aws-sdk"));
17
+ const dynamoClient_1 = require("../db/dynamoClient");
15
18
  const SCHEMA = {
16
19
  docs: "https://github.com/dabit3/dynamodb-documentclient-cheat-sheet",
17
20
  description: "Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.",
@@ -129,8 +132,8 @@ class DynamoDBIntegration {
129
132
  // @ts-ignore
130
133
  this.config = {};
131
134
  }
132
- this.config = Object.assign(Object.assign({}, this.config), { currentClockSkew: true, region: config.region || AWS_REGION, endpoint: config.endpoint || undefined });
133
- this.client = new AWS.DynamoDB.DocumentClient(this.config);
135
+ this.config = Object.assign(Object.assign({}, this.config), { currentClockSkew: true, region: config.region || dynamoClient_1.AWS_REGION, endpoint: config.endpoint || undefined });
136
+ this.client = new aws_sdk_1.default.DynamoDB.DocumentClient(this.config);
134
137
  }
135
138
  create(query) {
136
139
  return __awaiter(this, void 0, void 0, function* () {
@@ -163,7 +166,7 @@ class DynamoDBIntegration {
163
166
  const params = {
164
167
  TableName: query.table,
165
168
  };
166
- return new AWS.DynamoDB(this.config).describeTable(params).promise();
169
+ return new aws_sdk_1.default.DynamoDB(this.config).describeTable(params).promise();
167
170
  });
168
171
  }
169
172
  get(query) {
@@ -76,11 +76,11 @@ const SCHEMA = {
76
76
  delete: {
77
77
  type: types_1.QueryType.FIELDS,
78
78
  fields: {
79
- index: {
79
+ id: {
80
80
  type: types_1.DatasourceFieldType.STRING,
81
81
  required: true,
82
82
  },
83
- id: {
83
+ index: {
84
84
  type: types_1.DatasourceFieldType.STRING,
85
85
  required: true,
86
86
  },
@@ -162,8 +162,12 @@ class ElasticSearchIntegration {
162
162
  }
163
163
  delete(query) {
164
164
  return __awaiter(this, void 0, void 0, function* () {
165
+ const { id, index } = query;
165
166
  try {
166
- const result = yield this.client.delete(query);
167
+ const result = yield this.client.delete({
168
+ id,
169
+ index,
170
+ });
167
171
  return result.body;
168
172
  }
169
173
  catch (err) {