@budibase/server 1.0.46-alpha.7 → 1.0.48

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 (251) hide show
  1. package/builder/assets/{index.dd9e386f.css → index.39e01193.css} +1 -1
  2. package/builder/assets/{index.af9e71d8.js → index.e083dcaf.js} +221 -223
  3. package/builder/assets/{vendor.3bd2f661.js → vendor.f9faf6ab.js} +12 -12
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1637 -1793
  6. package/coverage/coverage-final.json +94 -98
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +126 -210
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +36 -72
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/{migrations/usageQuotas/syncRows.js.html → api/controllers/hosting.js.html} +44 -41
  18. package/coverage/lcov-report/api/controllers/index.html +42 -27
  19. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +19 -19
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
  26. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
  29. package/coverage/lcov-report/api/controllers/row/index.html +15 -15
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +44 -44
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +8 -8
  33. package/coverage/lcov-report/api/controllers/row/utils.js.html +57 -39
  34. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  35. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  37. package/coverage/lcov-report/api/controllers/table/index.html +32 -32
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +39 -57
  39. package/coverage/lcov-report/api/controllers/table/internal.js.html +34 -40
  40. package/coverage/lcov-report/api/controllers/table/utils.js.html +122 -83
  41. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/user.js.html +20 -20
  43. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  44. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  46. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  47. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  48. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  49. package/coverage/lcov-report/api/index.html +1 -1
  50. package/coverage/lcov-report/api/index.js.html +10 -10
  51. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  62. package/coverage/lcov-report/{migrations/usageQuotas/syncApps.js.html → api/routes/hosting.js.html} +27 -42
  63. package/coverage/lcov-report/api/routes/index.html +22 -7
  64. package/coverage/lcov-report/api/routes/index.js.html +10 -4
  65. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +2 -17
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  81. package/coverage/lcov-report/automations/actions.js.html +24 -24
  82. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  83. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  84. package/coverage/lcov-report/automations/index.html +1 -1
  85. package/coverage/lcov-report/automations/index.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  87. package/coverage/lcov-report/automations/steps/createRow.js.html +19 -13
  88. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  89. package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
  90. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  91. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  92. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  93. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  94. package/coverage/lcov-report/automations/steps/index.html +13 -13
  95. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  96. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  97. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  98. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  99. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  100. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  101. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  102. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  103. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  104. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  105. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  106. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  108. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  109. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  113. package/coverage/lcov-report/automations/utils.js.html +32 -32
  114. package/coverage/lcov-report/constants/index.html +11 -11
  115. package/coverage/lcov-report/constants/index.js.html +37 -40
  116. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  117. package/coverage/lcov-report/constants/screens.js.html +4 -4
  118. package/coverage/lcov-report/db/client.js.html +18 -18
  119. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  120. package/coverage/lcov-report/db/index.html +15 -15
  121. package/coverage/lcov-report/db/index.js.html +3 -3
  122. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +18 -18
  123. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/index.js.html +31 -31
  125. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +15 -15
  126. package/coverage/lcov-report/db/newid.js.html +4 -4
  127. package/coverage/lcov-report/db/utils.js.html +85 -85
  128. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  129. package/coverage/lcov-report/events/index.html +1 -1
  130. package/coverage/lcov-report/events/index.js.html +5 -5
  131. package/coverage/lcov-report/events/utils.js.html +3 -3
  132. package/coverage/lcov-report/index.html +86 -116
  133. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  134. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  135. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  136. package/coverage/lcov-report/middleware/authorized.js.html +11 -11
  137. package/coverage/lcov-report/middleware/builder.js.html +8 -8
  138. package/coverage/lcov-report/middleware/currentapp.js.html +29 -29
  139. package/coverage/lcov-report/middleware/index.html +20 -20
  140. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  141. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  142. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  143. package/coverage/lcov-report/middleware/usageQuota.js.html +41 -275
  144. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  145. package/coverage/lcov-report/threads/automation.js.html +1 -1
  146. package/coverage/lcov-report/threads/index.html +15 -15
  147. package/coverage/lcov-report/threads/index.js.html +10 -10
  148. package/coverage/lcov-report/threads/query.js.html +8 -23
  149. package/coverage/lcov-report/threads/utils.js.html +14 -14
  150. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  151. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  152. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  153. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  154. package/coverage/lcov-report/utilities/global.js.html +26 -26
  155. package/coverage/lcov-report/utilities/index.html +19 -19
  156. package/coverage/lcov-report/utilities/index.js.html +25 -25
  157. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
  158. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  159. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  160. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  161. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  162. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +53 -53
  163. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
  164. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  165. package/coverage/lcov-report/utilities/security.js.html +8 -8
  166. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  167. package/coverage/lcov-report/utilities/users.js.html +5 -5
  168. package/coverage/lcov-report/utilities/workerRequests.js.html +108 -39
  169. package/coverage/lcov.info +2332 -2599
  170. package/dist/api/controllers/application.js +20 -49
  171. package/dist/api/controllers/datasource.js +0 -11
  172. package/dist/api/controllers/hosting.js +30 -0
  173. package/dist/api/controllers/row/ExternalRequest.js +2 -1
  174. package/dist/api/controllers/row/utils.js +8 -6
  175. package/dist/api/controllers/static/index.js +10 -59
  176. package/dist/api/controllers/table/index.js +4 -10
  177. package/dist/api/controllers/table/internal.js +0 -2
  178. package/dist/api/controllers/table/utils.js +17 -11
  179. package/dist/api/routes/hosting.js +11 -0
  180. package/dist/api/routes/index.js +2 -0
  181. package/dist/api/routes/static.js +1 -2
  182. package/dist/automations/steps/createRow.js +4 -2
  183. package/dist/automations/steps/deleteRow.js +4 -1
  184. package/dist/constants/index.js +5 -8
  185. package/dist/definitions/datasource.js +0 -1
  186. package/dist/environment.js +0 -1
  187. package/dist/integrations/base/sql.js +6 -13
  188. package/dist/integrations/index.js +0 -3
  189. package/dist/integrations/utils.js +9 -56
  190. package/dist/middleware/usageQuota.js +13 -82
  191. package/dist/package.json +5 -8
  192. package/dist/tests/utilities/TestConfiguration.js +1 -3
  193. package/dist/threads/query.js +0 -4
  194. package/dist/tsconfig.tsbuildinfo +1 -1
  195. package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -44
  196. package/dist/utilities/workerRequests.js +20 -0
  197. package/nodemon.json +1 -1
  198. package/package.json +6 -9
  199. package/src/api/controllers/application.js +24 -52
  200. package/src/api/controllers/datasource.js +0 -12
  201. package/src/api/controllers/hosting.js +22 -0
  202. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  203. package/src/api/controllers/row/utils.js +12 -6
  204. package/src/api/controllers/static/index.js +10 -63
  205. package/src/api/controllers/table/index.js +9 -15
  206. package/src/api/controllers/table/internal.js +0 -2
  207. package/src/api/controllers/table/utils.js +24 -11
  208. package/src/api/routes/hosting.js +13 -0
  209. package/src/api/routes/index.js +2 -0
  210. package/src/api/routes/static.js +0 -5
  211. package/src/api/routes/tests/application.spec.js +2 -2
  212. package/src/api/routes/tests/hosting.spec.js +36 -0
  213. package/src/automations/steps/createRow.js +4 -2
  214. package/src/automations/steps/deleteRow.js +4 -1
  215. package/src/constants/index.js +8 -9
  216. package/src/definitions/datasource.ts +0 -3
  217. package/src/environment.js +0 -1
  218. package/src/integrations/base/sql.ts +7 -14
  219. package/src/integrations/index.ts +0 -3
  220. package/src/integrations/tests/sql.spec.js +0 -16
  221. package/src/integrations/utils.ts +11 -70
  222. package/src/middleware/tests/usageQuota.spec.js +24 -18
  223. package/src/middleware/usageQuota.js +15 -93
  224. package/src/tests/utilities/TestConfiguration.js +1 -3
  225. package/src/threads/query.js +0 -5
  226. package/src/utilities/usageQuota.js +73 -0
  227. package/src/utilities/workerRequests.js +23 -0
  228. package/coverage/lcov-report/migrations/usageQuotas/index.html +0 -141
  229. package/coverage/lcov-report/migrations/usageQuotas/index.js.html +0 -152
  230. package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
  231. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -356
  232. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -302
  233. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +0 -134
  234. package/dist/integrations/googlesheets.js +0 -340
  235. package/dist/migrations/usageQuotas/index.js +0 -24
  236. package/dist/migrations/usageQuotas/syncApps.js +0 -26
  237. package/dist/migrations/usageQuotas/syncRows.js +0 -29
  238. package/dist/utilities/usageQuota/rows.js +0 -77
  239. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  240. package/src/api/routes/tests/static.spec.js +0 -98
  241. package/src/integrations/googlesheets.ts +0 -353
  242. package/src/migrations/tests/usageQuotas/index.spec.js +0 -27
  243. package/src/migrations/tests/usageQuotas/syncApps.spec.js +0 -37
  244. package/src/migrations/tests/usageQuotas/syncRows.spec.js +0 -43
  245. package/src/migrations/usageQuotas/index.js +0 -24
  246. package/src/migrations/usageQuotas/syncApps.js +0 -18
  247. package/src/migrations/usageQuotas/syncRows.js +0 -21
  248. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  249. package/src/utilities/usageQuota/index.js +0 -92
  250. package/src/utilities/usageQuota/rows.js +0 -74
  251. package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">79.41% </span>
