@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">90% </span>
26
+ <span class="strong">85.07% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>54/60</span>
28
+ <span class='fraction'>57/67</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">57.89% </span>
33
+ <span class="strong">57.14% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>11/19</span>
35
+ <span class='fraction'>12/21</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">90% </span>
47
+ <span class="strong">85.07% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>54/60</span>
49
+ <span class='fraction'>57/67</span>
50
50
  </div>
51
51
 
52
52
 
@@ -171,7 +171,21 @@
171
171
  <a name='L112'></a><a href='#L112'>112</a>
172
172
  <a name='L113'></a><a href='#L113'>113</a>
173
173
  <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
174
+ <a name='L115'></a><a href='#L115'>115</a>
175
+ <a name='L116'></a><a href='#L116'>116</a>
176
+ <a name='L117'></a><a href='#L117'>117</a>
177
+ <a name='L118'></a><a href='#L118'>118</a>
178
+ <a name='L119'></a><a href='#L119'>119</a>
179
+ <a name='L120'></a><a href='#L120'>120</a>
180
+ <a name='L121'></a><a href='#L121'>121</a>
181
+ <a name='L122'></a><a href='#L122'>122</a>
182
+ <a name='L123'></a><a href='#L123'>123</a>
183
+ <a name='L124'></a><a href='#L124'>124</a>
184
+ <a name='L125'></a><a href='#L125'>125</a>
185
+ <a name='L126'></a><a href='#L126'>126</a>
186
+ <a name='L127'></a><a href='#L127'>127</a>
187
+ <a name='L128'></a><a href='#L128'>128</a>
188
+ <a name='L129'></a><a href='#L129'>129</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
175
189
  <span class="cline-any cline-yes">33x</span>
176
190
  <span class="cline-any cline-yes">33x</span>
177
191
  <span class="cline-any cline-yes">33x</span>
@@ -183,6 +197,7 @@
183
197
  <span class="cline-any cline-yes">33x</span>
184
198
  <span class="cline-any cline-neutral">&nbsp;</span>
185
199
  <span class="cline-any cline-yes">33x</span>
200
+ <span class="cline-any cline-yes">33x</span>
186
201
  <span class="cline-any cline-neutral">&nbsp;</span>
187
202
  <span class="cline-any cline-neutral">&nbsp;</span>
188
203
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -242,6 +257,12 @@
242
257
  <span class="cline-any cline-yes">7x</span>
243
258
  <span class="cline-any cline-yes">7x</span>
244
259
  <span class="cline-any cline-yes">6x</span>
260
+ <span class="cline-any cline-yes">6x</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-yes">5x</span>
263
+ <span class="cline-any cline-no">&nbsp;</span>
264
+ <span class="cline-any cline-no">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
266
  <span class="cline-any cline-yes">5x</span>
246
267
  <span class="cline-any cline-yes">5x</span>
247
268
  <span class="cline-any cline-yes">5x</span>
@@ -260,9 +281,16 @@
260
281
  <span class="cline-any cline-neutral">&nbsp;</span>
261
282
  <span class="cline-any cline-neutral">&nbsp;</span>
262
283
  <span class="cline-any cline-yes">5x</span>
263
- <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
285
  <span class="cline-any cline-neutral">&nbsp;</span>
265
286
  <span class="cline-any cline-yes">5x</span>
287
+ <span class="cline-any cline-no">&nbsp;</span>
288
+ <span class="cline-any cline-no">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-no">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
294
  <span class="cline-any cline-yes">5x</span>
267
295
  <span class="cline-any cline-neutral">&nbsp;</span>
268
296
  <span class="cline-any cline-no">&nbsp;</span>
@@ -297,6 +325,7 @@ const env = require("../environment")
297
325
  const usage = require("../utilities/usageQuota")
298
326
  &nbsp;
299
327
  const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId
