@budibase/server 2.1.22-alpha.6 → 2.1.22-alpha.7

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 (419) hide show
  1. package/__mocks__/node-fetch.ts +5 -1
  2. package/builder/assets/{index.5ec5f06c.js → index.22484e23.js} +1 -1
  3. package/builder/index.html +1 -1
  4. package/coverage/clover.xml +1182 -1209
  5. package/coverage/coverage-final.json +35 -35
  6. package/coverage/lcov-report/index.html +94 -94
  7. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  8. package/coverage/lcov-report/src/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/application.ts.html +45 -60
  10. package/coverage/lcov-report/src/api/controllers/auth.ts.html +7 -4
  11. package/coverage/lcov-report/src/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
  13. package/coverage/lcov-report/src/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
  15. package/coverage/lcov-report/src/api/controllers/datasource.js.html +1 -1
  16. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.js.html +1 -1
  17. package/coverage/lcov-report/src/api/controllers/deploy/index.html +10 -10
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +19 -55
  19. package/coverage/lcov-report/src/api/controllers/{dev.js.html → dev.ts.html} +46 -64
  20. package/coverage/lcov-report/src/api/controllers/index.html +25 -25
  21. package/coverage/lcov-report/src/api/controllers/integration.js.html +1 -1
  22. package/coverage/lcov-report/src/api/controllers/layout.js.html +1 -1
  23. package/coverage/lcov-report/src/api/controllers/metadata.js.html +1 -1
  24. package/coverage/lcov-report/src/api/controllers/migrations.js.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/permission.js.html +1 -1
  26. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +1 -1
  27. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +1 -1
  28. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +1 -1
  31. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +1 -1
  32. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +1 -1
  33. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +1 -1
  34. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +37 -19
  35. package/coverage/lcov-report/src/api/controllers/public/index.html +16 -16
  36. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
  44. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
  46. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
  47. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
  48. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/index.html +10 -10
  58. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +17 -26
  59. package/coverage/lcov-report/src/api/controllers/query/validation.js.html +1 -1
  60. package/coverage/lcov-report/src/api/controllers/role.js.html +1 -1
  61. package/coverage/lcov-report/src/api/controllers/routing.js.html +1 -1
  62. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +1 -1
  63. package/coverage/lcov-report/src/api/controllers/row/external.js.html +1 -1
  64. package/coverage/lcov-report/src/api/controllers/row/index.html +1 -1
  65. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +1 -1
  66. package/coverage/lcov-report/src/api/controllers/row/internal.js.html +3 -3
  67. package/coverage/lcov-report/src/api/controllers/row/internalSearch.js.html +1 -1
  68. package/coverage/lcov-report/src/api/controllers/row/staticFormula.js.html +1 -1
  69. package/coverage/lcov-report/src/api/controllers/row/utils.js.html +1 -1
  70. package/coverage/lcov-report/src/api/controllers/screen.ts.html +1 -1
  71. package/coverage/lcov-report/src/api/controllers/script.js.html +1 -1
  72. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  73. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +1 -1
  74. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.js.html +1 -1
  75. package/coverage/lcov-report/src/api/controllers/table/external.js.html +1 -1
  76. package/coverage/lcov-report/src/api/controllers/table/index.html +1 -1
  77. package/coverage/lcov-report/src/api/controllers/table/index.js.html +1 -1
  78. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +1 -1
  79. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1 -1
  80. package/coverage/lcov-report/src/api/controllers/templates.js.html +1 -1
  81. package/coverage/lcov-report/src/api/controllers/user.js.html +1 -1
  82. package/coverage/lcov-report/src/api/controllers/view/exporters.js.html +1 -1
  83. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  84. package/coverage/lcov-report/src/api/controllers/view/index.js.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/utils.js.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.js.html +1 -1
  87. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +1 -1
  88. package/coverage/lcov-report/src/api/index.html +1 -1
  89. package/coverage/lcov-report/src/api/index.js.html +1 -1
  90. package/coverage/lcov-report/src/api/routes/analytics.js.html +1 -1
  91. package/coverage/lcov-report/src/api/routes/apikeys.js.html +1 -1
  92. package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
  93. package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
  94. package/coverage/lcov-report/src/api/routes/automation.js.html +5 -5
  95. package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
  96. package/coverage/lcov-report/src/api/routes/cloud.js.html +1 -1
  97. package/coverage/lcov-report/src/api/routes/component.js.html +1 -1
  98. package/coverage/lcov-report/src/api/routes/datasource.js.html +6 -6
  99. package/coverage/lcov-report/src/api/routes/deploy.js.html +1 -1
  100. package/coverage/lcov-report/src/api/routes/dev.js.html +1 -1
  101. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  102. package/coverage/lcov-report/src/api/routes/index.ts.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/integration.js.html +1 -1
  104. package/coverage/lcov-report/src/api/routes/layout.js.html +1 -1
  105. package/coverage/lcov-report/src/api/routes/metadata.js.html +1 -1
  106. package/coverage/lcov-report/src/api/routes/migrations.js.html +1 -1
  107. package/coverage/lcov-report/src/api/routes/permission.js.html +1 -1
  108. package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
  109. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +1 -1
  110. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  111. package/coverage/lcov-report/src/api/routes/public/index.ts.html +11 -11
  112. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
  115. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
  116. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
  117. package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/query.js.html +6 -6
  121. package/coverage/lcov-report/src/api/routes/role.js.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/routing.js.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/row.ts.html +13 -13
  124. package/coverage/lcov-report/src/api/routes/screen.js.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/script.js.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/static.ts.html +6 -6
  127. package/coverage/lcov-report/src/api/routes/table.js.html +4 -4
  128. package/coverage/lcov-report/src/api/routes/templates.js.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  130. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  131. package/coverage/lcov-report/src/api/routes/tests/utilities/index.js.html +1 -1
  132. package/coverage/lcov-report/src/api/routes/user.js.html +11 -11
  133. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  134. package/coverage/lcov-report/src/api/routes/utils/validators.js.html +6 -6
  135. package/coverage/lcov-report/src/api/routes/view.js.html +4 -4
  136. package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
  137. package/coverage/lcov-report/src/app.ts.html +1 -1
  138. package/coverage/lcov-report/src/automations/actions.js.html +1 -1
  139. package/coverage/lcov-report/src/automations/automationUtils.js.html +1 -1
  140. package/coverage/lcov-report/src/automations/bullboard.js.html +1 -1
  141. package/coverage/lcov-report/src/automations/index.html +15 -15
  142. package/coverage/lcov-report/src/automations/index.js.html +1 -1
  143. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  144. package/coverage/lcov-report/src/automations/logging/index.ts.html +1 -1
  145. package/coverage/lcov-report/src/automations/steps/bash.js.html +1 -1
  146. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
  147. package/coverage/lcov-report/src/automations/steps/delay.js.html +1 -1
  148. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
  149. package/coverage/lcov-report/src/automations/steps/discord.js.html +1 -1
  150. package/coverage/lcov-report/src/automations/steps/executeQuery.js.html +1 -1
  151. package/coverage/lcov-report/src/automations/steps/executeScript.js.html +1 -1
  152. package/coverage/lcov-report/src/automations/steps/filter.js.html +1 -1
  153. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  154. package/coverage/lcov-report/src/automations/steps/integromat.js.html +1 -1
  155. package/coverage/lcov-report/src/automations/steps/loop.js.html +1 -1
  156. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.js.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/queryRows.js.html +1 -1
  158. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.js.html +1 -1
  159. package/coverage/lcov-report/src/automations/steps/serverLog.js.html +1 -1
  160. package/coverage/lcov-report/src/automations/steps/slack.js.html +1 -1
  161. package/coverage/lcov-report/src/automations/steps/updateRow.js.html +1 -1
  162. package/coverage/lcov-report/src/automations/steps/utils.js.html +1 -1
  163. package/coverage/lcov-report/src/automations/steps/zapier.js.html +1 -1
  164. package/coverage/lcov-report/src/automations/tests/utilities/index.html +17 -17
  165. package/coverage/lcov-report/src/automations/tests/utilities/index.js.html +33 -15
  166. package/coverage/lcov-report/src/automations/triggerInfo/app.js.html +1 -1
  167. package/coverage/lcov-report/src/automations/triggerInfo/cron.js.html +1 -1
  168. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/index.js.html +1 -1
  170. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.js.html +1 -1
  171. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.js.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.js.html +1 -1
  173. package/coverage/lcov-report/src/automations/triggerInfo/webhook.js.html +1 -1
  174. package/coverage/lcov-report/src/automations/triggers.js.html +1 -1
  175. package/coverage/lcov-report/src/automations/utils.ts.html +20 -29
  176. package/coverage/lcov-report/src/constants/index.html +1 -1
  177. package/coverage/lcov-report/src/constants/index.js.html +1 -1
  178. package/coverage/lcov-report/src/constants/layouts.js.html +1 -1
  179. package/coverage/lcov-report/src/constants/screens.js.html +1 -1
  180. package/coverage/lcov-report/src/db/dynamoClient.js.html +1 -1
  181. package/coverage/lcov-report/src/db/inMemoryView.js.html +3 -3
  182. package/coverage/lcov-report/src/db/index.html +16 -16
  183. package/coverage/lcov-report/src/db/index.js.html +9 -9
  184. package/coverage/lcov-report/src/db/linkedRows/LinkController.js.html +1 -1
  185. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  186. package/coverage/lcov-report/src/db/linkedRows/index.js.html +1 -1
  187. package/coverage/lcov-report/src/db/linkedRows/linkUtils.js.html +1 -1
  188. package/coverage/lcov-report/src/db/newid.js.html +1 -1
  189. package/coverage/lcov-report/src/db/{utils.js.html → utils.ts.html} +97 -145
  190. package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
  191. package/coverage/lcov-report/src/definitions/datasource.ts.html +1 -1
  192. package/coverage/lcov-report/src/definitions/index.html +1 -1
  193. package/coverage/lcov-report/src/environment.js.html +4 -4
  194. package/coverage/lcov-report/src/events/AutomationEmitter.js.html +1 -1
  195. package/coverage/lcov-report/src/events/index.html +1 -1
  196. package/coverage/lcov-report/src/events/index.js.html +1 -1
  197. package/coverage/lcov-report/src/events/utils.js.html +1 -1
  198. package/coverage/lcov-report/src/index.html +1 -1
  199. package/coverage/lcov-report/src/index.ts.html +1 -1
  200. package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
  201. package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
  202. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  203. package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
  204. package/coverage/lcov-report/src/integrations/base/sql.ts.html +1 -1
  205. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +1 -1
  206. package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
  207. package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
  208. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
  209. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
  211. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +10 -19
  212. package/coverage/lcov-report/src/integrations/index.html +11 -11
  213. package/coverage/lcov-report/src/integrations/index.ts.html +1 -1
  214. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
  215. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
  216. package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
  217. package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
  218. package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
  219. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  220. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  221. package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
  222. package/coverage/lcov-report/src/integrations/rest.ts.html +1 -1
  223. package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
  224. package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
  225. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  226. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  227. package/coverage/lcov-report/src/integrations/utils.ts.html +1 -1
  228. package/coverage/lcov-report/src/middleware/{appInfo.js.html → appInfo.ts.html} +24 -21
  229. package/coverage/lcov-report/src/middleware/authorized.ts.html +7 -7
  230. package/coverage/lcov-report/src/middleware/{builder.js.html → builder.ts.html} +36 -30
  231. package/coverage/lcov-report/src/middleware/{currentapp.js.html → currentapp.ts.html} +70 -61
  232. package/coverage/lcov-report/src/middleware/index.html +55 -55
  233. package/coverage/lcov-report/src/middleware/{joi-validator.js.html → joi-validator.ts.html} +18 -15
  234. package/coverage/lcov-report/src/middleware/{publicApi.js.html → publicApi.ts.html} +17 -17
  235. package/coverage/lcov-report/src/middleware/{resourceId.js.html → resourceId.ts.html} +33 -18
  236. package/coverage/lcov-report/src/middleware/{selfhost.js.html → selfhost.ts.html} +18 -12
  237. package/coverage/lcov-report/src/middleware/{utils.js.html → utils.ts.html} +12 -6
  238. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
  239. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  240. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  241. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +4 -4
  242. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  243. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  244. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  245. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  246. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +6 -15
  247. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  248. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  249. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  250. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  251. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  255. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  256. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  257. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  259. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  263. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  264. package/coverage/lcov-report/src/migrations/index.html +1 -1
  265. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  266. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  267. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  268. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  269. package/coverage/lcov-report/src/module.d.ts.html +1 -1
  270. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  271. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  272. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
  273. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  274. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +1 -1
  275. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +7 -16
  276. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  277. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  278. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +12 -39
  279. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  280. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +8 -11
  281. package/coverage/lcov-report/src/sdk/index.html +1 -1
  282. package/coverage/lcov-report/src/sdk/index.ts.html +1 -1
  283. package/coverage/lcov-report/src/startup.ts.html +1 -1
  284. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.js.html +24 -24
  285. package/coverage/lcov-report/src/tests/utilities/controllers.js.html +1 -1
  286. package/coverage/lcov-report/src/tests/utilities/index.html +19 -19
  287. package/coverage/lcov-report/src/tests/utilities/index.js.html +1 -1
  288. package/coverage/lcov-report/src/tests/utilities/structures.js.html +3 -3
  289. package/coverage/lcov-report/src/threads/automation.ts.html +2 -2
  290. package/coverage/lcov-report/src/threads/index.html +1 -1
  291. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  292. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  293. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  294. package/coverage/lcov-report/src/utilities/budibaseDir.js.html +1 -1
  295. package/coverage/lcov-report/src/utilities/centralPath.js.html +1 -1
  296. package/coverage/lcov-report/src/utilities/csvParser.js.html +1 -1
  297. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.js.html +1 -1
  298. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  299. package/coverage/lcov-report/src/utilities/fileSystem/index.js.html +1 -1
  300. package/coverage/lcov-report/src/utilities/fileSystem/processor.js.html +1 -1
  301. package/coverage/lcov-report/src/utilities/fileSystem/utilities.js.html +1 -1
  302. package/coverage/lcov-report/src/utilities/{global.js.html → global.ts.html} +100 -67
  303. package/coverage/lcov-report/src/utilities/index.html +16 -16
  304. package/coverage/lcov-report/src/utilities/index.js.html +1 -1
  305. package/coverage/lcov-report/src/utilities/plugins.js.html +1 -1
  306. package/coverage/lcov-report/src/utilities/queue/inMemoryQueue.js.html +1 -1
  307. package/coverage/lcov-report/src/utilities/queue/index.html +1 -1
  308. package/coverage/lcov-report/src/utilities/redis.js.html +1 -1
  309. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  310. package/coverage/lcov-report/src/utilities/routing/index.js.html +1 -1
  311. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  312. package/coverage/lcov-report/src/utilities/rowProcessor/index.js.html +1 -1
  313. package/coverage/lcov-report/src/utilities/rowProcessor/utils.js.html +1 -1
  314. package/coverage/lcov-report/src/utilities/scriptRunner.js.html +1 -1
  315. package/coverage/lcov-report/src/utilities/security.js.html +13 -13
  316. package/coverage/lcov-report/src/utilities/statusCodes.js.html +1 -1
  317. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  318. package/coverage/lcov-report/src/utilities/usageQuota/rows.js.html +1 -1
  319. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  320. package/coverage/lcov-report/src/utilities/users.js.html +1 -1
  321. package/coverage/lcov-report/src/utilities/workerRequests.js.html +4 -4
  322. package/coverage/lcov-report/src/watch.ts.html +1 -1
  323. package/coverage/lcov-report/src/websocket.ts.html +1 -1
  324. package/coverage/lcov.info +2052 -2049
  325. package/dist/api/controllers/application.js +35 -43
  326. package/dist/api/controllers/deploy/index.js +13 -16
  327. package/dist/api/controllers/dev.js +96 -81
  328. package/dist/api/controllers/public/applications.js +17 -9
  329. package/dist/api/controllers/query/index.js +10 -13
  330. package/dist/api/controllers/row/internal.js +2 -2
  331. package/dist/api/routes/automation.js +3 -3
  332. package/dist/api/routes/datasource.js +4 -4
  333. package/dist/api/routes/public/index.js +9 -9
  334. package/dist/api/routes/query.js +4 -4
  335. package/dist/api/routes/row.js +11 -11
  336. package/dist/api/routes/static.js +3 -3
  337. package/dist/api/routes/table.js +2 -2
  338. package/dist/api/routes/user.js +9 -9
  339. package/dist/api/routes/utils/validators.js +4 -4
  340. package/dist/api/routes/view.js +2 -2
  341. package/dist/automations/tests/utilities/index.js +21 -12
  342. package/dist/automations/utils.js +9 -8
  343. package/dist/db/inMemoryView.js +2 -2
  344. package/dist/db/utils.js +145 -118
  345. package/dist/integrations/googlesheets.js +4 -6
  346. package/dist/middleware/appInfo.js +14 -9
  347. package/dist/middleware/authorized.js +5 -5
  348. package/dist/middleware/builder.js +41 -40
  349. package/dist/middleware/currentapp.js +39 -37
  350. package/dist/middleware/joi-validator.js +17 -10
  351. package/dist/middleware/publicApi.js +5 -6
  352. package/dist/middleware/resourceId.js +16 -9
  353. package/dist/middleware/selfhost.js +5 -4
  354. package/dist/middleware/utils.js +5 -2
  355. package/dist/package.json +6 -6
  356. package/dist/sdk/app/tables/index.js +4 -4
  357. package/dist/tests/utilities/TestConfiguration.js +9 -9
  358. package/dist/tests/utilities/structures.js +2 -2
  359. package/dist/tsconfig.build.tsbuildinfo +1 -1
  360. package/dist/utilities/global.js +87 -66
  361. package/dist/utilities/security.js +10 -10
  362. package/dist/utilities/workerRequests.js +3 -3
  363. package/jest.config.ts +1 -0
  364. package/package.json +7 -7
  365. package/src/api/controllers/application.ts +34 -39
  366. package/src/api/controllers/auth.ts +3 -2
  367. package/src/api/controllers/deploy/index.ts +13 -25
  368. package/src/api/controllers/{dev.js → dev.ts} +31 -37
  369. package/src/api/controllers/public/applications.ts +15 -9
  370. package/src/api/controllers/query/index.ts +11 -14
  371. package/src/api/controllers/row/internal.js +2 -2
  372. package/src/api/routes/automation.js +4 -4
  373. package/src/api/routes/datasource.js +5 -5
  374. package/src/api/routes/public/index.ts +10 -10
  375. package/src/api/routes/public/tests/compare.spec.js +1 -1
  376. package/src/api/routes/query.js +5 -5
  377. package/src/api/routes/row.ts +12 -12
  378. package/src/api/routes/static.ts +5 -5
  379. package/src/api/routes/table.js +3 -3
  380. package/src/api/routes/tests/analytics.spec.js +1 -1
  381. package/src/api/routes/tests/query.spec.js +15 -10
  382. package/src/api/routes/tests/role.spec.js +5 -5
  383. package/src/api/routes/tests/static.spec.js +2 -2
  384. package/src/api/routes/tests/table.spec.js +38 -35
  385. package/src/api/routes/user.js +10 -10
  386. package/src/api/routes/utils/validators.js +5 -5
  387. package/src/api/routes/view.js +3 -3
  388. package/src/automations/tests/updateRow.spec.js +0 -1
  389. package/src/automations/tests/utilities/index.js +10 -4
  390. package/src/automations/utils.ts +9 -12
  391. package/src/db/inMemoryView.js +2 -2
  392. package/src/db/tests/linkController.spec.js +73 -57
  393. package/src/db/tests/linkTests.spec.js +17 -14
  394. package/src/db/{utils.js → utils.ts} +76 -92
  395. package/src/integrations/googlesheets.ts +4 -7
  396. package/src/middleware/appInfo.ts +20 -0
  397. package/src/middleware/authorized.ts +6 -6
  398. package/src/middleware/{builder.js → builder.ts} +17 -15
  399. package/src/middleware/{currentapp.js → currentapp.ts} +42 -39
  400. package/src/middleware/{joi-validator.js → joi-validator.ts} +9 -8
  401. package/src/middleware/publicApi.ts +21 -0
  402. package/src/middleware/{resourceId.js → resourceId.ts} +16 -11
  403. package/src/middleware/{selfhost.js → selfhost.ts} +4 -2
  404. package/src/middleware/tests/authorized.spec.js +5 -5
  405. package/src/middleware/tests/currentapp.spec.js +118 -63
  406. package/src/middleware/{utils.js → utils.ts} +3 -1
  407. package/src/migrations/functions/backfill/app/tables.ts +2 -5
  408. package/src/sdk/app/backups/imports.ts +4 -7
  409. package/src/sdk/app/backups/statistics.ts +9 -18
  410. package/src/sdk/app/tables/index.ts +6 -7
  411. package/src/tests/utilities/TestConfiguration.js +9 -9
  412. package/src/tests/utilities/structures.js +2 -2
  413. package/src/threads/automation.ts +1 -1
  414. package/src/utilities/global.ts +138 -0
  415. package/src/utilities/security.js +12 -12
  416. package/src/utilities/workerRequests.js +3 -3
  417. package/src/middleware/appInfo.js +0 -19
  418. package/src/middleware/publicApi.js +0 -21
  419. package/src/utilities/global.js +0 -127
