@budibase/server 2.1.43-alpha.7 → 2.1.43-alpha.9

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 (362) hide show
  1. package/builder/assets/index.183b181c.css +6 -0
  2. package/builder/assets/{index.cb835f03.js → index.1c5913ba.js} +253 -253
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +543 -515
  5. package/coverage/coverage-final.json +21 -16
  6. package/coverage/lcov-report/index.html +64 -34
  7. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  8. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/application.ts.html +86 -233
  10. package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
  11. package/coverage/lcov-report/src/api/controllers/automation.ts.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.ts.html +5 -2
  14. package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
  15. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +1 -1
  16. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +1 -1
  17. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/dev.ts.html +1 -1
  20. package/coverage/lcov-report/src/api/controllers/index.html +28 -28
  21. package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
  22. package/coverage/lcov-report/src/api/controllers/layout.ts.html +1 -1
  23. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
  24. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/permission.ts.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 +1 -1
  35. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  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 +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +1 -1
  59. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
  60. package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
  61. package/coverage/lcov-report/src/api/controllers/routing.ts.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.ts.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.ts.html +1 -1
  67. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
  68. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +1 -1
  69. package/coverage/lcov-report/src/api/controllers/row/utils.ts.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.ts.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.ts.html +1 -1
  75. package/coverage/lcov-report/src/api/controllers/table/external.ts.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.ts.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.ts.html +1 -1
  81. package/coverage/lcov-report/src/api/controllers/user.ts.html +13 -184
  82. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.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.ts.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.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.ts.html +1 -1
  90. package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
  91. package/coverage/lcov-report/src/api/routes/apikeys.ts.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.ts.html +1 -1
  95. package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
  96. package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
  97. package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
  98. package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
  99. package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
  100. package/coverage/lcov-report/src/api/routes/dev.ts.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.ts.html +1 -1
  104. package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
  105. package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
  106. package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
  107. package/coverage/lcov-report/src/api/routes/permission.ts.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 +1 -1
  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.ts.html +1 -1
  121. package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/row.ts.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
  127. package/coverage/lcov-report/src/api/routes/table.ts.html +1 -1
  128. package/coverage/lcov-report/src/api/routes/templates.ts.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.ts.html +1 -1
  132. package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
  133. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  134. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
  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.ts.html +1 -1
  139. package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
  140. package/coverage/lcov-report/src/automations/bullboard.ts.html +1 -1
  141. package/coverage/lcov-report/src/automations/index.html +1 -1
  142. package/coverage/lcov-report/src/automations/index.ts.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.ts.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.ts.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.ts.html +1 -1
  150. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
  151. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
  152. package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
  153. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  154. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
  155. package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
  156. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
  158. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
  159. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
  160. package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
  161. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
  162. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  163. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
  164. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  165. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  166. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
  167. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
  168. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +1 -1
  170. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
  171. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
  173. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
  174. package/coverage/lcov-report/src/automations/triggers.ts.html +1 -1
  175. package/coverage/lcov-report/src/automations/utils.ts.html +1 -1
  176. package/coverage/lcov-report/src/constants/index.html +1 -1
  177. package/coverage/lcov-report/src/constants/index.ts.html +1 -1
  178. package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
  179. package/coverage/lcov-report/src/constants/screens.ts.html +1 -1
  180. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
  181. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
  182. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
  183. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  184. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
  185. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
  186. package/coverage/lcov-report/src/db/dynamoClient.ts.html +1 -1
  187. package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
  188. package/coverage/lcov-report/src/db/index.html +1 -1
  189. package/coverage/lcov-report/src/db/index.ts.html +1 -1
  190. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1 -1
  191. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
  192. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  193. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +1 -1
  194. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +1 -1
  195. package/coverage/lcov-report/src/db/newid.ts.html +1 -1
  196. package/coverage/lcov-report/src/db/utils.ts.html +1 -1
  197. package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
  198. package/coverage/lcov-report/src/definitions/datasource.ts.html +1 -1
  199. package/coverage/lcov-report/src/definitions/index.html +1 -1
  200. package/coverage/lcov-report/src/environment.ts.html +1 -1
  201. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
  202. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
  203. package/coverage/lcov-report/src/events/index.html +1 -1
  204. package/coverage/lcov-report/src/events/index.ts.html +1 -1
  205. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  206. package/coverage/lcov-report/src/index.html +1 -1
  207. package/coverage/lcov-report/src/index.ts.html +1 -1
  208. package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
  209. package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  211. package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
  212. package/coverage/lcov-report/src/integrations/base/sql.ts.html +1 -1
  213. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +1 -1
  214. package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
  215. package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
  216. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
  217. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
  218. package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
  219. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1 -1
  220. package/coverage/lcov-report/src/integrations/index.html +1 -1
  221. package/coverage/lcov-report/src/integrations/index.ts.html +1 -1
  222. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
  223. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
  224. package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
  225. package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
  226. package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
  227. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  228. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  229. package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
  230. package/coverage/lcov-report/src/integrations/rest.ts.html +1 -1
  231. package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
  232. package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
  233. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  234. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  235. package/coverage/lcov-report/src/integrations/utils.ts.html +1 -1
  236. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  237. package/coverage/lcov-report/src/middleware/authorized.ts.html +1 -1
  238. package/coverage/lcov-report/src/middleware/builder.ts.html +1 -1
  239. package/coverage/lcov-report/src/middleware/currentapp.ts.html +1 -1
  240. package/coverage/lcov-report/src/middleware/index.html +1 -1
  241. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  242. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  243. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  244. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  245. package/coverage/lcov-report/src/middleware/utils.ts.html +1 -1
  246. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +8 -29
  247. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  248. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  256. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  257. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  263. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/index.html +11 -11
  265. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  268. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  273. package/coverage/lcov-report/src/migrations/index.html +1 -1
  274. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  275. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  276. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  277. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  278. package/coverage/lcov-report/src/sdk/app/applications/index.html +146 -0
  279. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +106 -0
  280. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +244 -0
  281. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +136 -0
  282. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  283. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  284. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +6 -6
  285. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  286. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  287. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +17 -17
  288. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  289. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  290. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  291. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  292. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  293. package/coverage/lcov-report/src/sdk/index.html +5 -5
  294. package/coverage/lcov-report/src/sdk/index.ts.html +15 -12
  295. package/coverage/lcov-report/src/sdk/users/index.html +131 -0
  296. package/coverage/lcov-report/src/sdk/users/index.ts.html +100 -0
  297. package/coverage/lcov-report/src/sdk/users/utils.ts.html +277 -0
  298. package/coverage/lcov-report/src/startup.ts.html +1 -1
  299. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +1 -1
  300. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +1 -1
  301. package/coverage/lcov-report/src/tests/utilities/index.html +1 -1
  302. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  303. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +1 -1
  304. package/coverage/lcov-report/src/threads/automation.ts.html +1 -1
  305. package/coverage/lcov-report/src/threads/index.html +1 -1
  306. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  307. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  308. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  309. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +1 -1
  310. package/coverage/lcov-report/src/utilities/centralPath.ts.html +1 -1
  311. package/coverage/lcov-report/src/utilities/csvParser.ts.html +1 -1
  312. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  313. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  314. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +2 -2
  315. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  316. package/coverage/lcov-report/src/utilities/global.ts.html +34 -34
  317. package/coverage/lcov-report/src/utilities/index.html +1 -1
  318. package/coverage/lcov-report/src/utilities/index.ts.html +1 -1
  319. package/coverage/lcov-report/src/utilities/plugins.ts.html +1 -1
  320. package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
  321. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  322. package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
  323. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  324. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +1 -1
  325. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +1 -1
  326. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +1 -1
  327. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
  328. package/coverage/lcov-report/src/utilities/security.ts.html +1 -1
  329. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +1 -1
  330. package/coverage/lcov-report/src/utilities/usageQuota/index.html +15 -15
  331. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +13 -13
  332. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
  334. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +1 -1
  335. package/coverage/lcov-report/src/watch.ts.html +1 -1
  336. package/coverage/lcov-report/src/websocket.ts.html +1 -1
  337. package/coverage/lcov.info +888 -844
  338. package/dist/api/controllers/application.js +419 -438
  339. package/dist/api/controllers/cloud.js +1 -0
  340. package/dist/api/controllers/user.js +7 -48
  341. package/dist/migrations/functions/appUrls.js +5 -9
  342. package/dist/package.json +6 -6
  343. package/dist/sdk/app/applications/index.js +28 -0
  344. package/dist/sdk/app/applications/sync.js +66 -0
  345. package/dist/sdk/app/applications/utils.js +21 -0
  346. package/dist/sdk/index.js +4 -2
  347. package/dist/sdk/users/index.js +27 -0
  348. package/dist/sdk/users/utils.js +65 -0
  349. package/dist/tsconfig.build.tsbuildinfo +1 -1
  350. package/package.json +7 -7
  351. package/src/api/controllers/application.ts +55 -104
  352. package/src/api/controllers/cloud.ts +1 -0
  353. package/src/api/controllers/user.ts +4 -61
  354. package/src/api/routes/tests/application.spec.js +0 -1
  355. package/src/migrations/functions/appUrls.ts +2 -9
  356. package/src/sdk/app/applications/index.ts +7 -0
  357. package/src/sdk/app/applications/sync.ts +53 -0
  358. package/src/sdk/app/applications/utils.ts +17 -0
  359. package/src/sdk/index.ts +4 -3
  360. package/src/sdk/users/index.ts +5 -0
  361. package/src/sdk/users/utils.ts +64 -0
  362. package/builder/assets/index.0c44dac3.css +0 -6
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">84.75% </span>
26
+ <span class="strong">88.8% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>289/341</span>
28
+ <span class='fraction'>246/277</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.94% </span>
33
+ <span class="strong">68.03% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>81/121</span>
35
+ <span class='fraction'>83/122</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">91.8% </span>
40
+ <span class="strong">92.85% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>56/61</span>
42
+ <span class='fraction'>39/42</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.44% </span>
47
+ <span class="strong">88.38% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>252/302</span>
49
+ <span class='fraction'>236/267</span>
50
50
  </div>
