@budibase/server 1.0.198 → 1.0.199-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/Dockerfile +2 -0
  2. package/builder/assets/index.330d0d68.js +1315 -0
  3. package/builder/index.html +1 -1
  4. package/coverage/clover.xml +2089 -2001
  5. package/coverage/coverage-final.json +121 -122
  6. package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
  7. package/coverage/lcov-report/api/controllers/auth.js.html +7 -7
  8. package/coverage/lcov-report/api/controllers/automation.js.html +174 -72
  9. package/coverage/lcov-report/api/controllers/backup.js.html +30 -6
  10. package/coverage/lcov-report/api/controllers/cloud.js.html +11 -11
  11. package/coverage/lcov-report/api/controllers/component.js.html +5 -5
  12. package/coverage/lcov-report/api/controllers/datasource.js.html +53 -41
  13. package/coverage/lcov-report/api/controllers/dev.js.html +94 -70
  14. package/coverage/lcov-report/api/controllers/index.html +57 -72
  15. package/coverage/lcov-report/api/controllers/integration.js.html +8 -8
  16. package/coverage/lcov-report/api/controllers/layout.js.html +28 -19
  17. package/coverage/lcov-report/api/controllers/metadata.js.html +9 -9
  18. package/coverage/lcov-report/api/controllers/migrations.js.html +4 -4
  19. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  20. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/validation.js.html +10 -10
  22. package/coverage/lcov-report/api/controllers/role.js.html +78 -48
  23. package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +19 -19
  25. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +54 -54
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +9 -9
  28. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -24
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +24 -24
  30. package/coverage/lcov-report/api/controllers/screen.js.html +56 -20
  31. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  32. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +49 -49
  33. package/coverage/lcov-report/api/controllers/table/external.js.html +23 -17
  34. package/coverage/lcov-report/api/controllers/table/index.html +26 -26
  35. package/coverage/lcov-report/api/controllers/table/index.js.html +85 -49
  36. package/coverage/lcov-report/api/controllers/templates.js.html +6 -6
  37. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  38. package/coverage/lcov-report/api/controllers/view/exporters.js.html +11 -11
  39. package/coverage/lcov-report/api/controllers/view/index.html +21 -21
  40. package/coverage/lcov-report/api/controllers/view/index.js.html +275 -65
  41. package/coverage/lcov-report/api/controllers/view/utils.js.html +23 -23
  42. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +40 -40
  43. package/coverage/lcov-report/api/controllers/webhook.js.html +17 -17
  44. package/coverage/lcov-report/api/index.html +15 -15
  45. package/coverage/lcov-report/api/index.js.html +39 -45
  46. package/coverage/lcov-report/api/routes/analytics.js.html +7 -13
  47. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
  48. package/coverage/lcov-report/api/routes/auth.js.html +6 -6
  49. package/coverage/lcov-report/api/routes/automation.js.html +11 -11
  50. package/coverage/lcov-report/api/routes/backup.js.html +8 -8
  51. package/coverage/lcov-report/api/routes/cloud.js.html +8 -8
  52. package/coverage/lcov-report/api/routes/component.js.html +8 -8
  53. package/coverage/lcov-report/api/routes/datasource.js.html +9 -9
  54. package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
  55. package/coverage/lcov-report/api/routes/dev.js.html +13 -13
  56. package/coverage/lcov-report/api/routes/index.html +1 -1
  57. package/coverage/lcov-report/api/routes/integration.js.html +8 -8
  58. package/coverage/lcov-report/api/routes/layout.js.html +8 -8
  59. package/coverage/lcov-report/api/routes/metadata.js.html +9 -9
  60. package/coverage/lcov-report/api/routes/migrations.js.html +7 -7
  61. package/coverage/lcov-report/api/routes/permission.js.html +9 -9
  62. package/coverage/lcov-report/api/routes/query.js.html +10 -10
  63. package/coverage/lcov-report/api/routes/role.js.html +9 -9
  64. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  65. package/coverage/lcov-report/api/routes/screen.js.html +9 -9
  66. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/table.js.html +10 -10
  68. package/coverage/lcov-report/api/routes/templates.js.html +8 -8
  69. package/coverage/lcov-report/api/routes/user.js.html +8 -8
  70. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/validators.js.html +36 -36
  72. package/coverage/lcov-report/api/routes/view.js.html +10 -10
  73. package/coverage/lcov-report/api/routes/webhook.js.html +9 -9
  74. package/coverage/lcov-report/automations/actions.js.html +25 -25
  75. package/coverage/lcov-report/automations/automationUtils.js.html +8 -8
  76. package/coverage/lcov-report/automations/bullboard.js.html +35 -35
  77. package/coverage/lcov-report/automations/index.html +29 -29
  78. package/coverage/lcov-report/automations/index.js.html +29 -17
  79. package/coverage/lcov-report/automations/steps/bash.js.html +7 -7
  80. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  81. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  82. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  83. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  84. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  85. package/coverage/lcov-report/automations/steps/index.html +1 -1
  86. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  87. package/coverage/lcov-report/automations/steps/loop.js.html +2 -2
  88. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  89. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  90. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  91. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  92. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  93. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  94. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  95. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  96. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  97. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  98. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  100. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  101. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  102. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  103. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  104. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  105. package/coverage/lcov-report/constants/index.html +1 -1
  106. package/coverage/lcov-report/constants/index.js.html +30 -30
  107. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  108. package/coverage/lcov-report/constants/screens.js.html +4 -4
  109. package/coverage/lcov-report/db/inMemoryView.js.html +5 -5
  110. package/coverage/lcov-report/db/index.html +1 -1
  111. package/coverage/lcov-report/db/index.js.html +9 -9
  112. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +17 -17
  113. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.js.html +36 -36
  115. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +19 -19
  116. package/coverage/lcov-report/db/newid.js.html +4 -4
  117. package/coverage/lcov-report/db/utils.js.html +81 -81
  118. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  119. package/coverage/lcov-report/events/index.html +1 -1
  120. package/coverage/lcov-report/events/index.js.html +7 -7
  121. package/coverage/lcov-report/events/utils.js.html +10 -10
  122. package/coverage/lcov-report/index.html +74 -74
  123. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  124. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  125. package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
  126. package/coverage/lcov-report/middleware/builder.js.html +20 -20
  127. package/coverage/lcov-report/middleware/currentapp.js.html +49 -49
  128. package/coverage/lcov-report/middleware/index.html +1 -1
  129. package/coverage/lcov-report/middleware/joi-validator.js.html +14 -14
  130. package/coverage/lcov-report/middleware/publicApi.js.html +5 -5
  131. package/coverage/lcov-report/middleware/resourceId.js.html +29 -29
  132. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  133. package/coverage/lcov-report/middleware/utils.js.html +4 -4
  134. package/coverage/lcov-report/threads/automation.js.html +1 -1
  135. package/coverage/lcov-report/threads/index.html +1 -1
  136. package/coverage/lcov-report/threads/query.js.html +1 -1
  137. package/coverage/lcov-report/threads/utils.js.html +13 -13
  138. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  139. package/coverage/lcov-report/utilities/centralPath.js.html +14 -14
  140. package/coverage/lcov-report/utilities/csvParser.js.html +34 -34
  141. package/coverage/lcov-report/utilities/global.js.html +28 -28
  142. package/coverage/lcov-report/utilities/index.html +25 -25
  143. package/coverage/lcov-report/utilities/index.js.html +41 -41
  144. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +18 -18
  145. package/coverage/lcov-report/utilities/queue/index.html +15 -15
  146. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  147. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  148. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +59 -59
  150. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +15 -15
  151. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  152. package/coverage/lcov-report/utilities/security.js.html +8 -8
  153. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +30 -30
  156. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  157. package/coverage/lcov-report/utilities/users.js.html +7 -7
  158. package/coverage/lcov-report/utilities/workerRequests.js.html +29 -29
  159. package/coverage/lcov.info +2903 -2762
  160. package/dist/api/controllers/analytics.js +7 -30
  161. package/dist/api/controllers/application.js +56 -16
  162. package/dist/api/controllers/automation.js +31 -2
  163. package/dist/api/controllers/backup.js +7 -0
  164. package/dist/api/controllers/datasource.js +8 -2
  165. package/dist/api/controllers/deploy/index.js +6 -2
  166. package/dist/api/controllers/dev.js +9 -2
  167. package/dist/api/controllers/layout.js +3 -0
  168. package/dist/api/controllers/query/import/index.js +12 -2
  169. package/dist/api/controllers/query/import/sources/curl.js +3 -0
  170. package/dist/api/controllers/query/import/sources/openapi2.js +3 -0
  171. package/dist/api/controllers/query/import/sources/openapi3.js +3 -0
  172. package/dist/api/controllers/query/index.js +16 -2
  173. package/dist/api/controllers/role.js +11 -0
  174. package/dist/api/controllers/screen.js +10 -1
  175. package/dist/api/controllers/static/index.js +29 -15
  176. package/dist/api/controllers/table/external.js +2 -0
  177. package/dist/api/controllers/table/index.js +12 -0
  178. package/dist/api/controllers/table/utils.js +3 -3
  179. package/dist/api/controllers/view/index.js +62 -6
  180. package/dist/api/index.js +2 -4
  181. package/dist/api/routes/analytics.js +1 -3
  182. package/dist/app.js +16 -8
  183. package/dist/automations/index.js +4 -0
  184. package/dist/environment.js +4 -2
  185. package/dist/migrations/functions/backfill/app/automations.js +31 -0
  186. package/dist/migrations/functions/backfill/app/datasources.js +28 -0
  187. package/dist/migrations/functions/backfill/app/layouts.js +33 -0
  188. package/dist/migrations/functions/backfill/app/queries.js +32 -0
  189. package/dist/migrations/functions/backfill/app/roles.js +28 -0
  190. package/dist/migrations/functions/backfill/app/screens.js +28 -0
  191. package/dist/migrations/functions/backfill/app/tables.js +40 -0
  192. package/dist/migrations/functions/backfill/app.js +175 -0
  193. package/dist/migrations/functions/backfill/global/configs.js +61 -0
  194. package/dist/migrations/functions/backfill/global/quotas.js +60 -0
  195. package/dist/migrations/functions/backfill/global/users.js +50 -0
  196. package/dist/migrations/functions/backfill/global.js +189 -0
  197. package/dist/migrations/functions/backfill/index.js +32 -0
  198. package/dist/migrations/functions/backfill/installation.js +81 -0
  199. package/dist/migrations/index.js +95 -31
  200. package/dist/migrations/tests/helpers.js +72 -0
  201. package/dist/migrations/tests/structures.js +37 -0
  202. package/dist/package.json +79 -69
  203. package/dist/tests/utilities/TestConfiguration.js +121 -93
  204. package/dist/tests/utilities/structures.js +45 -0
  205. package/dist/tsconfig.build.tsbuildinfo +1 -1
  206. package/nodemon.json +1 -1
  207. package/package.json +80 -70
  208. package/scripts/dev/manage.js +2 -0
  209. package/scripts/jestSetup.js +7 -0
  210. package/scripts/likeCypress.ts +1 -1
  211. package/src/api/controllers/analytics.ts +8 -0
  212. package/src/api/controllers/application.ts +60 -18
  213. package/src/api/controllers/automation.js +36 -2
  214. package/src/api/controllers/backup.js +8 -0
  215. package/src/api/controllers/datasource.js +8 -4
  216. package/src/api/controllers/deploy/index.ts +6 -2
  217. package/src/api/controllers/dev.js +10 -2
  218. package/src/api/controllers/layout.js +3 -0
  219. package/src/api/controllers/query/import/index.ts +16 -3
  220. package/src/api/controllers/query/import/sources/base/index.ts +2 -1
  221. package/src/api/controllers/query/import/sources/curl.ts +4 -0
  222. package/src/api/controllers/query/import/sources/openapi2.ts +4 -0
  223. package/src/api/controllers/query/import/sources/openapi3.ts +4 -0
  224. package/src/api/controllers/query/import/tests/index.spec.js +20 -7
  225. package/src/api/controllers/query/index.ts +16 -3
  226. package/src/api/controllers/role.js +10 -0
  227. package/src/api/controllers/screen.js +13 -1
  228. package/src/api/controllers/static/index.js +28 -15
  229. package/src/api/controllers/table/external.js +2 -0
  230. package/src/api/controllers/table/index.js +12 -0
  231. package/src/api/controllers/table/utils.ts +4 -4
  232. package/src/api/controllers/view/index.js +76 -6
  233. package/src/api/index.js +2 -4
  234. package/src/api/routes/analytics.js +1 -3
  235. package/src/api/routes/public/utils/Endpoint.ts +1 -1
  236. package/src/api/routes/tests/__snapshots__/datasource.spec.js.snap +5 -1
  237. package/src/api/routes/tests/application.spec.js +64 -4
  238. package/src/api/routes/tests/automation.spec.js +168 -60
  239. package/src/api/routes/tests/backup.spec.js +2 -0
  240. package/src/api/routes/tests/data/export.txt +1 -0
  241. package/src/api/routes/tests/datasource.spec.js +5 -0
  242. package/src/api/routes/tests/deployment.spec.js +25 -0
  243. package/src/api/routes/tests/dev.spec.js +40 -0
  244. package/src/api/routes/tests/layout.spec.js +4 -0
  245. package/src/api/routes/tests/query.spec.js +56 -13
  246. package/src/api/routes/tests/role.spec.js +40 -7
  247. package/src/api/routes/tests/row.spec.js +2 -3
  248. package/src/api/routes/tests/screen.spec.js +30 -4
  249. package/src/api/routes/tests/static.spec.js +120 -54
  250. package/src/api/routes/tests/table.spec.js +102 -38
  251. package/src/api/routes/tests/view.spec.js +222 -43
  252. package/src/app.ts +18 -9
  253. package/src/automations/index.js +4 -0
  254. package/src/automations/tests/delay.spec.js +4 -0
  255. package/src/environment.js +5 -2
  256. package/src/migrations/functions/backfill/app/automations.ts +26 -0
  257. package/src/migrations/functions/backfill/app/datasources.ts +22 -0
  258. package/src/migrations/functions/backfill/app/layouts.ts +29 -0
  259. package/src/migrations/functions/backfill/app/queries.ts +33 -0
  260. package/src/migrations/functions/backfill/app/roles.ts +22 -0
  261. package/src/migrations/functions/backfill/app/screens.ts +22 -0
  262. package/src/migrations/functions/backfill/app/tables.ts +36 -0
  263. package/src/migrations/functions/backfill/app.ts +148 -0
  264. package/src/migrations/functions/backfill/global/configs.ts +66 -0
  265. package/src/migrations/functions/backfill/global/quotas.ts +60 -0
  266. package/src/migrations/functions/backfill/global/users.ts +49 -0
  267. package/src/migrations/functions/backfill/global.ts +194 -0
  268. package/src/migrations/functions/backfill/index.ts +7 -0
  269. package/src/migrations/functions/backfill/installation.ts +51 -0
  270. package/src/migrations/index.ts +120 -51
  271. package/src/migrations/tests/helpers.ts +40 -0
  272. package/src/migrations/tests/index.spec.ts +132 -0
  273. package/src/migrations/tests/structures.ts +66 -0
  274. package/src/module.d.ts +0 -1
  275. package/src/tests/utilities/TestConfiguration.js +138 -90
  276. package/src/tests/utilities/structures.js +71 -0
  277. package/tsconfig.build.json +20 -5
  278. package/tsconfig.json +22 -17
  279. package/builder/assets/index.753ce79d.js +0 -1315
  280. package/coverage/lcov-report/api/controllers/analytics.js.html +0 -202
  281. package/src/api/controllers/analytics.js +0 -39
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">81.48% </span>
26
+ <span class="strong">83.33% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>22/27</span>
28
+ <span class='fraction'>25/30</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">81.48% </span>
47
+ <span class="strong">83.33% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>22/27</span>
49
+ <span class='fraction'>25/30</span>
50
50
  </div>
