@budibase/server 1.0.27-alpha.1 → 1.0.27-alpha.10

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 (212) hide show
  1. package/__mocks__/node-fetch.ts +18 -0
  2. package/builder/assets/{index.4a13c4cb.css → index.0dce895b.css} +1 -1
  3. package/builder/assets/index.39751e34.js +1348 -0
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +787 -637
  6. package/coverage/coverage-final.json +27 -27
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +54 -54
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +49 -49
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/index.html +20 -20
  19. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.html +19 -19
  24. package/coverage/lcov-report/api/controllers/query/index.js.html +100 -121
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -3
  26. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/index.html +22 -22
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +38 -11
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +7 -4
  33. package/coverage/lcov-report/api/controllers/row/utils.js.html +29 -20
  34. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  49. package/coverage/lcov-report/api/index.html +1 -1
  50. package/coverage/lcov-report/api/index.js.html +5 -5
  51. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/index.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +24 -3
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  81. package/coverage/lcov-report/automations/actions.js.html +1 -1
  82. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  83. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  84. package/coverage/lcov-report/automations/index.html +1 -1
  85. package/coverage/lcov-report/automations/index.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/executeQuery.js.html +31 -7
  92. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/index.html +11 -11
  95. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  113. package/coverage/lcov-report/automations/utils.js.html +5 -5
  114. package/coverage/lcov-report/constants/index.html +1 -1
  115. package/coverage/lcov-report/constants/index.js.html +1 -1
  116. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  117. package/coverage/lcov-report/constants/screens.js.html +1 -1
  118. package/coverage/lcov-report/db/client.js.html +1 -1
  119. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  120. package/coverage/lcov-report/db/index.html +1 -1
  121. package/coverage/lcov-report/db/index.js.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  126. package/coverage/lcov-report/db/newid.js.html +2 -2
  127. package/coverage/lcov-report/db/utils.js.html +18 -18
  128. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  129. package/coverage/lcov-report/events/index.html +1 -1
  130. package/coverage/lcov-report/events/index.js.html +1 -1
  131. package/coverage/lcov-report/events/utils.js.html +1 -1
  132. package/coverage/lcov-report/index.html +63 -63
  133. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  134. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  135. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  136. package/coverage/lcov-report/middleware/authorized.js.html +10 -10
  137. package/coverage/lcov-report/middleware/builder.js.html +8 -8
  138. package/coverage/lcov-report/middleware/currentapp.js.html +28 -28
  139. package/coverage/lcov-report/middleware/index.html +1 -1
  140. package/coverage/lcov-report/middleware/joi-validator.js.html +9 -9
  141. package/coverage/lcov-report/middleware/resourceId.js.html +17 -17
  142. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  143. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  144. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  145. package/coverage/lcov-report/threads/automation.js.html +1 -1
  146. package/coverage/lcov-report/threads/index.html +31 -31
  147. package/coverage/lcov-report/threads/index.js.html +11 -11
  148. package/coverage/lcov-report/threads/query.js.html +367 -91
  149. package/coverage/lcov-report/threads/utils.js.html +356 -11
  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 +1 -1
  154. package/coverage/lcov-report/utilities/global.js.html +13 -13
  155. package/coverage/lcov-report/utilities/index.html +1 -1
  156. package/coverage/lcov-report/utilities/index.js.html +9 -9
  157. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  158. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  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 +19 -19
  162. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +235 -10
  163. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  164. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  165. package/coverage/lcov-report/utilities/security.js.html +1 -1
  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 +1 -1
  169. package/coverage/lcov.info +1348 -1077
  170. package/dist/api/controllers/query/import/sources/base/index.js +2 -1
  171. package/dist/api/controllers/query/import/sources/curl.js +11 -5
  172. package/dist/api/controllers/query/import/sources/openapi2.js +8 -5
  173. package/dist/api/controllers/query/index.js +45 -47
  174. package/dist/api/controllers/query/validation.js +2 -1
  175. package/dist/api/controllers/row/internal.js +14 -6
  176. package/dist/api/controllers/row/internalSearch.js +2 -1
  177. package/dist/api/controllers/row/utils.js +13 -6
  178. package/dist/api/routes/query.js +3 -1
  179. package/dist/automations/steps/executeQuery.js +8 -1
  180. package/dist/integrations/base/sqlTable.js +1 -1
  181. package/dist/integrations/rest.js +3 -3
  182. package/dist/package.json +5 -4
  183. package/dist/tests/utilities/TestConfiguration.js +7 -0
  184. package/dist/threads/query.js +148 -52
  185. package/dist/threads/utils.js +105 -0
  186. package/dist/tsconfig.tsbuildinfo +1 -1
  187. package/dist/utilities/fileSystem/utilities.js +2 -1
  188. package/dist/utilities/rowProcessor/index.js +76 -0
  189. package/package.json +6 -5
  190. package/src/api/controllers/query/import/sources/base/index.ts +3 -1
  191. package/src/api/controllers/query/import/sources/curl.ts +12 -4
  192. package/src/api/controllers/query/import/sources/openapi2.ts +9 -5
  193. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +2 -3
  194. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +6 -7
  195. package/src/api/controllers/query/import/tests/index.spec.js +0 -6
  196. package/src/api/controllers/query/index.js +48 -55
  197. package/src/api/controllers/query/validation.js +2 -1
  198. package/src/api/controllers/row/internal.js +14 -5
  199. package/src/api/controllers/row/internalSearch.js +2 -1
  200. package/src/api/controllers/row/utils.js +11 -8
  201. package/src/api/routes/query.js +8 -1
  202. package/src/api/routes/tests/query.spec.js +88 -0
  203. package/src/automations/steps/executeQuery.js +9 -1
  204. package/src/definitions/datasource.ts +10 -0
  205. package/src/integrations/base/sqlTable.ts +1 -1
  206. package/src/integrations/rest.ts +6 -3
  207. package/src/tests/utilities/TestConfiguration.js +10 -0
  208. package/src/threads/query.js +148 -56
  209. package/src/threads/utils.js +115 -0
  210. package/src/utilities/fileSystem/utilities.js +2 -0
  211. package/src/utilities/rowProcessor/index.js +75 -0
  212. package/builder/assets/index.00c4135e.js +0 -1320
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">52.6% </span>
26
+ <span class="strong">52.89% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>313/595</span>
28
+ <span class='fraction'>320/605</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">33.46% </span>
33
+ <span class="strong">33.59% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>83/248</span>
35
+ <span class='fraction'>85/253</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">52.65% </span>
47
+ <span class="strong">52.95% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>307/583</span>
49
+ <span class='fraction'>314/593</span>
50
50
  </div>
