@budibase/server 1.0.27-alpha.13 → 1.0.27-alpha.17

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 (191) hide show
  1. package/builder/assets/{index.176f00e0.css → index.39e01193.css} +1 -1
  2. package/builder/assets/{index.5776ef20.js → index.4ba89e2d.js} +232 -232
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +155 -152
  5. package/coverage/coverage-final.json +4 -4
  6. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +1 -1
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.js.html +7 -4
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  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 +1 -1
  29. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  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 +1 -1
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  48. package/coverage/lcov-report/api/index.html +1 -1
  49. package/coverage/lcov-report/api/index.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/index.html +1 -1
  63. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  80. package/coverage/lcov-report/automations/actions.js.html +1 -1
  81. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  82. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  83. package/coverage/lcov-report/automations/index.html +1 -1
  84. package/coverage/lcov-report/automations/index.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/index.html +1 -1
  94. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  112. package/coverage/lcov-report/automations/utils.js.html +1 -1
  113. package/coverage/lcov-report/constants/index.html +1 -1
  114. package/coverage/lcov-report/constants/index.js.html +1 -1
  115. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  116. package/coverage/lcov-report/constants/screens.js.html +1 -1
  117. package/coverage/lcov-report/db/client.js.html +1 -1
  118. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  119. package/coverage/lcov-report/db/index.html +1 -1
  120. package/coverage/lcov-report/db/index.js.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  125. package/coverage/lcov-report/db/newid.js.html +1 -1
  126. package/coverage/lcov-report/db/utils.js.html +1 -1
  127. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  128. package/coverage/lcov-report/events/index.html +1 -1
  129. package/coverage/lcov-report/events/index.js.html +1 -1
  130. package/coverage/lcov-report/events/utils.js.html +1 -1
  131. package/coverage/lcov-report/index.html +16 -16
  132. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  133. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  134. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  135. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  136. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  137. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  138. package/coverage/lcov-report/middleware/index.html +1 -1
  139. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  140. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  141. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  142. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  143. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  144. package/coverage/lcov-report/threads/automation.js.html +1 -1
  145. package/coverage/lcov-report/threads/index.html +28 -28
  146. package/coverage/lcov-report/threads/index.js.html +1 -1
  147. package/coverage/lcov-report/threads/query.js.html +181 -13
  148. package/coverage/lcov-report/threads/utils.js.html +11 -161
  149. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  150. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  151. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  152. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  153. package/coverage/lcov-report/utilities/global.js.html +1 -1
  154. package/coverage/lcov-report/utilities/index.html +4 -4
  155. package/coverage/lcov-report/utilities/index.js.html +9 -9
  156. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  157. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  158. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  159. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  160. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  161. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  162. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  163. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  164. package/coverage/lcov-report/utilities/security.js.html +1 -1
  165. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  166. package/coverage/lcov-report/utilities/users.js.html +1 -1
  167. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  168. package/coverage/lcov.info +291 -284
  169. package/dist/api/controllers/query/index.js +3 -2
  170. package/dist/environment.js +1 -0
  171. package/dist/integrations/dynamodb.js +19 -0
  172. package/dist/integrations/rest.js +68 -19
  173. package/dist/integrations/s3.js +17 -8
  174. package/dist/integrations/utils.js +40 -37
  175. package/dist/package.json +4 -4
  176. package/dist/threads/query.js +52 -3
  177. package/dist/threads/utils.js +0 -44
  178. package/dist/tsconfig.tsbuildinfo +1 -1
  179. package/dist/utilities/index.js +1 -1
  180. package/package.json +5 -5
  181. package/src/api/controllers/query/index.js +3 -2
  182. package/src/definitions/datasource.ts +15 -0
  183. package/src/environment.js +1 -0
  184. package/src/integrations/dynamodb.ts +18 -0
  185. package/src/integrations/rest.ts +97 -17
  186. package/src/integrations/s3.ts +18 -7
  187. package/src/integrations/tests/rest.spec.js +287 -24
  188. package/src/integrations/utils.ts +8 -7
  189. package/src/threads/query.js +59 -3
  190. package/src/threads/utils.js +0 -50
  191. package/src/utilities/index.js +1 -1
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.39% </span>
26
+ <span class="strong">87.06% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>85/92</span>
28
+ <span class='fraction'>101/116</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">81.08% </span>
33
+ <span class="strong">68.96% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>30/37</span>
35
+ <span class='fraction'>40/58</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">91.66% </span>
40
+ <span class="strong">92.3% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/12</span>
42
+ <span class='fraction'>12/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">93.18% </span>
47
+ <span class="strong">87.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>82/88</span>
49
+ <span class='fraction'>98/112</span>
50
50
  </div>