51
51
 
52
52
 
@@ -114,18 +114,22 @@
114
114
  <a name='L49'></a><a href='#L49'>49</a>
115
115
  <a name='L50'></a><a href='#L50'>50</a>
116
116
  <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
118
121
  <span class="cline-any cline-neutral">&nbsp;</span>
119
122
  <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-yes">40x</span>
121
- <span class="cline-any cline-yes">40x</span>
122
- <span class="cline-any cline-yes">40x</span>
123
+ <span class="cline-any cline-yes">43x</span>
124
+ <span class="cline-any cline-yes">43x</span>
125
+ <span class="cline-any cline-yes">43x</span>
126
+ <span class="cline-any cline-yes">43x</span>
123
127
  <span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-yes">40x</span>
125
- <span class="cline-any cline-yes">5x</span>
126
- <span class="cline-any cline-yes">5x</span>
128
+ <span class="cline-any cline-yes">43x</span>
129
+ <span class="cline-any cline-yes">6x</span>
130
+ <span class="cline-any cline-yes">6x</span>
127
131
  <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-yes">5x</span>
132
+ <span class="cline-any cline-yes">6x</span>
129
133
  <span class="cline-any cline-no">&nbsp;</span>
130
134
  <span class="cline-any cline-neutral">&nbsp;</span>
