@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
@@ -1,182 +0,0 @@
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.deleteFolderFileSystem = exports.findFileRec = exports.extractTarball = exports.createTempFolder = exports.readFileSync = exports.sendTempFile = exports.stringToFileStream = exports.storeTempFile = exports.streamFile = exports.apiFileReturn = exports.loadHandlebarsFile = exports.checkDevelopmentEnvironment = exports.init = exports.TOP_LEVEL_PATH = void 0;
16
- const { budibaseTempDir } = require("../budibaseDir");
17
- const fs = require("fs");
18
- const { join } = require("path");
19
- const uuid = require("uuid/v4");
20
- const env = require("../../environment");
21
- const tar_1 = __importDefault(require("tar"));
22
- exports.TOP_LEVEL_PATH = join(__dirname, "..", "..", "..");
23
- /**
24
- * Upon first startup of instance there may not be everything we need in tmp directory, set it up.
25
- */
26
- const init = () => {
27
- const tempDir = budibaseTempDir();
28
- if (!fs.existsSync(tempDir)) {
29
- // some test cases fire this quickly enough that
30
- // synchronous cases can end up here at the same time
31
- try {
32
- fs.mkdirSync(tempDir);
33
- }
34
- catch (err) {
35
- if (!err || err.code !== "EEXIST") {
36
- throw err;
37
- }
38
- }
39
- }
40
- const clientLibPath = join(budibaseTempDir(), "budibase-client.js");
41
- if (env.isTest() && !fs.existsSync(clientLibPath)) {
42
- fs.copyFileSync(require.resolve("@budibase/client"), clientLibPath);
43
- }
44
- };
45
- exports.init = init;
46
- /**
47
- * Checks if the system is currently in development mode and if it is makes sure
48
- * everything required to function is ready.
49
- */
50
- const checkDevelopmentEnvironment = () => {
51
- if (!env.isDev() || env.isTest()) {
52
- return;
53
- }
54
- if (!fs.existsSync(budibaseTempDir())) {
55
- fs.mkdirSync(budibaseTempDir());
56
- }
57
- let error;
58
- if (!fs.existsSync(join(process.cwd(), ".env"))) {
59
- error = "Must run via yarn once to generate environment.";
60
- }
61
- if (error) {
62
- console.error(error);
63
- process.exit(-1);
64
- }
65
- };
66
- exports.checkDevelopmentEnvironment = checkDevelopmentEnvironment;
67
- /**
68
- * Used to retrieve a handlebars file from the system which will be used as a template.
69
- * This is allowable as the template handlebars files should be static and identical across
70
- * the cluster.
71
- * @param {string} path The path to the handlebars file which is to be loaded.
72
- * @returns {string} The loaded handlebars file as a string - loaded as utf8.
73
- */
74
- const loadHandlebarsFile = (path) => {
75
- return fs.readFileSync(path, "utf8");
76
- };
77
- exports.loadHandlebarsFile = loadHandlebarsFile;
78
- /**
79
- * When return a file from the API need to write the file to the system temporarily so we
80
- * can create a read stream to send.
81
- * @param {string} contents the contents of the file which is to be returned from the API.
82
- * @return {Object} the read stream which can be put into the koa context body.
83
- */
84
- const apiFileReturn = (contents) => {
85
- const path = join(budibaseTempDir(), uuid());
86
- fs.writeFileSync(path, contents);
87
- return fs.createReadStream(path);
88
- };
89
- exports.apiFileReturn = apiFileReturn;
90
- const streamFile = (path) => {
91
- return fs.createReadStream(path);
92
- };
93
- exports.streamFile = streamFile;
94
- /**
95
- * Writes the provided contents to a temporary file, which can be used briefly.
96
- * @param {string} fileContents contents which will be written to a temp file.
97
- * @return {string} the path to the temp file.
98
- */
99
- const storeTempFile = (fileContents) => {
100
- const path = join(budibaseTempDir(), uuid());
101
- fs.writeFileSync(path, fileContents);
102
- return path;
103
- };
104
- exports.storeTempFile = storeTempFile;
105
- /**
106
- * Utility function for getting a file read stream - a simple in memory buffered read
107
- * stream doesn't work for pouchdb.
108
- */
109
- const stringToFileStream = (contents) => {
110
- const path = (0, exports.storeTempFile)(contents);
111
- return fs.createReadStream(path);
112
- };
113
- exports.stringToFileStream = stringToFileStream;
114
- /**
115
- * Creates a temp file and returns it from the API.
116
- * @param {string} fileContents the contents to be returned in file.
117
- */
118
- const sendTempFile = (fileContents) => {
119
- const path = (0, exports.storeTempFile)(fileContents);
120
- return fs.createReadStream(path);
121
- };
122
- exports.sendTempFile = sendTempFile;
123
- /**
124
- * All file reads come through here just to make sure all of them make sense
125
- * allows a centralised location to check logic is all good.
126
- */
127
- const readFileSync = (filepath, options = "utf8") => {
128
- return fs.readFileSync(filepath, options);
129
- };
130
- exports.readFileSync = readFileSync;
131
- const createTempFolder = (item) => {
132
- const path = join(budibaseTempDir(), item);
133
- try {
134
- // remove old tmp directories automatically - don't combine
135
- if (fs.existsSync(path)) {
136
- fs.rmSync(path, { recursive: true, force: true });
137
- }
138
- fs.mkdirSync(path);
139
- }
140
- catch (err) {
141
- throw new Error(`Path cannot be created: ${err.message}`);
142
- }
143
- return path;
144
- };
145
- exports.createTempFolder = createTempFolder;
146
- const extractTarball = (fromFilePath, toPath) => __awaiter(void 0, void 0, void 0, function* () {
147
- yield tar_1.default.extract({
148
- file: fromFilePath,
149
- C: toPath,
150
- });
151
- });
152
- exports.extractTarball = extractTarball;
153
- /**
154
- * Find for a file recursively from start path applying filter, return first match
155
- */
156
- const findFileRec = (startPath, filter) => {
157
- if (!fs.existsSync(startPath)) {
158
- return;
159
- }
160
- const files = fs.readdirSync(startPath);
161
- for (let i = 0, len = files.length; i < len; i++) {
162
- const filename = join(startPath, files[i]);
163
- const stat = fs.lstatSync(filename);
164
- if (stat.isDirectory()) {
165
- return (0, exports.findFileRec)(filename, filter);
166
- }
167
- else if (filename.endsWith(filter)) {
168
- return filename;
169
- }
170
- }
171
- };
172
- exports.findFileRec = findFileRec;
173
- /**
174
- * Remove a folder which is not empty from the file system
175
- */
176
- const deleteFolderFileSystem = (path) => {
177
- if (!fs.existsSync(path)) {
178
- return;
179
- }
180
- fs.rmSync(path, { recursive: true, force: true });
181
- };
182
- exports.deleteFolderFileSystem = deleteFolderFileSystem;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getDatasourcePlugin = exports.getPluginMetadata = void 0;
13
- const { budibaseTempDir } = require("../budibaseDir");
14
- const fs = require("fs");
15
- const { join } = require("path");
16
- const backend_core_1 = require("@budibase/backend-core");
17
- const DATASOURCE_PATH = join(budibaseTempDir(), "datasource");
18
- const getPluginMetadata = (path) => __awaiter(void 0, void 0, void 0, function* () {
19
- let metadata = {};
20
- try {
21
- const pkg = fs.readFileSync(join(path, "package.json"), "utf8");
22
- const schema = fs.readFileSync(join(path, "schema.json"), "utf8");
23
- metadata.schema = JSON.parse(schema);
24
- metadata.package = JSON.parse(pkg);
25
- if (!metadata.package.name ||
26
- !metadata.package.version ||
27
- !metadata.package.description) {
28
- throw new Error("package.json is missing one of 'name', 'version' or 'description'.");
29
- }
30
- }
31
- catch (err) {
32
- throw new Error(`Unable to process schema.json/package.json in plugin. ${err.message}`);
33
- }
34
- return { metadata, directory: path };
35
- });
36
- exports.getPluginMetadata = getPluginMetadata;
37
- const getDatasourcePlugin = (plugin) => __awaiter(void 0, void 0, void 0, function* () {
38
- var _a;
39
- const hash = (_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.hash;
40
- if (!fs.existsSync(DATASOURCE_PATH)) {
41
- fs.mkdirSync(DATASOURCE_PATH);
42
- }
43
- const filename = join(DATASOURCE_PATH, plugin.name);
44
- const metadataName = `${filename}.bbmetadata`;
45
- if (fs.existsSync(filename)) {
46
- const currentHash = fs.readFileSync(metadataName, "utf8");
47
- // if hash is the same return the file, otherwise remove it and re-download
48
- if (currentHash === hash) {
49
- return require(filename);
50
- }
51
- else {
52
- console.log(`Updating plugin: ${plugin.name}`);
53
- delete require.cache[require.resolve(filename)];
54
- fs.unlinkSync(filename);
55
- }
56
- }
57
- const pluginKey = backend_core_1.objectStore.getPluginJSKey(plugin);
58
- const pluginJs = yield backend_core_1.objectStore.retrieve(backend_core_1.objectStore.ObjectStoreBuckets.PLUGINS, pluginKey);
59
- fs.writeFileSync(filename, pluginJs);
60
- fs.writeFileSync(metadataName, hash);
61
- return require(filename);
62
- });
63
- exports.getDatasourcePlugin = getDatasourcePlugin;
@@ -1,44 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.downloadTemplate = exports.getTemplateStream = void 0;
13
- const fs = require("fs");
14
- const { join } = require("path");
15
- const constants_1 = require("../../constants");
16
- const backend_core_1 = require("@budibase/backend-core");
17
- /**
18
- * This function manages temporary template files which are stored by Koa.
19
- * @param {Object} template The template object retrieved from the Koa context object.
20
- * @returns {Object} Returns an fs read stream which can be loaded into the database.
21
- */
22
- const getTemplateStream = (template) => __awaiter(void 0, void 0, void 0, function* () {
23
- if (template.file) {
24
- return fs.createReadStream(template.file.path);
25
- }
26
- else {
27
- const [type, name] = template.key.split("/");
28
- const tmpPath = yield (0, exports.downloadTemplate)(type, name);
29
- return fs.createReadStream(join(tmpPath, name, "db", "dump.txt"));
30
- }
31
- });
32
- exports.getTemplateStream = getTemplateStream;
33
- /**
34
- * Retrieves a template and pipes it to minio as well as making it available temporarily.
35
- * @param {string} type The type of template which is to be retrieved.
36
- * @param name
37
- * @return {Promise<*>}
38
- */
39
- const downloadTemplate = (type, name) => __awaiter(void 0, void 0, void 0, function* () {
40
- const DEFAULT_TEMPLATES_BUCKET = "prod-budi-templates.s3-eu-west-1.amazonaws.com";
41
- const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`;
42
- return backend_core_1.objectStore.downloadTarball(templateUrl, constants_1.ObjectStoreBuckets.TEMPLATES, type);
43
- });
44
- exports.downloadTemplate = downloadTemplate;
@@ -1,65 +0,0 @@
1
- import { db as dbCore } from "@budibase/backend-core"
2
- import { AppStatus } from "../../../db/utils"
3
-
4
- import * as setup from "./utilities"
5
-
6
- describe("/cloud", () => {
7
- let request = setup.getRequest()
8
- let config = setup.getConfig()
9
-
10
- afterAll(setup.afterAll)
11
-
12
- beforeEach(async () => {
13
- await config.init()
14
- })
15
-
16
- afterEach(async () => {
17
- // clear all mocks
18
- jest.clearAllMocks()
19
- })
20
-
21
- describe("import", () => {
22
- it("should be able to import apps", async () => {
23
- // first we need to delete any existing apps on the system so it looks clean otherwise the
24
- // import will not run
25
- await request
26
- .post(
27
- `/api/applications/${dbCore.getProdAppID(
28
- config.getAppId()
29
- )}/unpublish`
30
- )
31
- .set(config.defaultHeaders())
32
- .expect(204)
33
- await request
34
- .delete(`/api/applications/${config.getAppId()}`)
35
- .set(config.defaultHeaders())
36
- .expect("Content-Type", /json/)
37
- .expect(200)
38
-
39
- // get a count of apps before the import
40
- const preImportApps = await request
41
- .get(`/api/applications?status=${AppStatus.ALL}`)
42
- .set(config.defaultHeaders())
43
- .expect("Content-Type", /json/)
44
- .expect(200)
45
-
46
- // Perform the import
47
- const res = await request
48
- .post(`/api/cloud/import`)
49
- .attach("importFile", "src/api/routes/tests/data/export-test.tar.gz")
50
- .set(config.defaultHeaders())
51
- .expect(200)
52
- expect(res.body.message).toEqual("Apps successfully imported.")
53
-
54
- // get a count of apps after the import
55
- const postImportApps = await request
56
- .get(`/api/applications?status=${AppStatus.ALL}`)
57
- .set(config.defaultHeaders())
58
- .expect("Content-Type", /json/)
59
- .expect(200)
60
-
61
- // There are two apps in the file that was imported so check for this
62
- expect(postImportApps.body.length).toEqual(2)
63
- })
64
- })
65
- })
@@ -1,179 +0,0 @@
1
- let mockObjectStore = jest.fn().mockImplementation(() => {
2
- return [{ name: "test.js" }]
3
- })
4
-
5
- let deleteFolder = jest.fn().mockImplementation()
6
- jest.mock("@budibase/backend-core", () => {
7
- const core = jest.requireActual("@budibase/backend-core")
8
- return {
9
- ...core,
10
- objectStore: {
11
- ...core.objectStore,
12
- upload: jest.fn(),
13
- uploadDirectory: mockObjectStore,
14
- deleteFolder: deleteFolder,
15
- },
16
- }
17
- })
18
-
19
- import { events } from "@budibase/backend-core"
20
- import * as setup from "./utilities"
21
-
22
- describe("/plugins", () => {
23
- let request = setup.getRequest()
24
- let config = setup.getConfig()
25
-
26
- afterAll(setup.afterAll)
27
-
28
- beforeEach(async () => {
29
- await config.init()
30
- jest.clearAllMocks()
31
- })
32
-
33
- const createPlugin = async (status?: number) => {
34
- return request
35
- .post(`/api/plugin/upload`)
36
- .attach("file", "src/api/routes/tests/data/comment-box-1.0.2.tar.gz")
37
- .set(config.defaultHeaders())
38
- .expect("Content-Type", /json/)
39
- .expect(status ? status : 200)
40
- }
41
-
42
- const getPlugins = async (status?: number) => {
43
- return request
44
- .get(`/api/plugin`)
45
- .set(config.defaultHeaders())
46
- .expect("Content-Type", /json/)
47
- .expect(status ? status : 200)
48
- }
49
-
50
- describe("upload", () => {
51
- it("should be able to upload a plugin", async () => {
52
- let res = await createPlugin()
53
- expect(res.body).toBeDefined()
54
- expect(res.body.plugins).toBeDefined()
55
- expect(res.body.plugins[0]._id).toEqual("plg_comment-box")
56
- expect(events.plugin.imported).toHaveBeenCalledTimes(1)
57
- })
58
-
59
- it("should not be able to create a plugin if there is an error", async () => {
60
- mockObjectStore.mockImplementationOnce(() => {
61
- throw new Error()
62
- })
63
- let res = await createPlugin(400)
64
- expect(res.body.message).toEqual("Failed to import plugin: Error")
65
- expect(events.plugin.imported).toHaveBeenCalledTimes(0)
66
- })
67
- })
68
-
69
- describe("fetch", () => {
70
- it("should be able to fetch plugins", async () => {
71
- await createPlugin()
72
- const res = await getPlugins()
73
- expect(res.body).toBeDefined()
74
- expect(res.body[0]._id).toEqual("plg_comment-box")
75
- })
76
- })
77
-
78
- describe("destroy", () => {
79
- it("should be able to delete a plugin", async () => {
80
- await createPlugin()
81
- const res = await request
82
- .delete(`/api/plugin/plg_comment-box`)
83
- .set(config.defaultHeaders())
84
- .expect("Content-Type", /json/)
85
- .expect(200)
86
- expect(res.body).toBeDefined()
87
- expect(res.body.message).toEqual("Plugin plg_comment-box deleted.")
88
-
89
- const plugins = await getPlugins()
90
- expect(plugins.body).toBeDefined()
91
- expect(plugins.body.length).toEqual(0)
92
- expect(events.plugin.deleted).toHaveBeenCalledTimes(1)
93
- })
94
- it("should handle an error deleting a plugin", async () => {
95
- deleteFolder.mockImplementationOnce(() => {
96
- throw new Error()
97
- })
98
-
99
- await createPlugin()
100
- const res = await request
101
- .delete(`/api/plugin/plg_comment-box`)
102
- .set(config.defaultHeaders())
103
- .expect("Content-Type", /json/)
104
- .expect(400)
105
-
106
- expect(res.body.message).toEqual("Failed to delete plugin: Error")
107
- expect(events.plugin.deleted).toHaveBeenCalledTimes(0)
108
- const plugins = await getPlugins()
109
- expect(plugins.body).toBeDefined()
110
- expect(plugins.body.length).toEqual(1)
111
- })
112
- })
113
-
114
- describe("github", () => {
115
- const createGithubPlugin = async (status?: number, url?: string) => {
116
- return await request
117
- .post(`/api/plugin`)
118
- .send({
119
- source: "Github",
120
- url,
121
- githubToken: "token",
122
- })
123
- .set(config.defaultHeaders())
124
- .expect("Content-Type", /json/)
125
- .expect(status ? status : 200)
126
- }
127
- it("should be able to create a plugin from github", async () => {
128
- const res = await createGithubPlugin(
129
- 200,
130
- "https://github.com/my-repo/budibase-comment-box.git"
131
- )
132
- expect(res.body).toBeDefined()
133
- expect(res.body.plugin).toBeDefined()
134
- expect(res.body.plugin._id).toEqual("plg_comment-box")
135
- })
136
- it("should fail if the url is not from github", async () => {
137
- const res = await createGithubPlugin(
138
- 400,
139
- "https://notgithub.com/my-repo/budibase-comment-box"
140
- )
141
- expect(res.body.message).toEqual(
142
- "Failed to import plugin: The plugin origin must be from Github"
143
- )
144
- })
145
- })
146
- describe("npm", () => {
147
- it("should be able to create a plugin from npm", async () => {
148
- const res = await request
149
- .post(`/api/plugin`)
150
- .send({
151
- source: "NPM",
152
- url: "https://www.npmjs.com/package/budibase-component",
153
- })
154
- .set(config.defaultHeaders())
155
- .expect("Content-Type", /json/)
156
- .expect(200)
157
- expect(res.body).toBeDefined()
158
- expect(res.body.plugin._id).toEqual("plg_budibase-component")
159
- expect(events.plugin.imported).toHaveBeenCalled()
160
- })
161
- })
162
-
163
- describe("url", () => {
164
- it("should be able to create a plugin from a URL", async () => {
165
- const res = await request
166
- .post(`/api/plugin`)
167
- .send({
168
- source: "URL",
169
- url: "https://www.someurl.com/comment-box/comment-box-1.0.2.tar.gz",
170
- })
171
- .set(config.defaultHeaders())
172
- .expect("Content-Type", /json/)
173
- .expect(200)
174
- expect(res.body).toBeDefined()
175
- expect(res.body.plugin._id).toEqual("plg_comment-box")
176
- expect(events.plugin.imported).toHaveBeenCalledTimes(1)
177
- })
178
- })
179
- })
@@ -1,34 +0,0 @@
1
- const setup = require("./utilities")
2
-
3
- describe("test the bash action", () => {
4
- let config = setup.getConfig()
5
-
6
- beforeEach(async () => {
7
- await config.init()
8
- })
9
- afterAll(setup.afterAll)
10
-
11
- it("should be able to execute a script", async () => {
12
-
13
- let res = await setup.runStep("EXECUTE_BASH",
14
- inputs = {
15
- code: "echo 'test'"
16
- }
17
-
18
- )
19
- expect(res.stdout).toEqual("test\n")
20
- expect(res.success).toEqual(true)
21
- })
22
-
23
- it("should handle a null value", async () => {
24
-
25
- let res = await setup.runStep("EXECUTE_BASH",
26
- inputs = {
27
- code: null
28
- }
29
-
30
-
31
- )
32
- expect(res.stdout).toEqual("Budibase bash automation failed: Invalid inputs")
33
- })
34
- })
@@ -1,27 +0,0 @@
1
- const setup = require("./utilities")
2
- const fetch = require("node-fetch")
3
-
4
- jest.mock("node-fetch")
5
-
6
- describe("test the outgoing webhook action", () => {
7
- let inputs
8
- let config = setup.getConfig()
9
-
10
- beforeEach(async () => {
11
- await config.init()
12
- inputs = {
13
- username: "joe_bloggs",
14
- url: "http://www.test.com",
15
- }
16
- })
17
-
18
- afterAll(setup.afterAll)
19
-
20
- it("should be able to run the action", async () => {
21
- const res = await setup.runStep(setup.actions.discord.stepId, inputs)
22
- expect(res.response.url).toEqual("http://www.test.com")
23
- expect(res.response.method).toEqual("post")
24
- expect(res.success).toEqual(true)
25
- })
26
-
27
- })
@@ -1,49 +0,0 @@
1
- const setup = require("./utilities")
2
-
3
- describe("test the execute query action", () => {
4
- let datasource
5
- let config = setup.getConfig()
6
-
7
- beforeEach(async () => {
8
- await config.init()
9
-
10
- await config.createDatasource()
11
- query = await config.createQuery()
12
-
13
- })
14
-
15
- afterAll(setup.afterAll)
16
-
17
- it("should be able to execute a query", async () => {
18
- let res = await setup.runStep(setup.actions.EXECUTE_QUERY.stepId,
19
- inputs = {
20
- query: { queryId: query._id }
21
- }
22
- )
23
- expect(res.response).toEqual([{ a: 'string', b: 1 }])
24
- expect(res.success).toEqual(true)
25
- })
26
-
27
- it("should handle a null query value", async () => {
28
- let res = await setup.runStep(setup.actions.EXECUTE_QUERY.stepId,
29
- inputs = {
30
- query: null
31
- }
32
- )
33
- expect(res.response.message).toEqual("Invalid inputs")
34
- expect(res.success).toEqual(false)
35
- })
36
-
37
-
38
- it("should handle an error executing a query", async () => {
39
- let res = await setup.runStep(setup.actions.EXECUTE_QUERY.stepId,
40
- inputs = {
41
- query: { queryId: "wrong_id" }
42
- }
43
- )
44
- expect(res.response).toEqual('{"status":404,"name":"not_found","message":"missing","reason":"missing"}')
45
- expect(res.success).toEqual(false)
46
- })
47
-
48
-
49
- })