@budibase/server 2.0.33 → 2.0.34-alpha.1

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 (277) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/backups-default.8c011f1b.png +0 -0
  3. package/builder/assets/{index.dfa4073c.css → index.b15ffe95.css} +2 -2
  4. package/builder/assets/{index.ce49a649.js → index.cf543543.js} +340 -332
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +635 -690
  7. package/coverage/coverage-final.json +34 -36
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/cloud.js.html +74 -62
  11. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/dev.js.html +2 -2
  13. package/coverage/lcov-report/api/controllers/index.html +17 -32
  14. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/internal.js.html +12 -12
  26. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +15 -15
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +13 -13
  29. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +12 -9
  31. package/coverage/lcov-report/api/controllers/table/external.js.html +10 -10
  32. package/coverage/lcov-report/api/controllers/table/index.html +16 -16
  33. package/coverage/lcov-report/api/controllers/table/index.js.html +5 -5
  34. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.js.html +3 -3
  39. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  42. package/coverage/lcov-report/api/index.html +1 -1
  43. package/coverage/lcov-report/api/index.js.html +7 -7
  44. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  45. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/index.html +5 -20
  53. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  67. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  70. package/coverage/lcov-report/automations/actions.js.html +1 -1
  71. package/coverage/lcov-report/automations/automationUtils.js.html +6 -6
  72. package/coverage/lcov-report/automations/bullboard.js.html +17 -92
  73. package/coverage/lcov-report/automations/index.html +20 -20
  74. package/coverage/lcov-report/automations/index.js.html +9 -9
  75. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  76. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  77. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/index.html +1 -1
  82. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/updateRow.js.html +3 -3
  90. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  92. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  93. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  94. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggers.js.html +30 -30
  101. package/coverage/lcov-report/constants/index.html +5 -5
  102. package/coverage/lcov-report/constants/index.js.html +10 -16
  103. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  104. package/coverage/lcov-report/constants/screens.js.html +1 -1
  105. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  106. package/coverage/lcov-report/db/index.html +19 -19
  107. package/coverage/lcov-report/db/index.js.html +1 -1
  108. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -11
  109. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  110. package/coverage/lcov-report/db/linkedRows/index.js.html +11 -11
  111. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +3 -3
  112. package/coverage/lcov-report/db/newid.js.html +2 -2
  113. package/coverage/lcov-report/db/utils.js.html +37 -316
  114. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  115. package/coverage/lcov-report/events/index.html +1 -1
  116. package/coverage/lcov-report/events/index.js.html +2 -2
  117. package/coverage/lcov-report/events/utils.js.html +9 -9
  118. package/coverage/lcov-report/index.html +77 -77
  119. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  120. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  121. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  122. package/coverage/lcov-report/middleware/builder.js.html +11 -11
  123. package/coverage/lcov-report/middleware/currentapp.js.html +34 -34
  124. package/coverage/lcov-report/middleware/index.html +1 -1
  125. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  126. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  127. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  128. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  129. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  130. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  131. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  132. package/coverage/lcov-report/utilities/csvParser.js.html +11 -8
  133. package/coverage/lcov-report/utilities/global.js.html +16 -16
  134. package/coverage/lcov-report/utilities/index.html +15 -15
  135. package/coverage/lcov-report/utilities/index.js.html +7 -7
  136. package/coverage/lcov-report/utilities/plugins.js.html +1 -1
  137. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +52 -52
  138. package/coverage/lcov-report/utilities/queue/index.html +21 -21
  139. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  140. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  141. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  142. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +54 -39
  143. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
  144. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  145. package/coverage/lcov-report/utilities/security.js.html +2 -2
  146. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  147. package/coverage/lcov-report/utilities/usageQuota/index.html +14 -14
  148. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +23 -11
  149. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  150. package/coverage/lcov-report/utilities/users.js.html +1 -1
  151. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  152. package/coverage/lcov.info +1144 -1248
  153. package/dist/api/controllers/application.js +4 -7
  154. package/dist/api/controllers/backup.js +19 -13
  155. package/dist/api/controllers/cloud.js +38 -35
  156. package/dist/api/controllers/deploy/index.js +11 -2
  157. package/dist/api/controllers/dev.js +1 -1
  158. package/dist/api/controllers/query/index.js +7 -2
  159. package/dist/api/controllers/row/index.js +30 -10
  160. package/dist/api/controllers/static/index.js +2 -2
  161. package/dist/api/controllers/static/templates/preview.hbs +10 -0
  162. package/dist/api/controllers/table/bulkFormula.js +4 -3
  163. package/dist/api/controllers/table/external.js +5 -4
  164. package/dist/api/controllers/table/index.js +4 -4
  165. package/dist/api/controllers/table/internal.js +10 -3
  166. package/dist/api/controllers/table/utils.js +7 -49
  167. package/dist/api/controllers/view/index.js +2 -2
  168. package/dist/api/routes/backup.js +34 -7
  169. package/dist/api/routes/index.js +9 -4
  170. package/dist/app.js +18 -2
  171. package/dist/automations/automationUtils.js +2 -2
  172. package/dist/automations/bullboard.js +5 -33
  173. package/dist/automations/index.js +4 -4
  174. package/dist/automations/steps/updateRow.js +2 -2
  175. package/dist/automations/triggers.js +6 -6
  176. package/dist/automations/utils.js +18 -12
  177. package/dist/constants/index.js +4 -5
  178. package/dist/db/utils.js +10 -75
  179. package/dist/index.js +1 -0
  180. package/dist/integrations/arangodb.js +2 -0
  181. package/dist/integrations/base/sqlTable.js +1 -0
  182. package/dist/integrations/mongodb.js +300 -11
  183. package/dist/integrations/rest.js +38 -5
  184. package/dist/migrations/functions/backfill/app/tables.js +5 -8
  185. package/dist/migrations/functions/{quotas1.js → syncQuotas.js} +3 -7
  186. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -1
  187. package/dist/migrations/functions/{pluginCount.js → usageQuotas/syncPlugins.js} +1 -3
  188. package/dist/migrations/functions/usageQuotas/syncRows.js +9 -5
  189. package/dist/migrations/index.js +10 -38
  190. package/dist/package.json +14 -14
  191. package/dist/sdk/app/backups/constants.js +5 -0
  192. package/dist/sdk/app/backups/exports.js +172 -0
  193. package/dist/sdk/app/backups/imports.js +162 -0
  194. package/dist/sdk/app/backups/index.js +29 -0
  195. package/dist/sdk/app/backups/statistics.js +73 -0
  196. package/dist/sdk/app/tables/index.js +61 -0
  197. package/dist/sdk/index.js +15 -0
  198. package/dist/tests/utilities/TestConfiguration.js +4 -2
  199. package/dist/threads/automation.js +12 -17
  200. package/dist/tsconfig.build.tsbuildinfo +1 -1
  201. package/dist/utilities/csvParser.js +1 -0
  202. package/dist/utilities/fileSystem/index.js +3 -95
  203. package/dist/utilities/fileSystem/utilities.js +2 -1
  204. package/dist/utilities/rowProcessor/index.js +5 -0
  205. package/dist/utilities/usageQuota/rows.js +6 -4
  206. package/package.json +15 -15
  207. package/specs/openapi.json +3 -0
  208. package/specs/openapi.yaml +3 -0
  209. package/src/api/controllers/application.ts +5 -12
  210. package/src/api/controllers/{backup.js → backup.ts} +7 -7
  211. package/src/api/controllers/cloud.js +44 -40
  212. package/src/api/controllers/deploy/index.ts +20 -8
  213. package/src/api/controllers/dev.js +1 -1
  214. package/src/api/controllers/query/index.ts +8 -2
  215. package/src/api/controllers/row/index.ts +36 -13
  216. package/src/api/controllers/static/index.ts +2 -2
  217. package/src/api/controllers/static/templates/preview.hbs +10 -0
  218. package/src/api/controllers/table/bulkFormula.js +4 -3
  219. package/src/api/controllers/table/external.js +4 -4
  220. package/src/api/controllers/table/index.js +4 -4
  221. package/src/api/controllers/table/internal.ts +8 -9
  222. package/src/api/controllers/table/utils.ts +4 -53
  223. package/src/api/controllers/view/index.js +2 -2
  224. package/src/api/routes/backup.ts +10 -0
  225. package/src/api/routes/index.ts +11 -5
  226. package/src/api/routes/tests/backup.spec.js +1 -1
  227. package/src/api/routes/tests/{deployment.spec.js → deployment.spec.ts} +4 -4
  228. package/src/api/routes/tests/row.spec.js +22 -27
  229. package/src/app.ts +19 -2
  230. package/src/automations/automationUtils.js +2 -2
  231. package/src/automations/bullboard.js +8 -33
  232. package/src/automations/index.js +4 -4
  233. package/src/automations/steps/updateRow.js +2 -2
  234. package/src/automations/tests/automation.spec.js +1 -6
  235. package/src/automations/triggers.js +6 -6
  236. package/src/automations/utils.ts +18 -12
  237. package/src/constants/index.js +4 -6
  238. package/src/db/utils.js +17 -110
  239. package/src/definitions/automations.ts +0 -12
  240. package/src/definitions/datasource.ts +1 -0
  241. package/src/index.ts +1 -0
  242. package/src/integrations/arangodb.ts +2 -0
  243. package/src/integrations/base/sqlTable.ts +1 -0
  244. package/src/integrations/mongodb.ts +290 -27
  245. package/src/integrations/rest.ts +17 -5
  246. package/src/integrations/tests/mongo.spec.ts +19 -19
  247. package/src/integrations/tests/rest.spec.ts +38 -22
  248. package/src/migrations/functions/backfill/app/tables.ts +7 -13
  249. package/src/migrations/functions/backfill/global.ts +1 -1
  250. package/src/migrations/functions/{quotas1.ts → syncQuotas.ts} +3 -8
  251. package/src/migrations/functions/tests/{quotas1.spec.js → syncQuotas.spec.js} +5 -2
  252. package/src/migrations/functions/usageQuotas/syncApps.ts +0 -1
  253. package/src/migrations/functions/usageQuotas/syncPlugins.ts +10 -0
  254. package/src/migrations/functions/usageQuotas/syncRows.ts +15 -6
  255. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +9 -1
  256. package/src/migrations/index.ts +21 -45
  257. package/src/migrations/tests/index.spec.ts +0 -1
  258. package/src/sdk/app/backups/constants.ts +2 -0
  259. package/src/sdk/app/backups/exports.ts +171 -0
  260. package/src/sdk/app/backups/imports.ts +169 -0
  261. package/src/sdk/app/backups/index.ts +9 -0
  262. package/src/sdk/app/backups/statistics.ts +78 -0
  263. package/src/sdk/app/tables/index.ts +61 -0
  264. package/src/sdk/index.ts +13 -0
  265. package/src/tests/utilities/TestConfiguration.js +5 -2
  266. package/src/threads/automation.ts +20 -27
  267. package/src/utilities/csvParser.js +1 -0
  268. package/src/utilities/fileSystem/index.js +2 -119
  269. package/src/utilities/fileSystem/utilities.js +2 -0
  270. package/src/utilities/rowProcessor/index.js +5 -0
  271. package/src/utilities/usageQuota/rows.js +7 -3
  272. package/coverage/lcov-report/api/controllers/backup.js.html +0 -142
  273. package/coverage/lcov-report/api/routes/backup.js.html +0 -115
  274. package/dist/automations/listeners.js +0 -102
  275. package/src/api/routes/backup.js +0 -10
  276. package/src/automations/listeners.ts +0 -78
  277. package/src/migrations/functions/pluginCount.ts +0 -12