26
+ <span class="strong">78.02% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>162/204</span>
28
+ <span class='fraction'>142/182</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">55.12% </span>
33
+ <span class="strong">56.94% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>43/78</span>
35
+ <span class='fraction'>41/72</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">88.46% </span>
40
+ <span class="strong">85% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>23/26</span>
42
+ <span class='fraction'>17/20</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">79.79% </span>
47
+ <span class="strong">78.88% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>158/198</span>
49
+ <span class='fraction'>142/180</span>
50
50
  </div>
51
51
 
52
52
 
@@ -471,47 +471,19 @@
471
471
  <a name='L412'></a><a href='#L412'>412</a>
472
472
  <a name='L413'></a><a href='#L413'>413</a>
473
473
  <a name='L414'></a><a href='#L414'>414</a>
474
- <a name='L415'></a><a href='#L415'>415</a>
475
- <a name='L416'></a><a href='#L416'>416</a>
476
- <a name='L417'></a><a href='#L417'>417</a>
477
- <a name='L418'></a><a href='#L418'>418</a>
478
- <a name='L419'></a><a href='#L419'>419</a>
479
- <a name='L420'></a><a href='#L420'>420</a>
480
- <a name='L421'></a><a href='#L421'>421</a>
481
- <a name='L422'></a><a href='#L422'>422</a>
482
- <a name='L423'></a><a href='#L423'>423</a>
483
- <a name='L424'></a><a href='#L424'>424</a>
484
- <a name='L425'></a><a href='#L425'>425</a>
485
- <a name='L426'></a><a href='#L426'>426</a>
486
- <a name='L427'></a><a href='#L427'>427</a>
487
- <a name='L428'></a><a href='#L428'>428</a>
488
- <a name='L429'></a><a href='#L429'>429</a>
489
- <a name='L430'></a><a href='#L430'>430</a>
490
- <a name='L431'></a><a href='#L431'>431</a>
491
- <a name='L432'></a><a href='#L432'>432</a>
492
- <a name='L433'></a><a href='#L433'>433</a>
493
- <a name='L434'></a><a href='#L434'>434</a>
494
- <a name='L435'></a><a href='#L435'>435</a>
495
- <a name='L436'></a><a href='#L436'>436</a>
496
- <a name='L437'></a><a href='#L437'>437</a>
497
- <a name='L438'></a><a href='#L438'>438</a>
498
- <a name='L439'></a><a href='#L439'>439</a>
499
- <a name='L440'></a><a href='#L440'>440</a>
500
- <a name='L441'></a><a href='#L441'>441</a>
501
- <a name='L442'></a><a href='#L442'>442</a>
502
- <a name='L443'></a><a href='#L443'>443</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">36x</span>
503
- <span class="cline-any cline-yes">36x</span>
504
- <span class="cline-any cline-yes">36x</span>
474
+ <a name='L415'></a><a href='#L415'>415</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
475
+ <span class="cline-any cline-yes">33x</span>
476
+ <span class="cline-any cline-yes">33x</span>
505
477
  <span class="cline-any cline-neutral">&nbsp;</span>
