@budibase/server 2.1.43-alpha.1 → 2.1.43-alpha.11

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 (384) hide show
  1. package/builder/assets/index.071ce1a2.css +6 -0
  2. package/builder/assets/{index.8935424b.js → index.9e365981.js} +314 -314
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +3534 -3470
  5. package/coverage/coverage-final.json +258 -252
  6. package/coverage/lcov-report/index.html +115 -70
  7. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +7 -7
  8. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  9. package/coverage/lcov-report/src/api/controllers/application.ts.html +163 -310
  10. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  11. package/coverage/lcov-report/src/api/controllers/automation.ts.html +27 -27
  12. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  13. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +15 -12
  14. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  15. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +15 -15
  16. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  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 +81 -81
  19. package/coverage/lcov-report/src/api/controllers/dev.ts.html +18 -18
  20. package/coverage/lcov-report/src/api/controllers/index.html +28 -28
  21. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  22. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  23. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  24. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  25. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  26. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +3 -3
  27. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +6 -6
  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 +15 -15
  30. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +6 -6
  31. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  32. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +4 -4
  33. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +4 -4
  34. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +10 -10
  35. package/coverage/lcov-report/src/api/controllers/public/index.html +18 -18
  36. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  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 +7 -7
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  43. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +6 -6
  44. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +10 -10
  45. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +9 -9
  46. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +80 -29
  47. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +6 -6
  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 +8 -8
  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 +8 -8
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +8 -8
  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 +10 -10
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +14 -14
  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 +21 -21
  59. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  60. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  61. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  62. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +22 -13
  63. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +20 -20
  64. package/coverage/lcov-report/src/api/controllers/row/index.html +4 -4
  65. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +14 -14
  66. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +29 -29
  67. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +9 -9
  68. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +10 -10
  69. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +13 -13
  70. package/coverage/lcov-report/src/api/controllers/screen.ts.html +7 -7
  71. package/coverage/lcov-report/src/api/controllers/script.ts.html +4 -4
  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 +24 -24
  74. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +10 -10
  75. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +14 -14
  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 +14 -14
  78. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +17 -17
  79. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +27 -27
  80. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  81. package/coverage/lcov-report/src/api/controllers/user.ts.html +26 -197
  82. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +4 -4
  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 +17 -17
  85. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +13 -13
  86. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +7 -7
  87. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +14 -14
  88. package/coverage/lcov-report/src/api/index.html +1 -1
  89. package/coverage/lcov-report/src/api/index.ts.html +33 -33
  90. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  91. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  92. package/coverage/lcov-report/src/api/routes/application.ts.html +9 -9
  93. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  94. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  95. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  96. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  97. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  99. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  100. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  101. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  102. package/coverage/lcov-report/src/api/routes/index.ts.html +34 -34
  103. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  104. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  106. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  107. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  108. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  109. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +12 -12
  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 +52 -52
  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 +21 -21
  114. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  115. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  116. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  117. package/coverage/lcov-report/src/api/routes/public/tests/index.html +116 -0
  118. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +169 -0
  119. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  120. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  121. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  123. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  124. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  125. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  126. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  127. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  128. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  129. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  130. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  131. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +15 -15
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +32 -32
  134. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  135. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  136. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  137. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  138. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  139. package/coverage/lcov-report/src/app.ts.html +32 -32
  140. package/coverage/lcov-report/src/automations/actions.ts.html +25 -25
  141. package/coverage/lcov-report/src/automations/automationUtils.ts.html +8 -8
  142. package/coverage/lcov-report/src/automations/bullboard.ts.html +11 -11
  143. package/coverage/lcov-report/src/automations/index.html +1 -1
  144. package/coverage/lcov-report/src/automations/index.ts.html +13 -13
  145. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  146. package/coverage/lcov-report/src/automations/logging/index.ts.html +6 -6
  147. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  148. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  149. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  150. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  151. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  152. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  153. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  154. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  155. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  156. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  157. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  158. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +14 -14
  159. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +17 -17
  160. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  161. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +4 -4
  162. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  163. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  164. package/coverage/lcov-report/src/automations/steps/utils.ts.html +3 -3
  165. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  166. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  168. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  169. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  170. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  172. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggers.ts.html +21 -21
  177. package/coverage/lcov-report/src/automations/utils.ts.html +45 -45
  178. package/coverage/lcov-report/src/constants/index.html +1 -1
  179. package/coverage/lcov-report/src/constants/index.ts.html +92 -92
  180. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  181. package/coverage/lcov-report/src/constants/screens.ts.html +4 -4
  182. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +23 -23
  183. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  184. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  185. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  186. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  187. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  188. package/coverage/lcov-report/src/db/dynamoClient.ts.html +16 -16
  189. package/coverage/lcov-report/src/db/inMemoryView.ts.html +5 -5
  190. package/coverage/lcov-report/src/db/index.html +1 -1
  191. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  192. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +8 -8
  193. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  194. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  195. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
  196. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +12 -12
  197. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  198. package/coverage/lcov-report/src/db/utils.ts.html +58 -58
  199. package/coverage/lcov-report/src/definitions/automations.ts.html +4 -4
  200. package/coverage/lcov-report/src/definitions/datasource.ts.html +4 -4
  201. package/coverage/lcov-report/src/definitions/index.html +1 -1
  202. package/coverage/lcov-report/src/environment.ts.html +19 -19
  203. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  204. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  205. package/coverage/lcov-report/src/events/index.html +1 -1
  206. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  207. package/coverage/lcov-report/src/events/utils.ts.html +3 -3
  208. package/coverage/lcov-report/src/index.html +1 -1
  209. package/coverage/lcov-report/src/index.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  211. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  212. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  213. package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
  214. package/coverage/lcov-report/src/integrations/base/sql.ts.html +12 -12
  215. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +7 -7
  216. package/coverage/lcov-report/src/integrations/base/utils.ts.html +3 -3
  217. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  219. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  220. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  221. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  222. package/coverage/lcov-report/src/integrations/index.html +30 -30
  223. package/coverage/lcov-report/src/integrations/index.ts.html +30 -30
  224. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +38 -32
  225. package/coverage/lcov-report/src/integrations/mongodb.ts.html +5 -5
  226. package/coverage/lcov-report/src/integrations/mysql.ts.html +16 -13
  227. package/coverage/lcov-report/src/integrations/oracle.ts.html +47 -134
  228. package/coverage/lcov-report/src/integrations/postgres.ts.html +34 -16
  229. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  230. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  231. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  232. package/coverage/lcov-report/src/integrations/rest.ts.html +16 -16
  233. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  234. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  235. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  236. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  237. package/coverage/lcov-report/src/integrations/utils.ts.html +31 -31
  238. package/coverage/lcov-report/src/middleware/appInfo.ts.html +7 -7
  239. package/coverage/lcov-report/src/middleware/authorized.ts.html +30 -30
  240. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  241. package/coverage/lcov-report/src/middleware/currentapp.ts.html +39 -39
  242. package/coverage/lcov-report/src/middleware/index.html +1 -1
  243. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  244. package/coverage/lcov-report/src/middleware/publicApi.ts.html +8 -8
  245. package/coverage/lcov-report/src/middleware/resourceId.ts.html +28 -28
  246. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  247. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  248. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +10 -31
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  263. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  265. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  266. package/coverage/lcov-report/src/migrations/functions/index.html +11 -11
  267. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  268. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  269. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  274. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  275. package/coverage/lcov-report/src/migrations/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  277. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  279. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  280. package/coverage/lcov-report/src/sdk/app/applications/index.html +146 -0
  281. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +106 -0
  282. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +244 -0
  283. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +136 -0
  284. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  285. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  286. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +6 -6
  287. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  288. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  289. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +17 -17
  290. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  292. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  293. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  294. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  295. package/coverage/lcov-report/src/sdk/index.html +5 -5
  296. package/coverage/lcov-report/src/sdk/index.ts.html +15 -12
  297. package/coverage/lcov-report/src/sdk/users/index.html +131 -0
  298. package/coverage/lcov-report/src/sdk/users/index.ts.html +100 -0
  299. package/coverage/lcov-report/src/sdk/users/utils.ts.html +277 -0
  300. package/coverage/lcov-report/src/startup.ts.html +41 -41
  301. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +97 -97
  302. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  303. package/coverage/lcov-report/src/tests/utilities/index.html +1 -1
  304. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  305. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +26 -26
  306. package/coverage/lcov-report/src/threads/automation.ts.html +23 -23
  307. package/coverage/lcov-report/src/threads/index.html +1 -1
  308. package/coverage/lcov-report/src/threads/index.ts.html +11 -11
  309. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  310. package/coverage/lcov-report/src/threads/utils.ts.html +15 -15
  311. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  312. package/coverage/lcov-report/src/utilities/centralPath.ts.html +4 -4
  313. package/coverage/lcov-report/src/utilities/csvParser.ts.html +8 -8
  314. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +11 -11
  315. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  316. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +42 -42
  317. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  318. package/coverage/lcov-report/src/utilities/global.ts.html +41 -41
  319. package/coverage/lcov-report/src/utilities/index.html +15 -15
  320. package/coverage/lcov-report/src/utilities/index.ts.html +26 -26
  321. package/coverage/lcov-report/src/utilities/plugins.ts.html +5 -5
  322. package/coverage/lcov-report/src/utilities/redis.ts.html +22 -22
  323. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  324. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  325. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  326. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +17 -17
  327. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  328. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +6 -6
  329. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  330. package/coverage/lcov-report/src/utilities/security.ts.html +6 -6
  331. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +1 -1
  332. package/coverage/lcov-report/src/utilities/usageQuota/index.html +15 -15
  333. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +17 -17
  334. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  335. package/coverage/lcov-report/src/utilities/users.ts.html +23 -23
  336. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +3 -3
  337. package/coverage/lcov-report/src/watch.ts.html +9 -9
  338. package/coverage/lcov-report/src/websocket.ts.html +6 -6
  339. package/coverage/lcov.info +4646 -4535
  340. package/dist/api/controllers/application.js +419 -438
  341. package/dist/api/controllers/cloud.js +1 -0
  342. package/dist/api/controllers/public/users.js +16 -0
  343. package/dist/api/controllers/row/ExternalRequest.js +2 -1
  344. package/dist/api/controllers/user.js +7 -48
  345. package/dist/api/routes/public/tests/utils.js +33 -0
  346. package/dist/integrations/base/types.js +2 -0
  347. package/dist/integrations/microsoftSqlServer.js +8 -3
  348. package/dist/integrations/oracle.js +8 -1
  349. package/dist/integrations/postgres.js +6 -3
  350. package/dist/migrations/functions/appUrls.js +5 -9
  351. package/dist/package.json +6 -6
  352. package/dist/sdk/app/applications/index.js +28 -0
  353. package/dist/sdk/app/applications/sync.js +66 -0
  354. package/dist/sdk/app/applications/utils.js +21 -0
  355. package/dist/sdk/index.js +4 -2
  356. package/dist/sdk/users/index.js +27 -0
  357. package/dist/sdk/users/utils.js +65 -0
  358. package/dist/tsconfig.build.tsbuildinfo +1 -1
  359. package/package.json +7 -7
  360. package/scripts/integrations/mssql/data/setup.sql +3 -3
  361. package/scripts/integrations/postgres/emp-skill.sql +46 -0
  362. package/src/api/controllers/application.ts +55 -104
  363. package/src/api/controllers/cloud.ts +1 -0
  364. package/src/api/controllers/public/users.ts +23 -6
  365. package/src/api/controllers/row/ExternalRequest.ts +4 -1
  366. package/src/api/controllers/user.ts +4 -61
  367. package/src/api/routes/public/tests/compare.spec.js +3 -21
  368. package/src/api/routes/public/tests/users.spec.js +38 -0
  369. package/src/api/routes/public/tests/utils.ts +28 -0
  370. package/src/api/routes/tests/application.spec.js +0 -1
  371. package/src/integrations/base/types.ts +134 -0
  372. package/src/integrations/microsoftSqlServer.ts +14 -12
  373. package/src/integrations/mysql.ts +4 -3
  374. package/src/integrations/oracle.ts +17 -46
  375. package/src/integrations/postgres.ts +8 -2
  376. package/src/migrations/functions/appUrls.ts +2 -9
  377. package/src/sdk/app/applications/index.ts +7 -0
  378. package/src/sdk/app/applications/sync.ts +53 -0
  379. package/src/sdk/app/applications/utils.ts +17 -0
  380. package/src/sdk/index.ts +4 -3
  381. package/src/sdk/users/index.ts +5 -0
  382. package/src/sdk/users/utils.ts +64 -0
  383. package/src/utilities/workerRequests.ts +2 -2
  384. 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,64 +665,15 @@
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>
718
- <span class="cline-any cline-yes">45x</span>
719
- <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">46x</span>
669
+ <span class="cline-any cline-yes">46x</span>
670
+ <span class="cline-any cline-yes">46x</span>
720
671
  <span class="cline-any cline-neutral">&nbsp;</span>
