@budibase/server 2.2.12-alpha.1 → 2.2.12

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 (460) hide show
  1. package/__mocks__/aws-sdk.ts +0 -19
  2. package/__mocks__/node-fetch.ts +0 -78
  3. package/builder/assets/{index.fa480d5b.css → index.9cb087df.css} +2 -2
  4. package/builder/assets/{index.5e79c3b5.js → index.c0e1038a.js} +364 -367
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +5018 -5052
  7. package/coverage/coverage-final.json +265 -268
  8. package/coverage/lcov-report/index.html +206 -206
  9. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +7 -7
  10. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  11. package/coverage/lcov-report/src/api/controllers/application.ts.html +183 -258
  12. package/coverage/lcov-report/src/api/controllers/auth.ts.html +11 -11
  13. package/coverage/lcov-report/src/api/controllers/automation.ts.html +51 -51
  14. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  15. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +79 -91
  16. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  17. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +30 -30
  18. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -17
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.html +19 -19
  20. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +195 -141
  21. package/coverage/lcov-report/src/api/controllers/dev.ts.html +18 -18
  22. package/coverage/lcov-report/src/api/controllers/index.html +51 -51
  23. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  24. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  25. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  26. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  27. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  28. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +19 -19
  29. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +63 -63
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  31. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +135 -150
  32. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +55 -55
  33. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  34. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  35. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  36. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +16 -67
  37. package/coverage/lcov-report/src/api/controllers/public/index.html +15 -15
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  45. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +6 -6
  46. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +10 -10
  47. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +9 -9
  48. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +11 -11
  49. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +6 -6
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +8 -8
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +8 -8
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +10 -10
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/index.html +19 -19
  60. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +60 -60
  61. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  62. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  63. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  64. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +15 -12
  65. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +20 -20
  66. package/coverage/lcov-report/src/api/controllers/row/index.html +1 -1
  67. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +14 -14
  68. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +52 -55
  69. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +9 -9
  70. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +12 -21
  71. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +14 -17
  72. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  73. package/coverage/lcov-report/src/api/controllers/script.ts.html +18 -18
  74. package/coverage/lcov-report/src/api/controllers/static/index.html +11 -11
  75. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +44 -32
  76. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +10 -10
  77. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +14 -14
  78. package/coverage/lcov-report/src/api/controllers/table/index.html +19 -19
  79. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +14 -14
  80. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +17 -17
  81. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +51 -51
  82. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  83. package/coverage/lcov-report/src/api/controllers/user.ts.html +119 -119
  84. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +4 -4
  85. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +49 -49
  87. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
  88. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +33 -33
  89. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +14 -14
  90. package/coverage/lcov-report/src/api/index.html +1 -1
  91. package/coverage/lcov-report/src/api/index.ts.html +33 -33
  92. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  93. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  94. package/coverage/lcov-report/src/api/routes/application.ts.html +11 -44
  95. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  96. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  97. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  100. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  101. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -8
  102. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  103. package/coverage/lcov-report/src/api/routes/index.html +7 -7
  104. package/coverage/lcov-report/src/api/routes/index.ts.html +37 -40
  105. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  106. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  107. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  108. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  109. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  110. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  111. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +14 -146
  112. package/coverage/lcov-report/src/api/routes/public/index.html +7 -7
  113. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  114. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  115. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +16 -28
  116. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  117. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  118. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  119. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  121. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  122. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  123. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  125. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  126. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  127. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  128. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  129. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  130. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  131. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  132. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +15 -15
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +24 -24
  136. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  137. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  139. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  140. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  141. package/coverage/lcov-report/src/app.ts.html +32 -32
  142. package/coverage/lcov-report/src/automations/actions.ts.html +25 -25
  143. package/coverage/lcov-report/src/automations/automationUtils.ts.html +19 -91
  144. package/coverage/lcov-report/src/automations/bullboard.ts.html +11 -11
  145. package/coverage/lcov-report/src/automations/index.html +19 -19
  146. package/coverage/lcov-report/src/automations/index.ts.html +13 -13
  147. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  148. package/coverage/lcov-report/src/automations/logging/index.ts.html +11 -11
  149. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  150. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  151. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  152. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  153. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  154. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  155. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  156. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  157. package/coverage/lcov-report/src/automations/steps/index.html +83 -83
  158. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  159. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  160. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +14 -14
  161. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +17 -17
  162. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  163. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +18 -18
  164. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  165. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  166. package/coverage/lcov-report/src/automations/steps/utils.ts.html +16 -16
  167. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.html +5 -5
  169. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +26 -26
  170. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  171. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  173. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  178. package/coverage/lcov-report/src/automations/triggers.ts.html +21 -21
  179. package/coverage/lcov-report/src/automations/utils.ts.html +56 -56
  180. package/coverage/lcov-report/src/constants/index.html +1 -1
  181. package/coverage/lcov-report/src/constants/index.ts.html +92 -92
  182. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  183. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  184. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +23 -23
  185. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  186. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  187. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  188. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  189. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  190. package/coverage/lcov-report/src/db/dynamoClient.ts.html +16 -16
  191. package/coverage/lcov-report/src/db/inMemoryView.ts.html +5 -5
  192. package/coverage/lcov-report/src/db/index.html +19 -19
  193. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  194. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +8 -8
  195. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  196. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  197. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
  198. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +12 -12
  199. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  200. package/coverage/lcov-report/src/db/utils.ts.html +80 -80
  201. package/coverage/lcov-report/src/definitions/automations.ts.html +4 -4
  202. package/coverage/lcov-report/src/definitions/datasource.ts.html +4 -4
  203. package/coverage/lcov-report/src/definitions/index.html +1 -1
  204. package/coverage/lcov-report/src/environment.ts.html +28 -40
  205. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  206. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  207. package/coverage/lcov-report/src/events/index.html +1 -1
  208. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  209. package/coverage/lcov-report/src/events/utils.ts.html +3 -3
  210. package/coverage/lcov-report/src/index.html +25 -25
  211. package/coverage/lcov-report/src/index.ts.html +1 -1
  212. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  213. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  214. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  215. package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
  216. package/coverage/lcov-report/src/integrations/base/sql.ts.html +14 -14
  217. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  218. package/coverage/lcov-report/src/integrations/base/utils.ts.html +3 -3
  219. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  220. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  221. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  222. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  223. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +12 -12
  224. package/coverage/lcov-report/src/integrations/index.html +5 -5
  225. package/coverage/lcov-report/src/integrations/index.ts.html +47 -35
  226. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  227. package/coverage/lcov-report/src/integrations/mongodb.ts.html +5 -5
  228. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  229. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  230. package/coverage/lcov-report/src/integrations/postgres.ts.html +42 -42
  231. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  232. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +13 -13
  233. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  234. package/coverage/lcov-report/src/integrations/rest.ts.html +16 -16
  235. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  236. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  237. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  238. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  239. package/coverage/lcov-report/src/integrations/utils.ts.html +36 -36
  240. package/coverage/lcov-report/src/middleware/appInfo.ts.html +7 -7
  241. package/coverage/lcov-report/src/middleware/authorized.ts.html +28 -28
  242. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  243. package/coverage/lcov-report/src/middleware/currentapp.ts.html +39 -39
  244. package/coverage/lcov-report/src/middleware/index.html +1 -1
  245. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  246. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  247. package/coverage/lcov-report/src/middleware/resourceId.ts.html +22 -22
  248. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  249. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  250. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +10 -13
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  264. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  265. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  267. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  268. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  270. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  275. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  276. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  277. package/coverage/lcov-report/src/migrations/index.html +1 -1
  278. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  279. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  280. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  281. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  282. package/coverage/lcov-report/src/sdk/app/applications/index.html +15 -15
  283. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  284. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  285. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  286. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  288. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +6 -6
  289. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  290. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  291. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +53 -41
  292. package/coverage/lcov-report/src/sdk/app/backups/index.html +28 -28
  293. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  294. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  295. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  296. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  298. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  299. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  300. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  301. package/coverage/lcov-report/src/sdk/index.html +1 -1
  302. package/coverage/lcov-report/src/sdk/index.ts.html +9 -9
  303. package/coverage/lcov-report/src/sdk/users/index.html +5 -5
  304. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  305. package/coverage/lcov-report/src/sdk/users/utils.ts.html +34 -34
  306. package/coverage/lcov-report/src/startup.ts.html +42 -42
  307. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +125 -182
  308. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  309. package/coverage/lcov-report/src/tests/utilities/index.html +15 -15
  310. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  311. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +30 -30
  312. package/coverage/lcov-report/src/threads/automation.ts.html +103 -34
  313. package/coverage/lcov-report/src/threads/index.html +19 -19
  314. package/coverage/lcov-report/src/threads/index.ts.html +25 -25
  315. package/coverage/lcov-report/src/threads/query.ts.html +71 -71
  316. package/coverage/lcov-report/src/threads/utils.ts.html +18 -18
  317. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  318. package/coverage/lcov-report/src/utilities/centralPath.ts.html +4 -4
  319. package/coverage/lcov-report/src/utilities/csvParser.ts.html +8 -8
  320. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
  321. package/coverage/lcov-report/src/utilities/fileSystem/index.html +19 -79
  322. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1049 -20
  323. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  324. package/coverage/lcov-report/src/utilities/global.ts.html +43 -43
  325. package/coverage/lcov-report/src/utilities/index.html +63 -48
  326. package/coverage/lcov-report/src/utilities/index.ts.html +168 -36
  327. package/coverage/lcov-report/src/utilities/plugins.ts.html +151 -0
  328. package/coverage/lcov-report/src/utilities/redis.ts.html +32 -32
  329. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  330. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  331. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +28 -28
  332. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +33 -60
  333. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  334. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  335. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +32 -32
  336. package/coverage/lcov-report/src/utilities/security.ts.html +6 -6
  337. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  339. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  340. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  341. package/coverage/lcov-report/src/utilities/users.ts.html +6 -6
  342. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +56 -56
  343. package/coverage/lcov-report/src/watch.ts.html +9 -9
  344. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  345. package/coverage/lcov.info +7122 -7189
  346. package/dist/api/controllers/application.js +35 -47
  347. package/dist/api/controllers/cloud.js +2 -6
  348. package/dist/api/controllers/deploy/index.js +60 -43
  349. package/dist/api/controllers/plugin/index.js +6 -6
  350. package/dist/api/controllers/public/applications.js +1 -22
  351. package/dist/api/controllers/row/ExternalRequest.js +1 -0
  352. package/dist/api/controllers/row/internal.js +12 -12
  353. package/dist/api/controllers/row/staticFormula.js +1 -1
  354. package/dist/api/controllers/static/index.js +11 -8
  355. package/dist/api/controllers/view/index.js +2 -2
  356. package/dist/api/routes/application.js +0 -3
  357. package/dist/api/routes/deploy.js +2 -1
  358. package/dist/api/routes/public/applications.js +0 -37
  359. package/dist/api/routes/public/middleware/mapper.js +0 -3
  360. package/dist/api/routes/tests/utilities/TestFunctions.js +167 -0
  361. package/dist/api/routes/tests/utilities/index.js +131 -0
  362. package/dist/automations/automationUtils.js +1 -26
  363. package/dist/automations/tests/utilities/index.js +81 -0
  364. package/dist/environment.js +1 -5
  365. package/dist/integrations/googlesheets.js +1 -1
  366. package/dist/integrations/index.js +2 -1
  367. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  368. package/dist/package.json +6 -8
  369. package/dist/sdk/app/backups/imports.js +6 -2
  370. package/dist/tests/utilities/TestConfiguration.js +562 -0
  371. package/dist/tests/utilities/controllers.js +40 -0
  372. package/dist/tests/utilities/structures.js +168 -0
  373. package/dist/threads/automation.js +28 -4
  374. package/dist/tsconfig.build.tsbuildinfo +1 -1
  375. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  376. package/dist/utilities/fileSystem/index.js +342 -18
  377. package/dist/utilities/index.js +44 -1
  378. package/dist/utilities/plugins.js +26 -0
  379. package/dist/utilities/rowProcessor/index.js +4 -12
  380. package/package.json +7 -9
  381. package/scripts/dev/manage.js +16 -0
  382. package/specs/openapi.json +0 -84
  383. package/specs/openapi.yaml +0 -53
  384. package/specs/resources/application.js +0 -19
  385. package/src/api/controllers/application.ts +36 -61
  386. package/src/api/controllers/auth.ts +2 -2
  387. package/src/api/controllers/cloud.ts +6 -10
  388. package/src/api/controllers/deploy/Deployment.ts +0 -1
  389. package/src/api/controllers/deploy/index.ts +58 -40
  390. package/src/api/controllers/plugin/index.ts +9 -14
  391. package/src/api/controllers/public/applications.ts +0 -17
  392. package/src/api/controllers/row/ExternalRequest.ts +1 -0
  393. package/src/api/controllers/row/internal.ts +23 -24
  394. package/src/api/controllers/row/staticFormula.ts +2 -5
  395. package/src/api/controllers/row/utils.ts +1 -2
  396. package/src/api/controllers/static/index.ts +10 -6
  397. package/src/api/controllers/view/index.ts +2 -2
  398. package/src/api/routes/application.ts +0 -11
  399. package/src/api/routes/deploy.ts +1 -0
  400. package/src/api/routes/index.ts +3 -4
  401. package/src/api/routes/public/applications.ts +0 -44
  402. package/src/api/routes/public/middleware/mapper.ts +0 -4
  403. package/src/api/routes/tests/__snapshots__/{datasource.spec.ts.snap → datasource.spec.js.snap} +0 -0
  404. package/src/api/routes/tests/{application.spec.ts → application.spec.js} +18 -94
  405. package/src/api/routes/tests/{backup.spec.ts → backup.spec.js} +6 -17
  406. package/src/api/routes/tests/{datasource.spec.ts → datasource.spec.js} +15 -23
  407. package/src/api/routes/tests/deployment.spec.ts +25 -0
  408. package/src/api/routes/tests/permissions.spec.js +1 -1
  409. package/src/api/routes/tests/routing.spec.js +2 -1
  410. package/src/api/routes/tests/row.spec.js +2 -4
  411. package/src/api/routes/tests/static.spec.js +17 -2
  412. package/src/api/routes/tests/table.spec.js +2 -8
  413. package/src/api/routes/tests/user.spec.js +0 -86
  414. package/src/api/routes/tests/utilities/index.ts +2 -2
  415. package/src/api/routes/tests/webhook.spec.js +1 -1
  416. package/src/automations/automationUtils.ts +0 -24
  417. package/src/automations/tests/utilities/index.ts +2 -2
  418. package/src/automations/unitTests/automationUtils.spec.js +17 -0
  419. package/src/definitions/openapi.ts +0 -10
  420. package/src/environment.ts +1 -5
  421. package/src/integrations/googlesheets.ts +1 -1
  422. package/src/integrations/index.ts +5 -1
  423. package/src/migrations/functions/backfill/global/configs.ts +4 -5
  424. package/src/sdk/app/backups/imports.ts +6 -2
  425. package/src/sdk/tests/attachments.spec.ts +4 -1
  426. package/src/tests/jestSetup.ts +1 -4
  427. package/src/tests/utilities/TestConfiguration.ts +4 -23
  428. package/src/threads/automation.ts +27 -4
  429. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  430. package/src/utilities/fileSystem/index.ts +348 -5
  431. package/src/utilities/index.ts +45 -1
  432. package/src/utilities/plugins.ts +22 -0
  433. package/src/utilities/rowProcessor/index.ts +8 -17
  434. package/tsconfig.build.json +0 -2
  435. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  436. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -595
  437. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -280
  438. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  439. package/dist/utilities/fileSystem/app.js +0 -97
  440. package/dist/utilities/fileSystem/filesystem.js +0 -182
  441. package/dist/utilities/fileSystem/plugin.js +0 -63
  442. package/dist/utilities/fileSystem/template.js +0 -44
  443. package/src/api/routes/tests/cloud.spec.ts +0 -65
  444. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  445. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  446. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  447. package/src/api/routes/tests/plugin.spec.ts +0 -179
  448. package/src/automations/tests/bash.spec.js +0 -34
  449. package/src/automations/tests/discord.spec.js +0 -27
  450. package/src/automations/tests/executeQuery.spec.js +0 -49
  451. package/src/automations/tests/executeScript.spec.js +0 -48
  452. package/src/automations/tests/sendSmtpEmail.spec.js +0 -71
  453. package/src/automations/tests/serverLog.spec.js +0 -22
  454. package/src/automations/tests/zapier.spec.js +0 -27
  455. package/src/automations/unitTests/automationUtils.spec.ts +0 -65
  456. package/src/utilities/fileSystem/app.ts +0 -86
  457. package/src/utilities/fileSystem/filesystem.ts +0 -170
  458. package/src/utilities/fileSystem/plugin.ts +0 -65
  459. package/src/utilities/fileSystem/template.ts +0 -36
  460. package/src/utilities/rowProcessor/tests/utils.spec.ts +0 -57