506
478
  <span class="cline-any cline-neutral">&nbsp;</span>
507
479
  <span class="cline-any cline-neutral">&nbsp;</span>
508
480
  <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-yes">36x</span>
481
+ <span class="cline-any cline-yes">33x</span>
510
482
  <span class="cline-any cline-neutral">&nbsp;</span>
511
483
  <span class="cline-any cline-neutral">&nbsp;</span>
512
484
  <span class="cline-any cline-neutral">&nbsp;</span>
513
485
  <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-yes">36x</span>
486
+ <span class="cline-any cline-yes">33x</span>
515
487
  <span class="cline-any cline-neutral">&nbsp;</span>
516
488
  <span class="cline-any cline-neutral">&nbsp;</span>
517
489
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -519,128 +491,118 @@
519
491
  <span class="cline-any cline-neutral">&nbsp;</span>
520
492
  <span class="cline-any cline-neutral">&nbsp;</span>
521
493
  <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-yes">36x</span>
494
+ <span class="cline-any cline-yes">33x</span>
523
495
  <span class="cline-any cline-neutral">&nbsp;</span>
524
496
  <span class="cline-any cline-neutral">&nbsp;</span>
525
497
  <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">36x</span>
527
- <span class="cline-any cline-yes">36x</span>
528
- <span class="cline-any cline-yes">36x</span>
529
- <span class="cline-any cline-yes">36x</span>
498
+ <span class="cline-any cline-yes">33x</span>
499
+ <span class="cline-any cline-yes">33x</span>
500
+ <span class="cline-any cline-yes">33x</span>
501
+ <span class="cline-any cline-yes">33x</span>
530
502
  <span class="cline-any cline-neutral">&nbsp;</span>
531
503
  <span class="cline-any cline-neutral">&nbsp;</span>
532
504
  <span class="cline-any cline-neutral">&nbsp;</span>
533
505
  <span class="cline-any cline-neutral">&nbsp;</span>
534
506
  <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-yes">36x</span>
536
- <span class="cline-any cline-yes">36x</span>
537
- <span class="cline-any cline-yes">36x</span>
538
- <span class="cline-any cline-yes">36x</span>
539
- <span class="cline-any cline-yes">36x</span>
507
+ <span class="cline-any cline-yes">33x</span>
508
+ <span class="cline-any cline-yes">33x</span>
540
509
  <span class="cline-any cline-neutral">&nbsp;</span>
541
510
  <span class="cline-any cline-neutral">&nbsp;</span>