721
672
  <span class="cline-any cline-neutral">&nbsp;</span>
722
673
  <span class="cline-any cline-neutral">&nbsp;</span>
723
674
  <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-yes">45x</span>
725
- <span class="cline-any cline-yes">45x</span>
675
+ <span class="cline-any cline-yes">46x</span>
676
+ <span class="cline-any cline-yes">46x</span>
726
677
  <span class="cline-any cline-neutral">&nbsp;</span>
727
678
  <span class="cline-any cline-neutral">&nbsp;</span>
728
679
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -730,7 +681,7 @@
730
681
  <span class="cline-any cline-neutral">&nbsp;</span>
731
682
  <span class="cline-any cline-neutral">&nbsp;</span>
732
683
  <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-yes">45x</span>
684
+ <span class="cline-any cline-yes">46x</span>
734
685
  <span class="cline-any cline-neutral">&nbsp;</span>
735
686
  <span class="cline-any cline-neutral">&nbsp;</span>
736
687
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -740,32 +691,35 @@
740
691
  <span class="cline-any cline-neutral">&nbsp;</span>
741
692
  <span class="cline-any cline-neutral">&nbsp;</span>
742
693
  <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-yes">45x</span>
744
- <span class="cline-any cline-yes">45x</span>
694
+ <span class="cline-any cline-yes">46x</span>
695
+ <span class="cline-any cline-yes">46x</span>
696
+ <span class="cline-any cline-yes">46x</span>
697
+ <span class="cline-any cline-yes">46x</span>
745
698
  <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-yes">45x</span>
