@budibase/server 1.0.199 → 1.0.200-alpha.2

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.359da19e.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.107ba2e5.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,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">27.69% </span>
26
+ <span class="strong">60% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>18/65</span>
28
+ <span class='fraction'>42/70</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">29.41% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/15</span>
35
+ <span class='fraction'>5/17</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">30% </span>
40
+ <span class="strong">50% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/10</span>
42
+ <span class='fraction'>5/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">27.69% </span>
47
+ <span class="strong">60% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>18/65</span>
49
+ <span class='fraction'>42/70</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -190,15 +190,24 @@
190
190
  <a name='L125'></a><a href='#L125'>125</a>
191
191
  <a name='L126'></a><a href='#L126'>126</a>
192
192
  <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
194
- <span class="cline-any cline-yes">24x</span>
195
- <span class="cline-any cline-yes">24x</span>
196
- <span class="cline-any cline-yes">24x</span>
197
- <span class="cline-any cline-yes">24x</span>
198
- <span class="cline-any cline-yes">24x</span>
199
- <span class="cline-any cline-yes">24x</span>
200
- <span class="cline-any cline-yes">24x</span>
201
- <span class="cline-any cline-yes">24x</span>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">27x</span>
202
+ <span class="cline-any cline-yes">27x</span>
203
+ <span class="cline-any cline-yes">27x</span>
204
+ <span class="cline-any cline-yes">27x</span>
205
+ <span class="cline-any cline-yes">27x</span>
206
+ <span class="cline-any cline-yes">27x</span>
207
+ <span class="cline-any cline-yes">27x</span>
208
+ <span class="cline-any cline-yes">27x</span>
209
+ <span class="cline-any cline-yes">27x</span>
210
+ <span class="cline-any cline-yes">27x</span>
202
211
  <span class="cline-any cline-neutral">&nbsp;</span>
203
212
  <span class="cline-any cline-neutral">&nbsp;</span>
204
213
  <span class="cline-any cline-no">&nbsp;</span>
@@ -237,25 +246,25 @@
237
246
  <span class="cline-any cline-no">&nbsp;</span>
238
247
  <span class="cline-any cline-neutral">&nbsp;</span>
239
248
  <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-yes">24x</span>
241
- <span class="cline-any cline-yes">48x</span>
249
+ <span class="cline-any cline-yes">27x</span>
250
+ <span class="cline-any cline-yes">54x</span>
242
251
  <span class="cline-any cline-no">&nbsp;</span>
243
252
  <span class="cline-any cline-neutral">&nbsp;</span>
244
253
  <span class="cline-any cline-neutral">&nbsp;</span>
245
254
  <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-yes">24x</span>
247
- <span class="cline-any cline-yes">48x</span>
255
+ <span class="cline-any cline-yes">27x</span>
256
+ <span class="cline-any cline-yes">54x</span>
248
257
  <span class="cline-any cline-no">&nbsp;</span>
249
258
  <span class="cline-any cline-neutral">&nbsp;</span>
250
259
  <span class="cline-any cline-neutral">&nbsp;</span>
251
260
  <span class="cline-any cline-neutral">&nbsp;</span>
252
- <span class="cline-any cline-yes">24x</span>
253
- <span class="cline-any cline-yes">48x</span>
261
+ <span class="cline-any cline-yes">27x</span>
262
+ <span class="cline-any cline-yes">54x</span>
254
263
  <span class="cline-any cline-no">&nbsp;</span>
255
264
  <span class="cline-any cline-neutral">&nbsp;</span>
256
265
  <span class="cline-any cline-neutral">&nbsp;</span>
257
266
  <span class="cline-any cline-neutral">&nbsp;</span>
258
- <span class="cline-any cline-yes">24x</span>
267
+ <span class="cline-any cline-yes">27x</span>
259
268
  <span class="cline-any cline-no">&nbsp;</span>
260
269
  <span class="cline-any cline-no">&nbsp;</span>
261
270
  <span class="cline-any cline-no">&nbsp;</span>
@@ -267,19 +276,19 @@
267
276
  <span class="cline-any cline-neutral">&nbsp;</span>
268
277
  <span class="cline-any cline-neutral">&nbsp;</span>
269
278
  <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-yes">24x</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
272
- <span class="cline-any cline-no">&nbsp;</span>
279
+ <span class="cline-any cline-yes">27x</span>
280
+ <span class="cline-any cline-yes">1x</span>
281
+ <span class="cline-any cline-yes">1x</span>
273
282
  <span class="cline-any cline-neutral">&nbsp;</span>