51
51
 
52
52
 
@@ -104,17 +104,17 @@
104
104
 
105
105
  <tr>
106
106
  <td class="file high" data-value="internal.js"><a href="internal.js.html">internal.js</a></td>
107
- <td data-value="82.79" class="pic high">
108
- <div class="chart"><div class="cover-fill" style="width: 82%"></div><div class="cover-empty" style="width: 18%"></div></div>
107
+ <td data-value="83.18" class="pic high">
108
+ <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
109
109
  </td>
110
- <td data-value="82.79" class="pct high">82.79%</td>
111
- <td data-value="215" class="abs high">178/215</td>
110
+ <td data-value="83.18" class="pct high">83.18%</td>
111
+ <td data-value="220" class="abs high">183/220</td>
112
112
  <td data-value="60.93" class="pct medium">60.93%</td>
113
113
  <td data-value="64" class="abs medium">39/64</td>
114
114
  <td data-value="92" class="pct high">92%</td>
115
115
  <td data-value="25" class="abs high">23/25</td>
116
- <td data-value="82.77" class="pct high">82.77%</td>
117
- <td data-value="209" class="abs high">173/209</td>
116
+ <td data-value="83.17" class="pct high">83.17%</td>
117
+ <td data-value="214" class="abs high">178/214</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
@@ -125,7 +125,7 @@
125
125
  <td data-value="4.66" class="pct low">4.66%</td>
126
126
  <td data-value="150" class="abs low">7/150</td>
127
127
  <td data-value="0" class="pct low">0%</td>
128
- <td data-value="85" class="abs low">0/85</td>
128
+ <td data-value="87" class="abs low">0/87</td>
129
129
  <td data-value="0" class="pct low">0%</td>
130
130
  <td data-value="33" class="abs low">0/33</td>
131
131
  <td data-value="4.76" class="pct low">4.76%</td>
@@ -134,17 +134,17 @@
134
134
 
135
135
  <tr>