747
- <span class="cline-any cline-yes">45x</span>
748
699
  <span class="cline-any cline-neutral">&nbsp;</span>
749
700
  <span class="cline-any cline-neutral">&nbsp;</span>
750
701
  <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-yes">46x</span>
703
+ <span class="cline-any cline-yes">46x</span>
751
704
  <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-yes">45x</span>
753
- <span class="cline-any cline-yes">45x</span>
754
705
  <span class="cline-any cline-neutral">&nbsp;</span>
755
706
  <span class="cline-any cline-neutral">&nbsp;</span>
756
707
  <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-yes">46x</span>
709
+ <span class="cline-any cline-yes">46x</span>
710
+ <span class="cline-any cline-yes">46x</span>
711
+ <span class="cline-any cline-yes">46x</span>
712
+ <span class="cline-any cline-yes">46x</span>
757
713
  <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-yes">45x</span>
759
- <span class="cline-any cline-yes">45x</span>
760
- <span class="cline-any cline-yes">45x</span>
761
- <span class="cline-any cline-yes">45x</span>
762
- <span class="cline-any cline-yes">45x</span>
763
- <span class="cline-any cline-yes">45x</span>
764
- <span class="cline-any cline-yes">45x</span>
765
- <span class="cline-any cline-yes">45x</span>
766
- <span class="cline-any cline-yes">45x</span>
767
714
  <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-yes">45x</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>