542
511
  <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-yes">33x</span>
513
+ <span class="cline-any cline-yes">33x</span>
514
+ <span class="cline-any cline-yes">33x</span>
543
515
  <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-yes">36x</span>
545
- <span class="cline-any cline-yes">36x</span>
546
- <span class="cline-any cline-yes">36x</span>
547
- <span class="cline-any cline-yes">36x</span>
548
- <span class="cline-any cline-yes">36x</span>
549
516
  <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-yes">36x</span>
551
517
  <span class="cline-any cline-neutral">&nbsp;</span>
552
518
  <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-yes">33x</span>
520
+ <span class="cline-any cline-yes">33x</span>
521
+ <span class="cline-any cline-yes">33x</span>
522
+ <span class="cline-any cline-yes">33x</span>
523
+ <span class="cline-any cline-yes">33x</span>
553
524
  <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-yes">202x</span>
525
+ <span class="cline-any cline-yes">33x</span>
555
526
  <span class="cline-any cline-neutral">&nbsp;</span>
556
527
  <span class="cline-any cline-neutral">&nbsp;</span>
557
528
  <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-yes">195x</span>
558
530
  <span class="cline-any cline-neutral">&nbsp;</span>
559
531
  <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-yes">404x</span>
561
532
  <span class="cline-any cline-neutral">&nbsp;</span>
562
533
  <span class="cline-any cline-neutral">&nbsp;</span>
563
534
  <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-yes">202x</span>
535
+ <span class="cline-any cline-yes">390x</span>
565
536
  <span class="cline-any cline-neutral">&nbsp;</span>
566
537
  <span class="cline-any cline-neutral">&nbsp;</span>
567
538
  <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-yes">195x</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
541
  <span class="cline-any cline-neutral">&nbsp;</span>
569
542
  <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-yes">12x</span>
571
543
  <span class="cline-any cline-neutral">&nbsp;</span>
572
544
  <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-yes">12x</span>
573
546
  <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-yes">200x</span>
575
547
  <span class="cline-any cline-neutral">&nbsp;</span>
576
548
  <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-yes">193x</span>
577
550
  <span class="cline-any cline-neutral">&nbsp;</span>
578
551
  <span class="cline-any cline-neutral">&nbsp;</span>
579
552
  <span class="cline-any cline-neutral">&nbsp;</span>
580
553
  <span class="cline-any cline-neutral">&nbsp;</span>
581
554
  <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-yes">194x</span>
583
555
  <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-yes">190x</span>
584
557
  <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-yes">194x</span>
558
+ <span class="cline-any cline-yes">190x</span>
559
+ <span class="cline-any cline-yes">187x</span>
586
560
  <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-yes">194x</span>
561
+ <span class="cline-any cline-yes">190x</span>
562
+ <span class="cline-any cline-yes">187x</span>
588
563
  <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-yes">194x</span>
590
- <span class="cline-any cline-yes">194x</span>
591
- <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-yes">194x</span>
564
+ <span class="cline-any cline-yes">190x</span>
565
+ <span class="cline-any cline-yes">15x</span>
593
566
  <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-yes">175x</span>
568
+ <span class="cline-any cline-yes">175x</span>
594
569
  <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-yes">36x</span>
596
- <span class="cline-any cline-yes">194x</span>
597
- <span class="cline-any cline-yes">2x</span>
598
570
  <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-yes">732x</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
571
  <span class="cline-any cline-neutral">&nbsp;</span>
602
572
  <span class="cline-any cline-neutral">&nbsp;</span>
603
573
  <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-yes">36x</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-yes">194x</span>
607
574
  <span class="cline-any cline-no">&nbsp;</span>
608
575
  <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-yes">194x</span>
610
- <span class="cline-any cline-yes">2x</span>
576
+ <span class="cline-any cline-yes">175x</span>
611
577
  <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-yes">732x</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
578
  <span class="cline-any cline-neutral">&nbsp;</span>
615
579
  <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-yes">185x</span>
581
+ <span class="cline-any cline-yes">185x</span>
582
+ <span class="cline-any cline-yes">185x</span>
616
583
  <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-yes">185x</span>
585
+ <span class="cline-any cline-yes">185x</span>
617
586
  <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-yes">192x</span>
619
- <span class="cline-any cline-yes">192x</span>
620
- <span class="cline-any cline-yes">192x</span>
621
587
  <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-yes">192x</span>
623
- <span class="cline-any cline-yes">192x</span>
624
588
  <span class="cline-any cline-neutral">&nbsp;</span>
625
589
  <span class="cline-any cline-neutral">&nbsp;</span>
626
590
  <span class="cline-any cline-neutral">&nbsp;</span>
627
591
  <span class="cline-any cline-neutral">&nbsp;</span>
628
592
  <span class="cline-any cline-neutral">&nbsp;</span>
629
593
  <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-yes">192x</span>
633
- <span class="cline-any cline-yes">192x</span>
634
- <span class="cline-any cline-yes">192x</span>
594
+ <span class="cline-any cline-yes">185x</span>
595
+ <span class="cline-any cline-yes">185x</span>
596
+ <span class="cline-any cline-yes">185x</span>
635
597
  <span class="cline-any cline-neutral">&nbsp;</span>
