@budibase/server 2.2.25 → 2.2.27-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/aws-sdk.ts +19 -0
  3. package/__mocks__/node-fetch.ts +80 -0
  4. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  5. package/builder/assets/bg.29e85dd5.png +0 -0
  6. package/builder/assets/bulgaria.bd68393d.png +0 -0
  7. package/builder/assets/covanta.72c46c1e.png +0 -0
  8. package/builder/assets/index.3dd03883.css +6 -0
  9. package/builder/assets/index.f9b8b175.js +1802 -0
  10. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  11. package/builder/index.html +3 -3
  12. package/coverage/clover.xml +6618 -6528
  13. package/coverage/coverage-final.json +282 -276
  14. package/coverage/lcov-report/index.html +489 -444
  15. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
  16. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
  17. package/coverage/lcov-report/src/api/controllers/application.ts.html +362 -266
  18. package/coverage/lcov-report/src/api/controllers/auth.ts.html +12 -12
  19. package/coverage/lcov-report/src/api/controllers/automation.ts.html +61 -61
  20. package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
  21. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +93 -81
  22. package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
  23. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +122 -98
  24. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +21 -18
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.html +21 -21
  26. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +142 -196
  27. package/coverage/lcov-report/src/api/controllers/dev.ts.html +28 -28
  28. package/coverage/lcov-report/src/api/controllers/index.html +115 -115
  29. package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
  30. package/coverage/lcov-report/src/api/controllers/layout.ts.html +9 -9
  31. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
  32. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
  33. package/coverage/lcov-report/src/api/controllers/permission.ts.html +14 -14
  34. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +20 -20
  35. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +62 -62
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  37. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
  38. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +56 -56
  39. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  40. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  41. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  42. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +75 -24
  43. package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
  50. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
  52. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
  53. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
  54. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
  55. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
  57. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
  64. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
  65. package/coverage/lcov-report/src/api/controllers/query/index.html +20 -20
  66. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +131 -107
  67. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +11 -11
  68. package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
  69. package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
  70. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +56 -41
  71. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +87 -57
  72. package/coverage/lcov-report/src/api/controllers/row/index.html +66 -66
  73. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +37 -37
  74. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +181 -106
  75. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
  76. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +44 -35
  77. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +156 -39
  78. package/coverage/lcov-report/src/api/controllers/screen.ts.html +31 -31
  79. package/coverage/lcov-report/src/api/controllers/script.ts.html +19 -19
  80. package/coverage/lcov-report/src/api/controllers/static/index.html +18 -18
  81. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +56 -71
  82. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +60 -60
  83. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +56 -50
  84. package/coverage/lcov-report/src/api/controllers/table/index.html +48 -48
  85. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +157 -70
  86. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +58 -61
  87. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +109 -112
  88. package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
  89. package/coverage/lcov-report/src/api/controllers/user.ts.html +159 -135
  90. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
  91. package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
  92. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +97 -133
  93. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +31 -31
  94. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +37 -37
  95. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  96. package/coverage/lcov-report/src/api/index.html +15 -15
  97. package/coverage/lcov-report/src/api/index.ts.html +40 -40
  98. package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
  99. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
  100. package/coverage/lcov-report/src/api/routes/application.ts.html +46 -13
  101. package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
  102. package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
  103. package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
  104. package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
  105. package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
  106. package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
  107. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -14
  108. package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
  109. package/coverage/lcov-report/src/api/routes/index.html +68 -68
  110. package/coverage/lcov-report/src/api/routes/index.ts.html +49 -40
  111. package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
  112. package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
  113. package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
  114. package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
  115. package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
  116. package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
  117. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +147 -15
  118. package/coverage/lcov-report/src/api/routes/public/index.html +27 -27
  119. package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
  120. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  121. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +28 -16
  122. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
  123. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
  124. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
  125. package/coverage/lcov-report/src/api/routes/public/tests/index.html +7 -7
  126. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
  127. package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
  128. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
  129. package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
  130. package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
  131. package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
  132. package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
  133. package/coverage/lcov-report/src/api/routes/row.ts.html +14 -14
  134. package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
  135. package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
  136. package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
  137. package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
  138. package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +27 -27
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +23 -23
  141. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +33 -33
  142. package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
  143. package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
  144. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
  145. package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
  146. package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
  147. package/coverage/lcov-report/src/app.ts.html +53 -47
  148. package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
  149. package/coverage/lcov-report/src/automations/automationUtils.ts.html +127 -55
  150. package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
  151. package/coverage/lcov-report/src/automations/index.html +54 -54
  152. package/coverage/lcov-report/src/automations/index.ts.html +23 -23
  153. package/coverage/lcov-report/src/automations/logging/index.html +3 -3
  154. package/coverage/lcov-report/src/automations/logging/index.ts.html +15 -15
  155. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  156. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
  157. package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
  158. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
  159. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  160. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  161. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  162. package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
  163. package/coverage/lcov-report/src/automations/steps/index.html +129 -129
  164. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
  165. package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
  166. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
  167. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
  168. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  169. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +19 -19
  170. package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
  171. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +12 -12
  172. package/coverage/lcov-report/src/automations/steps/utils.ts.html +18 -18
  173. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
  175. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +32 -32
  176. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
  177. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
  179. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
  182. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
  183. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
  184. package/coverage/lcov-report/src/automations/triggers.ts.html +53 -38
  185. package/coverage/lcov-report/src/automations/utils.ts.html +80 -80
  186. package/coverage/lcov-report/src/constants/index.html +19 -19
  187. package/coverage/lcov-report/src/constants/index.ts.html +103 -103
  188. package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
  189. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  190. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
  191. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
  192. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
  193. package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
  194. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
  195. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
  196. package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
  197. package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
  198. package/coverage/lcov-report/src/db/index.html +34 -34
  199. package/coverage/lcov-report/src/db/index.ts.html +10 -10
  200. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
  201. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
  202. package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
  203. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
  204. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +25 -25
  205. package/coverage/lcov-report/src/db/newid.ts.html +5 -5
  206. package/coverage/lcov-report/src/db/utils.ts.html +90 -90
  207. package/coverage/lcov-report/src/definitions/automations.ts.html +9 -6
  208. package/coverage/lcov-report/src/definitions/index.html +5 -20
  209. package/coverage/lcov-report/src/environment.ts.html +44 -32
  210. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
  211. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
  212. package/coverage/lcov-report/src/events/index.html +20 -20
  213. package/coverage/lcov-report/src/events/index.ts.html +7 -7
  214. package/coverage/lcov-report/src/events/utils.ts.html +11 -11
  215. package/coverage/lcov-report/src/index.html +47 -47
  216. package/coverage/lcov-report/src/index.ts.html +8 -8
  217. package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
  218. package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
  219. package/coverage/lcov-report/src/integrations/base/index.html +29 -29
  220. package/coverage/lcov-report/src/integrations/base/query.ts.html +15 -9
  221. package/coverage/lcov-report/src/integrations/base/sql.ts.html +38 -38
  222. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +23 -23
  223. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  224. package/coverage/lcov-report/src/integrations/couchdb.ts.html +109 -31
  225. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +17 -17
  226. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +27 -15
  227. package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
  228. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +42 -42
  229. package/coverage/lcov-report/src/integrations/index.html +130 -130
  230. package/coverage/lcov-report/src/integrations/index.ts.html +50 -62
  231. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
  232. package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
  233. package/coverage/lcov-report/src/integrations/mysql.ts.html +28 -28
  234. package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
  235. package/coverage/lcov-report/src/integrations/postgres.ts.html +54 -54
  236. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  237. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +24 -159
  238. package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
  239. package/coverage/lcov-report/src/integrations/rest.ts.html +43 -52
  240. package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
  241. package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
  242. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  243. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  244. package/coverage/lcov-report/src/integrations/utils.ts.html +54 -54
  245. package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
  246. package/coverage/lcov-report/src/middleware/authorized.ts.html +49 -37
  247. package/coverage/lcov-report/src/middleware/builder.ts.html +26 -26
  248. package/coverage/lcov-report/src/middleware/currentapp.ts.html +50 -47
  249. package/coverage/lcov-report/src/middleware/index.html +40 -40
  250. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
  251. package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
  252. package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
  253. package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
  254. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  255. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
  264. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +17 -14
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
  269. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
  271. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
  272. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
  273. package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
  274. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
  275. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
  280. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
  281. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  282. package/coverage/lcov-report/src/migrations/index.html +15 -15
  283. package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
  284. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
  285. package/coverage/lcov-report/src/migrations/tests/index.html +6 -6
  286. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
  287. package/coverage/lcov-report/src/sdk/app/applications/index.html +20 -20
  288. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
  289. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  290. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
  291. package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
  292. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
  293. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  294. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
  295. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
  296. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +45 -57
  297. package/coverage/lcov-report/src/sdk/app/backups/index.html +42 -42
  298. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
  299. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  300. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  302. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  304. package/coverage/lcov-report/src/{utilities/statusCodes.ts.html → sdk/app/queries/index.ts.html} +22 -28
  305. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  306. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
  307. package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
  308. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
  309. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  310. package/coverage/lcov-report/src/sdk/app/tables/index.html +15 -15
  311. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +29 -20
  312. package/coverage/lcov-report/src/sdk/index.html +7 -7
  313. package/coverage/lcov-report/src/sdk/index.ts.html +24 -12
  314. package/coverage/lcov-report/src/sdk/users/index.html +10 -10
  315. package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
  316. package/coverage/lcov-report/src/sdk/users/utils.ts.html +35 -35
  317. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  318. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  319. package/coverage/lcov-report/src/startup.ts.html +48 -63
  320. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +218 -152
  321. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
  322. package/coverage/lcov-report/src/tests/utilities/index.html +33 -33
  323. package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
  324. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +235 -46
  325. package/coverage/lcov-report/src/threads/automation.ts.html +212 -251
  326. package/coverage/lcov-report/src/threads/index.html +46 -46
  327. package/coverage/lcov-report/src/threads/index.ts.html +39 -39
  328. package/coverage/lcov-report/src/threads/query.ts.html +140 -101
  329. package/coverage/lcov-report/src/threads/utils.ts.html +29 -29
  330. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +5 -5
  331. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  332. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  333. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +20 -20
  334. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.html +88 -28
  336. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
  337. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
  338. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
  339. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  340. package/coverage/lcov-report/src/utilities/global.ts.html +60 -60
  341. package/coverage/lcov-report/src/utilities/index.html +89 -119
  342. package/coverage/lcov-report/src/utilities/index.ts.html +40 -172
  343. package/coverage/lcov-report/src/utilities/redis.ts.html +38 -38
  344. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  345. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +34 -34
  347. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +102 -75
  348. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
  349. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +54 -54
  350. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +174 -234
  351. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +33 -33
  352. package/coverage/lcov-report/src/utilities/security.ts.html +13 -13
  353. package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
  354. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +38 -38
  355. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
  356. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  357. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +89 -62
  358. package/coverage/lcov-report/src/watch.ts.html +20 -20
  359. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  360. package/coverage/lcov.info +13499 -12800
  361. package/dist/api/controllers/application.js +120 -109
  362. package/dist/api/controllers/cloud.js +6 -2
  363. package/dist/api/controllers/datasource.js +24 -15
  364. package/dist/api/controllers/deploy/index.js +43 -60
  365. package/dist/api/controllers/plugin/index.js +6 -6
  366. package/dist/api/controllers/public/applications.js +22 -1
  367. package/dist/api/controllers/query/index.js +23 -13
  368. package/dist/api/controllers/row/ExternalRequest.js +12 -4
  369. package/dist/api/controllers/row/external.js +20 -13
  370. package/dist/api/controllers/row/internal.js +52 -27
  371. package/dist/api/controllers/row/staticFormula.js +1 -1
  372. package/dist/api/controllers/row/utils.js +35 -3
  373. package/dist/api/controllers/static/index.js +47 -47
  374. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  375. package/dist/api/controllers/table/external.js +16 -35
  376. package/dist/api/controllers/table/index.js +44 -15
  377. package/dist/api/controllers/table/internal.js +6 -7
  378. package/dist/api/controllers/table/utils.js +9 -9
  379. package/dist/api/controllers/user.js +14 -6
  380. package/dist/api/controllers/view/exporters.js +22 -6
  381. package/dist/api/controllers/view/index.js +23 -58
  382. package/dist/api/controllers/view/viewBuilder.js +15 -2
  383. package/dist/api/controllers/webhook.js +45 -43
  384. package/dist/api/routes/analytics.js +2 -1
  385. package/dist/api/routes/apikeys.js +2 -1
  386. package/dist/api/routes/application.js +5 -1
  387. package/dist/api/routes/auth.js +2 -1
  388. package/dist/api/routes/automation.js +2 -1
  389. package/dist/api/routes/backup.js +2 -1
  390. package/dist/api/routes/cloud.js +2 -1
  391. package/dist/api/routes/component.js +2 -1
  392. package/dist/api/routes/datasource.js +2 -1
  393. package/dist/api/routes/deploy.js +3 -3
  394. package/dist/api/routes/dev.js +2 -1
  395. package/dist/api/routes/index.js +2 -0
  396. package/dist/api/routes/integration.js +2 -1
  397. package/dist/api/routes/layout.js +2 -1
  398. package/dist/api/routes/metadata.js +2 -1
  399. package/dist/api/routes/migrations.js +2 -1
  400. package/dist/api/routes/permission.js +2 -1
  401. package/dist/api/routes/public/applications.js +37 -0
  402. package/dist/api/routes/public/middleware/mapper.js +3 -0
  403. package/dist/api/routes/query.js +2 -1
  404. package/dist/api/routes/role.js +2 -1
  405. package/dist/api/routes/routing.js +2 -1
  406. package/dist/api/routes/row.js +2 -2
  407. package/dist/api/routes/screen.js +2 -1
  408. package/dist/api/routes/script.js +2 -1
  409. package/dist/api/routes/static.js +6 -5
  410. package/dist/api/routes/table.js +8 -38
  411. package/dist/api/routes/templates.js +2 -1
  412. package/dist/api/routes/user.js +2 -1
  413. package/dist/api/routes/utils/validators.js +1 -1
  414. package/dist/api/routes/view.js +2 -1
  415. package/dist/api/routes/webhook.js +2 -1
  416. package/dist/app.js +9 -7
  417. package/dist/automations/automationUtils.js +26 -1
  418. package/dist/automations/logging/index.js +5 -25
  419. package/dist/automations/triggers.js +1 -0
  420. package/dist/db/index.js +5 -2
  421. package/dist/db/linkedRows/LinkController.js +2 -1
  422. package/dist/db/linkedRows/LinkDocument.js +2 -1
  423. package/dist/db/newid.js +4 -2
  424. package/dist/definitions/datasource.js +0 -6
  425. package/dist/environment.js +7 -2
  426. package/dist/events/AutomationEmitter.js +2 -1
  427. package/dist/events/BudibaseEmitter.js +2 -1
  428. package/dist/events/index.js +2 -1
  429. package/dist/index.js +2 -2
  430. package/dist/integrations/base/query.js +7 -2
  431. package/dist/integrations/base/sqlTable.js +14 -14
  432. package/dist/integrations/couchdb.js +34 -8
  433. package/dist/integrations/dynamodb.js +8 -5
  434. package/dist/integrations/elasticsearch.js +7 -3
  435. package/dist/integrations/googlesheets.js +1 -1
  436. package/dist/integrations/index.js +6 -7
  437. package/dist/integrations/mongodb.js +311 -271
  438. package/dist/integrations/mysql.js +2 -2
  439. package/dist/integrations/queries/sql.js +73 -100
  440. package/dist/integrations/rest.js +16 -18
  441. package/dist/middleware/authorized.js +2 -1
  442. package/dist/middleware/builder.js +4 -2
  443. package/dist/middleware/currentapp.js +6 -3
  444. package/dist/middleware/publicApi.js +4 -2
  445. package/dist/middleware/selfhost.js +4 -1
  446. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  447. package/dist/package.json +12 -8
  448. package/dist/sdk/app/backups/imports.js +2 -6
  449. package/dist/sdk/app/datasources/datasources.js +147 -0
  450. package/dist/sdk/app/datasources/index.js +27 -0
  451. package/dist/sdk/app/queries/index.js +27 -0
  452. package/dist/sdk/app/queries/queries.js +60 -0
  453. package/dist/sdk/app/tables/index.js +6 -2
  454. package/dist/sdk/index.js +4 -0
  455. package/dist/sdk/utils/index.js +29 -0
  456. package/dist/startup.js +17 -17
  457. package/dist/threads/automation.js +22 -35
  458. package/dist/threads/index.js +4 -4
  459. package/dist/threads/query.js +27 -13
  460. package/dist/tsconfig.build.tsbuildinfo +1 -1
  461. package/dist/utilities/fileSystem/app.js +97 -0
  462. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  463. package/dist/utilities/fileSystem/filesystem.js +184 -0
  464. package/dist/utilities/fileSystem/index.js +18 -342
  465. package/dist/utilities/fileSystem/plugin.js +66 -0
  466. package/dist/utilities/fileSystem/template.js +47 -0
  467. package/dist/utilities/index.js +1 -44
  468. package/dist/utilities/rowProcessor/index.js +12 -4
  469. package/dist/utilities/schema.js +108 -0
  470. package/dist/utilities/scriptRunner.js +2 -1
  471. package/dist/utilities/statusCodes.js +2 -1
  472. package/dist/utilities/workerRequests.js +2 -0
  473. package/dist/watch.js +2 -25
  474. package/jest.config.ts +5 -2
  475. package/package.json +13 -9
  476. package/scripts/dev/manage.js +3 -2
  477. package/specs/openapi.json +84 -0
  478. package/specs/openapi.yaml +53 -0
  479. package/specs/resources/application.js +19 -0
  480. package/src/api/controllers/application.ts +142 -110
  481. package/src/api/controllers/auth.ts +2 -2
  482. package/src/api/controllers/cloud.ts +10 -6
  483. package/src/api/controllers/datasource.ts +33 -25
  484. package/src/api/controllers/deploy/Deployment.ts +1 -0
  485. package/src/api/controllers/deploy/index.ts +40 -58
  486. package/src/api/controllers/plugin/index.ts +14 -9
  487. package/src/api/controllers/public/applications.ts +17 -0
  488. package/src/api/controllers/query/index.ts +49 -41
  489. package/src/api/controllers/row/ExternalRequest.ts +8 -3
  490. package/src/api/controllers/row/external.ts +24 -14
  491. package/src/api/controllers/row/internal.ts +66 -41
  492. package/src/api/controllers/row/staticFormula.ts +5 -2
  493. package/src/api/controllers/row/utils.ts +42 -3
  494. package/src/api/controllers/static/index.ts +22 -27
  495. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  496. package/src/api/controllers/table/external.ts +18 -16
  497. package/src/api/controllers/table/index.ts +46 -17
  498. package/src/api/controllers/table/internal.ts +6 -7
  499. package/src/api/controllers/table/utils.ts +12 -13
  500. package/src/api/controllers/user.ts +21 -13
  501. package/src/api/controllers/view/exporters.ts +20 -5
  502. package/src/api/controllers/view/index.ts +30 -42
  503. package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
  504. package/src/api/controllers/view/viewBuilder.ts +1 -1
  505. package/src/api/controllers/webhook.ts +48 -46
  506. package/src/api/routes/analytics.ts +1 -1
  507. package/src/api/routes/apikeys.ts +1 -1
  508. package/src/api/routes/application.ts +12 -1
  509. package/src/api/routes/auth.ts +1 -1
  510. package/src/api/routes/automation.ts +1 -1
  511. package/src/api/routes/backup.ts +1 -1
  512. package/src/api/routes/cloud.ts +1 -1
  513. package/src/api/routes/component.ts +1 -1
  514. package/src/api/routes/datasource.ts +1 -1
  515. package/src/api/routes/deploy.ts +1 -2
  516. package/src/api/routes/dev.ts +1 -1
  517. package/src/api/routes/index.ts +6 -3
  518. package/src/api/routes/integration.ts +1 -1
  519. package/src/api/routes/layout.ts +1 -1
  520. package/src/api/routes/metadata.ts +1 -1
  521. package/src/api/routes/migrations.ts +1 -1
  522. package/src/api/routes/permission.ts +1 -1
  523. package/src/api/routes/public/applications.ts +44 -0
  524. package/src/api/routes/public/middleware/mapper.ts +4 -0
  525. package/src/api/routes/query.ts +1 -1
  526. package/src/api/routes/role.ts +1 -1
  527. package/src/api/routes/routing.ts +1 -1
  528. package/src/api/routes/row.ts +1 -1
  529. package/src/api/routes/screen.ts +1 -1
  530. package/src/api/routes/script.ts +1 -1
  531. package/src/api/routes/static.ts +2 -2
  532. package/src/api/routes/table.ts +16 -39
  533. package/src/api/routes/templates.ts +1 -1
  534. package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +0 -0
  535. package/src/api/routes/tests/{application.spec.js → application.spec.ts} +94 -18
  536. package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -6
  537. package/src/api/routes/tests/cloud.spec.ts +65 -0
  538. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  539. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  540. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  541. package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +56 -14
  542. package/src/api/routes/tests/misc.spec.js +4 -10
  543. package/src/api/routes/tests/permissions.spec.js +1 -1
  544. package/src/api/routes/tests/plugin.spec.ts +179 -0
  545. package/src/api/routes/tests/routing.spec.js +1 -2
  546. package/src/api/routes/tests/row.spec.js +4 -2
  547. package/src/api/routes/tests/static.spec.js +2 -17
  548. package/src/api/routes/tests/table.spec.js +16 -32
  549. package/src/api/routes/tests/user.spec.js +105 -0
  550. package/src/api/routes/tests/utilities/TestFunctions.ts +1 -1
  551. package/src/api/routes/tests/utilities/index.ts +2 -2
  552. package/src/api/routes/tests/webhook.spec.js +1 -1
  553. package/src/api/routes/user.ts +1 -1
  554. package/src/api/routes/utils/validators.ts +1 -1
  555. package/src/api/routes/view.ts +1 -1
  556. package/src/api/routes/webhook.ts +1 -1
  557. package/src/app.ts +5 -3
  558. package/src/automations/automationUtils.ts +24 -0
  559. package/src/automations/logging/index.ts +1 -1
  560. package/src/automations/tests/bash.spec.js +34 -0
  561. package/src/automations/tests/discord.spec.js +27 -0
  562. package/src/automations/tests/executeQuery.spec.js +49 -0
  563. package/src/automations/tests/executeScript.spec.js +48 -0
  564. package/src/automations/tests/loop.spec.ts +45 -0
  565. package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
  566. package/src/automations/tests/serverLog.spec.js +22 -0
  567. package/src/automations/tests/utilities/index.ts +2 -2
  568. package/src/automations/tests/zapier.spec.js +27 -0
  569. package/src/automations/triggers.ts +6 -1
  570. package/src/automations/unitTests/automationUtils.spec.ts +65 -0
  571. package/src/db/index.ts +1 -1
  572. package/src/db/linkedRows/LinkController.ts +1 -1
  573. package/src/db/linkedRows/LinkDocument.ts +1 -1
  574. package/src/db/newid.ts +1 -1
  575. package/src/db/tests/linkController.spec.js +1 -1
  576. package/src/definitions/automations.ts +1 -0
  577. package/src/definitions/datasource.ts +0 -41
  578. package/src/definitions/openapi.ts +10 -0
  579. package/src/environment.ts +6 -2
  580. package/src/events/AutomationEmitter.ts +1 -1
  581. package/src/events/BudibaseEmitter.ts +1 -1
  582. package/src/events/index.ts +1 -1
  583. package/src/index.ts +1 -1
  584. package/src/integrations/base/query.ts +3 -1
  585. package/src/integrations/base/sqlTable.ts +1 -1
  586. package/src/integrations/couchdb.ts +40 -14
  587. package/src/integrations/dynamodb.ts +3 -3
  588. package/src/integrations/elasticsearch.ts +8 -4
  589. package/src/integrations/googlesheets.ts +1 -1
  590. package/src/integrations/index.ts +5 -9
  591. package/src/integrations/mongodb.ts +315 -271
  592. package/src/integrations/mysql.ts +1 -1
  593. package/src/integrations/queries/sql.ts +5 -50
  594. package/src/integrations/rest.ts +16 -19
  595. package/src/integrations/tests/couchdb.spec.ts +33 -21
  596. package/src/integrations/tests/rest.spec.ts +19 -15
  597. package/src/middleware/authorized.ts +5 -1
  598. package/src/middleware/builder.ts +1 -1
  599. package/src/middleware/currentapp.ts +4 -3
  600. package/src/middleware/publicApi.ts +1 -1
  601. package/src/middleware/selfhost.ts +1 -1
  602. package/src/middleware/tests/authorized.spec.js +1 -1
  603. package/src/middleware/tests/currentapp.spec.js +1 -1
  604. package/src/middleware/tests/selfhost.spec.js +1 -1
  605. package/src/migrations/functions/backfill/global/configs.ts +5 -4
  606. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  607. package/src/sdk/app/backups/imports.ts +2 -6
  608. package/src/sdk/app/datasources/datasources.ts +136 -0
  609. package/src/sdk/app/datasources/index.ts +5 -0
  610. package/src/sdk/app/queries/index.ts +5 -0
  611. package/src/sdk/app/queries/queries.ts +50 -0
  612. package/src/sdk/app/tables/index.ts +6 -3
  613. package/src/sdk/index.ts +4 -0
  614. package/src/sdk/tests/attachments.spec.ts +1 -4
  615. package/src/sdk/utils/index.ts +16 -0
  616. package/src/startup.ts +3 -8
  617. package/src/tests/jestEnv.ts +13 -0
  618. package/src/tests/jestSetup.ts +4 -15
  619. package/src/tests/utilities/TestConfiguration.ts +38 -16
  620. package/src/tests/utilities/structures.ts +65 -2
  621. package/src/threads/automation.ts +22 -35
  622. package/src/threads/definitions.ts +3 -0
  623. package/src/threads/index.ts +1 -1
  624. package/src/threads/query.ts +28 -15
  625. package/src/utilities/fileSystem/app.ts +86 -0
  626. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  627. package/src/utilities/fileSystem/filesystem.ts +172 -0
  628. package/src/utilities/fileSystem/index.ts +5 -348
  629. package/src/utilities/fileSystem/plugin.ts +64 -0
  630. package/src/utilities/fileSystem/template.ts +36 -0
  631. package/src/utilities/index.ts +1 -45
  632. package/src/utilities/rowProcessor/index.ts +17 -8
  633. package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
  634. package/src/utilities/schema.ts +141 -0
  635. package/src/utilities/scriptRunner.ts +1 -1
  636. package/src/utilities/statusCodes.ts +1 -1
  637. package/src/utilities/workerRequests.ts +10 -1
  638. package/src/watch.ts +1 -1
  639. package/tsconfig.build.json +2 -0
  640. package/tsconfig.json +2 -1
  641. package/builder/assets/index.01a9ab3b.js +0 -1024
  642. package/builder/assets/index.96b9ffed.css +0 -6
  643. package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
  644. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  645. package/dist/api/routes/tests/utilities/index.js +0 -131
  646. package/dist/automations/tests/utilities/index.js +0 -81
  647. package/dist/tests/utilities/TestConfiguration.js +0 -562
  648. package/dist/tests/utilities/controllers.js +0 -40
  649. package/dist/tests/utilities/structures.js +0 -168
  650. package/dist/utilities/csvParser.js +0 -152
  651. package/dist/utilities/plugins.js +0 -26
  652. package/src/api/routes/tests/deployment.spec.ts +0 -25
  653. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  654. package/src/utilities/csvParser.ts +0 -161
  655. package/src/utilities/plugins.ts +0 -22
  656. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  657. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -0,0 +1,97 @@
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.cleanup = exports.getComponentLibraryManifest = exports.deleteApp = exports.createApp = exports.NODE_MODULES_PATH = void 0;
16
+ const budibaseDir_1 = require("../budibaseDir");
17
+ const fs_1 = __importDefault(require("fs"));
18
+ const path_1 = require("path");
19
+ const constants_1 = require("../../constants");
20
+ const clientLibrary_1 = require("./clientLibrary");
21
+ const environment_1 = __importDefault(require("../../environment"));
22
+ const backend_core_1 = require("@budibase/backend-core");
23
+ const filesystem_1 = require("./filesystem");
24
+ exports.NODE_MODULES_PATH = (0, path_1.join)(filesystem_1.TOP_LEVEL_PATH, "node_modules");
25
+ /**
26
+ * Uploads the latest client library to the object store.
27
+ * @param {string} appId The ID of the app which is being created.
28
+ * @return {Promise<void>} once promise completes app resources should be ready in object store.
29
+ */
30
+ const createApp = (appId) => __awaiter(void 0, void 0, void 0, function* () {
31
+ yield (0, clientLibrary_1.updateClientLibrary)(appId);
32
+ });
33
+ exports.createApp = createApp;
34
+ /**
35
+ * Removes all of the assets created for an app in the object store.
36
+ * @param {string} appId The ID of the app which is being deleted.
37
+ * @return {Promise<void>} once promise completes the app resources will be removed from object store.
38
+ */
39
+ const deleteApp = (appId) => __awaiter(void 0, void 0, void 0, function* () {
40
+ yield backend_core_1.objectStore.deleteFolder(constants_1.ObjectStoreBuckets.APPS, `${appId}/`);
41
+ });
42
+ exports.deleteApp = deleteApp;
43
+ /**
44
+ * Retrieves component libraries from object store (or tmp symlink if in local)
45
+ */
46
+ const getComponentLibraryManifest = (library) => __awaiter(void 0, void 0, void 0, function* () {
47
+ const appId = backend_core_1.context.getAppId();
48
+ const filename = "manifest.json";
49
+ /* istanbul ignore next */
50
+ // when testing in cypress and so on we need to get the package
51
+ // as the environment may not be fully fleshed out for dev or prod
52
+ if (environment_1.default.isTest()) {
53
+ library = library.replace("standard-components", "client");
54
+ const lib = library.split("/")[1];
55
+ const path = require.resolve(library).split(lib)[0];
56
+ return require((0, path_1.join)(path, lib, filename));
57
+ }
58
+ else if (environment_1.default.isDev()) {
59
+ const path = (0, path_1.join)(exports.NODE_MODULES_PATH, "@budibase", "client", filename);
60
+ // always load from new so that updates are refreshed
61
+ delete require.cache[require.resolve(path)];
62
+ return require(path);
63
+ }
64
+ if (!appId) {
65
+ throw new Error("No app ID found - cannot get component libraries");
66
+ }
67
+ let resp;
68
+ let path;
69
+ try {
70
+ // Try to load the manifest from the new file location
71
+ path = (0, path_1.join)(appId, filename);
72
+ resp = yield backend_core_1.objectStore.retrieve(constants_1.ObjectStoreBuckets.APPS, path);
73
+ }
74
+ catch (error) {
75
+ console.error(`component-manifest-objectstore=failed appId=${appId} path=${path}`, error);
76
+ // Fallback to loading it from the old location for old apps
77
+ path = (0, path_1.join)(appId, "node_modules", library, "package", filename);
78
+ resp = yield backend_core_1.objectStore.retrieve(constants_1.ObjectStoreBuckets.APPS, path);
79
+ }
80
+ if (typeof resp !== "string") {
81
+ resp = resp.toString("utf8");
82
+ }
83
+ return JSON.parse(resp);
84
+ });
85
+ exports.getComponentLibraryManifest = getComponentLibraryManifest;
86
+ /**
87
+ * Given a set of app IDs makes sure file system is cleared of any of their temp info.
88
+ */
89
+ const cleanup = (appIds) => {
90
+ for (let appId of appIds) {
91
+ const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), appId);
92
+ if (fs_1.default.existsSync(path)) {
93
+ fs_1.default.rmdirSync(path, { recursive: true });
94
+ }
95
+ }
96
+ };
97
+ exports.cleanup = cleanup;
@@ -19,7 +19,7 @@ const fs_1 = __importDefault(require("fs"));
19
19
  const backend_core_1 = require("@budibase/backend-core");