720
+ <span class="cline-any cline-yes">46x</span>
721
+ <span class="cline-any cline-yes">46x</span>
722
+ <span class="cline-any cline-yes">46x</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,24 +750,13 @@
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
753
  <span class="cline-any cline-neutral">&nbsp;</span>
801
754
  <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-yes">254x</span>
803
755
  <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
756
  <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-yes">253x</span>
808
757
  <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
758
  <span class="cline-any cline-neutral">&nbsp;</span>
812
759
  <span class="cline-any cline-yes">254x</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-yes">45x</span>
816
- <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>
819
762
  <span class="cline-any cline-yes">1169x</span>
@@ -821,17 +764,17 @@
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>
825
767
  <span class="cline-any cline-neutral">&nbsp;</span>
826
768
  <span class="cline-any cline-neutral">&nbsp;</span>
827
769
  <span class="cline-any cline-neutral">&nbsp;</span>
828
770
  <span class="cline-any cline-neutral">&nbsp;</span>
829
771
  <span class="cline-any cline-neutral">&nbsp;</span>
830
772
  <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-yes">253x</span>
773
+ <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-yes">254x</span>
832
775
  <span class="cline-any cline-no">&nbsp;</span>
833
776
  <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-yes">253x</span>
777
+ <span class="cline-any cline-yes">254x</span>
835
778
  <span class="cline-any cline-yes">4x</span>