@@ -12,7 +12,7 @@ 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.updateAppPackage = exports.sync = exports.unpublish = exports.destroy = exports.revertClient = exports.updateClient = exports.update = exports.create = exports.fetchAppPackage = exports.fetchAppDefinition = exports.fetch = void 0;
15
+ exports.updateAppPackage = exports.sync = exports.destroy = exports.revertClient = exports.updateClient = exports.update = exports.create = exports.fetchAppPackage = exports.fetchAppDefinition = exports.fetch = void 0;
16
16
  const environment_1 = __importDefault(require("../../environment"));
17
17
  const package_json_1 = __importDefault(require("../../../package.json"));
18
18
  const staticViews_1 = require("../../db/views/staticViews");
@@ -24,13 +24,14 @@ 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 fileSystem_2 = require("../../utilities/fileSystem");
27
+ const clientLibrary_1 = require("../../utilities/fileSystem/clientLibrary");
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");
34
35
  const sdk_1 = __importDefault(require("../../sdk"));
35
36
  // utility function, need to do away with this
36
37
  function getLayouts() {
@@ -163,25 +164,25 @@ function fetchAppDefinition(ctx) {
163
164
  }
164
165
  exports.fetchAppDefinition = fetchAppDefinition;
165
166
  function fetchAppPackage(ctx) {
167
+ var _a;
166
168
  return __awaiter(this, void 0, void 0, function* () {
167
169
  const db = backend_core_1.context.getAppDB();
168
170
  let application = yield db.get(utils_1.DocumentType.APP_METADATA);
169
171
  const layouts = yield getLayouts();
170
172
  let screens = yield getScreens();
171
173
  // Enrich plugin URLs
172
- application.usedPlugins = backend_core_1.objectStore.enrichPluginURLs(application.usedPlugins);
174
+ application.usedPlugins = (0, plugins_1.enrichPluginURLs)(application.usedPlugins);
173
175
  // Only filter screens if the user is not a builder
174
- if (!(ctx.user.builder && ctx.user.builder.global)) {
176
+ if (!(((_a = ctx.user) === null || _a === void 0 ? void 0 : _a.builder) && ctx.user.builder.global)) {
175
177
  const userRoleId = getUserRoleId(ctx);
176
178
  const accessController = new backend_core_1.roles.AccessController();
177
179
  screens = yield accessController.checkScreensAccess(screens, userRoleId);
178
180
  }
179
- const clientLibPath = backend_core_1.objectStore.clientLibraryUrl(ctx.params.appId, application.version);
180
181
  ctx.body = {
181
182
  application,
182
183
  screens,
183
184
  layouts,
184
- clientLibPath,
185
+ clientLibPath: (0, utilities_1.clientLibraryPath)(ctx.params.appId, application.version),
185
186
  };
186
187
  });
187
188
  }
@@ -324,7 +325,7 @@ function appPostCreate(ctx, app) {
324
325
  if (err.code && err.code === backend_core_1.errors.codes.USAGE_LIMIT_EXCEEDED) {
325
326
  // this import resulted in row usage exceeding the quota
326
327
  // delete the app
327
- // skip pre and post-steps as no rows have been added to quotas yet
328
+ // skip pre- and post-steps as no rows have been added to quotas yet
328
329
  ctx.params.appId = app.appId;
329
330
  yield destroyApp(ctx);
330
331
  }
@@ -374,8 +375,8 @@ function updateClient(ctx) {
374
375
  const currentVersion = application.version;
375
376
  // Update client library and manifest
376
377
  if (!environment_1.default.isTest()) {
377
- yield (0, fileSystem_2.backupClientLibrary)(ctx.params.appId);
378
- yield (0, fileSystem_2.updateClientLibrary)(ctx.params.appId);
378
+ yield (0, clientLibrary_1.backupClientLibrary)(ctx.params.appId);
379
+ yield (0, clientLibrary_1.updateClientLibrary)(ctx.params.appId);
379
380
  }
380
381
  // Update versions in app package
381
382
  const updatedToVersion = package_json_1.default.version;
@@ -400,7 +401,7 @@ function revertClient(ctx) {
400
401
  }
401
402
  // Update client library and manifest
402
403
  if (!environment_1.default.isTest()) {
403
- yield (0, fileSystem_2.revertClientLibrary)(ctx.params.appId);
404
+ yield (0, clientLibrary_1.revertClientLibrary)(ctx.params.appId);
404
405
  }
405
406
  // Update versions in app package
406
407
  const currentVersion = application.version;
@@ -416,39 +417,39 @@ function revertClient(ctx) {
416
417
  });
417
418
  }
418
419
  exports.revertClient = revertClient;
419
- const unpublishApp = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
420
- let appId = ctx.params.appId;
421
- appId = backend_core_1.db.getProdAppID(appId);
422
- const db = backend_core_1.context.getProdAppDB();
423
- const result = yield db.destroy();
424
- yield backend_core_1.events.app.unpublished({ appId });
425
- // automations only in production
426
- yield (0, utils_2.cleanupAutomations)(appId);
427
- yield backend_core_1.cache.app.invalidateAppMetadata(appId);
428
- return result;
429
- });
430
420
  function destroyApp(ctx) {
431
421
  return __awaiter(this, void 0, void 0, function* () {
432
422
  let appId = ctx.params.appId;
433
- appId = backend_core_1.db.getProdAppID(appId);
434
- const devAppId = backend_core_1.db.getDevAppID(appId);
435
- // check if we need to unpublish first
436
- if (yield backend_core_1.db.dbExists(appId)) {
437
- // app is deployed, run through unpublish flow
423
+ let isUnpublish = ctx.query && ctx.query.unpublish;
424
+ if (isUnpublish) {
425
+ appId = backend_core_1.db.getProdAppID(appId);
426
+ const devAppId = backend_core_1.db.getDevAppID(appId);
427
+ // sync before removing the published app
438
428
  yield sdk_1.default.applications.syncApp(devAppId);
439
- yield unpublishApp(ctx);
440
429
  }
441
- const db = backend_core_1.db.getDB(devAppId);
442
- // standard app deletion flow
430
+ const db = isUnpublish ? backend_core_1.context.getProdAppDB() : backend_core_1.context.getAppDB();
443
431
  const app = yield db.get(utils_1.DocumentType.APP_METADATA);
444
432
  const result = yield db.destroy();
445
- yield pro_1.quotas.removeApp();
446
- yield backend_core_1.events.app.deleted(app);
447
- if (!environment_1.default.isTest()) {
433
+ if (isUnpublish) {
434
+ yield backend_core_1.events.app.unpublished(app);
435
+ }
436
+ else {
437
+ yield pro_1.quotas.removeApp();
438
+ yield backend_core_1.events.app.deleted(app);
439
+ }
440
+ /* istanbul ignore next */
441
+ if (!environment_1.default.isTest() && !isUnpublish) {
448
442
  yield (0, fileSystem_1.deleteApp)(appId);
449
443
  }
450
- yield (0, workerRequests_1.removeAppFromUserRoles)(ctx, appId);
451
- yield backend_core_1.cache.app.invalidateAppMetadata(devAppId);
444
+ // automations only in production
445
+ if (isUnpublish) {
446
+ yield (0, utils_2.cleanupAutomations)(appId);
447
+ }
448
+ // remove app role when the dev app is deleted (no trace of app anymore)
449
+ else {
450
+ yield (0, workerRequests_1.removeAppFromUserRoles)(ctx, appId);
451
+ }
452
+ yield backend_core_1.cache.app.invalidateAppMetadata(appId);
452
453
  return result;
453
454
  });
454
455
  }
@@ -477,19 +478,6 @@ function destroy(ctx) {
477
478
  });
478
479
  }
