@budibase/server 0.9.172 → 0.9.173-alpha.3

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 (261) hide show
  1. package/__mocks__/{mysql.ts → mysql2.ts} +0 -0
  2. package/builder/assets/{index.dbc6728e.css → index.7469e1e4.css} +2 -2
  3. package/builder/assets/{index.9ab01cd4.js → index.b38aa4d6.js} +34 -34
  4. package/builder/assets/{vendor.54435e8f.js → vendor.278a305c.js} +1 -1
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +973 -849
  7. package/coverage/coverage-final.json +47 -46
  8. package/coverage/lcov-report/api/controllers/analytics.js.html +21 -9
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/application.js.html +186 -84
  11. package/coverage/lcov-report/api/controllers/auth.js.html +37 -10
  12. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/backup.js.html +6 -9
  14. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/dev.js.html +41 -17
  18. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/index.html +71 -71
  20. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/permission.js.html +7 -4
  24. package/coverage/lcov-report/api/controllers/query.js.html +129 -24
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.html +5 -5
  29. package/coverage/lcov-report/api/controllers/row/index.js.html +15 -15
  30. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/screen.js.html +9 -9
  34. package/coverage/lcov-report/api/controllers/script.js.html +12 -57
  35. package/coverage/lcov-report/api/controllers/table/index.html +28 -28
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +16 -37
  37. package/coverage/lcov-report/api/controllers/table/utils.js.html +279 -33
  38. package/coverage/lcov-report/api/controllers/templates.js.html +49 -13
  39. package/coverage/lcov-report/api/controllers/user.js.html +3 -3
  40. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.html +19 -19
  42. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/utils.js.html +8 -8
  44. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +54 -15
  45. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  46. package/coverage/lcov-report/api/index.html +1 -1
  47. package/coverage/lcov-report/api/index.js.html +3 -3
  48. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/application.js.html +5 -2
  51. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +26 -11
  59. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/index.html +9 -9
  61. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/query.js.html +9 -3
  67. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  78. package/coverage/lcov-report/automations/actions.js.html +31 -10
  79. package/coverage/lcov-report/automations/automationUtils.js.html +14 -86
  80. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  81. package/coverage/lcov-report/automations/index.html +37 -37
  82. package/coverage/lcov-report/automations/index.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/bash.js.html +10 -7
  84. package/coverage/lcov-report/automations/steps/createRow.js.html +2 -2
  85. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/deleteRow.js.html +8 -5
  87. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/executeQuery.js.html +10 -7
  89. package/coverage/lcov-report/automations/steps/executeScript.js.html +10 -7
  90. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/index.html +57 -57
  92. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +10 -7
  94. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -7
  95. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +10 -7
  96. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/updateRow.js.html +14 -14
  99. package/coverage/lcov-report/automations/steps/utils.js.html +10 -10
  100. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  101. package/coverage/lcov-report/automations/thread.js.html +54 -12
  102. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  111. package/coverage/lcov-report/automations/utils.js.html +28 -28
  112. package/coverage/lcov-report/constants/index.html +1 -1
  113. package/coverage/lcov-report/constants/index.js.html +5 -2
  114. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  115. package/coverage/lcov-report/constants/screens.js.html +2 -2
  116. package/coverage/lcov-report/db/client.js.html +1 -1
  117. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  118. package/coverage/lcov-report/db/index.html +1 -1
  119. package/coverage/lcov-report/db/index.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +12 -12
  121. package/coverage/lcov-report/db/linkedRows/index.html +18 -18
  122. package/coverage/lcov-report/db/linkedRows/index.js.html +47 -26
  123. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  124. package/coverage/lcov-report/db/newid.js.html +2 -2
  125. package/coverage/lcov-report/db/utils.js.html +17 -17
  126. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  127. package/coverage/lcov-report/events/index.html +1 -1
  128. package/coverage/lcov-report/events/index.js.html +1 -1
  129. package/coverage/lcov-report/events/utils.js.html +1 -1
  130. package/coverage/lcov-report/index.html +107 -107
  131. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  132. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  133. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  134. package/coverage/lcov-report/middleware/authorized.js.html +2 -2
  135. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  136. package/coverage/lcov-report/middleware/currentapp.js.html +52 -25
  137. package/coverage/lcov-report/middleware/index.html +15 -15
  138. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  139. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  140. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  141. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  142. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  143. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  144. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  145. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  146. package/coverage/lcov-report/utilities/global.js.html +27 -27
  147. package/coverage/lcov-report/utilities/index.html +32 -17
  148. package/coverage/lcov-report/utilities/index.js.html +4 -4
  149. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +29 -8
  150. package/coverage/lcov-report/utilities/queue/index.html +15 -15
  151. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  152. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  153. package/coverage/lcov-report/utilities/rowProcessor/index.html +14 -14
  154. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +38 -8
  155. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  156. package/coverage/lcov-report/utilities/scriptRunner.js.html +143 -0
  157. package/coverage/lcov-report/utilities/security.js.html +1 -1
  158. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  159. package/coverage/lcov-report/utilities/users.js.html +1 -1
  160. package/coverage/lcov-report/utilities/workerRequests.js.html +19 -19
  161. package/coverage/lcov.info +1692 -1452
  162. package/dist/api/controllers/analytics.js +4 -0
  163. package/dist/api/controllers/application.js +185 -171
  164. package/dist/api/controllers/auth.js +12 -2
  165. package/dist/api/controllers/backup.js +4 -4
  166. package/dist/api/controllers/deploy/index.js +3 -16
  167. package/dist/api/controllers/dev.js +17 -11
  168. package/dist/api/controllers/permission.js +1 -0
  169. package/dist/api/controllers/query.js +26 -8
  170. package/dist/api/controllers/row/ExternalRequest.js +46 -5
  171. package/dist/api/controllers/script.js +4 -16
  172. package/dist/api/controllers/table/index.js +5 -10
  173. package/dist/api/controllers/table/utils.js +83 -10
  174. package/dist/api/controllers/templates.js +18 -3
  175. package/dist/api/controllers/view/viewBuilder.js +15 -1
  176. package/dist/api/routes/application.js +1 -0
  177. package/dist/api/routes/dev.js +8 -4
  178. package/dist/api/routes/query.js +3 -1
  179. package/dist/api/routes/tests/utilities/TestFunctions.js +7 -9
  180. package/dist/automations/actions.js +9 -3
  181. package/dist/automations/automationUtils.js +8 -29
  182. package/dist/automations/steps/bash.js +2 -1
  183. package/dist/automations/steps/createRow.js +1 -1
  184. package/dist/automations/steps/deleteRow.js +2 -1
  185. package/dist/automations/steps/executeQuery.js +2 -1
  186. package/dist/automations/steps/executeScript.js +2 -1
  187. package/dist/automations/steps/outgoingWebhook.js +2 -1
  188. package/dist/automations/steps/queryRows.js +2 -1
  189. package/dist/automations/steps/sendSmtpEmail.js +2 -1
  190. package/dist/automations/steps/updateRow.js +6 -2
  191. package/dist/automations/thread.js +14 -3
  192. package/dist/constants/index.js +1 -0
  193. package/dist/db/linkedRows/index.js +9 -6
  194. package/dist/integrations/base/sql.js +4 -4
  195. package/dist/integrations/mysql.js +1 -1
  196. package/dist/integrations/utils.js +17 -1
  197. package/dist/middleware/currentapp.js +8 -2
  198. package/dist/package.json +7 -6
  199. package/dist/tests/utilities/TestConfiguration.js +34 -19
  200. package/dist/tests/utilities/controllers.js +1 -0
  201. package/dist/tsconfig.tsbuildinfo +1 -1
  202. package/dist/utilities/fileSystem/index.js +49 -33
  203. package/dist/utilities/global.js +1 -1
  204. package/dist/utilities/queue/inMemoryQueue.js +6 -0
  205. package/dist/utilities/rowProcessor/index.js +8 -0
  206. package/dist/utilities/scriptRunner.js +19 -0
  207. package/package.json +8 -7
  208. package/scripts/jestSetup.js +2 -0
  209. package/src/api/controllers/analytics.js +4 -0
  210. package/src/api/controllers/application.js +43 -9
  211. package/src/api/controllers/auth.js +12 -3
  212. package/src/api/controllers/backup.js +4 -5
  213. package/src/api/controllers/deploy/index.js +3 -18
  214. package/src/api/controllers/dev.js +16 -8
  215. package/src/api/controllers/permission.js +1 -0
  216. package/src/api/controllers/query.js +46 -11
  217. package/src/api/controllers/row/ExternalRequest.ts +53 -4
  218. package/src/api/controllers/script.js +4 -19
  219. package/src/api/controllers/table/index.js +5 -12
  220. package/src/api/controllers/table/utils.js +94 -12
  221. package/src/api/controllers/templates.js +17 -5
  222. package/src/api/controllers/view/tests/__snapshots__/viewBuilder.spec.js.snap +1 -1
  223. package/src/api/controllers/view/viewBuilder.js +14 -1
  224. package/src/api/routes/application.js +1 -0
  225. package/src/api/routes/dev.js +9 -4
  226. package/src/api/routes/query.js +3 -1
  227. package/src/api/routes/tests/auth.spec.js +1 -2
  228. package/src/api/routes/tests/permissions.spec.js +3 -0
  229. package/src/api/routes/tests/query.spec.js +2 -2
  230. package/src/api/routes/tests/routing.spec.js +24 -8
  231. package/src/api/routes/tests/user.spec.js +1 -1
  232. package/src/api/routes/tests/utilities/TestFunctions.js +7 -9
  233. package/src/api/routes/tests/webhook.spec.js +4 -1
  234. package/src/automations/actions.js +10 -3
  235. package/src/automations/automationUtils.js +7 -31
  236. package/src/automations/steps/bash.js +2 -1
  237. package/src/automations/steps/createRow.js +1 -1
  238. package/src/automations/steps/deleteRow.js +2 -1
  239. package/src/automations/steps/executeQuery.js +2 -1
  240. package/src/automations/steps/executeScript.js +2 -1
  241. package/src/automations/steps/outgoingWebhook.js +2 -1
  242. package/src/automations/steps/queryRows.js +2 -1
  243. package/src/automations/steps/sendSmtpEmail.js +2 -1
  244. package/src/automations/steps/updateRow.js +6 -6
  245. package/src/automations/thread.js +17 -3
  246. package/src/constants/index.js +1 -0
  247. package/src/db/linkedRows/index.js +14 -7
  248. package/src/integrations/base/sql.ts +11 -3
  249. package/src/integrations/mysql.ts +1 -1
  250. package/src/integrations/tests/mongo.spec.js +10 -6
  251. package/src/integrations/tests/mysql.spec.js +1 -1
  252. package/src/integrations/utils.ts +18 -0
  253. package/src/middleware/currentapp.js +11 -2
  254. package/src/middleware/tests/currentapp.spec.js +3 -3
  255. package/src/tests/utilities/TestConfiguration.js +47 -19
  256. package/src/tests/utilities/controllers.js +1 -0
  257. package/src/utilities/fileSystem/index.js +65 -43
  258. package/src/utilities/global.js +1 -1
  259. package/src/utilities/queue/inMemoryQueue.js +7 -0
  260. package/src/utilities/rowProcessor/index.js +10 -0
  261. package/src/utilities/scriptRunner.js +21 -0
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">85% </span>
26
+ <span class="strong">84.62% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>17/20</span>
28
+ <span class='fraction'>22/26</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/6</span>
35
+ <span class='fraction'>4/8</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">85% </span>
47
+ <span class="strong">84.62% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>17/20</span>
49
+ <span class='fraction'>22/26</span>
50
50
  </div>