836
779
  <span class="cline-any cline-neutral">&nbsp;</span>
837
780
  <span class="cline-any cline-yes">1169x</span>
@@ -840,13 +783,13 @@
840
783
  <span class="cline-any cline-neutral">&nbsp;</span>
841
784
  <span class="cline-any cline-neutral">&nbsp;</span>
842
785
  <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">250x</span>
844
- <span class="cline-any cline-yes">250x</span>
845
- <span class="cline-any cline-yes">250x</span>
846
- <span class="cline-any cline-yes">250x</span>
786
+ <span class="cline-any cline-yes">251x</span>
787
+ <span class="cline-any cline-yes">251x</span>
788
+ <span class="cline-any cline-yes">251x</span>
789
+ <span class="cline-any cline-yes">251x</span>
847
790
  <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-yes">250x</span>
849
- <span class="cline-any cline-yes">250x</span>
791
+ <span class="cline-any cline-yes">251x</span>
792
+ <span class="cline-any cline-yes">251x</span>
850
793
  <span class="cline-any cline-neutral">&nbsp;</span>
851
794
  <span class="cline-any cline-neutral">&nbsp;</span>
852
795
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -855,40 +798,40 @@
855
798
  <span class="cline-any cline-neutral">&nbsp;</span>
856
799
  <span class="cline-any cline-neutral">&nbsp;</span>
857
800
  <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-yes">250x</span>
859
- <span class="cline-any cline-yes">250x</span>
860
- <span class="cline-any cline-yes">250x</span>
801
+ <span class="cline-any cline-yes">251x</span>
802
+ <span class="cline-any cline-yes">251x</span>
803
+ <span class="cline-any cline-yes">251x</span>
861
804
  <span class="cline-any cline-neutral">&nbsp;</span>
862
805
  <span class="cline-any cline-neutral">&nbsp;</span>
863
806
  <span class="cline-any cline-neutral">&nbsp;</span>
864
- <span class="cline-any cline-yes">250x</span>
807
+ <span class="cline-any cline-yes">251x</span>
865
808
  <span class="cline-any cline-yes">1x</span>
866
809
  <span class="cline-any cline-yes">1x</span>
867
810
  <span class="cline-any cline-no">&nbsp;</span>
868
811
  <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-yes">249x</span>
812
+ <span class="cline-any cline-yes">250x</span>
870
813
  <span class="cline-any cline-yes">2x</span>
