@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,48 +0,0 @@
1
- const setup = require("./utilities")
2
-
3
- describe("test the execute script 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(setup.actions.EXECUTE_SCRIPT.stepId,
14
- inputs = {
15
- code: "return 1 + 1"
16
- }
17
-
18
- )
19
- expect(res.value).toEqual(2)
20
- expect(res.success).toEqual(true)
21
- })
22
-
23
- it("should handle a null value", async () => {
24
-
25
- let res = await setup.runStep(setup.actions.EXECUTE_SCRIPT.stepId,
26
- inputs = {
27
- code: null
28
- }
29
-
30
-
31
- )
32
- expect(res.response.message).toEqual("Invalid inputs")
33
- expect(res.success).toEqual(false)
34
- })
35
-
36
- it("should be able to handle an error gracefully", async () => {
37
-
38
- let res = await setup.runStep(setup.actions.EXECUTE_SCRIPT.stepId,
39
- inputs = {
40
- code: "return something.map(x => x.name)"
41
- }
42
-
43
- )
44
- expect(res.response).toEqual("ReferenceError: something is not defined")
45
- expect(res.success).toEqual(false)
46
- })
47
-
48
- })
@@ -1,71 +0,0 @@
1
-
2
- function generateResponse(to, from) {
3
- return {
4
- "success": true,
5
- "response": {
6
- "accepted": [
7
- to
8
- ],
9
- "envelope": {
10
- "from": from,
11
- "to": [
12
- to
13
- ]
14
- },
15
- "message": `Email sent to ${to}.`
16
- }
17
-
18
- }
19
- }
20
-
21
- const mockFetch = jest.fn(() => ({
22
- headers: {
23
- raw: () => {
24
- return { "content-type": ["application/json"] }
25
- },
26
- get: () => ["application/json"],
27
- },
28
- json: jest.fn(() => response),
29
- status: 200,
30
- text: jest.fn(),
31
- }))
32
- jest.mock("node-fetch", () => mockFetch)
33
- const setup = require("./utilities")
34
-
35
-
36
- describe("test the outgoing webhook action", () => {
37
- let inputs
38
- let config = setup.getConfig()
39
- beforeEach(async () => {
40
- await config.init()
41
- })
42
-
43
- afterAll(setup.afterAll)
44
-
45
- it("should be able to run the action", async () => {
46
- inputs = {
47
- to: "user1@test.com",
48
- from: "admin@test.com",
49
- subject: "hello",
50
- contents: "testing",
51
- }
52
- let resp = generateResponse(inputs.to, inputs.from)
53
- mockFetch.mockImplementationOnce(() => ({
54
- headers: {
55
- raw: () => {
56
- return { "content-type": ["application/json"] }
57
- },
58
- get: () => ["application/json"],
59
- },
60
- json: jest.fn(() => resp),
61
- status: 200,
62
- text: jest.fn(),
63
- }))
64
- const res = await setup.runStep(setup.actions.SEND_EMAIL_SMTP.stepId, inputs)
65
- expect(res.response).toEqual(resp)
66
- expect(res.success).toEqual(true)
67
-
68
- })
69
-
70
-
71
- })
@@ -1,22 +0,0 @@
1
- const setup = require("./utilities")
2
-
3
- describe("test the server log action", () => {
4
- let config = setup.getConfig()
5
-
6
- beforeEach(async () => {
7
- await config.init()
8
- inputs = {
9
- text: "log message",
10
- }
11
- })
12
- afterAll(setup.afterAll)
13
-
14
- it("should be able to log the text", async () => {
15
-
16
- let res = await setup.runStep(setup.actions.SERVER_LOG.stepId,
17
- inputs
18
- )
19
- expect(res.message).toEqual(`App ${config.getAppId()} - ${inputs.text}`)
20
- expect(res.success).toEqual(true)
21
- })
22
- })
@@ -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
- value1: "test",
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.zapier.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,65 +0,0 @@
1
- const automationUtils = require("../automationUtils")
2
-
3
- describe("automationUtils", () => {
4
- describe("substituteLoopStep", () => {
5
- it("should allow multiple loop binding substitutes", () => {
6
- expect(
7
- automationUtils.substituteLoopStep(
8
- `{{ loop.currentItem._id }} {{ loop.currentItem._id }} {{ loop.currentItem._id }}`,
9
- "step.2"
10
- )
11
- ).toBe(
12
- `{{ step.2.currentItem._id }} {{ step.2.currentItem._id }} {{ step.2.currentItem._id }}`
13
- )
14
- })
15
-
16
- it("should handle not subsituting outside of curly braces", () => {
17
- expect(
18
- automationUtils.substituteLoopStep(
19
- `loop {{ loop.currentItem._id }}loop loop{{ loop.currentItem._id }}loop`,
20
- "step.2"
21
- )
22
- ).toBe(
23
- `loop {{ step.2.currentItem._id }}loop loop{{ step.2.currentItem._id }}loop`
24
- )
25
- })
26
- })
27
-
28
- describe("typeCastForLooping", () => {
29
- it("should parse to correct type", () => {
30
- expect(
31
- automationUtils.typecastForLooping(
32
- { inputs: { option: "Array" } },
33
- { binding: [1, 2, 3] }
34
- )
35
- ).toEqual([1, 2, 3])
36
- expect(
37
- automationUtils.typecastForLooping(
38
- { inputs: { option: "Array" } },
39
- { binding: "[1, 2, 3]" }
40
- )
41
- ).toEqual([1, 2, 3])
42
- expect(
43
- automationUtils.typecastForLooping(
44
- { inputs: { option: "String" } },
45
- { binding: [1, 2, 3] }
46
- )
47
- ).toEqual("1,2,3")
48
- })
49
- it("should handle null values", () => {
50
- // expect it to handle where the binding is null
51
- expect(
52
- automationUtils.typecastForLooping(
53
- { inputs: { option: "Array" } },
54
- { binding: null }
55
- )
56
- ).toEqual(null)
57
- expect(() =>
58
- automationUtils.typecastForLooping(
59
- { inputs: { option: "Array" } },
60
- { binding: "test" }
61
- )
62
- ).toThrow()
63
- })
64
- })
65
- })
@@ -1,86 +0,0 @@
1
- import { budibaseTempDir } from "../budibaseDir"
2
- import fs from "fs"
3
- import { join } from "path"
4
- import { ObjectStoreBuckets } from "../../constants"
5
- import { updateClientLibrary } from "./clientLibrary"
6
- import env from "../../environment"
7
- import { objectStore, context } from "@budibase/backend-core"
8
- import { TOP_LEVEL_PATH } from "./filesystem"
9
-
10
- export const NODE_MODULES_PATH = join(TOP_LEVEL_PATH, "node_modules")
11
-
12
- /**
13
- * Uploads the latest client library to the object store.
14
- * @param {string} appId The ID of the app which is being created.
15
- * @return {Promise<void>} once promise completes app resources should be ready in object store.
16
- */
17
- export const createApp = async (appId: string) => {
18
- await updateClientLibrary(appId)
19
- }
20
-
21
- /**
22
- * Removes all of the assets created for an app in the object store.
23
- * @param {string} appId The ID of the app which is being deleted.
24
- * @return {Promise<void>} once promise completes the app resources will be removed from object store.
25
- */
26
- export const deleteApp = async (appId: string) => {
27
- await objectStore.deleteFolder(ObjectStoreBuckets.APPS, `${appId}/`)
28
- }
29
-
30
- /**
31
- * Retrieves component libraries from object store (or tmp symlink if in local)
32
- */
33
- export const getComponentLibraryManifest = async (library: string) => {
34
- const appId = context.getAppId()
35
- const filename = "manifest.json"
36
- /* istanbul ignore next */
37
- // when testing in cypress and so on we need to get the package
38
- // as the environment may not be fully fleshed out for dev or prod
39
- if (env.isTest()) {
40
- library = library.replace("standard-components", "client")
41
- const lib = library.split("/")[1]
42
- const path = require.resolve(library).split(lib)[0]
43
- return require(join(path, lib, filename))
44
- } else if (env.isDev()) {
45
- const path = join(NODE_MODULES_PATH, "@budibase", "client", filename)
46
- // always load from new so that updates are refreshed
47
- delete require.cache[require.resolve(path)]
48
- return require(path)
49
- }
50
-
51
- if (!appId) {
52
- throw new Error("No app ID found - cannot get component libraries")
53
- }
54
-
55
- let resp
56
- let path
57
- try {
58
- // Try to load the manifest from the new file location
59
- path = join(appId, filename)
60
- resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
61
- } catch (error) {
62
- console.error(
63
- `component-manifest-objectstore=failed appId=${appId} path=${path}`,
64
- error
65
- )
66
- // Fallback to loading it from the old location for old apps
67
- path = join(appId, "node_modules", library, "package", filename)
68
- resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
69
- }
70
- if (typeof resp !== "string") {
71
- resp = resp.toString("utf8")
72
- }
73
- return JSON.parse(resp)
74
- }
75
-
76
- /**
77
- * Given a set of app IDs makes sure file system is cleared of any of their temp info.
78
- */
79
- export const cleanup = (appIds: string[]) => {
80
- for (let appId of appIds) {
81
- const path = join(budibaseTempDir(), appId)
82
- if (fs.existsSync(path)) {
83
- fs.rmdirSync(path, { recursive: true })
84
- }
85
- }
86
- }
@@ -1,170 +0,0 @@
1
- import { PathLike } from "fs"
2
- const { budibaseTempDir } = require("../budibaseDir")
3
- const fs = require("fs")
4
- const { join } = require("path")
5
- const uuid = require("uuid/v4")
6
- const env = require("../../environment")
7
- import tar from "tar"
8
-
9
- export const TOP_LEVEL_PATH = join(__dirname, "..", "..", "..")
10
-
11
- /**
12
- * Upon first startup of instance there may not be everything we need in tmp directory, set it up.
13
- */
14
- export const init = () => {
15
- const tempDir = budibaseTempDir()
16
- if (!fs.existsSync(tempDir)) {
17
- // some test cases fire this quickly enough that
18
- // synchronous cases can end up here at the same time
19
- try {
20
- fs.mkdirSync(tempDir)
21
- } catch (err: any) {
22
- if (!err || err.code !== "EEXIST") {
23
- throw err
24
- }
25
- }
26
- }
27
- const clientLibPath = join(budibaseTempDir(), "budibase-client.js")
28
- if (env.isTest() && !fs.existsSync(clientLibPath)) {
29
- fs.copyFileSync(require.resolve("@budibase/client"), clientLibPath)
30
- }
31
- }
32
-
33
- /**
34
- * Checks if the system is currently in development mode and if it is makes sure
35
- * everything required to function is ready.
36
- */
37
- export const checkDevelopmentEnvironment = () => {
38
- if (!env.isDev() || env.isTest()) {
39
- return
40
- }
41
- if (!fs.existsSync(budibaseTempDir())) {
42
- fs.mkdirSync(budibaseTempDir())
43
- }
44
- let error
45
- if (!fs.existsSync(join(process.cwd(), ".env"))) {
46
- error = "Must run via yarn once to generate environment."
47
- }
48
- if (error) {
49
- console.error(error)
50
- process.exit(-1)
51
- }
52
- }
53
-
54
- /**
55
- * Used to retrieve a handlebars file from the system which will be used as a template.
56
- * This is allowable as the template handlebars files should be static and identical across
57
- * the cluster.
58
- * @param {string} path The path to the handlebars file which is to be loaded.
59
- * @returns {string} The loaded handlebars file as a string - loaded as utf8.
60
- */
61
- export const loadHandlebarsFile = (path: PathLike) => {
62
- return fs.readFileSync(path, "utf8")
63
- }
64
-
65
- /**
66
- * When return a file from the API need to write the file to the system temporarily so we
67
- * can create a read stream to send.
68
- * @param {string} contents the contents of the file which is to be returned from the API.
69
- * @return {Object} the read stream which can be put into the koa context body.
70
- */
71
- export const apiFileReturn = (contents: any) => {
72
- const path = join(budibaseTempDir(), uuid())
73
- fs.writeFileSync(path, contents)
74
- return fs.createReadStream(path)
75
- }
76
-
77
- export const streamFile = (path: string) => {
78
- return fs.createReadStream(path)
79
- }
80
-
81
- /**
82
- * Writes the provided contents to a temporary file, which can be used briefly.
83
- * @param {string} fileContents contents which will be written to a temp file.
84
- * @return {string} the path to the temp file.
85
- */
86
- export const storeTempFile = (fileContents: any) => {
87
- const path = join(budibaseTempDir(), uuid())
88
- fs.writeFileSync(path, fileContents)
89
- return path
90
- }
91
-
92
- /**
93
- * Utility function for getting a file read stream - a simple in memory buffered read
94
- * stream doesn't work for pouchdb.
95
- */
96
- export const stringToFileStream = (contents: any) => {
97
- const path = storeTempFile(contents)
98
- return fs.createReadStream(path)
99
- }
100
-
101
- /**
102
- * Creates a temp file and returns it from the API.
103
- * @param {string} fileContents the contents to be returned in file.
104
- */
105
- export const sendTempFile = (fileContents: any) => {
106
- const path = storeTempFile(fileContents)
107
- return fs.createReadStream(path)
108
- }
109
-
110
- /**
111
- * All file reads come through here just to make sure all of them make sense
112
- * allows a centralised location to check logic is all good.
113
- */
114
- export const readFileSync = (filepath: PathLike, options = "utf8") => {
115
- return fs.readFileSync(filepath, options)
116
- }
117
-
118
- export const createTempFolder = (item: any) => {
119
- const path = join(budibaseTempDir(), item)
120
- try {
121
- // remove old tmp directories automatically - don't combine
122
- if (fs.existsSync(path)) {
123
- fs.rmSync(path, { recursive: true, force: true })
124
- }
125
- fs.mkdirSync(path)
126
- } catch (err: any) {
127
- throw new Error(`Path cannot be created: ${err.message}`)
128
- }
129
-
130
- return path
131
- }
132
-
133
- export const extractTarball = async (fromFilePath: string, toPath: string) => {
134
- await tar.extract({
135
- file: fromFilePath,
136
- C: toPath,
137
- })
138
- }
139
-
140
- /**
141
- * Find for a file recursively from start path applying filter, return first match
142
- */
143
- export const findFileRec = (startPath: PathLike, filter: string): any => {
144
- if (!fs.existsSync(startPath)) {
145
- return
146
- }
147
-
148
- const files = fs.readdirSync(startPath)
149
- for (let i = 0, len = files.length; i < len; i++) {
150
- const filename = join(startPath, files[i])
151
- const stat = fs.lstatSync(filename)
152
-
153
- if (stat.isDirectory()) {
154
- return findFileRec(filename, filter)
155
- } else if (filename.endsWith(filter)) {
156
- return filename
157
- }
158
- }
159
- }
160
-
161
- /**
162
- * Remove a folder which is not empty from the file system
163
- */
164
- export const deleteFolderFileSystem = (path: PathLike) => {
165
- if (!fs.existsSync(path)) {
166
- return
167
- }
168
-
169
- fs.rmSync(path, { recursive: true, force: true })
170
- }
@@ -1,65 +0,0 @@
1
- import { Plugin } from "@budibase/types"
2
-
3
- const { budibaseTempDir } = require("../budibaseDir")
4
- const fs = require("fs")
5
- const { join } = require("path")
6
- import { objectStore } from "@budibase/backend-core"
7
-
8
- const DATASOURCE_PATH = join(budibaseTempDir(), "datasource")
9
-
10
- export const getPluginMetadata = async (path: string) => {
11
- let metadata: any = {}
12
- try {
13
- const pkg = fs.readFileSync(join(path, "package.json"), "utf8")
14
- const schema = fs.readFileSync(join(path, "schema.json"), "utf8")
15
-
16
- metadata.schema = JSON.parse(schema)
17
- metadata.package = JSON.parse(pkg)
18
-
19
- if (
20
- !metadata.package.name ||
21
- !metadata.package.version ||
22
- !metadata.package.description
23
- ) {
24
- throw new Error(
25
- "package.json is missing one of 'name', 'version' or 'description'."
26
- )
27
- }
28
- } catch (err: any) {
29
- throw new Error(
30
- `Unable to process schema.json/package.json in plugin. ${err.message}`
31
- )
32
- }
33
-
34
- return { metadata, directory: path }
35
- }
36
-
37
- export const getDatasourcePlugin = async (plugin: Plugin) => {
38
- const hash = plugin.schema?.hash
39
- if (!fs.existsSync(DATASOURCE_PATH)) {
40
- fs.mkdirSync(DATASOURCE_PATH)
41
- }
42
- const filename = join(DATASOURCE_PATH, plugin.name)
43
- const metadataName = `${filename}.bbmetadata`
44
- if (fs.existsSync(filename)) {
45
- const currentHash = fs.readFileSync(metadataName, "utf8")
46
- // if hash is the same return the file, otherwise remove it and re-download
47
- if (currentHash === hash) {
48
- return require(filename)
49
- } else {
50
- console.log(`Updating plugin: ${plugin.name}`)
51
- delete require.cache[require.resolve(filename)]
52
- fs.unlinkSync(filename)
53
- }
54
- }
55
- const pluginKey = objectStore.getPluginJSKey(plugin)
56
- const pluginJs = await objectStore.retrieve(
57
- objectStore.ObjectStoreBuckets.PLUGINS,
58
- pluginKey
59
- )
60
-
61
- fs.writeFileSync(filename, pluginJs)
62
- fs.writeFileSync(metadataName, hash)
63
-
64
- return require(filename)
65
- }
@@ -1,36 +0,0 @@
1
- const fs = require("fs")
2
- const { join } = require("path")
3
- import { ObjectStoreBuckets } from "../../constants"
4
- import { objectStore } from "@budibase/backend-core"
5
-
6
- /**
7
- * This function manages temporary template files which are stored by Koa.
8
- * @param {Object} template The template object retrieved from the Koa context object.
9
- * @returns {Object} Returns an fs read stream which can be loaded into the database.
10
- */
11
- export const getTemplateStream = async (template: any) => {
12
- if (template.file) {
13
- return fs.createReadStream(template.file.path)
14
- } else {
15
- const [type, name] = template.key.split("/")
16
- const tmpPath = await downloadTemplate(type, name)
17
- return fs.createReadStream(join(tmpPath, name, "db", "dump.txt"))
18
- }
19
- }
20
-
21
- /**
22
- * Retrieves a template and pipes it to minio as well as making it available temporarily.
23
- * @param {string} type The type of template which is to be retrieved.
24
- * @param name
25
- * @return {Promise<*>}
26
- */
27
- export const downloadTemplate = async (type: string, name: string) => {
28
- const DEFAULT_TEMPLATES_BUCKET =
29
- "prod-budi-templates.s3-eu-west-1.amazonaws.com"
30
- const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`
31
- return objectStore.downloadTarball(
32
- templateUrl,
33
- ObjectStoreBuckets.TEMPLATES,
34
- type
35
- )
36
- }
@@ -1,57 +0,0 @@
1
- import { fixAutoColumnSubType } from "../utils"
2
- import { AutoFieldDefaultNames, AutoFieldSubTypes } from "../../../constants"
3
-
4
- describe("rowProcessor utility", () => {
5
- describe("fixAutoColumnSubType", () => {
6
- let schema = {
7
- name: "",
8
- type: "link",
9
- subtype: "", // missing subtype
10
- icon: "ri-magic-line",
11
- autocolumn: true,
12
- constraints: { type: "array", presence: false },
13
- tableId: "ta_users",
14
- fieldName: "test-Updated By",
15
- relationshipType: "many-to-many",
16
- sortable: false,
17
- }
18
-
19
- it("updates the schema with the correct subtype", async () => {
20
- schema.name = AutoFieldDefaultNames.CREATED_BY
21
- expect(fixAutoColumnSubType(schema).subtype).toEqual(
22
- AutoFieldSubTypes.CREATED_BY
23
- )
24
- schema.subtype = ""
25
-
26
- schema.name = AutoFieldDefaultNames.UPDATED_BY
27
- expect(fixAutoColumnSubType(schema).subtype).toEqual(
28
- AutoFieldSubTypes.UPDATED_BY
29
- )
30
- schema.subtype = ""
31
-
32
- schema.name = AutoFieldDefaultNames.CREATED_AT
33
- expect(fixAutoColumnSubType(schema).subtype).toEqual(
34
- AutoFieldSubTypes.CREATED_AT
35
- )
36
- schema.subtype = ""
37
-
38
- schema.name = AutoFieldDefaultNames.UPDATED_AT
39
- expect(fixAutoColumnSubType(schema).subtype).toEqual(
40
- AutoFieldSubTypes.UPDATED_AT
41
- )
42
- schema.subtype = ""
43
-
44
- schema.name = AutoFieldDefaultNames.AUTO_ID
45
- expect(fixAutoColumnSubType(schema).subtype).toEqual(
46
- AutoFieldSubTypes.AUTO_ID
47
- )
48
- schema.subtype = ""
49
- })
50
-
51
- it("returns the column if subtype exists", async () => {
52
- schema.subtype = AutoFieldSubTypes.CREATED_BY
53
- schema.name = AutoFieldDefaultNames.CREATED_AT
54
- expect(fixAutoColumnSubType(schema)).toEqual(schema)
55
- })
56
- })
57
- })