131
135
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -133,15 +137,16 @@
133
137
  <span class="cline-any cline-no">&nbsp;</span>
134
138
  <span class="cline-any cline-neutral">&nbsp;</span>
135
139
  <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-yes">5x</span>
137
- <span class="cline-any cline-yes">5x</span>
138
- <span class="cline-any cline-yes">5x</span>
140
+ <span class="cline-any cline-yes">6x</span>
141
+ <span class="cline-any cline-yes">6x</span>
142
+ <span class="cline-any cline-yes">6x</span>
143
+ <span class="cline-any cline-yes">6x</span>
139
144
  <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-yes">5x</span>
141
- <span class="cline-any cline-yes">5x</span>
145
+ <span class="cline-any cline-yes">6x</span>
146
+ <span class="cline-any cline-yes">6x</span>
142
147
  <span class="cline-any cline-neutral">&nbsp;</span>
143
148
  <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-yes">40x</span>
149
+ <span class="cline-any cline-yes">43x</span>
145
150
  <span class="cline-any cline-yes">1x</span>
146
151
  <span class="cline-any cline-yes">1x</span>
147
152
  <span class="cline-any cline-yes">1x</span>
@@ -164,6 +169,7 @@
164
169
  <span class="cline-any cline-yes">1x</span>
165
170
  <span class="cline-any cline-yes">1x</span>