871
814
  <span class="cline-any cline-neutral">&nbsp;</span>
872
815
  <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-yes">247x</span>
816
+ <span class="cline-any cline-yes">248x</span>
874
817
  <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-yes">247x</span>
818
+ <span class="cline-any cline-yes">248x</span>
876
819
  <span class="cline-any cline-neutral">&nbsp;</span>
877
820
  <span class="cline-any cline-no">&nbsp;</span>
878
821
  <span class="cline-any cline-neutral">&nbsp;</span>
879
822
  <span class="cline-any cline-neutral">&nbsp;</span>
880
823
  <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-yes">250x</span>
824
+ <span class="cline-any cline-yes">251x</span>
825
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
826
  <span class="cline-any cline-neutral">&nbsp;</span>
883
827
  <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-yes">45x</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>
888
831
  <span class="cline-any cline-no">&nbsp;</span>
889
832
  <span class="cline-any cline-neutral">&nbsp;</span>
890
833
  <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-yes">45x</span>
834
+ <span class="cline-any cline-yes">46x</span>
892
835
  <span class="cline-any cline-yes">15x</span>
893
836
  <span class="cline-any cline-yes">15x</span>
894
837
  <span class="cline-any cline-yes">15x</span>
@@ -913,7 +856,7 @@
913
856
  <span class="cline-any cline-yes">15x</span>
914
857
  <span class="cline-any cline-neutral">&nbsp;</span>
915
858
  <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-yes">45x</span>
859
+ <span class="cline-any cline-yes">46x</span>
917
860
  <span class="cline-any cline-yes">1x</span>
918
861
  <span class="cline-any cline-yes">1x</span>
919
862
  <span class="cline-any cline-yes">1x</span>
@@ -928,7 +871,7 @@
928
871
  <span class="cline-any cline-neutral">&nbsp;</span>
929
872
  <span class="cline-any cline-neutral">&nbsp;</span>
930
873
  <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-yes">45x</span>
874
+ <span class="cline-any cline-yes">46x</span>
932
875
  <span class="cline-any cline-yes">6x</span>
933
876
  <span class="cline-any cline-yes">6x</span>
934
877
  <span class="cline-any cline-yes">6x</span>
@@ -952,28 +895,29 @@
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>
955
- <span class="cline-any cline-yes">250x</span>
956
- <span class="cline-any cline-yes">250x</span>
957
- <span class="cline-any cline-yes">250x</span>
958
- <span class="cline-any cline-yes">250x</span>
959
- <span class="cline-any cline-yes">250x</span>
960
- <span class="cline-any cline-yes">250x</span>
961
898
  <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-yes">250x</span>
963
- <span class="cline-any cline-yes">250x</span>
899
+ <span class="cline-any cline-yes">251x</span>
900
+ <span class="cline-any cline-yes">251x</span>
901
+ <span class="cline-any cline-yes">251x</span>
902
+ <span class="cline-any cline-yes">251x</span>
903
+ <span class="cline-any cline-yes">251x</span>
904
+ <span class="cline-any cline-yes">251x</span>
964
905
  <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-yes">251x</span>
907
+ <span class="cline-any cline-yes">251x</span>
965
908
  <span class="cline-any cline-neutral">&nbsp;</span>
966
909
  <span class="cline-any cline-neutral">&nbsp;</span>
967
910
  <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-yes">250x</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-yes">251x</span>
969
913
  <span class="cline-any cline-yes">2x</span>
970
914
  <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-yes">250x</span>
972
- <span class="cline-any cline-yes">250x</span>
973
- <span class="cline-any cline-yes">250x</span>
974
- <span class="cline-any cline-yes">250x</span>
915
+ <span class="cline-any cline-yes">251x</span>
916
+ <span class="cline-any cline-yes">251x</span>
917
+ <span class="cline-any cline-yes">251x</span>
918
+ <span class="cline-any cline-yes">251x</span>
975
919
  <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-yes">250x</span>