@@ -4,16 +4,21 @@ jest.mock("node-fetch")
4
4
 
5
5
  // Mock isProdAppID to we can later mock the implementation and pretend we are
6
6
  // using prod app IDs
7
- const authDb = require("@budibase/backend-core/db")
8
- const { isProdAppID } = authDb
9
- const mockIsProdAppID = jest.fn(isProdAppID)
10
- authDb.isProdAppID = mockIsProdAppID
11
-
7
+ jest.mock("@budibase/backend-core", () => {
8
+ const core = jest.requireActual("@budibase/backend-core")
9
+ return {
10
+ ...core,
11
+ db: {
12
+ ...core.db,
13
+ isProdAppID: jest.fn(),
14
+ }
15
+ }
16
+ })
12
17
  const setup = require("./utilities")
13
18
  const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
14
19
  const { checkCacheForDynamicVariable } = require("../../../threads/utils")
15
20
  const { basicQuery, basicDatasource } = setup.structures
16
- const { events } = require("@budibase/backend-core")
21
+ const { events, db: dbCore } = require("@budibase/backend-core")
17
22
 
18
23
  describe("/queries", () => {
19
24
  let request = setup.getRequest()
@@ -152,8 +157,8 @@ describe("/queries", () => {
152
157
 
153
158
  it("should remove sensitive info for prod apps", async () => {
154
159
  // Mock isProdAppID to pretend we are using a prod app
155
- mockIsProdAppID.mockClear()
156
- mockIsProdAppID.mockImplementation(() => true)
160
+ dbCore.isProdAppID.mockClear()
161
+ dbCore.isProdAppID.mockImplementation(() => true)
157
162
 
158
163
  const query = await config.createQuery()
159
164
  const res = await request
@@ -167,8 +172,8 @@ describe("/queries", () => {
167
172
  expect(res.body.schema).toBeDefined()
168
173
 
169
174
  // Reset isProdAppID mock
170
- expect(mockIsProdAppID).toHaveBeenCalledTimes(1)
171
- mockIsProdAppID.mockImplementation(isProdAppID)
175
+ expect(dbCore.isProdAppID).toHaveBeenCalledTimes(1)
176
+ dbCore.isProdAppID.mockImplementation(() => false)
172
177
  })
173
178
  })
174
179
 
@@ -1,6 +1,6 @@
1
1
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
2
2
  const {
3
- BUILTIN_PERMISSION_IDS,
3
+ BuiltinPermissionID,
4
4
  } = require("@budibase/backend-core/permissions")
5
5
  const setup = require("./utilities")
6
6
  const { basicRole } = setup.structures
@@ -76,18 +76,18 @@ describe("/roles", () => {
76
76
  const adminRole = res.body.find(r => r._id === BUILTIN_ROLE_IDS.ADMIN)
77
77
  expect(adminRole).toBeDefined()
78
78
  expect(adminRole.inherits).toEqual(BUILTIN_ROLE_IDS.POWER)
79
- expect(adminRole.permissionId).toEqual(BUILTIN_PERMISSION_IDS.ADMIN)
79
+ expect(adminRole.permissionId).toEqual(BuiltinPermissionID.ADMIN)
80
80
 
81
81
  const powerUserRole = res.body.find(r => r._id === BUILTIN_ROLE_IDS.POWER)
82
82
  expect(powerUserRole).toBeDefined()
83
83
  expect(powerUserRole.inherits).toEqual(BUILTIN_ROLE_IDS.BASIC)
84
- expect(powerUserRole.permissionId).toEqual(BUILTIN_PERMISSION_IDS.POWER)
84
+ expect(powerUserRole.permissionId).toEqual(BuiltinPermissionID.POWER)
85
85
 
86
86
  const customRoleFetched = res.body.find(r => r._id === customRole._id)
87
87
  expect(customRoleFetched).toBeDefined()
88
88
  expect(customRoleFetched.inherits).toEqual(BUILTIN_ROLE_IDS.BASIC)
89
89
  expect(customRoleFetched.permissionId).toEqual(
90
- BUILTIN_PERMISSION_IDS.READ_ONLY
90
+ BuiltinPermissionID.READ_ONLY
91
91
  )
92
92
  })
93
93
 
@@ -109,7 +109,7 @@ describe("/roles", () => {
109
109
  it("should delete custom roles", async () => {
110
110
  const customRole = await config.createRole({
111
111
  name: "user",
112
- permissionId: BUILTIN_PERMISSION_IDS.READ_ONLY,
112
+ permissionId: BuiltinPermissionID.READ_ONLY,
113
113
  inherits: BUILTIN_ROLE_IDS.BASIC,
114
114
  })
115
115
  delete customRole._rev_tree
@@ -46,7 +46,7 @@ describe("/static", () => {
46
46
 
47
47
  it("should serve the app by id", async () => {
48
48
  const headers = config.defaultHeaders()
49
- delete headers[constants.Headers.APP_ID]
49
+ delete headers[constants.Header.APP_ID]
50
50
 
51
51
  const res = await request
52
52
  .get(`/${config.prodAppId}`)
@@ -58,7 +58,7 @@ describe("/static", () => {
58
58
 
59
59
  it("should serve the app by url", async () => {
60
60
  const headers = config.defaultHeaders()
61
- delete headers[constants.Headers.APP_ID]
61
+ delete headers[constants.Header.APP_ID]
62
62
 
63
63
  const res = await request
64
64
  .get(`/app${config.prodApp.url}`)
@@ -1,17 +1,18 @@
1
1
  const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
2
- const { getAppDB } = require("@budibase/backend-core/context")
3
2
  const setup = require("./utilities")
4
3
  const { basicTable } = setup.structures
5
- const { events } = require("@budibase/backend-core")
4
+ const { events, context } = require("@budibase/backend-core")
6
5
 
7
6
  describe("/tables", () => {
8
7
  let request = setup.getRequest()
9
8
  let config = setup.getConfig()
9
+ let appId
10
10
 
11
11
  afterAll(setup.afterAll)
12
12
 
13
13
  beforeEach(async () => {
14
- await config.init()
14
+ const app = await config.init()
15
+ appId = app.appId
15
16
  })
16
17
 
17
18
  describe("create", () => {
@@ -199,38 +200,6 @@ describe("/tables", () => {
199
200
  })
200
201
  })
201
202
 
202
- describe("indexing", () => {
203
- it("should be able to create a table with indexes", async () => {
204
- const db = getAppDB(config)
205
- const indexCount = (await db.getIndexes()).total_rows
206
- const table = basicTable()
207
- table.indexes = ["name"]
208
- const res = await request
209
- .post(`/api/tables`)
210
- .send(table)
211
- .set(config.defaultHeaders())
212
- .expect('Content-Type', /json/)
213
- .expect(200)
214
- expect(res.body._id).toBeDefined()
215
- expect(res.body._rev).toBeDefined()
216
- expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
217
- // update index to see what happens
218
- table.indexes = ["name", "description"]
219
- await request
220
- .post(`/api/tables`)
221
- .send({
222
- ...table,
223
- _id: res.body._id,
224
- _rev: res.body._rev,
225
- })
226
- .set(config.defaultHeaders())
227
- .expect('Content-Type', /json/)
228
- .expect(200)
229
- // shouldn't have created a new index
230
- expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
231
- })
232
- })
233
-
234
203
  describe("validate csv", () => {
235
204
  it("should be able to validate a CSV layout", async () => {
236
205
  const res = await request
@@ -249,6 +218,40 @@ describe("/tables", () => {
249
218
  })
250
219
  })
251
220
 
221
+ describe("indexing", () => {
222
+ it("should be able to create a table with indexes", async () => {
223
+ await context.doInAppContext(appId, async () => {
224
+ const db = context.getAppDB()
225
+ const indexCount = (await db.getIndexes()).total_rows
226
+ const table = basicTable()
227
+ table.indexes = ["name"]
228
+ const res = await request
229
+ .post(`/api/tables`)
230
+ .send(table)
231
+ .set(config.defaultHeaders())
232
+ .expect('Content-Type', /json/)
233
+ .expect(200)
234
+ expect(res.body._id).toBeDefined()
235
+ expect(res.body._rev).toBeDefined()
236
+ expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
237
+ // update index to see what happens
238
+ table.indexes = ["name", "description"]
239
+ await request
240
+ .post(`/api/tables`)
241
+ .send({
242
+ ...table,
243
+ _id: res.body._id,
244
+ _rev: res.body._rev,
245
+ })
246
+ .set(config.defaultHeaders())
247
+ .expect('Content-Type', /json/)
248
+ .expect(200)
249
+ // shouldn't have created a new index
250
+ expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
251
+ })
252
+ })
253
+ })
254
+
252
255
  describe("destroy", () => {
253
256
  let testTable
254
257
 
@@ -2,8 +2,8 @@ const Router = require("@koa/router")
2
2
  const controller = require("../controllers/user")
3
3
  const authorized = require("../../middleware/authorized")
4
4
  const {
5
- PermissionLevels,
6
- PermissionTypes,
5
+ PermissionLevel,
6
+ PermissionType,
7
7
  } = require("@budibase/backend-core/permissions")
8
8
 
9
9
  const router = new Router()
@@ -11,42 +11,42 @@ const router = new Router()
11
11
  router
12
12
  .get(
13
13
  "/api/users/metadata",
14
- authorized(PermissionTypes.USER, PermissionLevels.READ),
14
+ authorized(PermissionType.USER, PermissionLevel.READ),
15
15
  controller.fetchMetadata
16
16
  )
17
17
  .get(
18
18
  "/api/users/metadata/:id",
19
- authorized(PermissionTypes.USER, PermissionLevels.READ),
19
+ authorized(PermissionType.USER, PermissionLevel.READ),
20
20
  controller.findMetadata
21
21
  )
22
22
  .put(
23
23
  "/api/users/metadata",
24
- authorized(PermissionTypes.USER, PermissionLevels.WRITE),
24
+ authorized(PermissionType.USER, PermissionLevel.WRITE),
25
25
  controller.updateMetadata
26
26
  )
27
27
  .post(
28
28
  "/api/users/metadata/self",
29
- authorized(PermissionTypes.USER, PermissionLevels.WRITE),
29
+ authorized(PermissionType.USER, PermissionLevel.WRITE),
30
30
  controller.updateSelfMetadata
31
31
  )
32
32
  .delete(
33
33
  "/api/users/metadata/:id",
34
- authorized(PermissionTypes.USER, PermissionLevels.WRITE),
34
+ authorized(PermissionType.USER, PermissionLevel.WRITE),
35
35
  controller.destroyMetadata
36
36
  )
37
37
  .post(
38
38
  "/api/users/metadata/sync/:id",
39
- authorized(PermissionTypes.USER, PermissionLevels.WRITE),
39
+ authorized(PermissionType.USER, PermissionLevel.WRITE),
40
40
  controller.syncUser
41
41
  )
42
42
  .post(
43
43
  "/api/users/flags",
44
- authorized(PermissionTypes.USER, PermissionLevels.WRITE),
44
+ authorized(PermissionType.USER, PermissionLevel.WRITE),
45
45
  controller.setFlag
46
46
  )
47
47
  .get(
48
48
  "/api/users/flags",
49
- authorized(PermissionTypes.USER, PermissionLevels.READ),
49
+ authorized(PermissionType.USER, PermissionLevel.READ),
50
50
  controller.getFlags
51
51
  )
52
52
 
@@ -1,8 +1,8 @@
1
1
  const { joiValidator } = require("@budibase/backend-core/auth")
2
2
  const { DataSourceOperation } = require("../../../constants")
3
3
  const {
4
- BUILTIN_PERMISSION_IDS,
5
- PermissionLevels,
4
+ BuiltinPermissionID,
5
+ PermissionLevel,
6
6
  } = require("@budibase/backend-core/permissions")
7
7
  const { WebhookActionType } = require("@budibase/types")
8
8
  const Joi = require("joi")
@@ -133,14 +133,14 @@ exports.webhookValidator = () => {
133
133
  }
134
134
 
135
135
  exports.roleValidator = () => {
136
- const permLevelArray = Object.values(PermissionLevels)
136
+ const permLevelArray = Object.values(PermissionLevel)
137
137
  // prettier-ignore
138
138
  return joiValidator.body(Joi.object({
139
139
  _id: OPTIONAL_STRING,
140
140
  _rev: OPTIONAL_STRING,
141
141
  name: Joi.string().required(),
142
142
  // this is the base permission ID (for now a built in)
143
- permissionId: Joi.string().valid(...Object.values(BUILTIN_PERMISSION_IDS)).required(),
143
+ permissionId: Joi.string().valid(...Object.values(BuiltinPermissionID)).required(),
144
144
  permissions: Joi.object()
145
145
  .pattern(/.*/, [Joi.string().valid(...permLevelArray)])
146
146
  .optional(),
@@ -149,7 +149,7 @@ exports.roleValidator = () => {
149
149
  }
150
150
 
151
151
  exports.permissionValidator = () => {
152
- const permLevelArray = Object.values(PermissionLevels)
152
+ const permLevelArray = Object.values(PermissionLevel)
153
153
  // prettier-ignore
154
154
  return joiValidator.params(Joi.object({
155
155
  level: Joi.string().valid(...permLevelArray).required(),
@@ -5,8 +5,8 @@ const authorized = require("../../middleware/authorized")
5
5
  const { paramResource } = require("../../middleware/resourceId")
6
6
  const {
7
7
  BUILDER,
8
- PermissionTypes,
9
- PermissionLevels,
8
+ PermissionType,
9
+ PermissionLevel,
10
10
  } = require("@budibase/backend-core/permissions")
11
11
 
12
12
  const router = new Router()
@@ -16,7 +16,7 @@ router
16
16
  .get(
17
17
  "/api/views/:viewName",
18
18
  paramResource("viewName"),
19
- authorized(PermissionTypes.VIEW, PermissionLevels.READ),
19
+ authorized(PermissionType.VIEW, PermissionLevel.READ),
20
20
  rowController.fetchView
21
21
  )
22
22
  .get("/api/views", authorized(BUILDER), viewController.fetch)
@@ -1,4 +1,3 @@
1
- const env = require("../../environment")
2
1
  const setup = require("./utilities")
3
2
 
4
3
  describe("test the update row action", () => {
@@ -1,6 +1,5 @@
1
1
  const TestConfig = require("../../../tests/utilities/TestConfiguration")
2
- const { TENANT_ID } = require("../../../tests/utilities/structures")
3
- const { doInTenant } = require("@budibase/backend-core/tenancy")
2
+ const { context } = require("@budibase/backend-core")
4
3
  const actions = require("../../actions")
5
4
  const emitter = require("../../../events/index")
6
5
  const env = require("../../../environment")
@@ -33,7 +32,7 @@ exports.runInProd = async fn => {
33
32
  }
34
33
 
35
34
  exports.runStep = async function runStep(stepId, inputs) {
36
- return doInTenant(TENANT_ID, async () => {
35
+ async function run() {
37
36
  let step = await actions.getAction(stepId)
38
37
  expect(step).toBeDefined()
39
38
  return step({
@@ -43,7 +42,14 @@ exports.runStep = async function runStep(stepId, inputs) {
43
42
  apiKey: exports.apiKey,
44
43
  emitter,
45
44
  })
46
- })
45
+ }
46
+ if (config?.appId) {
47
+ return context.doInContext(config?.appId, async () => {
48
+ return run()
49
+ })
50
+ } else {
51
+ return run()
52
+ }
47
53
  }
48
54
 
49
55
  exports.apiKey = "test"
@@ -4,15 +4,9 @@ import { automationQueue } from "./bullboard"
4
4
  import newid from "../db/newid"
5
5
  import { updateEntityMetadata } from "../utilities"
6
6
  import { MetadataTypes } from "../constants"
7
- import { getProdAppID, doWithDB } from "@budibase/backend-core/db"
7
+ import { db as dbCore, context } from "@budibase/backend-core"
8
8
  import { getAutomationMetadataParams } from "../db/utils"
9
9
  import { cloneDeep } from "lodash/fp"
10
- import {
11
- getAppDB,
12
- getAppId,
13
- getProdAppDB,
14
- } from "@budibase/backend-core/context"
15
- import { context } from "@budibase/backend-core"
16
10
  import { quotas } from "@budibase/pro"
17
11
  import { Automation, WebhookActionType } from "@budibase/types"
18
12
  import sdk from "../sdk"
@@ -102,7 +96,7 @@ export async function disableCronById(jobId: number | string) {
102
96
  }
103
97
 
104
98
  export async function clearMetadata() {
105
- const db = getProdAppDB()
99
+ const db = context.getProdAppDB()
106
100
  const automationMetadata = (
107
101
  await db.allDocs(
108
102
  getAutomationMetadataParams({
@@ -157,7 +151,7 @@ export async function enableCronTrigger(appId: any, automation: Automation) {
157
151
  // can't use getAppDB here as this is likely to be called from dev app,
158
152
  // but this call could be for dev app or prod app, need to just use what
159
153
  // was passed in
160
- await doWithDB(appId, async (db: any) => {
154
+ await dbCore.doWithDB(appId, async (db: any) => {
161
155
  const response = await db.put(automation)
162
156
  automation._id = response.id
163
157
  automation._rev = response.rev
@@ -175,7 +169,10 @@ export async function enableCronTrigger(appId: any, automation: Automation) {
175
169
  * written to DB (this does not write to DB as it would be wasteful to repeat).
176
170
  */
177
171
  export async function checkForWebhooks({ oldAuto, newAuto }: any) {
178
- const appId = getAppId()
172
+ const appId = context.getAppId()
173
+ if (!appId) {
174
+ throw new Error("Unable to check webhooks - no app ID in context.")
175
+ }
179
176
  const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
180
177
  const newTrigger = newAuto ? newAuto.definition.trigger : null
181
178
  const triggerChanged =
@@ -194,7 +191,7 @@ export async function checkForWebhooks({ oldAuto, newAuto }: any) {
194
191
  oldTrigger.webhookId
195
192
  ) {
196
193
  try {
197
- let db = getAppDB()
194
+ let db = context.getAppDB()
198
195
  // need to get the webhook to get the rev
199
196
  const webhook = await db.get(oldTrigger.webhookId)
200
197
  // might be updating - reset the inputs to remove the URLs
@@ -224,7 +221,7 @@ export async function checkForWebhooks({ oldAuto, newAuto }: any) {
224
221
  // the app ID has to be development for this endpoint
225
222
  // it can only be used when building the app
226
223
  // but the trigger endpoint will always be used in production
227
- const prodAppId = getProdAppID(appId)
224
+ const prodAppId = dbCore.getProdAppID(appId)
228
225
  newTrigger.inputs = {
229
226
  schemaUrl: `api/webhooks/schema/${appId}/${id}`,
230
227
  triggerUrl: `api/webhooks/trigger/${prodAppId}/${id}`,
@@ -2,7 +2,7 @@ const newid = require("./newid")
2
2
 
3
3
  // bypass the main application db config
4
4
  // use in memory pouchdb directly
5
- const { getPouch, closeDB } = require("@budibase/backend-core/db")
5
+ const { getPouch, closePouchDB } = require("@budibase/backend-core/db")
6
6
  const Pouch = getPouch({ inMemory: true })
7
7
 
8
8
  exports.runView = async (view, calculation, group, data) => {
@@ -44,6 +44,6 @@ exports.runView = async (view, calculation, group, data) => {
44
44
  return response
45
45
  } finally {
46
46
  await db.destroy()
47
- await closeDB(db)
47
+ await closePouchDB(db)
48
48
  }
49
49
  }
@@ -1,15 +1,17 @@
1
1
  const TestConfig = require("../../tests/utilities/TestConfiguration")
2
2
  const { basicRow, basicLinkedRow, basicTable } = require("../../tests/utilities/structures")
3
3
  const LinkController = require("../linkedRows/LinkController")
4
+ const { context } = require("@budibase/backend-core")
4
5
  const { RelationshipTypes } = require("../../constants")
5
6
  const { cloneDeep } = require("lodash/fp")
6
7
 
7
8
  describe("test the link controller", () => {
8
9
  let config = new TestConfig(false)
9
- let table1, table2
10
+ let table1, table2, appId
10
11
 
11
12
  beforeEach(async () => {
12
- await config.init()
13
+ const app = await config.init()
14
+ appId = app.appId
13
15
  const { _id } = await config.createTable()
14
16
  table2 = await config.createLinkedTable(RelationshipTypes.MANY_TO_MANY, ["link", "link2"])
15
17
  // update table after creating link
@@ -18,18 +20,20 @@ describe("test the link controller", () => {
18
20
 
19
21
  afterAll(config.end)
20
22
 
21
- function createLinkController(table, row = null, oldTable = null) {
22
- const linkConfig = {
23
- tableId: table._id,
24
- table,
25
- }
26
- if (row) {
27
- linkConfig.row = row
28
- }
29
- if (oldTable) {
30
- linkConfig.oldTable = oldTable
31
- }
32
- return new LinkController(linkConfig)
23
+ async function createLinkController(table, row = null, oldTable = null) {
24
+ return context.doInAppContext(appId, () => {
25
+ const linkConfig = {
26
+ tableId: table._id,
27
+ table,
28
+ }
29
+ if (row) {
30
+ linkConfig.row = row
31
+ }
32
+ if (oldTable) {
33
+ linkConfig.oldTable = oldTable
34
+ }
35
+ return new LinkController(linkConfig)
36
+ })
33
37
  }
34
38
 
35
39
  async function createLinkedRow(linkField = "link", t1 = table1, t2 = table2) {
@@ -38,16 +42,16 @@ describe("test the link controller", () => {
38
42
  return config.getRow(t1._id, _id)
39
43
  }
40
44
 
41
- it("should be able to confirm if two table schemas are equal", () => {
42
- const controller = createLinkController(table1)
45
+ it("should be able to confirm if two table schemas are equal", async () => {
46
+ const controller = await createLinkController(table1)
43
47
  let equal = controller.areLinkSchemasEqual(table2.schema.link, table2.schema.link)
44
48
  expect(equal).toEqual(true)
45
49
  equal = controller.areLinkSchemasEqual(table1.schema.link, table2.schema.link)
46
50
  expect(equal).toEqual(false)
47
51
  })
48
52
 
49
- it("should be able to check the relationship types across two fields", () => {
50
- const controller = createLinkController(table1)
53
+ it("should be able to check the relationship types across two fields", async () => {
54
+ const controller = await createLinkController(table1)
51
55
  // empty case
52
56
  let output = controller.handleRelationshipType({}, {})
53
57
  expect(output.linkedField.relationshipType).toEqual(RelationshipTypes.MANY_TO_MANY)
@@ -65,29 +69,33 @@ describe("test the link controller", () => {
65
69
 
66
70
  it("should be able to delete a row", async () => {
67
71
  const row = await createLinkedRow()
68
- const controller = createLinkController(table1, row)
69
- // get initial count
70
- const beforeLinks = await controller.getRowLinkDocs(row._id)
71
- await controller.rowDeleted()
72
- let afterLinks = await controller.getRowLinkDocs(row._id)
73
- expect(beforeLinks.length).toEqual(1)
74
- expect(afterLinks.length).toEqual(0)
72
+ const controller = await createLinkController(table1, row)
73
+ await context.doInAppContext(appId, async () => {
74
+ // get initial count
75
+ const beforeLinks = await controller.getRowLinkDocs(row._id)
76
+ await controller.rowDeleted()
77
+ let afterLinks = await controller.getRowLinkDocs(row._id)
78
+ expect(beforeLinks.length).toEqual(1)
79
+ expect(afterLinks.length).toEqual(0)
80
+ })
75
81
  })
76
82
 
77
83
  it("shouldn't throw an error when deleting a row with no links", async () => {
78
84
  const row = await config.createRow(basicRow(table1._id))
79
- const controller = createLinkController(table1, row)
80
- let error
81
- try {
82
- await controller.rowDeleted()
83
- } catch (err) {
84
- error = err
85
- }
86
- expect(error).toBeUndefined()
85
+ const controller = await createLinkController(table1, row)
86
+ await context.doInAppContext(appId, async () => {
87
+ let error
88
+ try {
89
+ await controller.rowDeleted()
90
+ } catch (err) {
91
+ error = err
92
+ }
93
+ expect(error).toBeUndefined()
94
+ })
87
95
  })
88
96
 
89
- it("should throw an error when validating a table which is invalid", () => {
90
- const controller = createLinkController(table1)
97
+ it("should throw an error when validating a table which is invalid", async () => {
98
+ const controller = await createLinkController(table1)
91
99
  const copyTable = {
92
100
  ...table1
93
101
  }
@@ -110,32 +118,38 @@ describe("test the link controller", () => {
110
118
  const row = await createLinkedRow()
111
119
  // remove the link from the row
112
120
  row.link = []
113
- const controller = createLinkController(table1, row)
114
- await controller.rowSaved()
115
- let links = await controller.getRowLinkDocs(row._id)
116
- expect(links.length).toEqual(0)
121
+ const controller = await createLinkController(table1, row)
122
+ await context.doInAppContext(appId, async () => {
123
+ await controller.rowSaved()
124
+ let links = await controller.getRowLinkDocs(row._id)
125
+ expect(links.length).toEqual(0)
126
+ })
117
127
  })
118
128
 
119
129
  it("should be able to delete a table and have links deleted", async () => {
120
130
  await createLinkedRow()
121
- const controller = createLinkController(table1)
122
- let before = await controller.getTableLinkDocs()
123
- await controller.tableDeleted()
124
- let after = await controller.getTableLinkDocs()
125
- expect(before.length).toEqual(1)
126
- expect(after.length).toEqual(0)
131
+ const controller = await createLinkController(table1)
132
+ await context.doInAppContext(appId, async () => {
133
+ let before = await controller.getTableLinkDocs()
134
+ await controller.tableDeleted()
135
+ let after = await controller.getTableLinkDocs()
136
+ expect(before.length).toEqual(1)
137
+ expect(after.length).toEqual(0)
138
+ })
127
139
  })
128
140
 
129
141
  it("should be able to remove a linked field from a table", async () => {
130
142
  await createLinkedRow()
131
143
  await createLinkedRow("link2")
132
- const controller = createLinkController(table1, null, table1)
133
- let before = await controller.getTableLinkDocs()
134
- await controller.removeFieldFromTable("link")
135
- let after = await controller.getTableLinkDocs()
136
- expect(before.length).toEqual(2)
137
- // shouldn't delete the other field
138
- expect(after.length).toEqual(1)
144
+ const controller = await createLinkController(table1, null, table1)
145
+ await context.doInAppContext(appId, async () => {
146
+ let before = await controller.getTableLinkDocs()
147
+ await controller.removeFieldFromTable("link")
148
+ let after = await controller.getTableLinkDocs()
149
+ expect(before.length).toEqual(2)
150
+ // shouldn't delete the other field
151
+ expect(after.length).toEqual(1)
152
+ })
139
153
  })
140
154
 
141
155
  it("should throw an error when overwriting a link column", async () => {
@@ -143,7 +157,7 @@ describe("test the link controller", () => {
143
157
  update.schema.link.relationshipType = RelationshipTypes.MANY_TO_ONE
144
158
  let error
145
159
  try {
146
- const controller = createLinkController(update)
160
+ const controller = await createLinkController(update)
147
161
  await controller.tableSaved()
148
162
  } catch (err) {
149
163
  error = err
@@ -156,10 +170,12 @@ describe("test the link controller", () => {
156
170
  await createLinkedRow()
157
171
  const newTable = cloneDeep(table1)
158
172
  delete newTable.schema.link
159
- const controller = createLinkController(newTable, null, table1)
160
- await controller.tableUpdated()
161
- const links = await controller.getTableLinkDocs()
162
- expect(links.length).toEqual(0)
173
+ const controller = await createLinkController(newTable, null, table1)
174
+ await context.doInAppContext(appId, async () => {
175
+ await controller.tableUpdated()
176
+ const links = await controller.getTableLinkDocs()
177
+ expect(links.length).toEqual(0)
178
+ })
163
179
  })
164
180
 
165
181
  it("shouldn't allow one to many having many relationships against it", async () => {