51
51
 
52
52
 
@@ -230,13 +230,72 @@
230
230
  <a name='L171'></a><a href='#L171'>171</a>
231
231
  <a name='L172'></a><a href='#L172'>172</a>
232
232
  <a name='L173'></a><a href='#L173'>173</a>
233
- <a name='L174'></a><a href='#L174'>174</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
233
+ <a name='L174'></a><a href='#L174'>174</a>
234
+ <a name='L175'></a><a href='#L175'>175</a>
235
+ <a name='L176'></a><a href='#L176'>176</a>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a>
244
+ <a name='L185'></a><a href='#L185'>185</a>
245
+ <a name='L186'></a><a href='#L186'>186</a>
246
+ <a name='L187'></a><a href='#L187'>187</a>
247
+ <a name='L188'></a><a href='#L188'>188</a>
248
+ <a name='L189'></a><a href='#L189'>189</a>
249
+ <a name='L190'></a><a href='#L190'>190</a>
250
+ <a name='L191'></a><a href='#L191'>191</a>
251
+ <a name='L192'></a><a href='#L192'>192</a>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a>
258
+ <a name='L199'></a><a href='#L199'>199</a>
259
+ <a name='L200'></a><a href='#L200'>200</a>
260
+ <a name='L201'></a><a href='#L201'>201</a>
261
+ <a name='L202'></a><a href='#L202'>202</a>
262
+ <a name='L203'></a><a href='#L203'>203</a>
263
+ <a name='L204'></a><a href='#L204'>204</a>
264
+ <a name='L205'></a><a href='#L205'>205</a>
265
+ <a name='L206'></a><a href='#L206'>206</a>
266
+ <a name='L207'></a><a href='#L207'>207</a>
267
+ <a name='L208'></a><a href='#L208'>208</a>
268
+ <a name='L209'></a><a href='#L209'>209</a>
269
+ <a name='L210'></a><a href='#L210'>210</a>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a>
272
+ <a name='L213'></a><a href='#L213'>213</a>
273
+ <a name='L214'></a><a href='#L214'>214</a>
274
+ <a name='L215'></a><a href='#L215'>215</a>
275
+ <a name='L216'></a><a href='#L216'>216</a>
276
+ <a name='L217'></a><a href='#L217'>217</a>
277
+ <a name='L218'></a><a href='#L218'>218</a>
278
+ <a name='L219'></a><a href='#L219'>219</a>
279
+ <a name='L220'></a><a href='#L220'>220</a>
280
+ <a name='L221'></a><a href='#L221'>221</a>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a>
287
+ <a name='L228'></a><a href='#L228'>228</a>
288
+ <a name='L229'></a><a href='#L229'>229</a>
289
+ <a name='L230'></a><a href='#L230'>230</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
234
290
  <span class="cline-any cline-yes">2x</span>
235
291
  <span class="cline-any cline-yes">2x</span>
236
292
  <span class="cline-any cline-yes">2x</span>
237
293
  <span class="cline-any cline-yes">2x</span>
238
294
  <span class="cline-any cline-yes">2x</span>
239
295
  <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-yes">2x</span>
297
+ <span class="cline-any cline-yes">2x</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
299
  <span class="cline-any cline-neutral">&nbsp;</span>
241
300
  <span class="cline-any cline-neutral">&nbsp;</span>
242
301
  <span class="cline-any cline-yes">15x</span>
@@ -248,6 +307,7 @@
248
307
  <span class="cline-any cline-yes">15x</span>
249
308
  <span class="cline-any cline-yes">15x</span>