920
+ <span class="cline-any cline-yes">251x</span>
977
921
  <span class="cline-any cline-neutral">&nbsp;</span>
978
922
  <span class="cline-any cline-neutral">&nbsp;</span>
979
923
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1008,8 +952,8 @@
1008
952
  <span class="cline-any cline-neutral">&nbsp;</span>
1009
953
  <span class="cline-any cline-neutral">&nbsp;</span>
1010
954
  <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-yes">250x</span>
1012
- <span class="cline-any cline-yes">250x</span>
955
+ <span class="cline-any cline-yes">251x</span>
956
+ <span class="cline-any cline-yes">251x</span>
1013
957
  <span class="cline-any cline-yes">1x</span>
1014
958
  <span class="cline-any cline-neutral">&nbsp;</span>
1015
959
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1035,23 +979,23 @@
1035
979
  <span class="cline-any cline-neutral">&nbsp;</span>
1036
980
  <span class="cline-any cline-neutral">&nbsp;</span>
1037
981
  <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-yes">250x</span>
1039
- <span class="cline-any cline-yes">250x</span>
982
+ <span class="cline-any cline-yes">251x</span>
983
+ <span class="cline-any cline-yes">251x</span>
1040
984
  <span class="cline-any cline-neutral">&nbsp;</span>
1041
985
  <span class="cline-any cline-neutral">&nbsp;</span>
1042
986
  <span class="cline-any cline-neutral">&nbsp;</span>
1043
987
  <span class="cline-any cline-neutral">&nbsp;</span>
1044
988
  <span class="cline-any cline-neutral">&nbsp;</span>
1045
989
  <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-yes">250x</span>
1047
- <span class="cline-any cline-yes">250x</span>
990
+ <span class="cline-any cline-yes">251x</span>
991
+ <span class="cline-any cline-yes">251x</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>
1051
- <span class="cline-any cline-yes">250x</span>
1052
994
  <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-yes">250x</span>
1054
- <span class="cline-any cline-yes">250x</span>
995
+ <span class="cline-any cline-yes">251x</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
997
+ <span class="cline-any cline-yes">251x</span>
998
+ <span class="cline-any cline-yes">251x</span>
1055
999
  <span class="cline-any cline-neutral">&nbsp;</span>
1056
1000
  <span class="cline-any cline-yes">3x</span>
1057
1001
  <span class="cline-any cline-yes">1x</span>
@@ -1065,23 +1009,23 @@
1065
1009
  <span class="cline-any cline-no">&nbsp;</span>
1066
1010
  <span class="cline-any cline-neutral">&nbsp;</span>
1067
1011
  <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-yes">250x</span>
1012
+ <span class="cline-any cline-yes">251x</span>
1069
1013
  <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-yes">250x</span>
1071
- <span class="cline-any cline-yes">253x</span>
1014
+ <span class="cline-any cline-yes">251x</span>
1015
+ <span class="cline-any cline-yes">254x</span>
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>
1076
- <span class="cline-any cline-yes">250x</span>
1077
- <span class="cline-any cline-yes">250x</span>
1078
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-yes">251x</span>
1021
+ <span class="cline-any cline-yes">251x</span>
1079
1022
  <span class="cline-any cline-neutral">&nbsp;</span>
1080
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
1081
1024
  <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-yes">250x</span>
1083
1025
  <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-yes">250x</span>
1026
+ <span class="cline-any cline-yes">251x</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-yes">251x</span>
1085
1029
  <span class="cline-any cline-yes">3x</span>
1086
1030
  <span class="cline-any cline-yes">3x</span>
1087
1031
  <span class="cline-any cline-yes">3x</span>