636
598
  <span class="cline-any cline-neutral">&nbsp;</span>
637
599
  <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-yes">192x</span>
600
+ <span class="cline-any cline-yes">185x</span>
639
601
  <span class="cline-any cline-no">&nbsp;</span>
640
602
  <span class="cline-any cline-no">&nbsp;</span>
641
603
  <span class="cline-any cline-no">&nbsp;</span>
642
604
  <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">192x</span>
605
+ <span class="cline-any cline-yes">185x</span>
644
606
  <span class="cline-any cline-neutral">&nbsp;</span>
645
607
  <span class="cline-any cline-neutral">&nbsp;</span>
646
608
  <span class="cline-any cline-no">&nbsp;</span>
@@ -648,13 +610,13 @@
648
610
  <span class="cline-any cline-neutral">&nbsp;</span>
649
611
  <span class="cline-any cline-neutral">&nbsp;</span>
650
612
  <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-yes">192x</span>
613
+ <span class="cline-any cline-yes">185x</span>
652
614
  <span class="cline-any cline-neutral">&nbsp;</span>
653
615
  <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-yes">192x</span>
616
+ <span class="cline-any cline-yes">185x</span>
655
617
  <span class="cline-any cline-neutral">&nbsp;</span>
656
618
  <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-yes">36x</span>
619
+ <span class="cline-any cline-yes">33x</span>
658
620
  <span class="cline-any cline-yes">10x</span>
659
621
  <span class="cline-any cline-yes">10x</span>
660
622
  <span class="cline-any cline-yes">10x</span>
@@ -679,7 +641,7 @@
679
641
  <span class="cline-any cline-yes">10x</span>
680
642
  <span class="cline-any cline-neutral">&nbsp;</span>
681
643
  <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-yes">36x</span>
644
+ <span class="cline-any cline-yes">33x</span>
683
645
  <span class="cline-any cline-yes">1x</span>
684
646
  <span class="cline-any cline-yes">1x</span>
685
647
  <span class="cline-any cline-yes">1x</span>
@@ -695,61 +657,51 @@
695
657
  <span class="cline-any cline-neutral">&nbsp;</span>
696
658
  <span class="cline-any cline-neutral">&nbsp;</span>
697
659
  <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-yes">36x</span>
699
- <span class="cline-any cline-yes">201x</span>
700
- <span class="cline-any cline-yes">201x</span>
701
- <span class="cline-any cline-yes">201x</span>
702
- <span class="cline-any cline-yes">201x</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-yes">33x</span>
661
+ <span class="cline-any cline-yes">194x</span>
662
+ <span class="cline-any cline-yes">194x</span>
663
+ <span class="cline-any cline-yes">194x</span>
664
+ <span class="cline-any cline-yes">194x</span>
704
665
  <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-yes">201x</span>
706
- <span class="cline-any cline-yes">199x</span>
707
- <span class="cline-any cline-yes">199x</span>
708
- <span class="cline-any cline-yes">199x</span>
709
666
  <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-yes">194x</span>
668
+ <span class="cline-any cline-yes">192x</span>
669
+ <span class="cline-any cline-yes">192x</span>
670
+ <span class="cline-any cline-yes">192x</span>
710
671
  <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-yes">201x</span>
712
672
  <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-yes">194x</span>
713
674
  <span class="cline-any cline-neutral">&nbsp;</span>
714
675
  <span class="cline-any cline-neutral">&nbsp;</span>
715
676
  <span class="cline-any cline-neutral">&nbsp;</span>
716
677
  <span class="cline-any cline-neutral">&nbsp;</span>
717
678
  <span class="cline-any cline-neutral">&nbsp;</span>
718
679
  <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-yes">36x</span>
720
- <span class="cline-any cline-yes">192x</span>
721
- <span class="cline-any cline-yes">192x</span>
722
- <span class="cline-any cline-yes">192x</span>
723
- <span class="cline-any cline-yes">192x</span>
724
- <span class="cline-any cline-yes">192x</span>
725
680
  <span class="cline-any cline-neutral">&nbsp;</span>
726
- <span class="cline-any cline-yes">192x</span>
727
- <span class="cline-any cline-yes">192x</span>
681
+ <span class="cline-any cline-yes">33x</span>
682
+ <span class="cline-any cline-yes">185x</span>
683
+ <span class="cline-any cline-yes">185x</span>
728
684
  <span class="cline-any cline-neutral">&nbsp;</span>
729
685
  <span class="cline-any cline-neutral">&nbsp;</span>
730
686
  <span class="cline-any cline-neutral">&nbsp;</span>
731
687
  <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-yes">192x</span>
688
+ <span class="cline-any cline-yes">185x</span>
733
689
  <span class="cline-any cline-no">&nbsp;</span>
734
690
  <span class="cline-any cline-neutral">&nbsp;</span>
