@budibase/server 1.0.105-alpha.21 → 1.0.105-alpha.24

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 (292) hide show
  1. package/builder/assets/{index.8d922c8c.js → index.06b1c616.js} +150 -147
  2. package/builder/assets/{index.b7e0672d.css → index.e3fb1cb4.css} +2 -2
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +517 -1564
  5. package/coverage/coverage-final.json +27 -43
  6. package/coverage/lcov-report/api/controllers/analytics.js.html +8 -3
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +9 -4
  8. package/coverage/lcov-report/api/controllers/auth.js.html +8 -3
  9. package/coverage/lcov-report/api/controllers/automation.js.html +8 -3
  10. package/coverage/lcov-report/api/controllers/backup.js.html +8 -3
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -3
  12. package/coverage/lcov-report/api/controllers/component.js.html +8 -3
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +11 -6
  14. package/coverage/lcov-report/api/controllers/dev.js.html +8 -3
  15. package/coverage/lcov-report/api/controllers/index.html +16 -26
  16. package/coverage/lcov-report/api/controllers/integration.js.html +8 -3
  17. package/coverage/lcov-report/api/controllers/layout.js.html +8 -3
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +8 -3
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +8 -3
  20. package/coverage/lcov-report/api/controllers/permission.js.html +8 -3
  21. package/coverage/lcov-report/api/controllers/query/index.html +16 -26
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +8 -3
  23. package/coverage/lcov-report/api/controllers/role.js.html +10 -5
  24. package/coverage/lcov-report/api/controllers/routing.js.html +9 -4
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +8 -3
  26. package/coverage/lcov-report/api/controllers/row/index.html +23 -33
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +32 -24
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +21 -16
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -19
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +20 -15
  31. package/coverage/lcov-report/api/controllers/screen.js.html +9 -4
  32. package/coverage/lcov-report/api/controllers/script.js.html +8 -3
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +52 -47
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +8 -3
  35. package/coverage/lcov-report/api/controllers/table/index.html +17 -42
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +20 -15
  37. package/coverage/lcov-report/api/controllers/templates.js.html +8 -3
  38. package/coverage/lcov-report/api/controllers/user.js.html +8 -3
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +8 -3
  40. package/coverage/lcov-report/api/controllers/view/index.html +8 -3
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +10 -5
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +8 -3
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +8 -3
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +10 -5
  45. package/coverage/lcov-report/api/index.html +18 -13
  46. package/coverage/lcov-report/api/index.js.html +28 -8
  47. package/coverage/lcov-report/api/routes/analytics.js.html +8 -3
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -3
  49. package/coverage/lcov-report/api/routes/auth.js.html +8 -3
  50. package/coverage/lcov-report/api/routes/automation.js.html +8 -3
  51. package/coverage/lcov-report/api/routes/backup.js.html +8 -3
  52. package/coverage/lcov-report/api/routes/cloud.js.html +8 -3
  53. package/coverage/lcov-report/api/routes/component.js.html +8 -3
  54. package/coverage/lcov-report/api/routes/datasource.js.html +8 -3
  55. package/coverage/lcov-report/api/routes/deploy.js.html +8 -3
  56. package/coverage/lcov-report/api/routes/dev.js.html +9 -4
  57. package/coverage/lcov-report/api/routes/index.html +13 -68
  58. package/coverage/lcov-report/api/routes/integration.js.html +8 -3
  59. package/coverage/lcov-report/api/routes/layout.js.html +8 -3
  60. package/coverage/lcov-report/api/routes/metadata.js.html +8 -3
  61. package/coverage/lcov-report/api/routes/migrations.js.html +8 -3
  62. package/coverage/lcov-report/api/routes/permission.js.html +8 -3
  63. package/coverage/lcov-report/api/routes/query.js.html +8 -3
  64. package/coverage/lcov-report/api/routes/role.js.html +8 -3
  65. package/coverage/lcov-report/api/routes/routing.js.html +8 -3
  66. package/coverage/lcov-report/api/routes/screen.js.html +8 -3
  67. package/coverage/lcov-report/api/routes/script.js.html +8 -3
  68. package/coverage/lcov-report/api/routes/table.js.html +8 -3
  69. package/coverage/lcov-report/api/routes/templates.js.html +8 -3
  70. package/coverage/lcov-report/api/routes/user.js.html +8 -3
  71. package/coverage/lcov-report/api/routes/utils/index.html +8 -3
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +8 -3
  73. package/coverage/lcov-report/api/routes/view.js.html +8 -3
  74. package/coverage/lcov-report/api/routes/webhook.js.html +8 -3
  75. package/coverage/lcov-report/automations/actions.js.html +9 -4
  76. package/coverage/lcov-report/automations/automationUtils.js.html +20 -15
  77. package/coverage/lcov-report/automations/bullboard.js.html +8 -3
  78. package/coverage/lcov-report/automations/index.html +16 -26
  79. package/coverage/lcov-report/automations/index.js.html +8 -3
  80. package/coverage/lcov-report/automations/steps/bash.js.html +8 -3
  81. package/coverage/lcov-report/automations/steps/delay.js.html +8 -3
  82. package/coverage/lcov-report/automations/steps/discord.js.html +8 -3
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +8 -3
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +8 -3
  85. package/coverage/lcov-report/automations/steps/filter.js.html +8 -3
  86. package/coverage/lcov-report/automations/steps/index.html +16 -41
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +8 -3
  88. package/coverage/lcov-report/automations/steps/loop.js.html +8 -3
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +9 -4
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +9 -4
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +8 -3
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +8 -3
  93. package/coverage/lcov-report/automations/steps/slack.js.html +8 -3
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +8 -3
  95. package/coverage/lcov-report/automations/steps/utils.js.html +14 -9
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +8 -3
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +8 -3
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +8 -3
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +8 -3
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -3
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +8 -3
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +8 -3
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +8 -3
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +8 -3
  105. package/coverage/lcov-report/automations/triggers.js.html +16 -11
  106. package/coverage/lcov-report/block-navigation.js +8 -0
  107. package/coverage/lcov-report/constants/index.html +8 -3
  108. package/coverage/lcov-report/constants/index.js.html +35 -30
  109. package/coverage/lcov-report/constants/layouts.js.html +8 -3
  110. package/coverage/lcov-report/constants/screens.js.html +8 -3
  111. package/coverage/lcov-report/db/client.js.html +26 -21
  112. package/coverage/lcov-report/db/inMemoryView.js.html +8 -3
  113. package/coverage/lcov-report/db/index.html +8 -3
  114. package/coverage/lcov-report/db/index.js.html +10 -5
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +20 -15
  116. package/coverage/lcov-report/db/linkedRows/index.html +8 -3
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +22 -17
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +12 -7
  119. package/coverage/lcov-report/db/newid.js.html +11 -6
  120. package/coverage/lcov-report/db/utils.js.html +83 -78
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +14 -9
  122. package/coverage/lcov-report/events/index.html +8 -3
  123. package/coverage/lcov-report/events/index.js.html +9 -4
  124. package/coverage/lcov-report/events/utils.js.html +18 -13
  125. package/coverage/lcov-report/index.html +122 -117
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +8 -3
  127. package/coverage/lcov-report/integrations/tests/index.html +8 -3
  128. package/coverage/lcov-report/middleware/appInfo.js.html +8 -3
  129. package/coverage/lcov-report/middleware/builder.js.html +8 -3
  130. package/coverage/lcov-report/middleware/currentapp.js.html +11 -6
  131. package/coverage/lcov-report/middleware/index.html +16 -41
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +9 -4
  133. package/coverage/lcov-report/middleware/publicApi.js.html +8 -3
  134. package/coverage/lcov-report/middleware/resourceId.js.html +8 -3
  135. package/coverage/lcov-report/middleware/selfhost.js.html +9 -4
  136. package/coverage/lcov-report/middleware/utils.js.html +8 -3
  137. package/coverage/lcov-report/sorter.js +26 -0
  138. package/coverage/lcov-report/threads/automation.js.html +55 -50
  139. package/coverage/lcov-report/threads/index.html +16 -26
  140. package/coverage/lcov-report/threads/query.js.html +10 -5
  141. package/coverage/lcov-report/threads/utils.js.html +11 -6
  142. package/coverage/lcov-report/utilities/bcrypt.js.html +8 -3
  143. package/coverage/lcov-report/utilities/budibaseDir.js.html +8 -3
  144. package/coverage/lcov-report/utilities/centralPath.js.html +8 -3
  145. package/coverage/lcov-report/utilities/csvParser.js.html +10 -5
  146. package/coverage/lcov-report/utilities/global.js.html +9 -4
  147. package/coverage/lcov-report/utilities/index.html +8 -3
  148. package/coverage/lcov-report/utilities/index.js.html +11 -6
  149. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +32 -9
  150. package/coverage/lcov-report/utilities/queue/index.html +12 -7
  151. package/coverage/lcov-report/utilities/routing/index.html +8 -3
  152. package/coverage/lcov-report/utilities/routing/index.js.html +8 -3
  153. package/coverage/lcov-report/utilities/rowProcessor/index.html +8 -3
  154. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +46 -41
  155. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +18 -13
  156. package/coverage/lcov-report/utilities/scriptRunner.js.html +8 -3
  157. package/coverage/lcov-report/utilities/security.js.html +9 -4
  158. package/coverage/lcov-report/utilities/statusCodes.js.html +8 -3
  159. package/coverage/lcov-report/utilities/usageQuota/index.html +24 -34
  160. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +45 -40
  161. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +8 -3
  162. package/coverage/lcov-report/utilities/users.js.html +8 -3
  163. package/coverage/lcov-report/utilities/workerRequests.js.html +9 -4
  164. package/coverage/lcov.info +759 -2599
  165. package/dist/api/controllers/application.js +138 -70
  166. package/dist/api/controllers/deploy/index.js +64 -35
  167. package/dist/api/controllers/public/applications.js +29 -9
  168. package/dist/api/controllers/public/queries.js +27 -7
  169. package/dist/api/controllers/public/rows.js +32 -12
  170. package/dist/api/controllers/public/tables.js +2 -2
  171. package/dist/api/controllers/public/users.js +8 -8
  172. package/dist/api/controllers/public/utils.js +1 -1
  173. package/dist/api/controllers/query/import/index.js +3 -3
  174. package/dist/api/controllers/query/index.js +57 -44
  175. package/dist/api/controllers/row/ExternalRequest.js +27 -27
  176. package/dist/api/controllers/row/index.js +83 -60
  177. package/dist/api/controllers/row/internal.js +2 -1
  178. package/dist/api/controllers/table/internal.js +40 -34
  179. package/dist/api/controllers/table/utils.js +271 -229
  180. package/dist/api/index.js +5 -0
  181. package/dist/api/routes/application.js +39 -13
  182. package/dist/api/routes/index.js +61 -56
  183. package/dist/api/routes/public/index.js +6 -9
  184. package/dist/api/routes/public/queries.js +1 -1
  185. package/dist/api/routes/public/rows.js +1 -1
  186. package/dist/api/routes/public/tables.js +3 -3
  187. package/dist/api/routes/public/users.js +1 -1
  188. package/dist/api/routes/row.js +43 -17
  189. package/dist/api/routes/static.js +40 -13
  190. package/dist/api/routes/tests/utilities/TestFunctions.js +62 -26
  191. package/dist/app.js +11 -4
  192. package/dist/automations/steps/createRow.js +12 -12
  193. package/dist/automations/steps/deleteRow.js +13 -16
  194. package/dist/automations/tests/utilities/index.js +0 -2
  195. package/dist/automations/utils.js +187 -132
  196. package/dist/environment.js +0 -2
  197. package/dist/integrations/base/sql.js +2 -2
  198. package/dist/integrations/base/sqlTable.js +2 -2
  199. package/dist/integrations/googlesheets.js +1 -1
  200. package/dist/integrations/microsoftSqlServer.js +8 -8
  201. package/dist/integrations/mysql.js +9 -9
  202. package/dist/integrations/oracle.js +7 -7
  203. package/dist/integrations/postgres.js +7 -7
  204. package/dist/integrations/rest.js +1 -1
  205. package/dist/middleware/authorized.js +51 -51
  206. package/dist/migrations/functions/appUrls.js +1 -1
  207. package/dist/migrations/functions/developerQuota.js +49 -0
  208. package/dist/migrations/functions/publishedAppsQuota.js +47 -0
  209. package/dist/migrations/functions/quotas1.js +6 -2
  210. package/dist/migrations/functions/usageQuotas/index.js +0 -4
  211. package/dist/migrations/functions/usageQuotas/syncApps.js +4 -7
  212. package/dist/migrations/functions/usageQuotas/syncDevelopers.js +24 -0
  213. package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +26 -0
  214. package/dist/migrations/functions/usageQuotas/syncRows.js +5 -8
  215. package/dist/migrations/index.js +17 -1
  216. package/dist/package.json +10 -8
  217. package/dist/threads/index.js +35 -8
  218. package/dist/tsconfig.build.tsbuildinfo +1 -0
  219. package/dist/utilities/queue/inMemoryQueue.js +6 -1
  220. package/nodemon.json +1 -1
  221. package/package.json +11 -9
  222. package/scripts/dev/manage.js +2 -0
  223. package/src/api/controllers/{application.js → application.ts} +103 -44
  224. package/src/api/controllers/deploy/{index.js → index.ts} +45 -28
  225. package/src/api/controllers/public/applications.ts +2 -2
  226. package/src/api/controllers/public/queries.ts +1 -1
  227. package/src/api/controllers/public/rows.ts +1 -1
  228. package/src/api/controllers/query/{index.js → index.ts} +51 -48
  229. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  230. package/src/api/controllers/row/{index.js → index.ts} +24 -17
  231. package/src/api/controllers/row/internal.js +2 -1
  232. package/src/api/controllers/table/{internal.js → internal.ts} +27 -24
  233. package/src/api/controllers/table/{utils.js → utils.ts} +86 -69
  234. package/src/api/index.js +5 -0
  235. package/src/api/routes/{application.js → application.ts} +8 -14
  236. package/src/api/routes/index.ts +60 -0
  237. package/src/api/routes/public/index.ts +1 -4
  238. package/src/api/routes/{row.js → row.ts} +7 -15
  239. package/src/api/routes/{static.js → static.ts} +11 -11
  240. package/src/api/routes/tests/utilities/{TestFunctions.js → TestFunctions.ts} +42 -25
  241. package/src/app.ts +1 -2
  242. package/src/automations/steps/{createRow.js → createRow.ts} +9 -15
  243. package/src/automations/steps/{deleteRow.js → deleteRow.ts} +10 -16
  244. package/src/automations/tests/automation.spec.js +0 -1
  245. package/src/automations/tests/{createRow.spec.js → createRow.spec.ts} +4 -15
  246. package/src/automations/tests/{deleteRow.spec.js → deleteRow.spec.ts} +3 -5
  247. package/src/automations/tests/utilities/index.js +0 -2
  248. package/src/automations/{utils.js → utils.ts} +39 -27
  249. package/src/environment.js +0 -2
  250. package/src/middleware/{authorized.js → authorized.ts} +20 -14
  251. package/src/migrations/functions/developerQuota.ts +15 -0
  252. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  253. package/src/migrations/functions/tests/quotas1.spec.js +0 -2
  254. package/src/migrations/functions/usageQuotas/index.ts +0 -5
  255. package/src/migrations/functions/usageQuotas/syncApps.ts +3 -6
  256. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  257. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  258. package/src/migrations/functions/usageQuotas/syncRows.ts +3 -6
  259. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +32 -0
  260. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +38 -0
  261. package/src/migrations/index.ts +13 -1
  262. package/src/module.d.ts +4 -0
  263. package/src/threads/{index.js → index.ts} +14 -12
  264. package/src/utilities/queue/inMemoryQueue.js +7 -1
  265. package/tsconfig.build.json +10 -0
  266. package/tsconfig.json +2 -2
  267. package/coverage/lcov-report/api/controllers/application.js.html +0 -1430
  268. package/coverage/lcov-report/api/controllers/query/index.js.html +0 -713
  269. package/coverage/lcov-report/api/controllers/row/index.js.html +0 -524
  270. package/coverage/lcov-report/api/controllers/table/internal.js.html +0 -548
  271. package/coverage/lcov-report/api/controllers/table/utils.js.html +0 -1331
  272. package/coverage/lcov-report/api/routes/application.js.html +0 -179
  273. package/coverage/lcov-report/api/routes/index.js.html +0 -266
  274. package/coverage/lcov-report/api/routes/row.js.html +0 -908
  275. package/coverage/lcov-report/api/routes/static.js.html +0 -245
  276. package/coverage/lcov-report/automations/steps/createRow.js.html +0 -380
  277. package/coverage/lcov-report/automations/steps/deleteRow.js.html +0 -347
  278. package/coverage/lcov-report/automations/utils.js.html +0 -662
  279. package/coverage/lcov-report/middleware/authorized.js.html +0 -458
  280. package/coverage/lcov-report/middleware/usageQuota.js.html +0 -572
  281. package/coverage/lcov-report/threads/index.js.html +0 -278
  282. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
  283. package/dist/middleware/usageQuota.js +0 -154
  284. package/dist/tsconfig.tsbuildinfo +0 -1
  285. package/dist/utilities/usageQuota/index.js +0 -86
  286. package/src/api/routes/index.js +0 -62
  287. package/src/middleware/tests/usageQuota.spec.js +0 -134
  288. package/src/middleware/usageQuota.js +0 -164
  289. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
  290. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
  291. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  292. package/src/utilities/usageQuota/index.js +0 -93
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -283,13 +289,13 @@ async function updateRolesOnUserTable(db, roleId, updateOption) {
283
289
  const indexOf = constraints.inclusion.indexOf(roleId)
284
290
  if (remove &amp;&amp; indexOf !== -1) {
285
291
  constraints.inclusion.splice(indexOf, 1)
286
- } else if (!remove &amp;&amp; indexOf === -1) {
292
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>if (!remove &amp;&amp; indexOf === -1) {
287
293
  constraints.inclusion.push(roleId)
288
294
  }
289
295
  break
290
296
  }
291
297
  }