136
136
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
137
- <td data-value="77.27" class="pic medium">
138
- <div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
137
+ <td data-value="73.46" class="pic medium">
138
+ <div class="chart"><div class="cover-fill" style="width: 73%"></div><div class="cover-empty" style="width: 27%"></div></div>
139
139
  </td>
140
- <td data-value="77.27" class="pct medium">77.27%</td>
141
- <td data-value="44" class="abs medium">34/44</td>
142
- <td data-value="52.17" class="pct medium">52.17%</td>
143
- <td data-value="23" class="abs medium">12/23</td>
140
+ <td data-value="73.46" class="pct medium">73.46%</td>
141
+ <td data-value="49" class="abs medium">36/49</td>
142
+ <td data-value="53.84" class="pct medium">53.84%</td>
143
+ <td data-value="26" class="abs medium">14/26</td>
144
144
  <td data-value="66.66" class="pct medium">66.66%</td>
145
145
  <td data-value="6" class="abs medium">4/6</td>
146
- <td data-value="76.74" class="pct medium">76.74%</td>
147
- <td data-value="43" class="abs medium">33/43</td>
146
+ <td data-value="72.91" class="pct medium">72.91%</td>
147
+ <td data-value="48" class="abs medium">35/48</td>
148
148
  </tr>
149
149
 
150
150
  </tbody>
@@ -155,7 +155,7 @@
155
155
  <div class='footer quiet pad2 space-top1 center small'>
156
156
  Code coverage generated by
157
157
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
158
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
158
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
159
159
  </div>
160
160
  </div>
161
161
  <script src="../../../prettify.js"></script>