735
- <span class="cline-any cline-yes">192x</span>
736
- <span class="cline-any cline-yes">192x</span>
691
+ <span class="cline-any cline-yes">185x</span>
692
+ <span class="cline-any cline-yes">185x</span>
737
693
  <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-yes">192x</span>
694
+ <span class="cline-any cline-yes">185x</span>
695
+ <span class="cline-any cline-yes">185x</span>
739
696
  <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-yes">192x</span>
697
+ <span class="cline-any cline-yes">185x</span>
741
698
  <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-yes">192x</span>
699
+ <span class="cline-any cline-yes">185x</span>
743
700
  <span class="cline-any cline-no">&nbsp;</span>
744
701
  <span class="cline-any cline-neutral">&nbsp;</span>
745
702
  <span class="cline-any cline-neutral">&nbsp;</span>
746
703
  <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-yes">192x</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-yes">185x</span>
753
705
  <span class="cline-any cline-neutral">&nbsp;</span>
754
706
  <span class="cline-any cline-neutral">&nbsp;</span>
755
707
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -759,46 +711,37 @@
759
711
  <span class="cline-any cline-neutral">&nbsp;</span>
760
712
  <span class="cline-any cline-neutral">&nbsp;</span>
761
713
  <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-yes">192x</span>
763
- <span class="cline-any cline-yes">192x</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
714
  <span class="cline-any cline-neutral">&nbsp;</span>
766
715
  <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-yes">192x</span>
768
- <span class="cline-any cline-yes">192x</span>
769
716
  <span class="cline-any cline-neutral">&nbsp;</span>
770
717
  <span class="cline-any cline-neutral">&nbsp;</span>
771
718
  <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-yes">185x</span>
720
+ <span class="cline-any cline-yes">185x</span>
772
721
  <span class="cline-any cline-neutral">&nbsp;</span>
773
722
  <span class="cline-any cline-neutral">&nbsp;</span>
774
723
  <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-yes">185x</span>
725
+ <span class="cline-any cline-yes">185x</span>
775
726
  <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-yes">192x</span>
777
- <span class="cline-any cline-yes">192x</span>
778
- <span class="cline-any cline-yes">192x</span>
779
727
  <span class="cline-any cline-neutral">&nbsp;</span>
780
728
  <span class="cline-any cline-neutral">&nbsp;</span>
781
729
  <span class="cline-any cline-neutral">&nbsp;</span>
782
730
  <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-yes">36x</span>
784
- <span class="cline-any cline-yes">2x</span>
785
731
  <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-yes">2x</span>
787
- <span class="cline-any cline-yes">2x</span>
788
- <span class="cline-any cline-yes">2x</span>
789
732
  <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-yes">2x</span>
791
- <span class="cline-any cline-yes">2x</span>
792
- <span class="cline-any cline-yes">2x</span>
793
- <span class="cline-any cline-yes">2x</span>
733
+ <span class="cline-any cline-yes">185x</span>
734
+ <span class="cline-any cline-yes">185x</span>
735
+ <span class="cline-any cline-yes">185x</span>
794
736
  <span class="cline-any cline-neutral">&nbsp;</span>
795
737
  <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-yes">33x</span>
796
739
  <span class="cline-any cline-yes">2x</span>
797
740
  <span class="cline-any cline-yes">2x</span>
798
741
  <span class="cline-any cline-yes">2x</span>
799
742
  <span class="cline-any cline-neutral">&nbsp;</span>
800
743
  <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-yes">36x</span>
744
+ <span class="cline-any cline-yes">33x</span>
802
745
  <span class="cline-any cline-neutral">&nbsp;</span>
803
746
  <span class="cline-any cline-yes">2x</span>
804
747
  <span class="cline-any cline-yes">2x</span>
@@ -820,7 +763,7 @@
820
763
  <span class="cline-any cline-yes">2x</span>
821
764
  <span class="cline-any cline-neutral">&nbsp;</span>
822
765
  <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-yes">36x</span>
766
+ <span class="cline-any cline-yes">33x</span>
824
767
  <span class="cline-any cline-neutral">&nbsp;</span>
825
768
  <span class="cline-any cline-yes">1x</span>
826
769
  <span class="cline-any cline-yes">1x</span>
@@ -843,7 +786,7 @@
843
786
  <span class="cline-any cline-yes">1x</span>
844
787
  <span class="cline-any cline-neutral">&nbsp;</span>
845
788
  <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-yes">36x</span>
789
+ <span class="cline-any cline-yes">33x</span>
847
790
  <span class="cline-any cline-yes">11x</span>
848
791
  <span class="cline-any cline-neutral">&nbsp;</span>
849
792
  <span class="cline-any cline-yes">11x</span>
@@ -862,7 +805,7 @@
862
805
  <span class="cline-any cline-yes">11x</span>
863
806
  <span class="cline-any cline-neutral">&nbsp;</span>
864
807
  <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-yes">36x</span>
808
+ <span class="cline-any cline-yes">33x</span>
866
809
  <span class="cline-any cline-no">&nbsp;</span>
867
810
  <span class="cline-any cline-no">&nbsp;</span>
868
811
  <span class="cline-any cline-no">&nbsp;</span>
