@budibase/server 1.0.93 → 1.0.96

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 (210) hide show
  1. package/builder/assets/{index.4494eb63.js → index.b6091ca2.js} +1 -1
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +155 -142
  4. package/coverage/coverage-final.json +6 -6
  5. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +2 -2
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +1 -1
  16. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.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/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  49. package/coverage/lcov-report/api/index.html +15 -15
  50. package/coverage/lcov-report/api/index.js.html +15 -27
  51. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/dev.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/migrations.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +3 -6
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  80. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  83. package/coverage/lcov-report/automations/actions.js.html +1 -1
  84. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  85. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  86. package/coverage/lcov-report/automations/index.html +1 -1
  87. package/coverage/lcov-report/automations/index.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/index.html +5 -5
  97. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/queryRows.js.html +4 -4
  100. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  115. package/coverage/lcov-report/automations/utils.js.html +1 -1
  116. package/coverage/lcov-report/constants/index.html +1 -1
  117. package/coverage/lcov-report/constants/index.js.html +1 -1
  118. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  119. package/coverage/lcov-report/constants/screens.js.html +1 -1
  120. package/coverage/lcov-report/db/client.js.html +1 -1
  121. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  122. package/coverage/lcov-report/db/index.html +1 -1
  123. package/coverage/lcov-report/db/index.js.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  126. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  128. package/coverage/lcov-report/db/newid.js.html +1 -1
  129. package/coverage/lcov-report/db/utils.js.html +1 -1
  130. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  131. package/coverage/lcov-report/events/index.html +1 -1
  132. package/coverage/lcov-report/events/index.js.html +1 -1
  133. package/coverage/lcov-report/events/utils.js.html +1 -1
  134. package/coverage/lcov-report/index.html +33 -33
  135. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  136. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  137. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  138. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  139. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  140. package/coverage/lcov-report/middleware/currentapp.js.html +15 -12
  141. package/coverage/lcov-report/middleware/index.html +11 -11
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  143. package/coverage/lcov-report/middleware/publicApi.js.html +3 -3
  144. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  145. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  146. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  147. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  148. package/coverage/lcov-report/threads/automation.js.html +1 -1
  149. package/coverage/lcov-report/threads/index.html +20 -20
  150. package/coverage/lcov-report/threads/index.js.html +1 -1
  151. package/coverage/lcov-report/threads/query.js.html +111 -15
  152. package/coverage/lcov-report/threads/utils.js.html +1 -1
  153. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  154. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  155. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  156. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  157. package/coverage/lcov-report/utilities/global.js.html +1 -1
  158. package/coverage/lcov-report/utilities/index.html +1 -1
  159. package/coverage/lcov-report/utilities/index.js.html +1 -1
  160. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  161. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  163. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  166. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  167. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  168. package/coverage/lcov-report/utilities/security.js.html +1 -1
  169. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  170. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
  172. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  174. package/coverage/lcov-report/utilities/users.js.html +1 -1
  175. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  176. package/coverage/lcov.info +258 -240
  177. package/dist/api/controllers/auth.js +1 -1
  178. package/dist/api/controllers/static/index.js +2 -15
  179. package/dist/api/index.js +3 -6
  180. package/dist/api/routes/static.js +1 -2
  181. package/dist/automations/steps/queryRows.js +1 -1
  182. package/dist/db/views/staticViews.js +2 -0
  183. package/dist/environment.js +1 -0
  184. package/dist/integrations/base/sql.js +5 -1
  185. package/dist/middleware/currentapp.js +7 -6
  186. package/dist/middleware/publicApi.js +2 -2
  187. package/dist/package.json +4 -8
  188. package/dist/tests/utilities/TestConfiguration.js +1 -1
  189. package/dist/threads/query.js +32 -5
  190. package/dist/tsconfig.tsbuildinfo +1 -1
  191. package/package.json +5 -9
  192. package/scripts/integrations/customer-categories/docker-compose.yml +2 -2
  193. package/scripts/integrations/oracle/docker-compose.yml +1 -1
  194. package/scripts/integrations/postgres/docker-compose.yml +2 -2
  195. package/scripts/integrations/service-vehicles/docker-compose.yml +2 -2
  196. package/src/api/controllers/auth.js +1 -1
  197. package/src/api/controllers/static/index.js +2 -18
  198. package/src/api/index.js +3 -7
  199. package/src/api/routes/static.js +1 -2
  200. package/src/automations/steps/queryRows.js +1 -1
  201. package/src/db/views/staticViews.js +2 -0
  202. package/src/environment.js +1 -0
  203. package/src/integrations/base/sql.ts +5 -1
  204. package/src/middleware/currentapp.js +7 -6
  205. package/src/middleware/publicApi.js +2 -2
  206. package/src/middleware/tests/authorized.spec.js +1 -3
  207. package/src/middleware/tests/currentapp.spec.js +4 -4
  208. package/src/tests/utilities/TestConfiguration.js +1 -1
  209. package/src/threads/query.js +37 -5
  210. package/.eslintrc +0 -13