@@ -232,7 +232,7 @@ exports.update = async function (ctx) {
232
232
  <div class='footer quiet pad2 space-top1 center small'>
233
233
  Code coverage generated by
234
234
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
235
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
235
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
236
236
  </div>
237
237
  <script src="../../prettify.js"></script>
238
238
  <script>
@@ -925,7 +925,7 @@ exports.test = async function (ctx) {
925
925
  <div class='footer quiet pad2 space-top1 center small'>
926
926
  Code coverage generated by
927
927
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
928
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
928
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
929
929
  </div>
930
930
  <script src="../../prettify.js"></script>
931
931
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">18.18% </span>
26
+ <span class="strong">21.42% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>10/55</span>
28
+ <span class='fraction'>12/56</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/23</span>
35
+ <span class='fraction'>0/25</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/8</span>
42
+ <span class='fraction'>0/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">18.51% </span>
47
+ <span class="strong">21.81% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>10/54</span>
49
+ <span class='fraction'>12/55</span>
50
50
  </div>
51
51
 
52
52
 
@@ -173,12 +173,14 @@
173
173
  <a name='L108'></a><a href='#L108'>108</a>
174
174
  <a name='L109'></a><a href='#L109'>109</a>
175
175
  <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">28x</span>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">28x</span>
181
+ <span class="cline-any cline-yes">28x</span>
182
+ <span class="cline-any cline-yes">28x</span>
177
183
  <span class="cline-any cline-yes">28x</span>
178
- <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-neutral">&nbsp;</span>
180
- <span class="cline-any cline-neutral">&nbsp;</span>
181
- <span class="cline-any cline-neutral">&nbsp;</span>
182
184
  <span class="cline-any cline-yes">28x</span>
183
185
  <span class="cline-any cline-yes">28x</span>
184
186
  <span class="cline-any cline-yes">28x</span>
@@ -194,28 +196,27 @@
194
196
  <span class="cline-any cline-neutral">&nbsp;</span>
195
197
  <span class="cline-any cline-neutral">&nbsp;</span>
196
198
  <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
199
  <span class="cline-any cline-neutral">&nbsp;</span>
199
200
  <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-yes">28x</span>
201
- <span class="cline-any cline-no">&nbsp;</span>
202
- <span class="cline-any cline-no">&nbsp;</span>
203
201
  <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-no">&nbsp;</span>
205
- <span class="cline-any cline-no">&nbsp;</span>
206
- <span class="cline-any cline-no">&nbsp;</span>
202
+ <span class="cline-any cline-neutral">&nbsp;</span>
207
203
  <span class="cline-any cline-neutral">&nbsp;</span>
208
204
  <span class="cline-any cline-no">&nbsp;</span>
209
205
  <span class="cline-any cline-neutral">&nbsp;</span>
210
206
  <span class="cline-any cline-neutral">&nbsp;</span>
207
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
208
  <span class="cline-any cline-no">&nbsp;</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
212
213
  <span class="cline-any cline-no">&nbsp;</span>
213
214
  <span class="cline-any cline-neutral">&nbsp;</span>
214
215
  <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-yes">28x</span>
215
217
  <span class="cline-any cline-no">&nbsp;</span>
216
218
  <span class="cline-any cline-no">&nbsp;</span>
217
219
  <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-neutral">&nbsp;</span>
219
220
  <span class="cline-any cline-no">&nbsp;</span>
220
221
  <span class="cline-any cline-no">&nbsp;</span>
221
222
  <span class="cline-any cline-no">&nbsp;</span>
@@ -223,10 +224,14 @@
223
224
  <span class="cline-any cline-neutral">&nbsp;</span>
224
225
  <span class="cline-any cline-neutral">&nbsp;</span>
225
226
  <span class="cline-any cline-no">&nbsp;</span>
227
+ <span class="cline-any cline-no">&nbsp;</span>
228
+ <span class="cline-any cline-no">&nbsp;</span>
229
+ <span class="cline-any cline-no">&nbsp;</span>
226
230
  <span class="cline-any cline-neutral">&nbsp;</span>
227
231
  <span class="cline-any cline-neutral">&nbsp;</span>
228
232
  <span class="cline-any cline-neutral">&nbsp;</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-no">&nbsp;</span>
234
+ <span class="cline-any cline-no">&nbsp;</span>
230
235
  <span class="cline-any cline-no">&nbsp;</span>
231
236
  <span class="cline-any cline-neutral">&nbsp;</span>
232
237
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -257,10 +262,13 @@
257
262
  <span class="cline-any cline-neutral">&nbsp;</span>
258
263
  <span class="cline-any cline-no">&nbsp;</span>
259
264
  <span class="cline-any cline-no">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
268
  <span class="cline-any cline-no">&nbsp;</span>
261
269
  <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-neutral">&nbsp;</span>
263
270
  <span class="cline-any cline-no">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
272
  <span class="cline-any cline-no">&nbsp;</span>
265
273
  <span class="cline-any cline-neutral">&nbsp;</span>
266
274
  <span class="cline-any cline-no">&nbsp;</span>
@@ -285,59 +293,60 @@
285
293
  <span class="cline-any cline-neutral">&nbsp;</span>
286
294
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const env = require("../../environment")
287
295
  const { getAllApps, getGlobalDBName } = require("@budibase/backend-core/db")
288
- const {
289
- exportDB,
290
- sendTempFile,
291
- readFileSync,
292
- } = require("../../utilities/fileSystem")
293
- const { stringToReadStream } = require("../../utilities")
294
296
  const { getGlobalDB } = require("@budibase/backend-core/tenancy")
295
- const { create } = require("./application")
297
+ const { streamFile } = require("../../utilities/fileSystem")
298
+ const { stringToReadStream } = require("../../utilities")
296
299
  const { getDocParams, DocumentType, isDevAppID } = require("../../db/utils")
300
+ const { create } = require("./application")
301
+ const { join } = require("path")
302
+ const sdk = require("../../sdk")
297
303
  &nbsp;
298
- async function <span class="fstat-no" title="function not covered" >createApp(</span>appName, appImport) {
304
+ async function <span class="fstat-no" title="function not covered" >createApp(</span>appName, appDirectory) {
299
305
  const ctx = <span class="cstat-no" title="statement not covered" >{</span>
300
306
  request: {
301
307
  body: {
302
- templateString: appImport,
308
+ useTemplate: true,
303
309
  name: appName,
304
310
  },
311
+ files: {
312
+ templateFile: {
313
+ path: appDirectory,
314
+ },
315
+ },
305
316
  },
306
317
  }
307
318
  <span class="cstat-no" title="statement not covered" > return create(ctx)</span>
308
319
  }
309
320
  &nbsp;
321
+ async function <span class="fstat-no" title="function not covered" >getAllDocType(</span>db, docType) {
322
+ const response = <span class="cstat-no" title="statement not covered" >await db.allDocs(</span>
323
+ getDocParams(docType, null, {
324
+ include_docs: true,
325
+ })
326
+ )
327
+ <span class="cstat-no" title="statement not covered" > return response.rows.map(<span class="fstat-no" title="function not covered" >ro</span>w =&gt; <span class="cstat-no" title="statement not covered" >row.doc)</span></span>
328
+ }
329
+ &nbsp;
310
330
  exports.exportApps = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
311
331
  <span class="cstat-no" title="statement not covered" > if (env.SELF_HOSTED || !env.MULTI_TENANCY) {</span>
312
332
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Exporting only allowed in multi-tenant cloud environments.")</span>
313
333
  }
314
334
  const apps = <span class="cstat-no" title="statement not covered" >await getAllApps({ all: true })</span>
315
- const globalDBString = <span class="cstat-no" title="statement not covered" >await exportDB(getGlobalDBName(), {</span>
335
+ const globalDBString = <span class="cstat-no" title="statement not covered" >await sdk.backups.exportDB(getGlobalDBName(), {</span>
316
336
  filter: <span class="fstat-no" title="function not covered" >do</span>c =&gt; <span class="cstat-no" title="statement not covered" >!doc._id.startsWith(DocumentType.USER),</span>
317
337
  })
318
- let allDBs = <span class="cstat-no" title="statement not covered" >{</span>
319
- global: globalDBString,
320
- }
321
- <span class="cstat-no" title="statement not covered" > for (let app of apps) {</span>
322
- const appId = <span class="cstat-no" title="statement not covered" >app.appId || app._id</span>
323
- // only export the dev apps as they will be the latest, the user can republish the apps
324
- // in their self hosted environment
325
- <span class="cstat-no" title="statement not covered" > if (isDevAppID(appId)) {</span>
326
- <span class="cstat-no" title="statement not covered" > allDBs[app.name] = await exportDB(appId)</span>
327
- }
328
- }
329
- const filename = <span class="cstat-no" title="statement not covered" >`cloud-export-${new Date().getTime()}.txt`</span>
330
- <span class="cstat-no" title="statement not covered" > ctx.attachment(filename)</span>
331
- <span class="cstat-no" title="statement not covered" > ctx.body = sendTempFile(JSON.stringify(allDBs))</span>
332
- }
333
- &nbsp;
334
- async function <span class="fstat-no" title="function not covered" >getAllDocType(</span>db, docType) {
335
- const response = <span class="cstat-no" title="statement not covered" >await db.allDocs(</span>
336
- getDocParams(docType, null, {
337
- include_docs: true,
338
- })
338
+ // only export the dev apps as they will be the latest, the user can republish the apps
339
+ // in their self-hosted environment
340
+ let appMetadata = <span class="cstat-no" title="statement not covered" >apps</span>
341
+ .filter(<span class="fstat-no" title="function not covered" >ap</span>p =&gt; <span class="cstat-no" title="statement not covered" >isDevAppID(app.appId || app._id))</span>
342
+ .map(<span class="fstat-no" title="function not covered" >ap</span>p =&gt; (<span class="cstat-no" title="statement not covered" >{ appId: app.appId || app._id, name: app.name })</span>)
343
+ const tmpPath = <span class="cstat-no" title="statement not covered" >await sdk.backups.exportMultipleApps(</span>
344
+ appMetadata,
345
+ globalDBString
339
346
  )
340
- <span class="cstat-no" title="statement not covered" > return response.rows.map(<span class="fstat-no" title="function not covered" >ro</span>w =&gt; <span class="cstat-no" title="statement not covered" >row.doc)</span></span>
347
+ const filename = <span class="cstat-no" title="statement not covered" >`cloud-export-${new Date().getTime()}.tar.gz`</span>
348
+ <span class="cstat-no" title="statement not covered" > ctx.attachment(filename)</span>
349
+ <span class="cstat-no" title="statement not covered" > ctx.body = streamFile(tmpPath)</span>
341
350
  }
342
351
  &nbsp;
343
352
  async function <span class="fstat-no" title="function not covered" >hasBeenImported(</span>) {
@@ -365,17 +374,20 @@ exports.importApps = <span class="fstat-no" title="function not covered" >as</sp
365
374
  "Import file is required and environment must be fresh to import apps."
366
375
  )
367
376
  }
368
- const importFile = <span class="cstat-no" title="statement not covered" >ctx.request.files.importFile</span>
369
- const importString = <span class="cstat-no" title="statement not covered" >readFileSync(importFile.path)</span>
370
- const dbs = <span class="cstat-no" title="statement not covered" >JSON.parse(importString)</span>
371
- const globalDbImport = <span class="cstat-no" title="statement not covered" >dbs.global</span>
372
- // remove from the list of apps
373
- <span class="cstat-no" title="statement not covered" > delete dbs.global</span>
377
+ <span class="cstat-no" title="statement not covered" > if (ctx.request.files.importFile.type !== "application/gzip") {</span>
378
+ <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Import file must be a gzipped tarball.")</span>
379
+ }
380
+ &nbsp;
381
+ // initially get all the app databases out of the tarball
382
+ const tmpPath = <span class="cstat-no" title="statement not covered" >sdk.backups.untarFile(ctx.request.files.importFile)</span>
383
+ const globalDbImport = <span class="cstat-no" title="statement not covered" >sdk.backups.getGlobalDBFile(tmpPath)</span>
384
+ const appNames = <span class="cstat-no" title="statement not covered" >sdk.backups.getListOfAppsInMulti(tmpPath)</span>
385
+ &nbsp;
374
386
  const globalDb = <span class="cstat-no" title="statement not covered" >getGlobalDB()</span>
375
387
  // load the global db first
376
388
  <span class="cstat-no" title="statement not covered" > await globalDb.load(stringToReadStream(globalDbImport))</span>
377
- <span class="cstat-no" title="statement not covered" > for (let [appName, appImport] of Object.entries(dbs)) {</span>
378
- <span class="cstat-no" title="statement not covered" > await createApp(appName, appImport)</span>
389
+ <span class="cstat-no" title="statement not covered" > for (let appName of appNames) {</span>
390
+ <span class="cstat-no" title="statement not covered" > await createApp(appName, join(tmpPath, appName))</span>
379
391
  }
380
392
  &nbsp;
381
393
  // if there are any users make sure to remove them
@@ -400,7 +412,7 @@ exports.importApps = <span class="fstat-no" title="function not covered" >as</sp
400
412
  <div class='footer quiet pad2 space-top1 center small'>
401
413
  Code coverage generated by
402
414
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
403
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
415
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
404
416
  </div>
405
417
  <script src="../../prettify.js"></script>
406
418
  <script>
@@ -919,7 +919,7 @@ const buildSchemaHelper = <span class="fstat-no" title="function not covered" >a
919
919
  <div class='footer quiet pad2 space-top1 center small'>
920
920
  Code coverage generated by
921
921
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
922
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
922
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
923
923
  </div>
924
924
  <script src="../../prettify.js"></script>
925
925
  <script>
@@ -438,7 +438,7 @@ exports.revert = async ctx =&gt; {
438
438
  target: appId,
439
439
  })
440
440
  try {
441
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
441
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (env.COUCH_DB_URL) {
442
442
  // in-memory db stalls on rollback
443
443
  <span class="cstat-no" title="statement not covered" > await replication.rollback()</span>
444
444
  }
@@ -475,7 +475,7 @@ exports.getBudibaseVersion = async ctx =&gt; {
475
475
  <div class='footer quiet pad2 space-top1 center small'>
476
476
  Code coverage generated by
477
477
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
478
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
478
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
479
479
  </div>
480
480
  <script src="../../prettify.js"></script>
481
481
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">70.03% </span>
26
+ <span class="strong">69.67% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>638/911</span>
28
+ <span class='fraction'>625/897</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">44.92% </span>
33
+ <span class="strong">44.6% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>124/276</span>
35
+ <span class='fraction'>124/278</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">64.92% </span>
40
+ <span class="strong">63.43% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>87/134</span>
42
+ <span class='fraction'>85/134</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">69.89% </span>
47
+ <span class="strong">69.53% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>627/897</span>
49
+ <span class='fraction'>614/883</span>
50
50
  </div>
51
51
 
52
52
 
@@ -108,34 +108,19 @@
108
108
  <td data-value="131" class="abs high">110/131</td>
109
109
  </tr>
110
110
 
111
- <tr>
112
- <td class="file high" data-value="backup.js"><a href="backup.js.html">backup.js</a></td>
113
- <td data-value="100" class="pic high">
114
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
115
- </td>
116
- <td data-value="100" class="pct high">100%</td>
117
- <td data-value="15" class="abs high">15/15</td>
118
- <td data-value="100" class="pct high">100%</td>
119
- <td data-value="0" class="abs high">0/0</td>
120
- <td data-value="100" class="pct high">100%</td>
121
- <td data-value="2" class="abs high">2/2</td>
122
- <td data-value="100" class="pct high">100%</td>
123
- <td data-value="15" class="abs high">15/15</td>
124
- </tr>
125
-
126
111
  <tr>
127
112
  <td class="file low" data-value="cloud.js"><a href="cloud.js.html">cloud.js</a></td>
128
- <td data-value="18.18" class="pic low">
129
- <div class="chart"><div class="cover-fill" style="width: 18%"></div><div class="cover-empty" style="width: 82%"></div></div>
113
+ <td data-value="21.42" class="pic low">
114
+ <div class="chart"><div class="cover-fill" style="width: 21%"></div><div class="cover-empty" style="width: 79%"></div></div>
130
115
  </td>
131
- <td data-value="18.18" class="pct low">18.18%</td>
132
- <td data-value="55" class="abs low">10/55</td>
116
+ <td data-value="21.42" class="pct low">21.42%</td>
117
+ <td data-value="56" class="abs low">12/56</td>
133
118
  <td data-value="0" class="pct low">0%</td>
134
- <td data-value="23" class="abs low">0/23</td>
119
+ <td data-value="25" class="abs low">0/25</td>
135
120
  <td data-value="0" class="pct low">0%</td>
136
- <td data-value="8" class="abs low">0/8</td>
137
- <td data-value="18.51" class="pct low">18.51%</td>
138
- <td data-value="54" class="abs low">10/54</td>
121
+ <td data-value="10" class="abs low">0/10</td>
122
+ <td data-value="21.81" class="pct low">21.81%</td>
123
+ <td data-value="55" class="abs low">12/55</td>
139
124
  </tr>
140
125
 
141
126
  <tr>
@@ -341,7 +326,7 @@
341
326
  <div class='footer quiet pad2 space-top1 center small'>
342
327
  Code coverage generated by
343
328
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
344
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
329
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
345
330
  </div>
346
331
  <script src="../../prettify.js"></script>
347
332
  <script>
@@ -112,7 +112,7 @@ exports.find = async function (ctx) {
112
112
  <div class='footer quiet pad2 space-top1 center small'>
113
113
  Code coverage generated by
114
114
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
115
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
115
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
116
116
  </div>
117
117
  <script src="../../prettify.js"></script>
118
118
  <script>
@@ -211,7 +211,7 @@ exports.destroy = async function (ctx) {
211
211
  <div class='footer quiet pad2 space-top1 center small'>
212
212
  Code coverage generated by
213
213
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
214
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
214
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
215
215
  </div>
216
216
  <script src="../../prettify.js"></script>
217
217
  <script>
@@ -193,7 +193,7 @@ exports.getMetadata = async ctx =&gt; {
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
196
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
197
197
  </div>
198
198
  <script src="../../prettify.js"></script>
199
199
  <script>
@@ -109,7 +109,7 @@ exports.fetchDefinitions = <span class="fstat-no" title="function not covered" >
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
112
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
112
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  <script src="../../prettify.js"></script>
115
115
  <script>
@@ -595,7 +595,7 @@ exports.removePermission = async function (ctx) {
595
595
  <div class='footer quiet pad2 space-top1 center small'>
596
596
  Code coverage generated by
597
597
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
598
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
598
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
599
599
  </div>
600
600
  <script src="../../prettify.js"></script>
601
601
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
104
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -220,7 +220,7 @@ exports.generateQueryPreviewValidation = () =&gt; {
220
220
  <div class='footer quiet pad2 space-top1 center small'>
221
221
  Code coverage generated by
222
222
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
223
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
223
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
224
224
  </div>
225
225
  <script src="../../../prettify.js"></script>
226
226
  <script>
@@ -394,7 +394,7 @@ exports.destroy = async function (ctx) {
394
394
  <div class='footer quiet pad2 space-top1 center small'>
395
395
  Code coverage generated by
396
396
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
397
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
397
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
398
398
  </div>
399
399
  <script src="../../prettify.js"></script>
400
400
  <script>
@@ -346,7 +346,7 @@ exports.clientFetch = 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" rel="noopener noreferrer">istanbul</a>
349
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
349
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
350
350
  </div>
351
351
  <script src="../../prettify.js"></script>
352
352
  <script>
@@ -829,7 +829,7 @@ exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >
829
829
  <div class='footer quiet pad2 space-top1 center small'>
830
830
  Code coverage generated by
831
831
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
832
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
832
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
833
833
  </div>
834
834
  <script src="../../../prettify.js"></script>
835
835
  <script>
@@ -161,7 +161,7 @@
161
161
  <div class='footer quiet pad2 space-top1 center small'>
162
162
  Code coverage generated by
163
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
164
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
165
165
  </div>
166
166
  <script src="../../../prettify.js"></script>
167
167
  <script>
@@ -679,35 +679,35 @@
679
679
  <span class="cline-any cline-neutral">&nbsp;</span>
680
680
  <span class="cline-any cline-neutral">&nbsp;</span>
681
681
  <span class="cline-any cline-yes">45x</span>
682
- <span class="cline-any cline-yes">76x</span>
683
- <span class="cline-any cline-yes">76x</span>
684
- <span class="cline-any cline-yes">76x</span>
682
+ <span class="cline-any cline-yes">77x</span>
683
+ <span class="cline-any cline-yes">77x</span>
684
+ <span class="cline-any cline-yes">77x</span>
685
685
  <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-yes">76x</span>
687
- <span class="cline-any cline-yes">76x</span>
686
+ <span class="cline-any cline-yes">77x</span>
687
+ <span class="cline-any cline-yes">77x</span>
688
688
  <span class="cline-any cline-neutral">&nbsp;</span>
689
689
  <span class="cline-any cline-neutral">&nbsp;</span>
690
690
  <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-yes">76x</span>
692
- <span class="cline-any cline-yes">76x</span>
693
- <span class="cline-any cline-yes">76x</span>
691
+ <span class="cline-any cline-yes">77x</span>
692
+ <span class="cline-any cline-yes">77x</span>
693
+ <span class="cline-any cline-yes">77x</span>
694
694
  <span class="cline-any cline-neutral">&nbsp;</span>
695
695
  <span class="cline-any cline-neutral">&nbsp;</span>
696
696
  <span class="cline-any cline-neutral">&nbsp;</span>
697
697
  <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-yes">76x</span>
698
+ <span class="cline-any cline-yes">77x</span>
699
699
  <span class="cline-any cline-no">&nbsp;</span>
700
700
  <span class="cline-any cline-neutral">&nbsp;</span>
701
701
  <span class="cline-any cline-neutral">&nbsp;</span>
702
702
  <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-yes">76x</span>
703
+ <span class="cline-any cline-yes">77x</span>
704
704
  <span class="cline-any cline-neutral">&nbsp;</span>
705
705
  <span class="cline-any cline-neutral">&nbsp;</span>
706
706
  <span class="cline-any cline-neutral">&nbsp;</span>
707
707
  <span class="cline-any cline-neutral">&nbsp;</span>
708
708
  <span class="cline-any cline-neutral">&nbsp;</span>
709
709
  <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-yes">75x</span>
710
+ <span class="cline-any cline-yes">76x</span>
711
711
  <span class="cline-any cline-neutral">&nbsp;</span>
712
712
  <span class="cline-any cline-neutral">&nbsp;</span>
713
713
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1477,7 +1477,7 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1477
1477
  <div class='footer quiet pad2 space-top1 center small'>
1478
1478
  Code coverage generated by
1479
1479
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1480
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
1480
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
1481
1481
  </div>
1482
1482
  <script src="../../../prettify.js"></script>
1483
1483
  <script>
@@ -1591,7 +1591,7 @@ exports.fullSearch = async (query, params) =&gt; {
1591
1591
  <div class='footer quiet pad2 space-top1 center small'>
1592
1592
  Code coverage generated by
1593
1593
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1594
- at Wed Oct 19 2022 11:14:13 GMT+0000 (Coordinated Universal Time)
1594
+ at Tue Oct 25 2022 13:31:47 GMT+0000 (Coordinated Universal Time)
1595
1595
  </div>
1596
1596
  <script src="../../../prettify.js"></script>
1597
1597
  <script>