@budibase/server 2.2.12-alpha.5 → 2.2.13

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 (464) 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.d930bfc5.js → index.ef02c146.js} +369 -372
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +5094 -5122
  7. package/coverage/coverage-final.json +265 -268
  8. package/coverage/lcov-report/index.html +215 -215
  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 +70 -52
  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 +24 -24
  86. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +77 -59
  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 +69 -51
  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 +7320 -7367
  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/table/utils.js +2 -1
  356. package/dist/api/controllers/view/index.js +6 -5
  357. package/dist/api/controllers/view/viewBuilder.js +8 -2
  358. package/dist/api/routes/application.js +0 -3
  359. package/dist/api/routes/deploy.js +2 -1
  360. package/dist/api/routes/public/applications.js +0 -37
  361. package/dist/api/routes/public/middleware/mapper.js +0 -3
  362. package/dist/api/routes/tests/utilities/TestFunctions.js +167 -0
  363. package/dist/api/routes/tests/utilities/index.js +131 -0
  364. package/dist/automations/automationUtils.js +1 -26
  365. package/dist/automations/tests/utilities/index.js +81 -0
  366. package/dist/environment.js +1 -5
  367. package/dist/integrations/googlesheets.js +1 -1
  368. package/dist/integrations/index.js +2 -1
  369. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  370. package/dist/package.json +7 -9
  371. package/dist/sdk/app/backups/imports.js +6 -2
  372. package/dist/tests/utilities/TestConfiguration.js +562 -0
  373. package/dist/tests/utilities/controllers.js +40 -0
  374. package/dist/tests/utilities/structures.js +168 -0
  375. package/dist/threads/automation.js +28 -4
  376. package/dist/tsconfig.build.tsbuildinfo +1 -1
  377. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  378. package/dist/utilities/fileSystem/index.js +342 -18
  379. package/dist/utilities/index.js +44 -1
  380. package/dist/utilities/plugins.js +26 -0
  381. package/dist/utilities/rowProcessor/index.js +4 -12
  382. package/package.json +8 -10
  383. package/scripts/dev/manage.js +16 -0
  384. package/specs/openapi.json +0 -84
  385. package/specs/openapi.yaml +0 -53
  386. package/specs/resources/application.js +0 -19
  387. package/src/api/controllers/application.ts +36 -61
  388. package/src/api/controllers/auth.ts +2 -2
  389. package/src/api/controllers/cloud.ts +6 -10
  390. package/src/api/controllers/deploy/Deployment.ts +0 -1
  391. package/src/api/controllers/deploy/index.ts +58 -40
  392. package/src/api/controllers/plugin/index.ts +9 -14
  393. package/src/api/controllers/public/applications.ts +0 -17
  394. package/src/api/controllers/row/ExternalRequest.ts +1 -0
  395. package/src/api/controllers/row/internal.ts +23 -24
  396. package/src/api/controllers/row/staticFormula.ts +2 -5
  397. package/src/api/controllers/row/utils.ts +1 -2
  398. package/src/api/controllers/static/index.ts +10 -6
  399. package/src/api/controllers/table/utils.ts +7 -1
  400. package/src/api/controllers/view/index.ts +11 -5
  401. package/src/api/controllers/view/viewBuilder.ts +14 -8
  402. package/src/api/routes/application.ts +0 -11
  403. package/src/api/routes/deploy.ts +1 -0
  404. package/src/api/routes/index.ts +3 -4
  405. package/src/api/routes/public/applications.ts +0 -44
  406. package/src/api/routes/public/middleware/mapper.ts +0 -4
  407. package/src/api/routes/tests/__snapshots__/{datasource.spec.ts.snap → datasource.spec.js.snap} +0 -0
  408. package/src/api/routes/tests/{application.spec.ts → application.spec.js} +18 -94
  409. package/src/api/routes/tests/{backup.spec.ts → backup.spec.js} +6 -17
  410. package/src/api/routes/tests/{datasource.spec.ts → datasource.spec.js} +15 -23
  411. package/src/api/routes/tests/deployment.spec.ts +25 -0
  412. package/src/api/routes/tests/permissions.spec.js +1 -1
  413. package/src/api/routes/tests/routing.spec.js +2 -1
  414. package/src/api/routes/tests/row.spec.js +2 -4
  415. package/src/api/routes/tests/static.spec.js +17 -2
  416. package/src/api/routes/tests/table.spec.js +2 -8
  417. package/src/api/routes/tests/user.spec.js +0 -86
  418. package/src/api/routes/tests/utilities/index.ts +2 -2
  419. package/src/api/routes/tests/webhook.spec.js +1 -1
  420. package/src/automations/automationUtils.ts +0 -24
  421. package/src/automations/tests/utilities/index.ts +2 -2
  422. package/src/automations/unitTests/automationUtils.spec.js +17 -0
  423. package/src/definitions/openapi.ts +0 -10
  424. package/src/environment.ts +1 -5
  425. package/src/integrations/googlesheets.ts +1 -1
  426. package/src/integrations/index.ts +5 -1
  427. package/src/migrations/functions/backfill/global/configs.ts +4 -5
  428. package/src/sdk/app/backups/imports.ts +6 -2
  429. package/src/sdk/tests/attachments.spec.ts +4 -1
  430. package/src/tests/jestSetup.ts +1 -4
  431. package/src/tests/utilities/TestConfiguration.ts +4 -23
  432. package/src/threads/automation.ts +27 -4
  433. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  434. package/src/utilities/fileSystem/index.ts +348 -5
  435. package/src/utilities/index.ts +45 -1
  436. package/src/utilities/plugins.ts +22 -0
  437. package/src/utilities/rowProcessor/index.ts +8 -17
  438. package/tsconfig.build.json +0 -2
  439. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  440. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -595
  441. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -280
  442. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  443. package/dist/utilities/fileSystem/app.js +0 -97
  444. package/dist/utilities/fileSystem/filesystem.js +0 -182
  445. package/dist/utilities/fileSystem/plugin.js +0 -63
  446. package/dist/utilities/fileSystem/template.js +0 -44
  447. package/src/api/routes/tests/cloud.spec.ts +0 -65
  448. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  449. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  450. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  451. package/src/api/routes/tests/plugin.spec.ts +0 -179
  452. package/src/automations/tests/bash.spec.js +0 -34
  453. package/src/automations/tests/discord.spec.js +0 -27
  454. package/src/automations/tests/executeQuery.spec.js +0 -49
  455. package/src/automations/tests/executeScript.spec.js +0 -48
  456. package/src/automations/tests/sendSmtpEmail.spec.js +0 -71
  457. package/src/automations/tests/serverLog.spec.js +0 -22
  458. package/src/automations/tests/zapier.spec.js +0 -27
  459. package/src/automations/unitTests/automationUtils.spec.ts +0 -65
  460. package/src/utilities/fileSystem/app.ts +0 -86
  461. package/src/utilities/fileSystem/filesystem.ts +0 -170
  462. package/src/utilities/fileSystem/plugin.ts +0 -65
  463. package/src/utilities/fileSystem/template.ts +0 -36
  464. package/src/utilities/rowProcessor/tests/utils.spec.ts +0 -57