@@ -481,7 +481,7 @@ exports.fetchEnrichedRow = async function (ctx) {
481
481
  <div class='footer quiet pad2 space-top1 center small'>
482
482
  Code coverage generated by
483
483
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
484
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
484
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
485
485
  </div>
486
486
  </div>
487
487
  <script src="../../../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">82.79% </span>
26
+ <span class="strong">83.18% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>178/215</span>
28
+ <span class='fraction'>183/220</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">82.77% </span>
47
+ <span class="strong">83.17% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>173/209</span>
49
+ <span class='fraction'>178/214</span>
50
50
  </div>
51
51
 
52
52
 
@@ -504,7 +504,16 @@
504
504
  <a name='L445'></a><a href='#L445'>445</a>
505
505
  <a name='L446'></a><a href='#L446'>446</a>
506
506
  <a name='L447'></a><a href='#L447'>447</a>
507
- <a name='L448'></a><a href='#L448'>448</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
507
+ <a name='L448'></a><a href='#L448'>448</a>
508
+ <a name='L449'></a><a href='#L449'>449</a>
509
+ <a name='L450'></a><a href='#L450'>450</a>
510
+ <a name='L451'></a><a href='#L451'>451</a>
511
+ <a name='L452'></a><a href='#L452'>452</a>
512
+ <a name='L453'></a><a href='#L453'>453</a>
513
+ <a name='L454'></a><a href='#L454'>454</a>
514
+ <a name='L455'></a><a href='#L455'>455</a>
515
+ <a name='L456'></a><a href='#L456'>456</a>
516
+ <a name='L457'></a><a href='#L457'>457</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
508
517
  <span class="cline-any cline-yes">34x</span>
509
518
  <span class="cline-any cline-neutral">&nbsp;</span>
510
519
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -517,6 +526,7 @@
517
526
  <span class="cline-any cline-neutral">&nbsp;</span>
518
527
  <span class="cline-any cline-neutral">&nbsp;</span>
519
528
  <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
530
  <span class="cline-any cline-yes">34x</span>
521
531
  <span class="cline-any cline-yes">34x</span>
522
532
  <span class="cline-any cline-yes">34x</span>
@@ -531,6 +541,7 @@
531
541
  <span class="cline-any cline-neutral">&nbsp;</span>
532
542
  <span class="cline-any cline-neutral">&nbsp;</span>
533
543
  <span class="cline-any cline-yes">34x</span>
544
+ <span class="cline-any cline-yes">34x</span>
534
545
  <span class="cline-any cline-neutral">&nbsp;</span>
535
546
  <span class="cline-any cline-yes">34x</span>
536
547
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -632,6 +643,7 @@
632
643
  <span class="cline-any cline-yes">5x</span>
633
644
  <span class="cline-any cline-neutral">&nbsp;</span>
634
645
  <span class="cline-any cline-yes">5x</span>
646
+ <span class="cline-any cline-yes">5x</span>
635
647
  <span class="cline-any cline-yes">21x</span>
636
648
  <span class="cline-any cline-yes">6x</span>
637
649
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -658,6 +670,8 @@
658
670
  <span class="cline-any cline-neutral">&nbsp;</span>
659
671
  <span class="cline-any cline-yes">4x</span>
660
672
  <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-yes">4x</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
675
  <span class="cline-any cline-no">&nbsp;</span>
662
676
  <span class="cline-any cline-no">&nbsp;</span>
663
677
  <span class="cline-any cline-no">&nbsp;</span>
@@ -802,6 +816,8 @@
802
816
  <span class="cline-any cline-neutral">&nbsp;</span>
803
817
  <span class="cline-any cline-neutral">&nbsp;</span>
804
818
  <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-yes">2x</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
821
  <span class="cline-any cline-neutral">&nbsp;</span>
806
822
  <span class="cline-any cline-yes">2x</span>
807
823
  <span class="cline-any cline-no">&nbsp;</span>
@@ -847,6 +863,8 @@
847
863
  <span class="cline-any cline-neutral">&nbsp;</span>
848
864
  <span class="cline-any cline-yes">3x</span>
849
865
  <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-yes">2x</span>
850
868
  <span class="cline-any cline-yes">2x</span>
851
869
  <span class="cline-any cline-yes">2x</span>
852
870
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -964,6 +982,7 @@ const {
964
982
  inputProcessing,
965
983
  outputProcessing,
966
984
  processAutoColumn,
985
+ cleanupAttachments,
967
986
  } = require("../../../utilities/rowProcessor")
968
987
  const { FieldTypes } = require("../../../constants")
969
988
  const { isEqual } = require("lodash")
@@ -978,6 +997,7 @@ const {
978
997
  getFromDesignDoc,
979
998
  getFromMemoryDoc,
980
999
  } = require("../view/utils")
1000
+ const { cloneDeep } = require("lodash/fp")
981
1001
  &nbsp;
982
1002
  const CALCULATION_TYPES = {
983
1003
  SUM: "sum",
@@ -1062,14 +1082,14 @@ exports.patch = async ctx =&gt; {
1062
1082
  const inputs = ctx.request.body
1063
1083
  const tableId = inputs.tableId
1064
1084
  const isUserTable = tableId === InternalTables.USER_METADATA
1065
- let dbRow
1085
+ let oldRow
1066
1086
  try {
1067
- dbRow = await db.get(inputs._id)
1087
+ oldRow = await db.get(inputs._id)
1068
1088
  } catch (err) {
1069
1089
  <span class="cstat-no" title="statement not covered" > if (isUserTable) {</span>
1070
1090
  // don't include the rev, it'll be the global rev
1071
1091
  // this time
1072
- <span class="cstat-no" title="statement not covered" > dbRow = {</span>
1092
+ <span class="cstat-no" title="statement not covered" > oldRow = {</span>
1073
1093
  _id: inputs._id,
1074
1094
  }
1075
1095
  } else {
@@ -1078,13 +1098,14 @@ exports.patch = async ctx =&gt; {
1078
1098
  }
1079
1099
  let dbTable = await db.get(tableId)
1080
1100
  // need to build up full patch fields before coerce
1101
+ let combinedRow = cloneDeep(oldRow)
1081
1102
  for (let key of Object.keys(inputs)) {
1082
1103
  if (!dbTable.schema[key]) continue
1083
- dbRow[key] = inputs[key]
1104
+ combinedRow[key] = inputs[key]
1084
1105
  }
1085
1106
  &nbsp;
1086
1107
  // this returns the table and row incase they have been updated
1087
- let { table, row } = inputProcessing(ctx.user, dbTable, dbRow)
1108
+ let { table, row } = inputProcessing(ctx.user, dbTable, combinedRow)
1088
1109
  const validateResult = await validate({
1089
1110
  row,
1090
1111
  table,
@@ -1102,6 +1123,8 @@ exports.patch = async ctx =&gt; {
1102
1123
  tableId: row.tableId,
1103
1124
  table,
1104
1125
  })
1126
+ // check if any attachments removed
1127
+ await cleanupAttachments(appId, table, { oldRow, row })
1105
1128
  &nbsp;
1106
1129
  <span class="missing-if-branch" title="if path not taken" >I</span>if (isUserTable) {
1107
1130
  // the row has been updated, need to put it into the ctx
@@ -1248,6 +1271,8 @@ exports.destroy = async function (ctx) {
1248
1271
  row,
1249
1272
  tableId: row.tableId,
1250
1273
  })
1274
+ // remove any attachments that were on the row from object storage
1275
+ await cleanupAttachments(appId, table, { row })
1251
1276
  &nbsp;
1252
1277
  let response
1253
1278
  <span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.params.tableId === InternalTables.USER_METADATA) {
@@ -1294,6 +1319,8 @@ exports.bulkDestroy = async ctx =&gt; {
1294
1319
  } else {
1295
1320
  await db.bulkDocs(rows.map(row =&gt; ({ ...row, _deleted: true })))
1296
1321
  }
1322
+ // remove any attachments that were on the rows from object storage
1323
+ await cleanupAttachments(appId, table, { rows })
1297
1324
  await Promise.all(updates)
1298
1325
  return { response: { ok: true }, rows }
1299
1326
  }
@@ -1405,7 +1432,7 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1405
1432
  <div class='footer quiet pad2 space-top1 center small'>
1406
1433
  Code coverage generated by
1407
1434
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1408
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
1435
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
1409
1436
  </div>
1410
1437
  </div>
1411
1438
  <script src="../../../prettify.js"></script>
@@ -32,7 +32,7 @@
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/85</span>
35
+ <span class='fraction'>0/87</span>
36
36
  </div>
37
37
 
38
38
 
@@ -445,7 +445,8 @@
445
445
  <a name='L386'></a><a href='#L386'>386</a>
446
446
  <a name='L387'></a><a href='#L387'>387</a>
447
447
  <a name='L388'></a><a href='#L388'>388</a>
448
- <a name='L389'></a><a href='#L389'>389</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
448
+ <a name='L389'></a><a href='#L389'>389</a>
449
+ <a name='L390'></a><a href='#L390'>390</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
449
450
  <span class="cline-any cline-yes">33x</span>
450
451
  <span class="cline-any cline-yes">33x</span>
451
452
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -638,6 +639,7 @@
638
639
  <span class="cline-any cline-neutral">&nbsp;</span>
639
640
  <span class="cline-any cline-no">&nbsp;</span>
640
641
  <span class="cline-any cline-no">&nbsp;</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
643
  <span class="cline-any cline-no">&nbsp;</span>
642
644
  <span class="cline-any cline-no">&nbsp;</span>
643
645
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1026,7 +1028,8 @@ class QueryBuilder {
1026
1028
  }
1027
1029
  <span class="cstat-no" title="statement not covered" > if (this.query.equal) {</span>
1028
1030
  <span class="cstat-no" title="statement not covered" > build(this.query.equal, <span class="fstat-no" title="function not covered" >(k</span>ey, value) =&gt; {</span>
1029
- <span class="cstat-no" title="statement not covered" > if (!value) {</span>
1031
+ // 0 evaluates to false, which means we would return all rows if we don't check it
1032
+ <span class="cstat-no" title="statement not covered" > if (!value &amp;&amp; value !== 0) {</span>
1030
1033
  <span class="cstat-no" title="statement not covered" > return null</span>
1031
1034
  }
1032
1035
  <span class="cstat-no" title="statement not covered" > return `${key}:${builder.preprocess(value, allPreProcessingOpts)}`</span>
@@ -1228,7 +1231,7 @@ exports.fullSearch = <span class="fstat-no" title="function not covered" >as</sp
1228
1231
  <div class='footer quiet pad2 space-top1 center small'>
1229
1232
  Code coverage generated by
1230
1233
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1231
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
1234
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
1232
1235
  </div>
1233
1236
  </div>
1234
1237
  <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">77.27% </span>
26
+ <span class="strong">73.46% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>34/44</span>
28
+ <span class='fraction'>36/49</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">52.17% </span>
33
+ <span class="strong">53.84% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>12/23</span>
35
+ <span class='fraction'>14/26</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">76.74% </span>
47
+ <span class="strong">72.91% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>33/43</span>
49
+ <span class='fraction'>35/48</span>
50
50
  </div>
51
51
 
52
52
 
@@ -142,7 +142,10 @@
142
142
  <a name='L83'></a><a href='#L83'>83</a>
143
143
  <a name='L84'></a><a href='#L84'>84</a>
144
144
  <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
146
149
  <span class="cline-any cline-yes">34x</span>
147
150
  <span class="cline-any cline-yes">34x</span>
148
151
  <span class="cline-any cline-yes">34x</span>
@@ -194,9 +197,9 @@
194
197
  <span class="cline-any cline-yes">74x</span>
195
198
  <span class="cline-any cline-yes">74x</span>
196
199
  <span class="cline-any cline-yes">206x</span>
197
- <span class="cline-any cline-neutral">&nbsp;</span>
198
200
  <span class="cline-any cline-yes">206x</span>
199
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-yes">206x</span>
200
203
  <span class="cline-any cline-neutral">&nbsp;</span>
201
204
  <span class="cline-any cline-neutral">&nbsp;</span>
202
205
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -206,14 +209,17 @@
206
209
  <span class="cline-any cline-neutral">&nbsp;</span>
207
210
  <span class="cline-any cline-neutral">&nbsp;</span>
208
211
  <span class="cline-any cline-yes">206x</span>
212
+ <span class="cline-any cline-no">&nbsp;</span>
213
+ <span class="cline-any cline-no">&nbsp;</span>
214
+ <span class="cline-any cline-no">&nbsp;</span>
209
215
  <span class="cline-any cline-neutral">&nbsp;</span>
210
216
  <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-yes">206x</span>
211
218
  <span class="cline-any cline-neutral">&nbsp;</span>
212
- <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-no">&nbsp;</span>
214
219
  <span class="cline-any cline-no">&nbsp;</span>
215
220
  <span class="cline-any cline-no">&nbsp;</span>
216
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-no">&nbsp;</span>
217
223
  <span class="cline-any cline-neutral">&nbsp;</span>
218
224
  <span class="cline-any cline-yes">206x</span>
219
225
  <span class="cline-any cline-no">&nbsp;</span>
@@ -279,28 +285,31 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
279
285
  const errors = {}
280
286
  for (let fieldName of Object.keys(table.schema)) {
281
287
  const constraints = cloneDeep(table.schema[fieldName].constraints)
288
+ const type = table.schema[fieldName].type
282
289
  // special case for options, need to always allow unselected (null)
283
290
  <span class="missing-if-branch" title="if path not taken" >I</span>if (
284
- table.schema[fieldName].type ===
285
- (FieldTypes.OPTIONS || <span class="branch-1 cbranch-no" title="branch not covered" >FieldTypes.ARRAY)</span> &amp;&amp;
286
- <span class="branch-1 cbranch-no" title="branch not covered" > constraints.inclusion</span>
291
+ (type === FieldTypes.OPTIONS || type === FieldTypes.ARRAY) &amp;&amp;
292
+ <span class="branch-2 cbranch-no" title="branch not covered" > constraints.inclusion</span>
287
293
  ) {
288
294
  <span class="cstat-no" title="statement not covered" > constraints.inclusion.push(null)</span>
289
295
  }
290
296
  let res
291
297
  &nbsp;
292
298
  // Validate.js doesn't seem to handle array
293
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
294
- table.schema[fieldName].type === FieldTypes.ARRAY &amp;&amp;
295
- <span class="branch-1 cbranch-no" title="branch not covered" > row[fieldName] </span>&amp;&amp;
296
- <span class="branch-2 cbranch-no" title="branch not covered" > row[fieldName].length</span>
297
- ) {
299
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.ARRAY &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >row[fieldName] </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >row[fieldName].length)</span> {
298
300
  <span class="cstat-no" title="statement not covered" > row[fieldName].map(<span class="fstat-no" title="function not covered" >va</span>l =&gt; {</span>
299
301
  <span class="cstat-no" title="statement not covered" > if (!constraints.inclusion.includes(val)) {</span>
300
302
  <span class="cstat-no" title="statement not covered" > errors[fieldName] = "Field not in list"</span>
301
303
  }
302
304
  })
303
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (table.schema[fieldName].type === FieldTypes.FORMULA) {
305
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.JSON &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof row[fieldName] === "string")</span> {
306
+ // this should only happen if there is an error
307
+ <span class="cstat-no" title="statement not covered" > try {</span>
308
+ <span class="cstat-no" title="statement not covered" > JSON.parse(row[fieldName])</span>
309
+ } catch (err) {
310
+ <span class="cstat-no" title="statement not covered" > errors[fieldName] = [`Contains invalid JSON`]</span>
311
+ }
312
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.FORMULA) {
304
313
  <span class="cstat-no" title="statement not covered" > res = validateJs.single(</span>
305
314
  processStringSync(table.schema[fieldName].formula, row),
306
315
  constraints
@@ -319,7 +328,7 @@ exports.validate = async ({ appId, tableId, row, table }) =&gt; {
319
328
  <div class='footer quiet pad2 space-top1 center small'>
320
329
  Code coverage generated by
321
330
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
322
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
331
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
323
332
  </div>
324
333
  </div>
325
334
  <script src="../../../prettify.js"></script>
@@ -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 Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
211
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
212
212
  </div>
213
213
  </div>
214
214
  <script src="../../prettify.js"></script>
@@ -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 Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
100
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
101
101
  </div>
102
102
  </div>
103
103
  <script src="../../prettify.js"></script>
@@ -985,7 +985,7 @@ exports.bulkImport = <span class="fstat-no" title="function not covered" >as</sp
985
985
  <div class='footer quiet pad2 space-top1 center small'>
986
986
  Code coverage generated by
987
987
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
988
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
988
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
989
989
  </div>
990
990
  </div>
991
991
  <script src="../../../prettify.js"></script>
@@ -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 Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
143
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../../prettify.js"></script>
@@ -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 Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
385
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
386
386
  </div>
387
387
  </div>
388
388
  <script src="../../../prettify.js"></script>
@@ -517,7 +517,7 @@ exports.bulkImport = <span class="fstat-no" title="function not covered" >as</sp
517
517
  <div class='footer quiet pad2 space-top1 center small'>
518
518
  Code coverage generated by
519
519
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
520
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
520
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
521
521
  </div>
522
522
  </div>
523
523
  <script src="../../../prettify.js"></script>
@@ -1144,7 +1144,7 @@ exports.TableSaveFunctions = TableSaveFunctions
1144
1144
  <div class='footer quiet pad2 space-top1 center small'>
1145
1145
  Code coverage generated by
1146
1146
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1147
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
1147
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
1148
1148
  </div>
1149
1149
  </div>
1150
1150
  <script src="../../../prettify.js"></script>
@@ -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 Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
184
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>
@@ -754,7 +754,7 @@ exports.getFlags = <span class="fstat-no" title="function not covered" >as</span
754
754
  <div class='footer quiet pad2 space-top1 center small'>
755
755
  Code coverage generated by
756
756
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
757
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
757
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
758
758
  </div>
759
759
  </div>
760
760
  <script src="../../prettify.js"></script>
@@ -133,7 +133,7 @@ exports.ExportFormats = {
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
136
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
136
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
137
137
  </div>
138
138
  </div>
139
139
  <script src="../../../prettify.js"></script>
@@ -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 Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
143
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
144
144
  </div>
145
145
  </div>
146
146
  <script src="../../../prettify.js"></script>
@@ -427,7 +427,7 @@ exports.exportView = async ctx =&gt; {
427
427
  <div class='footer quiet pad2 space-top1 center small'>
428
428
  Code coverage generated by
429
429
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
430
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
430
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
431
431
  </div>
432
432
  </div>
433
433
  <script src="../../../prettify.js"></script>
@@ -493,7 +493,7 @@ exports.getFromMemoryDoc = async (db, viewName) =&gt; {
493
493
  <div class='footer quiet pad2 space-top1 center small'>
494
494
  Code coverage generated by
495
495
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
496
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
496
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
497
497
  </div>
498
498
  </div>
499
499
  <script src="../../../prettify.js"></script>
@@ -550,7 +550,7 @@ module.exports = viewTemplate
550
550
  <div class='footer quiet pad2 space-top1 center small'>
551
551
  Code coverage generated by
552
552
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
553
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
553
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
554
554
  </div>
555
555
  </div>
556
556
  <script src="../../../prettify.js"></script>
@@ -406,7 +406,7 @@ exports.trigger = async ctx =&gt; {
406
406
  <div class='footer quiet pad2 space-top1 center small'>
407
407
  Code coverage generated by
408
408
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
409
- at Fri Dec 31 2021 14:12:35 GMT+0000 (Coordinated Universal Time)
409
+ at Tue Jan 11 2022 13:49:36 GMT+0000 (Coordinated Universal Time)
410
410
  </div>
411
411
  </div>
412
412
  <script src="../../prettify.js"></script>