51
51
 
52
52
 
@@ -100,7 +100,16 @@
100
100
  <a name='L41'></a><a href='#L41'>41</a>
101
101
  <a name='L42'></a><a href='#L42'>42</a>
102
102
  <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a>
108
+ <a name='L49'></a><a href='#L49'>49</a>
109
+ <a name='L50'></a><a href='#L50'>50</a>
110
+ <a name='L51'></a><a href='#L51'>51</a>
111
+ <a name='L52'></a><a href='#L52'>52</a>
112
+ <a name='L53'></a><a href='#L53'>53</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
104
113
  <span class="cline-any cline-yes">23x</span>
105
114
  <span class="cline-any cline-yes">23x</span>
106
115
  <span class="cline-any cline-yes">23x</span>
@@ -131,13 +140,22 @@
131
140
  <span class="cline-any cline-neutral">&nbsp;</span>
132
141
  <span class="cline-any cline-neutral">&nbsp;</span>
133
142
  <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
144
  <span class="cline-any cline-yes">1x</span>
135
145
  <span class="cline-any cline-no">&nbsp;</span>
136
146
  <span class="cline-any cline-neutral">&nbsp;</span>
137
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-yes">1x</span>
149
+ <span class="cline-any cline-yes">1x</span>
138
150
  <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-yes">1x</span>
