@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,172 @@
1
+ import { PathLike } from "fs"
2
+ import fs from "fs"
3
+ import { budibaseTempDir } from "../budibaseDir"
4
+ import { join } from "path"
5
+ import env from "../../environment"
6
+ import tar from "tar"
7
+ const uuid = require("uuid/v4")
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
+ // @ts-ignore
116
+ return fs.readFileSync(filepath, options)
117
+ }
118
+
119
+ export const createTempFolder = (item: any) => {
120
+ const path = join(budibaseTempDir(), item)
121
+ try {
122
+ // remove old tmp directories automatically - don't combine
123
+ if (fs.existsSync(path)) {
124
+ fs.rmSync(path, { recursive: true, force: true })
125
+ }
126
+ fs.mkdirSync(path)
127
+ } catch (err: any) {
128
+ throw new Error(`Path cannot be created: ${err.message}`)
129
+ }
130
+
131
+ return path
132
+ }
133
+
134
+ export const extractTarball = async (fromFilePath: string, toPath: string) => {
135
+ await tar.extract({
136
+ file: fromFilePath,
137
+ C: toPath,
138
+ })
139
+ }
140
+
141
+ /**
142
+ * Find for a file recursively from start path applying filter, return first match
143
+ */
144
+ export const findFileRec = (startPath: PathLike, filter: string): any => {
145
+ if (!fs.existsSync(startPath)) {
146
+ return
147
+ }
148
+
149
+ const files = fs.readdirSync(startPath)
150
+ for (let i = 0, len = files.length; i < len; i++) {
151
+ // @ts-ignore
152
+ const filename = join(startPath, files[i])
153
+ const stat = fs.lstatSync(filename)
154
+
155
+ if (stat.isDirectory()) {
156
+ return findFileRec(filename, filter)
157
+ } else if (filename.endsWith(filter)) {
158
+ return filename
159
+ }
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Remove a folder which is not empty from the file system
165
+ */
166
+ export const deleteFolderFileSystem = (path: PathLike) => {
167
+ if (!fs.existsSync(path)) {
168
+ return
169
+ }
170
+
171
+ fs.rmSync(path, { recursive: true, force: true })
172
+ }
@@ -1,348 +1,5 @@
1
- import { budibaseTempDir } from "../budibaseDir"
2
- import fs from "fs"
3
- import { join } from "path"
4
- import { context, objectStore } from "@budibase/backend-core"
5
- import { ObjectStoreBuckets } from "../../constants"
6
- import { updateClientLibrary } from "./clientLibrary"
7
- import { checkSlashesInUrl } from "../"
8
- import env from "../../environment"
9
- import fetch from "node-fetch"
10
- const uuid = require("uuid/v4")
11
- const tar = require("tar")
12
-
13
- export const TOP_LEVEL_PATH = join(__dirname, "..", "..", "..")
14
- export const NODE_MODULES_PATH = join(TOP_LEVEL_PATH, "node_modules")
15
- const DATASOURCE_PATH = join(budibaseTempDir(), "datasource")
16
-
17
- /**
18
- * The single stack system (Cloud and Builder) should not make use of the file system where possible,
19
- * this file handles all of the file access for the system with the intention of limiting it all to one
20
- * place. Keeping all of this logic in one place means that when we need to do file system access (like
21
- * downloading a package or opening a temporary file) in can be done in way that we can confirm it shouldn't
22
- * be done through an object store instead.
23
- */
24
-
25
- /**
26
- * Upon first startup of instance there may not be everything we need in tmp directory, set it up.
27
- */
28
- export function init() {
29
- const tempDir = budibaseTempDir()
30
- if (!fs.existsSync(tempDir)) {
31
- // some test cases fire this quickly enough that
32
- // synchronous cases can end up here at the same time
33
- try {
34
- fs.mkdirSync(tempDir)
35
- } catch (err: any) {
36
- if (!err || err.code !== "EEXIST") {
37
- throw err
38
- }
39
- }
40
- }
41
- const clientLibPath = join(budibaseTempDir(), "budibase-client.js")
42
- if (env.isTest() && !fs.existsSync(clientLibPath)) {
43
- fs.copyFileSync(require.resolve("@budibase/client"), clientLibPath)
44
- }
45
- }
46
-
47
- /**
48
- * Checks if the system is currently in development mode and if it is makes sure
49
- * everything required to function is ready.
50
- */
51
- exports.checkDevelopmentEnvironment = () => {
52
- if (!env.isDev() || env.isTest()) {
53
- return
54
- }
55
- if (!fs.existsSync(budibaseTempDir())) {
56
- fs.mkdirSync(budibaseTempDir())
57
- }
58
- let error
59
- if (!fs.existsSync(join(process.cwd(), ".env"))) {
60
- error = "Must run via yarn once to generate environment."
61
- }
62
- if (error) {
63
- console.error(error)
64
- process.exit(-1)
65
- }
66
- }
67
-
68
- /**
69
- * Used to retrieve a handlebars file from the system which will be used as a template.
70
- * This is allowable as the template handlebars files should be static and identical across
71
- * the cluster.
72
- * @param {string} path The path to the handlebars file which is to be loaded.
73
- * @returns {string} The loaded handlebars file as a string - loaded as utf8.
74
- */
75
- export function loadHandlebarsFile(path: string) {
76
- return fs.readFileSync(path, "utf8")
77
- }
78
-
79
- /**
80
- * When return a file from the API need to write the file to the system temporarily so we
81
- * can create a read stream to send.
82
- * @param {string} contents the contents of the file which is to be returned from the API.
83
- * @param {string} encoding the encoding of the file to return (utf8 default)
84
- * @return {Object} the read stream which can be put into the koa context body.
85
- */
86
- export function apiFileReturn(
87
- contents: string,
88
- encoding: BufferEncoding = "utf8"
89
- ) {
90
- const path = join(budibaseTempDir(), uuid())
91
- fs.writeFileSync(path, contents, { encoding })
92
- return fs.createReadStream(path, { encoding })
93
- }
94
-
95
- export function streamFile(path: string) {
96
- return fs.createReadStream(path)
97
- }
98
-
99
- /**
100
- * Writes the provided contents to a temporary file, which can be used briefly.
101
- * @param {string} fileContents contents which will be written to a temp file.
102
- * @return {string} the path to the temp file.
103
- */
104
- export function storeTempFile(fileContents: string) {
105
- const path = join(budibaseTempDir(), uuid())
106
- fs.writeFileSync(path, fileContents)
107
- return path
108
- }
109
-
110
- /**
111
- * Utility function for getting a file read stream - a simple in memory buffered read
112
- * stream doesn't work for pouchdb.
113
- */
114
- export function stringToFileStream(contents: string) {
115
- const path = exports.storeTempFile(contents)
116
- return fs.createReadStream(path)
117
- }
118
-
119
- /**
120
- * Creates a temp file and returns it from the API.
121
- * @param {string} fileContents the contents to be returned in file.
122
- */
123
- export function sendTempFile(fileContents: string) {
124
- const path = exports.storeTempFile(fileContents)
125
- return fs.createReadStream(path)
126
- }
127
-
128
- /**
129
- * Uploads the latest client library to the object store.
130
- * @param {string} appId The ID of the app which is being created.
131
- * @return {Promise<void>} once promise completes app resources should be ready in object store.
132
- */
133
- export async function createApp(appId: string) {
134
- await updateClientLibrary(appId)
135
- }
136
-
137
- /**
138
- * Removes all of the assets created for an app in the object store.
139
- * @param {string} appId The ID of the app which is being deleted.
140
- * @return {Promise<void>} once promise completes the app resources will be removed from object store.
141
- */
142
- export async function deleteApp(appId: string) {
143
- await objectStore.deleteFolder(ObjectStoreBuckets.APPS, `${appId}/`)
144
- }
145
-
146
- /**
147
- * Retrieves a template and pipes it to minio as well as making it available temporarily.
148
- * @param {string} type The type of template which is to be retrieved.
149
- * @param name
150
- * @return {Promise<*>}
151
- */
152
- export async function downloadTemplate(type: string, name: string) {
153
- const DEFAULT_TEMPLATES_BUCKET =
154
- "prod-budi-templates.s3-eu-west-1.amazonaws.com"
155
- const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`
156
- return objectStore.downloadTarball(
157
- templateUrl,
158
- ObjectStoreBuckets.TEMPLATES,
159
- type
160
- )
161
- }
162
-
163
- /**
164
- * Retrieves component libraries from object store (or tmp symlink if in local)
165
- */
166
- export async function getComponentLibraryManifest(library: string) {
167
- const appId = context.getAppId()
168
- const filename = "manifest.json"
169
- /* istanbul ignore next */
170
- // when testing in cypress and so on we need to get the package
171
- // as the environment may not be fully fleshed out for dev or prod
172
- if (env.isTest()) {
173
- library = library.replace("standard-components", "client")
174
- const lib = library.split("/")[1]
175
- const path = require.resolve(library).split(lib)[0]
176
- return require(join(path, lib, filename))
177
- } else if (env.isDev()) {
178
- const path = join(NODE_MODULES_PATH, "@budibase", "client", filename)
179
- // always load from new so that updates are refreshed
180
- delete require.cache[require.resolve(path)]
181
- return require(path)
182
- }
183
-
184
- if (!appId) {
185
- throw new Error("No app ID found - cannot get component libraries")
186
- }
187
-
188
- let resp
189
- let path
190
- try {
191
- // Try to load the manifest from the new file location
192
- path = join(appId, filename)
193
- resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
194
- } catch (error) {
195
- console.error(
196
- `component-manifest-objectstore=failed appId=${appId} path=${path}`,
197
- error
198
- )
199
- // Fallback to loading it from the old location for old apps
200
- path = join(appId, "node_modules", library, "package", filename)
201
- resp = await objectStore.retrieve(ObjectStoreBuckets.APPS, path)
202
- }
203
- if (typeof resp !== "string") {
204
- resp = resp.toString("utf8")
205
- }
206
- return JSON.parse(resp)
207
- }
208
-
209
- /**
210
- * All file reads come through here just to make sure all of them make sense
211
- * allows a centralised location to check logic is all good.
212
- */
213
- export function readFileSync(
214
- filepath: string,
215
- options: BufferEncoding = "utf8"
216
- ) {
217
- return fs.readFileSync(filepath, { encoding: options })
218
- }
219
-
220
- /**
221
- * Given a set of app IDs makes sure file system is cleared of any of their temp info.
222
- */
223
- export function cleanup(appIds: string[]) {
224
- for (let appId of appIds) {
225
- const path = join(budibaseTempDir(), appId)
226
- if (fs.existsSync(path)) {
227
- fs.rmdirSync(path, { recursive: true })
228
- }
229
- }
230
- }
231
-
232
- export function createTempFolder(item: string) {
233
- const path = join(budibaseTempDir(), item)
234
- try {
235
- // remove old tmp directories automatically - don't combine
236
- if (fs.existsSync(path)) {
237
- fs.rmSync(path, { recursive: true, force: true })
238
- }
239
- fs.mkdirSync(path)
240
- } catch (err: any) {
241
- throw new Error(`Path cannot be created: ${err.message}`)
242
- }
243
-
244
- return path
245
- }
246
-
247
- export async function extractTarball(fromFilePath: string, toPath: string) {
248
- await tar.extract({
249
- file: fromFilePath,
250
- C: toPath,
251
- })
252
- }
253
-
254
- export async function getPluginMetadata(path: string) {
255
- let metadata: { schema?: any; package?: any } = {}
256
- try {
257
- const pkg = fs.readFileSync(join(path, "package.json"), "utf8")
258
- const schema = fs.readFileSync(join(path, "schema.json"), "utf8")
259
-
260
- metadata.schema = JSON.parse(schema)
261
- metadata.package = JSON.parse(pkg)
262
-
263
- if (
264
- !metadata.package.name ||
265
- !metadata.package.version ||
266
- !metadata.package.description
267
- ) {
268
- throw new Error(
269
- "package.json is missing one of 'name', 'version' or 'description'."
270
- )
271
- }
272
- } catch (err: any) {
273
- throw new Error(
274
- `Unable to process schema.json/package.json in plugin. ${err.message}`
275
- )
276
- }
277
-
278
- return { metadata, directory: path }
279
- }
280
-
281
- export async function getDatasourcePlugin(
282
- name: string,
283
- url: string,
284
- hash: string
285
- ) {
286
- if (!fs.existsSync(DATASOURCE_PATH)) {
287
- fs.mkdirSync(DATASOURCE_PATH)
288
- }
289
- const filename = join(DATASOURCE_PATH, name)
290
- const metadataName = `${filename}.bbmetadata`
291
- if (fs.existsSync(filename)) {
292
- const currentHash = fs.readFileSync(metadataName, "utf8")
293
- // if hash is the same return the file, otherwise remove it and re-download
294
- if (currentHash === hash) {
295
- return require(filename)
296
- } else {
297
- console.log(`Updating plugin: ${name}`)
298
- delete require.cache[require.resolve(filename)]
299
- fs.unlinkSync(filename)
300
- }
301
- }
302
- const fullUrl = checkSlashesInUrl(
303
- `${env.MINIO_URL}/${ObjectStoreBuckets.PLUGINS}/${url}`
304
- )
305
- const response = await fetch(fullUrl)
306
- if (response.status === 200) {
307
- const content = await response.text()
308
- fs.writeFileSync(filename, content)
309
- fs.writeFileSync(metadataName, hash)
310
- return require(filename)
311
- } else {
312
- throw new Error(
313
- `Unable to retrieve plugin - reason: ${await response.text()}`
314
- )
315
- }
316
- }
317
-
318
- /**
319
- * Find for a file recursively from start path applying filter, return first match
320
- */
321
- export function findFileRec(startPath: string, filter: any) {
322
- if (!fs.existsSync(startPath)) {
323
- return
324
- }
325
-
326
- const files = fs.readdirSync(startPath)
327
- for (let i = 0, len = files.length; i < len; i++) {
328
- const filename = join(startPath, files[i])
329
- const stat = fs.lstatSync(filename)
330
-
331
- if (stat.isDirectory()) {
332
- return exports.findFileRec(filename, filter)
333
- } else if (filename.endsWith(filter)) {
334
- return filename
335
- }
336
- }
337
- }
338
-
339
- /**
340
- * Remove a folder which is not empty from the file system
341
- */
342
- export function deleteFolderFileSystem(path: string) {
343
- if (!fs.existsSync(path)) {
344
- return
345
- }
346
-
347
- fs.rmSync(path, { recursive: true, force: true })
348
- }
1
+ export * from "./app"
2
+ export * from "./clientLibrary"
3
+ export * from "./filesystem"
4
+ export * from "./plugin"
5
+ export * from "./template"
@@ -0,0 +1,64 @@
1
+ import { Plugin } from "@budibase/types"
2
+ import { budibaseTempDir } from "../budibaseDir"
3
+ import fs from "fs"
4
+ import { join } from "path"
5
+ import { objectStore } from "@budibase/backend-core"
6
+
7
+ const DATASOURCE_PATH = join(budibaseTempDir(), "datasource")
8
+
9
+ export const getPluginMetadata = async (path: string) => {
10
+ let metadata: any = {}
11
+ try {
12
+ const pkg = fs.readFileSync(join(path, "package.json"), "utf8")
13
+ const schema = fs.readFileSync(join(path, "schema.json"), "utf8")
14
+
15
+ metadata.schema = JSON.parse(schema)
16
+ metadata.package = JSON.parse(pkg)
17
+
18
+ if (
19
+ !metadata.package.name ||
20
+ !metadata.package.version ||
21
+ !metadata.package.description
22
+ ) {
23
+ throw new Error(
24
+ "package.json is missing one of 'name', 'version' or 'description'."
25
+ )
26
+ }
27
+ } catch (err: any) {
28
+ throw new Error(
29
+ `Unable to process schema.json/package.json in plugin. ${err.message}`
30
+ )
31
+ }
32
+
33
+ return { metadata, directory: path }
34
+ }
35
+
36
+ export const getDatasourcePlugin = async (plugin: Plugin) => {
37
+ const hash = plugin.schema?.hash
38
+ if (!fs.existsSync(DATASOURCE_PATH)) {
39
+ fs.mkdirSync(DATASOURCE_PATH)
40
+ }
41
+ const filename = join(DATASOURCE_PATH, plugin.name)
42
+ const metadataName = `${filename}.bbmetadata`
43
+ if (fs.existsSync(filename)) {
44
+ const currentHash = fs.readFileSync(metadataName, "utf8")
45
+ // if hash is the same return the file, otherwise remove it and re-download
46
+ if (currentHash === hash) {
47
+ return require(filename)
48
+ } else {
49
+ console.log(`Updating plugin: ${plugin.name}`)
50
+ delete require.cache[require.resolve(filename)]
51
+ fs.unlinkSync(filename)
52
+ }
53
+ }
54
+ const pluginKey = objectStore.getPluginJSKey(plugin)
55
+ const pluginJs = await objectStore.retrieve(
56
+ objectStore.ObjectStoreBuckets.PLUGINS,
57
+ pluginKey
58
+ )
59
+
60
+ fs.writeFileSync(filename, pluginJs)
61
+ fs.writeFileSync(metadataName, hash)
62
+
63
+ return require(filename)
64
+ }
@@ -0,0 +1,36 @@
1
+ import fs from "fs"
2
+ import { join } from "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,6 +1,5 @@
1
1
  import env from "../environment"
2
- import { OBJ_STORE_DIRECTORY } from "../constants"
3
- import { objectStore, context } from "@budibase/backend-core"
2
+ import { context } from "@budibase/backend-core"
4
3
  import { generateMetadataID } from "../db/utils"
5
4
  import { Document } from "@budibase/types"
6
5
  import stream from "stream"
@@ -32,49 +31,6 @@ export function checkSlashesInUrl(url: string) {
32
31
  return url.replace(/(https?:\/\/)|(\/)+/g, "$1$2")
33
32
  }
34
33
 
35
- /**
36
- * Gets the address of the object store, depending on whether self hosted or in cloud.
37
- * @return {string} The base URL of the object store (MinIO or S3).
38
- */
39
- export function objectStoreUrl() {
40
- if (env.SELF_HOSTED || env.MINIO_URL) {
41
- // can use a relative url for this as all goes through the proxy (this is hosted in minio)
42
- return OBJ_STORE_DIRECTORY
43
- } else {
44
- return env.CDN_URL
45
- }
46
- }
47
-
48
- /**
49
- * In production the client library is stored in the object store, however in development
50
- * we use the symlinked version produced by lerna, located in node modules. We link to this
51
- * via a specific endpoint (under /api/assets/client).
52
- * @param {string} appId In production we need the appId to look up the correct bucket, as the
53
- * version of the client lib may differ between apps.
54
- * @param {string} version The version to retrieve.
55
- * @return {string} The URL to be inserted into appPackage response or server rendered
56
- * app index file.
57
- */
58
- export function clientLibraryPath(appId: string, version: string) {
59
- if (env.isProd()) {
60
- let url = `${objectStoreUrl()}/${objectStore.sanitizeKey(
61
- appId
62
- )}/budibase-client.js`
63
-
64
- // append app version to bust the cache
65
- if (version) {
66
- url += `?v=${version}`
67
- }
68
- return url
69
- } else {
70
- return `/api/assets/client`
71
- }
72
- }
73
-
74
- export function attachmentsRelativeURL(attachmentKey: string) {
75
- return checkSlashesInUrl(`${objectStoreUrl()}/${attachmentKey}`)
76
- }
77
-
78
34
  export async function updateEntityMetadata(
79
35
  type: string,
80
36
  entityId: string,