274
283
  <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
276
- <span class="cline-any cline-no">&nbsp;</span>
277
- <span class="cline-any cline-no">&nbsp;</span>
278
- <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-yes">1x</span>
285
+ <span class="cline-any cline-yes">1x</span>
286
+ <span class="cline-any cline-yes">1x</span>
287
+ <span class="cline-any cline-yes">1x</span>
279
288
  <span class="cline-any cline-no">&nbsp;</span>
280
289
  <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
282
- <span class="cline-any cline-no">&nbsp;</span>
290
+ <span class="cline-any cline-yes">1x</span>
291
+ <span class="cline-any cline-yes">1x</span>
283
292
  <span class="cline-any cline-neutral">&nbsp;</span>
284
293
  <span class="cline-any cline-neutral">&nbsp;</span>
285
294
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -289,34 +298,41 @@
289
298
  <span class="cline-any cline-no">&nbsp;</span>
290
299
  <span class="cline-any cline-neutral">&nbsp;</span>
291
300
  <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
301
+ <span class="cline-any cline-yes">1x</span>
293
302
  <span class="cline-any cline-neutral">&nbsp;</span>
294
303
  <span class="cline-any cline-neutral">&nbsp;</span>
295
304
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-no">&nbsp;</span>
297
- <span class="cline-any cline-no">&nbsp;</span>
305
+ <span class="cline-any cline-yes">1x</span>
306
+ <span class="cline-any cline-yes">1x</span>
298
307
  <span class="cline-any cline-neutral">&nbsp;</span>
299
308
  <span class="cline-any cline-no">&nbsp;</span>
300
- <span class="cline-any cline-no">&nbsp;</span>
301
- <span class="cline-any cline-no">&nbsp;</span>
302
- <span class="cline-any cline-no">&nbsp;</span>
303
- <span class="cline-any cline-no">&nbsp;</span>
304
- <span class="cline-any cline-no">&nbsp;</span>
305
- <span class="cline-any cline-no">&nbsp;</span>
306
309
  <span class="cline-any cline-neutral">&nbsp;</span>
307
310
  <span class="cline-any cline-neutral">&nbsp;</span>
308
311
  <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-no">&nbsp;</span>
312
+ <span class="cline-any cline-yes">1x</span>
313
+ <span class="cline-any cline-yes">1x</span>
314
+ <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-yes">1x</span>
316
+ <span class="cline-any cline-yes">1x</span>
317
+ <span class="cline-any cline-yes">1x</span>
318
+ <span class="cline-any cline-yes">1x</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-yes">1x</span>
310
322
  <span class="cline-any cline-neutral">&nbsp;</span>
311
323
  <span class="cline-any cline-no">&nbsp;</span>
312
324
  <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-yes">1x</span>
313
326
  <span class="cline-any cline-neutral">&nbsp;</span>
314
327
  <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-yes">24x</span>
316
- <span class="cline-any cline-no">&nbsp;</span>
317
328
  <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-yes">27x</span>
330
+ <span class="cline-any cline-yes">1x</span>
331
+ <span class="cline-any cline-yes">1x</span>
318
332
  <span class="cline-any cline-neutral">&nbsp;</span>
319
333
  <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-yes">1x</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
336
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const fetch = require("node-fetch")
321
337
  const env = require("../../environment")
322
338
  const { checkSlashesInUrl } = require("../../utilities")
@@ -326,6 +342,7 @@ const { Replication, getProdAppID } = require("@budibase/backend-core/db")
326
342
  const { DocumentTypes } = require("../../db/utils")
327
343
  const { app: appCache } = require("@budibase/backend-core/cache")
328
344
  const { getProdAppDB, getAppDB } = require("@budibase/backend-core/context")
345
+ const { events } = require("@budibase/backend-core")
329
346
  &nbsp;
330
347
  async function <span class="fstat-no" title="function not covered" >redirect(</span>ctx, method, path = <span class="branch-0 cbranch-no" title="branch not covered" >"global")</span> {
331
348
  const { devPath } = <span class="cstat-no" title="statement not covered" >ctx.params</span>
@@ -394,19 +411,19 @@ exports.clearLock = <span class="fstat-no" title="function not covered" >as</spa
394
411
  }
395
412
  }
396
413
  &nbsp;