@@ -911,7 +854,8 @@
911
854
  <span class="cline-any cline-neutral">&nbsp;</span>
912
855
  <span class="cline-any cline-neutral">&nbsp;</span>
913
856
  <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-yes">36x</span>
857
+ <span class="cline-any cline-yes">33x</span>
858
+ <span class="cline-any cline-yes">5x</span>
915
859
  <span class="cline-any cline-yes">5x</span>
916
860
  <span class="cline-any cline-yes">5x</span>
917
861
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -930,16 +874,16 @@
930
874
  <span class="cline-any cline-yes">5x</span>
931
875
  <span class="cline-any cline-neutral">&nbsp;</span>
932
876
  <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-yes">36x</span>
934
- <span class="cline-any cline-yes">192x</span>
877
+ <span class="cline-any cline-yes">33x</span>
878
+ <span class="cline-any cline-yes">185x</span>
935
879
  <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-yes">192x</span>
937
- <span class="cline-any cline-yes">192x</span>
938
- <span class="cline-any cline-yes">384x</span>
939
- <span class="cline-any cline-yes">384x</span>
880
+ <span class="cline-any cline-yes">185x</span>
881
+ <span class="cline-any cline-yes">185x</span>
882
+ <span class="cline-any cline-yes">370x</span>
883
+ <span class="cline-any cline-yes">370x</span>
940
884
  <span class="cline-any cline-neutral">&nbsp;</span>
941
885
  <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-yes">192x</span>
886
+ <span class="cline-any cline-yes">185x</span>
943
887
  <span class="cline-any cline-neutral">&nbsp;</span>
944
888
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
945
889
  const env = require("../../environment")
@@ -976,7 +920,10 @@ const {
976
920
  Replication,
977
921
  } = require("@budibase/backend-core/db")
978
922
  const { USERS_TABLE_SCHEMA } = require("../../constants")
979
- const { removeAppFromUserRoles } = require("../../utilities/workerRequests")
923
+ const {
924
+ getDeployedApps,
925
+ removeAppFromUserRoles,
926
+ } = require("../../utilities/workerRequests")
980
927
  const { clientLibraryPath, stringToReadStream } = require("../../utilities")
981
928
  const { getAllLocks } = require("../../utilities/redis")