250
309
  <span class="cline-any cline-yes">15x</span>
310
+ <span class="cline-any cline-yes">15x</span>
251
311
  <span class="cline-any cline-neutral">&nbsp;</span>
252
312
  <span class="cline-any cline-neutral">&nbsp;</span>
253
313
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -260,6 +320,12 @@
260
320
  <span class="cline-any cline-neutral">&nbsp;</span>
261
321
  <span class="cline-any cline-yes">16x</span>
262
322
  <span class="cline-any cline-yes">16x</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-yes">16x</span>
326
+ <span class="cline-any cline-no">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
329
  <span class="cline-any cline-yes">16x</span>
264
330
  <span class="cline-any cline-yes">16x</span>
265
331
  <span class="cline-any cline-yes">2x</span>
@@ -271,6 +337,8 @@
271
337
  <span class="cline-any cline-yes">14x</span>
272
338
  <span class="cline-any cline-yes">14x</span>
273
339
  <span class="cline-any cline-yes">14x</span>
340
+ <span class="cline-any cline-yes">14x</span>
341
+ <span class="cline-any cline-yes">12x</span>
274
342
  <span class="cline-any cline-yes">12x</span>
275
343
  <span class="cline-any cline-yes">12x</span>
276
344
  <span class="cline-any cline-yes">12x</span>
@@ -393,6 +461,50 @@
393
461
  <span class="cline-any cline-neutral">&nbsp;</span>
394
462
  <span class="cline-any cline-neutral">&nbsp;</span>
395
463
  <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-yes">16x</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-yes">16x</span>
468
+ <span class="cline-any cline-yes">19x</span>
469
+ <span class="cline-any cline-no">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-yes">19x</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-yes">19x</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-yes">19x</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-yes">19x</span>
479
+ <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-yes">19x</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-no">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-yes">16x</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-yes">16x</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
508
  <span class="cline-any cline-yes">2x</span>
397
509
  <span class="cline-any cline-yes">10x</span>
398
510
  <span class="cline-any cline-yes">10x</span>
@@ -410,6 +522,9 @@ const { integrations } = require("../integrations")
410
522
  const { processStringSync } = require("@budibase/string-templates")
411
523
  const CouchDB = require("../db")
412
524
  &nbsp;