397
- exports.revert = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
398
- const { appId } = <span class="cstat-no" title="statement not covered" >ctx.params</span>
399
- const productionAppId = <span class="cstat-no" title="statement not covered" >getProdAppID(appId)</span>
414
+ exports.revert = async ctx =&gt; {
415
+ const { appId } = ctx.params
416
+ const productionAppId = getProdAppID(appId)
400
417
  &nbsp;
401
418
  // App must have been deployed first
402
- <span class="cstat-no" title="statement not covered" > try {</span>
403
- const db = <span class="cstat-no" title="statement not covered" >getProdAppDB({ skip_setup: true })</span>
404
- const info = <span class="cstat-no" title="statement not covered" >await db.info()</span>
405
- <span class="cstat-no" title="statement not covered" > if (info.error) {</span>
419
+ try {
420
+ const db = getProdAppDB({ skip_setup: true })
421
+ const info = await db.info()
422
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (info.error) {
406
423
  <span class="cstat-no" title="statement not covered" > throw info.error</span>
407
424
  }
408
- const deploymentDoc = <span class="cstat-no" title="statement not covered" >await db.get(DocumentTypes.DEPLOYMENTS)</span>
409
- <span class="cstat-no" title="statement not covered" > if (</span>
425
+ const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
426
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
410
427
  !deploymentDoc.history ||
411
428
  Object.keys(deploymentDoc.history).length === 0
412
429
  ) {
@@ -416,33 +433,40 @@ exports.revert = <span class="fstat-no" title="function not covered" >as</span>y
416
433
  <span class="cstat-no" title="statement not covered" > return ctx.throw(400, "App has not yet been deployed")</span>
417
434
  }
418
435
  &nbsp;
419
- const replication = <span class="cstat-no" title="statement not covered" >new Replication({</span>
436
+ const replication = new Replication({
420
437
  source: productionAppId,
421
438
  target: appId,
422
439
  })
423
- <span class="cstat-no" title="statement not covered" > try {</span>
424
- <span class="cstat-no" title="statement not covered" > await replication.rollback()</span>
440
+ try {
441
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
442
+ // in-memory db stalls on rollback
443
+ <span class="cstat-no" title="statement not covered" > await replication.rollback()</span>
444
+ }
445
+ &nbsp;
425
446
  // update appID in reverted app to be dev version again
426
- const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
427
- const appDoc = <span class="cstat-no" title="statement not covered" >await db.get(DocumentTypes.APP_METADATA)</span>
428
- <span class="cstat-no" title="statement not covered" > appDoc.appId = appId</span>
429
- <span class="cstat-no" title="statement not covered" > appDoc.instance._id = appId</span>
430
- <span class="cstat-no" title="statement not covered" > await db.put(appDoc)</span>
431
- <span class="cstat-no" title="statement not covered" > await appCache.invalidateAppMetadata(appId)</span>
432
- <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
447
+ const db = getAppDB()
448
+ const appDoc = await db.get(DocumentTypes.APP_METADATA)
449
+ appDoc.appId = appId
450
+ appDoc.instance._id = appId
451
+ await db.put(appDoc)
452
+ await appCache.invalidateAppMetadata(appId)
453
+ ctx.body = {
433
454
  message: "Reverted changes successfully.",
434
455
  }
456
+ await events.app.reverted(appDoc)
435
457
  } catch (err) {
436
458
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, `Unable to revert. ${err}`)</span>
437
459
  } finally {
438
- <span class="cstat-no" title="statement not covered" > await replication.close()</span>
460
+ await replication.close()
439
461
  }
440
462
  }
441
463
  &nbsp;
442
- exports.getBudibaseVersion = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
443
- <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
444
- version: require("../../../package.json").version,
464
+ exports.getBudibaseVersion = async ctx =&gt; {
465
+ const version = require("../../../package.json").version
466
+ ctx.body = {
467
+ version,
445
468
  }
469
+ await events.version.checked(version)
446
470
  }
447
471
  &nbsp;</pre></td></tr></table></pre>
448
472
 
@@ -451,7 +475,7 @@ exports.getBudibaseVersion = <span class="fstat-no" title="function not covered"
451
475
  <div class='footer quiet pad2 space-top1 center small'>
452
476
  Code coverage generated by
453
477
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
454
- at Fri Jun 10 2022 13:42:57 GMT+0000 (Coordinated Universal Time)
478
+ at Mon Jun 13 2022 15:58:57 GMT+0000 (Coordinated Universal Time)
455
479
  </div>
456
480
  <script src="../../prettify.js"></script>
457
481
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">68.66% </span>
26
+ <span class="strong">73.1% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>629/916</span>
28
+ <span class='fraction'>704/963</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">43.2% </span>
33
+ <span class="strong">48.22% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>124/287</span>
35
+ <span class='fraction'>136/282</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">65.38% </span>
40
+ <span class="strong">69.11% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>85/130</span>
42
+ <span class='fraction'>94/136</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">68.65% </span>
47
+ <span class="strong">73.02% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>622/906</span>
49
+ <span class='fraction'>693/949</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,21 +79,6 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
- <td class="file low" data-value="analytics.js"><a href="analytics.js.html">analytics.js</a></td>
83
- <td data-value="46.15" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 46%"></div><div class="cover-empty" style="width: 54%"></div></div>
85
- </td>
86
- <td data-value="46.15" class="pct low">46.15%</td>
87
- <td data-value="13" class="abs low">6/13</td>
88
- <td data-value="30.76" class="pct low">30.76%</td>
89
- <td data-value="13" class="abs low">4/13</td>
90
- <td data-value="50" class="pct medium">50%</td>
91
- <td data-value="2" class="abs medium">1/2</td>
92
- <td data-value="46.15" class="pct low">46.15%</td>
93
- <td data-value="13" class="abs low">6/13</td>
94
- </tr>
95
-
96
- <tr>
97
82
  <td class="file high" data-value="apikeys.js"><a href="apikeys.js.html">apikeys.js</a></td>
98
83
  <td data-value="100" class="pic high">
99
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
@@ -125,17 +110,17 @@
125
110
 
126
111
  <tr>
127
112
  <td class="file high" data-value="automation.js"><a href="automation.js.html">automation.js</a></td>
128
- <td data-value="90.52" class="pic high">
129
- <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
113
+ <td data-value="92.5" class="pic high">
114
+ <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
130
115
  </td>
131
- <td data-value="90.52" class="pct high">90.52%</td>
132
- <td data-value="95" class="abs high">86/95</td>
133
- <td data-value="71.87" class="pct medium">71.87%</td>
134
- <td data-value="32" class="abs medium">23/32</td>
135
- <td data-value="92.85" class="pct high">92.85%</td>
136
- <td data-value="14" class="abs high">13/14</td>
137
- <td data-value="90.42" class="pct high">90.42%</td>
138
- <td data-value="94" class="abs high">85/94</td>
116
+ <td data-value="92.5" class="pct high">92.5%</td>
117
+ <td data-value="120" class="abs high">111/120</td>
118
+ <td data-value="73.52" class="pct medium">73.52%</td>
119
+ <td data-value="34" class="abs medium">25/34</td>
120
+ <td data-value="95.23" class="pct high">95.23%</td>
121
+ <td data-value="21" class="abs high">20/21</td>
122
+ <td data-value="92.17" class="pct high">92.17%</td>
123
+ <td data-value="115" class="abs high">106/115</td>
139
124
  </tr>
140
125
 
141
126
  <tr>
@@ -144,13 +129,13 @@
144
129
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
145
130
  </td>
146
131
  <td data-value="100" class="pct high">100%</td>
147
- <td data-value="7" class="abs high">7/7</td>
132
+ <td data-value="13" class="abs high">13/13</td>
148
133
  <td data-value="100" class="pct high">100%</td>
149
134
  <td data-value="0" class="abs high">0/0</td>
150
135
  <td data-value="100" class="pct high">100%</td>
151
- <td data-value="1" class="abs high">1/1</td>
136
+ <td data-value="2" class="abs high">2/2</td>
152
137
  <td data-value="100" class="pct high">100%</td>
153
- <td data-value="7" class="abs high">7/7</td>
138
+ <td data-value="13" class="abs high">13/13</td>
154
139
  </tr>
155
140
 
156
141
  <tr>
@@ -185,32 +170,32 @@
185
170
 
186
171
  <tr>
187
172
  <td class="file medium" data-value="datasource.js"><a href="datasource.js.html">datasource.js</a></td>
188
- <td data-value="59.68" class="pic medium">
189
- <div class="chart"><div class="cover-fill" style="width: 59%"></div><div class="cover-empty" style="width: 41%"></div></div>
173
+ <td data-value="61.48" class="pic medium">
174
+ <div class="chart"><div class="cover-fill" style="width: 61%"></div><div class="cover-empty" style="width: 39%"></div></div>
190
175
  </td>
191
- <td data-value="59.68" class="pct medium">59.68%</td>
192
- <td data-value="129" class="abs medium">77/129</td>
176
+ <td data-value="61.48" class="pct medium">61.48%</td>
177
+ <td data-value="135" class="abs medium">83/135</td>
193
178
  <td data-value="37.73" class="pct low">37.73%</td>
194
179
  <td data-value="53" class="abs low">20/53</td>
195
180
  <td data-value="57.89" class="pct medium">57.89%</td>
196
181
  <td data-value="19" class="abs medium">11/19</td>
197
- <td data-value="59.37" class="pct medium">59.37%</td>
198
- <td data-value="128" class="abs medium">76/128</td>
182
+ <td data-value="61.19" class="pct medium">61.19%</td>
183
+ <td data-value="134" class="abs medium">82/134</td>
199
184
  </tr>
200
185
 
201
186
  <tr>
202
- <td class="file low" data-value="dev.js"><a href="dev.js.html">dev.js</a></td>
203
- <td data-value="27.69" class="pic low">
204
- <div class="chart"><div class="cover-fill" style="width: 27%"></div><div class="cover-empty" style="width: 73%"></div></div>
187
+ <td class="file medium" data-value="dev.js"><a href="dev.js.html">dev.js</a></td>
188
+ <td data-value="60" class="pic medium">
189
+ <div class="chart"><div class="cover-fill" style="width: 60%"></div><div class="cover-empty" style="width: 40%"></div></div>
205
190
  </td>
206
- <td data-value="27.69" class="pct low">27.69%</td>
207
- <td data-value="65" class="abs low">18/65</td>
208
- <td data-value="0" class="pct low">0%</td>
209
- <td data-value="15" class="abs low">0/15</td>
210
- <td data-value="30" class="pct low">30%</td>
211
- <td data-value="10" class="abs low">3/10</td>
212
- <td data-value="27.69" class="pct low">27.69%</td>
213
- <td data-value="65" class="abs low">18/65</td>
191
+ <td data-value="60" class="pct medium">60%</td>
192
+ <td data-value="70" class="abs medium">42/70</td>
193
+ <td data-value="29.41" class="pct low">29.41%</td>
194
+ <td data-value="17" class="abs low">5/17</td>
195
+ <td data-value="50" class="pct medium">50%</td>
196
+ <td data-value="10" class="abs medium">5/10</td>
197
+ <td data-value="60" class="pct medium">60%</td>
198
+ <td data-value="70" class="abs medium">42/70</td>
214
199
  </tr>
215
200
 
216
201
  <tr>
@@ -230,17 +215,17 @@
230
215
 
231
216
  <tr>
232
217
  <td class="file high" data-value="layout.js"><a href="layout.js.html">layout.js</a></td>
233
- <td data-value="81.48" class="pic high">
234
- <div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
218
+ <td data-value="83.33" class="pic high">
219
+ <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
235
220
  </td>
236
- <td data-value="81.48" class="pct high">81.48%</td>
237
- <td data-value="27" class="abs high">22/27</td>
221
+ <td data-value="83.33" class="pct high">83.33%</td>
222
+ <td data-value="30" class="abs high">25/30</td>
238
223
  <td data-value="62.5" class="pct medium">62.5%</td>
239
224
  <td data-value="8" class="abs medium">5/8</td>
240
225
  <td data-value="66.66" class="pct medium">66.66%</td>
241
226
  <td data-value="3" class="abs medium">2/3</td>
242
- <td data-value="81.48" class="pct high">81.48%</td>
243
- <td data-value="27" class="abs high">22/27</td>
227
+ <td data-value="83.33" class="pct high">83.33%</td>
228
+ <td data-value="30" class="abs high">25/30</td>
244
229
  </tr>
245
230
 
246
231
  <tr>
@@ -290,17 +275,17 @@
290
275
 
291
276
  <tr>
292
277
  <td class="file high" data-value="role.js"><a href="role.js.html">role.js</a></td>
293
- <td data-value="87.03" class="pic high">
294
- <div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
278
+ <td data-value="91.93" class="pic high">
279
+ <div class="chart"><div class="cover-fill" style="width: 91%"></div><div class="cover-empty" style="width: 9%"></div></div>
295
280
  </td>
296
- <td data-value="87.03" class="pct high">87.03%</td>
297
- <td data-value="54" class="abs high">47/54</td>
298
- <td data-value="63.63" class="pct medium">63.63%</td>
299
- <td data-value="22" class="abs medium">14/22</td>
281
+ <td data-value="91.93" class="pct high">91.93%</td>
282
+ <td data-value="62" class="abs high">57/62</td>
283
+ <td data-value="83.33" class="pct high">83.33%</td>
284
+ <td data-value="24" class="abs high">20/24</td>
300
285
  <td data-value="71.42" class="pct medium">71.42%</td>
301
286
  <td data-value="7" class="abs medium">5/7</td>
302
- <td data-value="88.67" class="pct high">88.67%</td>
303
- <td data-value="53" class="abs high">47/53</td>
287
+ <td data-value="93.44" class="pct high">93.44%</td>
288
+ <td data-value="61" class="abs high">57/61</td>
304
289
  </tr>
305
290
 
306
291
  <tr>
@@ -324,13 +309,13 @@
324
309
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
325
310
  </td>
326
311
  <td data-value="100" class="pct high">100%</td>
327
- <td data-value="21" class="abs high">21/21</td>
328
- <td data-value="50" class="pct medium">50%</td>
329
- <td data-value="2" class="abs medium">1/2</td>
312
+ <td data-value="28" class="abs high">28/28</td>
313
+ <td data-value="100" class="pct high">100%</td>
314
+ <td data-value="4" class="abs high">4/4</td>
330
315
  <td data-value="100" class="pct high">100%</td>
331
316
  <td data-value="4" class="abs high">4/4</td>
332
317
  <td data-value="100" class="pct high">100%</td>
333
- <td data-value="21" class="abs high">21/21</td>
318
+ <td data-value="28" class="abs high">28/28</td>
334
319
  </tr>
335
320
 
336
321
  <tr>
@@ -401,7 +386,7 @@
401
386
  <div class='footer quiet pad2 space-top1 center small'>
402
387
  Code coverage generated by
403
388
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
404
- at Fri Jun 10 2022 13:42:57 GMT+0000 (Coordinated Universal Time)
389
+ at Mon Jun 13 2022 15:58:57 GMT+0000 (Coordinated Universal Time)
405
390
  </div>
406
391
  <script src="../../prettify.js"></script>
407
392
  <script>
@@ -85,13 +85,13 @@
85
85
  <a name='L20'></a><a href='#L20'>20</a>
86
86
  <a name='L21'></a><a href='#L21'>21</a>
87
87
  <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
89
- <span class="cline-any cline-yes">24x</span>
90
- <span class="cline-any cline-yes">24x</span>
91
- <span class="cline-any cline-yes">24x</span>
92
- <span class="cline-any cline-yes">24x</span>
88
+ <a name='L23'></a><a href='#L23'>23</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">27x</span>
89
+ <span class="cline-any cline-yes">27x</span>
90
+ <span class="cline-any cline-yes">27x</span>
91
+ <span class="cline-any cline-yes">27x</span>
92
+ <span class="cline-any cline-yes">27x</span>
93
93
  <span class="cline-any cline-neutral">&nbsp;</span>
94
- <span class="cline-any cline-yes">24x</span>
94
+ <span class="cline-any cline-yes">27x</span>
95
95
  <span class="cline-any cline-yes">1x</span>
96
96
  <span class="cline-any cline-yes">1x</span>
97
97
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -103,7 +103,7 @@
103
103
  <span class="cline-any cline-yes">1x</span>
104
104
  <span class="cline-any cline-neutral">&nbsp;</span>
105
105
  <span class="cline-any cline-neutral">&nbsp;</span>
106
- <span class="cline-any cline-yes">24x</span>
106
+ <span class="cline-any cline-yes">27x</span>
107
107
  <span class="cline-any cline-yes">1x</span>
108
108
  <span class="cline-any cline-yes">1x</span>
109
109
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -136,7 +136,7 @@ exports.find = async function (ctx) {
136
136
  <div class='footer quiet pad2 space-top1 center small'>
137
137
  Code coverage generated by
138
138
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
- at Fri Jun 10 2022 13:42:57 GMT+0000 (Coordinated Universal Time)
139
+ at Mon Jun 13 2022 15:58:57 GMT+0000 (Coordinated Universal Time)
140
140
  </div>
141
141
  <script src="../../prettify.js"></script>
142
142
  <script>