328
+ const STOPPED_STATUS = { success: false, status: "STOPPED" }
300
329
  &nbsp;
301
330
  /**
302
331
  * The automation orchestrator is a class responsible for executing automations.
@@ -355,7 +384,13 @@ class Orchestrator {
355
384
  async execute() {
356
385
  let automation = this._automation
357
386
  const app = await this.getApp()
387
+ let stopped = false
358
388
  for (let step of automation.definition.steps) {
389
+ // execution stopped, record state for that
390
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (stopped) {
391
+ <span class="cstat-no" title="statement not covered" > this.updateExecutionOutput(step.id, step.stepId, {}, STOPPED_STATUS)</span>
392
+ <span class="cstat-no" title="statement not covered" > continue</span>
393
+ }
359
394
  let stepFn = await this.getStepFunctionality(step.stepId)
360
395
  step.inputs = await processObject(step.inputs, this._context)
361
396
  step.inputs = automationUtils.cleanInputValues(
@@ -373,10 +408,17 @@ class Orchestrator {
373
408
  context: this._context,
374
409
  })
375
410
  })
411
+ this._context.steps.push(outputs)
412
+ // if filter causes us to stop execution don't break the loop, set a var
413
+ // so that we can finish iterating through the steps and record that it stopped
376
414
  <span class="missing-if-branch" title="if path not taken" >I</span>if (step.stepId === FILTER_STEP_ID &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!outputs.success)</span> {
377
- <span class="cstat-no" title="statement not covered" > break</span>
415
+ <span class="cstat-no" title="statement not covered" > stopped = true</span>
416
+ <span class="cstat-no" title="statement not covered" > this.updateExecutionOutput(step.id, step.stepId, step.inputs, {</span>
417
+ ...outputs,
418
+ ...STOPPED_STATUS,
419
+ })
420
+ <span class="cstat-no" title="statement not covered" > continue</span>
378
421
  }
379
- this._context.steps.push(outputs)
380
422
  this.updateExecutionOutput(step.id, step.stepId, step.inputs, outputs)
381
423
  } catch (err) {
382
424
  <span class="cstat-no" title="statement not covered" > console.error(`Automation error - ${step.stepId} - ${err}`)</span>
@@ -386,7 +428,7 @@ class Orchestrator {
386
428
  &nbsp;
387
429
  // Increment quota for automation runs
388
430
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!env.SELF_HOSTED &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!isDevAppID(this._appId))</span> {
389
- <span class="cstat-no" title="statement not covered" > usage.update(usage.Properties.AUTOMATION, 1)</span>
431
+ <span class="cstat-no" title="statement not covered" > await usage.update(usage.Properties.AUTOMATION, 1)</span>
390
432
  }
391
433
  return this.executionOutput
392
434
  }
@@ -406,7 +448,7 @@ module.exports = async job =&gt; {
406
448
  <div class='footer quiet pad2 space-top1 center small'>
407
449
  Code coverage generated by
408
450
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
409
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
451
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
410
452
  </div>
411
453
  </div>
412
454
  <script src="../prettify.js"></script>
@@ -160,7 +160,7 @@
160
160
  <div class='footer quiet pad2 space-top1 center small'>
161
161
  Code coverage generated by
162
162
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
163
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
163
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
164
164
  </div>
165
165
  </div>
166
166
  <script src="../../prettify.js"></script>
@@ -157,7 +157,7 @@
157
157
  <div class='footer quiet pad2 space-top1 center small'>
158
158
  Code coverage generated by
159
159
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
160
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
160
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
161
161
  </div>
162
162
  </div>
163
163
  <script src="../../prettify.js"></script>
@@ -185,7 +185,7 @@
185
185
  <div class='footer quiet pad2 space-top1 center small'>
186
186
  Code coverage generated by
187
187
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
188
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
188
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
189
189
  </div>
190
190
  </div>
191
191
  <script src="../../prettify.js"></script>
@@ -109,7 +109,7 @@ exports.definitions = {
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
112
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
112
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  </div>
115
115
  <script src="../../prettify.js"></script>
@@ -160,7 +160,7 @@
160
160
  <div class='footer quiet pad2 space-top1 center small'>
161
161
  Code coverage generated by
162
162
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
163
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
163
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
164
164
  </div>
165
165
  </div>
166
166
  <script src="../../prettify.js"></script>
@@ -184,7 +184,7 @@
184
184
  <div class='footer quiet pad2 space-top1 center small'>
185
185
  Code coverage generated by
186
186
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
187
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
187
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
188
188
  </div>
189
189
  </div>
190
190
  <script src="../../prettify.js"></script>
@@ -184,7 +184,7 @@
184
184
  <div class='footer quiet pad2 space-top1 center small'>
185
185
  Code coverage generated by
186
186
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
187
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
187
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
188
188
  </div>
189
189
  </div>
190
190
  <script src="../../prettify.js"></script>
@@ -172,7 +172,7 @@
172
172
  <div class='footer quiet pad2 space-top1 center small'>
173
173
  Code coverage generated by
174
174
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
175
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
175
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
176
176
  </div>
177
177
  </div>
178
178
  <script src="../../prettify.js"></script>
@@ -385,7 +385,7 @@ exports.TRIGGER_DEFINITIONS = TRIGGER_DEFINITIONS
385
385
  <div class='footer quiet pad2 space-top1 center small'>
386
386
  Code coverage generated by
387
387
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
388
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
388
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
389
389
  </div>
390
390
  </div>
391
391
  <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">66.13% </span>
26
+ <span class="strong">79.03% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>41/62</span>
28
+ <span class='fraction'>49/62</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.67% </span>
33
+ <span class="strong">80.56% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>24/36</span>
35
+ <span class='fraction'>29/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">62.5% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>5/8</span>
42
+ <span class='fraction'>8/8</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">66.13% </span>
47
+ <span class="strong">79.03% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>41/62</span>
49
+ <span class='fraction'>49/62</span>
50
50
  </div>
51
51
 
52
52
 
@@ -260,15 +260,15 @@
260
260
  <span class="cline-any cline-neutral">&nbsp;</span>
261
261
  <span class="cline-any cline-neutral">&nbsp;</span>
262
262
  <span class="cline-any cline-yes">33x</span>
263
- <span class="cline-any cline-no">&nbsp;</span>
264
- <span class="cline-any cline-no">&nbsp;</span>
265
- <span class="cline-any cline-no">&nbsp;</span>
263
+ <span class="cline-any cline-yes">185x</span>
264
+ <span class="cline-any cline-yes">185x</span>
265
+ <span class="cline-any cline-yes">185x</span>
266
266
  <span class="cline-any cline-no">&nbsp;</span>
267
267
  <span class="cline-any cline-no">&nbsp;</span>
268
268
  <span class="cline-any cline-no">&nbsp;</span>
269
269
  <span class="cline-any cline-neutral">&nbsp;</span>
270
270
  <span class="cline-any cline-neutral">&nbsp;</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
271
+ <span class="cline-any cline-yes">185x</span>
272
272
  <span class="cline-any cline-neutral">&nbsp;</span>
273
273
  <span class="cline-any cline-neutral">&nbsp;</span>
274
274
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -277,16 +277,16 @@
277
277
  <span class="cline-any cline-neutral">&nbsp;</span>
278
278
  <span class="cline-any cline-neutral">&nbsp;</span>
279
279
  <span class="cline-any cline-yes">33x</span>
280
- <span class="cline-any cline-no">&nbsp;</span>
280
+ <span class="cline-any cline-yes">1x</span>
281
281
  <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-no">&nbsp;</span>
282
+ <span class="cline-any cline-yes">1x</span>
283
283
  <span class="cline-any cline-neutral">&nbsp;</span>
284
284
  <span class="cline-any cline-neutral">&nbsp;</span>
285
285
  <span class="cline-any cline-neutral">&nbsp;</span>
286
286
  <span class="cline-any cline-neutral">&nbsp;</span>
287
287
  <span class="cline-any cline-neutral">&nbsp;</span>
288
288
  <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-no">&nbsp;</span>
289
+ <span class="cline-any cline-yes">1x</span>
290
290
  <span class="cline-any cline-neutral">&nbsp;</span>
291
291
  <span class="cline-any cline-no">&nbsp;</span>
292
292
  <span class="cline-any cline-no">&nbsp;</span>
@@ -303,7 +303,7 @@
303
303
  <span class="cline-any cline-no">&nbsp;</span>
304
304
  <span class="cline-any cline-no">&nbsp;</span>
305
305
  <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-no">&nbsp;</span>
306
+ <span class="cline-any cline-yes">1x</span>
307
307
  <span class="cline-any cline-neutral">&nbsp;</span>
308
308
  <span class="cline-any cline-neutral">&nbsp;</span>
309
309
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -418,16 +418,16 @@ exports.updateTestHistory = async (appId, automation, history) =&gt; {
418
418
  }
419
419
  &nbsp;
420
420
  // end the repetition and the job itself
421
- exports.disableAllCrons = <span class="fstat-no" title="function not covered" >as</span>ync appId =&gt; {
422
- const promises = <span class="cstat-no" title="statement not covered" >[]</span>
423
- const jobs = <span class="cstat-no" title="statement not covered" >await queue.getRepeatableJobs()</span>
424
- <span class="cstat-no" title="statement not covered" > for (let job of jobs) {</span>
421
+ exports.disableAllCrons = async appId =&gt; {
422
+ const promises = []
423
+ const jobs = await queue.getRepeatableJobs()
424
+ for (let job of jobs) {
425
425
  <span class="cstat-no" title="statement not covered" > if (job.key.includes(`${appId}_cron`)) {</span>
426
426
  <span class="cstat-no" title="statement not covered" > promises.push(queue.removeRepeatableByKey(job.key))</span>
427
427
  <span class="cstat-no" title="statement not covered" > promises.push(queue.removeJobs(job.id))</span>
428
428
  }
429
429
  }
430
- <span class="cstat-no" title="statement not covered" > return Promise.all(promises)</span>
430
+ return Promise.all(promises)
431
431
  }
432
432
  &nbsp;
433
433
  /**
@@ -435,17 +435,17 @@ exports.disableAllCrons = <span class="fstat-no" title="function not covered" >a
435
435
  * @param {string} appId The ID of the app in which we are checking for webhooks
436
436
  * @param {object|undefined} automation The automation object to be updated.
437
437
  */