292
- if (updated) {
298
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (updated) {
293
299
  await db.put(table)
294
300
  }
295
301
  }
@@ -357,10 +363,9 @@ exports.destroy = async function (ctx) {
357
363
  </div><!-- /wrapper -->
358
364
  <div class='footer quiet pad2 space-top1 center small'>
359
365
  Code coverage generated by
360
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
361
- at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
366
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
367
+ at Thu Apr 21 2022 11:51:51 GMT+0000 (Coordinated Universal Time)
362
368
  </div>
363
- </div>
364
369
  <script src="../../prettify.js"></script>
365
370
  <script>
366
371
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -317,7 +323,7 @@ exports.clientFetch = async ctx =&gt; {
317
323
  <span class="cstat-no" title="statement not covered" > found = true</span>
318
324
  } else {
319
325
  for (let roleId of roleIds) {
320
- if (roleOptions.indexOf(roleId) !== -1) {
326
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (roleOptions.indexOf(roleId) !== -1) {
321
327
  subpath.screenId = subpath.screens[roleId]
322
328
  subpath.roleId = roleId
323
329
  found = true
@@ -339,10 +345,9 @@ exports.clientFetch = async ctx =&gt; {
339
345
  </div><!-- /wrapper -->
340
346
  <div class='footer quiet pad2 space-top1 center small'>
341
347
  Code coverage generated by
342
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
343
- at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
348
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
349
+ at Thu Apr 21 2022 11:51:51 GMT+0000 (Coordinated Universal Time)
344
350
  </div>
345
- </div>
346
351
  <script src="../../prettify.js"></script>
347
352
  <script>
348
353
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line low'></div>
59
65
  <pre><table class="coverage">
@@ -762,10 +768,9 @@ exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >
762
768
  </div><!-- /wrapper -->
763
769
  <div class='footer quiet pad2 space-top1 center small'>
764
770
  Code coverage generated by
765
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
766
- at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
771
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
772
+ at Thu Apr 21 2022 11:51:51 GMT+0000 (Coordinated Universal Time)
767
773
  </div>
768
- </div>
769
774
  <script src="../../../prettify.js"></script>
770
775
  <script>
771
776
  window.onload = function () {
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">61.73% </span>
26
+ <span class="strong">57.73% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>426/690</span>
28
+ <span class='fraction'>347/601</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">42.61% </span>
33
+ <span class="strong">36.09% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>127/298</span>
35
+ <span class='fraction'>96/266</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">58.16% </span>
40
+ <span class="strong">53.48% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>57/98</span>
42
+ <span class='fraction'>46/86</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">61.89% </span>
47
+ <span class="strong">57.82% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>419/677</span>
49
+ <span class='fraction'>340/588</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line medium'></div>
59
65
  <div class="pad1">
@@ -87,34 +93,19 @@
87
93
  <td data-value="110" class="abs low">18/110</td>
88
94
  </tr>
89
95
 
90
- <tr>
91
- <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
- <td data-value="88.88" class="pic high">
93
- <div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
94
- </td>
95
- <td data-value="88.88" class="pct high">88.88%</td>
96
- <td data-value="90" class="abs high">80/90</td>
97
- <td data-value="94.11" class="pct high">94.11%</td>
98
- <td data-value="34" class="abs high">32/34</td>
99
- <td data-value="91.66" class="pct high">91.66%</td>
100
- <td data-value="12" class="abs high">11/12</td>
101
- <td data-value="88.88" class="pct high">88.88%</td>
102
- <td data-value="90" class="abs high">80/90</td>
103
- </tr>
104
-
105
96
  <tr>
106
97
  <td class="file high" data-value="internal.js"><a href="internal.js.html">internal.js</a></td>
107
- <td data-value="80.64" class="pic high">
98
+ <td data-value="80.73" class="pic high">
108
99
  <div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
109
100
  </td>
110
- <td data-value="80.64" class="pct high">80.64%</td>
111
- <td data-value="217" class="abs high">175/217</td>
112
- <td data-value="62.9" class="pct medium">62.9%</td>
113
- <td data-value="62" class="abs medium">39/62</td>
101
+ <td data-value="80.73" class="pct high">80.73%</td>
102
+ <td data-value="218" class="abs high">176/218</td>
103
+ <td data-value="62.5" class="pct medium">62.5%</td>
104
+ <td data-value="64" class="abs medium">40/64</td>
114
105
  <td data-value="84.61" class="pct high">84.61%</td>
115
106
  <td data-value="26" class="abs high">22/26</td>
116
- <td data-value="80.56" class="pct high">80.56%</td>
117
- <td data-value="211" class="abs high">170/211</td>
107
+ <td data-value="80.66" class="pct high">80.66%</td>
108
+ <td data-value="212" class="abs high">171/212</td>
118
109
  </tr>
119
110
 
120
111
  <tr>
@@ -169,10 +160,9 @@
169
160
  </div><!-- /wrapper -->
170
161
  <div class='footer quiet pad2 space-top1 center small'>
171
162
  Code coverage generated by
172
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
173
- at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
163
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
+ at Thu Apr 21 2022 11:51:51 GMT+0000 (Coordinated Universal Time)
174
165
  </div>
175
- </div>
176
166
  <script src="../../../prettify.js"></script>
177
167
  <script>
178
168
  window.onload = function () {
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">80.64% </span>
26
+ <span class="strong">80.73% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>175/217</span>
28
+ <span class='fraction'>176/218</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">62.9% </span>
33
+ <span class="strong">62.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>39/62</span>
35
+ <span class='fraction'>40/64</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">80.56% </span>
47
+ <span class="strong">80.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>170/211</span>
49
+ <span class='fraction'>171/212</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -510,7 +516,8 @@
510
516
  <a name='L451'></a><a href='#L451'>451</a>
511
517
  <a name='L452'></a><a href='#L452'>452</a>
512
518
  <a name='L453'></a><a href='#L453'>453</a>
513
- <a name='L454'></a><a href='#L454'>454</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">40x</span>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">40x</span>
514
521
  <span class="cline-any cline-neutral">&nbsp;</span>
515
522
  <span class="cline-any cline-neutral">&nbsp;</span>
516
523
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -656,35 +663,35 @@
656
663
  <span class="cline-any cline-neutral">&nbsp;</span>
657
664
  <span class="cline-any cline-neutral">&nbsp;</span>
658
665
  <span class="cline-any cline-yes">40x</span>
659
- <span class="cline-any cline-yes">71x</span>
660
- <span class="cline-any cline-yes">71x</span>
661
- <span class="cline-any cline-yes">71x</span>
666
+ <span class="cline-any cline-yes">70x</span>
667
+ <span class="cline-any cline-yes">70x</span>
668
+ <span class="cline-any cline-yes">70x</span>
662
669
  <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-yes">71x</span>
664
- <span class="cline-any cline-yes">71x</span>
670
+ <span class="cline-any cline-yes">70x</span>
671
+ <span class="cline-any cline-yes">70x</span>
665
672
  <span class="cline-any cline-neutral">&nbsp;</span>
666
673
  <span class="cline-any cline-neutral">&nbsp;</span>
667
674
  <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-yes">71x</span>
669
- <span class="cline-any cline-yes">71x</span>
670
- <span class="cline-any cline-yes">71x</span>
675
+ <span class="cline-any cline-yes">70x</span>
676
+ <span class="cline-any cline-yes">70x</span>
677
+ <span class="cline-any cline-yes">70x</span>
671
678
  <span class="cline-any cline-neutral">&nbsp;</span>
672
679
  <span class="cline-any cline-neutral">&nbsp;</span>
673
680
  <span class="cline-any cline-neutral">&nbsp;</span>
674
681
  <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-yes">71x</span>
682
+ <span class="cline-any cline-yes">70x</span>
676
683
  <span class="cline-any cline-no">&nbsp;</span>
677
684
  <span class="cline-any cline-neutral">&nbsp;</span>
678
685
  <span class="cline-any cline-neutral">&nbsp;</span>
679
686
  <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-yes">71x</span>
687
+ <span class="cline-any cline-yes">70x</span>
681
688
  <span class="cline-any cline-neutral">&nbsp;</span>
682
689
  <span class="cline-any cline-neutral">&nbsp;</span>
683
690
  <span class="cline-any cline-neutral">&nbsp;</span>
684
691
  <span class="cline-any cline-neutral">&nbsp;</span>
685
692
  <span class="cline-any cline-neutral">&nbsp;</span>
686
693
  <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-yes">70x</span>
694
+ <span class="cline-any cline-yes">69x</span>
688
695
  <span class="cline-any cline-neutral">&nbsp;</span>
689
696
  <span class="cline-any cline-neutral">&nbsp;</span>
690
697
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -773,6 +780,7 @@
773
780
  <span class="cline-any cline-yes">4x</span>
774
781
  <span class="cline-any cline-yes">4x</span>
775
782
  <span class="cline-any cline-yes">4x</span>
783
+ <span class="cline-any cline-yes">3x</span>
776
784
  <span class="cline-any cline-neutral">&nbsp;</span>
777
785
  <span class="cline-any cline-yes">3x</span>
778
786
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1113,7 +1121,7 @@ exports.save = async function (ctx) {
1113
1121
  let inputs = ctx.request.body
1114
1122
  inputs.tableId = ctx.params.tableId
1115
1123
  &nbsp;
1116
- if (!inputs._rev &amp;&amp; !inputs._id) {
1124
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!inputs._rev &amp;&amp; !inputs._id) {
1117
1125
  inputs._id = generateRowID(inputs.tableId)
1118
1126
  }
1119
1127
  &nbsp;
@@ -1224,8 +1232,9 @@ exports.find = async ctx =&gt; {
1224
1232
  &nbsp;
1225
1233
  exports.destroy = async function (ctx) {
1226
1234
  const db = getAppDB()
1227
- const { _id, _rev } = ctx.request.body
1235
+ const { _id } = ctx.request.body
1228
1236
  let row = await db.get(_id)
1237
+ let _rev = ctx.request.body._rev || <span class="branch-1 cbranch-no" title="branch not covered" >row._rev</span>
1229
1238
  &nbsp;
1230
1239
  <span class="missing-if-branch" title="if path not taken" >I</span>if (row.tableId !== ctx.params.tableId) {
1231
1240
  <span class="cstat-no" title="statement not covered" > throw "Supplied tableId doesn't match the row's tableId"</span>
@@ -1314,7 +1323,7 @@ exports.search = async ctx =&gt; {
1314
1323
  }
1315
1324
  &nbsp;
1316
1325
  // Enrich search results with relationships
1317
- if (response.rows &amp;&amp; response.rows.length) {
1326
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (response.rows &amp;&amp; response.rows.length) {
1318
1327
  // enrich with global users if from users table
1319
1328
  <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
1320
1329
  <span class="cstat-no" title="statement not covered" > response.rows = await getGlobalUsersFromMetadata(response.rows)</span>
@@ -1422,10 +1431,9 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1422
1431
  </div><!-- /wrapper -->
1423
1432
  <div class='footer quiet pad2 space-top1 center small'>
1424
1433
  Code coverage generated by
1425
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1426
- at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
1434
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1435
+ at Thu Apr 21 2022 11:51:51 GMT+0000 (Coordinated Universal Time)
1427
1436
  </div>
1428
- </div>
1429
1437
  <script src="../../../prettify.js"></script>
1430
1438
  <script>
1431
1439
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line medium'></div>
59
65
  <pre><table class="coverage">
@@ -886,7 +892,7 @@ class QueryBuilder {
886
892
  }
887
893
  &nbsp;
888
894
  setLimit(limit) {
889
- if (limit != null) {
895
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (limit != null) {
890
896
  this.limit = limit
891
897
  }
892
898
  return this
@@ -977,7 +983,7 @@ class QueryBuilder {
977
983
  value = value.toLowerCase ? value.toLowerCase() : <span class="branch-1 cbranch-no" title="branch not covered" >value</span>
978
984
  }
979
985
  // Escape characters
980
- if (escape &amp;&amp; originalType === "string") {
986
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (escape &amp;&amp; originalType === "string") {
981
987
  value = `${value}`.replace(/[ #+\-&amp;|!(){}\]^"~*?:\\]/g, "\\$&amp;")
982
988
  }
983
989
  // Wrap in quotes
@@ -1006,7 +1012,7 @@ class QueryBuilder {
1006
1012
  }
1007
1013
  &nbsp;
1008
1014
  // Construct the actual lucene search query string from JSON structure
1009
- if (this.query.string) {
1015
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.query.string) {
1010
1016
  build(this.query.string, <span class="fstat-no" title="function not covered" >(k</span>ey, value) =&gt; {
1011
1017
  <span class="cstat-no" title="statement not covered" > if (!value) {</span>
1012
1018
  <span class="cstat-no" title="statement not covered" > return null</span>
@@ -1018,7 +1024,7 @@ class QueryBuilder {
1018
1024
  <span class="cstat-no" title="statement not covered" > return `${key}:${value}*`</span>
1019
1025
  })
1020
1026
  }
1021
- if (this.query.range) {
1027
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.query.range) {
1022
1028
  build(this.query.range, <span class="fstat-no" title="function not covered" >(k</span>ey, value) =&gt; {
1023
1029
  <span class="cstat-no" title="statement not covered" > if (!value) {</span>
1024
1030
  <span class="cstat-no" title="statement not covered" > return null</span>
@@ -1034,7 +1040,7 @@ class QueryBuilder {
1034
1040
  <span class="cstat-no" title="statement not covered" > return `${key}:[${low} TO ${high}]`</span>
1035
1041
  })
1036
1042
  }
1037
- if (this.query.fuzzy) {
1043
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.query.fuzzy) {
1038
1044
  build(this.query.fuzzy, <span class="fstat-no" title="function not covered" >(k</span>ey, value) =&gt; {
1039
1045
  <span class="cstat-no" title="statement not covered" > if (!value) {</span>
1040
1046
  <span class="cstat-no" title="statement not covered" > return null</span>
@@ -1046,7 +1052,7 @@ class QueryBuilder {
1046
1052
  <span class="cstat-no" title="statement not covered" > return `${key}:${value}~`</span>
1047
1053
  })
1048
1054
  }
1049
- if (this.query.equal) {
1055
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.query.equal) {
1050
1056
  build(this.query.equal, (key, value) =&gt; {
1051
1057
  // 0 evaluates to false, which means we would return all rows if we don't check it
1052
1058
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!value &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >value !== 0)</span> {
@@ -1055,7 +1061,7 @@ class QueryBuilder {
1055
1061
  return `${key}:${builder.preprocess(value, allPreProcessingOpts)}`
1056
1062
  })
1057
1063
  }
1058
- if (this.query.notEqual) {
1064
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.query.notEqual) {
1059
1065
  build(this.query.notEqual, <span class="fstat-no" title="function not covered" >(k</span>ey, value) =&gt; {
1060
1066
  <span class="cstat-no" title="statement not covered" > if (!value) {</span>
1061
1067
  <span class="cstat-no" title="statement not covered" > return null</span>
@@ -1063,10 +1069,10 @@ class QueryBuilder {
1063
1069
  <span class="cstat-no" title="statement not covered" > return `!${key}:${builder.preprocess(value, allPreProcessingOpts)}`</span>
1064
1070
  })
1065
1071
  }
1066
- if (this.query.empty) {
1072
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.query.empty) {
1067
1073
  build(this.query.empty, <span class="fstat-no" title="function not covered" >ke</span>y =&gt; <span class="cstat-no" title="statement not covered" >`!${key}:["" TO *]`)</span>
1068
1074
  }
1069
- if (this.query.notEmpty) {
1075
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.query.notEmpty) {
1070
1076
  build(this.query.notEmpty, <span class="fstat-no" title="function not covered" >ke</span>y =&gt; <span class="cstat-no" title="statement not covered" >`${key}:["" TO *]`)</span>
1071
1077
  }
1072
1078
  return query
@@ -1115,10 +1121,10 @@ const runQuery = async (url, body) =&gt; {
1115
1121
  let output = {
1116
1122
  rows: [],
1117
1123
  }
1118
- if (json.rows != null &amp;&amp; json.rows.length &gt; 0) {
1124
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (json.rows != null &amp;&amp; json.rows.length &gt; 0) {
1119
1125
  output.rows = json.rows.map(row =&gt; row.doc)
1120
1126
  }
1121
- if (json.bookmark) {
1127
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (json.bookmark) {
1122
1128
  output.bookmark = json.bookmark
1123
1129
  }
1124
1130
  return output
@@ -1162,7 +1168,7 @@ const recursiveSearch = async (query, params) =&gt; {
1162
1168
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!page.rows.length) {
1163
1169
  <span class="cstat-no" title="statement not covered" > return rows</span>
1164
1170
  }
1165
- if (page.rows.length &lt; 200) {
1171
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (page.rows.length &lt; 200) {
1166
1172
  return [...rows, ...page.rows]
1167
1173
  }
1168
1174
  const newParams = <span class="cstat-no" title="statement not covered" >{</span>
@@ -1235,7 +1241,7 @@ exports.paginatedSearch = <span class="fstat-no" title="function not covered" >a
1235
1241
  */
1236
1242
  exports.fullSearch = async (query, params) =&gt; {
1237
1243
  let limit = params.limit
1238
- if (limit == null || <span class="branch-1 cbranch-no" title="branch not covered" >isNaN(limit) </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >limit &lt; 0)</span> {
1244
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (limit == null || <span class="branch-1 cbranch-no" title="branch not covered" >isNaN(limit) </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >limit &lt; 0)</span> {
1239
1245
  limit = 1000
1240
1246
  }
1241
1247
  params.limit = Math.min(limit, 1000)
@@ -1248,10 +1254,9 @@ exports.fullSearch = async (query, params) =&gt; {
1248
1254
  </div><!-- /wrapper -->
1249
1255
  <div class='footer quiet pad2 space-top1 center small'>
1250
1256
  Code coverage generated by
1251
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1252
- at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
1257
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1258
+ at Thu Apr 21 2022 11:51:51 GMT+0000 (Coordinated Universal Time)
1253
1259
  </div>
1254
- </div>
1255
1260
  <script src="../../../prettify.js"></script>
1256
1261
  <script>
1257
1262
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
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
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line low'></div>
59
65
  <pre><table class="coverage">
@@ -231,10 +237,10 @@
231
237
  <span class="cline-any cline-neutral">&nbsp;</span>
232
238
  <span class="cline-any cline-neutral">&nbsp;</span>
233
239
  <span class="cline-any cline-yes">40x</span>
234
- <span class="cline-any cline-yes">80x</span>
240
+ <span class="cline-any cline-yes">79x</span>
235
241
  <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-yes">80x</span>
237
- <span class="cline-any cline-yes">80x</span>
242
+ <span class="cline-any cline-yes">79x</span>
243
+ <span class="cline-any cline-yes">79x</span>
238
244
  <span class="cline-any cline-neutral">&nbsp;</span>
239
245
  <span class="cline-any cline-no">&nbsp;</span>
240
246
  <span class="cline-any cline-no">&nbsp;</span>
@@ -328,14 +334,14 @@
328
334
  <span class="cline-any cline-neutral">&nbsp;</span>
329
335
  <span class="cline-any cline-neutral">&nbsp;</span>
330
336
  <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-yes">75x</span>
332
- <span class="cline-any cline-yes">75x</span>
337
+ <span class="cline-any cline-yes">74x</span>
338
+ <span class="cline-any cline-yes">74x</span>
333
339
  <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-yes">75x</span>
340
+ <span class="cline-any cline-yes">74x</span>
335
341
  <span class="cline-any cline-neutral">&nbsp;</span>
336
342
  <span class="cline-any cline-neutral">&nbsp;</span>
337
343
  <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-yes">75x</span>
344
+ <span class="cline-any cline-yes">74x</span>
339
345
  <span class="cline-any cline-neutral">&nbsp;</span>
340
346
  <span class="cline-any cline-neutral">&nbsp;</span>
341
347
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -343,7 +349,7 @@
343
349
  <span class="cline-any cline-neutral">&nbsp;</span>
344
350
  <span class="cline-any cline-neutral">&nbsp;</span>
345
351
  <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">75x</span>
352
+ <span class="cline-any cline-yes">74x</span>
347
353
  <span class="cline-any cline-no">&nbsp;</span>
348
354
  <span class="cline-any cline-no">&nbsp;</span>
349
355
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -359,15 +365,15 @@
359
365
  <span class="cline-any cline-neutral">&nbsp;</span>
360
366
  <span class="cline-any cline-neutral">&nbsp;</span>
361
367
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-yes">75x</span>
368
+ <span class="cline-any cline-yes">74x</span>
363
369
  <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-yes">75x</span>
365
- <span class="cline-any cline-yes">75x</span>
370
+ <span class="cline-any cline-yes">74x</span>
371
+ <span class="cline-any cline-yes">74x</span>
366
372
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-yes">75x</span>
368
- <span class="cline-any cline-yes">75x</span>
373
+ <span class="cline-any cline-yes">74x</span>
374
+ <span class="cline-any cline-yes">74x</span>
369
375
  <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-yes">75x</span>
376
+ <span class="cline-any cline-yes">74x</span>
371
377
  <span class="cline-any cline-neutral">&nbsp;</span>
372
378
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { getRowParams } = require("../../../db/utils")
373
379
  const {
@@ -389,7 +395,7 @@ const { getAppDB } = require("@budibase/backend-core/context")
389
395
  exports.updateRelatedFormula = async (table, enrichedRows) =&gt; {
390
396
  const db = getAppDB()
391
397
  // no formula to update, we're done
392
- if (!table.relatedFormula) {
398
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!table.relatedFormula) {
393
399
  return
394
400
  }
395
401
  let promises = <span class="cstat-no" title="statement not covered" >[]</span>
@@ -520,7 +526,7 @@ exports.finaliseRow = async (
520
526
  enrichedRow._rev = response.rev
521
527
  enrichedRow = await processFormulas(table, enrichedRow, { dynamic: false })
522
528
  // this updates the related formulas in other rows based on the relations to this row
523
- if (updateFormula) {
529
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (updateFormula) {
524
530
  await exports.updateRelatedFormula(table, enrichedRow)
525
531
  }
526
532
  return { row: enrichedRow, table }
@@ -531,10 +537,9 @@ exports.finaliseRow = async (
531
537
  </div><!-- /wrapper -->
532
538
  <div class='footer quiet pad2 space-top1 center small'>
533
539
  Code coverage generated by
534
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
535
- at Tue Apr 19 2022 12:05:25 GMT+0000 (Coordinated Universal Time)
540
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
541
+ at Thu Apr 21 2022 11:51:51 GMT+0000 (Coordinated Universal Time)
536
542
  </div>
537
- </div>
538
543
  <script src="../../../prettify.js"></script>
539
544
  <script>
540
545
  window.onload = function () {