153
+ <span class="cline-any cline-yes">1x</span>
139
154
  <span class="cline-any cline-yes">1x</span>
140
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-no">&nbsp;</span>
157
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
+ <span class="cline-any cline-yes">1x</span>
141
159
  <span class="cline-any cline-neutral">&nbsp;</span>
142
160
  <span class="cline-any cline-neutral">&nbsp;</span>
143
161
  <span class="cline-any cline-no">&nbsp;</span>
@@ -173,14 +191,23 @@ exports.fetchSelf = async ctx =&gt; {
173
191
  ...metadata,
174
192
  })
175
193
  } catch (err) {
194
+ let response
176
195
  // user didn't exist in app, don't pretend they do
177
196
  <span class="missing-if-branch" title="if path not taken" >I</span>if (user.roleId === BUILTIN_ROLE_IDS.PUBLIC) {
178
- <span class="cstat-no" title="statement not covered" > ctx.body = {}</span>
197
+ <span class="cstat-no" title="statement not covered" > response = {}</span>
179
198
  }
180
199
  // user has a role of some sort, return them
181
- else {
182
- ctx.body = user
200
+ else <span class="missing-if-branch" title="else path not taken" >E</span>if (err.status === 404) {
201
+ const metadata = {
202
+ _id: userId,
203
+ }
204
+ const dbResp = await db.put(metadata)
205
+ user._rev = dbResp.rev
206
+ response = user
207
+ } else {
208
+ <span class="cstat-no" title="statement not covered" > response = user</span>
183
209
  }
210
+ ctx.body = response
184
211
  }
185
212
  } else {
186
213
  <span class="cstat-no" title="statement not covered" > ctx.body = user</span>
@@ -193,7 +220,7 @@ exports.fetchSelf = async ctx =&gt; {
193
220
  <div class='footer quiet pad2 space-top1 center small'>
194
221
  Code coverage generated by
195
222
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
196
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
223
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
197
224
  </div>
198
225
  </div>
199
226
  <script src="../../prettify.js"></script>
@@ -736,7 +736,7 @@ exports.test = async function (ctx) {
736
736
  <div class='footer quiet pad2 space-top1 center small'>
737
737
  Code coverage generated by
738
738
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
739
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
739
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
740
740
  </div>
741
741
  </div>
742
742
  <script src="../../prettify.js"></script>
@@ -66,26 +66,23 @@
66
66
  <a name='L7'></a><a href='#L7'>7</a>
67
67
  <a name='L8'></a><a href='#L8'>8</a>
68
68
  <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
69
+ <a name='L10'></a><a href='#L10'>10</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
71
70
  <span class="cline-any cline-neutral">&nbsp;</span>
72
71
  <span class="cline-any cline-yes">23x</span>
73
72
  <span class="cline-any cline-yes">1x</span>
74
73
  <span class="cline-any cline-yes">1x</span>
75
74
  <span class="cline-any cline-yes">1x</span>
76
- <span class="cline-any cline-neutral">&nbsp;</span>
77
75
  <span class="cline-any cline-yes">1x</span>
78
76
  <span class="cline-any cline-yes">1x</span>
79
77
  <span class="cline-any cline-neutral">&nbsp;</span>
80
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { performBackup } = require("../../utilities/fileSystem")
78
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { streamBackup } = require("../../utilities/fileSystem")
81
79
  &nbsp;
82
80
  exports.exportAppDump = async function (ctx) {
83
81
  const { appId } = ctx.query
84
- const appname = decodeURI(ctx.query.appname)
85
- const backupIdentifier = `${appname}Backup${new Date().getTime()}.txt`
86
- &nbsp;
82
+ const appName = decodeURI(ctx.query.appname)
83
+ const backupIdentifier = `${appName}-export-${new Date().getTime()}.txt`
87
84
  ctx.attachment(backupIdentifier)
88
- ctx.body = await performBackup(appId, backupIdentifier)
85
+ ctx.body = await streamBackup(appId)
89
86
  }
90
87
  &nbsp;</pre></td></tr></table></pre>
91
88
 
@@ -94,7 +91,7 @@ exports.exportAppDump = async function (ctx) {
94
91
  <div class='footer quiet pad2 space-top1 center small'>
95
92
  Code coverage generated by
96
93
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
94
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
98
95
  </div>
99
96
  </div>
100
97
  <script src="../../prettify.js"></script>
@@ -397,7 +397,7 @@ exports.importApps = <span class="fstat-no" title="function not covered" >as</sp
397
397
  <div class='footer quiet pad2 space-top1 center small'>
398
398
  Code coverage generated by
399
399
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
400
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
400
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
401
401
  </div>
402
402
  </div>
403
403
  <script src="../../prettify.js"></script>
@@ -169,7 +169,7 @@ exports.fetchAppComponentDefinitions = async function (ctx) {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
172
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
172
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
173
173
  </div>
174
174
  </div>
175
175
  <script src="../../prettify.js"></script>
@@ -505,7 +505,7 @@ const buildSchemaHelper = <span class="fstat-no" title="function not covered" >a
505
505
  <div class='footer quiet pad2 space-top1 center small'>
506
506
  Code coverage generated by
507
507
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
508
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
508
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
509
509
  </div>
510
510
  </div>
511
511
  <script src="../../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">25.45% </span>
26
+ <span class="strong">29.31% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>14/55</span>
28
+ <span class='fraction'>17/58</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/10</span>
35
+ <span class='fraction'>0/11</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">30% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/7</span>
42
+ <span class='fraction'>3/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">25.93% </span>
47
+ <span class="strong">29.82% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>14/54</span>
49
+ <span class='fraction'>17/57</span>
50
50
  </div>
51
51
 
52
52
 
@@ -161,7 +161,15 @@
161
161
  <a name='L102'></a><a href='#L102'>102</a>
162
162
  <a name='L103'></a><a href='#L103'>103</a>
163
163
  <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
164
+ <a name='L105'></a><a href='#L105'>105</a>
165
+ <a name='L106'></a><a href='#L106'>106</a>
166
+ <a name='L107'></a><a href='#L107'>107</a>
167
+ <a name='L108'></a><a href='#L108'>108</a>
168
+ <a name='L109'></a><a href='#L109'>109</a>
169
+ <a name='L110'></a><a href='#L110'>110</a>
170
+ <a name='L111'></a><a href='#L111'>111</a>
171
+ <a name='L112'></a><a href='#L112'>112</a>
172
+ <a name='L113'></a><a href='#L113'>113</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
165
173
  <span class="cline-any cline-yes">23x</span>
166
174
  <span class="cline-any cline-yes">23x</span>
167
175
  <span class="cline-any cline-yes">23x</span>
@@ -184,6 +192,8 @@
184
192
  <span class="cline-any cline-neutral">&nbsp;</span>
185
193
  <span class="cline-any cline-neutral">&nbsp;</span>
186
194
  <span class="cline-any cline-neutral">&nbsp;</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
187
197
  <span class="cline-any cline-no">&nbsp;</span>
188
198
  <span class="cline-any cline-no">&nbsp;</span>
189
199
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -205,17 +215,23 @@
205
215
  <span class="cline-any cline-neutral">&nbsp;</span>
206
216
  <span class="cline-any cline-neutral">&nbsp;</span>
207
217
  <span class="cline-any cline-yes">23x</span>
218
+ <span class="cline-any cline-yes">46x</span>
208
219
  <span class="cline-any cline-no">&nbsp;</span>
209
220
  <span class="cline-any cline-neutral">&nbsp;</span>
210
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
223
  <span class="cline-any cline-yes">23x</span>
224
+ <span class="cline-any cline-yes">46x</span>
212
225
  <span class="cline-any cline-no">&nbsp;</span>
213
226
  <span class="cline-any cline-neutral">&nbsp;</span>
214
227
  <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
229
  <span class="cline-any cline-yes">23x</span>
230
+ <span class="cline-any cline-yes">46x</span>
216
231
  <span class="cline-any cline-no">&nbsp;</span>
217
232
  <span class="cline-any cline-neutral">&nbsp;</span>
218
233
  <span class="cline-any cline-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-neutral">&nbsp;</span>
219
235
  <span class="cline-any cline-yes">23x</span>
220
236
  <span class="cline-any cline-no">&nbsp;</span>
221
237
  <span class="cline-any cline-no">&nbsp;</span>
@@ -274,11 +290,13 @@ const { clearLock } = require("../../utilities/redis")
274
290
  const { Replication } = require("@budibase/auth").db
275
291
  const { DocumentTypes } = require("../../db/utils")
276
292
  &nbsp;
277
- async function <span class="fstat-no" title="function not covered" >redirect(</span>ctx, method) {
293
+ 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> {
278
294
  const { devPath } = <span class="cstat-no" title="statement not covered" >ctx.params</span>
279
295
  const queryString = <span class="cstat-no" title="statement not covered" >ctx.originalUrl.split("?")[1] || ""</span>
280
296
  const response = <span class="cstat-no" title="statement not covered" >await fetch(</span>
281
- checkSlashesInUrl(`${env.WORKER_URL}/api/global/${devPath}?${queryString}`),
297
+ checkSlashesInUrl(
298
+ `${env.WORKER_URL}/api/${path}/${devPath}?${queryString}`
299
+ ),
282
300
  request(
283
301
  ctx,
284
302
  {
@@ -308,16 +326,22 @@ async function <span class="fstat-no" title="function not covered" >redirect(</s
308
326
  <span class="cstat-no" title="statement not covered" > ctx.cookies</span>
309
327
  }
310
328
  &nbsp;
311
- exports.redirectGet = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
312
- <span class="cstat-no" title="statement not covered" > await redirect(ctx, "GET")</span>
329
+ exports.buildRedirectGet = path =&gt; {
330
+ return <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
331
+ <span class="cstat-no" title="statement not covered" > await redirect(ctx, "GET", path)</span>
332
+ }
313
333
  }
314
334
  &nbsp;
315
- exports.redirectPost = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
316
- <span class="cstat-no" title="statement not covered" > await redirect(ctx, "POST")</span>
335
+ exports.buildRedirectPost = path =&gt; {
336
+ return <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
337
+ <span class="cstat-no" title="statement not covered" > await redirect(ctx, "POST", path)</span>
338
+ }
317
339
  }
318
340
  &nbsp;
319
- exports.redirectDelete = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
320
- <span class="cstat-no" title="statement not covered" > await redirect(ctx, "DELETE")</span>
341
+ exports.buildRedirectDelete = path =&gt; {
342
+ return <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
343
+ <span class="cstat-no" title="statement not covered" > await redirect(ctx, "DELETE", path)</span>
344
+ }
321
345
  }
322
346
  &nbsp;
323
347
  exports.clearLock = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
@@ -376,7 +400,7 @@ exports.getBudibaseVersion = <span class="fstat-no" title="function not covered"
376
400
  <div class='footer quiet pad2 space-top1 center small'>
377
401
  Code coverage generated by
378
402
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
379
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
403
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
380
404
  </div>
381
405
  </div>
382
406
  <script src="../../prettify.js"></script>
@@ -130,7 +130,7 @@ exports.getDeployedApps = <span class="fstat-no" title="function not covered" >a
130
130
  <div class='footer quiet pad2 space-top1 center small'>
131
131
  Code coverage generated by
132
132
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
133
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
133
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
134
134
  </div>
135
135
  </div>
136
136
  <script src="../../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">78.71% </span>
26
+ <span class="strong">78.18% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>784/996</span>
28
+ <span class='fraction'>806/1031</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">55.67% </span>
33
+ <span class="strong">55.31% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>167/300</span>
35
+ <span class='fraction'>177/320</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">77.14% </span>
40
+ <span class="strong">77.4% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>108/140</span>
42
+ <span class='fraction'>113/146</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">78.92% </span>
47
+ <span class="strong">78.42% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>775/982</span>
49
+ <span class='fraction'>796/1015</span>
50
50
  </div>
51
51
 
52
52
 
@@ -73,18 +73,18 @@
73
73
  </tr>
74
74
  </thead>
75
75
  <tbody><tr>
76
- <td class="file medium" data-value="analytics.js"><a href="analytics.js.html">analytics.js</a></td>
77
- <td data-value="50" class="pic medium">
78
- <div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
76
+ <td class="file low" data-value="analytics.js"><a href="analytics.js.html">analytics.js</a></td>
77
+ <td data-value="46.15" class="pic low">
78
+ <div class="chart"><div class="cover-fill" style="width: 46%"></div><div class="cover-empty" style="width: 54%"></div></div>
79
79
  </td>
80
- <td data-value="50" class="pct medium">50%</td>
81
- <td data-value="12" class="abs medium">6/12</td>
82
- <td data-value="36.36" class="pct low">36.36%</td>
83
- <td data-value="11" class="abs low">4/11</td>
80
+ <td data-value="46.15" class="pct low">46.15%</td>
81
+ <td data-value="13" class="abs low">6/13</td>
82
+ <td data-value="30.77" class="pct low">30.77%</td>
83
+ <td data-value="13" class="abs low">4/13</td>
84
84
  <td data-value="50" class="pct medium">50%</td>
85
85
  <td data-value="2" class="abs medium">1/2</td>
86
- <td data-value="50" class="pct medium">50%</td>
87
- <td data-value="12" class="abs medium">6/12</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
88
  </tr>
89
89
 
90
90
  <tr>
@@ -104,32 +104,32 @@
104
104
 
105
105
  <tr>
106
106
  <td class="file high" data-value="application.js"><a href="application.js.html">application.js</a></td>
107
- <td data-value="86.45" class="pic high">
108
- <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
107
+ <td data-value="82.14" class="pic high">
108
+ <div class="chart"><div class="cover-fill" style="width: 82%"></div><div class="cover-empty" style="width: 18%"></div></div>
109
109
  </td>
110
- <td data-value="86.45" class="pct high">86.45%</td>
111
- <td data-value="155" class="abs high">134/155</td>
112
- <td data-value="59.68" class="pct medium">59.68%</td>
113
- <td data-value="62" class="abs medium">37/62</td>
114
- <td data-value="94.44" class="pct high">94.44%</td>
115
- <td data-value="18" class="abs high">17/18</td>
116
- <td data-value="87.01" class="pct high">87.01%</td>
117
- <td data-value="154" class="abs high">134/154</td>
110
+ <td data-value="82.14" class="pct high">82.14%</td>
111
+ <td data-value="168" class="abs high">138/168</td>
112
+ <td data-value="59.09" class="pct medium">59.09%</td>
113
+ <td data-value="66" class="abs medium">39/66</td>
114
+ <td data-value="85" class="pct high">85%</td>
115
+ <td data-value="20" class="abs high">17/20</td>
116
+ <td data-value="82.63" class="pct high">82.63%</td>
117
+ <td data-value="167" class="abs high">138/167</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
121
121
  <td class="file high" data-value="auth.js"><a href="auth.js.html">auth.js</a></td>
122
- <td data-value="85" class="pic high">
123
- <div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
122
+ <td data-value="84.62" class="pic high">
123
+ <div class="chart"><div class="cover-fill" style="width: 84%"></div><div class="cover-empty" style="width: 16%"></div></div>
124
124
  </td>
125
- <td data-value="85" class="pct high">85%</td>
126
- <td data-value="20" class="abs high">17/20</td>
125
+ <td data-value="84.62" class="pct high">84.62%</td>
126
+ <td data-value="26" class="abs high">22/26</td>
127
127
  <td data-value="50" class="pct medium">50%</td>
128
- <td data-value="6" class="abs medium">3/6</td>
128
+ <td data-value="8" class="abs medium">4/8</td>
129
129
  <td data-value="100" class="pct high">100%</td>
130
130
  <td data-value="1" class="abs high">1/1</td>
131
- <td data-value="85" class="pct high">85%</td>
132
- <td data-value="20" class="abs high">17/20</td>
131
+ <td data-value="84.62" class="pct high">84.62%</td>
132
+ <td data-value="26" class="abs high">22/26</td>
133
133
  </tr>
134
134
 
135
135
  <tr>
@@ -209,17 +209,17 @@
209
209
 
210
210
  <tr>
211
211
  <td class="file low" data-value="dev.js"><a href="dev.js.html">dev.js</a></td>
212
- <td data-value="25.45" class="pic low">
213
- <div class="chart"><div class="cover-fill" style="width: 25%"></div><div class="cover-empty" style="width: 75%"></div></div>
212
+ <td data-value="29.31" class="pic low">
213
+ <div class="chart"><div class="cover-fill" style="width: 29%"></div><div class="cover-empty" style="width: 71%"></div></div>
214
214
  </td>
215
- <td data-value="25.45" class="pct low">25.45%</td>
216
- <td data-value="55" class="abs low">14/55</td>
215
+ <td data-value="29.31" class="pct low">29.31%</td>
216
+ <td data-value="58" class="abs low">17/58</td>
217
217
  <td data-value="0" class="pct low">0%</td>
218
- <td data-value="10" class="abs low">0/10</td>
219
- <td data-value="0" class="pct low">0%</td>
220
- <td data-value="7" class="abs low">0/7</td>
221
- <td data-value="25.93" class="pct low">25.93%</td>
222
- <td data-value="54" class="abs low">14/54</td>
218
+ <td data-value="11" class="abs low">0/11</td>
219
+ <td data-value="30" class="pct low">30%</td>
220
+ <td data-value="10" class="abs low">3/10</td>
221
+ <td data-value="29.82" class="pct low">29.82%</td>
222
+ <td data-value="57" class="abs low">17/57</td>
223
223
  </tr>
224
224
 
225
225
  <tr>
@@ -289,8 +289,8 @@
289
289
  </td>
290
290
  <td data-value="98.78" class="pct high">98.78%</td>
291
291
  <td data-value="82" class="abs high">81/82</td>
292
- <td data-value="90.63" class="pct high">90.63%</td>
293
- <td data-value="32" class="abs high">29/32</td>
292
+ <td data-value="90.91" class="pct high">90.91%</td>
293
+ <td data-value="33" class="abs high">30/33</td>
294
294
  <td data-value="100" class="pct high">100%</td>
295
295
  <td data-value="13" class="abs high">13/13</td>
296
296
  <td data-value="98.72" class="pct high">98.72%</td>
@@ -299,17 +299,17 @@
299
299
 
300
300
  <tr>
301
301
  <td class="file medium" data-value="query.js"><a href="query.js.html">query.js</a></td>
302
- <td data-value="79.55" class="pic medium">
303
- <div class="chart"><div class="cover-fill" style="width: 79%"></div><div class="cover-empty" style="width: 21%"></div></div>
302
+ <td data-value="77.78" class="pic medium">
303
+ <div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
304
304
  </td>
305
- <td data-value="79.55" class="pct medium">79.55%</td>
306
- <td data-value="88" class="abs medium">70/88</td>
307
- <td data-value="54.05" class="pct medium">54.05%</td>
308
- <td data-value="37" class="abs medium">20/37</td>
309
- <td data-value="100" class="pct high">100%</td>
310
- <td data-value="10" class="abs high">10/10</td>
311
- <td data-value="79.31" class="pct medium">79.31%</td>
312
- <td data-value="87" class="abs medium">69/87</td>
305
+ <td data-value="77.78" class="pct medium">77.78%</td>
306
+ <td data-value="99" class="abs medium">77/99</td>
307
+ <td data-value="53.66" class="pct medium">53.66%</td>
308
+ <td data-value="41" class="abs medium">22/41</td>
309
+ <td data-value="92.31" class="pct high">92.31%</td>
310
+ <td data-value="13" class="abs high">12/13</td>
311
+ <td data-value="78.13" class="pct medium">78.13%</td>
312
+ <td data-value="96" class="abs medium">75/96</td>
313
313
  </tr>
314
314
 
315
315
  <tr>
@@ -359,32 +359,32 @@
359
359
 
360
360
  <tr>
361
361
  <td class="file low" data-value="script.js"><a href="script.js.html">script.js</a></td>
362
- <td data-value="30.77" class="pic low">
363
- <div class="chart"><div class="cover-fill" style="width: 30%"></div><div class="cover-empty" style="width: 70%"></div></div>
362
+ <td data-value="42.86" class="pic low">
363
+ <div class="chart"><div class="cover-fill" style="width: 42%"></div><div class="cover-empty" style="width: 58%"></div></div>
364
364
  </td>
365
- <td data-value="30.77" class="pct low">30.77%</td>
366
- <td data-value="13" class="abs low">4/13</td>
365
+ <td data-value="42.86" class="pct low">42.86%</td>
366
+ <td data-value="7" class="abs low">3/7</td>
367
367
  <td data-value="100" class="pct high">100%</td>
368
368
  <td data-value="0" class="abs high">0/0</td>
369
369
  <td data-value="0" class="pct low">0%</td>
370
- <td data-value="4" class="abs low">0/4</td>
371
- <td data-value="30.77" class="pct low">30.77%</td>
372
- <td data-value="13" class="abs low">4/13</td>
370
+ <td data-value="2" class="abs low">0/2</td>
371
+ <td data-value="42.86" class="pct low">42.86%</td>
372
+ <td data-value="7" class="abs low">3/7</td>
373
373
  </tr>
374
374
 
375
375
  <tr>
376
376
  <td class="file high" data-value="templates.js"><a href="templates.js.html">templates.js</a></td>
377
- <td data-value="100" class="pic high">
378
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
377
+ <td data-value="80" class="pic high">
378
+ <div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
379
379
  </td>
380
- <td data-value="100" class="pct high">100%</td>
381
- <td data-value="8" class="abs high">8/8</td>
382
- <td data-value="100" class="pct high">100%</td>
383
- <td data-value="1" class="abs high">1/1</td>
380
+ <td data-value="80" class="pct high">80%</td>
381
+ <td data-value="15" class="abs high">12/15</td>
382
+ <td data-value="71.43" class="pct medium">71.43%</td>
383
+ <td data-value="7" class="abs medium">5/7</td>
384
384
  <td data-value="100" class="pct high">100%</td>
385
385
  <td data-value="1" class="abs high">1/1</td>
386
- <td data-value="100" class="pct high">100%</td>
387
- <td data-value="8" class="abs high">8/8</td>
386
+ <td data-value="80" class="pct high">80%</td>
387
+ <td data-value="15" class="abs high">12/15</td>
388
388
  </tr>
389
389
 
390
390
  <tr>
@@ -425,7 +425,7 @@
425
425
  <div class='footer quiet pad2 space-top1 center small'>
426
426
  Code coverage generated by
427
427
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
428
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
428
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
429
429
  </div>
430
430
  </div>
431
431
  <script src="../../prettify.js"></script>
@@ -100,7 +100,7 @@ exports.find = async function (ctx) {
100
100
  <div class='footer quiet pad2 space-top1 center small'>
101
101
  Code coverage generated by
102
102
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
103
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
103
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
104
104
  </div>
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
@@ -217,7 +217,7 @@ exports.destroy = async function (ctx) {
217
217
  <div class='footer quiet pad2 space-top1 center small'>
218
218
  Code coverage generated by
219
219
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
220
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
220
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
221
221
  </div>
222
222
  </div>
223
223
  <script src="../../prettify.js"></script>