479
480
  exports.destroy = destroy;
480
- const unpublish = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
481
- const prodAppId = backend_core_1.db.getProdAppID(ctx.params.appId);
482
- const dbExists = yield backend_core_1.db.dbExists(prodAppId);
483
- // check app has been published
484
- if (!dbExists) {
485
- return ctx.throw(400, "App has not been published.");
486
- }
487
- yield preDestroyApp(ctx);
488
- yield unpublishApp(ctx);
489
- yield postDestroyApp(ctx);
490
- ctx.status = 204;
491
- });
492
- exports.unpublish = unpublish;
493
481
  function sync(ctx) {
494
482
  return __awaiter(this, void 0, void 0, function* () {
495
483
  const appId = ctx.params.appId;
@@ -95,15 +95,11 @@ 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
- 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") {
98
+ if (ctx.request.files.importFile.type !== "application/gzip") {
103
99
  ctx.throw(400, "Import file must be a gzipped tarball.");
104
100
  }
105
101
  // initially get all the app databases out of the tarball
106
- const tmpPath = sdk_1.default.backups.untarFile(file);
102
+ const tmpPath = sdk_1.default.backups.untarFile(ctx.request.files.importFile);
107
103
  const globalDbImport = sdk_1.default.backups.getGlobalDBFile(tmpPath);
108
104
  const appNames = sdk_1.default.backups.getListOfAppsInMulti(tmpPath);
109
105
  const globalDb = backend_core_1.tenancy.getGlobalDB();
@@ -12,7 +12,7 @@ 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.publishApp = exports.deploymentProgress = exports.fetchDeployments = void 0;
15
+ exports.deployApp = exports.deploymentProgress = exports.fetchDeployments = void 0;
16
16
  const Deployment_1 = __importDefault(require("./Deployment"));
17
17
  const backend_core_1 = require("@budibase/backend-core");
18
18
  const utils_1 = require("../../../db/utils");
@@ -92,46 +92,8 @@ function initDeployedApp(prodAppId) {
92
92
  });
93
93
  });
