@budibase/server 2.2.25 → 2.2.27-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/aws-sdk.ts +19 -0
  3. package/__mocks__/node-fetch.ts +80 -0
  4. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  5. package/builder/assets/bg.29e85dd5.png +0 -0
  6. package/builder/assets/bulgaria.bd68393d.png +0 -0
  7. package/builder/assets/covanta.72c46c1e.png +0 -0
  8. package/builder/assets/index.3dd03883.css +6 -0
  9. package/builder/assets/index.f9b8b175.js +1802 -0
  10. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  11. package/builder/index.html +3 -3
  12. package/coverage/clover.xml +6618 -6528
  13. package/coverage/coverage-final.json +282 -276
  14. package/coverage/lcov-report/index.html +489 -444
  15. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
  16. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
  17. package/coverage/lcov-report/src/api/controllers/application.ts.html +362 -266
  18. package/coverage/lcov-report/src/api/controllers/auth.ts.html +12 -12
  19. package/coverage/lcov-report/src/api/controllers/automation.ts.html +61 -61
  20. package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
  21. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +93 -81
  22. package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
  23. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +122 -98
  24. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +21 -18
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.html +21 -21
  26. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +142 -196
  27. package/coverage/lcov-report/src/api/controllers/dev.ts.html +28 -28
  28. package/coverage/lcov-report/src/api/controllers/index.html +115 -115
  29. package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
  30. package/coverage/lcov-report/src/api/controllers/layout.ts.html +9 -9
  31. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
  32. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
  33. package/coverage/lcov-report/src/api/controllers/permission.ts.html +14 -14
  34. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +20 -20
  35. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +62 -62
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  37. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
  38. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +56 -56
  39. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  40. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  41. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  42. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +75 -24
  43. package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
  50. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
  52. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
  53. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
  54. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
  55. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
  57. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
  64. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
  65. package/coverage/lcov-report/src/api/controllers/query/index.html +20 -20
  66. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +131 -107
  67. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +11 -11
  68. package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
  69. package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
  70. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +56 -41
  71. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +87 -57
  72. package/coverage/lcov-report/src/api/controllers/row/index.html +66 -66
  73. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +37 -37
  74. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +181 -106
  75. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
  76. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +44 -35
  77. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +156 -39
  78. package/coverage/lcov-report/src/api/controllers/screen.ts.html +31 -31
  79. package/coverage/lcov-report/src/api/controllers/script.ts.html +19 -19
  80. package/coverage/lcov-report/src/api/controllers/static/index.html +18 -18
  81. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +56 -71
  82. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +60 -60
  83. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +56 -50
  84. package/coverage/lcov-report/src/api/controllers/table/index.html +48 -48
  85. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +157 -70
  86. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +58 -61
  87. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +109 -112
  88. package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
  89. package/coverage/lcov-report/src/api/controllers/user.ts.html +159 -135
  90. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
  91. package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
  92. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +97 -133
  93. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +31 -31
  94. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +37 -37
  95. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  96. package/coverage/lcov-report/src/api/index.html +15 -15
  97. package/coverage/lcov-report/src/api/index.ts.html +40 -40
  98. package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
  99. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
  100. package/coverage/lcov-report/src/api/routes/application.ts.html +46 -13
  101. package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
  102. package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
  103. package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
  104. package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
  105. package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
  106. package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
  107. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -14
  108. package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
  109. package/coverage/lcov-report/src/api/routes/index.html +68 -68
  110. package/coverage/lcov-report/src/api/routes/index.ts.html +49 -40
  111. package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
  112. package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
  113. package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
  114. package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
  115. package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
  116. package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
  117. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +147 -15
  118. package/coverage/lcov-report/src/api/routes/public/index.html +27 -27
  119. package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
  120. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  121. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +28 -16
  122. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
  123. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
  124. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
  125. package/coverage/lcov-report/src/api/routes/public/tests/index.html +7 -7
  126. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
  127. package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
  128. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
  129. package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
  130. package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
  131. package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
  132. package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
  133. package/coverage/lcov-report/src/api/routes/row.ts.html +14 -14
  134. package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
  135. package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
  136. package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
  137. package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
  138. package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +27 -27
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +23 -23
  141. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +33 -33
  142. package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
  143. package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
  144. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
  145. package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
  146. package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
  147. package/coverage/lcov-report/src/app.ts.html +53 -47
  148. package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
  149. package/coverage/lcov-report/src/automations/automationUtils.ts.html +127 -55
  150. package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
  151. package/coverage/lcov-report/src/automations/index.html +54 -54
  152. package/coverage/lcov-report/src/automations/index.ts.html +23 -23
  153. package/coverage/lcov-report/src/automations/logging/index.html +3 -3
  154. package/coverage/lcov-report/src/automations/logging/index.ts.html +15 -15
  155. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  156. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
  157. package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
  158. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
  159. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  160. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  161. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  162. package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
  163. package/coverage/lcov-report/src/automations/steps/index.html +129 -129
  164. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
  165. package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
  166. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
  167. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
  168. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  169. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +19 -19
  170. package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
  171. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +12 -12
  172. package/coverage/lcov-report/src/automations/steps/utils.ts.html +18 -18
  173. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
  175. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +32 -32
  176. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
  177. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
  179. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
  182. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
  183. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
  184. package/coverage/lcov-report/src/automations/triggers.ts.html +53 -38
  185. package/coverage/lcov-report/src/automations/utils.ts.html +80 -80
  186. package/coverage/lcov-report/src/constants/index.html +19 -19
  187. package/coverage/lcov-report/src/constants/index.ts.html +103 -103
  188. package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
  189. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  190. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
  191. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
  192. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
  193. package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
  194. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
  195. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
  196. package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
  197. package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
  198. package/coverage/lcov-report/src/db/index.html +34 -34
  199. package/coverage/lcov-report/src/db/index.ts.html +10 -10
  200. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
  201. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
  202. package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
  203. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
  204. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +25 -25
  205. package/coverage/lcov-report/src/db/newid.ts.html +5 -5
  206. package/coverage/lcov-report/src/db/utils.ts.html +90 -90
  207. package/coverage/lcov-report/src/definitions/automations.ts.html +9 -6
  208. package/coverage/lcov-report/src/definitions/index.html +5 -20
  209. package/coverage/lcov-report/src/environment.ts.html +44 -32
  210. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
  211. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
  212. package/coverage/lcov-report/src/events/index.html +20 -20
  213. package/coverage/lcov-report/src/events/index.ts.html +7 -7
  214. package/coverage/lcov-report/src/events/utils.ts.html +11 -11
  215. package/coverage/lcov-report/src/index.html +47 -47
  216. package/coverage/lcov-report/src/index.ts.html +8 -8
  217. package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
  218. package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
  219. package/coverage/lcov-report/src/integrations/base/index.html +29 -29
  220. package/coverage/lcov-report/src/integrations/base/query.ts.html +15 -9
  221. package/coverage/lcov-report/src/integrations/base/sql.ts.html +38 -38
  222. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +23 -23
  223. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  224. package/coverage/lcov-report/src/integrations/couchdb.ts.html +109 -31
  225. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +17 -17
  226. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +27 -15
  227. package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
  228. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +42 -42
  229. package/coverage/lcov-report/src/integrations/index.html +130 -130
  230. package/coverage/lcov-report/src/integrations/index.ts.html +50 -62
  231. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
  232. package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
  233. package/coverage/lcov-report/src/integrations/mysql.ts.html +28 -28
  234. package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
  235. package/coverage/lcov-report/src/integrations/postgres.ts.html +54 -54
  236. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  237. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +24 -159
  238. package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
  239. package/coverage/lcov-report/src/integrations/rest.ts.html +43 -52
  240. package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
  241. package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
  242. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  243. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  244. package/coverage/lcov-report/src/integrations/utils.ts.html +54 -54
  245. package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
  246. package/coverage/lcov-report/src/middleware/authorized.ts.html +49 -37
  247. package/coverage/lcov-report/src/middleware/builder.ts.html +26 -26
  248. package/coverage/lcov-report/src/middleware/currentapp.ts.html +50 -47
  249. package/coverage/lcov-report/src/middleware/index.html +40 -40
  250. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
  251. package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
  252. package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
  253. package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
  254. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  255. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
  264. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +17 -14
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
  269. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
  271. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
  272. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
  273. package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
  274. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
  275. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
  280. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
  281. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  282. package/coverage/lcov-report/src/migrations/index.html +15 -15
  283. package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
  284. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
  285. package/coverage/lcov-report/src/migrations/tests/index.html +6 -6
  286. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
  287. package/coverage/lcov-report/src/sdk/app/applications/index.html +20 -20
  288. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
  289. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  290. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
  291. package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
  292. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
  293. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  294. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
  295. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
  296. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +45 -57
  297. package/coverage/lcov-report/src/sdk/app/backups/index.html +42 -42
  298. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
  299. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  300. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  302. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  304. package/coverage/lcov-report/src/{utilities/statusCodes.ts.html → sdk/app/queries/index.ts.html} +22 -28
  305. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  306. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
  307. package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
  308. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
  309. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  310. package/coverage/lcov-report/src/sdk/app/tables/index.html +15 -15
  311. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +29 -20
  312. package/coverage/lcov-report/src/sdk/index.html +7 -7
  313. package/coverage/lcov-report/src/sdk/index.ts.html +24 -12
  314. package/coverage/lcov-report/src/sdk/users/index.html +10 -10
  315. package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
  316. package/coverage/lcov-report/src/sdk/users/utils.ts.html +35 -35
  317. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  318. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  319. package/coverage/lcov-report/src/startup.ts.html +48 -63
  320. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +218 -152
  321. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
  322. package/coverage/lcov-report/src/tests/utilities/index.html +33 -33
  323. package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
  324. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +235 -46
  325. package/coverage/lcov-report/src/threads/automation.ts.html +212 -251
  326. package/coverage/lcov-report/src/threads/index.html +46 -46
  327. package/coverage/lcov-report/src/threads/index.ts.html +39 -39
  328. package/coverage/lcov-report/src/threads/query.ts.html +140 -101
  329. package/coverage/lcov-report/src/threads/utils.ts.html +29 -29
  330. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +5 -5
  331. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  332. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  333. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +20 -20
  334. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.html +88 -28
  336. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
  337. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
  338. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
  339. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  340. package/coverage/lcov-report/src/utilities/global.ts.html +60 -60
  341. package/coverage/lcov-report/src/utilities/index.html +89 -119
  342. package/coverage/lcov-report/src/utilities/index.ts.html +40 -172
  343. package/coverage/lcov-report/src/utilities/redis.ts.html +38 -38
  344. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  345. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +34 -34
  347. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +102 -75
  348. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
  349. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +54 -54
  350. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +174 -234
  351. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +33 -33
  352. package/coverage/lcov-report/src/utilities/security.ts.html +13 -13
  353. package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
  354. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +38 -38
  355. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
  356. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  357. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +89 -62
  358. package/coverage/lcov-report/src/watch.ts.html +20 -20
  359. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  360. package/coverage/lcov.info +13499 -12800
  361. package/dist/api/controllers/application.js +120 -109
  362. package/dist/api/controllers/cloud.js +6 -2
  363. package/dist/api/controllers/datasource.js +24 -15
  364. package/dist/api/controllers/deploy/index.js +43 -60
  365. package/dist/api/controllers/plugin/index.js +6 -6
  366. package/dist/api/controllers/public/applications.js +22 -1
  367. package/dist/api/controllers/query/index.js +23 -13
  368. package/dist/api/controllers/row/ExternalRequest.js +12 -4
  369. package/dist/api/controllers/row/external.js +20 -13
  370. package/dist/api/controllers/row/internal.js +52 -27
  371. package/dist/api/controllers/row/staticFormula.js +1 -1
  372. package/dist/api/controllers/row/utils.js +35 -3
  373. package/dist/api/controllers/static/index.js +47 -47
  374. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  375. package/dist/api/controllers/table/external.js +16 -35
  376. package/dist/api/controllers/table/index.js +44 -15
  377. package/dist/api/controllers/table/internal.js +6 -7
  378. package/dist/api/controllers/table/utils.js +9 -9
  379. package/dist/api/controllers/user.js +14 -6
  380. package/dist/api/controllers/view/exporters.js +22 -6
  381. package/dist/api/controllers/view/index.js +23 -58
  382. package/dist/api/controllers/view/viewBuilder.js +15 -2
  383. package/dist/api/controllers/webhook.js +45 -43
  384. package/dist/api/routes/analytics.js +2 -1
  385. package/dist/api/routes/apikeys.js +2 -1
  386. package/dist/api/routes/application.js +5 -1
  387. package/dist/api/routes/auth.js +2 -1
  388. package/dist/api/routes/automation.js +2 -1
  389. package/dist/api/routes/backup.js +2 -1
  390. package/dist/api/routes/cloud.js +2 -1
  391. package/dist/api/routes/component.js +2 -1
  392. package/dist/api/routes/datasource.js +2 -1
  393. package/dist/api/routes/deploy.js +3 -3
  394. package/dist/api/routes/dev.js +2 -1
  395. package/dist/api/routes/index.js +2 -0
  396. package/dist/api/routes/integration.js +2 -1
  397. package/dist/api/routes/layout.js +2 -1
  398. package/dist/api/routes/metadata.js +2 -1
  399. package/dist/api/routes/migrations.js +2 -1
  400. package/dist/api/routes/permission.js +2 -1
  401. package/dist/api/routes/public/applications.js +37 -0
  402. package/dist/api/routes/public/middleware/mapper.js +3 -0
  403. package/dist/api/routes/query.js +2 -1
  404. package/dist/api/routes/role.js +2 -1
  405. package/dist/api/routes/routing.js +2 -1
  406. package/dist/api/routes/row.js +2 -2
  407. package/dist/api/routes/screen.js +2 -1
  408. package/dist/api/routes/script.js +2 -1
  409. package/dist/api/routes/static.js +6 -5
  410. package/dist/api/routes/table.js +8 -38
  411. package/dist/api/routes/templates.js +2 -1
  412. package/dist/api/routes/user.js +2 -1
  413. package/dist/api/routes/utils/validators.js +1 -1
  414. package/dist/api/routes/view.js +2 -1
  415. package/dist/api/routes/webhook.js +2 -1
  416. package/dist/app.js +9 -7
  417. package/dist/automations/automationUtils.js +26 -1
  418. package/dist/automations/logging/index.js +5 -25
  419. package/dist/automations/triggers.js +1 -0
  420. package/dist/db/index.js +5 -2
  421. package/dist/db/linkedRows/LinkController.js +2 -1
  422. package/dist/db/linkedRows/LinkDocument.js +2 -1
  423. package/dist/db/newid.js +4 -2
  424. package/dist/definitions/datasource.js +0 -6
  425. package/dist/environment.js +7 -2
  426. package/dist/events/AutomationEmitter.js +2 -1
  427. package/dist/events/BudibaseEmitter.js +2 -1
  428. package/dist/events/index.js +2 -1
  429. package/dist/index.js +2 -2
  430. package/dist/integrations/base/query.js +7 -2
  431. package/dist/integrations/base/sqlTable.js +14 -14
  432. package/dist/integrations/couchdb.js +34 -8
  433. package/dist/integrations/dynamodb.js +8 -5
  434. package/dist/integrations/elasticsearch.js +7 -3
  435. package/dist/integrations/googlesheets.js +1 -1
  436. package/dist/integrations/index.js +6 -7
  437. package/dist/integrations/mongodb.js +311 -271
  438. package/dist/integrations/mysql.js +2 -2
  439. package/dist/integrations/queries/sql.js +73 -100
  440. package/dist/integrations/rest.js +16 -18
  441. package/dist/middleware/authorized.js +2 -1
  442. package/dist/middleware/builder.js +4 -2
  443. package/dist/middleware/currentapp.js +6 -3
  444. package/dist/middleware/publicApi.js +4 -2
  445. package/dist/middleware/selfhost.js +4 -1
  446. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  447. package/dist/package.json +12 -8
  448. package/dist/sdk/app/backups/imports.js +2 -6
  449. package/dist/sdk/app/datasources/datasources.js +147 -0
  450. package/dist/sdk/app/datasources/index.js +27 -0
  451. package/dist/sdk/app/queries/index.js +27 -0
  452. package/dist/sdk/app/queries/queries.js +60 -0
  453. package/dist/sdk/app/tables/index.js +6 -2
  454. package/dist/sdk/index.js +4 -0
  455. package/dist/sdk/utils/index.js +29 -0
  456. package/dist/startup.js +17 -17
  457. package/dist/threads/automation.js +22 -35
  458. package/dist/threads/index.js +4 -4
  459. package/dist/threads/query.js +27 -13
  460. package/dist/tsconfig.build.tsbuildinfo +1 -1
  461. package/dist/utilities/fileSystem/app.js +97 -0
  462. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  463. package/dist/utilities/fileSystem/filesystem.js +184 -0
  464. package/dist/utilities/fileSystem/index.js +18 -342
  465. package/dist/utilities/fileSystem/plugin.js +66 -0
  466. package/dist/utilities/fileSystem/template.js +47 -0
  467. package/dist/utilities/index.js +1 -44
  468. package/dist/utilities/rowProcessor/index.js +12 -4
  469. package/dist/utilities/schema.js +108 -0
  470. package/dist/utilities/scriptRunner.js +2 -1
  471. package/dist/utilities/statusCodes.js +2 -1
  472. package/dist/utilities/workerRequests.js +2 -0
  473. package/dist/watch.js +2 -25
  474. package/jest.config.ts +5 -2
  475. package/package.json +13 -9
  476. package/scripts/dev/manage.js +3 -2
  477. package/specs/openapi.json +84 -0
  478. package/specs/openapi.yaml +53 -0
  479. package/specs/resources/application.js +19 -0
  480. package/src/api/controllers/application.ts +142 -110
  481. package/src/api/controllers/auth.ts +2 -2
  482. package/src/api/controllers/cloud.ts +10 -6
  483. package/src/api/controllers/datasource.ts +33 -25
  484. package/src/api/controllers/deploy/Deployment.ts +1 -0
  485. package/src/api/controllers/deploy/index.ts +40 -58
  486. package/src/api/controllers/plugin/index.ts +14 -9
  487. package/src/api/controllers/public/applications.ts +17 -0
  488. package/src/api/controllers/query/index.ts +49 -41
  489. package/src/api/controllers/row/ExternalRequest.ts +8 -3
  490. package/src/api/controllers/row/external.ts +24 -14
  491. package/src/api/controllers/row/internal.ts +66 -41
  492. package/src/api/controllers/row/staticFormula.ts +5 -2
  493. package/src/api/controllers/row/utils.ts +42 -3
  494. package/src/api/controllers/static/index.ts +22 -27
  495. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  496. package/src/api/controllers/table/external.ts +18 -16
  497. package/src/api/controllers/table/index.ts +46 -17
  498. package/src/api/controllers/table/internal.ts +6 -7
  499. package/src/api/controllers/table/utils.ts +12 -13
  500. package/src/api/controllers/user.ts +21 -13
  501. package/src/api/controllers/view/exporters.ts +20 -5
  502. package/src/api/controllers/view/index.ts +30 -42
  503. package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
  504. package/src/api/controllers/view/viewBuilder.ts +1 -1
  505. package/src/api/controllers/webhook.ts +48 -46
  506. package/src/api/routes/analytics.ts +1 -1
  507. package/src/api/routes/apikeys.ts +1 -1
  508. package/src/api/routes/application.ts +12 -1
  509. package/src/api/routes/auth.ts +1 -1
  510. package/src/api/routes/automation.ts +1 -1
  511. package/src/api/routes/backup.ts +1 -1
  512. package/src/api/routes/cloud.ts +1 -1
  513. package/src/api/routes/component.ts +1 -1
  514. package/src/api/routes/datasource.ts +1 -1
  515. package/src/api/routes/deploy.ts +1 -2
  516. package/src/api/routes/dev.ts +1 -1
  517. package/src/api/routes/index.ts +6 -3
  518. package/src/api/routes/integration.ts +1 -1
  519. package/src/api/routes/layout.ts +1 -1
  520. package/src/api/routes/metadata.ts +1 -1
  521. package/src/api/routes/migrations.ts +1 -1
  522. package/src/api/routes/permission.ts +1 -1
  523. package/src/api/routes/public/applications.ts +44 -0
  524. package/src/api/routes/public/middleware/mapper.ts +4 -0
  525. package/src/api/routes/query.ts +1 -1
  526. package/src/api/routes/role.ts +1 -1
  527. package/src/api/routes/routing.ts +1 -1
  528. package/src/api/routes/row.ts +1 -1
  529. package/src/api/routes/screen.ts +1 -1
  530. package/src/api/routes/script.ts +1 -1
  531. package/src/api/routes/static.ts +2 -2
  532. package/src/api/routes/table.ts +16 -39
  533. package/src/api/routes/templates.ts +1 -1
  534. package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +0 -0
  535. package/src/api/routes/tests/{application.spec.js → application.spec.ts} +94 -18
  536. package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -6
  537. package/src/api/routes/tests/cloud.spec.ts +65 -0
  538. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  539. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  540. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  541. package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +56 -14
  542. package/src/api/routes/tests/misc.spec.js +4 -10
  543. package/src/api/routes/tests/permissions.spec.js +1 -1
  544. package/src/api/routes/tests/plugin.spec.ts +179 -0
  545. package/src/api/routes/tests/routing.spec.js +1 -2
  546. package/src/api/routes/tests/row.spec.js +4 -2
  547. package/src/api/routes/tests/static.spec.js +2 -17
  548. package/src/api/routes/tests/table.spec.js +16 -32
  549. package/src/api/routes/tests/user.spec.js +105 -0
  550. package/src/api/routes/tests/utilities/TestFunctions.ts +1 -1
  551. package/src/api/routes/tests/utilities/index.ts +2 -2
  552. package/src/api/routes/tests/webhook.spec.js +1 -1
  553. package/src/api/routes/user.ts +1 -1
  554. package/src/api/routes/utils/validators.ts +1 -1
  555. package/src/api/routes/view.ts +1 -1
  556. package/src/api/routes/webhook.ts +1 -1
  557. package/src/app.ts +5 -3
  558. package/src/automations/automationUtils.ts +24 -0
  559. package/src/automations/logging/index.ts +1 -1
  560. package/src/automations/tests/bash.spec.js +34 -0
  561. package/src/automations/tests/discord.spec.js +27 -0
  562. package/src/automations/tests/executeQuery.spec.js +49 -0
  563. package/src/automations/tests/executeScript.spec.js +48 -0
  564. package/src/automations/tests/loop.spec.ts +45 -0
  565. package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
  566. package/src/automations/tests/serverLog.spec.js +22 -0
  567. package/src/automations/tests/utilities/index.ts +2 -2
  568. package/src/automations/tests/zapier.spec.js +27 -0
  569. package/src/automations/triggers.ts +6 -1
  570. package/src/automations/unitTests/automationUtils.spec.ts +65 -0
  571. package/src/db/index.ts +1 -1
  572. package/src/db/linkedRows/LinkController.ts +1 -1
  573. package/src/db/linkedRows/LinkDocument.ts +1 -1
  574. package/src/db/newid.ts +1 -1
  575. package/src/db/tests/linkController.spec.js +1 -1
  576. package/src/definitions/automations.ts +1 -0
  577. package/src/definitions/datasource.ts +0 -41
  578. package/src/definitions/openapi.ts +10 -0
  579. package/src/environment.ts +6 -2
  580. package/src/events/AutomationEmitter.ts +1 -1
  581. package/src/events/BudibaseEmitter.ts +1 -1
  582. package/src/events/index.ts +1 -1
  583. package/src/index.ts +1 -1
  584. package/src/integrations/base/query.ts +3 -1
  585. package/src/integrations/base/sqlTable.ts +1 -1
  586. package/src/integrations/couchdb.ts +40 -14
  587. package/src/integrations/dynamodb.ts +3 -3
  588. package/src/integrations/elasticsearch.ts +8 -4
  589. package/src/integrations/googlesheets.ts +1 -1
  590. package/src/integrations/index.ts +5 -9
  591. package/src/integrations/mongodb.ts +315 -271
  592. package/src/integrations/mysql.ts +1 -1
  593. package/src/integrations/queries/sql.ts +5 -50
  594. package/src/integrations/rest.ts +16 -19
  595. package/src/integrations/tests/couchdb.spec.ts +33 -21
  596. package/src/integrations/tests/rest.spec.ts +19 -15
  597. package/src/middleware/authorized.ts +5 -1
  598. package/src/middleware/builder.ts +1 -1
  599. package/src/middleware/currentapp.ts +4 -3
  600. package/src/middleware/publicApi.ts +1 -1
  601. package/src/middleware/selfhost.ts +1 -1
  602. package/src/middleware/tests/authorized.spec.js +1 -1
  603. package/src/middleware/tests/currentapp.spec.js +1 -1
  604. package/src/middleware/tests/selfhost.spec.js +1 -1
  605. package/src/migrations/functions/backfill/global/configs.ts +5 -4
  606. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  607. package/src/sdk/app/backups/imports.ts +2 -6
  608. package/src/sdk/app/datasources/datasources.ts +136 -0
  609. package/src/sdk/app/datasources/index.ts +5 -0
  610. package/src/sdk/app/queries/index.ts +5 -0
  611. package/src/sdk/app/queries/queries.ts +50 -0
  612. package/src/sdk/app/tables/index.ts +6 -3
  613. package/src/sdk/index.ts +4 -0
  614. package/src/sdk/tests/attachments.spec.ts +1 -4
  615. package/src/sdk/utils/index.ts +16 -0
  616. package/src/startup.ts +3 -8
  617. package/src/tests/jestEnv.ts +13 -0
  618. package/src/tests/jestSetup.ts +4 -15
  619. package/src/tests/utilities/TestConfiguration.ts +38 -16
  620. package/src/tests/utilities/structures.ts +65 -2
  621. package/src/threads/automation.ts +22 -35
  622. package/src/threads/definitions.ts +3 -0
  623. package/src/threads/index.ts +1 -1
  624. package/src/threads/query.ts +28 -15
  625. package/src/utilities/fileSystem/app.ts +86 -0
  626. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  627. package/src/utilities/fileSystem/filesystem.ts +172 -0
  628. package/src/utilities/fileSystem/index.ts +5 -348
  629. package/src/utilities/fileSystem/plugin.ts +64 -0
  630. package/src/utilities/fileSystem/template.ts +36 -0
  631. package/src/utilities/index.ts +1 -45
  632. package/src/utilities/rowProcessor/index.ts +17 -8
  633. package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
  634. package/src/utilities/schema.ts +141 -0
  635. package/src/utilities/scriptRunner.ts +1 -1
  636. package/src/utilities/statusCodes.ts +1 -1
  637. package/src/utilities/workerRequests.ts +10 -1
  638. package/src/watch.ts +1 -1
  639. package/tsconfig.build.json +2 -0
  640. package/tsconfig.json +2 -1
  641. package/builder/assets/index.01a9ab3b.js +0 -1024
  642. package/builder/assets/index.96b9ffed.css +0 -6
  643. package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
  644. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  645. package/dist/api/routes/tests/utilities/index.js +0 -131
  646. package/dist/automations/tests/utilities/index.js +0 -81
  647. package/dist/tests/utilities/TestConfiguration.js +0 -562
  648. package/dist/tests/utilities/controllers.js +0 -40
  649. package/dist/tests/utilities/structures.js +0 -168
  650. package/dist/utilities/csvParser.js +0 -152
  651. package/dist/utilities/plugins.js +0 -26
  652. package/src/api/routes/tests/deployment.spec.ts +0 -25
  653. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  654. package/src/utilities/csvParser.ts +0 -161
  655. package/src/utilities/plugins.ts +0 -22
  656. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  657. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -1,111 +1,84 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.interpolateSQL = exports.enrichQueryFields = void 0;