20
20
  const centralPath_1 = require("../centralPath");
21
21
  const environment_1 = __importDefault(require("../../environment"));
22
- const TOP_LEVEL_PATH = (0, path_1.join)(__dirname, "..", "..", "..");
22
+ const filesystem_1 = require("./filesystem");
23
23
  /**
24
24
  * Client library paths in the object store:
25
25
  * Previously, the entire client library package was downloaded from NPM
@@ -93,8 +93,8 @@ function updateClientLibrary(appId) {
93
93
  }
94
94
  else {
95
95
  // Load the bundled version in prod
96
- manifest = (0, centralPath_1.resolve)(TOP_LEVEL_PATH, "client", "manifest.json");
97
- client = (0, centralPath_1.resolve)(TOP_LEVEL_PATH, "client", "budibase-client.js");
96
+ manifest = (0, centralPath_1.resolve)(filesystem_1.TOP_LEVEL_PATH, "client", "manifest.json");
97
+ client = (0, centralPath_1.resolve)(filesystem_1.TOP_LEVEL_PATH, "client", "budibase-client.js");
98
98
  }
99
99
  // Upload latest manifest and client library
100
100
  const manifestUpload = backend_core_1.objectStore.streamUpload(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "manifest.json"), fs_1.default.createReadStream(manifest), {
@@ -0,0 +1,184 @@
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 fs_1 = __importDefault(require("fs"));
17
+ const budibaseDir_1 = require("../budibaseDir");
18
+ const path_1 = require("path");
19
+ const environment_1 = __importDefault(require("../../environment"));
20
+ const tar_1 = __importDefault(require("tar"));
21
+ const uuid = require("uuid/v4");
22
+ exports.TOP_LEVEL_PATH = (0, path_1.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 = (0, budibaseDir_1.budibaseTempDir)();
28
+ if (!fs_1.default.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_1.default.mkdirSync(tempDir);
33
+ }
34
+ catch (err) {
35
+ if (!err || err.code !== "EEXIST") {
36
+ throw err;
37
+ }
38
+ }
39
+ }
40
+ const clientLibPath = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), "budibase-client.js");
41
+ if (environment_1.default.isTest() && !fs_1.default.existsSync(clientLibPath)) {
42
+ fs_1.default.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 (!environment_1.default.isDev() || environment_1.default.isTest()) {
52
+ return;
53
+ }
54
+ if (!fs_1.default.existsSync((0, budibaseDir_1.budibaseTempDir)())) {
55
+ fs_1.default.mkdirSync((0, budibaseDir_1.budibaseTempDir)());
56
+ }
57
+ let error;
58
+ if (!fs_1.default.existsSync((0, path_1.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_1.default.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 = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), uuid());
86
+ fs_1.default.writeFileSync(path, contents);
87
+ return fs_1.default.createReadStream(path);
88
+ };
89
+ exports.apiFileReturn = apiFileReturn;
90
+ const streamFile = (path) => {
91
+ return fs_1.default.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 = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), uuid());
101
+ fs_1.default.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_1.default.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_1.default.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
+ // @ts-ignore
129
+ return fs_1.default.readFileSync(filepath, options);
130
+ };
131
+ exports.readFileSync = readFileSync;
132
+ const createTempFolder = (item) => {
133
+ const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), item);
134
+ try {
135
+ // remove old tmp directories automatically - don't combine
136
+ if (fs_1.default.existsSync(path)) {
137
+ fs_1.default.rmSync(path, { recursive: true, force: true });
138
+ }
139
+ fs_1.default.mkdirSync(path);
140
+ }
141
+ catch (err) {
142
+ throw new Error(`Path cannot be created: ${err.message}`);
143
+ }
144
+ return path;
145
+ };
146
+ exports.createTempFolder = createTempFolder;
147
+ const extractTarball = (fromFilePath, toPath) => __awaiter(void 0, void 0, void 0, function* () {
148
+ yield tar_1.default.extract({
149
+ file: fromFilePath,
150
+ C: toPath,
151
+ });
152
+ });
153
+ exports.extractTarball = extractTarball;
154
+ /**
155
+ * Find for a file recursively from start path applying filter, return first match
156
+ */
157
+ const findFileRec = (startPath, filter) => {
158
+ if (!fs_1.default.existsSync(startPath)) {
159
+ return;
160
+ }
161
+ const files = fs_1.default.readdirSync(startPath);
162
+ for (let i = 0, len = files.length; i < len; i++) {
163
+ // @ts-ignore
164
+ const filename = (0, path_1.join)(startPath, files[i]);
165
+ const stat = fs_1.default.lstatSync(filename);
166
+ if (stat.isDirectory()) {
167
+ return (0, exports.findFileRec)(filename, filter);
168
+ }
169
+ else if (filename.endsWith(filter)) {
170
+ return filename;
171
+ }
172
+ }
173
+ };
174
+ exports.findFileRec = findFileRec;
175
+ /**
176
+ * Remove a folder which is not empty from the file system
177
+ */
178
+ const deleteFolderFileSystem = (path) => {
179
+ if (!fs_1.default.existsSync(path)) {
180
+ return;
181
+ }
182
+ fs_1.default.rmSync(path, { recursive: true, force: true });
183
+ };
184
+ exports.deleteFolderFileSystem = deleteFolderFileSystem;
@@ -1,345 +1,21 @@
1
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 };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
13
15
  };