94
94
  }
95
- function fetchDeployments(ctx) {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- try {
98
- const db = backend_core_1.context.getAppDB();
99
- const deploymentDoc = yield db.get(utils_1.DocumentType.DEPLOYMENTS);
100
- const { updated, deployments } = yield checkAllDeployments(deploymentDoc);
101
- if (updated) {
102
- yield db.put(deployments);
103
- }
104
- ctx.body = Object.values(deployments.history).reverse();
105
- }
106
- catch (err) {
107
- ctx.body = [];
108
- }
109
- });
110
- }
111
- exports.fetchDeployments = fetchDeployments;
112
- function deploymentProgress(ctx) {
113
- return __awaiter(this, void 0, void 0, function* () {
114
- try {
115
- const db = backend_core_1.context.getAppDB();
116
- const deploymentDoc = yield db.get(utils_1.DocumentType.DEPLOYMENTS);
117
- ctx.body = deploymentDoc[ctx.params.deploymentId];
118
- }
119
- catch (err) {
120
- ctx.throw(500, `Error fetching data for deployment ${ctx.params.deploymentId}`);
121
- }
122
- });
123
- }
124
- exports.deploymentProgress = deploymentProgress;
125
- const publishApp = function (ctx) {
95
+ function deployApp(deployment, userId) {
126
96
  return __awaiter(this, void 0, void 0, function* () {
127
- let deployment = new Deployment_1.default();
128
- console.log("Deployment object created");
129
- deployment.setStatus(DeploymentStatus.PENDING);
130
- console.log("Deployment object set to pending");
131
- deployment = yield storeDeploymentHistory(deployment);
132
- console.log("Stored deployment history");
133
- console.log("Deploying app...");
134
- let app;
135
97
  let replication;
136
98
  try {
137
99
  const appId = backend_core_1.context.getAppId();
@@ -141,7 +103,7 @@ const publishApp = function (ctx) {
141
103
  if (yield pro_1.backups.isEnabled()) {
142
104
  // trigger backup initially
143
105
  yield pro_1.backups.triggerAppBackup(productionAppId, types_1.AppBackupTrigger.PUBLISH, {
144
- createdBy: ctx.user._id,
106
+ createdBy: userId,
145
107
  });
146
108
  }
147
109
  const config = {
@@ -179,7 +141,7 @@ const publishApp = function (ctx) {
179
141
  console.log("Deployed app initialised, setting deployment to successful");
180
142
  deployment.setStatus(DeploymentStatus.SUCCESS);
181
143
  yield storeDeploymentHistory(deployment);
182
- app = appDoc;
144
+ return appDoc;
183
145
  }
184
146
  catch (err) {
185
147
  deployment.setStatus(DeploymentStatus.FAILURE, err.message);
@@ -191,8 +153,63 @@ const publishApp = function (ctx) {
191
153
  yield replication.close();
192
154
  }
193
155
  }
156
+ });
157
+ }
158
+ function fetchDeployments(ctx) {
159
+ return __awaiter(this, void 0, void 0, function* () {
160
+ try {
161
+ const db = backend_core_1.context.getAppDB();
162
+ const deploymentDoc = yield db.get(utils_1.DocumentType.DEPLOYMENTS);
163
+ const { updated, deployments } = yield checkAllDeployments(deploymentDoc);
164
+ if (updated) {
165
+ yield db.put(deployments);
166
+ }
167
+ ctx.body = Object.values(deployments.history).reverse();
168
+ }
169
+ catch (err) {
170
+ ctx.body = [];
171
+ }
172
+ });
173
+ }
174
+ exports.fetchDeployments = fetchDeployments;
175
+ function deploymentProgress(ctx) {
176
+ return __awaiter(this, void 0, void 0, function* () {
177
+ try {
178
+ const db = backend_core_1.context.getAppDB();
179
+ const deploymentDoc = yield db.get(utils_1.DocumentType.DEPLOYMENTS);
180
+ ctx.body = deploymentDoc[ctx.params.deploymentId];
181
+ }
182
+ catch (err) {
183
+ ctx.throw(500, `Error fetching data for deployment ${ctx.params.deploymentId}`);
184
+ }
185
+ });
186
+ }
187
+ exports.deploymentProgress = deploymentProgress;
188
+ const isFirstDeploy = () => __awaiter(void 0, void 0, void 0, function* () {
189
+ try {
190
+ const db = backend_core_1.context.getProdAppDB();
191
+ yield db.get(utils_1.DocumentType.APP_METADATA);
192
+ }
193
+ catch (e) {
194
+ if (e.status === 404) {
195
+ return true;
196
+ }
197
+ throw e;
198
+ }
199
+ return false;
200
+ });
201
+ const _deployApp = function (ctx) {
202
+ return __awaiter(this, void 0, void 0, function* () {
203
+ let deployment = new Deployment_1.default();
204
+ console.log("Deployment object created");
205
+ deployment.setStatus(DeploymentStatus.PENDING);
206
+ console.log("Deployment object set to pending");
207
+ deployment = yield storeDeploymentHistory(deployment);
208
+ console.log("Stored deployment history");
209
+ console.log("Deploying app...");
210
+ let app = yield deployApp(deployment, ctx.user._id);
194
211
  yield backend_core_1.events.app.published(app);
195
212
  ctx.body = deployment;
196
213
  });
197
214
  };
198
- exports.publishApp = publishApp;
215
+ exports.deployApp = _deployApp;
@@ -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");
21
22
  const pro_1 = require("@budibase/pro");
22
23
  function getPlugins(type) {
23
24
  return __awaiter(this, void 0, void 0, function* () {
24
25
  const db = backend_core_1.tenancy.getGlobalDB();
25
- const response = yield db.allDocs(backend_core_1.db.getPluginParams(null, {
26
+ const response = yield db.allDocs(backend_core_2.db.getPluginParams(null, {
26
27
  include_docs: true,
27
28
  }));
28
- let plugins = response.rows.map((row) => row.doc);
29
- plugins = backend_core_1.objectStore.enrichPluginURLs(plugins);
29
+ const plugins = response.rows.map((row) => row.doc);
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.sdk.plugins.storePlugin(metadata, directory, source);
95
+ const doc = yield pro_1.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.sdk.plugins.deletePlugin(pluginId);
120
+ yield pro_1.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.sdk.plugins.storePlugin(metadata, directory, source);
138
+ const doc = yield pro_1.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
  });
@@ -32,11 +32,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
32
32
  });
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.publish = exports.unpublish = exports.destroy = exports.update = exports.read = exports.create = exports.search = void 0;
35
+ exports.destroy = exports.update = exports.read = exports.create = exports.search = void 0;
36
36
  const backend_core_1 = require("@budibase/backend-core");
37
37
  const utils_1 = require("./utils");
38
38
  const controller = __importStar(require("../application"));
39
- const deployController = __importStar(require("../deploy"));
40
39
  function fixAppID(app, params) {
41
40
  if (!params) {
42
41
  return app;
@@ -117,30 +116,10 @@ function destroy(ctx, next) {
117
116
  });
118
117
  }
119
118
  exports.destroy = destroy;
120
- function unpublish(ctx, next) {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- yield backend_core_1.context.doInAppContext(ctx.params.appId, () => __awaiter(this, void 0, void 0, function* () {
123
- yield controller.unpublish(ctx);
124
- yield next();
125
- }));
126
- });
127
- }
128
- exports.unpublish = unpublish;
129
- function publish(ctx, next) {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- yield backend_core_1.context.doInAppContext(ctx.params.appId, () => __awaiter(this, void 0, void 0, function* () {
132
- yield deployController.publishApp(ctx);
133
- yield next();
134
- }));
135
- });
136
- }
137
- exports.publish = publish;
138
119
  exports.default = {
139
120
  create,
140
121
  update,
141
122
  read,
142
123
  destroy,
143
124
  search,
144
- publish,
145
- unpublish,
146
125
  };
@@ -27,6 +27,7 @@ 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
30
31
  const fp_1 = require("lodash/fp");
31
32
  const rowProcessor_1 = require("../../../utilities/rowProcessor");
32
33
  const backend_core_1 = require("@budibase/backend-core");
@@ -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 = __importStar(require("./utils"));
55
+ const utils_2 = 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_2 = require("../view/utils");
60
+ const utils_3 = 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_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;
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;
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 utils.findRow(ctx, tableId, inputs._id));
124
+ oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield (0, utils_2.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 utils.validate({
148
+ const validateResult = yield (0, utils_2.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 utils.validate({
188
+ const validateResult = yield (0, utils_2.validate)({
189
189
  row,
190
190
  table,
191
191
  });
@@ -208,7 +208,7 @@ function save(ctx) {
208
208
  exports.save = save;
209
209
  function fetchView(ctx) {
210
210
  return __awaiter(this, void 0, void 0, function* () {
211
- const viewName = decodeURIComponent(ctx.params.viewName);
211
+ const viewName = ctx.params.viewName;
212
212
  // if this is a table view being looked for just transfer to that
213
213
  if (viewName.startsWith(utils_1.DocumentType.TABLE)) {
214
214
  ctx.params.tableId = viewName;
@@ -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 utils.findRow(ctx, ctx.params.tableId, ctx.params.rowId);
277
+ let row = yield (0, utils_2.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 utils.validate({
389
+ return (0, utils_2.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
- utils.findRow(ctx, tableId, rowId),
439
+ (0, utils_2.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 updateRelatedFormula(table, enrichedRow);
156
+ yield exports.updateRelatedFormula(table, enrichedRow);
157
157
  }
158
158
  return { row: enrichedRow, table };
159
159
  });
@@ -10,14 +10,17 @@ 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");
13
14
  require("svelte/register");
14
15
  const send = require("koa-send");
15
16
  const { resolve, join } = require("../../../utilities/centralPath");
16
17
  const uuid = require("uuid");
17
- const constants_1 = require("../../../constants");
18
+ const { ObjectStoreBuckets } = require("../../../constants");
18
19
  const { processString } = require("@budibase/string-templates");
19
20
  const { loadHandlebarsFile, NODE_MODULES_PATH, TOP_LEVEL_PATH, } = require("../../../utilities/fileSystem");
20
21
  const env = require("../../../environment");
22
+ const { clientLibraryPath } = require("../../../utilities");
23
+ const { attachmentsRelativeURL } = require("../../../utilities");
21
24
  const { DocumentType } = require("../../../db/utils");
22
25
  const { context, objectStore, utils } = require("@budibase/backend-core");
23
26
  const AWS = require("aws-sdk");
@@ -35,7 +38,7 @@ function prepareUpload({ s3Key, bucket, metadata, file }) {
35
38
  return {
36
39
  size: file.size,
37
40
  name: file.name,
38
- url: objectStore.getAppFileUrl(s3Key),
41
+ url: attachmentsRelativeURL(response.Key),
39
42
  extension: [...file.name.split(".")].pop(),
40
43
  key: response.Key,
41
44
  };
@@ -82,8 +85,8 @@ const uploadFile = function (ctx) {
82
85
  const processedFileName = `${uuid.v4()}.${fileExtension}`;
83
86
  return prepareUpload({
84
87
  file,
85
- s3Key: `${context.getProdAppId()}/attachments/${processedFileName}`,
86
- bucket: constants_1.ObjectStoreBuckets.APPS,
88
+ s3Key: `${ctx.appId}/attachments/${processedFileName}`,
89
+ bucket: ObjectStoreBuckets.APPS,
87
90
  });
88
91
  }));
89
92
  ctx.body = yield Promise.all(uploads);
@@ -92,7 +95,7 @@ const uploadFile = function (ctx) {
92
95
  exports.uploadFile = uploadFile;
93
96
  const deleteObjects = function (ctx) {
94
97
  return __awaiter(this, void 0, void 0, function* () {
95
- ctx.body = yield objectStore.deleteFiles(constants_1.ObjectStoreBuckets.APPS, ctx.request.body.keys);
98
+ ctx.body = yield objectStore.deleteFiles(ObjectStoreBuckets.APPS, ctx.request.body.keys);
96
99
  });
97
100
  };
98
101
  exports.deleteObjects = deleteObjects;
@@ -103,13 +106,13 @@ const serveApp = function (ctx) {
103
106
  let appId = context.getAppId();
104
107
  if (!env.isJest()) {
105
108
  const App = require("./templates/BudibaseApp.svelte").default;
106
- const plugins = objectStore.enrichPluginURLs(appInfo.usedPlugins);
109
+ const plugins = (0, plugins_1.enrichPluginURLs)(appInfo.usedPlugins);
107
110
  const { head, html, css } = App.render({
108
111
  metaImage: "https://res.cloudinary.com/daog6scxm/image/upload/v1666109324/meta-images/budibase-meta-image_uukc1m.png",
109
112
  title: appInfo.name,
110
113
  production: env.isProd(),
111
114
  appId,
112
- clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
115
+ clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
113
116
  usedPlugins: plugins,
114
117
  });
115
118
  const appHbs = loadHandlebarsFile(`${__dirname}/templates/app.hbs`);
@@ -135,7 +138,7 @@ const serveBuilderPreview = function (ctx) {
135
138
  let appId = context.getAppId();
136
139
  const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`);
137
140
  ctx.body = yield processString(previewHbs, {
138
- clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
141
+ clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
139
142
  });
140
143
  }
141
144
  else {
@@ -145,7 +145,7 @@ function handleViewEvents(existingView, newView) {
145
145
  function destroy(ctx) {
146
146
  return __awaiter(this, void 0, void 0, function* () {
147
147
  const db = backend_core_1.context.getAppDB();
148
- const viewName = decodeURIComponent(ctx.params.viewName);
148
+ const viewName = decodeURI(ctx.params.viewName);
149
149
  const view = yield (0, utils_1.deleteView)(viewName);
150
150
  const table = yield db.get(view.meta.tableId);
151
151
  delete table.views[viewName];
@@ -157,7 +157,7 @@ function destroy(ctx) {
157
157
  exports.destroy = destroy;
158
158
  function exportView(ctx) {
159
159
  return __awaiter(this, void 0, void 0, function* () {
160
- const viewName = decodeURIComponent(ctx.query.view);
160
+ const viewName = decodeURI(ctx.query.view);
161
161
  const view = yield (0, utils_1.getView)(viewName);
162
162
  const format = ctx.query.format;
163
163
  if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
@@ -27,7 +27,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  const router_1 = __importDefault(require("@koa/router"));
29
29
  const controller = __importStar(require("../controllers/application"));
30
- const deploymentController = __importStar(require("../controllers/deploy"));
31
30
  const authorized_1 = __importDefault(require("../../middleware/authorized"));
32
31
  const backend_core_1 = require("@budibase/backend-core");
33
32
  const validators_1 = require("./utils/validators");
@@ -41,7 +40,5 @@ router
41
40
  .put("/api/applications/:appId", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), (0, validators_1.applicationValidator)({ isCreate: false }), controller.update)
42
41
  .post("/api/applications/:appId/client/update", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.updateClient)
43
42
  .post("/api/applications/:appId/client/revert", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.revertClient)
44
- .post("/api/applications/:appId/publish", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), deploymentController.publishApp)
45
- .post("/api/applications/:appId/unpublish", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.unpublish)
46
43
  .delete("/api/applications/:appId", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.destroy);
47
44
  module.exports = router;
@@ -32,5 +32,6 @@ const backend_core_1 = require("@budibase/backend-core");
32
32
  const router = new router_1.default();
33
33
  router
34
34
  .get("/api/deployments", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.fetchDeployments)
35
- .get("/api/deploy/:deploymentId", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.deploymentProgress);
35
+ .get("/api/deploy/:deploymentId", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.deploymentProgress)
36
+ .post("/api/deploy", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.deployApp);
36
37
  module.exports = router;