@budibase/server 0.9.185-alpha.1 → 0.9.185-alpha.13

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 (234) hide show
  1. package/Dockerfile +1 -1
  2. package/builder/assets/bb-space-man.5be51a45.svg +290 -0
  3. package/builder/assets/index.4a7c5636.css +1 -0
  4. package/builder/assets/index.dc495306.js +1317 -0
  5. package/builder/assets/vendor.470042a4.js +152 -0
  6. package/builder/assets/vendor.5e1fe644.css +1 -0
  7. package/builder/index.html +4 -4
  8. package/coverage/clover.xml +689 -598
  9. package/coverage/coverage-final.json +89 -87
  10. package/coverage/lcov-report/api/controllers/analytics.js.html +2 -2
  11. package/coverage/lcov-report/api/controllers/apikeys.js.html +2 -2
  12. package/coverage/lcov-report/api/controllers/application.js.html +43 -13
  13. package/coverage/lcov-report/api/controllers/auth.js.html +7 -7
  14. package/coverage/lcov-report/api/controllers/automation.js.html +3 -3
  15. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  18. package/coverage/lcov-report/api/controllers/datasource.js.html +129 -21
  19. package/coverage/lcov-report/api/controllers/dev.js.html +16 -7
  20. package/coverage/lcov-report/api/controllers/hosting.js.html +10 -10
  21. package/coverage/lcov-report/api/controllers/index.html +83 -83
  22. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/layout.js.html +3 -3
  24. package/coverage/lcov-report/api/controllers/metadata.js.html +3 -3
  25. package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
  26. package/coverage/lcov-report/api/controllers/query.js.html +48 -210
  27. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  28. package/coverage/lcov-report/api/controllers/routing.js.html +3 -3
  29. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  30. package/coverage/lcov-report/api/controllers/row/index.html +10 -10
  31. package/coverage/lcov-report/api/controllers/row/index.js.html +2 -2
  32. package/coverage/lcov-report/api/controllers/row/internal.js.html +9 -9
  33. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +2 -2
  35. package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
  36. package/coverage/lcov-report/api/controllers/script.js.html +3 -3
  37. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.html +11 -11
  39. package/coverage/lcov-report/api/controllers/table/index.js.html +3 -3
  40. package/coverage/lcov-report/api/controllers/table/internal.js.html +2 -2
  41. package/coverage/lcov-report/api/controllers/table/utils.js.html +8 -8
  42. package/coverage/lcov-report/api/controllers/templates.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/user.js.html +33 -18
  44. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.html +9 -9
  46. package/coverage/lcov-report/api/controllers/view/index.js.html +5 -5
  47. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  48. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -3
  49. package/coverage/lcov-report/api/controllers/webhook.js.html +4 -4
  50. package/coverage/lcov-report/api/index.html +1 -1
  51. package/coverage/lcov-report/api/index.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/dev.js.html +2 -2
  63. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.html +4 -4
  65. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/query.js.html +5 -2
  71. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/static.js.html +2 -2
  77. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  82. package/coverage/lcov-report/automations/actions.js.html +2 -2
  83. package/coverage/lcov-report/automations/automationUtils.js.html +3 -3
  84. package/coverage/lcov-report/automations/bullboard.js.html +71 -20
  85. package/coverage/lcov-report/automations/index.html +33 -48
  86. package/coverage/lcov-report/automations/index.js.html +2 -2
  87. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/discord.js.html +3 -3
  92. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -3
  94. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/index.html +14 -14
  96. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +3 -3
  98. package/coverage/lcov-report/automations/steps/queryRows.js.html +3 -3
  99. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/utils.js.html +7 -7
  104. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  106. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  107. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  109. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggers.js.html +22 -10
  114. package/coverage/lcov-report/automations/utils.js.html +42 -12
  115. package/coverage/lcov-report/constants/index.html +5 -5
  116. package/coverage/lcov-report/constants/index.js.html +25 -4
  117. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  118. package/coverage/lcov-report/constants/screens.js.html +1 -1
  119. package/coverage/lcov-report/db/client.js.html +2 -2
  120. package/coverage/lcov-report/db/inMemoryView.js.html +2 -2
  121. package/coverage/lcov-report/db/index.html +2 -2
  122. package/coverage/lcov-report/db/index.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +6 -6
  124. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  125. package/coverage/lcov-report/db/linkedRows/index.js.html +5 -5
  126. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +6 -6
  127. package/coverage/lcov-report/db/newid.js.html +1 -1
  128. package/coverage/lcov-report/db/utils.js.html +1 -1
  129. package/coverage/lcov-report/events/AutomationEmitter.js.html +6 -6
  130. package/coverage/lcov-report/events/index.html +6 -6
  131. package/coverage/lcov-report/events/index.js.html +1 -1
  132. package/coverage/lcov-report/events/utils.js.html +5 -5
  133. package/coverage/lcov-report/index.html +83 -68
  134. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  135. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  136. package/coverage/lcov-report/middleware/appInfo.js.html +2 -2
  137. package/coverage/lcov-report/middleware/authorized.js.html +4 -4
  138. package/coverage/lcov-report/middleware/builder.js.html +16 -7
  139. package/coverage/lcov-report/middleware/currentapp.js.html +6 -6
  140. package/coverage/lcov-report/middleware/index.html +21 -21
  141. package/coverage/lcov-report/middleware/joi-validator.js.html +2 -2
  142. package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
  143. package/coverage/lcov-report/middleware/selfhost.js.html +2 -2
  144. package/coverage/lcov-report/middleware/usageQuota.js.html +4 -4
  145. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  146. package/coverage/lcov-report/{automations/thread.js.html → threads/automation.js.html} +83 -32
  147. package/coverage/lcov-report/threads/index.html +141 -0
  148. package/coverage/lcov-report/threads/index.js.html +260 -0
  149. package/coverage/lcov-report/threads/query.js.html +269 -0
  150. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  151. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  152. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  153. package/coverage/lcov-report/utilities/csvParser.js.html +2 -2
  154. package/coverage/lcov-report/utilities/global.js.html +2 -2
  155. package/coverage/lcov-report/utilities/index.html +21 -21
  156. package/coverage/lcov-report/utilities/index.js.html +12 -9
  157. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +30 -9
  158. package/coverage/lcov-report/utilities/queue/index.html +14 -14
  159. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  160. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  161. package/coverage/lcov-report/utilities/rowProcessor/index.html +4 -4
  162. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +2 -2
  163. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +3 -3
  164. package/coverage/lcov-report/utilities/scriptRunner.js.html +16 -7
  165. package/coverage/lcov-report/utilities/security.js.html +3 -3
  166. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  167. package/coverage/lcov-report/utilities/users.js.html +1 -1
  168. package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
  169. package/coverage/lcov.info +1136 -972
  170. package/dist/api/controllers/application.js +11 -1
  171. package/dist/api/controllers/datasource.js +31 -7
  172. package/dist/api/controllers/deploy/index.js +2 -0
  173. package/dist/api/controllers/dev.js +4 -1
  174. package/dist/api/controllers/query.js +27 -57
  175. package/dist/api/controllers/user.js +10 -6
  176. package/dist/api/routes/query.js +1 -1
  177. package/dist/app.js +2 -11
  178. package/dist/automations/bullboard.js +37 -10
  179. package/dist/automations/triggers.js +7 -3
  180. package/dist/automations/utils.js +11 -2
  181. package/dist/constants/index.js +6 -0
  182. package/dist/integrations/base/IntegrationBase.js +2 -0
  183. package/dist/integrations/base/sql.js +36 -8
  184. package/dist/integrations/mysql.js +3 -1
  185. package/dist/integrations/utils.js +7 -1
  186. package/dist/middleware/builder.js +4 -1
  187. package/dist/package.json +7 -6
  188. package/dist/{automations/thread.js → threads/automation.js} +23 -7
  189. package/dist/threads/index.js +58 -0
  190. package/dist/threads/query.js +61 -0
  191. package/dist/tsconfig.tsbuildinfo +1 -1
  192. package/dist/utilities/index.js +1 -0
  193. package/dist/utilities/queue/inMemoryQueue.js +8 -0
  194. package/dist/utilities/scriptRunner.js +4 -1
  195. package/package.json +8 -7
  196. package/scripts/likeCypress.ts +33 -0
  197. package/src/api/controllers/application.js +11 -1
  198. package/src/api/controllers/datasource.js +45 -9
  199. package/src/api/controllers/deploy/index.js +2 -0
  200. package/src/api/controllers/dev.js +4 -1
  201. package/src/api/controllers/query.js +26 -80
  202. package/src/api/controllers/user.js +15 -10
  203. package/src/api/routes/query.js +1 -0
  204. package/src/app.ts +2 -10
  205. package/src/automations/bullboard.js +28 -11
  206. package/src/automations/tests/automation.spec.js +3 -4
  207. package/src/automations/triggers.js +7 -3
  208. package/src/automations/utils.js +12 -2
  209. package/src/constants/index.js +7 -0
  210. package/src/integrations/airtable.ts +2 -1
  211. package/src/integrations/arangodb.ts +2 -1
  212. package/src/integrations/base/IntegrationBase.ts +6 -0
  213. package/src/integrations/base/datasourcePlus.ts +2 -1
  214. package/src/integrations/base/sql.ts +38 -9
  215. package/src/integrations/couchdb.ts +2 -1
  216. package/src/integrations/dynamodb.ts +2 -1
  217. package/src/integrations/elasticsearch.ts +2 -1
  218. package/src/integrations/mongodb.ts +2 -1
  219. package/src/integrations/mysql.ts +1 -1
  220. package/src/integrations/rest.ts +2 -1
  221. package/src/integrations/s3.ts +2 -1
  222. package/src/integrations/utils.ts +6 -1
  223. package/src/middleware/builder.js +4 -1
  224. package/src/{automations/thread.js → threads/automation.js} +24 -7
  225. package/src/threads/index.js +60 -0
  226. package/src/threads/query.js +63 -0
  227. package/src/utilities/index.js +1 -0
  228. package/src/utilities/queue/inMemoryQueue.js +7 -0
  229. package/src/utilities/scriptRunner.js +4 -1
  230. package/tsconfig.json +1 -1
  231. package/builder/assets/index.4feb6e69.js +0 -201
  232. package/builder/assets/index.a79ec0ef.css +0 -29
  233. package/builder/assets/vendor.278a305c.js +0 -9
  234. package/builder/assets/vendor.d75d5eb7.css +0 -1
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">60.94% </span>
33
+ <span class="strong">60.93% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>39/64</span>
36
36
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">82.78% </span>
47
+ <span class="strong">82.77% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>173/209</span>
50
50
  </div>