@@ -28,6 +28,11 @@ const GROUP_PROPERTY = {
28
28
  type: "string",
29
29
  },
30
30
  };
31
+ const GROUP_PROPERTY_MULTI = {
32
+ group: {
33
+ type: "array",
34
+ },
35
+ };
31
36
  const FIELD_PROPERTY = {
32
37
  field: {
33
38
  type: "string",
@@ -102,14 +107,15 @@ function parseFilterExpression(filters) {
102
107
  function parseEmitExpression(field, groupBy) {
103
108
  return `emit(doc["${groupBy || "_id"}"], doc["${field}"]);`;
104
109
  }
105
- module.exports = function ({ field, tableId, groupBy, filters = [], calculation, }) {
110
+ module.exports = function ({ field, tableId, groupBy, filters = [], calculation }, groupByMulti) {
106
111
  // first filter can't have a conjunction
107
112
  if (filters && filters.length > 0 && filters[0].conjunction) {
108
113
  delete filters[0].conjunction;
109
114
  }
110
115
  let schema = null, statFilter = null;
116
+ let groupBySchema = groupByMulti ? GROUP_PROPERTY_MULTI : GROUP_PROPERTY;
111
117
  if (calculation) {
112
- schema = Object.assign(Object.assign({}, (groupBy ? GROUP_PROPERTY : FIELD_PROPERTY)), SCHEMA_MAP[calculation]);
118
+ schema = Object.assign(Object.assign({}, (groupBy ? groupBySchema : FIELD_PROPERTY)), SCHEMA_MAP[calculation]);
113
119
  if (!filters.find(filter => filter.key === field && filter.condition === CONDITIONS.NOT_EMPTY)) {
114
120
  statFilter = parseFilterExpression([
115
121
  { key: field, condition: CONDITIONS.NOT_EMPTY },
@@ -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;
@@ -85,43 +85,6 @@ write.push(new Endpoint_1.default("put", "/applications/:appId", applications_1.
85
85
  * $ref: '#/components/examples/application'
86
86
  */
87
87
  write.push(new Endpoint_1.default("delete", "/applications/:appId", applications_1.default.destroy));
88
- /**
89
- * @openapi
90
- * /applications/{appId}/unpublish:
91
- * post:
92
- * operationId: unpublish
93
- * summary: Unpublish an application
94
- * tags:
95
- * - applications
96
- * parameters:
97
- * - $ref: '#/components/parameters/appIdUrl'
98
- * responses:
99
- * 204:
100
- * description: The app was published successfully.
101
- */
102
- write.push(new Endpoint_1.default("post", "/applications/:appId/unpublish", applications_1.default.unpublish));
103
- /**
104
- * @openapi
105
- * /applications/{appId}/publish:
106
- * post:
107
- * operationId: publish
108
- * summary: Unpublish an application
109
- * tags:
110
- * - applications
111
- * parameters:
112
- * - $ref: '#/components/parameters/appIdUrl'
113
- * responses:
114
- * 200:
115
- * description: Returns the deployment object.
116
- * content:
117
- * application/json:
118
- * schema:
119
- * $ref: '#/components/schemas/deploymentOutput'
120
- * examples:
121
- * deployment:
122
- * $ref: '#/components/examples/deploymentOutput'
123
- */
124
- write.push(new Endpoint_1.default("post", "/applications/:appId/publish", applications_1.default.publish));
125
88
  /**
126
89
  * @openapi
127
90
  * /applications/{appId}:
@@ -66,9 +66,6 @@ function processQueries(ctx) {
66
66
  }
67
67
  }
68
68
  exports.default = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
69
- if (!ctx.body) {
70
- return yield next();
71
- }
72
69
  let urlParts = ctx.url.split("/");
73
70
  urlParts = urlParts.slice(4, urlParts.length);
74
71
  let body = {};
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.runInProd = exports.testAutomation = exports.getDB = exports.checkPermissionsEndpoint = exports.checkBuilderEndpoint = exports.createRequest = exports.clearAllAutomations = exports.clearAllApps = exports.getAllTableRows = void 0;
36
+ const rowController = __importStar(require("../../../controllers/row"));
37
+ const appController = __importStar(require("../../../controllers/application"));
38
+ const utils_1 = require("../../../../db/utils");
39
+ const backend_core_1 = require("@budibase/backend-core");
40
+ const structures_1 = require("../../../../tests/utilities/structures");
41
+ const env = __importStar(require("../../../../environment"));
42
+ class Request {
43
+ constructor(appId, params) {
44
+ this.appId = appId;
45
+ this.params = params;
46
+ this.request = {};
47
+ }
48
+ }
49
+ function runRequest(appId, controlFunc, request) {
50
+ return backend_core_1.context.doInAppContext(appId, () => __awaiter(this, void 0, void 0, function* () {
51
+ return controlFunc(request);
52
+ }));
53
+ }
54
+ const getAllTableRows = (config) => __awaiter(void 0, void 0, void 0, function* () {
55
+ const req = new Request(config.appId, { tableId: config.table._id });
56
+ yield runRequest(config.appId, rowController.fetch, req);
57
+ return req.body;
58
+ });
59
+ exports.getAllTableRows = getAllTableRows;
60
+ const clearAllApps = (tenantId = structures_1.TENANT_ID) => __awaiter(void 0, void 0, void 0, function* () {
61
+ yield backend_core_1.tenancy.doInTenant(tenantId, () => __awaiter(void 0, void 0, void 0, function* () {
62
+ const req = { query: { status: utils_1.AppStatus.DEV }, user: { tenantId } };
63
+ yield appController.fetch(req);
64
+ const apps = req.body;
65
+ if (!apps || apps.length <= 0) {
66
+ return;
67
+ }
68
+ for (let app of apps) {
69
+ const { appId } = app;
70
+ const req = new Request(null, { appId });
71
+ yield runRequest(appId, appController.destroy, req);
72
+ }
73
+ }));
74
+ });
75
+ exports.clearAllApps = clearAllApps;
76
+ const clearAllAutomations = (config) => __awaiter(void 0, void 0, void 0, function* () {
77
+ const automations = yield config.getAllAutomations();
78
+ for (let auto of automations) {
79
+ yield backend_core_1.context.doInAppContext(config.appId, () => __awaiter(void 0, void 0, void 0, function* () {
80
+ yield config.deleteAutomation(auto);
81
+ }));
82
+ }
83
+ });
84
+ exports.clearAllAutomations = clearAllAutomations;
85
+ const createRequest = (request, method, url, body) => {
86
+ let req;
87
+ if (method === "POST")
88
+ req = request.post(url).send(body);
89
+ else if (method === "GET")
90
+ req = request.get(url);
91
+ else if (method === "DELETE")
92
+ req = request.delete(url);
93
+ else if (method === "PATCH")
94
+ req = request.patch(url).send(body);
95
+ else if (method === "PUT")
96
+ req = request.put(url).send(body);
97
+ return req;
98
+ };
99
+ exports.createRequest = createRequest;
100
+ const checkBuilderEndpoint = ({ config, method, url, body, }) => __awaiter(void 0, void 0, void 0, function* () {
101
+ const headers = yield config.login({
102
+ userId: "us_fail",
103
+ builder: false,
104
+ prodApp: true,
105
+ });
106
+ yield exports
107
+ .createRequest(config.request, method, url, body)
108
+ .set(headers)
109
+ .expect(403);
110
+ });
111
+ exports.checkBuilderEndpoint = checkBuilderEndpoint;
112
+ const checkPermissionsEndpoint = ({ config, method, url, body, passRole, failRole, }) => __awaiter(void 0, void 0, void 0, function* () {
113
+ const passHeader = yield config.login({
114
+ roleId: passRole,
115
+ prodApp: true,
116
+ });
117
+ yield exports
118
+ .createRequest(config.request, method, url, body)
119
+ .set(passHeader)
120
+ .expect(200);
121
+ let failHeader;
122
+ if (failRole === backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC) {
123
+ failHeader = config.publicHeaders({ prodApp: true });
124
+ }
125
+ else {
126
+ failHeader = yield config.login({
127
+ roleId: failRole,
128
+ builder: false,
129
+ prodApp: true,
130
+ });
131
+ }
132
+ yield exports
133
+ .createRequest(config.request, method, url, body)
134
+ .set(failHeader)
135
+ .expect(403);
136
+ });
137
+ exports.checkPermissionsEndpoint = checkPermissionsEndpoint;
138
+ const getDB = () => {
139
+ return backend_core_1.context.getAppDB();
140
+ };
141
+ exports.getDB = getDB;
142
+ const testAutomation = (config, automation) => __awaiter(void 0, void 0, void 0, function* () {
143
+ return runRequest(automation.appId, () => __awaiter(void 0, void 0, void 0, function* () {
144
+ return yield config.request
145
+ .post(`/api/automations/${automation._id}/test`)
146
+ .send({
147
+ row: {
148
+ name: "Test",
149
+ description: "TEST",
150
+ },
151
+ })
152
+ .set(config.defaultHeaders())
153
+ .expect("Content-Type", /json/)
154
+ .expect(200);
155
+ }));
156
+ });
157
+ exports.testAutomation = testAutomation;
158
+ const runInProd = (func) => __awaiter(void 0, void 0, void 0, function* () {
159
+ const nodeEnv = env.NODE_ENV;
160
+ const workerId = env.JEST_WORKER_ID;
161
+ env._set("NODE_ENV", "PRODUCTION");
162
+ env._set("JEST_WORKER_ID", null);
163
+ yield func();
164
+ env._set("NODE_ENV", nodeEnv);
165
+ env._set("JEST_WORKER_ID", workerId);
166
+ });
167
+ exports.runInProd = runInProd;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.switchToSelfHosted = exports.getConfig = exports.getRequest = exports.afterAll = exports.beforeAll = exports.delay = exports.structures = void 0;
39
+ const TestConfiguration_1 = __importDefault(require("../../../../tests/utilities/TestConfiguration"));
40
+ const environment_1 = __importDefault(require("../../../../environment"));
41
+ exports.structures = __importStar(require("../../../../tests/utilities/structures"));
42
+ function user() {
43
+ return {
44
+ _id: "user",
45
+ _rev: "rev",
46
+ createdAt: Date.now(),
47
+ email: "test@test.com",
48
+ roles: {},
49
+ tenantId: "default",
50
+ status: "active",
51
+ };
52
+ }
53
+ jest.mock("../../../../utilities/workerRequests", () => ({
54
+ getGlobalUsers: jest.fn(() => {
55
+ return {
56
+ _id: "us_uuid1",
57
+ };
58
+ }),
59
+ getGlobalSelf: jest.fn(() => {
60
+ return {
61
+ _id: "us_uuid1",
62
+ };
63
+ }),
64
+ allGlobalUsers: jest.fn(() => {
65
+ return [user()];
66
+ }),
67
+ readGlobalUser: jest.fn(() => {
68
+ return user();
69
+ }),
70
+ saveGlobalUser: jest.fn(() => {
71
+ return { _id: "user", _rev: "rev" };
72
+ }),
73
+ deleteGlobalUser: jest.fn(() => {
74
+ return { message: "deleted user" };
75
+ }),
76
+ removeAppFromUserRoles: jest.fn(),
77
+ }));
78
+ function delay(ms) {
79
+ return new Promise(resolve => setTimeout(resolve, ms));
80
+ }
81
+ exports.delay = delay;
82
+ let request, config;
83
+ function beforeAll() {
84
+ config = new TestConfiguration_1.default();
85
+ request = config.getRequest();
86
+ }
87
+ exports.beforeAll = beforeAll;
88
+ function afterAll() {
89
+ if (config) {
90
+ config.end();
91
+ }
92
+ // clear app files
93
+ request = null;
94
+ config = null;
95
+ }
96
+ exports.afterAll = afterAll;
97
+ function getRequest() {
98
+ if (!request) {
99
+ exports.beforeAll();
100
+ }
101
+ return request;
102
+ }
103
+ exports.getRequest = getRequest;
104
+ function getConfig() {
105
+ if (!config) {
106
+ exports.beforeAll();
107
+ }
108
+ return config;
109
+ }
110
+ exports.getConfig = getConfig;
111
+ function switchToSelfHosted(func) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ // self hosted stops any attempts to Dynamo
114
+ environment_1.default._set("NODE_ENV", "production");
115
+ environment_1.default._set("SELF_HOSTED", true);
116
+ let error;
117
+ try {
118
+ yield func();
119
+ }
120
+ catch (err) {
121
+ error = err;
122
+ }
123
+ environment_1.default._set("NODE_ENV", "jest");
124
+ environment_1.default._set("SELF_HOSTED", false);
125
+ // don't throw error until after reset
126
+ if (error) {
127
+ throw error;
128
+ }
129
+ });
130
+ }
131
+ exports.switchToSelfHosted = switchToSelfHosted;
@@ -12,10 +12,9 @@ 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.typecastForLooping = exports.stringSplit = exports.substituteLoopStep = exports.getError = exports.cleanUpRow = exports.cleanInputValues = void 0;
15
+ 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");
19
18
  /**
20
19
  * When values are input to the system generally they will be of type string as this is required for template strings.
21
20
  * This can generate some odd scenarios as the Schema of the automation requires a number but the builder might supply
@@ -133,27 +132,3 @@ function stringSplit(value) {
133
132
  return value;
134
133
  }
135
134
  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;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.actions = exports.apiKey = exports.runStep = exports.runInProd = exports.afterAll = exports.getConfig = void 0;
16
+ const TestConfiguration_1 = __importDefault(require("../../../tests/utilities/TestConfiguration"));
17
+ const backend_core_1 = require("@budibase/backend-core");
18
+ const actions_1 = require("../../actions");
19
+ const index_1 = __importDefault(require("../../../events/index"));
20
+ const environment_1 = __importDefault(require("../../../environment"));
21
+ let config;
22
+ function getConfig() {
23
+ if (!config) {
24
+ config = new TestConfiguration_1.default(false);
25
+ }
26
+ return config;
27
+ }
28
+ exports.getConfig = getConfig;
29
+ function afterAll() {
30
+ config.end();
31
+ }
32
+ exports.afterAll = afterAll;
33
+ function runInProd(fn) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ environment_1.default._set("NODE_ENV", "production");
36
+ let error;
37
+ try {
38
+ yield fn();
39
+ }
40
+ catch (err) {
41
+ error = err;
42
+ }
43
+ environment_1.default._set("NODE_ENV", "jest");
44
+ if (error) {
45
+ throw error;
46
+ }
47
+ });
48
+ }
49
+ exports.runInProd = runInProd;
50
+ function runStep(stepId, inputs) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ function run() {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ let step = yield (0, actions_1.getAction)(stepId);
55
+ expect(step).toBeDefined();
56
+ if (!step) {
57
+ throw new Error("No step found");
58
+ }
59
+ return step({
60
+ context: {},
61
+ inputs,
62
+ appId: config ? config.getAppId() : null,
63
+ // don't really need an API key, mocked out usage quota, not being tested here
64
+ apiKey: exports.apiKey,
65
+ emitter: index_1.default,
66
+ });
67
+ });
68
+ }
69
+ if (config === null || config === void 0 ? void 0 : config.appId) {
70
+ return backend_core_1.context.doInContext(config === null || config === void 0 ? void 0 : config.appId, () => __awaiter(this, void 0, void 0, function* () {
71
+ return run();
72
+ }));
73
+ }
74
+ else {
75
+ return run();
76
+ }
77
+ });
78
+ }
79
+ exports.runStep = runStep;
80
+ exports.apiKey = "test";
81
+ exports.actions = actions_1.ACTION_DEFINITIONS;
@@ -69,6 +69,7 @@ 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,
72
73
  DISABLE_AUTOMATION_LOGS: process.env.DISABLE_AUTOMATION_LOGS,
73
74
  MULTI_TENANCY: process.env.MULTI_TENANCY,
74
75
  ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
@@ -106,10 +107,5 @@ for (let [key, value] of Object.entries(environment)) {
106
107
  // @ts-ignore
107
108
  environment[key] = 0;
108
109
  }
109
- // handle the edge case of "false" to disable an environment variable
110
- if (value === "false") {
111
- // @ts-ignore
112
- environment[key] = 0;
113
- }
114
110
  }
115
111
  module.exports = environment;
@@ -242,7 +242,7 @@ class GoogleSheetsIntegration {
242
242
  return __awaiter(this, void 0, void 0, function* () {
243
243
  try {
244
244
  yield this.connect();
245
- return yield this.client.addSheet({ title: name, headerValues: ["test"] });
245
+ return yield this.client.addSheet({ title: name });
246
246
  }
247
247
  catch (err) {
248
248
  console.error("Error creating new table in google sheets", err);
@@ -95,6 +95,7 @@ function getDefinitions() {
95
95
  }
96
96
  exports.getDefinitions = getDefinitions;
97
97
  function getIntegration(integration) {
98
+ var _a;
98
99
  return __awaiter(this, void 0, void 0, function* () {
99
100
  if (INTEGRATIONS[integration]) {
100
101
  return INTEGRATIONS[integration];
@@ -104,7 +105,7 @@ function getIntegration(integration) {
104
105
  for (let plugin of plugins) {
105
106
  if (plugin.name === integration) {
106
107
  // need to use commonJS require due to its dynamic runtime nature
107
- const retrieved = yield (0, fileSystem_1.getDatasourcePlugin)(plugin);
108
+ const retrieved = yield (0, fileSystem_1.getDatasourcePlugin)(plugin.name, plugin.jsUrl, (_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.hash);
108
109
  if (retrieved.integration) {
109
110
  return retrieved.integration;
110
111
  }
@@ -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(types_1.ConfigType.GOOGLE, timestamp);
32
+ yield backend_core_1.events.auth.SSOCreated("google", timestamp);
33
33
  if (config.config.activated) {
34
- yield backend_core_1.events.auth.SSOActivated(types_1.ConfigType.GOOGLE, timestamp);
34
+ yield backend_core_1.events.auth.SSOActivated("google", timestamp);
35
35
  }
36
36
  }
37
37
  if ((0, types_1.isOIDCConfig)(config)) {
38
- yield backend_core_1.events.auth.SSOCreated(types_1.ConfigType.OIDC, timestamp);
38
+ yield backend_core_1.events.auth.SSOCreated("oidc", timestamp);
39
39
  if (config.config.configs[0].activated) {
40
- yield backend_core_1.events.auth.SSOActivated(types_1.ConfigType.OIDC, timestamp);
40
+ yield backend_core_1.events.auth.SSOActivated("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.12-alpha.4",
4
+ "version": "2.2.12",
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.12-alpha.4",
47
- "@budibase/client": "2.2.12-alpha.4",
48
- "@budibase/pro": "2.2.12-alpha.4",
49
- "@budibase/string-templates": "2.2.12-alpha.4",
50
- "@budibase/types": "2.2.12-alpha.4",
46
+ "@budibase/backend-core": "^2.2.12",
47
+ "@budibase/client": "^2.2.12",
48
+ "@budibase/pro": "2.2.12",
49
+ "@budibase/string-templates": "^2.2.12",
50
+ "@budibase/types": "^2.2.12",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -130,15 +130,13 @@
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.8",
133
+ "@types/koa__router": "8.0.11",
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",
142
140
  "@typescript-eslint/parser": "5.45.0",
143
141
  "apidoc": "0.50.4",
144
142
  "babel-jest": "27.5.1",
@@ -27,13 +27,17 @@ const uuid = require("uuid/v4");
27
27
  const tar = require("tar");
28
28
  function rewriteAttachmentUrl(appId, attachment) {
29
29
  // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv
30
- const urlParts = attachment.key.split("/");
30
+ const urlParts = attachment.url.split("/");
31
+ // drop the first empty element
32
+ urlParts.shift();
33
+ // get the prefix
34
+ const prefix = urlParts.shift();
31
35
  // remove the app ID
32
36
  urlParts.shift();
33
37
  // add new app ID
34
38
  urlParts.unshift(appId);
35
39
  const key = urlParts.join("/");
36
- return Object.assign(Object.assign({}, attachment), { key, url: "" });
40
+ return Object.assign(Object.assign({}, attachment), { key, url: `/${prefix}/${key}` });
37
41
  }
38
42
  function updateAttachmentColumns(prodAppId, db) {
39
43
  return __awaiter(this, void 0, void 0, function* () {