@budibase/server 2.2.3 → 2.2.4-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 (429) hide show
  1. package/__mocks__/aws-sdk.ts +19 -0
  2. package/__mocks__/node-fetch.ts +78 -0
  3. package/builder/assets/{index.c7a7a2d0.js → index.4aa8e747.js} +194 -194
  4. package/builder/index.html +1 -1
  5. package/coverage/clover.xml +4914 -4899
  6. package/coverage/coverage-final.json +265 -262
  7. package/coverage/lcov-report/index.html +176 -176
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +7 -7
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +171 -159
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +11 -11
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +51 -51
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +91 -79
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +30 -30
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +83 -83
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +18 -18
  21. package/coverage/lcov-report/src/api/controllers/index.html +51 -51
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +19 -19
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +63 -63
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +55 -55
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +10 -10
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +6 -6
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +10 -10
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +9 -9
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +11 -11
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +6 -6
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +8 -8
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +8 -8
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +8 -8
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +10 -10
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +14 -14
  58. package/coverage/lcov-report/src/api/controllers/query/index.html +19 -19
  59. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +60 -60
  60. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +10 -10
  61. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  62. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  63. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +43 -25
  64. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +20 -20
  65. package/coverage/lcov-report/src/api/controllers/row/index.html +13 -13
  66. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +14 -14
  67. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +54 -51
  68. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +9 -9
  69. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +21 -12
  70. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +17 -14
  71. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  72. package/coverage/lcov-report/src/api/controllers/script.ts.html +18 -18
  73. package/coverage/lcov-report/src/api/controllers/static/index.html +11 -11
  74. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +32 -44
  75. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +10 -10
  76. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +14 -14
  77. package/coverage/lcov-report/src/api/controllers/table/index.html +19 -19
  78. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +14 -14
  79. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +17 -17
  80. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +51 -51
  81. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  82. package/coverage/lcov-report/src/api/controllers/user.ts.html +119 -119
  83. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +4 -4
  84. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +47 -47
  86. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
  87. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +33 -33
  88. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +14 -14
  89. package/coverage/lcov-report/src/api/index.html +1 -1
  90. package/coverage/lcov-report/src/api/index.ts.html +33 -33
  91. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  92. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  93. package/coverage/lcov-report/src/api/routes/application.ts.html +9 -9
  94. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  95. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  96. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  97. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  100. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  101. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  102. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/index.ts.html +40 -37
  104. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  106. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  107. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  108. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  109. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  110. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +12 -12
  111. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  113. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +10 -10
  115. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  116. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  117. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  118. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  121. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  122. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  124. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  125. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  126. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  127. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  128. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  130. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  131. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +16 -16
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +22 -22
  135. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  136. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  138. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  139. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  140. package/coverage/lcov-report/src/app.ts.html +32 -32
  141. package/coverage/lcov-report/src/automations/actions.ts.html +25 -25
  142. package/coverage/lcov-report/src/automations/automationUtils.ts.html +91 -19
  143. package/coverage/lcov-report/src/automations/bullboard.ts.html +11 -11
  144. package/coverage/lcov-report/src/automations/index.html +19 -19
  145. package/coverage/lcov-report/src/automations/index.ts.html +13 -13
  146. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  147. package/coverage/lcov-report/src/automations/logging/index.ts.html +11 -11
  148. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  149. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  150. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  151. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  152. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  153. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  154. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  155. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  156. package/coverage/lcov-report/src/automations/steps/index.html +83 -83
  157. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  158. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  159. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +14 -14
  160. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +17 -17
  161. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  162. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +18 -18
  163. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  164. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  165. package/coverage/lcov-report/src/automations/steps/utils.ts.html +16 -16
  166. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.html +5 -5
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +26 -26
  169. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  170. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggers.ts.html +21 -21
  178. package/coverage/lcov-report/src/automations/utils.ts.html +56 -56
  179. package/coverage/lcov-report/src/constants/index.html +1 -1
  180. package/coverage/lcov-report/src/constants/index.ts.html +92 -92
  181. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  182. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  183. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +23 -23
  184. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  185. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  186. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  187. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  188. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  189. package/coverage/lcov-report/src/db/dynamoClient.ts.html +16 -16
  190. package/coverage/lcov-report/src/db/inMemoryView.ts.html +5 -5
  191. package/coverage/lcov-report/src/db/index.html +19 -19
  192. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  193. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +8 -8
  194. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  195. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  196. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
  197. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +12 -12
  198. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  199. package/coverage/lcov-report/src/db/utils.ts.html +80 -80
  200. package/coverage/lcov-report/src/definitions/automations.ts.html +4 -4
  201. package/coverage/lcov-report/src/definitions/datasource.ts.html +4 -4
  202. package/coverage/lcov-report/src/definitions/index.html +1 -1
  203. package/coverage/lcov-report/src/environment.ts.html +43 -31
  204. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  205. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  206. package/coverage/lcov-report/src/events/index.html +1 -1
  207. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  208. package/coverage/lcov-report/src/events/utils.ts.html +3 -3
  209. package/coverage/lcov-report/src/index.html +26 -26
  210. package/coverage/lcov-report/src/index.ts.html +1 -1
  211. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  212. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  213. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  214. package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
  215. package/coverage/lcov-report/src/integrations/base/sql.ts.html +14 -14
  216. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  217. package/coverage/lcov-report/src/integrations/base/utils.ts.html +3 -3
  218. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  219. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  220. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  221. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  222. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  223. package/coverage/lcov-report/src/integrations/index.html +5 -5
  224. package/coverage/lcov-report/src/integrations/index.ts.html +35 -47
  225. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  226. package/coverage/lcov-report/src/integrations/mongodb.ts.html +5 -5
  227. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  228. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  229. package/coverage/lcov-report/src/integrations/postgres.ts.html +42 -42
  230. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  231. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +13 -13
  232. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  233. package/coverage/lcov-report/src/integrations/rest.ts.html +16 -16
  234. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  235. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  236. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  237. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  238. package/coverage/lcov-report/src/integrations/utils.ts.html +36 -36
  239. package/coverage/lcov-report/src/middleware/appInfo.ts.html +7 -7
  240. package/coverage/lcov-report/src/middleware/authorized.ts.html +28 -28
  241. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  242. package/coverage/lcov-report/src/middleware/currentapp.ts.html +39 -39
  243. package/coverage/lcov-report/src/middleware/index.html +1 -1
  244. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  245. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  246. package/coverage/lcov-report/src/middleware/resourceId.ts.html +22 -22
  247. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  248. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  249. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +13 -10
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  265. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  266. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  267. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  268. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  269. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  275. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  276. package/coverage/lcov-report/src/migrations/index.html +1 -1
  277. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  278. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  279. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  280. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  281. package/coverage/lcov-report/src/sdk/app/applications/index.html +15 -15
  282. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  283. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  284. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  285. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  287. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +6 -6
  288. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  289. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  290. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +42 -54
  291. package/coverage/lcov-report/src/sdk/app/backups/index.html +30 -30
  292. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  293. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  294. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  295. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  296. package/coverage/lcov-report/src/sdk/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/index.ts.html +8 -8
  298. package/coverage/lcov-report/src/sdk/users/index.html +5 -5
  299. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  300. package/coverage/lcov-report/src/sdk/users/utils.ts.html +34 -34
  301. package/coverage/lcov-report/src/startup.ts.html +42 -42
  302. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +146 -119
  303. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  304. package/coverage/lcov-report/src/tests/utilities/index.html +10 -10
  305. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  306. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +30 -30
  307. package/coverage/lcov-report/src/threads/automation.ts.html +32 -101
  308. package/coverage/lcov-report/src/threads/index.html +19 -19
  309. package/coverage/lcov-report/src/threads/index.ts.html +25 -25
  310. package/coverage/lcov-report/src/threads/query.ts.html +71 -71
  311. package/coverage/lcov-report/src/threads/utils.ts.html +18 -18
  312. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  313. package/coverage/lcov-report/src/utilities/centralPath.ts.html +4 -4
  314. package/coverage/lcov-report/src/utilities/csvParser.ts.html +8 -8
  315. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  316. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
  317. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +595 -0
  318. package/coverage/lcov-report/src/utilities/fileSystem/index.html +79 -19
  319. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
  320. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +280 -0
  321. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  322. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  323. package/coverage/lcov-report/src/utilities/global.ts.html +42 -42
  324. package/coverage/lcov-report/src/utilities/index.html +48 -63
  325. package/coverage/lcov-report/src/utilities/index.ts.html +36 -168
  326. package/coverage/lcov-report/src/utilities/redis.ts.html +32 -32
  327. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  328. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  329. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +28 -28
  330. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +60 -33
  331. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  332. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  333. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +32 -32
  334. package/coverage/lcov-report/src/utilities/security.ts.html +6 -6
  335. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +1 -1
  336. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  337. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  338. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  339. package/coverage/lcov-report/src/utilities/users.ts.html +6 -6
  340. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +56 -56
  341. package/coverage/lcov-report/src/watch.ts.html +9 -9
  342. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  343. package/coverage/lcov.info +6978 -6941
  344. package/dist/api/controllers/application.js +9 -10
  345. package/dist/api/controllers/cloud.js +6 -2
  346. package/dist/api/controllers/plugin/index.js +6 -6
  347. package/dist/api/controllers/row/ExternalRequest.js +14 -8
  348. package/dist/api/controllers/row/internal.js +11 -11
  349. package/dist/api/controllers/row/staticFormula.js +1 -1
  350. package/dist/api/controllers/static/index.js +8 -11
  351. package/dist/automations/automationUtils.js +26 -1
  352. package/dist/environment.js +6 -2
  353. package/dist/integrations/index.js +1 -2
  354. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  355. package/dist/package.json +9 -7
  356. package/dist/sdk/app/backups/imports.js +3 -7
  357. package/dist/threads/automation.js +2 -26
  358. package/dist/tsconfig.build.tsbuildinfo +1 -1
  359. package/dist/utilities/fileSystem/app.js +97 -0
  360. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  361. package/dist/utilities/fileSystem/filesystem.js +182 -0
  362. package/dist/utilities/fileSystem/index.js +18 -342
  363. package/dist/utilities/fileSystem/plugin.js +63 -0
  364. package/dist/utilities/fileSystem/template.js +44 -0
  365. package/dist/utilities/index.js +1 -44
  366. package/dist/utilities/rowProcessor/index.js +12 -4
  367. package/package.json +10 -8
  368. package/src/api/controllers/application.ts +16 -12
  369. package/src/api/controllers/auth.ts +2 -2
  370. package/src/api/controllers/cloud.ts +10 -6
  371. package/src/api/controllers/plugin/index.ts +14 -9
  372. package/src/api/controllers/row/ExternalRequest.ts +14 -8
  373. package/src/api/controllers/row/internal.ts +23 -22
  374. package/src/api/controllers/row/staticFormula.ts +5 -2
  375. package/src/api/controllers/row/utils.ts +2 -1
  376. package/src/api/controllers/static/index.ts +6 -10
  377. package/src/api/routes/index.ts +4 -3
  378. package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +0 -0
  379. package/src/api/routes/tests/{application.spec.js → application.spec.ts} +40 -7
  380. package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -6
  381. package/src/api/routes/tests/cloud.spec.ts +66 -0
  382. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  383. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  384. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  385. package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +23 -15
  386. package/src/api/routes/tests/plugin.spec.ts +179 -0
  387. package/src/api/routes/tests/routing.spec.js +0 -1
  388. package/src/api/routes/tests/row.spec.js +4 -2
  389. package/src/api/routes/tests/static.spec.js +2 -17
  390. package/src/api/routes/tests/table.spec.js +8 -2
  391. package/src/api/routes/tests/user.spec.js +86 -0
  392. package/src/api/routes/tests/utilities/index.ts +2 -2
  393. package/src/automations/automationUtils.ts +24 -0
  394. package/src/automations/tests/bash.spec.js +34 -0
  395. package/src/automations/tests/discord.spec.js +27 -0
  396. package/src/automations/tests/executeQuery.spec.js +49 -0
  397. package/src/automations/tests/executeScript.spec.js +48 -0
  398. package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
  399. package/src/automations/tests/serverLog.spec.js +22 -0
  400. package/src/automations/tests/utilities/index.ts +2 -2
  401. package/src/automations/tests/zapier.spec.js +27 -0
  402. package/src/automations/unitTests/automationUtils.spec.ts +65 -0
  403. package/src/environment.ts +6 -2
  404. package/src/integrations/index.ts +1 -5
  405. package/src/migrations/functions/backfill/global/configs.ts +5 -4
  406. package/src/sdk/app/backups/imports.ts +3 -7
  407. package/src/tests/jestSetup.ts +4 -1
  408. package/src/tests/utilities/TestConfiguration.ts +9 -0
  409. package/src/threads/automation.ts +2 -25
  410. package/src/utilities/fileSystem/app.ts +86 -0
  411. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  412. package/src/utilities/fileSystem/filesystem.ts +170 -0
  413. package/src/utilities/fileSystem/index.ts +5 -348
  414. package/src/utilities/fileSystem/plugin.ts +65 -0
  415. package/src/utilities/fileSystem/template.ts +36 -0
  416. package/src/utilities/index.ts +1 -45
  417. package/src/utilities/rowProcessor/index.ts +17 -8
  418. package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
  419. package/tsconfig.build.json +2 -0
  420. package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
  421. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  422. package/dist/api/routes/tests/utilities/index.js +0 -131
  423. package/dist/automations/tests/utilities/index.js +0 -81
  424. package/dist/tests/utilities/TestConfiguration.js +0 -562
  425. package/dist/tests/utilities/controllers.js +0 -40
  426. package/dist/tests/utilities/structures.js +0 -168
  427. package/dist/utilities/plugins.js +0 -26
  428. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  429. package/src/utilities/plugins.ts +0 -22