@@ -1103,22 +1047,23 @@
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>
1107
- <span class="cline-any cline-yes">250x</span>
1108
- <span class="cline-any cline-yes">250x</span>
1109
- <span class="cline-any cline-yes">250x</span>
1110
- <span class="cline-any cline-yes">250x</span>
1111
- <span class="cline-any cline-yes">250x</span>
1050
+ <span class="cline-any cline-yes">46x</span>
1051
+ <span class="cline-any cline-yes">251x</span>
1052
+ <span class="cline-any cline-yes">251x</span>
1053
+ <span class="cline-any cline-yes">251x</span>
1054
+ <span class="cline-any cline-yes">251x</span>
1055
+ <span class="cline-any cline-yes">251x</span>
1112
1056
  <span class="cline-any cline-neutral">&nbsp;</span>
1113
1057
  <span class="cline-any cline-neutral">&nbsp;</span>
1114
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
1115
1059
  <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-yes">45x</span>
1060
+ <span class="cline-any cline-yes">46x</span>
1117
1061
  <span class="cline-any cline-yes">3x</span>
1118
1062
  <span class="cline-any cline-neutral">&nbsp;</span>
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>
@@ -1132,7 +1077,7 @@
1132
1077
  <span class="cline-any cline-yes">3x</span>
1133
1078
  <span class="cline-any cline-neutral">&nbsp;</span>
1134
1079
  <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-yes">45x</span>
1080
+ <span class="cline-any cline-yes">46x</span>
1136
1081
  <span class="cline-any cline-neutral">&nbsp;</span>
1137
1082
  <span class="cline-any cline-yes">2x</span>
1138
1083
  <span class="cline-any cline-yes">2x</span>
@@ -1156,7 +1101,7 @@
1156
1101
  <span class="cline-any cline-yes">2x</span>
1157
1102
  <span class="cline-any cline-neutral">&nbsp;</span>
1158
1103
  <span class="cline-any cline-neutral">&nbsp;</span>
1159
- <span class="cline-any cline-yes">45x</span>
1104
+ <span class="cline-any cline-yes">46x</span>
1160
1105
  <span class="cline-any cline-neutral">&nbsp;</span>
1161
1106
  <span class="cline-any cline-yes">1x</span>
1162
1107
  <span class="cline-any cline-yes">1x</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>
@@ -1230,7 +1178,7 @@
1230
1178
  <span class="cline-any cline-neutral">&nbsp;</span>
1231
1179
  <span class="cline-any cline-neutral">&nbsp;</span>
1232
1180
  <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-yes">45x</span>
1181
+ <span class="cline-any cline-yes">46x</span>
1234
1182
  <span class="cline-any cline-yes">23x</span>
1235
1183
  <span class="cline-any cline-yes">23x</span>
1236
1184
  <span class="cline-any cline-yes">23x</span>
@@ -1238,62 +1186,16 @@
1238
1186
  <span class="cline-any cline-yes">23x</span>
1239
1187
  <span class="cline-any cline-neutral">&nbsp;</span>
1240
1188
  <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-yes">45x</span>
1242
- <span class="cline-any cline-no">&nbsp;</span>
1189
+ <span class="cline-any cline-yes">46x</span>
1243
1190
  <span class="cline-any cline-no">&nbsp;</span>
1244
1191
  <span class="cline-any cline-no">&nbsp;</span>
1245
- <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
1192
  <span class="cline-any cline-no">&nbsp;</span>
1249
1193
  <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
1194
  <span class="cline-any cline-no">&nbsp;</span>
1254
1195
  <span class="cline-any cline-neutral">&nbsp;</span>
1255
1196
  <span class="cline-any cline-neutral">&nbsp;</span>
1256
1197
  <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
- <span class="cline-any cline-no">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <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
- <span class="cline-any cline-yes">45x</span>
1198
+ <span class="cline-any cline-yes">46x</span>
1297
1199
  <span class="cline-any cline-yes">6x</span>
1298
1200
  <span class="cline-any cline-yes">6x</span>
1299
1201
  <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 Fri Dec 02 2022 13:39:42 GMT+0000 (Coordinated Universal Time)
1879
+ at Wed Dec 07 2022 11:18:08 GMT+0000 (Coordinated Universal Time)
2027
1880
  </div>
2028
1881
  <script src="../../../prettify.js"></script>
2029
1882
  <script>