@@ -64,7 +64,7 @@
64
64
  <div class='footer quiet pad2 space-top1 center small'>
65
65
  Code coverage generated by
66
66
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
67
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
67
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
68
68
  </div>
69
69
  </div>
70
70
  <script src="../../prettify.js"></script>
@@ -95,7 +95,7 @@
95
95
  <div class='footer quiet pad2 space-top1 center small'>
96
96
  Code coverage generated by
97
97
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
98
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../../prettify.js"></script>
@@ -121,7 +121,7 @@ exports.middleware =
121
121
  <div class='footer quiet pad2 space-top1 center small'>
122
122
  Code coverage generated by
123
123
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
124
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
124
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
125
125
  </div>
126
126
  </div>
127
127
  <script src="../prettify.js"></script>
@@ -382,7 +382,7 @@ module.exports =
382
382
  <div class='footer quiet pad2 space-top1 center small'>
383
383
  Code coverage generated by
384
384
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
385
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
385
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
386
386
  </div>
387
387
  </div>
388
388
  <script src="../prettify.js"></script>
@@ -298,7 +298,7 @@ module.exports = async (ctx, permType) =&gt; {
298
298
  <div class='footer quiet pad2 space-top1 center small'>
299
299
  Code coverage generated by
300
300
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
301
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
301
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
302
302
  </div>
303
303
  </div>
304
304
  <script src="../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">83.63% </span>
26
+ <span class="strong">82.14% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>46/55</span>
28
+ <span class='fraction'>46/56</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.63% </span>
47
+ <span class="strong">82.14% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>46/55</span>
49
+ <span class='fraction'>46/56</span>
50
50
  </div>
51
51
 
52
52
 
@@ -172,7 +172,8 @@
172
172
  <a name='L113'></a><a href='#L113'>113</a>
173
173
  <a name='L114'></a><a href='#L114'>114</a>
174
174
  <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
175
+ <a name='L116'></a><a href='#L116'>116</a>
176
+ <a name='L117'></a><a href='#L117'>117</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
176
177
  <span class="cline-any cline-neutral">&nbsp;</span>
177
178
  <span class="cline-any cline-neutral">&nbsp;</span>
178
179
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -260,6 +261,7 @@
260
261
  <span class="cline-any cline-no">&nbsp;</span>
261
262
  <span class="cline-any cline-no">&nbsp;</span>
262
263
  <span class="cline-any cline-no">&nbsp;</span>
264
+ <span class="cline-any cline-no">&nbsp;</span>
263
265
  <span class="cline-any cline-neutral">&nbsp;</span>
264
266
  <span class="cline-any cline-neutral">&nbsp;</span>
265
267
  <span class="cline-any cline-yes">190x</span>
@@ -288,7 +290,7 @@
288
290
  <span class="cline-any cline-neutral">&nbsp;</span>
289
291
  <span class="cline-any cline-neutral">&nbsp;</span>
290
292
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
291
- getAppId,
293
+ getAppIdFromCtx,
292
294
  setCookie,
293
295
  getCookie,
294
296
  clearCookie,
@@ -306,7 +308,7 @@ const { doInAppContext } = require("@budibase/backend-core/context")
306
308
  &nbsp;
307
309
  module.exports = async (ctx, next) =&gt; {
308
310
  // try to get the appID from the request
309
- let requestAppId = getAppId(ctx)
311
+ let requestAppId = await getAppIdFromCtx(ctx)
310
312
  // get app cookie if it exists
311
313
  let appCookie = null
312
314
  try {
@@ -360,21 +362,22 @@ module.exports = async (ctx, next) =&gt; {
360
362
  }
361
363
  &nbsp;
362
364
  return doInAppContext(appId, async () =&gt; {
363
- let noCookieSet = false
365
+ let skipCookie = false
364
366
  // if the user not in the right tenant then make sure they have no permissions
365
367
  // need to judge this only based on the request app ID,
366
368
  <span class="missing-if-branch" title="if path not taken" >I</span>if (
367
369
  env.MULTI_TENANCY &amp;&amp;
368
370
  <span class="branch-1 cbranch-no" title="branch not covered" > ctx.user </span>&amp;&amp;
369
371
  <span class="branch-2 cbranch-no" title="branch not covered" > requestAppId </span>&amp;&amp;
370
- <span class="branch-3 cbranch-no" title="branch not covered" > !isUserInAppTenant(requestAppId)</span>
372
+ <span class="branch-3 cbranch-no" title="branch not covered" > !isUserInAppTenant(requestAppId, ctx.user)</span>
371
373
  ) {
372
374
  // don't error, simply remove the users rights (they are a public user)
373
375
  <span class="cstat-no" title="statement not covered" > delete ctx.user.builder</span>
374
376
  <span class="cstat-no" title="statement not covered" > delete ctx.user.admin</span>
375
377
  <span class="cstat-no" title="statement not covered" > delete ctx.user.roles</span>
378
+ <span class="cstat-no" title="statement not covered" > ctx.isAuthenticated = false</span>
376
379
  <span class="cstat-no" title="statement not covered" > roleId = BUILTIN_ROLE_IDS.PUBLIC</span>
377
- <span class="cstat-no" title="statement not covered" > noCookieSet = true</span>
380
+ <span class="cstat-no" title="statement not covered" > skipCookie = true</span>
378
381
  }
379
382
  &nbsp;
380
383
  ctx.appId = appId
@@ -394,7 +397,7 @@ module.exports = async (ctx, next) =&gt; {
394
397
  (requestAppId !== appId ||
395
398
  appCookie == null ||
396
399
  appCookie.appId !== requestAppId) &amp;&amp;
397
- !noCookieSet
400
+ !skipCookie
398
401
  ) {
399
402
  setCookie(ctx, { appId }, Cookies.CurrentApp)
400
403
  }
@@ -409,7 +412,7 @@ module.exports = async (ctx, next) =&gt; {
409
412
  <div class='footer quiet pad2 space-top1 center small'>
410
413
  Code coverage generated by
411
414
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
412
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
415
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
413
416
  </div>
414
417
  </div>
415
418
  <script src="../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">81.85% </span>
26
+ <span class="strong">81.56% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>230/281</span>
28
+ <span class='fraction'>230/282</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">82.73% </span>
47
+ <span class="strong">82.43% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>230/278</span>
49
+ <span class='fraction'>230/279</span>
50
50
  </div>
51
51
 
52
52
 
@@ -119,17 +119,17 @@
119
119
 
120
120
  <tr>
121
121
  <td class="file high" data-value="currentapp.js"><a href="currentapp.js.html">currentapp.js</a></td>
122
- <td data-value="83.63" class="pic high">
123
- <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
122
+ <td data-value="82.14" class="pic high">
123
+ <div class="chart"><div class="cover-fill" style="width: 82%"></div><div class="cover-empty" style="width: 18%"></div></div>
124
124
  </td>
125
- <td data-value="83.63" class="pct high">83.63%</td>
126
- <td data-value="55" class="abs high">46/55</td>
125
+ <td data-value="82.14" class="pct high">82.14%</td>
126
+ <td data-value="56" class="abs high">46/56</td>
127
127
  <td data-value="76.74" class="pct medium">76.74%</td>
128
128
  <td data-value="43" class="abs medium">33/43</td>
129
129
  <td data-value="100" class="pct high">100%</td>
130
130
  <td data-value="2" class="abs high">2/2</td>
131
- <td data-value="83.63" class="pct high">83.63%</td>
132
- <td data-value="55" class="abs high">46/55</td>
131
+ <td data-value="82.14" class="pct high">82.14%</td>
132
+ <td data-value="56" class="abs high">46/56</td>
133
133
  </tr>
134
134
 
135
135
  <tr>
@@ -230,7 +230,7 @@
230
230
  <div class='footer quiet pad2 space-top1 center small'>
231
231
  Code coverage generated by
232
232
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
233
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
233
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
234
234
  </div>
235
235
  </div>
236
236
  <script src="../prettify.js"></script>
@@ -148,7 +148,7 @@ module.exports.params = schema =&gt; {
148
148
  <div class='footer quiet pad2 space-top1 center small'>
149
149
  Code coverage generated by
150
150
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
151
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
151
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
152
152
  </div>
153
153
  </div>
154
154
  <script src="../prettify.js"></script>
@@ -100,11 +100,11 @@
100
100
  <span class="cline-any cline-neutral">&nbsp;</span>
101
101
  <span class="cline-any cline-neutral">&nbsp;</span>
102
102
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { Headers } = require("@budibase/backend-core/constants")
103
- const { getAppId } = require("@budibase/backend-core/utils")
103
+ const { getAppIdFromCtx } = require("@budibase/backend-core/utils")
104
104
  &nbsp;
105
105
  module.exports = function ({ requiresAppId } = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
106
106
  return async (ctx, next) =&gt; {
107
- const appId = getAppId(ctx)
107
+ const appId = await getAppIdFromCtx(ctx)
108
108
  <span class="missing-if-branch" title="if path not taken" >I</span>if (requiresAppId &amp;&amp; !appId) {
109
109
  <span class="cstat-no" title="statement not covered" > ctx.throw(</span>
110
110
  400,
@@ -127,7 +127,7 @@ module.exports = function ({ requiresAppId } = <span class="branch-0 cbranch-no"
127
127
  <div class='footer quiet pad2 space-top1 center small'>
128
128
  Code coverage generated by
129
129
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
130
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
130
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
131
131
  </div>
132
132
  </div>
133
133
  <script src="../prettify.js"></script>
@@ -247,7 +247,7 @@ module.exports.bodySubResource = (main, sub) =&gt; {
247
247
  <div class='footer quiet pad2 space-top1 center small'>
248
248
  Code coverage generated by
249
249
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
250
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
250
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
251
251
  </div>
252
252
  </div>
253
253
  <script src="../prettify.js"></script>
@@ -94,7 +94,7 @@ module.exports = async (ctx, next) =&gt; {
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 Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
97
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../prettify.js"></script>
@@ -556,7 +556,7 @@ const POST_CREATE = {
556
556
  <div class='footer quiet pad2 space-top1 center small'>
557
557
  Code coverage generated by
558
558
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
559
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
559
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
560
560
  </div>
561
561
  </div>
562
562
  <script src="../prettify.js"></script>
@@ -85,7 +85,7 @@ exports.isWebhookEndpoint = ctx =&gt; {
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
88
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
88
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
89
89
  </div>
90
90
  </div>
91
91
  <script src="../prettify.js"></script>
@@ -487,7 +487,7 @@ module.exports = (input, callback) =&gt; {
487
487
  <div class='footer quiet pad2 space-top1 center small'>
488
488
  Code coverage generated by
489
489
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
490
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
490
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
491
491
  </div>
492
492
  </div>
493
493
  <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">80% </span>
26
+ <span class="strong">76.12% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>220/275</span>
28
+ <span class='fraction'>220/289</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">63.47% </span>
33
+ <span class="strong">61.34% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>73/115</span>
35
+ <span class='fraction'>73/119</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">92.5% </span>
40
+ <span class="strong">90.24% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>37/40</span>
42
+ <span class='fraction'>37/41</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">80.37% </span>
47
+ <span class="strong">76.67% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>217/270</span>
49
+ <span class='fraction'>217/283</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 high'></div>
58
+ <div class='status-line medium'></div>
59
59
  <div class="pad1">
60
60
  <table class="coverage-summary">
61
61
  <thead>
@@ -104,17 +104,17 @@
104
104
 
105
105
  <tr>
106
106
  <td class="file medium" data-value="query.js"><a href="query.js.html">query.js</a></td>
107
- <td data-value="77.03" class="pic medium">
108
- <div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
107
+ <td data-value="69.79" class="pic medium">
108
+ <div class="chart"><div class="cover-fill" style="width: 69%"></div><div class="cover-empty" style="width: 31%"></div></div>
109
109
  </td>
110
- <td data-value="77.03" class="pct medium">77.03%</td>
111
- <td data-value="135" class="abs medium">104/135</td>
112
- <td data-value="67.18" class="pct medium">67.18%</td>
113
- <td data-value="64" class="abs medium">43/64</td>
114
- <td data-value="93.33" class="pct high">93.33%</td>
115
- <td data-value="15" class="abs high">14/15</td>
116
- <td data-value="77.09" class="pct medium">77.09%</td>
117
- <td data-value="131" class="abs medium">101/131</td>
110
+ <td data-value="69.79" class="pct medium">69.79%</td>
111
+ <td data-value="149" class="abs medium">104/149</td>
112
+ <td data-value="63.23" class="pct medium">63.23%</td>
113
+ <td data-value="68" class="abs medium">43/68</td>
114
+ <td data-value="87.5" class="pct high">87.5%</td>
115
+ <td data-value="16" class="abs high">14/16</td>
116
+ <td data-value="70.13" class="pct medium">70.13%</td>
117
+ <td data-value="144" class="abs medium">101/144</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
@@ -140,7 +140,7 @@
140
140
  <div class='footer quiet pad2 space-top1 center small'>
141
141
  Code coverage generated by
142
142
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
143
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
143
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../prettify.js"></script>
@@ -262,7 +262,7 @@ module.exports.ThreadType = ThreadType
262
262
  <div class='footer quiet pad2 space-top1 center small'>
263
263
  Code coverage generated by
264
264
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
265
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
265
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
266
266
  </div>
267
267
  </div>
268
268
  <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">77.03% </span>
26
+ <span class="strong">69.79% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>104/135</span>
28
+ <span class='fraction'>104/149</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">67.18% </span>
33
+ <span class="strong">63.23% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>43/64</span>
35
+ <span class='fraction'>43/68</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">93.33% </span>
40
+ <span class="strong">87.5% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>14/15</span>
42
+ <span class='fraction'>14/16</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">77.09% </span>
47
+ <span class="strong">70.13% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>101/131</span>
49
+ <span class='fraction'>101/144</span>
50
50
  </div>
51
51
 
52
52
 
@@ -332,7 +332,39 @@
332
332
  <a name='L273'></a><a href='#L273'>273</a>
333
333
  <a name='L274'></a><a href='#L274'>274</a>
334
334
  <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a>
342
+ <a name='L283'></a><a href='#L283'>283</a>
343
+ <a name='L284'></a><a href='#L284'>284</a>
344
+ <a name='L285'></a><a href='#L285'>285</a>
345
+ <a name='L286'></a><a href='#L286'>286</a>
346
+ <a name='L287'></a><a href='#L287'>287</a>
347
+ <a name='L288'></a><a href='#L288'>288</a>
348
+ <a name='L289'></a><a href='#L289'>289</a>
349
+ <a name='L290'></a><a href='#L290'>290</a>
350
+ <a name='L291'></a><a href='#L291'>291</a>
351
+ <a name='L292'></a><a href='#L292'>292</a>
352
+ <a name='L293'></a><a href='#L293'>293</a>
353
+ <a name='L294'></a><a href='#L294'>294</a>
354
+ <a name='L295'></a><a href='#L295'>295</a>
355
+ <a name='L296'></a><a href='#L296'>296</a>
356
+ <a name='L297'></a><a href='#L297'>297</a>
357
+ <a name='L298'></a><a href='#L298'>298</a>
358
+ <a name='L299'></a><a href='#L299'>299</a>
359
+ <a name='L300'></a><a href='#L300'>300</a>
360
+ <a name='L301'></a><a href='#L301'>301</a>
361
+ <a name='L302'></a><a href='#L302'>302</a>
362
+ <a name='L303'></a><a href='#L303'>303</a>
363
+ <a name='L304'></a><a href='#L304'>304</a>
364
+ <a name='L305'></a><a href='#L305'>305</a>
365
+ <a name='L306'></a><a href='#L306'>306</a>
366
+ <a name='L307'></a><a href='#L307'>307</a>
367
+ <a name='L308'></a><a href='#L308'>308</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
336
368
  <span class="cline-any cline-yes">2x</span>
337
369
  <span class="cline-any cline-yes">2x</span>
338
370
  <span class="cline-any cline-yes">2x</span>
@@ -370,6 +402,8 @@
370
402
  <span class="cline-any cline-no">&nbsp;</span>
371
403
  <span class="cline-any cline-no">&nbsp;</span>
372
404
  <span class="cline-any cline-no">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-no">&nbsp;</span>
373
407
  <span class="cline-any cline-no">&nbsp;</span>
374
408
  <span class="cline-any cline-neutral">&nbsp;</span>
375
409
  <span class="cline-any cline-no">&nbsp;</span>
@@ -383,11 +417,41 @@
383
417
  <span class="cline-any cline-neutral">&nbsp;</span>
384
418
  <span class="cline-any cline-neutral">&nbsp;</span>
385
419
  <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-no">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
428
  <span class="cline-any cline-no">&nbsp;</span>
387
429
  <span class="cline-any cline-neutral">&nbsp;</span>
388
430
  <span class="cline-any cline-neutral">&nbsp;</span>
389
431
  <span class="cline-any cline-neutral">&nbsp;</span>
390
432
  <span class="cline-any cline-no">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-no">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-no">&nbsp;</span>
448
+ <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-no">&nbsp;</span>
450
+ <span class="cline-any cline-no">&nbsp;</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
455
  <span class="cline-any cline-no">&nbsp;</span>
392
456
  <span class="cline-any cline-no">&nbsp;</span>
393
457
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -642,10 +706,12 @@ class QueryRunner {
642
706
  return fields
643
707
  }
644
708
  const bindings = <span class="cstat-no" title="statement not covered" >findHBSBlocks(sql)</span>
645
- let variables = <span class="cstat-no" title="statement not covered" >[]</span>
709
+ let variables = <span class="cstat-no" title="statement not covered" >[],</span>
710
+ arrays = <span class="cstat-no" title="statement not covered" >[]</span>
646
711
  <span class="cstat-no" title="statement not covered" > for (let binding of bindings) {</span>
647
- let variable = <span class="cstat-no" title="statement not covered" >integration.getBindingIdentifier()</span>
648
- <span class="cstat-no" title="statement not covered" > variables.push(binding)</span>
712
+ // look for array/list operations in the SQL statement, which will need handled later
713
+ const listRegex = <span class="cstat-no" title="statement not covered" >new RegExp(`(in|IN|In|iN)( )+${binding}`)</span>
714
+ const listRegexMatch = <span class="cstat-no" title="statement not covered" >sql.match(listRegex)</span>
649
715
  // check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
650
716
  const charConstRegex = <span class="cstat-no" title="statement not covered" >new RegExp(`'[^']*${binding}[^']*'`)</span>
651
717
  const charConstMatch = <span class="cstat-no" title="statement not covered" >sql.match(charConstRegex)</span>
@@ -655,15 +721,45 @@ class QueryRunner {
655
721
  <span class="cstat-no" title="statement not covered" > part2 = `'${part2.substring(0, part2.length - 1)}'`</span>
656
722
  <span class="cstat-no" title="statement not covered" > sql = sql.replace(</span>
657
723
  charConstMatch[0],
658
- integration.getStringConcat([part1, variable, part2])
724
+ integration.getStringConcat([
725
+ part1,
726
+ integration.getBindingIdentifier(),
727
+ part2,
728
+ ])
729
+ )
730
+ }
731
+ // generate SQL parameterised array
732
+ else <span class="cstat-no" title="statement not covered" >if (listRegexMatch) {</span>
733
+ <span class="cstat-no" title="statement not covered" > arrays.push(binding)</span>
734
+ // determine the length of the array
735
+ const value = <span class="cstat-no" title="statement not covered" >this.enrichQueryFields([binding], parameters)[0].split(</span>
736
+ ","
737
+ )
738
+ // build a string like ($1, $2, $3)
739
+ <span class="cstat-no" title="statement not covered" > sql = sql.replace(</span>
740
+ binding,
741
+ `(${Array.apply(null, Array(value.length))
742
+ .map(<span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >integration.getBindingIdentifier())</span>
743
+ .join(",")})`
659
744
  )
660
745
  } else {
661
- <span class="cstat-no" title="statement not covered" > sql = sql.replace(binding, variable)</span>
746
+ <span class="cstat-no" title="statement not covered" > sql = sql.replace(binding, integration.getBindingIdentifier())</span>
662
747
  }
748
+ <span class="cstat-no" title="statement not covered" > variables.push(binding)</span>
663
749
  }
664
750
  // replicate the knex structure
665
751
  <span class="cstat-no" title="statement not covered" > fields.sql = sql</span>
666
752
  <span class="cstat-no" title="statement not covered" > fields.bindings = this.enrichQueryFields(variables, parameters)</span>
753
+ // check for arrays in the data
754
+ let updated = <span class="cstat-no" title="statement not covered" >[]</span>
755
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; variables.length; i++) {</span>
756
+ <span class="cstat-no" title="statement not covered" > if (arrays.includes(variables[i])) {</span>
757
+ <span class="cstat-no" title="statement not covered" > updated = updated.concat(fields.bindings[i].split(","))</span>
758
+ } else {
759
+ <span class="cstat-no" title="statement not covered" > updated.push(fields.bindings[i])</span>
760
+ }
761
+ }
762
+ <span class="cstat-no" title="statement not covered" > fields.bindings = updated</span>
667
763
  <span class="cstat-no" title="statement not covered" > return fields</span>
668
764
  }
669
765
  &nbsp;
@@ -889,7 +985,7 @@ module.exports = (input, callback) =&gt; {
889
985
  <div class='footer quiet pad2 space-top1 center small'>
890
986
  Code coverage generated by
891
987
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
892
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
988
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
893
989
  </div>
894
990
  </div>
895
991
  <script src="../prettify.js"></script>
@@ -298,7 +298,7 @@ exports.hasExtraData = response =&gt; {
298
298
  <div class='footer quiet pad2 space-top1 center small'>
299
299
  Code coverage generated by
300
300
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
301
- at Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
301
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
302
302
  </div>
303
303
  </div>
304
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 Mon Mar 21 2022 17:15:38 GMT+0000 (Coordinated Universal Time)
112
+ at Fri Mar 25 2022 12:04:27 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  </div>
115
115
  <script src="../prettify.js"></script>