@@ -24,14 +24,13 @@ const datasource_bb_default_1 = require("../../db/defaultData/datasource_bb_defa
24
24
  const workerRequests_1 = require("../../utilities/workerRequests");
25
25
  const utilities_1 = require("../../utilities");
26
26
  const redis_1 = require("../../utilities/redis");
27
- const clientLibrary_1 = require("../../utilities/fileSystem/clientLibrary");
27
+ const fileSystem_2 = require("../../utilities/fileSystem");
28
28
  const utils_2 = require("../../automations/utils");
29
29
  const logging_1 = require("../../automations/logging");
30
30
  const rows_1 = require("../../utilities/usageQuota/rows");
31
31
  const pro_1 = require("@budibase/pro");
32
32
  const types_1 = require("@budibase/types");
33
33
  const layouts_1 = require("../../constants/layouts");
34
- const plugins_1 = require("../../utilities/plugins");
35
34
  const sdk_1 = __importDefault(require("../../sdk"));
36
35
  // utility function, need to do away with this
37
36
  function getLayouts() {
@@ -164,25 +163,25 @@ function fetchAppDefinition(ctx) {
164
163
  }
165
164
  exports.fetchAppDefinition = fetchAppDefinition;
166
165
  function fetchAppPackage(ctx) {
167
- var _a;
168
166
  return __awaiter(this, void 0, void 0, function* () {
169
167
  const db = backend_core_1.context.getAppDB();
170
168
  let application = yield db.get(utils_1.DocumentType.APP_METADATA);
171
169
  const layouts = yield getLayouts();
172
170
  let screens = yield getScreens();
173
171
  // Enrich plugin URLs
174
- application.usedPlugins = (0, plugins_1.enrichPluginURLs)(application.usedPlugins);
172
+ application.usedPlugins = backend_core_1.objectStore.enrichPluginURLs(application.usedPlugins);
175
173
  // Only filter screens if the user is not a builder
176
- if (!(((_a = ctx.user) === null || _a === void 0 ? void 0 : _a.builder) && ctx.user.builder.global)) {
174
+ if (!(ctx.user.builder && ctx.user.builder.global)) {
177
175
  const userRoleId = getUserRoleId(ctx);
178
176
  const accessController = new backend_core_1.roles.AccessController();
179
177
  screens = yield accessController.checkScreensAccess(screens, userRoleId);
180
178
  }
179
+ const clientLibPath = backend_core_1.objectStore.clientLibraryUrl(ctx.params.appId, application.version);
181
180
  ctx.body = {
182
181
  application,
183
182
  screens,
184
183
  layouts,
185
- clientLibPath: (0, utilities_1.clientLibraryPath)(ctx.params.appId, application.version),
184
+ clientLibPath,
186
185
  };
187
186
  });
188
187
  }
@@ -325,7 +324,7 @@ function appPostCreate(ctx, app) {
325
324
  if (err.code && err.code === backend_core_1.errors.codes.USAGE_LIMIT_EXCEEDED) {
326
325
  // this import resulted in row usage exceeding the quota
327
326
  // delete the app
328
- // skip pre- and post-steps as no rows have been added to quotas yet
327
+ // skip pre and post-steps as no rows have been added to quotas yet
329
328
  ctx.params.appId = app.appId;
330
329
  yield destroyApp(ctx);
331
330
  }
@@ -375,8 +374,8 @@ function updateClient(ctx) {
375
374
  const currentVersion = application.version;
376
375
  // Update client library and manifest
377
376
  if (!environment_1.default.isTest()) {
378
- yield (0, clientLibrary_1.backupClientLibrary)(ctx.params.appId);
379
- yield (0, clientLibrary_1.updateClientLibrary)(ctx.params.appId);
377
+ yield (0, fileSystem_2.backupClientLibrary)(ctx.params.appId);
378
+ yield (0, fileSystem_2.updateClientLibrary)(ctx.params.appId);
380
379
  }
381
380
  // Update versions in app package
382
381
  const updatedToVersion = package_json_1.default.version;
@@ -401,7 +400,7 @@ function revertClient(ctx) {
401
400
  }
402
401
  // Update client library and manifest
403
402
  if (!environment_1.default.isTest()) {
404
- yield (0, clientLibrary_1.revertClientLibrary)(ctx.params.appId);
403
+ yield (0, fileSystem_2.revertClientLibrary)(ctx.params.appId);
405
404
  }
406
405
  // Update versions in app package
407
406
  const currentVersion = application.version;
@@ -95,11 +95,15 @@ function importApps(ctx) {
95
95
  if (beenImported || !ctx.request.files || !ctx.request.files.importFile) {
96
96
  ctx.throw(400, "Import file is required and environment must be fresh to import apps.");
97
97
  }
98
- if (ctx.request.files.importFile.type !== "application/gzip") {
98
+ const file = ctx.request.files.importFile;
99
+ if (Array.isArray(file)) {
100
+ ctx.throw(400, "Single file is required");
101
+ }
102
+ if (file.type !== "application/gzip") {
99
103
  ctx.throw(400, "Import file must be a gzipped tarball.");
100
104
  }
101
105
  // initially get all the app databases out of the tarball
102
- const tmpPath = sdk_1.default.backups.untarFile(ctx.request.files.importFile);
106
+ const tmpPath = sdk_1.default.backups.untarFile(file);
103
107
  const globalDbImport = sdk_1.default.backups.getGlobalDBFile(tmpPath);
104
108
  const appNames = sdk_1.default.backups.getListOfAppsInMulti(tmpPath);
105
109
  const globalDb = backend_core_1.tenancy.getGlobalDB();
@@ -18,15 +18,15 @@ const backend_core_1 = require("@budibase/backend-core");
18
18
  const types_1 = require("@budibase/types");
19
19
  const environment_1 = __importDefault(require("../../../environment"));
20
20
  const websocket_1 = require("../../../websocket");
21
- const backend_core_2 = require("@budibase/backend-core");
22
21
  const pro_1 = require("@budibase/pro");
23
22
  function getPlugins(type) {
24
23
  return __awaiter(this, void 0, void 0, function* () {
25
24
  const db = backend_core_1.tenancy.getGlobalDB();
26
- const response = yield db.allDocs(backend_core_2.db.getPluginParams(null, {
25
+ const response = yield db.allDocs(backend_core_1.db.getPluginParams(null, {
27
26
  include_docs: true,
28
27
  }));
29
- const plugins = response.rows.map((row) => row.doc);
28
+ let plugins = response.rows.map((row) => row.doc);
29
+ plugins = backend_core_1.objectStore.enrichPluginURLs(plugins);
30
30
  if (type) {
31
31
  return plugins.filter((plugin) => { var _a; return ((_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.type) === type; });
32
32
  }
@@ -92,7 +92,7 @@ function create(ctx) {
92
92
  if (!environment_1.default.SELF_HOSTED && ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.schema) === null || _a === void 0 ? void 0 : _a.type) !== types_1.PluginType.COMPONENT) {
93
93
  throw new Error("Only component plugins are supported outside of self-host");
94
94
  }
95
- const doc = yield pro_1.plugins.storePlugin(metadata, directory, source);
95
+ const doc = yield pro_1.sdk.plugins.storePlugin(metadata, directory, source);
96
96
  websocket_1.ClientAppSocket.emit("plugins-update", { name, hash: doc.hash });
97
97
  ctx.body = {
98
98
  message: "Plugin uploaded successfully",
@@ -117,7 +117,7 @@ function destroy(ctx) {
117
117
  return __awaiter(this, void 0, void 0, function* () {
118
118
  const { pluginId } = ctx.params;
119
119
  try {
120
- yield pro_1.plugins.deletePlugin(pluginId);
120
+ yield pro_1.sdk.plugins.deletePlugin(pluginId);
121
121
  ctx.body = { message: `Plugin ${ctx.params.pluginId} deleted.` };
122
122
  }
123
123
  catch (err) {
@@ -135,7 +135,7 @@ function processUploadedPlugin(plugin, source) {
135
135
  if (!environment_1.default.SELF_HOSTED && ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.schema) === null || _a === void 0 ? void 0 : _a.type) !== types_1.PluginType.COMPONENT) {
136
136
  throw new Error("Only component plugins are supported outside of self-host");
137
137
  }
138
- const doc = yield pro_1.plugins.storePlugin(metadata, directory, source);
138
+ const doc = yield pro_1.sdk.plugins.storePlugin(metadata, directory, source);
139
139
  websocket_1.ClientAppSocket.emit("plugin-update", { name: doc.name, hash: doc.hash });
140
140
  return doc;
141
141
  });
@@ -27,25 +27,31 @@ const utils_2 = require("./utils");
27
27
  const constants_1 = require("../../../constants");
28
28
  const utils_3 = require("../../../integrations/utils");
29
29
  const string_templates_1 = require("@budibase/string-templates");
30
- // @ts-ignore
31
30
  const fp_1 = require("lodash/fp");
32
31
  const rowProcessor_1 = require("../../../utilities/rowProcessor");
33
32
  const backend_core_1 = require("@budibase/backend-core");
33
+ const utils_4 = require("./utils");
34
34
  function buildFilters(id, filters, table) {
35
35
  const primary = table.primary;
36
36
  // if passed in array need to copy for shifting etc
37
37
  let idCopy = (0, fp_1.cloneDeep)(id);
38
38
  if (filters) {
39
39
  // need to map over the filters and make sure the _id field isn't present
40
- for (let filter of Object.values(filters)) {
41
- if (filter._id && primary) {
42
- const parts = (0, utils_1.breakRowIdField)(filter._id);
43
- for (let field of primary) {
44
- filter[field] = parts.shift();
40
+ let prefix = 1;
41
+ for (let operator of Object.values(filters)) {
42
+ for (let field of Object.keys(operator || {})) {
43
+ if ((0, utils_4.removeKeyNumbering)(field) === "_id") {
44
+ if (primary) {
45
+ const parts = (0, utils_1.breakRowIdField)(operator[field]);
46
+ for (let field of primary) {
47
+ operator[`${prefix}:${field}`] = parts.shift();
48
+ }
49
+ prefix++;
50
+ }
51
+ // make sure this field doesn't exist on any filter
52
+ delete operator[field];
45
53
  }
46
54
  }
47
- // make sure this field doesn't exist on any filter
48
- delete filter._id;
49
55
  }
50
56
  }
51
57
  // there is no id, just use the user provided filters
@@ -52,12 +52,12 @@ const utils_1 = require("../../../db/utils");
52
52
  const userController = __importStar(require("../user"));
53
53
  const rowProcessor_1 = require("../../../utilities/rowProcessor");
54
54
  const constants_1 = require("../../../constants");
55
- const utils_2 = require("./utils");
55
+ const utils = __importStar(require("./utils"));
56
56
  const internalSearch_1 = require("./internalSearch");
57
57
  const global_1 = require("../../../utilities/global");
58
58
  const inMemoryViews = __importStar(require("../../../db/inMemoryView"));
59
59
  const environment_1 = __importDefault(require("../../../environment"));
60
- const utils_3 = require("../view/utils");
60
+ const utils_2 = require("../view/utils");
61
61
  const fp_1 = require("lodash/fp");
62
62
  const backend_core_1 = require("@budibase/backend-core");
63
63
  const staticFormula_1 = require("./staticFormula");
@@ -70,9 +70,9 @@ const CALCULATION_TYPES = {
70
70
  };
71
71
  function getView(db, viewName) {
72
72
  return __awaiter(this, void 0, void 0, function* () {
73
- let mainGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromDesignDoc : utils_3.getFromMemoryDoc;
74
- let secondaryGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromMemoryDoc : utils_3.getFromDesignDoc;
75
- let migration = environment_1.default.SELF_HOSTED ? utils_3.migrateToDesignView : utils_3.migrateToInMemoryView;
73
+ let mainGetter = environment_1.default.SELF_HOSTED ? utils_2.getFromDesignDoc : utils_2.getFromMemoryDoc;
74
+ let secondaryGetter = environment_1.default.SELF_HOSTED ? utils_2.getFromMemoryDoc : utils_2.getFromDesignDoc;
75
+ let migration = environment_1.default.SELF_HOSTED ? utils_2.migrateToDesignView : utils_2.migrateToInMemoryView;
76
76
  let viewInfo, migrate = false;
77
77
  try {
78
78
  viewInfo = yield mainGetter(db, viewName);
@@ -121,7 +121,7 @@ function patch(ctx) {
121
121
  let oldRow;
122
122
  try {
123
123
  let dbTable = yield db.get(tableId);
124
- oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield (0, utils_2.findRow)(ctx, tableId, inputs._id));
124
+ oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield utils.findRow(ctx, tableId, inputs._id));
125
125
  }
126
126
  catch (err) {
127
127
  if (isUserTable) {
@@ -145,7 +145,7 @@ function patch(ctx) {
145
145
  }
146
146
  // this returns the table and row incase they have been updated
147
147
  let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, combinedRow);
148
- const validateResult = yield (0, utils_2.validate)({
148
+ const validateResult = yield utils.validate({
149
149
  row,
150
150
  table,
151
151
  });
@@ -185,7 +185,7 @@ function save(ctx) {
185
185
  // this returns the table and row incase they have been updated
186
186
  const dbTable = yield db.get(inputs.tableId);
187
187
  let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, inputs);
188
- const validateResult = yield (0, utils_2.validate)({
188
+ const validateResult = yield utils.validate({
189
189
  row,
190
190
  table,
191
191
  });
@@ -274,7 +274,7 @@ function find(ctx) {
274
274
  return __awaiter(this, void 0, void 0, function* () {
275
275
  const db = backend_core_1.db.getDB(ctx.appId);
276
276
  const table = yield db.get(ctx.params.tableId);
277
- let row = yield (0, utils_2.findRow)(ctx, ctx.params.tableId, ctx.params.rowId);
277
+ let row = yield utils.findRow(ctx, ctx.params.tableId, ctx.params.rowId);
278
278
  row = yield (0, rowProcessor_1.outputProcessing)(table, row);
279
279
  return row;
280
280
  });
@@ -386,7 +386,7 @@ function search(ctx) {
386
386
  exports.search = search;
387
387
  function validate(ctx) {
388
388
  return __awaiter(this, void 0, void 0, function* () {
389
- return (0, utils_2.validate)({
389
+ return utils.validate({
390
390
  tableId: ctx.params.tableId,
391
391
  row: ctx.request.body,
392
392
  });
@@ -436,7 +436,7 @@ function fetchEnrichedRow(ctx) {
436
436
  // need table to work out where links go in row
437
437
  let [table, row] = yield Promise.all([
438
438
  db.get(tableId),
439
- (0, utils_2.findRow)(ctx, tableId, rowId),
439
+ utils.findRow(ctx, tableId, rowId),
440
440
  ]);
441
441
  // get the link docs
442
442
  const linkVals = (yield linkRows.getLinkDocuments({
@@ -153,7 +153,7 @@ function finaliseRow(table, row, { oldTable, updateFormula } = {
153
153
  enrichedRow = yield (0, rowProcessor_1.processFormulas)(table, enrichedRow, { dynamic: false });
154
154
  // this updates the related formulas in other rows based on the relations to this row
155
155
  if (updateFormula) {
156
- yield exports.updateRelatedFormula(table, enrichedRow);
156
+ yield updateRelatedFormula(table, enrichedRow);
157
157
  }
158
158
  return { row: enrichedRow, table };
159
159
  });
@@ -10,17 +10,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.getSignedUploadURL = exports.serveClientLibrary = exports.serveBuilderPreview = exports.serveApp = exports.deleteObjects = exports.uploadFile = exports.serveBuilder = exports.toggleBetaUiFeature = void 0;
13
- const plugins_1 = require("../../../utilities/plugins");
14
13
  require("svelte/register");
15
14
  const send = require("koa-send");
16
15
  const { resolve, join } = require("../../../utilities/centralPath");
17
16
  const uuid = require("uuid");
18
- const { ObjectStoreBuckets } = require("../../../constants");
17
+ const constants_1 = require("../../../constants");
19
18
  const { processString } = require("@budibase/string-templates");
20
19
  const { loadHandlebarsFile, NODE_MODULES_PATH, TOP_LEVEL_PATH, } = require("../../../utilities/fileSystem");
21
20
  const env = require("../../../environment");
22
- const { clientLibraryPath } = require("../../../utilities");
23
- const { attachmentsRelativeURL } = require("../../../utilities");
24
21
  const { DocumentType } = require("../../../db/utils");
25
22
  const { context, objectStore, utils } = require("@budibase/backend-core");
26
23
  const AWS = require("aws-sdk");
@@ -38,7 +35,7 @@ function prepareUpload({ s3Key, bucket, metadata, file }) {
38
35
  return {
39
36
  size: file.size,
40
37
  name: file.name,
41
- url: attachmentsRelativeURL(response.Key),
38
+ url: objectStore.getAppFileUrl(s3Key),
42
39
  extension: [...file.name.split(".")].pop(),
43
40
  key: response.Key,
44
41
  };
@@ -85,8 +82,8 @@ const uploadFile = function (ctx) {
85
82
  const processedFileName = `${uuid.v4()}.${fileExtension}`;
86
83
  return prepareUpload({
87
84
  file,
88
- s3Key: `${ctx.appId}/attachments/${processedFileName}`,
89
- bucket: ObjectStoreBuckets.APPS,
85
+ s3Key: `${context.getProdAppId()}/attachments/${processedFileName}`,
86
+ bucket: constants_1.ObjectStoreBuckets.APPS,
90
87
  });
91
88
  }));
92
89
  ctx.body = yield Promise.all(uploads);
@@ -95,7 +92,7 @@ const uploadFile = function (ctx) {
95
92
  exports.uploadFile = uploadFile;
96
93
  const deleteObjects = function (ctx) {
97
94
  return __awaiter(this, void 0, void 0, function* () {
98
- ctx.body = yield objectStore.deleteFiles(ObjectStoreBuckets.APPS, ctx.request.body.keys);
95
+ ctx.body = yield objectStore.deleteFiles(constants_1.ObjectStoreBuckets.APPS, ctx.request.body.keys);
99
96
  });
100
97
  };
101
98
  exports.deleteObjects = deleteObjects;
@@ -106,13 +103,13 @@ const serveApp = function (ctx) {
106
103
  let appId = context.getAppId();
107
104
  if (!env.isJest()) {
108
105
  const App = require("./templates/BudibaseApp.svelte").default;
109
- const plugins = (0, plugins_1.enrichPluginURLs)(appInfo.usedPlugins);
106
+ const plugins = objectStore.enrichPluginURLs(appInfo.usedPlugins);
110
107
  const { head, html, css } = App.render({
111
108
  metaImage: "https://res.cloudinary.com/daog6scxm/image/upload/v1666109324/meta-images/budibase-meta-image_uukc1m.png",
112
109
  title: appInfo.name,
113
110
  production: env.isProd(),
114
111
  appId,
115
- clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
112
+ clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
116
113
  usedPlugins: plugins,
117
114
  });
118
115
  const appHbs = loadHandlebarsFile(`${__dirname}/templates/app.hbs`);
@@ -138,7 +135,7 @@ const serveBuilderPreview = function (ctx) {
138
135
  let appId = context.getAppId();
139
136
  const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`);
140
137
  ctx.body = yield processString(previewHbs, {
141
- clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
138
+ clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
142
139
  });
143
140
  }
144
141
  else {
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.stringSplit = exports.substituteLoopStep = exports.getError = exports.cleanUpRow = exports.cleanInputValues = void 0;
15
+ exports.typecastForLooping = exports.stringSplit = exports.substituteLoopStep = exports.getError = exports.cleanUpRow = exports.cleanInputValues = void 0;
16
16
  const string_templates_1 = require("@budibase/string-templates");
17
17
  const sdk_1 = __importDefault(require("../sdk"));
18
+ const automations_1 = require("../definitions/automations");
18
19
  /**
19
20
  * When values are input to the system generally they will be of type string as this is required for template strings.
20
21
  * This can generate some odd scenarios as the Schema of the automation requires a number but the builder might supply
@@ -132,3 +133,27 @@ function stringSplit(value) {
132
133
  return value;
133
134
  }
134
135
  exports.stringSplit = stringSplit;
136
+ function typecastForLooping(loopStep, input) {
137
+ if (!input || !input.binding) {
138
+ return null;
139
+ }
140
+ try {
141
+ switch (loopStep.inputs.option) {
142
+ case automations_1.LoopStepType.ARRAY:
143
+ if (typeof input.binding === "string") {
144
+ return JSON.parse(input.binding);
145
+ }
146
+ break;
147
+ case automations_1.LoopStepType.STRING:
148
+ if (Array.isArray(input.binding)) {
149
+ return input.binding.join(",");
150
+ }
151
+ break;
152
+ }
153
+ }
154
+ catch (err) {
155
+ throw new Error("Unable to cast to correct type");
156
+ }
157
+ return input.binding;
158
+ }
159
+ exports.typecastForLooping = typecastForLooping;
@@ -69,7 +69,6 @@ const environment = {
69
69
  // flags
70
70
  ALLOW_DEV_AUTOMATIONS: process.env.ALLOW_DEV_AUTOMATIONS,
71
71
  DISABLE_THREADING: process.env.DISABLE_THREADING,
72
- DISABLE_DEVELOPER_LICENSE: process.env.DISABLE_DEVELOPER_LICENSE,
73
72
  DISABLE_AUTOMATION_LOGS: process.env.DISABLE_AUTOMATION_LOGS,
74
73
  MULTI_TENANCY: process.env.MULTI_TENANCY,
75
74
  ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
@@ -101,11 +100,16 @@ if (isDev() && module.exports.DISABLE_THREADING == null) {
101
100
  environment._set("DISABLE_THREADING", "1");
102
101
  }
103
102
  // clean up any environment variable edge cases
104
- for (let [key, value] of Object.entries(module.exports)) {
103
+ for (let [key, value] of Object.entries(environment)) {
105
104
  // handle the edge case of "0" to disable an environment variable
106
105
  if (value === "0") {
107
106
  // @ts-ignore
108
107
  environment[key] = 0;
109
108
  }
109
+ // handle the edge case of "false" to disable an environment variable
110
+ if (value === "false") {
111
+ // @ts-ignore
112
+ environment[key] = 0;
113
+ }
110
114
  }
111
115
  module.exports = environment;
@@ -95,7 +95,6 @@ function getDefinitions() {
95
95
  }
96
96
  exports.getDefinitions = getDefinitions;
97
97
  function getIntegration(integration) {
98
- var _a;
99
98
  return __awaiter(this, void 0, void 0, function* () {
100
99
  if (INTEGRATIONS[integration]) {
101
100
  return INTEGRATIONS[integration];
@@ -105,7 +104,7 @@ function getIntegration(integration) {
105
104
  for (let plugin of plugins) {
106
105
  if (plugin.name === integration) {
107
106
  // need to use commonJS require due to its dynamic runtime nature
108
- const retrieved = yield (0, fileSystem_1.getDatasourcePlugin)(plugin.name, plugin.jsUrl, (_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.hash);
107
+ const retrieved = yield (0, fileSystem_1.getDatasourcePlugin)(plugin);
109
108
  if (retrieved.integration) {
110
109
  return retrieved.integration;
111
110
  }
@@ -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.2",
4
+ "version": "2.2.3",
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.2",
47
- "@budibase/client": "^2.2.2",
48
- "@budibase/pro": "2.2.2",
49
- "@budibase/string-templates": "^2.2.2",
50
- "@budibase/types": "^2.2.2",
46
+ "@budibase/backend-core": "^2.2.3",
47
+ "@budibase/client": "^2.2.3",
48
+ "@budibase/pro": "2.2.3",
49
+ "@budibase/string-templates": "^2.2.3",
50
+ "@budibase/types": "^2.2.3",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -130,13 +130,15 @@
130
130
  "@types/ioredis": "4.28.10",
131
131
  "@types/jest": "27.5.1",
132
132
  "@types/koa": "2.13.4",
133
- "@types/koa__router": "8.0.11",
133
+ "@types/koa__router": "8.0.8",
134
134
  "@types/lodash": "4.14.180",
135
135
  "@types/node": "14.18.20",
136
136
  "@types/node-fetch": "2.6.1",
137
137
  "@types/oracledb": "5.2.2",
138
138
  "@types/pouchdb": "6.4.0",
139
139
  "@types/redis": "4.0.11",
140
+ "@types/server-destroy": "1.0.1",
141
+ "@types/tar": "6.1.3",
140
142
  "@typescript-eslint/parser": "5.45.0",
141
143
  "apidoc": "0.50.4",
142
144
  "babel-jest": "27.5.1",
@@ -56,18 +56,14 @@ function updateAttachmentColumns(prodAppId, db) {
56
56
  continue;
57
57
  }
58
58
  row[column] = row[column].map((attachment) => {
59
- // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv
60
- const urlParts = attachment.url.split("/");
61
- // drop the first empty element
62
- urlParts.shift();
63
- // get the prefix
64
- const prefix = urlParts.shift();
59
+ // Key looks like: appId/attachments/file.csv
60
+ const urlParts = attachment.key.split("/");
65
61
  // remove the app ID
66
62
  urlParts.shift();
67
63
  // add new app ID
68
64
  urlParts.unshift(prodAppId);
69
65
  const key = urlParts.join("/");
70
- return Object.assign(Object.assign({}, attachment), { key, url: `/${prefix}/${key}` });
66
+ return Object.assign(Object.assign({}, attachment), { key, url: "" });
71
67
  });
72
68
  }
73
69
  }
@@ -47,7 +47,6 @@ const triggerInfo_1 = require("../automations/triggerInfo");
47
47
  const constants_1 = require("../constants");
48
48
  const logging_1 = require("../automations/logging");
49
49
  const types_1 = require("@budibase/types");
50
- const automations_1 = require("../definitions/automations");
51
50
  const backend_core_1 = require("@budibase/backend-core");
52
51
  const string_templates_1 = require("@budibase/string-templates");
53
52
  const fp_1 = require("lodash/fp");
@@ -56,31 +55,8 @@ const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId;
56
55
  const LOOP_STEP_ID = actions.ACTION_DEFINITIONS.LOOP.stepId;
57
56
  const CRON_STEP_ID = triggerInfo_1.definitions.CRON.stepId;
58
57
  const STOPPED_STATUS = { success: true, status: types_1.AutomationStatus.STOPPED };
59
- function typecastForLooping(loopStep, input) {
60
- if (!input || !input.binding) {
61
- return null;
62
- }
63
- try {
64
- switch (loopStep.inputs.option) {
65
- case automations_1.LoopStepType.ARRAY:
66
- if (typeof input.binding === "string") {
67
- return JSON.parse(input.binding);
68
- }
69
- break;
70
- case automations_1.LoopStepType.STRING:
71
- if (Array.isArray(input.binding)) {
72
- return input.binding.join(",");
73
- }
74
- break;
75
- }
76
- }
77
- catch (err) {
78
- throw new Error("Unable to cast to correct type");
79
- }
80
- return input.binding;
81
- }
82
58
  function getLoopIterations(loopStep, input) {
83
- const binding = typecastForLooping(loopStep, input);
59
+ const binding = automationUtils.typecastForLooping(loopStep, input);
84
60
  if (!loopStep || !binding) {
85
61
  return 1;
86
62
  }
@@ -269,7 +245,7 @@ class Orchestrator {
269
245
  let newInput = yield (0, string_templates_1.processObject)(loopStep.inputs, (0, fp_1.cloneDeep)(this._context));
270
246
  let tempOutput = { items: loopSteps, iterations: iterationCount };
271
247
  try {
272
- newInput.binding = typecastForLooping(loopStep, newInput);
248
+ newInput.binding = automationUtils.typecastForLooping(loopStep, newInput);
273
249
  }
274
250
  catch (err) {
275
251
  this.updateContextAndOutput(loopStepNumber, step, tempOutput, {