438
- exports.enableCronTrigger = <span class="fstat-no" title="function not covered" >as</span>ync (appId, automation) =&gt; {
439
- const trigger = <span class="cstat-no" title="statement not covered" >automation ? automation.definition.trigger : null</span>
440
- function <span class="fstat-no" title="function not covered" >isCronTrigger(</span>auto) {
441
- <span class="cstat-no" title="statement not covered" > return (</span>
438
+ exports.enableCronTrigger = async (appId, automation) =&gt; {
439
+ const trigger = automation ? automation.definition.trigger : <span class="branch-1 cbranch-no" title="branch not covered" >null</span>
440
+ function isCronTrigger(auto) {
441
+ return (
442
442
  auto &amp;&amp;
443
443
  auto.definition.trigger &amp;&amp;
444
444
  auto.definition.trigger.stepId === CRON_STEP_ID
445
445
  )
446
446
  }
447
447
  // need to create cron job
448
- <span class="cstat-no" title="statement not covered" > if (isCronTrigger(automation)) {</span>
448
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (isCronTrigger(automation)) {
449
449
  // make a job id rather than letting Bull decide, makes it easier to handle on way out
450
450
  const jobId = <span class="cstat-no" title="statement not covered" >`${appId}_cron_${newid()}`</span>
451
451
  const job = <span class="cstat-no" title="statement not covered" >await queue.add(</span>
@@ -462,7 +462,7 @@ exports.enableCronTrigger = <span class="fstat-no" title="function not covered"
462
462
  <span class="cstat-no" title="statement not covered" > automation._id = response.id</span>
463
463
  <span class="cstat-no" title="statement not covered" > automation._rev = response.rev</span>
464
464
  }
465
- <span class="cstat-no" title="statement not covered" > return automation</span>
465
+ return automation
466
466
  }
467
467
  &nbsp;
468
468
  /**
@@ -541,7 +541,7 @@ exports.checkForWebhooks = async ({ appId, oldAuto, newAuto }) =&gt; {
541
541
  <div class='footer quiet pad2 space-top1 center small'>
542
542
  Code coverage generated by
543
543
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
544
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
544
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
545
545
  </div>
546
546
  </div>
547
547
  <script src="../prettify.js"></script>
@@ -125,7 +125,7 @@
125
125
  <div class='footer quiet pad2 space-top1 center small'>
126
126
  Code coverage generated by
127
127
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
128
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
128
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
129
129
  </div>
130
130
  </div>
131
131
  <script src="../prettify.js"></script>
@@ -212,7 +212,8 @@
212
212
  <a name='L153'></a><a href='#L153'>153</a>
213
213
  <a name='L154'></a><a href='#L154'>154</a>
214
214
  <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">39x</span>
216
217
  <span class="cline-any cline-yes">39x</span>
217
218
  <span class="cline-any cline-yes">39x</span>
218
219
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -258,6 +259,7 @@
258
259
  <span class="cline-any cline-neutral">&nbsp;</span>
259
260
  <span class="cline-any cline-neutral">&nbsp;</span>
260
261
  <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
263
  <span class="cline-any cline-yes">39x</span>
262
264
  <span class="cline-any cline-neutral">&nbsp;</span>
263
265
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -411,6 +413,7 @@ exports.FieldTypes = {
411
413
  FORMULA: "formula",
412
414
  AUTO: "auto",
413
415
  JSON: "json",
416
+ INTERNAL: "internal",
414
417
  }
415
418
  &nbsp;
416
419
  exports.RelationshipTypes = {
@@ -529,7 +532,7 @@ exports.ObjectStoreBuckets = ObjectStoreBuckets
529
532
  <div class='footer quiet pad2 space-top1 center small'>
530
533
  Code coverage generated by
531
534
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
532
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
535
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
533
536
  </div>
534
537
  </div>
535
538
  <script src="../prettify.js"></script>
@@ -523,7 +523,7 @@ module.exports = {
523
523
  <div class='footer quiet pad2 space-top1 center small'>
524
524
  Code coverage generated by
525
525
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
526
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
526
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
527
527
  </div>
528
528
  </div>
529
529
  <script src="../prettify.js"></script>
@@ -106,7 +106,7 @@
106
106
  <a name='L47'></a><a href='#L47'>47</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
107
107
  <span class="cline-any cline-yes">33x</span>
108
108
  <span class="cline-any cline-neutral">&nbsp;</span>
109
- <span class="cline-any cline-yes">191x</span>
109
+ <span class="cline-any cline-yes">197x</span>
110
110
  <span class="cline-any cline-neutral">&nbsp;</span>
111
111
  <span class="cline-any cline-neutral">&nbsp;</span>
112
112
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -202,7 +202,7 @@ exports.createHomeScreen = () =&gt; ({
202
202
  <div class='footer quiet pad2 space-top1 center small'>
203
203
  Code coverage generated by
204
204
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
205
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
205
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
206
206
  </div>
207
207
  </div>
208
208
  <script src="../prettify.js"></script>
@@ -157,7 +157,7 @@ module.exports = Pouch
157
157
  <div class='footer quiet pad2 space-top1 center small'>
158
158
  Code coverage generated by
159
159
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
160
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
160
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
161
161
  </div>
162
162
  </div>
163
163
  <script src="../prettify.js"></script>
@@ -208,7 +208,7 @@ exports.runView = <span class="fstat-no" title="function not covered" >as</span>
208
208
  <div class='footer quiet pad2 space-top1 center small'>
209
209
  Code coverage generated by
210
210
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
211
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
211
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
212
212
  </div>
213
213
  </div>
214
214
  <script src="../prettify.js"></script>
@@ -155,7 +155,7 @@
155
155
  <div class='footer quiet pad2 space-top1 center small'>
156
156
  Code coverage generated by
157
157
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
158
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
158
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
159
159
  </div>
160
160
  </div>
161
161
  <script src="../prettify.js"></script>
@@ -73,7 +73,7 @@ module.exports = client
73
73
  <div class='footer quiet pad2 space-top1 center small'>
74
74
  Code coverage generated by
75
75
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
76
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
76
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
77
77
  </div>
78
78
  </div>
79
79
  <script src="../prettify.js"></script>
@@ -580,12 +580,12 @@
580
580
  <span class="cline-any cline-neutral">&nbsp;</span>
581
581
  <span class="cline-any cline-neutral">&nbsp;</span>
582
582
  <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-yes">188x</span>
584
- <span class="cline-any cline-yes">188x</span>
585
- <span class="cline-any cline-yes">188x</span>
586
- <span class="cline-any cline-yes">188x</span>
587
- <span class="cline-any cline-yes">188x</span>
588
- <span class="cline-any cline-yes">188x</span>
583
+ <span class="cline-any cline-yes">187x</span>
584
+ <span class="cline-any cline-yes">187x</span>
585
+ <span class="cline-any cline-yes">187x</span>
586
+ <span class="cline-any cline-yes">187x</span>
587
+ <span class="cline-any cline-yes">187x</span>
588
+ <span class="cline-any cline-yes">187x</span>
589
589
  <span class="cline-any cline-neutral">&nbsp;</span>
590
590
  <span class="cline-any cline-neutral">&nbsp;</span>
591
591
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -609,16 +609,16 @@
609
609
  <span class="cline-any cline-neutral">&nbsp;</span>
610
610
  <span class="cline-any cline-neutral">&nbsp;</span>
611
611
  <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-yes">181x</span>
612
+ <span class="cline-any cline-yes">180x</span>
613
613
  <span class="cline-any cline-yes">5x</span>
614
614
  <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-yes">181x</span>
616
- <span class="cline-any cline-yes">454x</span>
617
- <span class="cline-any cline-yes">454x</span>
615
+ <span class="cline-any cline-yes">180x</span>
616
+ <span class="cline-any cline-yes">450x</span>
617
+ <span class="cline-any cline-yes">450x</span>
618
618
  <span class="cline-any cline-yes">41x</span>
619
619
  <span class="cline-any cline-neutral">&nbsp;</span>
620
620
  <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-yes">140x</span>
621
+ <span class="cline-any cline-yes">139x</span>
622
622
  <span class="cline-any cline-neutral">&nbsp;</span>
623
623
  <span class="cline-any cline-neutral">&nbsp;</span>
624
624
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1468,7 +1468,7 @@ module.exports = LinkController
1468
1468
  <div class='footer quiet pad2 space-top1 center small'>
1469
1469
  Code coverage generated by
1470
1470
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1471
- at Mon Oct 25 2021 09:06:28 GMT+0000 (Coordinated Universal Time)
1471
+ at Wed Oct 27 2021 14:24:39 GMT+0000 (Coordinated Universal Time)
1472
1472
  </div>
1473
1473
  </div>
1474
1474
  <script src="../../prettify.js"></script>