166
171
  <span class="cline-any cline-yes">1x</span>
172
+ <span class="cline-any cline-yes">1x</span>
167
173
  <span class="cline-any cline-neutral">&nbsp;</span>
168
174
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
169
175
  EMPTY_LAYOUT,
@@ -171,6 +177,7 @@
171
177
  } = require("../../constants/layouts")
172
178
  const { generateLayoutID, getScreenParams } = require("../../db/utils")
173
179
  const { getAppDB } = require("@budibase/backend-core/context")
180
+ const { events } = require("@budibase/backend-core")
174
181
  &nbsp;
175
182
  exports.save = async function (ctx) {
176
183
  const db = getAppDB()
@@ -186,6 +193,7 @@ exports.save = async function (ctx) {
186
193
  &nbsp;
187
194
  layout._id = layout._id || generateLayoutID()
188
195
  const response = await db.put(layout)
196
+ await events.layout.created(layout)
189
197
  layout._rev = response.rev
190
198
  &nbsp;
191
199
  ctx.body = layout
@@ -213,6 +221,7 @@ exports.destroy = async function (ctx) {
213
221
  }
214
222
  &nbsp;
215
223
  await db.remove(layoutId, layoutRev)
224
+ await events.layout.deleted(layoutId)
216
225
  ctx.body = { message: "Layout deleted successfully" }
217
226
  ctx.status = 200
218
227
  }
@@ -223,7 +232,7 @@ exports.destroy = async function (ctx) {
223
232
  <div class='footer quiet pad2 space-top1 center small'>
224
233
  Code coverage generated by
225
234
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
226
- at Wed Jun 08 2022 12:05:51 GMT+0000 (Coordinated Universal Time)
235
+ at Mon Jun 13 2022 10:34:07 GMT+0000 (Coordinated Universal Time)
227
236
  </div>
228
237
  <script src="../../prettify.js"></script>
229
238
  <script>
@@ -104,18 +104,18 @@
104
104
  <a name='L39'></a><a href='#L39'>39</a>
105
105
  <a name='L40'></a><a href='#L40'>40</a>
106
106
  <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
108
- <span class="cline-any cline-yes">24x</span>
109
- <span class="cline-any cline-yes">24x</span>
110
- <span class="cline-any cline-yes">24x</span>
107
+ <a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">27x</span>
108
+ <span class="cline-any cline-yes">27x</span>
109
+ <span class="cline-any cline-yes">27x</span>
110
+ <span class="cline-any cline-yes">27x</span>
111
111
  <span class="cline-any cline-neutral">&nbsp;</span>
112
- <span class="cline-any cline-yes">24x</span>
112
+ <span class="cline-any cline-yes">27x</span>
113
113
  <span class="cline-any cline-no">&nbsp;</span>
114
114
  <span class="cline-any cline-neutral">&nbsp;</span>
115
115
  <span class="cline-any cline-neutral">&nbsp;</span>
116
116
  <span class="cline-any cline-neutral">&nbsp;</span>
117
117
  <span class="cline-any cline-neutral">&nbsp;</span>
118
- <span class="cline-any cline-yes">24x</span>
118
+ <span class="cline-any cline-yes">27x</span>
119
119
  <span class="cline-any cline-yes">1x</span>
120
120
  <span class="cline-any cline-yes">1x</span>
121
121
  <span class="cline-any cline-no">&nbsp;</span>
@@ -123,7 +123,7 @@
123
123
  <span class="cline-any cline-yes">1x</span>
124
124
  <span class="cline-any cline-neutral">&nbsp;</span>
125
125
  <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-yes">24x</span>
126
+ <span class="cline-any cline-yes">27x</span>
127
127
  <span class="cline-any cline-yes">1x</span>
128
128
  <span class="cline-any cline-yes">1x</span>
129
129
  <span class="cline-any cline-yes">1x</span>
@@ -131,7 +131,7 @@
131
131
  <span class="cline-any cline-neutral">&nbsp;</span>
132
132
  <span class="cline-any cline-neutral">&nbsp;</span>
133
133
  <span class="cline-any cline-neutral">&nbsp;</span>
134
- <span class="cline-any cline-yes">24x</span>
134
+ <span class="cline-any cline-yes">27x</span>
135
135
  <span class="cline-any cline-yes">3x</span>
136
136
  <span class="cline-any cline-yes">3x</span>
137
137
  <span class="cline-any cline-yes">3x</span>
@@ -193,7 +193,7 @@ exports.getMetadata = async ctx =&gt; {
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at Wed Jun 08 2022 12:05:51 GMT+0000 (Coordinated Universal Time)
196
+ at Mon Jun 13 2022 10:34:07 GMT+0000 (Coordinated Universal Time)
197
197
  </div>
198
198
  <script src="../../prettify.js"></script>
199
199
  <script>
@@ -76,16 +76,16 @@
76
76
  <a name='L11'></a><a href='#L11'>11</a>
77
77
  <a name='L12'></a><a href='#L12'>12</a>
78
78
  <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
79
+ <a name='L14'></a><a href='#L14'>14</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">27x</span>
80
80
  <span class="cline-any cline-neutral">&nbsp;</span>
81
- <span class="cline-any cline-yes">24x</span>
81
+ <span class="cline-any cline-yes">27x</span>
82
82
  <span class="cline-any cline-no">&nbsp;</span>
83
83
  <span class="cline-any cline-neutral">&nbsp;</span>
84
84
  <span class="cline-any cline-no">&nbsp;</span>
85
85
  <span class="cline-any cline-no">&nbsp;</span>
86
86
  <span class="cline-any cline-neutral">&nbsp;</span>
87
87
  <span class="cline-any cline-neutral">&nbsp;</span>
88
- <span class="cline-any cline-yes">24x</span>
88
+ <span class="cline-any cline-yes">27x</span>
89
89
  <span class="cline-any cline-no">&nbsp;</span>
90
90
  <span class="cline-any cline-no">&nbsp;</span>
91
91
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -109,7 +109,7 @@ exports.fetchDefinitions = <span class="fstat-no" title="function not covered" >
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
112
- at Wed Jun 08 2022 12:05:51 GMT+0000 (Coordinated Universal Time)
112
+ at Mon Jun 13 2022 10:34:07 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  <script src="../../prettify.js"></script>
115
115
  <script>
@@ -238,28 +238,28 @@
238
238
  <a name='L173'></a><a href='#L173'>173</a>
239
239
  <a name='L174'></a><a href='#L174'>174</a>
240
240
  <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">40x</span>
241
+ <a name='L176'></a><a href='#L176'>176</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">43x</span>
242
242
  <span class="cline-any cline-neutral">&nbsp;</span>
243
243
  <span class="cline-any cline-neutral">&nbsp;</span>
244
244
  <span class="cline-any cline-neutral">&nbsp;</span>
245
245
  <span class="cline-any cline-neutral">&nbsp;</span>
246
246
  <span class="cline-any cline-neutral">&nbsp;</span>
247
247
  <span class="cline-any cline-neutral">&nbsp;</span>
248
- <span class="cline-any cline-yes">40x</span>
249
- <span class="cline-any cline-yes">40x</span>
248
+ <span class="cline-any cline-yes">43x</span>
249
+ <span class="cline-any cline-yes">43x</span>
250
250
  <span class="cline-any cline-neutral">&nbsp;</span>
251
251
  <span class="cline-any cline-neutral">&nbsp;</span>
252
252
  <span class="cline-any cline-neutral">&nbsp;</span>
253
- <span class="cline-any cline-yes">40x</span>
254
- <span class="cline-any cline-yes">40x</span>
255
- <span class="cline-any cline-yes">40x</span>
253
+ <span class="cline-any cline-yes">43x</span>
254
+ <span class="cline-any cline-yes">43x</span>
255
+ <span class="cline-any cline-yes">43x</span>
256
256
  <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-yes">40x</span>
257
+ <span class="cline-any cline-yes">43x</span>
258
258
  <span class="cline-any cline-neutral">&nbsp;</span>
259
259
  <span class="cline-any cline-neutral">&nbsp;</span>
260
260
  <span class="cline-any cline-neutral">&nbsp;</span>
261
261
  <span class="cline-any cline-neutral">&nbsp;</span>
262
- <span class="cline-any cline-yes">40x</span>
262
+ <span class="cline-any cline-yes">43x</span>
263
263
  <span class="cline-any cline-neutral">&nbsp;</span>
264
264
  <span class="cline-any cline-neutral">&nbsp;</span>
265
265
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -337,16 +337,16 @@
337
337
  <span class="cline-any cline-neutral">&nbsp;</span>
338
338
  <span class="cline-any cline-neutral">&nbsp;</span>
339
339
  <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-yes">40x</span>
340
+ <span class="cline-any cline-yes">43x</span>
341
341
  <span class="cline-any cline-yes">1x</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
343
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">40x</span>
344
+ <span class="cline-any cline-yes">43x</span>
345
345
  <span class="cline-any cline-neutral">&nbsp;</span>
346
346
  <span class="cline-any cline-yes">1x</span>
347
347
  <span class="cline-any cline-neutral">&nbsp;</span>
348
348
  <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-yes">40x</span>
349
+ <span class="cline-any cline-yes">43x</span>
350
350
  <span class="cline-any cline-yes">1x</span>
351
351
  <span class="cline-any cline-yes">1x</span>
352
352
  <span class="cline-any cline-yes">1x</span>
@@ -372,7 +372,7 @@
372
372
  <span class="cline-any cline-yes">1x</span>
373
373
  <span class="cline-any cline-neutral">&nbsp;</span>
374
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-yes">40x</span>
375
+ <span class="cline-any cline-yes">43x</span>
376
376
  <span class="cline-any cline-yes">3x</span>
377
377
  <span class="cline-any cline-yes">3x</span>
378
378
  <span class="cline-any cline-yes">3x</span>
@@ -398,7 +398,7 @@
398
398
  <span class="cline-any cline-yes">3x</span>
399
399
  <span class="cline-any cline-neutral">&nbsp;</span>
400
400
  <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-yes">40x</span>
401
+ <span class="cline-any cline-yes">43x</span>
402
402
  <span class="cline-any cline-yes">10x</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
404
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -406,7 +406,7 @@
406
406
  <span class="cline-any cline-neutral">&nbsp;</span>
407
407
  <span class="cline-any cline-neutral">&nbsp;</span>
408
408
  <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-yes">40x</span>
409
+ <span class="cline-any cline-yes">43x</span>
410
410
  <span class="cline-any cline-yes">1x</span>
411
411
  <span class="cline-any cline-neutral">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -595,7 +595,7 @@ exports.removePermission = async function (ctx) {
595
595
  <div class='footer quiet pad2 space-top1 center small'>
596
596
  Code coverage generated by
597
597
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
598
- at Wed Jun 08 2022 12:05:51 GMT+0000 (Coordinated Universal Time)
598
+ at Mon Jun 13 2022 10:34:07 GMT+0000 (Coordinated Universal Time)
599
599
  </div>
600
600
  <script src="../../prettify.js"></script>
601
601
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Wed Jun 08 2022 12:05:51 GMT+0000 (Coordinated Universal Time)
104
+ at Mon Jun 13 2022 10:34:07 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -113,13 +113,13 @@
113
113
  <a name='L48'></a><a href='#L48'>48</a>
114
114
  <a name='L49'></a><a href='#L49'>49</a>
115
115
  <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">41x</span>
117
- <span class="cline-any cline-yes">41x</span>
116
+ <a name='L51'></a><a href='#L51'>51</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">44x</span>
117
+ <span class="cline-any cline-yes">44x</span>
118
118
  <span class="cline-any cline-neutral">&nbsp;</span>
119
- <span class="cline-any cline-yes">41x</span>
119
+ <span class="cline-any cline-yes">44x</span>
120
120
  <span class="cline-any cline-neutral">&nbsp;</span>
121
- <span class="cline-any cline-yes">41x</span>
122
- <span class="cline-any cline-yes">33x</span>
121
+ <span class="cline-any cline-yes">44x</span>
122
+ <span class="cline-any cline-yes">36x</span>
123
123
  <span class="cline-any cline-neutral">&nbsp;</span>
124
124
  <span class="cline-any cline-neutral">&nbsp;</span>
125
125
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -140,14 +140,14 @@
140
140
  <span class="cline-any cline-neutral">&nbsp;</span>
141
141
  <span class="cline-any cline-neutral">&nbsp;</span>
142
142
  <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-yes">41x</span>
143
+ <span class="cline-any cline-yes">44x</span>
144
144
  <span class="cline-any cline-neutral">&nbsp;</span>
145
- <span class="cline-any cline-yes">24x</span>
145
+ <span class="cline-any cline-yes">27x</span>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-yes">41x</span>
148
+ <span class="cline-any cline-yes">44x</span>
149
149
  <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-yes">24x</span>
150
+ <span class="cline-any cline-yes">27x</span>
151
151
  <span class="cline-any cline-neutral">&nbsp;</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span>
153
153
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -220,7 +220,7 @@ exports.generateQueryPreviewValidation = () =&gt; {
220
220
  <div class='footer quiet pad2 space-top1 center small'>
221
221
  Code coverage generated by
222
222
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
223
- at Wed Jun 08 2022 12:05:51 GMT+0000 (Coordinated Universal Time)
223
+ at Mon Jun 13 2022 10:34:07 GMT+0000 (Coordinated Universal Time)
224
224
  </div>
225
225
  <script src="../../../prettify.js"></script>
226
226
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">87.03% </span>
26
+ <span class="strong">91.93% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>47/54</span>
28
+ <span class='fraction'>57/62</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">63.63% </span>
33
+ <span class="strong">83.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>14/22</span>
35
+ <span class='fraction'>20/24</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.67% </span>
47
+ <span class="strong">93.44% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>47/53</span>
49
+ <span class='fraction'>57/61</span>
50
50
  </div>
51
51
 
52
52
 
@@ -161,77 +161,96 @@
161
161
  <a name='L96'></a><a href='#L96'>96</a>
162
162
  <a name='L97'></a><a href='#L97'>97</a>
163
163
  <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
165
175
  <span class="cline-any cline-neutral">&nbsp;</span>
166
176
  <span class="cline-any cline-neutral">&nbsp;</span>
167
177
  <span class="cline-any cline-neutral">&nbsp;</span>
168
178
  <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-yes">40x</span>
179
+ <span class="cline-any cline-yes">43x</span>
170
180
  <span class="cline-any cline-neutral">&nbsp;</span>
171
181
  <span class="cline-any cline-neutral">&nbsp;</span>
172
182
  <span class="cline-any cline-neutral">&nbsp;</span>
173
183
  <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-yes">40x</span>
175
- <span class="cline-any cline-yes">40x</span>
184
+ <span class="cline-any cline-yes">43x</span>
185
+ <span class="cline-any cline-yes">43x</span>
186
+ <span class="cline-any cline-yes">43x</span>
176
187
  <span class="cline-any cline-neutral">&nbsp;</span>
177
- <span class="cline-any cline-yes">40x</span>
188
+ <span class="cline-any cline-yes">43x</span>
178
189
  <span class="cline-any cline-neutral">&nbsp;</span>
179
190
  <span class="cline-any cline-neutral">&nbsp;</span>
180
191
  <span class="cline-any cline-neutral">&nbsp;</span>
181
192
  <span class="cline-any cline-neutral">&nbsp;</span>
182
193
  <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-yes">4x</span>
184
- <span class="cline-any cline-yes">4x</span>
185
- <span class="cline-any cline-yes">4x</span>
186
- <span class="cline-any cline-yes">4x</span>
187
- <span class="cline-any cline-yes">4x</span>
188
- <span class="cline-any cline-yes">16x</span>
189
- <span class="cline-any cline-yes">4x</span>
190
- <span class="cline-any cline-yes">4x</span>
191
- <span class="cline-any cline-yes">4x</span>
192
- <span class="cline-any cline-yes">4x</span>
194
+ <span class="cline-any cline-yes">8x</span>
195
+ <span class="cline-any cline-yes">8x</span>
196
+ <span class="cline-any cline-yes">8x</span>
197
+ <span class="cline-any cline-yes">8x</span>
198
+ <span class="cline-any cline-yes">8x</span>
199
+ <span class="cline-any cline-yes">32x</span>
200
+ <span class="cline-any cline-yes">8x</span>
201
+ <span class="cline-any cline-yes">8x</span>
202
+ <span class="cline-any cline-yes">8x</span>
203
+ <span class="cline-any cline-yes">8x</span>
193
204
  <span class="cline-any cline-yes">1x</span>
194
- <span class="cline-any cline-yes">3x</span>
195
- <span class="cline-any cline-yes">3x</span>
205
+ <span class="cline-any cline-yes">7x</span>
206
+ <span class="cline-any cline-yes">6x</span>
196
207
  <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-yes">4x</span>
208
+ <span class="cline-any cline-yes">8x</span>
198
209
  <span class="cline-any cline-neutral">&nbsp;</span>
199
210
  <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-yes">4x</span>
201
- <span class="cline-any cline-yes">4x</span>
211
+ <span class="cline-any cline-yes">8x</span>
212
+ <span class="cline-any cline-yes">8x</span>
202
213
  <span class="cline-any cline-neutral">&nbsp;</span>
203
214
  <span class="cline-any cline-neutral">&nbsp;</span>
204
215
  <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-yes">40x</span>
216
+ <span class="cline-any cline-yes">43x</span>
206
217
  <span class="cline-any cline-yes">2x</span>
207
218
  <span class="cline-any cline-neutral">&nbsp;</span>
208
219
  <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-yes">40x</span>
220
+ <span class="cline-any cline-yes">43x</span>
210
221
  <span class="cline-any cline-yes">1x</span>
211
222
  <span class="cline-any cline-neutral">&nbsp;</span>
212
223
  <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-yes">40x</span>
214
- <span class="cline-any cline-yes">3x</span>
215
- <span class="cline-any cline-yes">3x</span>
216
- <span class="cline-any cline-yes">3x</span>
217
- <span class="cline-any cline-yes">3x</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
224
+ <span class="cline-any cline-yes">43x</span>
225
+ <span class="cline-any cline-yes">7x</span>
226
+ <span class="cline-any cline-yes">7x</span>
227
+ <span class="cline-any cline-yes">7x</span>
228
+ <span class="cline-any cline-yes">7x</span>
229
+ <span class="cline-any cline-yes">6x</span>
230
+ <span class="cline-any cline-yes">6x</span>
231
+ <span class="cline-any cline-yes">1x</span>
219
232
  <span class="cline-any cline-no">&nbsp;</span>
220
233
  <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-yes">3x</span>
234
+ <span class="cline-any cline-yes">7x</span>
222
235
  <span class="cline-any cline-neutral">&nbsp;</span>
223
236
  <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-yes">3x</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
237
+ <span class="cline-any cline-yes">7x</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
+ <span class="cline-any cline-yes">7x</span>
241
+ <span class="cline-any cline-yes">7x</span>
242
+ <span class="cline-any cline-yes">6x</span>
226
243
  <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-yes">3x</span>
228
- <span class="cline-any cline-yes">3x</span>
229
- <span class="cline-any cline-yes">3x</span>
230
- <span class="cline-any cline-yes">3x</span>
231
- <span class="cline-any cline-yes">3x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-yes">7x</span>
247
+ <span class="cline-any cline-yes">7x</span>
248
+ <span class="cline-any cline-yes">7x</span>
249
+ <span class="cline-any cline-yes">7x</span>
232
250
  <span class="cline-any cline-neutral">&nbsp;</span>
233
251
  <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-yes">40x</span>
252
+ <span class="cline-any cline-yes">43x</span>
253
+ <span class="cline-any cline-yes">1x</span>
235
254
  <span class="cline-any cline-yes">1x</span>
236
255
  <span class="cline-any cline-yes">1x</span>
237
256
  <span class="cline-any cline-yes">1x</span>
@@ -252,6 +271,7 @@
252
271
  <span class="cline-any cline-neutral">&nbsp;</span>
253
272
  <span class="cline-any cline-yes">1x</span>
254
273
  <span class="cline-any cline-yes">1x</span>
274
+ <span class="cline-any cline-yes">1x</span>
255
275
  <span class="cline-any cline-neutral">&nbsp;</span>
256
276
  <span class="cline-any cline-neutral">&nbsp;</span>
257
277
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -271,6 +291,7 @@ const {
271
291
  InternalTables,
272
292
  } = require("../../db/utils")
273
293
  const { getAppDB } = require("@budibase/backend-core/context")
294
+ const { events } = require("@budibase/backend-core")
274
295
  &nbsp;
275
296
  const UpdateRolesOptions = {
276
297
  CREATED: "created",
@@ -289,7 +310,7 @@ async function updateRolesOnUserTable(db, roleId, updateOption) {
289
310
  const indexOf = constraints.inclusion.indexOf(roleId)
290
311
  if (remove &amp;&amp; indexOf !== -1) {
291
312
  constraints.inclusion.splice(indexOf, 1)
292
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (!remove &amp;&amp; indexOf === -1) {
313
+ } else if (!remove &amp;&amp; indexOf === -1) {
293
314
  constraints.inclusion.push(roleId)
294
315
  }
295
316
  break
@@ -311,18 +332,25 @@ exports.find = async function (ctx) {
311
332
  exports.save = async function (ctx) {
312
333
  const db = getAppDB()
313
334
  let { _id, name, inherits, permissionId } = ctx.request.body
335
+ let isCreate = false
314
336
  if (!_id) {
315
337
  _id = generateRoleID()
316
- } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (isBuiltin(_id)) {</span>
338
+ isCreate = true
339
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (isBuiltin(_id)) {
317
340
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Cannot update builtin roles.")</span>
318
341
  }
319
342
  const role = new Role(_id, name)
320
343
  .addPermission(permissionId)
321
344
  .addInheritance(inherits)
322
- <span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.request.body._rev) {
323
- <span class="cstat-no" title="statement not covered" > role._rev = ctx.request.body._rev</span>
345
+ if (ctx.request.body._rev) {
346
+ role._rev = ctx.request.body._rev
324
347
  }
325
348
  const result = await db.put(role)
349
+ if (isCreate) {
350
+ await events.role.created(role)
351
+ } else {
352
+ await events.role.updated(role)
353
+ }
326
354
  await updateRolesOnUserTable(db, _id, UpdateRolesOptions.CREATED)
327
355
  role._rev = result.rev
328
356
  ctx.body = role
@@ -332,6 +360,7 @@ exports.save = async function (ctx) {
332
360
  exports.destroy = async function (ctx) {
333
361
  const db = getAppDB()
334
362
  const roleId = ctx.params.roleId
363
+ const role = await db.get(roleId)
335
364
  <span class="missing-if-branch" title="if path not taken" >I</span>if (isBuiltin(roleId)) {
336
365
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Cannot delete builtin role.")</span>
337
366
  }
@@ -349,6 +378,7 @@ exports.destroy = async function (ctx) {
349
378
  }
350
379
  &nbsp;
351
380
  await db.remove(roleId, ctx.params.rev)
381
+ await events.role.deleted(role)
352
382
  await updateRolesOnUserTable(
353
383
  db,
354
384
  ctx.params.roleId,
@@ -364,7 +394,7 @@ exports.destroy = async function (ctx) {
364
394
  <div class='footer quiet pad2 space-top1 center small'>
365
395
  Code coverage generated by
366
396
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
367
- at Wed Jun 08 2022 12:05:51 GMT+0000 (Coordinated Universal Time)
397
+ at Mon Jun 13 2022 10:34:07 GMT+0000 (Coordinated Universal Time)
368
398
  </div>
369
399
  <script src="../../prettify.js"></script>
370
400
  <script>