51
51
 
52
52
 
@@ -665,56 +665,7 @@
665
665
  <a name='L600'></a><a href='#L600'>600</a>
666
666
  <a name='L601'></a><a href='#L601'>601</a>
667
667
  <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">45x</span>
668
+ <a name='L603'></a><a href='#L603'>603</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">45x</span>
718
669
  <span class="cline-any cline-yes">45x</span>
719
670
  <span class="cline-any cline-yes">45x</span>
720
671
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -742,7 +693,6 @@
742
693
  <span class="cline-any cline-neutral">&nbsp;</span>
743
694
  <span class="cline-any cline-yes">45x</span>
744
695
  <span class="cline-any cline-yes">45x</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
696
  <span class="cline-any cline-yes">45x</span>
747
697
  <span class="cline-any cline-yes">45x</span>
748
698
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -760,12 +710,16 @@
760
710
  <span class="cline-any cline-yes">45x</span>
761
711
  <span class="cline-any cline-yes">45x</span>
762
712
  <span class="cline-any cline-yes">45x</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
720
  <span class="cline-any cline-yes">45x</span>
764
721
  <span class="cline-any cline-yes">45x</span>
765
722
  <span class="cline-any cline-yes">45x</span>
766
- <span class="cline-any cline-yes">45x</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-yes">45x</span>
769
723
  <span class="cline-any cline-neutral">&nbsp;</span>
