@budibase/server 1.0.123 → 1.0.125

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 (325) hide show
  1. package/builder/assets/index.3d890df7.js +1299 -0
  2. package/builder/assets/index.89795487.css +6 -0
  3. package/builder/assets/{vendor.8e34a169.js → vendor.5240f480.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +695 -1678
  6. package/coverage/coverage-final.json +28 -43
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +8 -3
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +9 -4
  9. package/coverage/lcov-report/api/controllers/auth.js.html +8 -3
  10. package/coverage/lcov-report/api/controllers/automation.js.html +8 -3
  11. package/coverage/lcov-report/api/controllers/backup.js.html +8 -3
  12. package/coverage/lcov-report/api/controllers/cloud.js.html +8 -3
  13. package/coverage/lcov-report/api/controllers/component.js.html +8 -3
  14. package/coverage/lcov-report/api/controllers/datasource.js.html +11 -6
  15. package/coverage/lcov-report/api/controllers/dev.js.html +8 -3
  16. package/coverage/lcov-report/api/controllers/index.html +16 -26
  17. package/coverage/lcov-report/api/controllers/integration.js.html +8 -3
  18. package/coverage/lcov-report/api/controllers/layout.js.html +8 -3
  19. package/coverage/lcov-report/api/controllers/metadata.js.html +8 -3
  20. package/coverage/lcov-report/api/controllers/migrations.js.html +8 -3
  21. package/coverage/lcov-report/api/controllers/permission.js.html +8 -3
  22. package/coverage/lcov-report/api/controllers/query/index.html +16 -26
  23. package/coverage/lcov-report/api/controllers/query/validation.js.html +8 -3
  24. package/coverage/lcov-report/api/controllers/role.js.html +10 -5
  25. package/coverage/lcov-report/api/controllers/routing.js.html +9 -4
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +8 -3
  27. package/coverage/lcov-report/api/controllers/row/index.html +25 -35
  28. package/coverage/lcov-report/api/controllers/row/internal.js.html +32 -24
  29. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +21 -16
  30. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +24 -19
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +33 -19
  32. package/coverage/lcov-report/api/controllers/screen.js.html +9 -4
  33. package/coverage/lcov-report/api/controllers/script.js.html +8 -3
  34. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +55 -50
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +8 -3
  36. package/coverage/lcov-report/api/controllers/table/index.html +19 -44
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +20 -15
  38. package/coverage/lcov-report/api/controllers/templates.js.html +8 -3
  39. package/coverage/lcov-report/api/controllers/user.js.html +8 -3
  40. package/coverage/lcov-report/api/controllers/view/exporters.js.html +8 -3
  41. package/coverage/lcov-report/api/controllers/view/index.html +8 -3
  42. package/coverage/lcov-report/api/controllers/view/index.js.html +10 -5
  43. package/coverage/lcov-report/api/controllers/view/utils.js.html +8 -3
  44. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +8 -3
  45. package/coverage/lcov-report/api/controllers/webhook.js.html +10 -5
  46. package/coverage/lcov-report/api/index.html +18 -13
  47. package/coverage/lcov-report/api/index.js.html +28 -8
  48. package/coverage/lcov-report/api/routes/analytics.js.html +8 -3
  49. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -3
  50. package/coverage/lcov-report/api/routes/auth.js.html +8 -3
  51. package/coverage/lcov-report/api/routes/automation.js.html +8 -3
  52. package/coverage/lcov-report/api/routes/backup.js.html +8 -3
  53. package/coverage/lcov-report/api/routes/cloud.js.html +8 -3
  54. package/coverage/lcov-report/api/routes/component.js.html +8 -3
  55. package/coverage/lcov-report/api/routes/datasource.js.html +8 -3
  56. package/coverage/lcov-report/api/routes/deploy.js.html +8 -3
  57. package/coverage/lcov-report/api/routes/dev.js.html +9 -4
  58. package/coverage/lcov-report/api/routes/index.html +13 -68
  59. package/coverage/lcov-report/api/routes/integration.js.html +8 -3
  60. package/coverage/lcov-report/api/routes/layout.js.html +8 -3
  61. package/coverage/lcov-report/api/routes/metadata.js.html +8 -3
  62. package/coverage/lcov-report/api/routes/migrations.js.html +8 -3
  63. package/coverage/lcov-report/api/routes/permission.js.html +8 -3
  64. package/coverage/lcov-report/api/routes/query.js.html +8 -3
  65. package/coverage/lcov-report/api/routes/role.js.html +8 -3
  66. package/coverage/lcov-report/api/routes/routing.js.html +8 -3
  67. package/coverage/lcov-report/api/routes/screen.js.html +8 -3
  68. package/coverage/lcov-report/api/routes/script.js.html +8 -3
  69. package/coverage/lcov-report/api/routes/table.js.html +8 -3
  70. package/coverage/lcov-report/api/routes/templates.js.html +8 -3
  71. package/coverage/lcov-report/api/routes/user.js.html +8 -3
  72. package/coverage/lcov-report/api/routes/utils/index.html +8 -3
  73. package/coverage/lcov-report/api/routes/utils/validators.js.html +8 -3
  74. package/coverage/lcov-report/api/routes/view.js.html +8 -3
  75. package/coverage/lcov-report/api/routes/webhook.js.html +8 -3
  76. package/coverage/lcov-report/automations/actions.js.html +21 -7
  77. package/coverage/lcov-report/automations/automationUtils.js.html +64 -23
  78. package/coverage/lcov-report/automations/bullboard.js.html +8 -3
  79. package/coverage/lcov-report/automations/index.html +27 -37
  80. package/coverage/lcov-report/automations/index.js.html +8 -3
  81. package/coverage/lcov-report/automations/steps/bash.js.html +8 -3
  82. package/coverage/lcov-report/automations/steps/delay.js.html +8 -3
  83. package/coverage/lcov-report/automations/steps/discord.js.html +8 -3
  84. package/coverage/lcov-report/automations/steps/executeQuery.js.html +8 -3
  85. package/coverage/lcov-report/automations/steps/executeScript.js.html +8 -3
  86. package/coverage/lcov-report/automations/steps/filter.js.html +8 -3
  87. package/coverage/lcov-report/automations/steps/index.html +31 -41
  88. package/coverage/lcov-report/automations/steps/integromat.js.html +8 -3
  89. package/coverage/lcov-report/{api/routes/static.js.html → automations/steps/loop.js.html} +70 -80
  90. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +9 -4
  91. package/coverage/lcov-report/automations/steps/queryRows.js.html +9 -4
  92. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +8 -3
  93. package/coverage/lcov-report/automations/steps/serverLog.js.html +8 -3
  94. package/coverage/lcov-report/automations/steps/slack.js.html +8 -3
  95. package/coverage/lcov-report/automations/steps/updateRow.js.html +8 -3
  96. package/coverage/lcov-report/automations/steps/utils.js.html +14 -9
  97. package/coverage/lcov-report/automations/steps/zapier.js.html +8 -3
  98. package/coverage/lcov-report/automations/triggerInfo/app.js.html +8 -3
  99. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +8 -3
  100. package/coverage/lcov-report/automations/triggerInfo/index.html +8 -3
  101. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -3
  102. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +8 -3
  103. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +8 -3
  104. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +8 -3
  105. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +8 -3
  106. package/coverage/lcov-report/automations/triggers.js.html +16 -11
  107. package/coverage/lcov-report/block-navigation.js +8 -0
  108. package/coverage/lcov-report/constants/index.html +12 -7
  109. package/coverage/lcov-report/constants/index.js.html +55 -32
  110. package/coverage/lcov-report/constants/layouts.js.html +8 -3
  111. package/coverage/lcov-report/constants/screens.js.html +8 -3
  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 +9 -4
  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 +84 -79
  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 +125 -120
  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 +65 -15
  131. package/coverage/lcov-report/middleware/index.html +25 -50
  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 +581 -90
  139. package/coverage/lcov-report/threads/index.html +30 -40
  140. package/coverage/lcov-report/threads/query.js.html +9 -4
  141. package/coverage/lcov-report/threads/utils.js.html +17 -9
  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 +48 -43
  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 +44 -39
  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 +1144 -2875
  165. package/dist/api/controllers/application.js +145 -73
  166. package/dist/api/controllers/deploy/index.js +68 -36
  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/row/utils.js +2 -1
  179. package/dist/api/controllers/static/templates/BudibaseApp.svelte +3 -0
  180. package/dist/api/controllers/table/bulkFormula.js +2 -1
  181. package/dist/api/controllers/table/internal.js +41 -35
  182. package/dist/api/controllers/table/utils.js +271 -229
  183. package/dist/api/index.js +5 -0
  184. package/dist/api/routes/application.js +39 -13
  185. package/dist/api/routes/index.js +61 -56
  186. package/dist/api/routes/public/index.js +6 -9
  187. package/dist/api/routes/public/queries.js +1 -1
  188. package/dist/api/routes/public/rows.js +1 -1
  189. package/dist/api/routes/public/tables.js +3 -3
  190. package/dist/api/routes/public/users.js +1 -1
  191. package/dist/api/routes/row.js +43 -17
  192. package/dist/api/routes/static.js +40 -13
  193. package/dist/api/routes/tests/utilities/TestFunctions.js +75 -33
  194. package/dist/app.js +8 -4
  195. package/dist/automations/actions.js +3 -0
  196. package/dist/automations/automationUtils.js +10 -0
  197. package/dist/automations/steps/createRow.js +12 -12
  198. package/dist/automations/steps/deleteRow.js +13 -16
  199. package/dist/automations/steps/loop.js +51 -0
  200. package/dist/automations/tests/utilities/index.js +13 -11
  201. package/dist/automations/utils.js +187 -133
  202. package/dist/constants/index.js +5 -0
  203. package/dist/definitions/datasource.js +1 -0
  204. package/dist/environment.js +2 -3
  205. package/dist/index.js +4 -0
  206. package/dist/integrations/base/sql.js +2 -2
  207. package/dist/integrations/base/sqlTable.js +2 -2
  208. package/dist/integrations/googlesheets.js +1 -1
  209. package/dist/integrations/index.js +4 -0
  210. package/dist/integrations/microsoftSqlServer.js +8 -8
  211. package/dist/integrations/mysql.js +9 -9
  212. package/dist/integrations/oracle.js +7 -7
  213. package/dist/integrations/postgres.js +7 -7
  214. package/dist/integrations/queries/sql.js +2 -2
  215. package/dist/integrations/redis.js +158 -0
  216. package/dist/integrations/rest.js +1 -1
  217. package/dist/middleware/authorized.js +51 -51
  218. package/dist/middleware/currentapp.js +15 -1
  219. package/dist/migrations/functions/appUrls.js +1 -1
  220. package/dist/migrations/functions/developerQuota.js +49 -0
  221. package/dist/migrations/functions/publishedAppsQuota.js +47 -0
  222. package/dist/migrations/functions/quotas1.js +6 -2
  223. package/dist/migrations/functions/usageQuotas/index.js +0 -4
  224. package/dist/migrations/functions/usageQuotas/syncApps.js +4 -7
  225. package/dist/migrations/functions/usageQuotas/syncDevelopers.js +24 -0
  226. package/dist/migrations/functions/usageQuotas/syncPublishedApps.js +26 -0
  227. package/dist/migrations/functions/usageQuotas/syncRows.js +5 -8
  228. package/dist/migrations/index.js +17 -1
  229. package/dist/package.json +14 -8
  230. package/dist/threads/automation.js +149 -27
  231. package/dist/threads/index.js +36 -10
  232. package/dist/threads/utils.js +1 -0
  233. package/dist/tsconfig.build.tsbuildinfo +1 -0
  234. package/dist/utilities/queue/inMemoryQueue.js +6 -1
  235. package/nodemon.json +1 -1
  236. package/package.json +15 -9
  237. package/scripts/dev/manage.js +2 -0
  238. package/src/api/controllers/{application.js → application.ts} +118 -51
  239. package/src/api/controllers/deploy/{index.js → index.ts} +53 -29
  240. package/src/api/controllers/public/applications.ts +2 -2
  241. package/src/api/controllers/public/queries.ts +1 -1
  242. package/src/api/controllers/public/rows.ts +1 -1
  243. package/src/api/controllers/query/{index.js → index.ts} +51 -48
  244. package/src/api/controllers/row/ExternalRequest.ts +1 -1
  245. package/src/api/controllers/row/{index.js → index.ts} +24 -17
  246. package/src/api/controllers/row/internal.js +2 -1
  247. package/src/api/controllers/row/utils.js +4 -1
  248. package/src/api/controllers/static/templates/BudibaseApp.svelte +3 -0
  249. package/src/api/controllers/table/bulkFormula.js +1 -1
  250. package/src/api/controllers/table/{internal.js → internal.ts} +30 -26
  251. package/src/api/controllers/table/{utils.js → utils.ts} +86 -69
  252. package/src/api/index.js +5 -0
  253. package/src/api/routes/{application.js → application.ts} +8 -14
  254. package/src/api/routes/index.ts +60 -0
  255. package/src/api/routes/public/index.ts +1 -4
  256. package/src/api/routes/{row.js → row.ts} +7 -15
  257. package/src/api/routes/{static.js → static.ts} +11 -11
  258. package/src/api/routes/tests/misc.spec.js +39 -37
  259. package/src/api/routes/tests/utilities/{TestFunctions.js → TestFunctions.ts} +57 -33
  260. package/src/app.ts +1 -2
  261. package/src/automations/actions.js +3 -0
  262. package/src/automations/automationUtils.js +12 -0
  263. package/src/automations/steps/{createRow.js → createRow.ts} +9 -15
  264. package/src/automations/steps/{deleteRow.js → deleteRow.ts} +10 -16
  265. package/src/automations/steps/loop.js +50 -0
  266. package/src/automations/tests/automation.spec.js +0 -1
  267. package/src/automations/tests/{createRow.spec.js → createRow.spec.ts} +4 -15
  268. package/src/automations/tests/{deleteRow.spec.js → deleteRow.spec.ts} +3 -5
  269. package/src/automations/tests/utilities/index.js +12 -10
  270. package/src/automations/{utils.js → utils.ts} +39 -28
  271. package/src/constants/index.js +6 -0
  272. package/src/definitions/common.ts +1 -0
  273. package/src/definitions/datasource.ts +1 -0
  274. package/src/environment.js +2 -3
  275. package/src/index.ts +3 -0
  276. package/src/integrations/index.ts +4 -0
  277. package/src/integrations/redis.ts +152 -0
  278. package/src/integrations/tests/redis.spec.js +60 -0
  279. package/src/middleware/{authorized.js → authorized.ts} +20 -14
  280. package/src/middleware/currentapp.js +16 -1
  281. package/src/middleware/tests/currentapp.spec.js +8 -4
  282. package/src/migrations/functions/developerQuota.ts +15 -0
  283. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  284. package/src/migrations/functions/tests/quotas1.spec.js +0 -2
  285. package/src/migrations/functions/usageQuotas/index.ts +0 -5
  286. package/src/migrations/functions/usageQuotas/syncApps.ts +3 -6
  287. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  288. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  289. package/src/migrations/functions/usageQuotas/syncRows.ts +3 -6
  290. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts +34 -0
  291. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +40 -0
  292. package/src/migrations/index.ts +13 -1
  293. package/src/threads/automation.js +196 -34
  294. package/src/threads/{index.js → index.ts} +18 -14
  295. package/src/threads/utils.js +1 -0
  296. package/src/utilities/queue/inMemoryQueue.js +7 -1
  297. package/tsconfig.build.json +10 -0
  298. package/tsconfig.json +2 -2
  299. package/builder/assets/index.68a7f4e3.css +0 -6
  300. package/builder/assets/index.8d4a5b33.js +0 -1291
  301. package/coverage/lcov-report/api/controllers/application.js.html +0 -1436
  302. package/coverage/lcov-report/api/controllers/query/index.js.html +0 -713
  303. package/coverage/lcov-report/api/controllers/row/index.js.html +0 -524
  304. package/coverage/lcov-report/api/controllers/table/internal.js.html +0 -620
  305. package/coverage/lcov-report/api/controllers/table/utils.js.html +0 -1331
  306. package/coverage/lcov-report/api/routes/application.js.html +0 -179
  307. package/coverage/lcov-report/api/routes/index.js.html +0 -266
  308. package/coverage/lcov-report/api/routes/row.js.html +0 -908
  309. package/coverage/lcov-report/automations/steps/createRow.js.html +0 -380
  310. package/coverage/lcov-report/automations/steps/deleteRow.js.html +0 -347
  311. package/coverage/lcov-report/automations/utils.js.html +0 -665
  312. package/coverage/lcov-report/middleware/authorized.js.html +0 -458
  313. package/coverage/lcov-report/middleware/usageQuota.js.html +0 -572
  314. package/coverage/lcov-report/threads/index.js.html +0 -296
  315. package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
  316. package/dist/middleware/usageQuota.js +0 -154
  317. package/dist/tsconfig.tsbuildinfo +0 -1
  318. package/dist/utilities/usageQuota/index.js +0 -86
  319. package/src/api/routes/index.js +0 -62
  320. package/src/middleware/tests/usageQuota.spec.js +0 -120
  321. package/src/middleware/usageQuota.js +0 -164
  322. package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -41
  323. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -45
  324. package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
  325. 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 26 2022 17:11:02 GMT+0000 (Coordinated Universal Time)
366
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
367
+ at Wed Apr 27 2022 09:28:42 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 26 2022 17:11:02 GMT+0000 (Coordinated Universal Time)
348
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
349
+ at Wed Apr 27 2022 09:28:42 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 26 2022 17:11:02 GMT+0000 (Coordinated Universal Time)
771
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
772
+ at Wed Apr 27 2022 09:28:42 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.79% </span>
26
+ <span class="strong">57.8% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>427/691</span>
28
+ <span class='fraction'>348/602</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">35.82% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>127/298</span>
35
+ <span class='fraction'>96/268</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.94% </span>
47
+ <span class="strong">57.89% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>420/678</span>
49
+ <span class='fraction'>341/589</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.73" class="pic high">
98
+ <td data-value="80.82" 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.73" class="pct high">80.73%</td>
111
- <td data-value="218" class="abs high">176/218</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.82" class="pct high">80.82%</td>
102
+ <td data-value="219" class="abs high">177/219</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.66" class="pct high">80.66%</td>
117
- <td data-value="212" class="abs high">171/212</td>
107
+ <td data-value="80.75" class="pct high">80.75%</td>
108
+ <td data-value="213" class="abs high">172/213</td>
118
109
  </tr>
119
110
 
120
111
  <tr>
@@ -154,8 +145,8 @@
154
145
  </td>
155
146
  <td data-value="69.23" class="pct medium">69.23%</td>
156
147
  <td data-value="52" class="abs medium">36/52</td>
157
- <td data-value="43.33" class="pct low">43.33%</td>
158
- <td data-value="30" class="abs low">13/30</td>
148
+ <td data-value="40.62" class="pct low">40.62%</td>
149
+ <td data-value="32" class="abs low">13/32</td>
159
150
  <td data-value="66.66" class="pct medium">66.66%</td>
160
151
  <td data-value="6" class="abs medium">4/6</td>
161
152
  <td data-value="68.62" class="pct medium">68.62%</td>
@@ -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 26 2022 17:11:02 GMT+0000 (Coordinated Universal Time)
163
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
+ at Wed Apr 27 2022 09:28:42 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.73% </span>
26
+ <span class="strong">80.82% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>176/218</span>
28
+ <span class='fraction'>177/219</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.66% </span>
47
+ <span class="strong">80.75% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>171/212</span>
49
+ <span class='fraction'>172/213</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">
@@ -511,7 +517,8 @@
511
517
  <a name='L452'></a><a href='#L452'>452</a>
512
518
  <a name='L453'></a><a href='#L453'>453</a>
513
519
  <a name='L454'></a><a href='#L454'>454</a>
514
- <a name='L455'></a><a href='#L455'>455</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">41x</span>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">41x</span>
515
522
  <span class="cline-any cline-neutral">&nbsp;</span>
516
523
  <span class="cline-any cline-neutral">&nbsp;</span>
517
524
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -658,35 +665,35 @@
658
665
  <span class="cline-any cline-neutral">&nbsp;</span>
659
666
  <span class="cline-any cline-neutral">&nbsp;</span>
660
667
  <span class="cline-any cline-yes">41x</span>
661
- <span class="cline-any cline-yes">71x</span>
662
- <span class="cline-any cline-yes">71x</span>
663
- <span class="cline-any cline-yes">71x</span>
668
+ <span class="cline-any cline-yes">70x</span>
669
+ <span class="cline-any cline-yes">70x</span>
670
+ <span class="cline-any cline-yes">70x</span>
664
671
  <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-yes">71x</span>
666
- <span class="cline-any cline-yes">71x</span>
672
+ <span class="cline-any cline-yes">70x</span>
673
+ <span class="cline-any cline-yes">70x</span>
667
674
  <span class="cline-any cline-neutral">&nbsp;</span>
668
675
  <span class="cline-any cline-neutral">&nbsp;</span>
669
676
  <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-yes">71x</span>
671
- <span class="cline-any cline-yes">71x</span>
672
- <span class="cline-any cline-yes">71x</span>
677
+ <span class="cline-any cline-yes">70x</span>
678
+ <span class="cline-any cline-yes">70x</span>
679
+ <span class="cline-any cline-yes">70x</span>
673
680
  <span class="cline-any cline-neutral">&nbsp;</span>
674
681
  <span class="cline-any cline-neutral">&nbsp;</span>
675
682
  <span class="cline-any cline-neutral">&nbsp;</span>
676
683
  <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-yes">71x</span>
684
+ <span class="cline-any cline-yes">70x</span>
678
685
  <span class="cline-any cline-no">&nbsp;</span>
679
686
  <span class="cline-any cline-neutral">&nbsp;</span>
680
687
  <span class="cline-any cline-neutral">&nbsp;</span>
681
688
  <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-yes">71x</span>
689
+ <span class="cline-any cline-yes">70x</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
694
  <span class="cline-any cline-neutral">&nbsp;</span>
688
695
  <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-yes">70x</span>
696
+ <span class="cline-any cline-yes">69x</span>
690
697
  <span class="cline-any cline-neutral">&nbsp;</span>
691
698
  <span class="cline-any cline-neutral">&nbsp;</span>
692
699
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -775,6 +782,7 @@
775
782
  <span class="cline-any cline-yes">4x</span>
776
783
  <span class="cline-any cline-yes">4x</span>
777
784
  <span class="cline-any cline-yes">4x</span>
785
+ <span class="cline-any cline-yes">3x</span>
778
786
  <span class="cline-any cline-neutral">&nbsp;</span>
779
787
  <span class="cline-any cline-yes">3x</span>
780
788
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1116,7 +1124,7 @@ exports.save = async function (ctx) {
1116
1124
  let inputs = ctx.request.body
1117
1125
  inputs.tableId = ctx.params.tableId
1118
1126
  &nbsp;
1119
- if (!inputs._rev &amp;&amp; !inputs._id) {
1127
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!inputs._rev &amp;&amp; !inputs._id) {
1120
1128
  inputs._id = generateRowID(inputs.tableId)
1121
1129
  }
1122
1130
  &nbsp;
@@ -1227,8 +1235,9 @@ exports.find = async ctx =&gt; {
1227
1235
  &nbsp;
1228
1236
  exports.destroy = async function (ctx) {
1229
1237
  const db = getAppDB()
1230
- const { _id, _rev } = ctx.request.body
1238
+ const { _id } = ctx.request.body
1231
1239
  let row = await db.get(_id)
1240
+ let _rev = ctx.request.body._rev || <span class="branch-1 cbranch-no" title="branch not covered" >row._rev</span>
1232
1241
  &nbsp;
1233
1242
  <span class="missing-if-branch" title="if path not taken" >I</span>if (row.tableId !== ctx.params.tableId) {
1234
1243
  <span class="cstat-no" title="statement not covered" > throw "Supplied tableId doesn't match the row's tableId"</span>
@@ -1317,7 +1326,7 @@ exports.search = async ctx =&gt; {
1317
1326
  }
1318
1327
  &nbsp;
1319
1328
  // Enrich search results with relationships
1320
- if (response.rows &amp;&amp; response.rows.length) {
1329
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (response.rows &amp;&amp; response.rows.length) {
1321
1330
  // enrich with global users if from users table
1322
1331
  <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
1323
1332
  <span class="cstat-no" title="statement not covered" > response.rows = await getGlobalUsersFromMetadata(response.rows)</span>
@@ -1425,10 +1434,9 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1425
1434
  </div><!-- /wrapper -->
1426
1435
  <div class='footer quiet pad2 space-top1 center small'>
1427
1436
  Code coverage generated by
1428
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1429
- at Tue Apr 26 2022 17:11:02 GMT+0000 (Coordinated Universal Time)
1437
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1438
+ at Wed Apr 27 2022 09:28:42 GMT+0000 (Coordinated Universal Time)
1430
1439
  </div>
1431
- </div>
1432
1440
  <script src="../../../prettify.js"></script>
1433
1441
  <script>
1434
1442
  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 26 2022 17:11:02 GMT+0000 (Coordinated Universal Time)
1257
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1258
+ at Wed Apr 27 2022 09:28:42 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">41x</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 26 2022 17:11:02 GMT+0000 (Coordinated Universal Time)
540
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
541
+ at Wed Apr 27 2022 09:28:42 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 () {