15
+ exports.interpolateSQL = void 0;
4
16
  const string_templates_1 = require("@budibase/string-templates");
17
+ const sdk_1 = __importDefault(require("../../sdk"));
5
18
  const CONST_CHAR_REGEX = new RegExp("'[^']*'", "g");
6
- function enrichQueryFields(fields, parameters = {}) {
7
- const enrichedQuery = Array.isArray(fields) ? [] : {};
8
- if (!fields || !parameters) {
9
- return enrichedQuery;
10
- }
11
- // enrich the fields with dynamic parameters
12
- for (let key of Object.keys(fields)) {
13
- if (fields[key] == null) {
14
- continue;
15
- }
16
- if (typeof fields[key] === "object") {
17
- // enrich nested fields object
18
- enrichedQuery[key] = enrichQueryFields(fields[key], parameters);
19
- }
20
- else if (typeof fields[key] === "string") {
21
- // enrich string value as normal
22
- enrichedQuery[key] = (0, string_templates_1.processStringSync)(fields[key], parameters, {
23
- noEscaping: true,
24
- noHelpers: true,
25
- escapeNewlines: true,
26
- });
27
- }
28
- else {
29
- enrichedQuery[key] = fields[key];
30
- }
31
- }
32
- if (enrichedQuery.json ||
33
- enrichedQuery.customData ||
34
- enrichedQuery.requestBody) {
35
- try {
36
- enrichedQuery.json = JSON.parse(enrichedQuery.json ||
37
- enrichedQuery.customData ||
38
- enrichedQuery.requestBody);
39
- }
40
- catch (err) {
41
- // no json found, ignore
42
- }
43
- delete enrichedQuery.customData;
44
- }
45
- return enrichedQuery;
46
- }
47
- exports.enrichQueryFields = enrichQueryFields;
48
19
  function interpolateSQL(fields, parameters, integration) {
49
- let sql = fields.sql;
50
- if (!sql || typeof sql !== "string") {
51
- return fields;
52
- }
53
- const bindings = (0, string_templates_1.findHBSBlocks)(sql);
54
- let variables = [], arrays = [];
55
- for (let binding of bindings) {
56
- // look for array/list operations in the SQL statement, which will need handled later
57
- const listRegexMatch = sql.match(new RegExp(`(in|IN|In|iN)( )+[(]?${binding}[)]?`));
58
- // check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
59
- // start by finding all the instances of const character strings
60
- const charConstMatch = sql.match(CONST_CHAR_REGEX) || [];
61
- // now look within them to see if a binding is used
62
- const charConstBindingMatch = charConstMatch.find((string) => string.match(new RegExp(`'[^']*${binding}[^']*'`)));
63
- if (charConstBindingMatch) {
64
- let [part1, part2] = charConstBindingMatch.split(binding);
65
- part1 = `'${part1.substring(1)}'`;
66
- part2 = `'${part2.substring(0, part2.length - 1)}'`;
67
- sql = sql.replace(charConstBindingMatch, integration.getStringConcat([
68
- part1,
69
- integration.getBindingIdentifier(),
70
- part2,
71
- ]));
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ let sql = fields.sql;
22
+ if (!sql || typeof sql !== "string") {
23
+ return fields;
72
24
  }
73
- // generate SQL parameterised array
74
- else if (listRegexMatch) {
75
- arrays.push(binding);
76
- // determine the length of the array
77
- const value = enrichQueryFields([binding], parameters)[0]
78
- .split(",")
79
- .map((val) => val.trim());
80
- // build a string like ($1, $2, $3)
81
- let replacement = `${Array.apply(null, Array(value.length))
82
- .map(() => integration.getBindingIdentifier())
83
- .join(",")}`;
84
- // check if parentheses are needed
85
- if (!listRegexMatch[0].includes(`(${binding})`)) {
86
- replacement = `(${replacement})`;
25
+ const bindings = (0, string_templates_1.findHBSBlocks)(sql);
26
+ let variables = [], arrays = [];
27
+ for (let binding of bindings) {
28
+ // look for array/list operations in the SQL statement, which will need handled later
29
+ const listRegexMatch = sql.match(new RegExp(`(in|IN|In|iN)( )+[(]?${binding}[)]?`));
30
+ // check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
31
+ // start by finding all the instances of const character strings
32
+ const charConstMatch = sql.match(CONST_CHAR_REGEX) || [];
33
+ // now look within them to see if a binding is used
34
+ const charConstBindingMatch = charConstMatch.find((string) => string.match(new RegExp(`'[^']*${binding}[^']*'`)));
35
+ if (charConstBindingMatch) {
36
+ let [part1, part2] = charConstBindingMatch.split(binding);
37
+ part1 = `'${part1.substring(1)}'`;
38
+ part2 = `'${part2.substring(0, part2.length - 1)}'`;
39
+ sql = sql.replace(charConstBindingMatch, integration.getStringConcat([
40
+ part1,
41
+ integration.getBindingIdentifier(),
42
+ part2,
43
+ ]));
87
44
  }
88
- sql = sql.replace(binding, replacement);
89
- }
90
- else {
91
- sql = sql.replace(binding, integration.getBindingIdentifier());
92
- }
93
- variables.push(binding);
94
- }
95
- // replicate the knex structure
96
- fields.sql = sql;
97
- fields.bindings = enrichQueryFields(variables, parameters);
98
- // check for arrays in the data
99
- let updated = [];
100
- for (let i = 0; i < variables.length; i++) {
101
- if (arrays.includes(variables[i])) {
102
- updated = updated.concat(fields.bindings[i].split(",").map((val) => val.trim()));
45
+ // generate SQL parameterised array
46
+ else if (listRegexMatch) {
47
+ arrays.push(binding);
48
+ // determine the length of the array
49
+ const value = (yield sdk_1.default.queries.enrichContext([binding], parameters))[0]
50
+ .split(",")
51
+ .map((val) => val.trim());
52
+ // build a string like ($1, $2, $3)
53
+ let replacement = `${Array.apply(null, Array(value.length))
54
+ .map(() => integration.getBindingIdentifier())
55
+ .join(",")}`;
56
+ // check if parentheses are needed
57
+ if (!listRegexMatch[0].includes(`(${binding})`)) {
58
+ replacement = `(${replacement})`;
59
+ }
60
+ sql = sql.replace(binding, replacement);
61
+ }
62
+ else {
63
+ sql = sql.replace(binding, integration.getBindingIdentifier());
64
+ }
65
+ variables.push(binding);
103
66
  }
104
- else {
105
- updated.push(fields.bindings[i]);
67
+ // replicate the knex structure
68
+ fields.sql = sql;
69
+ fields.bindings = yield sdk_1.default.queries.enrichContext(variables, parameters);
70
+ // check for arrays in the data
71
+ let updated = [];
72
+ for (let i = 0; i < variables.length; i++) {
73
+ if (arrays.includes(variables[i])) {
74
+ updated = updated.concat(fields.bindings[i].split(",").map((val) => val.trim()));
75
+ }
76
+ else {
77
+ updated.push(fields.bindings[i]);
78
+ }
106
79
  }
107
- }
108
- fields.bindings = updated;
109
- return fields;
80
+ fields.bindings = updated;
81
+ return fields;
82
+ });
110
83
  }
111
84
  exports.interpolateSQL = interpolateSQL;
@@ -36,15 +36,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  const types_1 = require("@budibase/types");
39
- const datasource_1 = require("../definitions/datasource");
40
39
  const lodash_1 = require("lodash");
41
40
  const https = __importStar(require("https"));
42
41
  const querystring_1 = __importDefault(require("querystring"));
43
- const fetch = require("node-fetch");
44
- const { formatBytes } = require("../utilities");
45
- const { performance } = require("perf_hooks");
46
- const FormData = require("form-data");
47
- const { URLSearchParams } = require("url");
42
+ const node_fetch_1 = __importDefault(require("node-fetch"));
43
+ const utilities_1 = require("../utilities");
44
+ const perf_hooks_1 = require("perf_hooks");
45
+ const form_data_1 = __importDefault(require("form-data"));
46
+ const url_1 = require("url");
48
47
  const BodyTypes = {
49
48
  NONE: "none",
50
49
  FORM_DATA: "form",
@@ -138,7 +137,7 @@ const SCHEMA = {
138
137
  class RestIntegration {
139
138
  constructor(config) {
140
139
  this.headers = {};
141
- this.startTimeMs = performance.now();
140
+ this.startTimeMs = perf_hooks_1.performance.now();
142
141
  this.config = config;
143
142
  }
144
143
  parseResponse(response, pagination) {
@@ -174,8 +173,8 @@ class RestIntegration {
174
173
  catch (err) {
175
174
  throw "Failed to parse response body.";
176
175
  }
177
- const size = formatBytes(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
178
- const time = `${Math.round(performance.now() - this.startTimeMs)}ms`;
176
+ const size = (0, utilities_1.formatBytes)(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
177
+ const time = `${Math.round(perf_hooks_1.performance.now() - this.startTimeMs)}ms`;
179
178
  headers = response.headers.raw();
180
179
  for (let [key, value] of Object.entries(headers)) {
181
180
  headers[key] = Array.isArray(value) ? value[0] : value;
@@ -206,14 +205,14 @@ class RestIntegration {
206
205
  // Add pagination params to query string if required
207
206
  if ((pagination === null || pagination === void 0 ? void 0 : pagination.location) === "query" && paginationValues) {
208
207
  const { pageParam, sizeParam } = pagination;
209
- const params = new URLSearchParams();
208
+ const params = new url_1.URLSearchParams();
210
209
  // Append page number or cursor param if configured
211
210
  if (pageParam && paginationValues.page != null) {
212
211
  params.append(pageParam, paginationValues.page);
213
212
  }
214
213
  // Append page size param if configured
215
214
  if (sizeParam && paginationValues.limit != null) {
216
- params.append(sizeParam, paginationValues.limit);
215
+ params.append(sizeParam, String(paginationValues.limit));
217
216
  }
218
217
  // Prepend query string with pagination params
219
218
  let paginationString = params.toString();
@@ -269,7 +268,7 @@ class RestIntegration {
269
268
  input.body = string;
270
269
  break;
271
270
  case BodyTypes.ENCODED:
272
- const params = new URLSearchParams();
271
+ const params = new url_1.URLSearchParams();
273
272
  for (let [key, value] of Object.entries(object)) {
274
273
  params.append(key, value);
275
274
  }
@@ -279,7 +278,7 @@ class RestIntegration {
279
278
  input.body = params;
280
279
  break;
281
280
  case BodyTypes.FORM_DATA:
282
- const form = new FormData();
281
+ const form = new form_data_1.default();
283
282
  for (let [key, value] of Object.entries(object)) {
284
283
  form.append(key, value);
285
284
  }
@@ -318,11 +317,11 @@ class RestIntegration {
318
317
  if (authConfig) {
319
318
  let config;
320
319
  switch (authConfig.type) {
321
- case datasource_1.AuthType.BASIC:
320
+ case types_1.RestAuthType.BASIC:
322
321
  config = authConfig.config;
323
322
  headers.Authorization = `Basic ${Buffer.from(`${config.username}:${config.password}`).toString("base64")}`;
324
323
  break;
325
- case datasource_1.AuthType.BEARER:
324
+ case types_1.RestAuthType.BEARER:
326
325
  config = authConfig.config;
327
326
  headers.Authorization = `Bearer ${config.token}`;
328
327
  break;
@@ -355,9 +354,9 @@ class RestIntegration {
355
354
  // https://github.com/nodejs/node/issues/43798
356
355
  input.extraHttpOptions = { insecureHTTPParser: true };
357
356
  }
358
- this.startTimeMs = performance.now();
357
+ this.startTimeMs = perf_hooks_1.performance.now();
359
358
  const url = this.getUrl(path, queryString, pagination, paginationValues);
360
- const response = yield fetch(url, input);
359
+ const response = yield (0, node_fetch_1.default)(url, input);
361
360
  return yield this.parseResponse(response, pagination);
362
361
  });
363
362
  }
@@ -390,5 +389,4 @@ class RestIntegration {
390
389
  exports.default = {
391
390
  schema: SCHEMA,
392
391
  integration: RestIntegration,
393
- AuthType: datasource_1.AuthType,
394
392
  };
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
14
15
  const backend_core_1 = require("@budibase/backend-core");
15
16
  const builder_1 = __importDefault(require("./builder"));
16
17
  const utils_1 = require("./utils");
@@ -56,7 +57,7 @@ const checkAuthorizedResource = (ctx, resourceRoles, permType, permLevel) => __a
56
57
  ctx.throw(403, permError);
57
58
  }
58
59
  });
59
- module.exports = (permType, permLevel = null, opts = { schema: false }) => (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
60
+ exports.default = (permType, permLevel = null, opts = { schema: false }) => (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
60
61
  // webhooks don't need authentication, each webhook unique
61
62
  // also internal requests (between services) don't need authorized
62
63
  if ((0, utils_1.isWebhookEndpoint)(ctx) || ctx.internal) {
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
11
12
  const utils_1 = require("../db/utils");
12
13
  const redis_1 = require("../utilities/redis");
13
14
  const backend_core_1 = require("@budibase/backend-core");
@@ -60,7 +61,7 @@ function updateAppUpdatedAt(ctx) {
60
61
  }));
61
62
  });
62
63
  }
63
- module.exports = function builder(ctx, permType) {
64
+ function builder(ctx, permType) {
64
65
  return __awaiter(this, void 0, void 0, function* () {
65
66
  const appId = ctx.appId;
66
67
  // this only functions within an app context
@@ -85,4 +86,5 @@ module.exports = function builder(ctx, permType) {
85
86
  // set updated at time on app
86
87
  yield updateAppUpdatedAt(ctx);
87
88
  });
88
- };
89
+ }
90
+ exports.default = builder;
@@ -11,12 +11,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
14
15
  const backend_core_1 = require("@budibase/backend-core");
15
16
  const utils_1 = require("../db/utils");
16
17
  const global_1 = require("../utilities/global");
17
18
  const environment_1 = __importDefault(require("../environment"));
18
19
  const utils_2 = require("./utils");
19
- module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
20
+ exports.default = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
21
+ var _a;
20
22
  // try to get the appID from the request
21
23
  let requestAppId = yield backend_core_1.utils.getAppIdFromCtx(ctx);
22
24
  // get app cookie if it exists
@@ -51,7 +53,7 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
51
53
  }
52
54
  }
53
55
  let appId, roleId = backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC;
54
- if (!ctx.user) {
56
+ if (!((_a = ctx.user) === null || _a === void 0 ? void 0 : _a._id)) {
55
57
  // not logged in, try to set a cookie for public apps
56
58
  appId = requestAppId;
57
59
  }
@@ -87,11 +89,12 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
87
89
  return next();
88
90
  }
89
91
  return backend_core_1.context.doInAppContext(appId, () => __awaiter(void 0, void 0, void 0, function* () {
92
+ var _b;
90
93
  let skipCookie = false;
91
94
  // if the user not in the right tenant then make sure they have no permissions
92
95
  // need to judge this only based on the request app ID,
93
96
  if (environment_1.default.MULTI_TENANCY &&
94
- ctx.user &&
97
+ ((_b = ctx.user) === null || _b === void 0 ? void 0 : _b._id) &&
95
98
  requestAppId &&
96
99
  !backend_core_1.tenancy.isUserInAppTenant(requestAppId, ctx.user)) {
97
100
  // don't error, simply remove the users rights (they are a public user)
@@ -8,8 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
11
12
  const backend_core_1 = require("@budibase/backend-core");
12
- module.exports = function ({ requiresAppId } = {}) {
13
+ function default_1({ requiresAppId } = {}) {
13
14
  return (ctx, next) => __awaiter(this, void 0, void 0, function* () {
14
15
  const appId = yield backend_core_1.utils.getAppIdFromCtx(ctx);
15
16
  if (requiresAppId && !appId) {
@@ -20,4 +21,5 @@ module.exports = function ({ requiresAppId } = {}) {
20
21
  }
21
22
  return next();
22
23
  });
23
- };
24
+ }
25
+ exports.default = default_1;
@@ -11,8 +11,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
14
15
  const environment_1 = __importDefault(require("../environment"));
15
- module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
16
+ // if added as a middleware will stop requests unless builder is in self host mode
17
+ // or cloud is in self host
18
+ exports.default = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
16
19
  if (environment_1.default.SELF_HOSTED) {
17
20
  yield next();
18
21
  return;
@@ -29,15 +29,15 @@ const backfill = (globalDb, timestamp) => __awaiter(void 0, void 0, void 0, func
29
29
  yield backend_core_1.events.email.SMTPCreated(timestamp);
30
30
  }
31
31
  if ((0, types_1.isGoogleConfig)(config)) {
32
- yield backend_core_1.events.auth.SSOCreated("google", timestamp);
32
+ yield backend_core_1.events.auth.SSOCreated(types_1.ConfigType.GOOGLE, timestamp);
33
33
  if (config.config.activated) {
34
- yield backend_core_1.events.auth.SSOActivated("google", timestamp);
34
+ yield backend_core_1.events.auth.SSOActivated(types_1.ConfigType.GOOGLE, timestamp);
35
35
  }
36
36
  }
37
37
  if ((0, types_1.isOIDCConfig)(config)) {
38
- yield backend_core_1.events.auth.SSOCreated("oidc", timestamp);
38
+ yield backend_core_1.events.auth.SSOCreated(types_1.ConfigType.OIDC, timestamp);
39
39
  if (config.config.configs[0].activated) {
40
- yield backend_core_1.events.auth.SSOActivated("oidc", timestamp);
40
+ yield backend_core_1.events.auth.SSOActivated(types_1.ConfigType.OIDC, timestamp);
41
41
  }
42
42
  }
43
43
  if ((0, types_1.isSettingsConfig)(config)) {
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "2.2.24",
4
+ "version": "2.2.26",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -43,11 +43,11 @@
43
43
  "license": "GPL-3.0",
44
44
  "dependencies": {
45
45
  "@apidevtools/swagger-parser": "10.0.3",
46
- "@budibase/backend-core": "^2.2.24",
47
- "@budibase/client": "^2.2.24",
48
- "@budibase/pro": "2.2.24",
49
- "@budibase/string-templates": "^2.2.24",
50
- "@budibase/types": "^2.2.24",
46
+ "@budibase/backend-core": "^2.2.26",
47
+ "@budibase/client": "^2.2.26",
48
+ "@budibase/pro": "2.2.26",
49
+ "@budibase/string-templates": "^2.2.26",
50
+ "@budibase/types": "^2.2.26",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -77,7 +77,7 @@
77
77
  "joi": "17.6.0",
78
78
  "js-yaml": "4.1.0",
79
79
  "jsonschema": "1.4.0",
80
- "knex": "0.95.15",
80
+ "knex": "2.4.0",
81
81
  "koa": "2.13.4",
82
82
  "koa-body": "4.2.0",
83
83
  "koa-compress": "4.0.1",
@@ -123,6 +123,8 @@
123
123
  "@babel/preset-env": "7.16.11",
124
124
  "@budibase/standard-components": "^0.9.139",
125
125
  "@jest/test-sequencer": "24.9.0",
126
+ "@swc/core": "^1.3.25",
127
+ "@swc/jest": "^0.2.24",
126
128
  "@types/apidoc": "0.50.0",
127
129
  "@types/bson": "4.2.0",
128
130
  "@types/global-agent": "2.1.1",
@@ -130,13 +132,15 @@
130
132
  "@types/ioredis": "4.28.10",
131
133
  "@types/jest": "27.5.1",
132
134
  "@types/koa": "2.13.4",
133
- "@types/koa__router": "8.0.11",
135
+ "@types/koa__router": "8.0.8",
134
136
  "@types/lodash": "4.14.180",
135
137
  "@types/node": "14.18.20",
136
138
  "@types/node-fetch": "2.6.1",
137
139
  "@types/oracledb": "5.2.2",
138
140
  "@types/pouchdb": "6.4.0",
139
141
  "@types/redis": "4.0.11",
142
+ "@types/server-destroy": "1.0.1",
143
+ "@types/tar": "6.1.3",
140
144
  "@typescript-eslint/parser": "5.45.0",
141
145
  "apidoc": "0.50.4",
142
146
  "babel-jest": "27.5.1",
@@ -27,17 +27,13 @@ const uuid = require("uuid/v4");
27
27
  const tar = require("tar");
28
28
  function rewriteAttachmentUrl(appId, attachment) {
29
29
  // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv
30
- const urlParts = attachment.url.split("/");
31
- // drop the first empty element
32
- urlParts.shift();
33
- // get the prefix
34
- const prefix = urlParts.shift();
30
+ const urlParts = attachment.key.split("/");
35
31
  // remove the app ID
36
32
  urlParts.shift();
37
33
  // add new app ID
38
34
  urlParts.unshift(appId);
39
35
  const key = urlParts.join("/");
40
- return Object.assign(Object.assign({}, attachment), { key, url: `/${prefix}/${key}` });
36
+ return Object.assign(Object.assign({}, attachment), { key, url: "" });
41
37
  }
42
38
  function updateAttachmentColumns(prodAppId, db) {
43
39
  return __awaiter(this, void 0, void 0, function* () {
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.mergeConfigs = exports.removeSecretSingle = exports.removeSecrets = exports.getWithEnvVars = exports.get = exports.enrich = void 0;
13
+ const backend_core_1 = require("@budibase/backend-core");
14
+ const string_templates_1 = require("@budibase/string-templates");
15
+ const types_1 = require("@budibase/types");
16
+ const fp_1 = require("lodash/fp");
17
+ const utils_1 = require("../../utils");
18
+ const integrations_1 = require("../../../integrations");
19
+ const ENV_VAR_PREFIX = "env.";
20
+ function enrichDatasourceWithValues(datasource) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const cloned = (0, fp_1.cloneDeep)(datasource);
23
+ const env = yield (0, utils_1.getEnvironmentVariables)();
24
+ const processed = (0, string_templates_1.processObjectSync)(cloned, { env }, { onlyFound: true });
25
+ return {
26
+ datasource: processed,
27
+ envVars: env,
28
+ };
29
+ });
30
+ }
31
+ function enrich(datasource) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ const { datasource: response } = yield enrichDatasourceWithValues(datasource);
34
+ return response;
35
+ });
36
+ }
37
+ exports.enrich = enrich;
38
+ function get(datasourceId, opts) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const appDb = backend_core_1.context.getAppDB();
41
+ const datasource = yield appDb.get(datasourceId);
42
+ if (opts === null || opts === void 0 ? void 0 : opts.enriched) {
43
+ return (yield enrichDatasourceWithValues(datasource)).datasource;
44
+ }
45
+ else {
46
+ return datasource;
47
+ }
48
+ });
49
+ }
50
+ exports.get = get;
51
+ function getWithEnvVars(datasourceId) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const appDb = backend_core_1.context.getAppDB();
54
+ const datasource = yield appDb.get(datasourceId);
55
+ return enrichDatasourceWithValues(datasource);
56
+ });
57
+ }
58
+ exports.getWithEnvVars = getWithEnvVars;
59
+ function hasAuthConfigs(datasource) {
60
+ var _a;
61
+ return datasource.source === types_1.SourceName.REST && ((_a = datasource.config) === null || _a === void 0 ? void 0 : _a.authConfigs);
62
+ }
63
+ function useEnvVars(str) {
64
+ if (typeof str !== "string") {
65
+ return false;
66
+ }
67
+ const blocks = (0, string_templates_1.findHBSBlocks)(str);
68
+ return blocks.find(block => block.includes(ENV_VAR_PREFIX)) != null;
69
+ }
70
+ function removeSecrets(datasources) {
71
+ var _a, _b;
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const definitions = yield (0, integrations_1.getDefinitions)();
74
+ for (let datasource of datasources) {
75
+ const schema = definitions[datasource.source];
76
+ if (datasource.config) {
77
+ // strip secrets from response, so they don't show in the network request
78
+ if (datasource.config.auth) {
79
+ delete datasource.config.auth;
80
+ }
81
+ // specific to REST datasources, contains passwords
82
+ if (hasAuthConfigs(datasource)) {
83
+ const configs = datasource.config.authConfigs;
84
+ for (let config of configs) {
85
+ if (config.type !== types_1.RestAuthType.BASIC) {
86
+ continue;
87
+ }
88
+ const basic = config.config;
89
+ if (!useEnvVars(basic.password)) {
90
+ basic.password = types_1.PASSWORD_REPLACEMENT;
91
+ }
92
+ }
93
+ }
94
+ // remove general passwords
95
+ for (let key of Object.keys(datasource.config)) {
96
+ if (((_b = (_a = schema.datasource) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.type) === types_1.DatasourceFieldType.PASSWORD &&
97
+ !useEnvVars(datasource.config[key])) {
98
+ datasource.config[key] = types_1.PASSWORD_REPLACEMENT;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ return datasources;
104
+ });
105
+ }
106
+ exports.removeSecrets = removeSecrets;
107
+ function removeSecretSingle(datasource) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ return (yield removeSecrets([datasource]))[0];
110
+ });
111
+ }
112
+ exports.removeSecretSingle = removeSecretSingle;
113
+ function mergeConfigs(update, old) {
114
+ var _a, _b, _c, _d;
115
+ if (!update.config) {
116
+ return update;
117
+ }
118
+ // specific to REST datasources, fix the auth configs again if required
119
+ if (hasAuthConfigs(update)) {
120
+ const configs = update.config.authConfigs;
121
+ const oldConfigs = (_a = old.config) === null || _a === void 0 ? void 0 : _a.authConfigs;
122
+ for (let config of configs) {
123
+ if (config.type !== types_1.RestAuthType.BASIC) {
124
+ continue;
125
+ }
126
+ const basic = config.config;
127
+ const oldBasic = (_b = oldConfigs.find(old => old.name === config.name)) === null || _b === void 0 ? void 0 : _b.config;
128
+ if (basic.password === types_1.PASSWORD_REPLACEMENT) {
129
+ basic.password = oldBasic.password;
130
+ }
131
+ }
132
+ }
133
+ // update back to actual passwords for everything else
134
+ for (let [key, value] of Object.entries(update.config)) {
135
+ if (value !== types_1.PASSWORD_REPLACEMENT) {
136
+ continue;
137
+ }
138
+ if ((_c = old.config) === null || _c === void 0 ? void 0 : _c[key]) {
139
+ update.config[key] = (_d = old.config) === null || _d === void 0 ? void 0 : _d[key];
140
+ }
141
+ else {
142
+ delete update.config[key];
143
+ }
144
+ }
145
+ return update;
146
+ }
147
+ exports.mergeConfigs = mergeConfigs;