@@ -1119,7 +1119,7 @@ exports.save = async function (ctx) {
1119
1119
  let inputs = ctx.request.body
1120
1120
  inputs.tableId = ctx.params.tableId
1121
1121
  &nbsp;
1122
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!inputs._rev &amp;&amp; !inputs._id) {
1122
+ if (!inputs._rev &amp;&amp; !inputs._id) {
1123
1123
  inputs._id = generateRowID(inputs.tableId)
1124
1124
  }
1125
1125
  &nbsp;
@@ -1161,12 +1161,12 @@ exports.fetchView = async ctx =&gt; {
1161
1161
  const { calculation, group, field } = ctx.query
1162
1162
  const viewInfo = await getView(db, viewName)
1163
1163
  let response
1164
- <span class="missing-if-branch" title="else path not taken" >E</span>if (env.SELF_HOSTED) {
1164
+ if (env.SELF_HOSTED) {
1165
1165
  response = await db.query(`database/${viewName}`, {
1166
1166
  include_docs: !calculation,
1167
1167
  group: !!group,
1168
1168
  })
1169
- } else {
1169
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
1170
1170
  const tableId = <span class="cstat-no" title="statement not covered" >viewInfo.meta.tableId</span>
1171
1171
  const data = <span class="cstat-no" title="statement not covered" >await getRawTableData(ctx, db, tableId)</span>
1172
1172
  <span class="cstat-no" title="statement not covered" > response = await inMemoryViews.runView(viewInfo, calculation, group, data)</span>
@@ -1319,7 +1319,7 @@ exports.search = async ctx =&gt; {
1319
1319
  }
1320
1320
  &nbsp;
1321
1321
  // Enrich search results with relationships
1322
- <span class="missing-if-branch" title="else path not taken" >E</span>if (response.rows &amp;&amp; response.rows.length) {
1322
+ if (response.rows &amp;&amp; response.rows.length) {
1323
1323
  // enrich with global users if from users table
1324
1324
  <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
1325
1325
  <span class="cstat-no" title="statement not covered" > response.rows = await getGlobalUsersFromMetadata(appId, response.rows)</span>
@@ -1367,10 +1367,10 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1367
1367
  tables = {}
1368
1368
  for (let row of response) {
1369
1369
  const linkedTableId = row.tableId
1370
- <span class="missing-if-branch" title="else path not taken" >E</span>if (groups[linkedTableId] == null) {
1370
+ if (groups[linkedTableId] == null) {
1371
1371
  groups[linkedTableId] = [row]
1372
1372
  tables[linkedTableId] = await db.get(linkedTableId)
1373
- } else {
1373
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
1374
1374
  <span class="cstat-no" title="statement not covered" > groups[linkedTableId].push(row)</span>
1375
1375
  }
1376
1376
  }
@@ -1405,7 +1405,7 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1405
1405
  <div class='footer quiet pad2 space-top1 center small'>
1406
1406
  Code coverage generated by
1407
1407
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1408
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
1408
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
1409
1409
  </div>
1410
1410
  </div>
1411
1411
  <script src="../../../prettify.js"></script>
@@ -23,7 +23,7 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">4.67% </span>
26
+ <span class="strong">4.66% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>7/150</span>
29
29
  </div>
@@ -1228,7 +1228,7 @@ exports.fullSearch = <span class="fstat-no" title="function not covered" >as</sp
1228
1228
  <div class='footer quiet pad2 space-top1 center small'>
1229
1229
  Code coverage generated by
1230
1230
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1231
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
1231
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
1232
1232
  </div>
1233
1233
  </div>
1234
1234
  <script src="../../../prettify.js"></script>
@@ -37,7 +37,7 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">66.67% </span>
40
+ <span class="strong">66.66% </span>
41
41
  <span class="quiet">Functions</span>
42
42
  <span class='fraction'>4/6</span>
43
43
  </div>
@@ -319,7 +319,7 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
319
319
  <div class='footer quiet pad2 space-top1 center small'>
320
320
  Code coverage generated by
321
321
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
322
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
322
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
323
323
  </div>
324
324
  </div>
325
325
  <script src="../../../prettify.js"></script>
@@ -180,7 +180,7 @@ exports.save = async ctx =&gt; {
180
180
  const db = new CouchDB(appId)
181
181
  let screen = ctx.request.body
182
182
  &nbsp;
183
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!screen._id) {
183
+ if (!screen._id) {
184
184
  screen._id = generateScreenID()
185
185
  }
186
186
  const response = await db.put(screen)
@@ -208,7 +208,7 @@ exports.destroy = async ctx =&gt; {
208
208
  <div class='footer quiet pad2 space-top1 center small'>
209
209
  Code coverage generated by
210
210
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
211
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
211
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
212
212
  </div>
213
213
  </div>
214
214
  <script src="../../prettify.js"></script>
@@ -23,7 +23,7 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">42.86% </span>
26
+ <span class="strong">42.85% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>3/7</span>
29
29
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">42.86% </span>
47
+ <span class="strong">42.85% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>3/7</span>
50
50
  </div>
@@ -97,7 +97,7 @@ exports.save = <span class="fstat-no" title="function not covered" >as</span>ync
97
97
  <div class='footer quiet pad2 space-top1 center small'>
98
98
  Code coverage generated by
99
99
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
100
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
100
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
101
101
  </div>
102
102
  </div>
103
103
  <script src="../../prettify.js"></script>
@@ -964,7 +964,7 @@ exports.bulkImport = <span class="fstat-no" title="function not covered" >as</sp
964
964
  <div class='footer quiet pad2 space-top1 center small'>
965
965
  Code coverage generated by
966
966
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
967
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
967
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
968
968
  </div>
969
969
  </div>
970
970
  <script src="../../../prettify.js"></script>
@@ -23,14 +23,14 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">51.75% </span>
26
+ <span class="strong">51.74% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>222/429</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">38.36% </span>
33
+ <span class="strong">38.35% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>84/219</span>
36
36
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">52.26% </span>
47
+ <span class="strong">52.25% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>220/421</span>
50
50
  </div>
@@ -89,16 +89,16 @@
89
89
 
90
90
  <tr>
91
91
  <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
- <td data-value="81.82" class="pic high">
92
+ <td data-value="81.81" class="pic high">
93
93
  <div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
94
94
  </td>
95
- <td data-value="81.82" class="pct high">81.82%</td>
95
+ <td data-value="81.81" class="pct high">81.81%</td>
96
96
  <td data-value="55" class="abs high">45/55</td>
97
97
  <td data-value="73.91" class="pct medium">73.91%</td>
98
98
  <td data-value="23" class="abs medium">17/23</td>
99
99
  <td data-value="70" class="pct medium">70%</td>
100
100
  <td data-value="10" class="abs medium">7/10</td>
101
- <td data-value="83.02" class="pct high">83.02%</td>
101
+ <td data-value="83.01" class="pct high">83.01%</td>
102
102
  <td data-value="53" class="abs high">44/53</td>
103
103
  </tr>
104
104
 
@@ -113,18 +113,18 @@
113
113
  <td data-value="36" class="abs medium">26/36</td>
114
114
  <td data-value="60" class="pct medium">60%</td>
115
115
  <td data-value="5" class="abs medium">3/5</td>
116
- <td data-value="77.78" class="pct medium">77.78%</td>
116
+ <td data-value="77.77" class="pct medium">77.77%</td>
117
117
  <td data-value="63" class="abs medium">49/63</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
121
121
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
122
- <td data-value="66.86" class="pic medium">
122
+ <td data-value="66.85" class="pic medium">
123
123
  <div class="chart"><div class="cover-fill" style="width: 66%"></div><div class="cover-empty" style="width: 34%"></div></div>
124
124
  </td>
125
- <td data-value="66.86" class="pct medium">66.86%</td>
125
+ <td data-value="66.85" class="pct medium">66.85%</td>
126
126
  <td data-value="175" class="abs medium">117/175</td>
127
- <td data-value="45.56" class="pct low">45.56%</td>
127
+ <td data-value="45.55" class="pct low">45.55%</td>
128
128
  <td data-value="90" class="abs low">41/90</td>
129
129
  <td data-value="62.96" class="pct medium">62.96%</td>
130
130
  <td data-value="27" class="abs medium">17/27</td>
@@ -140,7 +140,7 @@
140
140
  <div class='footer quiet pad2 space-top1 center small'>
141
141
  Code coverage generated by
142
142
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
143
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
143
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../../prettify.js"></script>
@@ -23,7 +23,7 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">81.82% </span>
26
+ <span class="strong">81.81% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>45/55</span>
29
29
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.02% </span>
47
+ <span class="strong">83.01% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>44/53</span>
50
50
  </div>
@@ -382,7 +382,7 @@ exports.validateCSVSchema = async function (ctx) {
382
382
  <div class='footer quiet pad2 space-top1 center small'>
383
383
  Code coverage generated by
384
384
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
385
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
385
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
386
386
  </div>
387
387
  </div>
388
388
  <script src="../../../prettify.js"></script>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">77.78% </span>
47
+ <span class="strong">77.77% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>49/63</span>
50
50
  </div>
@@ -529,7 +529,7 @@ exports.bulkImport = <span class="fstat-no" title="function not covered" >as</sp
529
529
  <div class='footer quiet pad2 space-top1 center small'>
530
530
  Code coverage generated by
531
531
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
532
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
532
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
533
533
  </div>
534
534
  </div>
535
535
  <script src="../../../prettify.js"></script>
@@ -23,14 +23,14 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">66.86% </span>
26
+ <span class="strong">66.85% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>117/175</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">45.56% </span>
33
+ <span class="strong">45.55% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>41/90</span>
36
36
  </div>
@@ -811,10 +811,10 @@ exports.checkForColumnUpdates = async (db, oldTable, updatedTable) =&gt; {
811
811
  })
812
812
  )
813
813
  updatedRows = rows.rows.map(({ doc }) =&gt; {
814
- <span class="missing-if-branch" title="else path not taken" >E</span>if (rename) {
814
+ if (rename) {
815
815
  doc[rename.updated] = doc[rename.old]
816
816
  delete doc[rename.old]
817
- } else <span class="cstat-no" title="statement not covered" >if (deletedColumns.length !== 0) {</span>
817
+ } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (deletedColumns.length !== 0) {</span>
818
818
  <span class="cstat-no" title="statement not covered" > deletedColumns.forEach(<span class="fstat-no" title="function not covered" >co</span>lName =&gt; <span class="cstat-no" title="statement not covered" >delete doc[colName])</span></span>
819
819
  }
820
820
  return doc
@@ -910,7 +910,7 @@ exports.handleSearchIndexes = async (appId, table) =&gt; {
910
910
  )
911
911
  &nbsp;
912
912
  // if index fields have changed, delete the original index
913
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!isEqual(currentFields, table.indexes)) {
913
+ if (!isEqual(currentFields, table.indexes)) {
914
914
  await db.deleteIndex(existingIndex)
915
915
  // create/recreate the index with fields
916
916
  await db.createIndex({
@@ -942,7 +942,7 @@ exports.checkStaticTables = table =&gt; {
942
942
  if (table._id === InternalTables.USER_METADATA) {
943
943
  for (let [key, schema] of Object.entries(USERS_TABLE_SCHEMA.schema)) {
944
944
  // check if the schema exists on the table to be created/updated
945
- <span class="missing-if-branch" title="else path not taken" >E</span>if (table.schema[key] == null) {
945
+ if (table.schema[key] == null) {
946
946
  table.schema[key] = schema
947
947
  }
948
948
  }
@@ -954,7 +954,7 @@ class TableSaveFunctions {
954
954
  constructor({ db, ctx, oldTable, dataImport }) {
955
955
  this.db = db
956
956
  this.ctx = ctx
957
- <span class="missing-if-branch" title="else path not taken" >E</span>if (this.ctx &amp;&amp; this.ctx.user) {
957
+ if (this.ctx &amp;&amp; this.ctx.user) {
958
958
  this.appId = this.ctx.appId
959
959
  }
960
960
  this.oldTable = oldTable
@@ -1141,7 +1141,7 @@ exports.TableSaveFunctions = TableSaveFunctions
1141
1141
  <div class='footer quiet pad2 space-top1 center small'>
1142
1142
  Code coverage generated by
1143
1143
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1144
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
1144
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
1145
1145
  </div>
1146
1146
  </div>
1147
1147
  <script src="../../../prettify.js"></script>
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">71.43% </span>
33
+ <span class="strong">71.42% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>5/7</span>
36
36
  </div>
@@ -155,10 +155,10 @@ exports.fetch = async function (ctx) {
155
155
  <span class="cstat-no" title="statement not covered" > error = true</span>
156
156
  }
157
157
  // if there is an error, simply return no templates
158
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!error &amp;&amp; response) {
158
+ if (!error &amp;&amp; response) {
159
159
  const json = await response.json()
160
160
  ctx.body = Object.values(json.templates[type])
161
- } else {
161
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
162
162
  <span class="cstat-no" title="statement not covered" > ctx.body = []</span>
163
163
  }
164
164
  }
@@ -181,7 +181,7 @@ exports.downloadTemplate = async function (ctx) {
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
184
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
184
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">38.14% </span>
26
+ <span class="strong">37.37% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>37/97</span>
28
+ <span class='fraction'>37/99</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/27</span>
35
+ <span class='fraction'>0/31</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">38.54% </span>
47
+ <span class="strong">37.75% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>37/96</span>
49
+ <span class='fraction'>37/98</span>
50
50
  </div>
51
51
 
52
52
 
@@ -249,7 +249,12 @@
249
249
  <a name='L190'></a><a href='#L190'>190</a>
250
250
  <a name='L191'></a><a href='#L191'>191</a>
251
251
  <a name='L192'></a><a href='#L192'>192</a>
252
- <a name='L193'></a><a href='#L193'>193</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
253
258
  <span class="cline-any cline-neutral">&nbsp;</span>
254
259
  <span class="cline-any cline-neutral">&nbsp;</span>
255
260
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -352,6 +357,7 @@
352
357
  <span class="cline-any cline-no">&nbsp;</span>
353
358
  <span class="cline-any cline-no">&nbsp;</span>
354
359
  <span class="cline-any cline-no">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
355
361
  <span class="cline-any cline-neutral">&nbsp;</span>
356
362
  <span class="cline-any cline-no">&nbsp;</span>
357
363
  <span class="cline-any cline-no">&nbsp;</span>
@@ -370,13 +376,17 @@
370
376
  <span class="cline-any cline-no">&nbsp;</span>
371
377
  <span class="cline-any cline-no">&nbsp;</span>
372
378
  <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-no">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
382
  <span class="cline-any cline-neutral">&nbsp;</span>
374
383
  <span class="cline-any cline-neutral">&nbsp;</span>
375
384
  <span class="cline-any cline-neutral">&nbsp;</span>
376
385
  <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-no">&nbsp;</span>
378
386
  <span class="cline-any cline-neutral">&nbsp;</span>
379
387
  <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-no">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
390
  <span class="cline-any cline-neutral">&nbsp;</span>
381
391
  <span class="cline-any cline-neutral">&nbsp;</span>
382
392
  <span class="cline-any cline-no">&nbsp;</span>
@@ -540,6 +550,7 @@ exports.syncUser = <span class="fstat-no" title="function not covered" >as</span
540
550
  .map(<span class="fstat-no" title="function not covered" >([</span>appId]) =&gt; <span class="cstat-no" title="statement not covered" >appId)</span>
541
551
  }
542
552
  <span class="cstat-no" title="statement not covered" > for (let prodAppId of prodAppIds) {</span>
553
+ const roleId = <span class="cstat-no" title="statement not covered" >roles[prodAppId]</span>
543
554
  const devAppId = <span class="cstat-no" title="statement not covered" >getDevelopmentAppID(prodAppId)</span>
544
555
  <span class="cstat-no" title="statement not covered" > for (let appId of [prodAppId, devAppId]) {</span>
545
556
  <span class="cstat-no" title="statement not covered" > if (!(await doesDatabaseExist(appId))) {</span>
@@ -558,17 +569,21 @@ exports.syncUser = <span class="fstat-no" title="function not covered" >as</span
558
569
  tableId: InternalTables.USER_METADATA,
559
570
  }
560
571
  }
561
- let combined
562
- <span class="cstat-no" title="statement not covered" > if (deleting) {</span>
563
- <span class="cstat-no" title="statement not covered" > combined = {</span>
564
- ...metadata,
565
- status: UserStatus.INACTIVE,
566
- metadata: BUILTIN_ROLE_IDS.PUBLIC,
567
- }
568
- } else {
569
- <span class="cstat-no" title="statement not covered" > combined = combineMetadataAndUser(user, metadata)</span>
572
+ // assign the roleId for the metadata doc
573
+ <span class="cstat-no" title="statement not covered" > if (roleId) {</span>
574
+ <span class="cstat-no" title="statement not covered" > metadata.roleId = roleId</span>
575
+ }
576
+ let combined = <span class="cstat-no" title="statement not covered" >!deleting</span>
577
+ ? combineMetadataAndUser(user, metadata)
578
+ : {
579
+ ...metadata,
580
+ status: UserStatus.INACTIVE,
581
+ metadata: BUILTIN_ROLE_IDS.PUBLIC,
582
+ }
583
+ // if its null then there was no updates required
584
+ <span class="cstat-no" title="statement not covered" > if (combined) {</span>
585
+ <span class="cstat-no" title="statement not covered" > await db.put(combined)</span>
570
586
  }
571
- <span class="cstat-no" title="statement not covered" > await db.put(combined)</span>
572
587
  }
573
588
  }
574
589
  <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
@@ -640,7 +655,7 @@ exports.findMetadata = async function (ctx) {
640
655
  <div class='footer quiet pad2 space-top1 center small'>
641
656
  Code coverage generated by
642
657
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
643
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
658
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
644
659
  </div>
645
660
  </div>
646
661
  <script src="../../prettify.js"></script>
@@ -118,7 +118,7 @@ exports.json = function (headers, rows) {
118
118
  <div class='footer quiet pad2 space-top1 center small'>
119
119
  Code coverage generated by
120
120
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
121
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
121
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
122
122
  </div>
123
123
  </div>
124
124
  <script src="../../../prettify.js"></script>
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">62.34% </span>
33
+ <span class="strong">62.33% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>48/77</span>
36
36
  </div>
@@ -89,10 +89,10 @@
89
89
 
90
90
  <tr>
91
91
  <td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
92
- <td data-value="92.73" class="pic high">
92
+ <td data-value="92.72" class="pic high">
93
93
  <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
94
94
  </td>
95
- <td data-value="92.73" class="pct high">92.73%</td>
95
+ <td data-value="92.72" class="pct high">92.72%</td>
96
96
  <td data-value="55" class="abs high">51/55</td>
97
97
  <td data-value="68.42" class="pct medium">68.42%</td>
98
98
  <td data-value="19" class="abs medium">13/19</td>
@@ -109,9 +109,9 @@
109
109
  </td>
110
110
  <td data-value="50" class="pct medium">50%</td>
111
111
  <td data-value="76" class="abs medium">38/76</td>
112
- <td data-value="34.62" class="pct low">34.62%</td>
112
+ <td data-value="34.61" class="pct low">34.61%</td>
113
113
  <td data-value="26" class="abs low">9/26</td>
114
- <td data-value="66.67" class="pct medium">66.67%</td>
114
+ <td data-value="66.66" class="pct medium">66.66%</td>
115
115
  <td data-value="9" class="abs medium">6/9</td>
116
116
  <td data-value="50" class="pct medium">50%</td>
117
117
  <td data-value="76" class="abs medium">38/76</td>
@@ -119,16 +119,16 @@
119
119
 
120
120
  <tr>
121
121
  <td class="file high" data-value="viewBuilder.js"><a href="viewBuilder.js.html">viewBuilder.js</a></td>
122
- <td data-value="84.85" class="pic high">
122
+ <td data-value="84.84" class="pic high">
123
123
  <div class="chart"><div class="cover-fill" style="width: 84%"></div><div class="cover-empty" style="width: 16%"></div></div>
124
124
  </td>
125
- <td data-value="84.85" class="pct high">84.85%</td>
125
+ <td data-value="84.84" class="pct high">84.84%</td>
126
126
  <td data-value="33" class="abs high">28/33</td>
127
127
  <td data-value="83.33" class="pct high">83.33%</td>
128
128
  <td data-value="30" class="abs high">25/30</td>
129
129
  <td data-value="75" class="pct medium">75%</td>
130
130
  <td data-value="4" class="abs medium">3/4</td>
131
- <td data-value="84.85" class="pct high">84.85%</td>
131
+ <td data-value="84.84" class="pct high">84.84%</td>
132
132
  <td data-value="33" class="abs high">28/33</td>
133
133
  </tr>
134
134
 
@@ -140,7 +140,7 @@
140
140
  <div class='footer quiet pad2 space-top1 center small'>
141
141
  Code coverage generated by
142
142
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
143
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
143
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../../prettify.js"></script>
@@ -23,7 +23,7 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.73% </span>
26
+ <span class="strong">92.72% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>51/55</span>
29
29
  </div>
@@ -307,7 +307,7 @@ exports.exportView = async ctx =&gt; {
307
307
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Format must be specified, either csv or json")</span>
308
308
  }
309
309
  &nbsp;
310
- <span class="missing-if-branch" title="else path not taken" >E</span>if (view) {
310
+ if (view) {
311
311
  ctx.params.viewName = viewName
312
312
  // Fetch view rows
313
313
  ctx.query = {
@@ -316,7 +316,7 @@ exports.exportView = async ctx =&gt; {
316
316
  stats: !!view.meta.field,
317
317
  field: view.meta.field,
318
318
  }
319
- } else {
319
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
320
320
  // table all_ view
321
321
  /* istanbul ignore next */
322
322
  ctx.params.viewName = viewName
@@ -325,7 +325,7 @@ exports.exportView = async ctx =&gt; {
325
325
  await fetchView(ctx)
326
326
  &nbsp;
327
327
  let schema = view &amp;&amp; view.meta &amp;&amp; view.meta.schema
328
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!schema) {
328
+ if (!schema) {
329
329
  const tableId = ctx.params.tableId || view.meta.tableId
330
330
  const table = await db.get(tableId)
331
331
  schema = table.schema
@@ -346,7 +346,7 @@ exports.exportView = async ctx =&gt; {
346
346
  <div class='footer quiet pad2 space-top1 center small'>
347
347
  Code coverage generated by
348
348
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
349
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
349
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
350
350
  </div>
351
351
  </div>
352
352
  <script src="../../../prettify.js"></script>