770
724
  <span class="cline-any cline-neutral">&nbsp;</span>
771
725
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -796,23 +750,12 @@
796
750
  <span class="cline-any cline-neutral">&nbsp;</span>
797
751
  <span class="cline-any cline-neutral">&nbsp;</span>
798
752
  <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-yes">45x</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-yes">254x</span>
803
753
  <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">1x</span>
805
- <span class="cline-any cline-yes">253x</span>
806
754
  <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-yes">253x</span>
808
755
  <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-yes">254x</span>
810
- <span class="cline-any cline-yes">254x</span>
811
756
  <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-yes">254x</span>
813
757
  <span class="cline-any cline-neutral">&nbsp;</span>
814
758
  <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-yes">45x</span>
816
759
  <span class="cline-any cline-yes">253x</span>
817
760
  <span class="cline-any cline-yes">4x</span>
818
761
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -821,7 +764,7 @@
821
764
  <span class="cline-any cline-neutral">&nbsp;</span>
822
765
  <span class="cline-any cline-neutral">&nbsp;</span>
823
766
  <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-yes">45x</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
768
  <span class="cline-any cline-neutral">&nbsp;</span>
826
769
  <span class="cline-any cline-neutral">&nbsp;</span>
827
770
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -881,7 +824,7 @@
881
824
  <span class="cline-any cline-yes">250x</span>
882
825
  <span class="cline-any cline-neutral">&nbsp;</span>
883
826
  <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-yes">45x</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
885
828
  <span class="cline-any cline-no">&nbsp;</span>
886
829
  <span class="cline-any cline-neutral">&nbsp;</span>
887
830
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -952,6 +895,7 @@
952
895
  <span class="cline-any cline-neutral">&nbsp;</span>
953
896
  <span class="cline-any cline-neutral">&nbsp;</span>
954
897
  <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
955
899
  <span class="cline-any cline-yes">250x</span>
956
900
  <span class="cline-any cline-yes">250x</span>
957
901
  <span class="cline-any cline-yes">250x</span>
@@ -1047,7 +991,7 @@
1047
991
  <span class="cline-any cline-yes">250x</span>
1048
992
  <span class="cline-any cline-neutral">&nbsp;</span>
1049
993
  <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-yes">250x</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
1051
995
  <span class="cline-any cline-yes">250x</span>
1052
996
  <span class="cline-any cline-neutral">&nbsp;</span>
1053
997
  <span class="cline-any cline-yes">250x</span>
@@ -1072,7 +1016,7 @@
1072
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
1073
1017
  <span class="cline-any cline-neutral">&nbsp;</span>
1074
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
1075
- <span class="cline-any cline-yes">250x</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1076
1020
  <span class="cline-any cline-yes">250x</span>
1077
1021
  <span class="cline-any cline-yes">250x</span>
1078
1022
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1103,7 +1047,7 @@
1103
1047
  <span class="cline-any cline-neutral">&nbsp;</span>
1104
1048
  <span class="cline-any cline-neutral">&nbsp;</span>
1105
1049
  <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-yes">250x</span>
1050
+ <span class="cline-any cline-yes">45x</span>
1107
1051
  <span class="cline-any cline-yes">250x</span>