14
16
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.deleteFolderFileSystem = exports.findFileRec = exports.getDatasourcePlugin = exports.getPluginMetadata = exports.extractTarball = exports.createTempFolder = exports.cleanup = exports.readFileSync = exports.getComponentLibraryManifest = exports.downloadTemplate = exports.deleteApp = exports.createApp = exports.sendTempFile = exports.stringToFileStream = exports.storeTempFile = exports.streamFile = exports.apiFileReturn = exports.loadHandlebarsFile = exports.init = exports.NODE_MODULES_PATH = exports.TOP_LEVEL_PATH = void 0;
16
- const budibaseDir_1 = require("../budibaseDir");
17
- const fs_1 = __importDefault(require("fs"));
18
- const path_1 = require("path");
19
- const backend_core_1 = require("@budibase/backend-core");
20
- const constants_1 = require("../../constants");
21
- const clientLibrary_1 = require("./clientLibrary");
22
- const __1 = require("../");
23
- const environment_1 = __importDefault(require("../../environment"));
24
- const node_fetch_1 = __importDefault(require("node-fetch"));
25
- const uuid = require("uuid/v4");
26
- const tar = require("tar");
27
- exports.TOP_LEVEL_PATH = (0, path_1.join)(__dirname, "..", "..", "..");
28
- exports.NODE_MODULES_PATH = (0, path_1.join)(exports.TOP_LEVEL_PATH, "node_modules");
29
- const DATASOURCE_PATH = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), "datasource");
30
- /**
31
- * The single stack system (Cloud and Builder) should not make use of the file system where possible,
32
- * this file handles all of the file access for the system with the intention of limiting it all to one
33
- * place. Keeping all of this logic in one place means that when we need to do file system access (like
34
- * downloading a package or opening a temporary file) in can be done in way that we can confirm it shouldn't
35
- * be done through an object store instead.
36
- */
37
- /**
38
- * Upon first startup of instance there may not be everything we need in tmp directory, set it up.
39
- */
40
- function init() {
41
- const tempDir = (0, budibaseDir_1.budibaseTempDir)();
42
- if (!fs_1.default.existsSync(tempDir)) {
43
- // some test cases fire this quickly enough that
44
- // synchronous cases can end up here at the same time
45
- try {
46
- fs_1.default.mkdirSync(tempDir);
47
- }
48
- catch (err) {
49
- if (!err || err.code !== "EEXIST") {
50
- throw err;
51
- }
52
- }
53
- }
54
- const clientLibPath = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), "budibase-client.js");
55
- if (environment_1.default.isTest() && !fs_1.default.existsSync(clientLibPath)) {
56
- fs_1.default.copyFileSync(require.resolve("@budibase/client"), clientLibPath);
57
- }
58
- }
59
- exports.init = init;
60
- /**
61
- * Checks if the system is currently in development mode and if it is makes sure
62
- * everything required to function is ready.
63
- */
64
- exports.checkDevelopmentEnvironment = () => {
65
- if (!environment_1.default.isDev() || environment_1.default.isTest()) {
66
- return;
67
- }
68
- if (!fs_1.default.existsSync((0, budibaseDir_1.budibaseTempDir)())) {
69
- fs_1.default.mkdirSync((0, budibaseDir_1.budibaseTempDir)());
70
- }
71
- let error;
72
- if (!fs_1.default.existsSync((0, path_1.join)(process.cwd(), ".env"))) {
73
- error = "Must run via yarn once to generate environment.";
74
- }
75
- if (error) {
76
- console.error(error);
77
- process.exit(-1);
78
- }
79
- };
80
- /**
81
- * Used to retrieve a handlebars file from the system which will be used as a template.
82
- * This is allowable as the template handlebars files should be static and identical across
83
- * the cluster.
84
- * @param {string} path The path to the handlebars file which is to be loaded.
85
- * @returns {string} The loaded handlebars file as a string - loaded as utf8.
86
- */
87
- function loadHandlebarsFile(path) {
88
- return fs_1.default.readFileSync(path, "utf8");
89
- }
90
- exports.loadHandlebarsFile = loadHandlebarsFile;
91
- /**
92
- * When return a file from the API need to write the file to the system temporarily so we
93
- * can create a read stream to send.
94
- * @param {string} contents the contents of the file which is to be returned from the API.
95
- * @param {string} encoding the encoding of the file to return (utf8 default)
96
- * @return {Object} the read stream which can be put into the koa context body.
97
- */
98
- function apiFileReturn(contents, encoding = "utf8") {
99
- const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), uuid());
100
- fs_1.default.writeFileSync(path, contents, { encoding });
101
- return fs_1.default.createReadStream(path, { encoding });
102
- }
103
- exports.apiFileReturn = apiFileReturn;
104
- function streamFile(path) {
105
- return fs_1.default.createReadStream(path);
106
- }
107
- exports.streamFile = streamFile;
108
- /**
109
- * Writes the provided contents to a temporary file, which can be used briefly.
110
- * @param {string} fileContents contents which will be written to a temp file.
111
- * @return {string} the path to the temp file.
112
- */
113
- function storeTempFile(fileContents) {
114
- const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), uuid());
115
- fs_1.default.writeFileSync(path, fileContents);
116
- return path;
117
- }
118
- exports.storeTempFile = storeTempFile;
119
- /**
120
- * Utility function for getting a file read stream - a simple in memory buffered read
121
- * stream doesn't work for pouchdb.
122
- */
123
- function stringToFileStream(contents) {
124
- const path = exports.storeTempFile(contents);
125
- return fs_1.default.createReadStream(path);
126
- }
127
- exports.stringToFileStream = stringToFileStream;
128
- /**
129
- * Creates a temp file and returns it from the API.
130
- * @param {string} fileContents the contents to be returned in file.
131
- */
132
- function sendTempFile(fileContents) {
133
- const path = exports.storeTempFile(fileContents);
134
- return fs_1.default.createReadStream(path);
135
- }
136
- exports.sendTempFile = sendTempFile;
137
- /**
138
- * Uploads the latest client library to the object store.
139
- * @param {string} appId The ID of the app which is being created.
140
- * @return {Promise<void>} once promise completes app resources should be ready in object store.
141
- */
142
- function createApp(appId) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- yield (0, clientLibrary_1.updateClientLibrary)(appId);
145
- });
146
- }
147
- exports.createApp = createApp;
148
- /**
149
- * Removes all of the assets created for an app in the object store.
150
- * @param {string} appId The ID of the app which is being deleted.
151
- * @return {Promise<void>} once promise completes the app resources will be removed from object store.
152
- */
153
- function deleteApp(appId) {
154
- return __awaiter(this, void 0, void 0, function* () {
155
- yield backend_core_1.objectStore.deleteFolder(constants_1.ObjectStoreBuckets.APPS, `${appId}/`);
156
- });
157
- }
158
- exports.deleteApp = deleteApp;
159
- /**
160
- * Retrieves a template and pipes it to minio as well as making it available temporarily.
161
- * @param {string} type The type of template which is to be retrieved.
162
- * @param name
163
- * @return {Promise<*>}
164
- */
165
- function downloadTemplate(type, name) {
166
- return __awaiter(this, void 0, void 0, function* () {
167
- const DEFAULT_TEMPLATES_BUCKET = "prod-budi-templates.s3-eu-west-1.amazonaws.com";
168
- const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`;
169
- return backend_core_1.objectStore.downloadTarball(templateUrl, constants_1.ObjectStoreBuckets.TEMPLATES, type);
170
- });
171
- }
172
- exports.downloadTemplate = downloadTemplate;
173
- /**
174
- * Retrieves component libraries from object store (or tmp symlink if in local)
175
- */
176
- function getComponentLibraryManifest(library) {
177
- return __awaiter(this, void 0, void 0, function* () {
178
- const appId = backend_core_1.context.getAppId();
179
- const filename = "manifest.json";
180
- /* istanbul ignore next */
181
- // when testing in cypress and so on we need to get the package
182
- // as the environment may not be fully fleshed out for dev or prod
183
- if (environment_1.default.isTest()) {
184
- library = library.replace("standard-components", "client");
185
- const lib = library.split("/")[1];
186
- const path = require.resolve(library).split(lib)[0];
187
- return require((0, path_1.join)(path, lib, filename));
188
- }
189
- else if (environment_1.default.isDev()) {
190
- const path = (0, path_1.join)(exports.NODE_MODULES_PATH, "@budibase", "client", filename);
191
- // always load from new so that updates are refreshed
192
- delete require.cache[require.resolve(path)];
193
- return require(path);
194
- }
195
- if (!appId) {
196
- throw new Error("No app ID found - cannot get component libraries");
197
- }
198
- let resp;
199
- let path;
200
- try {
201
- // Try to load the manifest from the new file location
202
- path = (0, path_1.join)(appId, filename);
203
- resp = yield backend_core_1.objectStore.retrieve(constants_1.ObjectStoreBuckets.APPS, path);
204
- }
205
- catch (error) {
206
- console.error(`component-manifest-objectstore=failed appId=${appId} path=${path}`, error);
207
- // Fallback to loading it from the old location for old apps
208
- path = (0, path_1.join)(appId, "node_modules", library, "package", filename);
209
- resp = yield backend_core_1.objectStore.retrieve(constants_1.ObjectStoreBuckets.APPS, path);
210
- }
211
- if (typeof resp !== "string") {
212
- resp = resp.toString("utf8");
213
- }
214
- return JSON.parse(resp);
215
- });
216
- }
217
- exports.getComponentLibraryManifest = getComponentLibraryManifest;
218
- /**
219
- * All file reads come through here just to make sure all of them make sense
220
- * allows a centralised location to check logic is all good.
221
- */
222
- function readFileSync(filepath, options = "utf8") {
223
- return fs_1.default.readFileSync(filepath, { encoding: options });
224
- }
225
- exports.readFileSync = readFileSync;
226
- /**
227
- * Given a set of app IDs makes sure file system is cleared of any of their temp info.
228
- */
229
- function cleanup(appIds) {
230
- for (let appId of appIds) {
231
- const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), appId);
232
- if (fs_1.default.existsSync(path)) {
233
- fs_1.default.rmdirSync(path, { recursive: true });
234
- }
235
- }
236
- }
237
- exports.cleanup = cleanup;
238
- function createTempFolder(item) {
239
- const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), item);
240
- try {
241
- // remove old tmp directories automatically - don't combine
242
- if (fs_1.default.existsSync(path)) {
243
- fs_1.default.rmSync(path, { recursive: true, force: true });
244
- }
245
- fs_1.default.mkdirSync(path);
246
- }
247
- catch (err) {
248
- throw new Error(`Path cannot be created: ${err.message}`);
249
- }
250
- return path;
251
- }
252
- exports.createTempFolder = createTempFolder;
253
- function extractTarball(fromFilePath, toPath) {
254
- return __awaiter(this, void 0, void 0, function* () {
255
- yield tar.extract({
256
- file: fromFilePath,
257
- C: toPath,
258
- });
259
- });
260
- }
261
- exports.extractTarball = extractTarball;
262
- function getPluginMetadata(path) {
263
- return __awaiter(this, void 0, void 0, function* () {
264
- let metadata = {};
265
- try {
266
- const pkg = fs_1.default.readFileSync((0, path_1.join)(path, "package.json"), "utf8");
267
- const schema = fs_1.default.readFileSync((0, path_1.join)(path, "schema.json"), "utf8");
268
- metadata.schema = JSON.parse(schema);
269
- metadata.package = JSON.parse(pkg);
270
- if (!metadata.package.name ||
271
- !metadata.package.version ||
272
- !metadata.package.description) {
273
- throw new Error("package.json is missing one of 'name', 'version' or 'description'.");
274
- }
275
- }
276
- catch (err) {
277
- throw new Error(`Unable to process schema.json/package.json in plugin. ${err.message}`);
278
- }
279
- return { metadata, directory: path };
280
- });
281
- }
282
- exports.getPluginMetadata = getPluginMetadata;
283
- function getDatasourcePlugin(name, url, hash) {
284
- return __awaiter(this, void 0, void 0, function* () {
285
- if (!fs_1.default.existsSync(DATASOURCE_PATH)) {
286
- fs_1.default.mkdirSync(DATASOURCE_PATH);
287
- }
288
- const filename = (0, path_1.join)(DATASOURCE_PATH, name);
289
- const metadataName = `${filename}.bbmetadata`;
290
- if (fs_1.default.existsSync(filename)) {
291
- const currentHash = fs_1.default.readFileSync(metadataName, "utf8");
292
- // if hash is the same return the file, otherwise remove it and re-download
293
- if (currentHash === hash) {
294
- return require(filename);
295
- }
296
- else {
297
- console.log(`Updating plugin: ${name}`);
298
- delete require.cache[require.resolve(filename)];
299
- fs_1.default.unlinkSync(filename);
300
- }
301
- }
302
- const fullUrl = (0, __1.checkSlashesInUrl)(`${environment_1.default.MINIO_URL}/${constants_1.ObjectStoreBuckets.PLUGINS}/${url}`);
303
- const response = yield (0, node_fetch_1.default)(fullUrl);
304
- if (response.status === 200) {
305
- const content = yield response.text();
306
- fs_1.default.writeFileSync(filename, content);
307
- fs_1.default.writeFileSync(metadataName, hash);
308
- return require(filename);
309
- }
310
- else {
311
- throw new Error(`Unable to retrieve plugin - reason: ${yield response.text()}`);
312
- }
313
- });
314
- }
315
- exports.getDatasourcePlugin = getDatasourcePlugin;
316
- /**
317
- * Find for a file recursively from start path applying filter, return first match
318
- */
319
- function findFileRec(startPath, filter) {
320
- if (!fs_1.default.existsSync(startPath)) {
321
- return;
322
- }
323
- const files = fs_1.default.readdirSync(startPath);
324
- for (let i = 0, len = files.length; i < len; i++) {
325
- const filename = (0, path_1.join)(startPath, files[i]);
326
- const stat = fs_1.default.lstatSync(filename);
327
- if (stat.isDirectory()) {
328
- return exports.findFileRec(filename, filter);
329
- }
330
- else if (filename.endsWith(filter)) {
331
- return filename;
332
- }
333
- }
334
- }
335
- exports.findFileRec = findFileRec;
336
- /**
337
- * Remove a folder which is not empty from the file system
338
- */
339
- function deleteFolderFileSystem(path) {
340
- if (!fs_1.default.existsSync(path)) {
341
- return;
342
- }
343
- fs_1.default.rmSync(path, { recursive: true, force: true });
344
- }
345
- exports.deleteFolderFileSystem = deleteFolderFileSystem;
17
+ __exportStar(require("./app"), exports);
18
+ __exportStar(require("./clientLibrary"), exports);
19
+ __exportStar(require("./filesystem"), exports);
20
+ __exportStar(require("./plugin"), exports);
21
+ __exportStar(require("./template"), exports);