525
+ const IS_TRIPLE_BRACE = new RegExp(/^{{3}.*}{3}$/)
526
+ const IS_HANDLEBARS = new RegExp(/^{{2}.*}{2}$/)
527
+ &nbsp;
413
528
  class QueryRunner {
414
529
  constructor(input, flags = { noRecursiveQuery: false }) {
415
530
  this.appId = input.appId
@@ -417,6 +532,7 @@ class QueryRunner {
417
532
  this.queryVerb = input.queryVerb
418
533
  this.fields = input.fields
419
534
  this.parameters = input.parameters
535
+ this.pagination = input.pagination
420
536
  this.transformer = input.transformer
421
537
  this.queryId = input.queryId
422
538
  this.noRecursiveQuery = flags.noRecursiveQuery
@@ -432,7 +548,13 @@ class QueryRunner {
432
548
  let { datasource, fields, queryVerb, transformer } = this
433
549
  // pre-query, make sure datasource variables are added to parameters
434
550
  const parameters = await this.addDatasourceVariables()
435
- const query = threadUtils.enrichQueryFields(fields, parameters)
551
+ let query = this.enrichQueryFields(fields, parameters)
552
+ &nbsp;
553
+ // Add pagination values for REST queries
554
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.pagination) {
555
+ <span class="cstat-no" title="statement not covered" > query.paginationValues = this.pagination</span>
556
+ }
557
+ &nbsp;
436
558
  const Integration = integrations[datasource.source]
437
559
  if (!Integration) {
438
560
  throw "Integration type does not exist."
@@ -442,11 +564,13 @@ class QueryRunner {
442
564
  let output = threadUtils.formatResponse(await integration[queryVerb](query))
443
565
  let rows = output,
444
566
  info = undefined,
445
- extra = undefined
567
+ extra = undefined,
568
+ pagination = undefined
446
569
  if (threadUtils.hasExtraData(output)) {
447
570
  rows = output.data
448
571
  info = output.info
449
572
  extra = output.extra
573
+ pagination = output.pagination
450
574
  }
451
575
  &nbsp;
452
576
  // transform as required
@@ -488,7 +612,7 @@ class QueryRunner {
488
612
  <span class="cstat-no" title="statement not covered" > integration.end()</span>
489
613
  }
490
614
  &nbsp;
491
- return { rows, keys, info, extra }
615
+ return { rows, keys, info, extra, pagination }
492
616
  }
493
617
  &nbsp;
494
618
  async runAnotherQuery(queryId, parameters) {
@@ -564,6 +688,50 @@ class QueryRunner {
564
688
  }
565
689
  return parameters
566
690
  }
691
+ &nbsp;
692
+ enrichQueryFields(fields, parameters = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
693
+ const enrichedQuery = {}
694
+ &nbsp;
695
+ // enrich the fields with dynamic parameters
696
+ for (let key of Object.keys(fields)) {
697
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (fields[key] == null) {
698
+ <span class="cstat-no" title="statement not covered" > continue</span>
699
+ }
700
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof fields[key] === "object") {
701
+ // enrich nested fields object
702
+ <span class="cstat-no" title="statement not covered" > enrichedQuery[key] = this.enrichQueryFields(fields[key], parameters)</span>
703
+ } else if (typeof fields[key] === "string") {
704
+ // enrich string value as normal
705
+ let value = fields[key]
706
+ // add triple brace to avoid escaping e.g. '=' in cookie header
707
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (IS_HANDLEBARS.test(value) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!IS_TRIPLE_BRACE.test(value))</span> {
708
+ <span class="cstat-no" title="statement not covered" > value = `{${value}}`</span>
709
+ }
710
+ enrichedQuery[key] = processStringSync(value, parameters, {
711
+ noHelpers: true,
712
+ })
713
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
714
+ <span class="cstat-no" title="statement not covered" > enrichedQuery[key] = fields[key]</span>
715
+ }
716
+ }
717
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
718
+ enrichedQuery.json ||
719
+ enrichedQuery.customData ||
720
+ enrichedQuery.requestBody
721
+ ) {
722
+ <span class="cstat-no" title="statement not covered" > try {</span>
723
+ <span class="cstat-no" title="statement not covered" > enrichedQuery.json = JSON.parse(</span>
724
+ enrichedQuery.json ||
725
+ enrichedQuery.customData ||
726
+ enrichedQuery.requestBody
727
+ )
728
+ } catch (err) {
729
+ // no json found, ignore
730
+ }
731
+ <span class="cstat-no" title="statement not covered" > delete enrichedQuery.customData</span>
732
+ }
733
+ return enrichedQuery
734
+ }
567
735
  }
568
736
  &nbsp;
569
737
  module.exports = (input, callback) =&gt; {
@@ -583,7 +751,7 @@ module.exports = (input, callback) =&gt; {
583
751
  <div class='footer quiet pad2 space-top1 center small'>
584
752
  Code coverage generated by
585
753
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
586
- at Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
754
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
587
755
  </div>
588
756
  </div>
589
757
  <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">76.27% </span>
26
+ <span class="strong">81.57% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>45/59</span>
28
+ <span class='fraction'>31/38</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">54.54% </span>
33
+ <span class="strong">64.28% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>18/33</span>
35
+ <span class='fraction'>9/14</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">90% </span>
40
+ <span class="strong">88.88% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/10</span>
42
+ <span class='fraction'>8/9</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">77.58% </span>
47
+ <span class="strong">83.78% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>45/58</span>
49
+ <span class='fraction'>31/37</span>
50
50
  </div>
51
51
 
52
52
 
@@ -55,7 +55,7 @@
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
57
  </div>
58
- <div class='status-line medium'></div>
58
+ <div class='status-line high'></div>
59
59
  <pre><table class="coverage">
60
60
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
61
  <a name='L2'></a><a href='#L2'>2</a>
@@ -135,58 +135,7 @@
135
135
  <a name='L76'></a><a href='#L76'>76</a>
136
136
  <a name='L77'></a><a href='#L77'>77</a>
137
137
  <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
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>
173
- <a name='L114'></a><a href='#L114'>114</a>
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">34x</span>
189
- <span class="cline-any cline-yes">34x</span>
138
+ <a name='L79'></a><a href='#L79'>79</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
190
139
  <span class="cline-any cline-yes">34x</span>
191
140
  <span class="cline-any cline-yes">34x</span>
192
141
  <span class="cline-any cline-yes">34x</span>
@@ -195,9 +144,6 @@
195
144
  <span class="cline-any cline-yes">34x</span>
196
145
  <span class="cline-any cline-neutral">&nbsp;</span>
197
146
  <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-yes">34x</span>
199
- <span class="cline-any cline-yes">34x</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
147
  <span class="cline-any cline-neutral">&nbsp;</span>
202
148
  <span class="cline-any cline-yes">19x</span>
203
149
  <span class="cline-any cline-yes">2x</span>
@@ -267,65 +213,15 @@
267
213
  <span class="cline-any cline-neutral">&nbsp;</span>
268
214
  <span class="cline-any cline-neutral">&nbsp;</span>
269
215
  <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-neutral">&nbsp;</span>
271
- <span class="cline-any cline-yes">34x</span>
272
- <span class="cline-any cline-yes">16x</span>
273
- <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-yes">16x</span>
276
- <span class="cline-any cline-yes">19x</span>
277
- <span class="cline-any cline-no">&nbsp;</span>
278
- <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-yes">19x</span>
280
- <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
282
- <span class="cline-any cline-yes">19x</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-yes">19x</span>
285
- <span class="cline-any cline-neutral">&nbsp;</span>
286
- <span class="cline-any cline-yes">19x</span>
287
- <span class="cline-any cline-no">&nbsp;</span>
288
- <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-yes">19x</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-neutral">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
294
- <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-yes">16x</span>
298
- <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
305
- <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-neutral">&nbsp;</span>
307
- <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-no">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">16x</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
216
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const env = require("../environment")
317
217
  const CouchDB = require("../db")
318
218
  const { init } = require("@budibase/backend-core")
319
219
  const redis = require("@budibase/backend-core/redis")
320
220
  const { SEPARATOR } = require("@budibase/backend-core/db")
321
- const { processStringSync } = require("@budibase/string-templates")
322
221
  &nbsp;
323
222
  const VARIABLE_TTL_SECONDS = 3600
324
223
  let client
325
224
  &nbsp;
326
- const IS_TRIPLE_BRACE = new RegExp(/^{{3}.*}{3}$/)
327
- const IS_HANDLEBARS = new RegExp(/^{{2}.*}{2}$/)
328
- &nbsp;
329
225
  async function getClient() {
330
226
  if (!client) {
331
227
  client = await new redis.Client(redis.utils.Databases.QUERY_VARS).init()
@@ -395,52 +291,6 @@ exports.hasExtraData = response =&gt; {
395
291
  response.info != null
396
292
  )
397
293
  }
398
- &nbsp;
399
- exports.enrichQueryFields = (fields, parameters = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> =&gt; {
400
- const enrichedQuery = {}
401
- &nbsp;
402
- // enrich the fields with dynamic parameters
403
- for (let key of Object.keys(fields)) {
404
- <span class="missing-if-branch" title="if path not taken" >I</span>if (fields[key] == null) {
405
- <span class="cstat-no" title="statement not covered" > continue</span>
406
- }
407
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof fields[key] === "object") {
408
- // enrich nested fields object
409
- <span class="cstat-no" title="statement not covered" > enrichedQuery[key] = this.enrichQueryFields(fields[key], parameters)</span>
410
- } else if (typeof fields[key] === "string") {
411
- // enrich string value as normal
412
- let value = fields[key]
413
- // add triple brace to avoid escaping e.g. '=' in cookie header
414
- <span class="missing-if-branch" title="if path not taken" >I</span>if (IS_HANDLEBARS.test(value) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!IS_TRIPLE_BRACE.test(value))</span> {
415
- <span class="cstat-no" title="statement not covered" > value = `{${value}}`</span>
416
- }
417
- enrichedQuery[key] = processStringSync(value, parameters, {
418
- noHelpers: true,
419
- })
420
- } else <span class="missing-if-branch" title="else path not taken" >E</span>{
421
- <span class="cstat-no" title="statement not covered" > enrichedQuery[key] = fields[key]</span>
422
- }
423
- }
424
- &nbsp;
425
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
426
- enrichedQuery.json ||
427
- enrichedQuery.customData ||
428
- enrichedQuery.requestBody
429
- ) {
430
- <span class="cstat-no" title="statement not covered" > try {</span>
431
- <span class="cstat-no" title="statement not covered" > enrichedQuery.json = JSON.parse(</span>
432
- enrichedQuery.json ||
433
- enrichedQuery.customData ||
434
- enrichedQuery.requestBody
435
- )
436
- } catch (err) {
437
- // no json found, ignore
438
- }
439
- <span class="cstat-no" title="statement not covered" > delete enrichedQuery.customData</span>
440
- }
441
- &nbsp;
442
- return enrichedQuery
443
- }
444
294
  &nbsp;</pre></td></tr></table></pre>
445
295
 
446
296
  <div class='push'></div><!-- for sticky footer -->
@@ -448,7 +298,7 @@ exports.enrichQueryFields = (fields, parameters = <span class="branch-0 cbranch-
448
298
  <div class='footer quiet pad2 space-top1 center small'>
449
299
  Code coverage generated by
450
300
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
451
- at Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
301
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
452
302
  </div>
453
303
  </div>
454
304
  <script src="../prettify.js"></script>
@@ -109,7 +109,7 @@ const SALT_ROUNDS = <span class="cstat-no" title="statement not covered" >env.SA
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 Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
112
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  </div>
115
115
  <script src="../prettify.js"></script>
@@ -94,7 +94,7 @@ module.exports.budibaseTempDir = budibaseTempDir
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
97
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../prettify.js"></script>
@@ -130,7 +130,7 @@ exports.resolve = <span class="fstat-no" title="function not covered" >fu</span>
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 Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
133
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
134
134
  </div>
135
135
  </div>
136
136
  <script src="../prettify.js"></script>
@@ -496,7 +496,7 @@ module.exports = {
496
496
  <div class='footer quiet pad2 space-top1 center small'>
497
497
  Code coverage generated by
498
498
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
499
- at Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
499
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
500
500
  </div>
501
501
  </div>
502
502
  <script src="../prettify.js"></script>
@@ -376,7 +376,7 @@ exports.getGlobalUsersFromMetadata = async (appId, users) =&gt; {
376
376
  <div class='footer quiet pad2 space-top1 center small'>
377
377
  Code coverage generated by
378
378
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
379
- at Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
379
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
380
380
  </div>
381
381
  </div>
382
382
  <script src="../prettify.js"></script>
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">55.72% </span>
33
+ <span class="strong">55.63% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>73/131</span>
35
+ <span class='fraction'>74/133</span>
36
36
  </div>
37
37
 
38
38
 
@@ -155,7 +155,7 @@
155
155
  <td data-value="73.07" class="pct medium">73.07%</td>
156
156
  <td data-value="78" class="abs medium">57/78</td>
157
157
  <td data-value="50" class="pct medium">50%</td>
158
- <td data-value="26" class="abs medium">13/26</td>
158
+ <td data-value="28" class="abs medium">14/28</td>
159
159
  <td data-value="75" class="pct medium">75%</td>
160
160
  <td data-value="16" class="abs medium">12/16</td>
161
161
  <td data-value="72.36" class="pct medium">72.36%</td>
@@ -245,7 +245,7 @@
245
245
  <div class='footer quiet pad2 space-top1 center small'>
246
246
  Code coverage generated by
247
247
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
248
- at Wed Jan 12 2022 13:19:56 GMT+0000 (Coordinated Universal Time)
248
+ at Thu Jan 13 2022 14:57:43 GMT+0000 (Coordinated Universal Time)
249
249
  </div>
250
250
  </div>
251
251
  <script src="../prettify.js"></script>