1108
1052
  <span class="cline-any cline-yes">250x</span>
1109
1053
  <span class="cline-any cline-yes">250x</span>
@@ -1119,6 +1063,7 @@
1119
1063
  <span class="cline-any cline-yes">3x</span>
1120
1064
  <span class="cline-any cline-yes">3x</span>
1121
1065
  <span class="cline-any cline-yes">3x</span>
1066
+ <span class="cline-any cline-yes">3x</span>
1122
1067
  <span class="cline-any cline-neutral">&nbsp;</span>
1123
1068
  <span class="cline-any cline-yes">3x</span>
1124
1069
  <span class="cline-any cline-yes">3x</span>
@@ -1182,12 +1127,15 @@
1182
1127
  <span class="cline-any cline-yes">1x</span>
1183
1128
  <span class="cline-any cline-neutral">&nbsp;</span>
1184
1129
  <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-yes">45x</span>
1130
+ <span class="cline-any cline-neutral">&nbsp;</span>
1186
1131
  <span class="cline-any cline-yes">23x</span>
1187
1132
  <span class="cline-any cline-yes">23x</span>
1188
1133
  <span class="cline-any cline-neutral">&nbsp;</span>
1189
1134
  <span class="cline-any cline-yes">23x</span>
1190
1135
  <span class="cline-any cline-yes">1x</span>
1136
+ <span class="cline-any cline-yes">1x</span>
1137
+ <span class="cline-any cline-neutral">&nbsp;</span>
1138
+ <span class="cline-any cline-yes">1x</span>
1191
1139
  <span class="cline-any cline-neutral">&nbsp;</span>
1192
1140
  <span class="cline-any cline-neutral">&nbsp;</span>
1193
1141
  <span class="cline-any cline-yes">23x</span>
@@ -1217,12 +1165,12 @@
1217
1165
  <span class="cline-any cline-yes">23x</span>
1218
1166
  <span class="cline-any cline-neutral">&nbsp;</span>
1219
1167
  <span class="cline-any cline-neutral">&nbsp;</span>
1220
- <span class="cline-any cline-yes">45x</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1221
1169
  <span class="cline-any cline-yes">23x</span>
1222
1170
  <span class="cline-any cline-yes">23x</span>
1223
1171
  <span class="cline-any cline-neutral">&nbsp;</span>
1224
1172
  <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-yes">45x</span>
1173
+ <span class="cline-any cline-neutral">&nbsp;</span>
1226
1174
  <span class="cline-any cline-yes">23x</span>
1227
1175
  <span class="cline-any cline-yes">23x</span>
1228
1176
  <span class="cline-any cline-yes">23x</span>
@@ -1243,56 +1191,10 @@
1243
1191
  <span class="cline-any cline-no">&nbsp;</span>
1244
1192
  <span class="cline-any cline-no">&nbsp;</span>
1245
1193
  <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-no">&nbsp;</span>
1249
- <span class="cline-any cline-neutral">&nbsp;</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-no">&nbsp;</span>
1252
- <span class="cline-any cline-no">&nbsp;</span>
1253
- <span class="cline-any cline-no">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-no">&nbsp;</span>
1261
- <span class="cline-any cline-no">&nbsp;</span>
1262
- <span class="cline-any cline-no">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-no">&nbsp;</span>
1265
- <span class="cline-any cline-no">&nbsp;</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-no">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-no">&nbsp;</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-no">&nbsp;</span>
1277
- <span class="cline-any cline-no">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-no">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-no">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-no">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-no">&nbsp;</span>
1288
- <span class="cline-any cline-no">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
1194
  <span class="cline-any cline-no">&nbsp;</span>
1291
1195
  <span class="cline-any cline-neutral">&nbsp;</span>
1292
1196
  <span class="cline-any cline-neutral">&nbsp;</span>
1293
1197
  <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
1198
  <span class="cline-any cline-yes">45x</span>
1297
1199
  <span class="cline-any cline-yes">6x</span>
1298
1200
  <span class="cline-any cline-yes">6x</span>
@@ -1314,7 +1216,7 @@
1314
1216
  <span class="cline-any cline-neutral">&nbsp;</span>
1315
1217
  <span class="cline-any cline-neutral">&nbsp;</span>
1316
1218
  <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-yes">45x</span>
1219
+ <span class="cline-any cline-neutral">&nbsp;</span>
1318
1220
  <span class="cline-any cline-yes">1x</span>
1319
1221
  <span class="cline-any cline-yes">1x</span>
1320
1222
  <span class="cline-any cline-yes">1x</span>
@@ -1393,7 +1295,6 @@ import {
1393
1295
  } from "@budibase/backend-core"
1394
1296
  import { USERS_TABLE_SCHEMA } from "../../constants"
1395
1297
  import { buildDefaultDocs } from "../../db/defaultData/datasource_bb_default"