982
929
  const {
@@ -1018,42 +965,29 @@ function getUserRoleId(ctx) {
1018
965
  : ctx.user.role._id
1019
966
  }
1020
967
  &nbsp;
1021
- async function getAppUrl(ctx) {
1022
- // construct the url
968
+ async function getAppUrlIfNotInUse(ctx) {
1023
969
  let url
1024
970
  <span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.request.body.url) {
1025
- // if the url is provided, use that
1026
971
  <span class="cstat-no" title="statement not covered" > url = encodeURI(ctx.request.body.url)</span>
1027
972
  } else if (ctx.request.body.name) {
1028
- // otherwise use the name
1029
973
  url = encodeURI(`${ctx.request.body.name}`)
1030
974
  }
1031
975
  if (url) {
1032
976
  url = `/${url.replace(URL_REGEX_SLASH, "")}`.toLowerCase()
1033
977
  }
1034
- return url
1035
- }
1036
- &nbsp;
1037
- const checkAppUrl = (ctx, apps, url, currentAppId) =&gt; {
1038
- if (currentAppId) {
1039
- apps = apps.filter(app =&gt; app.appId !== currentAppId)
1040
- }
1041
- <span class="missing-if-branch" title="if path not taken" >I</span>if (apps.some(app =&gt; app.url === url)) {
1042
- <span class="cstat-no" title="statement not covered" > ctx.throw(400, "App URL is already in use.")</span>
1043
- }
1044
- }
1045
- &nbsp;
1046
- const checkAppName = (ctx, apps, name, currentAppId) =&gt; {
1047
- // TODO: Replace with Joi
1048
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!name) {
1049
- <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Name is required")</span>
1050
- }
1051
- if (currentAppId) {
1052
- apps = apps.filter(app =&gt; app.appId !== currentAppId)
978
+ if (!env.SELF_HOSTED) {
979
+ return url
1053
980
  }
1054
- <span class="missing-if-branch" title="if path not taken" >I</span>if (apps.some(app =&gt; app.name === name)) {
1055
- <span class="cstat-no" title="statement not covered" > ctx.throw(400, "App name is already in use.")</span>
981
+ const deployedApps = await getDeployedApps()
982
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
983
+ url &amp;&amp;
984
+ deployedApps[url] != null &amp;&amp;
985
+ <span class="branch-2 cbranch-no" title="branch not covered" > ctx.params != null </span>&amp;&amp;
986
+ <span class="branch-3 cbranch-no" title="branch not covered" > deployedApps[url].appId !== ctx.params.appId</span>
987
+ ) {
988
+ <span class="cstat-no" title="statement not covered" > ctx.throw(400, "App name/URL is already in use.")</span>
1056
989
  }
990
+ return url
1057
991
  }
1058
992
  &nbsp;
1059
993
  async function createInstance(template) {
@@ -1159,12 +1093,6 @@ exports.fetchAppPackage = async ctx =&gt; {
1159
1093
  }
1160
1094
  &nbsp;
1161
1095
  exports.create = async ctx =&gt; {
1162
- const apps = await getAllApps(CouchDB, { dev: true })
1163
- const name = ctx.request.body.name
1164
- checkAppName(ctx, apps, name)
1165
- const url = await getAppUrl(ctx)
1166
- checkAppUrl(ctx, apps, url)
1167
- &nbsp;
1168
1096
  const { useTemplate, templateKey, templateString } = ctx.request.body
1169
1097
  const instanceConfig = {
1170
1098
  useTemplate,
@@ -1177,6 +1105,7 @@ exports.create = async ctx =&gt; {
1177
1105
  const instance = await createInstance(instanceConfig)
1178
1106
  const appId = instance._id
1179
1107
  &nbsp;
1108
+ const url = await getAppUrlIfNotInUse(ctx)
1180
1109
  const db = new CouchDB(appId)
1181
1110
  let _rev
1182
1111
  try {
@@ -1193,7 +1122,7 @@ exports.create = async ctx =&gt; {
1193
1122
  type: "app",
1194
1123
  version: packageJson.version,
1195
1124
  componentLibraries: ["@budibase/standard-components"],
1196
- name: name,
1125
+ name: ctx.request.body.name,
1197
1126
  url: url,
1198
1127
  template: ctx.request.body.template,
1199
1128
  instance: instance,
@@ -1220,22 +1149,8 @@ exports.create = async ctx =&gt; {
1220
1149
  ctx.body = newApplication
1221
1150
  }
1222
1151
  &nbsp;
1223
- // This endpoint currently operates as a PATCH rather than a PUT
1224
- // Thus name and url fields are handled only if present
1225
1152
  exports.update = async ctx =&gt; {
1226
- const apps = await getAllApps(CouchDB, { dev: true })
1227
- // validation
1228
- const name = ctx.request.body.name
1229
- if (name) {
1230
- checkAppName(ctx, apps, name, ctx.params.appId)
1231
- }
1232
- const url = await getAppUrl(ctx)
1233
- if (url) {
1234
- checkAppUrl(ctx, apps, url, ctx.params.appId)
1235
- ctx.request.body.url = url
1236
- }
1237
- &nbsp;
1238
- const data = await updateAppPackage(ctx.request.body, ctx.params.appId)
1153
+ const data = await updateAppPackage(ctx, ctx.request.body, ctx.params.appId)
1239
1154
  ctx.status = 200
1240
1155
  ctx.body = data
1241
1156
  }
@@ -1257,7 +1172,7 @@ exports.updateClient = async ctx =&gt; {
1257
1172
  version: packageJson.version,
1258
1173
  revertableVersion: currentVersion,
1259
1174
  }
1260
- const data = await updateAppPackage(appPackageUpdates, ctx.params.appId)
1175
+ const data = await updateAppPackage(ctx, appPackageUpdates, ctx.params.appId)
1261
1176
  ctx.status = 200
1262
1177
  ctx.body = data
1263
1178
  }
@@ -1280,7 +1195,7 @@ exports.revertClient = async ctx =&gt; {
1280
1195
  version: application.revertableVersion,
1281
1196
  revertableVersion: null,
1282
1197
  }
1283
- const data = await updateAppPackage(appPackageUpdates, ctx.params.appId)
1198
+ const data = await updateAppPackage(ctx, appPackageUpdates, ctx.params.appId)
1284
1199
  ctx.status = 200
1285
1200
  ctx.body = data
1286
1201
  }
@@ -1353,11 +1268,12 @@ exports.sync = <span class="fstat-no" title="function not covered" >as</span>ync
1353
1268
  }
1354
1269
  }
1355
1270
  &nbsp;
1356
- const updateAppPackage = async (appPackage, appId) =&gt; {
1271
+ const updateAppPackage = async (ctx, appPackage, appId) =&gt; {
1272
+ const url = await getAppUrlIfNotInUse(ctx)
1357
1273
  const db = new CouchDB(appId)
1358
1274
  const application = await db.get(DocumentTypes.APP_METADATA)
1359
1275
  &nbsp;
1360
- const newAppPackage = { ...application, ...appPackage }
1276
+ const newAppPackage = { ...application, ...appPackage, url }
1361
1277
  if (appPackage._rev !== application._rev) {
1362
1278
  newAppPackage._rev = application._rev
1363
1279
  }
@@ -1390,7 +1306,7 @@ const createEmptyAppPackage = async (ctx, app) =&gt; {
1390
1306
  <div class='footer quiet pad2 space-top1 center small'>
1391
1307
  Code coverage generated by
1392
1308
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1393
- at Fri Jan 28 2022 15:12:12 GMT+0000 (Coordinated Universal Time)
1309
+ at Mon Jan 31 2022 13:42:59 GMT+0000 (Coordinated Universal Time)
1394
1310
  </div>
1395
1311
  </div>
1396
1312
  <script src="../../prettify.js"></script>