1396
- &nbsp;
1397
1298
  import { removeAppFromUserRoles } from "../../utilities/workerRequests"
1398
1299
  import {
1399
1300
  clientLibraryPath,
@@ -1406,18 +1307,22 @@ import {
1406
1307
  backupClientLibrary,
1407
1308
  revertClientLibrary,
1408
1309
  } from "../../utilities/fileSystem/clientLibrary"
1409
- import { syncGlobalUsers } from "./user"
1410
1310
  import { cleanupAutomations } from "../../automations/utils"
1411
1311
  import { checkAppMetadata } from "../../automations/logging"
1412
1312
  import { getUniqueRows } from "../../utilities/usageQuota/rows"
1413
1313
  import { quotas, groups } from "@budibase/pro"
1414
- import { App, Layout, Screen, MigrationType } from "@budibase/types"
1314
+ import {
1315
+ App,
1316
+ Layout,
1317
+ Screen,
1318
+ MigrationType,
1319
+ BBContext,
1320
+ Database,
1321
+ } from "@budibase/types"
1415
1322
  import { BASE_LAYOUT_PROP_IDS } from "../../constants/layouts"
1416
1323
  import { enrichPluginURLs } from "../../utilities/plugins"
1417
1324
  import sdk from "../../sdk"
1418
1325
  &nbsp;
1419
- const URL_REGEX_SLASH = /\/|\\/g
1420
- &nbsp;
1421
1326
  // utility function, need to do away with this
1422
1327
  async function getLayouts() {
1423
1328
  const db = context.getAppDB()
@@ -1441,29 +1346,18 @@ async function getScreens() {
1441
1346
  ).rows.map((row: any) =&gt; row.doc)
1442
1347
  }
1443
1348
  &nbsp;
1444
- function getUserRoleId(ctx: any) {
1445
- return !ctx.user.role || !ctx.user.role._id
1349
+ function getUserRoleId(ctx: BBContext) {
1350
+ return !ctx.user<span class="branch-0 cbranch-no" title="branch not covered" >?.r</span>ole || !ctx.user.role._id
1446
1351
  ? <span class="branch-0 cbranch-no" title="branch not covered" >roles.BUILTIN_ROLE_IDS.PUBLIC</span>
1447
1352
  : ctx.user.role._id
1448
1353
  }
1449
1354
  &nbsp;
1450
- export const getAppUrl = (ctx: any) =&gt; {
1451
- // construct the url
1452
- let url
1453
- if (ctx.request.body.url) {
1454
- // if the url is provided, use that
1455
- url = encodeURI(ctx.request.body.url)
1456
- } else if (ctx.request.body.name) {
1457
- // otherwise use the name
1458
- url = encodeURI(`${ctx.request.body.name}`)
1459
- }
1460
- if (url) {
1461
- url = `/${url.replace(URL_REGEX_SLASH, "")}`.toLowerCase()
1462
- }
1463
- return url
1464
- }
1465
- &nbsp;
1466
- const checkAppUrl = (ctx: any, apps: any, url: any, currentAppId?: string) =&gt; {
1355
+ function checkAppUrl(
1356
+ ctx: BBContext,
1357
+ apps: App[],
1358
+ url: string,
1359
+ currentAppId?: string
1360
+ ) {
1467
1361
  if (currentAppId) {
1468
1362
  apps = apps.filter((app: any) =&gt; app.appId !== currentAppId)
1469
1363
  }
@@ -1472,12 +1366,12 @@ const checkAppUrl = (ctx: any, apps: any, url: any, currentAppId?: string) =&gt;
1472
1366
  }
1473
1367
  }
1474
1368
  &nbsp;
1475
- const checkAppName = (
1476
- ctx: any,
1477
- apps: any,
1478
- name: any,
1369
+ function checkAppName(
1370
+ ctx: BBContext,
1371
+ apps: App[],
1372
+ name: string,
1479
1373
  currentAppId?: string
1480
- ) =&gt; {
1374
+ ) {
1481
1375
  // TODO: Replace with Joi
1482
1376
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!name) {
1483
1377
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Name is required")</span>
@@ -1532,14 +1426,14 @@ async function createInstance(template: any, includeSampleData: boolean) {
1532
1426
  return { _id: appId }
1533
1427
  }
1534
1428
  &nbsp;
1535
- const addDefaultTables = <span class="fstat-no" title="function not covered" >async (d</span>b: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
1429
+ async function <span class="fstat-no" title="function not covered" >addDefaultTables(</span>db: Database) {
1536
1430
  const defaultDbDocs = <span class="cstat-no" title="statement not covered" >buildDefaultDocs()</span>
1537
1431
  &nbsp;
1538
1432
  // add in the default db data docs - tables, datasource, rows and links
1539
1433
  <span class="cstat-no" title="statement not covered" > await db.bulkDocs([...defaultDbDocs])</span>
1540
1434
  }
1541
1435
  &nbsp;
1542
- export const fetch = async (ctx: any) =&gt; {
1436
+ export async function fetch(ctx: BBContext) {
1543
1437
  const dev = ctx.query &amp;&amp; ctx.query.status === AppStatus.DEV
1544
1438
  const all = ctx.query &amp;&amp; ctx.query.status === AppStatus.ALL
1545
1439
  const apps = (await dbCore.getAllApps({ dev, all })) as App[]
@@ -1564,7 +1458,7 @@ export const fetch = async (ctx: any) =&gt; {
1564
1458
  ctx.body = await checkAppMetadata(apps)
1565
1459
  }
1566
1460
  &nbsp;
1567
- export const fetchAppDefinition = async (ctx: any) =&gt; {
1461
+ export async function fetchAppDefinition(ctx: BBContext) {
1568
1462
  const layouts = await getLayouts()
1569
1463
  const userRoleId = getUserRoleId(ctx)
1570
1464
  const accessController = new roles.AccessController()
@@ -1579,7 +1473,7 @@ export const fetchAppDefinition = async (ctx: any) =&gt; {
1579
1473
  }
1580
1474
  }
1581
1475
  &nbsp;
1582
- export const fetchAppPackage = async (ctx: any) =&gt; {
1476
+ export async function fetchAppPackage(ctx: BBContext) {
1583
1477
  const db = context.getAppDB()
1584
1478
  let application = await db.get(DocumentType.APP_METADATA)
1585
1479
  const layouts = await getLayouts()
@@ -1589,7 +1483,7 @@ export const fetchAppPackage = async (ctx: any) =&gt; {
1589
1483
  application.usedPlugins = enrichPluginURLs(application.usedPlugins)
1590
1484
  &nbsp;
1591
1485
  // Only filter screens if the user is not a builder
1592
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!(ctx.user.builder &amp;&amp; ctx.user.builder.global)) {
1486
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!(ctx.user<span class="branch-0 cbranch-no" title="branch not covered" >?.b</span>uilder &amp;&amp; ctx.user.builder.global)) {
1593
1487
  const userRoleId = <span class="cstat-no" title="statement not covered" >getUserRoleId(ctx)</span>
1594
1488
  const accessController = <span class="cstat-no" title="statement not covered" >new roles.AccessController()</span>
1595
1489
  <span class="cstat-no" title="statement not covered" > screens = await accessController.checkScreensAccess(screens, userRoleId)</span>
@@ -1603,11 +1497,12 @@ export const fetchAppPackage = async (ctx: any) =&gt; {
1603
1497
  }
1604
1498
  }
1605
1499
  &nbsp;
1606
- const performAppCreate = async (ctx: any) =&gt; {
1607
- const apps = await dbCore.getAllApps({ dev: true })
1608
- const name = ctx.request.body.name
1500
+ async function performAppCreate(ctx: BBContext) {
1501
+ const apps = (await dbCore.getAllApps({ dev: true })) as App[]
1502
+ const name = ctx.request.body.name,
1503
+ possibleUrl = ctx.request.body.url
1609
1504
  checkAppName(ctx, apps, name)
1610
- const url = getAppUrl(ctx)
1505
+ const url = sdk.applications.getAppUrl({ name, url: possibleUrl })
1611
1506
  checkAppUrl(ctx, apps, url)
1612
1507
  &nbsp;
1613
1508
  const { useTemplate, templateKey, templateString } = ctx.request.body
@@ -1698,7 +1593,7 @@ const performAppCreate = async (ctx: any) =&gt; {
1698
1593
  return newApplication
1699
1594
  }
1700
1595
  &nbsp;
1701
- const creationEvents = async (request: any, app: App) =&gt; {
1596
+ async function creationEvents(request: any, app: App) {
1702
1597
  let creationFns: ((app: App) =&gt; Promise&lt;void&gt;)[] = []
1703
1598
  &nbsp;
1704
1599
  const body = request.body
@@ -1723,7 +1618,7 @@ const creationEvents = async (request: any, app: App) =&gt; {
1723
1618
  }
1724
1619
  }
1725
1620
  &nbsp;
1726
- const appPostCreate = async (ctx: any, app: App) =&gt; {
1621
+ async function appPostCreate(ctx: BBContext, app: App) {
1727
1622
  const tenantId = tenancy.getTenantId()
1728
1623
  await migrations.backPopulateMigrations({
1729
1624
  type: MigrationType.APP,
@@ -1744,7 +1639,7 @@ const appPostCreate = async (ctx: any, app: App) =&gt; {
1744
1639
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (err.code &amp;&amp; err.code === errors.codes.USAGE_LIMIT_EXCEEDED) {</span>
1745
1640
  // this import resulted in row usage exceeding the quota
1746
1641
  // delete the app
1747
- // skip pre and post steps as no rows have been added to quotas yet
1642
+ // skip pre- and post-steps as no rows have been added to quotas yet
1748
1643
  <span class="cstat-no" title="statement not covered" > ctx.params.appId = app.appId</span>
1749
1644
  <span class="cstat-no" title="statement not covered" > await destroyApp(ctx)</span>
1750
1645
  }
@@ -1754,7 +1649,7 @@ const appPostCreate = async (ctx: any, app: App) =&gt; {
1754
1649
  }
1755
1650
  }
1756
1651
  &nbsp;
1757
- export const create = async (ctx: any) =&gt; {
1652
+ export async function create(ctx: BBContext) {
1758
1653
  const newApplication = await quotas.addApp(() =&gt; performAppCreate(ctx))
1759
1654
  await appPostCreate(ctx, newApplication)
1760
1655
  await cache.bustCache(cache.CacheKey.CHECKLIST)
@@ -1764,14 +1659,15 @@ export const create = async (ctx: any) =&gt; {
1764
1659
  &nbsp;
1765
1660
  // This endpoint currently operates as a PATCH rather than a PUT
1766
1661
  // Thus name and url fields are handled only if present
1767
- export const update = async (ctx: any) =&gt; {
1768
- const apps = await dbCore.getAllApps({ dev: true })
1662
+ export async function update(ctx: BBContext) {
1663
+ const apps = (await dbCore.getAllApps({ dev: true })) as App[]
1769
1664
  // validation
1770
- const name = ctx.request.body.name
1665
+ const name = ctx.request.body.name,
1666
+ possibleUrl = ctx.request.body.url
1771
1667
  if (name) {
1772
1668
  checkAppName(ctx, apps, name, ctx.params.appId)
1773
1669
  }
1774
- const url = getAppUrl(ctx)
1670
+ const url = sdk.applications.getAppUrl({ name, url: possibleUrl })
1775
1671
  if (url) {
1776
1672
  checkAppUrl(ctx, apps, url, ctx.params.appId)
1777
1673
  ctx.request.body.url = url
@@ -1783,7 +1679,7 @@ export const update = async (ctx: any) =&gt; {
1783
1679
  ctx.body = app
1784
1680
  }
1785
1681
  &nbsp;
1786
- export const updateClient = async (ctx: any) =&gt; {
1682
+ export async function updateClient(ctx: BBContext) {
1787
1683
  // Get current app version
1788
1684
  const db = context.getAppDB()
1789
1685
  const application = await db.get(DocumentType.APP_METADATA)
@@ -1807,7 +1703,7 @@ export const updateClient = async (ctx: any) =&gt; {
1807
1703
  ctx.body = app
1808
1704
  }
1809
1705
  &nbsp;
1810
- export const revertClient = async (ctx: any) =&gt; {
1706
+ export async function revertClient(ctx: BBContext) {
1811
1707
  // Check app can be reverted
1812
1708
  const db = context.getAppDB()
1813
1709
  const application = await db.get(DocumentType.APP_METADATA)
@@ -1833,12 +1729,15 @@ export const revertClient = async (ctx: any) =&gt; {
1833
1729
  ctx.body = app
1834
1730
  }
1835
1731
  &nbsp;
1836
- const destroyApp = async (ctx: any) =&gt; {
1732
+ async function destroyApp(ctx: BBContext) {
1837
1733
  let appId = ctx.params.appId
1838
1734
  let isUnpublish = ctx.query &amp;&amp; ctx.query.unpublish
1839
1735
  &nbsp;
1840
1736
  if (isUnpublish) {
1841
1737
  appId = dbCore.getProdAppID(appId)
1738
+ const devAppId = dbCore.getDevAppID(appId)
1739
+ // sync before removing the published app
1740
+ await sdk.applications.syncApp(devAppId)
1842
1741
  }
1843
1742
  &nbsp;
1844
1743
  const db = isUnpublish ? context.getProdAppDB() : context.getAppDB()
@@ -1868,12 +1767,12 @@ const destroyApp = async (ctx: any) =&gt; {
1868
1767
  return result
1869
1768
  }
1870
1769
  &nbsp;
1871
- const preDestroyApp = async (ctx: any) =&gt; {
1770
+ async function preDestroyApp(ctx: BBContext) {
1872
1771
  const { rows } = await getUniqueRows([ctx.params.appId])
1873
1772
  ctx.rowCount = rows.length
1874
1773
  }
1875
1774
  &nbsp;
1876
- const postDestroyApp = async (ctx: any) =&gt; {
1775
+ async function postDestroyApp(ctx: BBContext) {
1877
1776
  const rowCount = ctx.rowCount
1878
1777
  await groups.cleanupApp(ctx.params.appId)
1879
1778
  <span class="missing-if-branch" title="if path not taken" >I</span>if (rowCount) {
@@ -1881,7 +1780,7 @@ const postDestroyApp = async (ctx: any) =&gt; {
1881
1780
  }
1882
1781
  }
1883
1782
  &nbsp;
1884
- export const destroy = async (ctx: any) =&gt; {
1783
+ export async function destroy(ctx: BBContext) {
1885
1784
  await preDestroyApp(ctx)
1886
1785
  const result = await destroyApp(ctx)
1887
1786
  await postDestroyApp(ctx)
@@ -1889,62 +1788,16 @@ export const destroy = async (ctx: any) =&gt; {
1889
1788
  ctx.body = result
1890
1789
  }
1891
1790
  &nbsp;
1892
- export const sync = <span class="fstat-no" title="function not covered" >async (c</span>tx: any, next: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
1893
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (env.DISABLE_AUTO_PROD_APP_SYNC) {</span>
1894
- <span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
1895
- <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
1896
- message:
1897
- "App sync disabled. You can reenable with the DISABLE_AUTO_PROD_APP_SYNC environment variable.",
1898
- }
1899
- <span class="cstat-no" title="statement not covered" > return next()</span>
1900
- }
1901
- &nbsp;
1791
+ export async function <span class="fstat-no" title="function not covered" >sync(</span>ctx: BBContext) {
1902
1792
  const appId = <span class="cstat-no" title="statement not covered" >ctx.params.appId</span>
1903
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!dbCore.isDevAppID(appId)) {</span>
1904
- <span class="cstat-no" title="statement not covered" > ctx.throw(400, "This action cannot be performed for production apps")</span>
1905
- }
1906
- &nbsp;
1907
- // replicate prod to dev
1908
- const prodAppId = <span class="cstat-no" title="statement not covered" >dbCore.getProdAppID(appId)</span>
1909
- &nbsp;
1910
- // specific case, want to make sure setup is skipped
1911
- const prodDb = <span class="cstat-no" title="statement not covered" >context.getProdAppDB({ skip_setup: true })</span>
1912
- const exists = <span class="cstat-no" title="statement not covered" >await prodDb.exists()</span>
1913
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!exists) {</span>
1914
- // the database doesn't exist. Don't replicate
1915
- <span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
1916
- <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
1917
- message: "App sync not required, app not deployed.",
1918
- }
1919
- <span class="cstat-no" title="statement not covered" > return next()</span>
1920
- }
1921
- &nbsp;
1922
- const replication = <span class="cstat-no" title="statement not covered" >new dbCore.Replication({</span>
1923
- source: prodAppId,
1924
- target: appId,
1925
- })
1926
- let error
1927
1793
  <span class="cstat-no" title="statement not covered" > try {</span>
1928
- <span class="cstat-no" title="statement not covered" > await replication.replicate(replication.appReplicateOpts())</span>
1929
- } catch (err) {
1930
- <span class="cstat-no" title="statement not covered" > error = err</span>
1931
- } finally {
1932
- <span class="cstat-no" title="statement not covered" > await replication.close()</span>
1933
- }
1934
- &nbsp;
1935
- // sync the users
1936
- <span class="cstat-no" title="statement not covered" > await syncGlobalUsers()</span>
1937
- &nbsp;
1938
- <span class="cstat-no" title="statement not covered" > if (error) {</span>
1939
- <span class="cstat-no" title="statement not covered" > ctx.throw(400, error)</span>
1940
- } else {
1941
- <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
1942
- message: "App sync completed successfully.",
1943
- }
1794
+ <span class="cstat-no" title="statement not covered" > ctx.body = await sdk.applications.syncApp(appId)</span>
1795
+ } catch (err: any) {
1796
+ <span class="cstat-no" title="statement not covered" > ctx.throw(err.status || 400, err.message)</span>
1944
1797
  }
1945
1798
  }
1946
1799
  &nbsp;
1947
- export const updateAppPackage = async (appPackage: any, appId: any) =&gt; {
1800
+ export async function updateAppPackage(appPackage: any, appId: any) {
1948
1801
  return context.doInAppContext(appId, async () =&gt; {
1949
1802
  const db = context.getAppDB()
1950
1803
  const application = await db.get(DocumentType.APP_METADATA)
@@ -1965,7 +1818,7 @@ export const updateAppPackage = async (appPackage: any, appId: any) =&gt; {
1965
1818
  })
1966
1819
  }
1967
1820
  &nbsp;
1968
- const migrateAppNavigation = async () =&gt; {
1821
+ async function migrateAppNavigation() {
1969
1822
  const db = context.getAppDB()
1970
1823
  const existing: App = await db.get(DocumentType.APP_METADATA)
1971
1824
  const layouts: Layout[] = await getLayouts()
@@ -2023,7 +1876,7 @@ const migrateAppNavigation = async () =&gt; {
2023
1876
  <div class='footer quiet pad2 space-top1 center small'>
2024
1877
  Code coverage generated by
2025
1878
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2026
- at Tue Dec 06 2022 10:58:36 GMT+0000 (Coordinated Universal Time)
1879
+ at Tue Dec 06 2022 14:58:39 GMT+0000 (Coordinated Universal Time)
2027
1880
  </div>
2028
1881
  <script src="../../../prettify.js"></script>
2029
1882
  <script>