@budibase/server 1.0.21 → 1.0.23-alpha.2

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 (238) hide show
  1. package/__mocks__/node-fetch.ts +3 -0
  2. package/builder/assets/bb-spaceship.8f6e81e1.svg +227 -0
  3. package/builder/assets/{index.c2e9e4e2.js → index.26923a83.js} +208 -204
  4. package/builder/assets/{index.4fb3f887.css → index.4a13c4cb.css} +1 -1
  5. package/builder/assets/{vendor.470042a4.js → vendor.f9faf6ab.js} +88 -88
  6. package/builder/index.html +3 -3
  7. package/coverage/clover.xml +654 -567
  8. package/coverage/coverage-final.json +22 -20
  9. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/automation.js.html +22 -10
  14. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/datasource.js.html +14 -14
  18. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/index.html +28 -43
  21. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/query/index.html +126 -0
  26. package/coverage/lcov-report/api/controllers/{query.js.html → query/index.js.html} +159 -27
  27. package/coverage/lcov-report/api/controllers/query/validation.js.html +203 -0
  28. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/user.js.html +108 -9
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +18 -6
  51. package/coverage/lcov-report/api/index.html +1 -1
  52. package/coverage/lcov-report/api/index.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/index.html +9 -9
  66. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/query.js.html +11 -98
  72. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/user.js.html +32 -2
  81. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  83. package/coverage/lcov-report/automations/actions.js.html +1 -1
  84. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  85. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  86. package/coverage/lcov-report/automations/index.html +20 -20
  87. package/coverage/lcov-report/automations/index.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/index.html +1 -1
  97. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +5 -8
  99. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  115. package/coverage/lcov-report/automations/utils.js.html +44 -11
  116. package/coverage/lcov-report/constants/index.html +1 -1
  117. package/coverage/lcov-report/constants/index.js.html +22 -22
  118. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  119. package/coverage/lcov-report/constants/screens.js.html +1 -1
  120. package/coverage/lcov-report/db/client.js.html +18 -18
  121. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  122. package/coverage/lcov-report/db/index.html +15 -15
  123. package/coverage/lcov-report/db/index.js.html +3 -3
  124. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  126. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  128. package/coverage/lcov-report/db/newid.js.html +4 -4
  129. package/coverage/lcov-report/db/utils.js.html +91 -64
  130. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  131. package/coverage/lcov-report/events/index.html +1 -1
  132. package/coverage/lcov-report/events/index.js.html +1 -1
  133. package/coverage/lcov-report/events/utils.js.html +1 -1
  134. package/coverage/lcov-report/index.html +76 -61
  135. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  136. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  137. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  138. package/coverage/lcov-report/middleware/authorized.js.html +2 -2
  139. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  140. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  141. package/coverage/lcov-report/middleware/index.html +1 -1
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  143. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  144. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  145. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  146. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  147. package/coverage/lcov-report/threads/automation.js.html +3 -6
  148. package/coverage/lcov-report/threads/index.html +35 -20
  149. package/coverage/lcov-report/threads/index.js.html +1 -1
  150. package/coverage/lcov-report/threads/query.js.html +62 -17
  151. package/coverage/lcov-report/threads/utils.js.html +119 -0
  152. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  153. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  154. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  155. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  156. package/coverage/lcov-report/utilities/global.js.html +1 -1
  157. package/coverage/lcov-report/utilities/index.html +19 -19
  158. package/coverage/lcov-report/utilities/index.js.html +66 -33
  159. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  160. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  163. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  166. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  167. package/coverage/lcov-report/utilities/security.js.html +2 -2
  168. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  169. package/coverage/lcov-report/utilities/users.js.html +1 -1
  170. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  171. package/coverage/lcov.info +1058 -918
  172. package/dist/api/controllers/automation.js +7 -5
  173. package/dist/api/controllers/query/import/index.js +79 -0
  174. package/dist/api/controllers/query/import/sources/base/index.js +63 -0
  175. package/dist/api/controllers/query/import/sources/base/openapi.js +42 -0
  176. package/dist/api/controllers/query/import/sources/curl.js +90 -0
  177. package/dist/api/controllers/query/import/sources/openapi2.js +139 -0
  178. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
  179. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
  180. package/dist/api/controllers/{query.js → query/index.js} +42 -6
  181. package/dist/api/controllers/query/validation.js +37 -0
  182. package/dist/api/controllers/user.js +37 -1
  183. package/dist/api/controllers/webhook.js +4 -0
  184. package/dist/api/routes/query.js +2 -32
  185. package/dist/api/routes/user.js +3 -1
  186. package/dist/automations/steps/outgoingWebhook.js +2 -3
  187. package/dist/automations/utils.js +10 -0
  188. package/dist/db/utils.js +8 -0
  189. package/dist/definitions/datasource.js +6 -1
  190. package/dist/integrations/rest.js +207 -117
  191. package/dist/package.json +10 -4
  192. package/dist/threads/automation.js +1 -2
  193. package/dist/threads/query.js +15 -5
  194. package/dist/threads/utils.js +13 -0
  195. package/dist/tsconfig.tsbuildinfo +1 -1
  196. package/dist/utilities/index.js +10 -0
  197. package/package.json +11 -5
  198. package/src/api/controllers/automation.js +8 -4
  199. package/src/api/controllers/query/import/index.ts +85 -0
  200. package/src/api/controllers/query/import/sources/base/index.ts +85 -0
  201. package/src/api/controllers/query/import/sources/base/openapi.ts +24 -0
  202. package/src/api/controllers/query/import/sources/curl.ts +94 -0
  203. package/src/api/controllers/query/import/sources/openapi2.ts +159 -0
  204. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +104 -0
  205. package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +1 -0
  206. package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +2 -0
  207. package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +1 -0
  208. package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +3 -0
  209. package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +2 -0
  210. package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +1 -0
  211. package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +2 -0
  212. package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +2 -0
  213. package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +1 -0
  214. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
  215. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +160 -0
  216. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
  217. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +711 -0
  218. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +239 -0
  219. package/src/api/controllers/query/import/tests/index.spec.js +115 -0
  220. package/src/api/controllers/{query.js → query/index.js} +50 -6
  221. package/src/api/controllers/query/validation.js +41 -0
  222. package/src/api/controllers/user.js +33 -0
  223. package/src/api/controllers/webhook.js +4 -0
  224. package/src/api/routes/query.js +5 -34
  225. package/src/api/routes/user.js +10 -0
  226. package/src/automations/steps/outgoingWebhook.js +2 -3
  227. package/src/automations/utils.js +11 -0
  228. package/src/db/utils.js +9 -0
  229. package/src/definitions/common.ts +2 -16
  230. package/src/definitions/datasource.ts +73 -1
  231. package/src/integrations/base/IntegrationBase.ts +4 -4
  232. package/src/integrations/oracle.ts +1 -1
  233. package/src/integrations/rest.ts +227 -137
  234. package/src/integrations/tests/rest.spec.js +167 -19
  235. package/src/threads/automation.js +1 -2
  236. package/src/threads/query.js +20 -5
  237. package/src/threads/utils.js +13 -0
  238. package/src/utilities/index.js +11 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">70.96% </span>
26
+ <span class="strong">68.42% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>22/31</span>
28
+ <span class='fraction'>26/38</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">58.33% </span>
33
+ <span class="strong">55.55% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>7/12</span>
35
+ <span class='fraction'>10/18</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">85.71% </span>
40
+ <span class="strong">87.5% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>6/7</span>
42
+ <span class='fraction'>7/8</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">72.41% </span>
47
+ <span class="strong">69.44% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>21/29</span>
49
+ <span class='fraction'>25/36</span>
50
50
  </div>
51
51
 
52
52
 
@@ -123,9 +123,22 @@
123
123
  <a name='L64'></a><a href='#L64'>64</a>
124
124
  <a name='L65'></a><a href='#L65'>65</a>
125
125
  <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-yes">1x</span>
128
- <span class="cline-any cline-yes">1x</span>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
129
142
  <span class="cline-any cline-yes">1x</span>
130
143
  <span class="cline-any cline-yes">1x</span>
131
144
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -141,6 +154,15 @@
141
154
  <span class="cline-any cline-neutral">&nbsp;</span>
142
155
  <span class="cline-any cline-neutral">&nbsp;</span>
143
156
  <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-yes">2x</span>
158
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-neutral">&nbsp;</span>
160
+ <span class="cline-any cline-neutral">&nbsp;</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-neutral">&nbsp;</span>
164
+ <span class="cline-any cline-neutral">&nbsp;</span>
165
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
166
  <span class="cline-any cline-yes">4x</span>
145
167
  <span class="cline-any cline-yes">4x</span>
146
168
  <span class="cline-any cline-yes">2x</span>
@@ -148,6 +170,14 @@
148
170
  <span class="cline-any cline-yes">2x</span>
149
171
  <span class="cline-any cline-neutral">&nbsp;</span>
150
172
  <span class="cline-any cline-yes">2x</span>
173
+ <span class="cline-any cline-yes">2x</span>
174
+ <span class="cline-any cline-yes">2x</span>
175
+ <span class="cline-any cline-yes">2x</span>
176
+ <span class="cline-any cline-yes">2x</span>
177
+ <span class="cline-any cline-no">&nbsp;</span>
178
+ <span class="cline-any cline-no">&nbsp;</span>
179
+ <span class="cline-any cline-no">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
181
  <span class="cline-any cline-neutral">&nbsp;</span>
152
182
  <span class="cline-any cline-neutral">&nbsp;</span>
153
183
  <span class="cline-any cline-yes">2x</span>
@@ -189,9 +219,7 @@
189
219
  <span class="cline-any cline-yes">2x</span>
190
220
  <span class="cline-any cline-neutral">&nbsp;</span>
191
221
  <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// when thread starts, make sure it is recorded
193
- const env = require("../environment")
194
- env.setInThread()
222
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">require("./utils").threadSetup()
195
223
  const ScriptRunner = require("../utilities/scriptRunner")
196
224
  const { integrations } = require("../integrations")
197
225
  &nbsp;
@@ -206,6 +234,15 @@ function formatResponse(resp) {
206
234
  return resp
207
235
  }
208
236
  &nbsp;
237
+ function hasExtraData(response) {
238
+ return (
239
+ typeof response === "object" &amp;&amp;
240
+ !Array.isArray(response) &amp;&amp;
241
+ <span class="branch-2 cbranch-no" title="branch not covered" > response.data != null </span>&amp;&amp;
242
+ <span class="branch-3 cbranch-no" title="branch not covered" > response.info != null</span>
243
+ )
244
+ }
245
+ &nbsp;
209
246
  async function runAndTransform(datasource, queryVerb, query, transformer) {
210
247
  const Integration = integrations[datasource.source]
211
248
  if (!Integration) {
@@ -213,7 +250,15 @@ async function runAndTransform(datasource, queryVerb, query, transformer) {
213
250
  }
214
251
  const integration = new Integration(datasource.config)
215
252
  &nbsp;
216
- let rows = formatResponse(await integration[queryVerb](query))
253
+ let output = formatResponse(await integration[queryVerb](query))
254
+ let rows = output,
255
+ info = undefined,
256
+ extra = undefined
257
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hasExtraData(output)) {
258
+ <span class="cstat-no" title="statement not covered" > rows = output.data</span>
259
+ <span class="cstat-no" title="statement not covered" > info = output.info</span>
260
+ <span class="cstat-no" title="statement not covered" > extra = output.extra</span>
261
+ }
217
262
  &nbsp;
218
263
  // transform as required
219
264
  <span class="missing-if-branch" title="if path not taken" >I</span>if (transformer) {
@@ -238,7 +283,7 @@ async function runAndTransform(datasource, queryVerb, query, transformer) {
238
283
  <span class="cstat-no" title="statement not covered" > integration.end()</span>
239
284
  }
240
285
  &nbsp;
241
- return { rows, keys }
286
+ return { rows, keys, info, extra }
242
287
  }
243
288
  &nbsp;
244
289
  module.exports = (input, callback) =&gt; {
@@ -262,7 +307,7 @@ module.exports = (input, callback) =&gt; {
262
307
  <div class='footer quiet pad2 space-top1 center small'>
263
308
  Code coverage generated by
264
309
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
265
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
310
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
266
311
  </div>
267
312
  </div>
268
313
  <script src="../prettify.js"></script>
@@ -0,0 +1,119 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for threads/utils.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">threads</a> utils.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">75% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>6/8</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">50% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>2/4</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">75% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>6/8</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ </div>
58
+ <div class='status-line medium'></div>
59
+ <pre><table class="coverage">
60
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
+ <a name='L2'></a><a href='#L2'>2</a>
62
+ <a name='L3'></a><a href='#L3'>3</a>
63
+ <a name='L4'></a><a href='#L4'>4</a>
64
+ <a name='L5'></a><a href='#L5'>5</a>
65
+ <a name='L6'></a><a href='#L6'>6</a>
66
+ <a name='L7'></a><a href='#L7'>7</a>
67
+ <a name='L8'></a><a href='#L8'>8</a>
68
+ <a name='L9'></a><a href='#L9'>9</a>
69
+ <a name='L10'></a><a href='#L10'>10</a>
70
+ <a name='L11'></a><a href='#L11'>11</a>
71
+ <a name='L12'></a><a href='#L12'>12</a>
72
+ <a name='L13'></a><a href='#L13'>13</a>
73
+ <a name='L14'></a><a href='#L14'>14</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">5x</span>
74
+ <span class="cline-any cline-yes">5x</span>
75
+ <span class="cline-any cline-yes">5x</span>
76
+ <span class="cline-any cline-neutral">&nbsp;</span>
77
+ <span class="cline-any cline-yes">5x</span>
78
+ <span class="cline-any cline-neutral">&nbsp;</span>
79
+ <span class="cline-any cline-yes">5x</span>
80
+ <span class="cline-any cline-yes">5x</span>
81
+ <span class="cline-any cline-neutral">&nbsp;</span>
82
+ <span class="cline-any cline-neutral">&nbsp;</span>
83
+ <span class="cline-any cline-no">&nbsp;</span>
84
+ <span class="cline-any cline-no">&nbsp;</span>
85
+ <span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const env = require("../environment")
87
+ const CouchDB = require("../db")
88
+ const { init } = require("@budibase/auth")
89
+ &nbsp;
90
+ exports.threadSetup = () =&gt; {
91
+ // don't run this if not threading
92
+ if (env.isTest() || <span class="branch-1 cbranch-no" title="branch not covered" >env.DISABLE_THREADING)</span> {
93
+ return
94
+ }
95
+ // when thread starts, make sure it is recorded
96
+ <span class="cstat-no" title="statement not covered" > env.setInThread()</span>
97
+ <span class="cstat-no" title="statement not covered" > init(CouchDB)</span>
98
+ }
99
+ &nbsp;</pre></td></tr></table></pre>
100
+
101
+ <div class='push'></div><!-- for sticky footer -->
102
+ </div><!-- /wrapper -->
103
+ <div class='footer quiet pad2 space-top1 center small'>
104
+ Code coverage generated by
105
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
106
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
107
+ </div>
108
+ </div>
109
+ <script src="../prettify.js"></script>
110
+ <script>
111
+ window.onload = function () {
112
+ prettyPrint();
113
+ };
114
+ </script>
115
+ <script src="../sorter.js"></script>
116
+ <script src="../block-navigation.js"></script>
117
+ </body>
118
+ </html>
119
+
@@ -109,7 +109,7 @@ const SALT_ROUNDS = <span class="cstat-no" title="statement not covered" >env.SA
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">istanbul</a>
112
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
112
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  </div>
115
115
  <script src="../prettify.js"></script>
@@ -94,7 +94,7 @@ module.exports.budibaseTempDir = budibaseTempDir
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
97
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../prettify.js"></script>
@@ -130,7 +130,7 @@ exports.resolve = <span class="fstat-no" title="function not covered" >fu</span>
130
130
  <div class='footer quiet pad2 space-top1 center small'>
131
131
  Code coverage generated by
132
132
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
133
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
133
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
134
134
  </div>
135
135
  </div>
136
136
  <script src="../prettify.js"></script>
@@ -496,7 +496,7 @@ module.exports = {
496
496
  <div class='footer quiet pad2 space-top1 center small'>
497
497
  Code coverage generated by
498
498
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
499
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
499
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
500
500
  </div>
501
501
  </div>
502
502
  <script src="../prettify.js"></script>
@@ -367,7 +367,7 @@ exports.getGlobalUsersFromMetadata = async (appId, users) =&gt; {
367
367
  <div class='footer quiet pad2 space-top1 center small'>
368
368
  Code coverage generated by
369
369
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
370
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
370
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
371
371
  </div>
372
372
  </div>
373
373
  <script src="../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">72.42% </span>
26
+ <span class="strong">72.78% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>239/330</span>
28
+ <span class='fraction'>246/338</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">54.47% </span>
33
+ <span class="strong">55.72% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>67/123</span>
35
+ <span class='fraction'>73/131</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">67.74% </span>
40
+ <span class="strong">68.25% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>42/62</span>
42
+ <span class='fraction'>43/63</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">72.13% </span>
47
+ <span class="strong">72.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>233/323</span>
49
+ <span class='fraction'>240/331</span>
50
50
  </div>
51
51
 
52
52
 
@@ -149,17 +149,17 @@
149
149
 
150
150
  <tr>
151
151
  <td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
152
- <td data-value="71.42" class="pic medium">
153
- <div class="chart"><div class="cover-fill" style="width: 71%"></div><div class="cover-empty" style="width: 29%"></div></div>
152
+ <td data-value="73.07" class="pic medium">
153
+ <div class="chart"><div class="cover-fill" style="width: 73%"></div><div class="cover-empty" style="width: 27%"></div></div>
154
154
  </td>
155
- <td data-value="71.42" class="pct medium">71.42%</td>
156
- <td data-value="70" class="abs medium">50/70</td>
157
- <td data-value="38.88" class="pct low">38.88%</td>
158
- <td data-value="18" class="abs low">7/18</td>
159
- <td data-value="73.33" class="pct medium">73.33%</td>
160
- <td data-value="15" class="abs medium">11/15</td>
161
- <td data-value="70.58" class="pct medium">70.58%</td>
162
- <td data-value="68" class="abs medium">48/68</td>
155
+ <td data-value="73.07" class="pct medium">73.07%</td>
156
+ <td data-value="78" class="abs medium">57/78</td>
157
+ <td data-value="50" class="pct medium">50%</td>
158
+ <td data-value="26" class="abs medium">13/26</td>
159
+ <td data-value="75" class="pct medium">75%</td>
160
+ <td data-value="16" class="abs medium">12/16</td>
161
+ <td data-value="72.36" class="pct medium">72.36%</td>
162
+ <td data-value="76" class="abs medium">55/76</td>
163
163
  </tr>
164
164
 
165
165
  <tr>
@@ -245,7 +245,7 @@
245
245
  <div class='footer quiet pad2 space-top1 center small'>
246
246
  Code coverage generated by
247
247
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
248
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
248
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
249
249
  </div>
250
250
  </div>
251
251
  <script src="../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">71.42% </span>
26
+ <span class="strong">73.07% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>50/70</span>
28
+ <span class='fraction'>57/78</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">38.88% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>7/18</span>
35
+ <span class='fraction'>13/26</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">73.33% </span>
40
+ <span class="strong">75% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/15</span>
42
+ <span class='fraction'>12/16</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">70.58% </span>
47
+ <span class="strong">72.36% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>48/68</span>
49
+ <span class='fraction'>55/76</span>
50
50
  </div>
51
51
 
52
52
 
@@ -209,20 +209,31 @@
209
209
  <a name='L150'></a><a href='#L150'>150</a>
210
210
  <a name='L151'></a><a href='#L151'>151</a>
211
211
  <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">36x</span>
213
- <span class="cline-any cline-yes">36x</span>
214
- <span class="cline-any cline-yes">36x</span>
215
- <span class="cline-any cline-yes">36x</span>
216
- <span class="cline-any cline-yes">36x</span>
217
- <span class="cline-any cline-yes">36x</span>
218
- <span class="cline-any cline-neutral">&nbsp;</span>
219
- <span class="cline-any cline-yes">36x</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-yes">36x</span>
222
- <span class="cline-any cline-neutral">&nbsp;</span>
223
- <span class="cline-any cline-yes">36x</span>
224
- <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-yes">36x</span>
212
+ <a name='L153'></a><a href='#L153'>153</a>
213
+ <a name='L154'></a><a href='#L154'>154</a>
214
+ <a name='L155'></a><a href='#L155'>155</a>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a>
217
+ <a name='L158'></a><a href='#L158'>158</a>
218
+ <a name='L159'></a><a href='#L159'>159</a>
219
+ <a name='L160'></a><a href='#L160'>160</a>
220
+ <a name='L161'></a><a href='#L161'>161</a>
221
+ <a name='L162'></a><a href='#L162'>162</a>
222
+ <a name='L163'></a><a href='#L163'>163</a>
223
+ <a name='L164'></a><a href='#L164'>164</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">37x</span>
224
+ <span class="cline-any cline-yes">37x</span>
225
+ <span class="cline-any cline-yes">37x</span>
226
+ <span class="cline-any cline-yes">37x</span>
227
+ <span class="cline-any cline-yes">37x</span>
228
+ <span class="cline-any cline-yes">37x</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-yes">37x</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-yes">37x</span>
233
+ <span class="cline-any cline-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-yes">37x</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-yes">37x</span>
226
237
  <span class="cline-any cline-yes">1x</span>
227
238
  <span class="cline-any cline-yes">1x</span>
228
239
  <span class="cline-any cline-yes">1x</span>
@@ -236,7 +247,7 @@
236
247
  <span class="cline-any cline-neutral">&nbsp;</span>
237
248
  <span class="cline-any cline-neutral">&nbsp;</span>
238
249
  <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-yes">36x</span>
250
+ <span class="cline-any cline-yes">37x</span>
240
251
  <span class="cline-any cline-yes">187x</span>
241
252
  <span class="cline-any cline-neutral">&nbsp;</span>
242
253
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -244,7 +255,7 @@
244
255
  <span class="cline-any cline-neutral">&nbsp;</span>
245
256
  <span class="cline-any cline-neutral">&nbsp;</span>
246
257
  <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-yes">36x</span>
258
+ <span class="cline-any cline-yes">37x</span>
248
259
  <span class="cline-any cline-yes">2x</span>
249
260
  <span class="cline-any cline-neutral">&nbsp;</span>
250
261
  <span class="cline-any cline-yes">2x</span>
@@ -263,7 +274,7 @@
263
274
  <span class="cline-any cline-neutral">&nbsp;</span>
264
275
  <span class="cline-any cline-neutral">&nbsp;</span>
265
276
  <span class="cline-any cline-neutral">&nbsp;</span>
266
- <span class="cline-any cline-yes">36x</span>
277
+ <span class="cline-any cline-yes">37x</span>
267
278
  <span class="cline-any cline-yes">188x</span>
268
279
  <span class="cline-any cline-no">&nbsp;</span>
269
280
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -278,13 +289,13 @@
278
289
  <span class="cline-any cline-neutral">&nbsp;</span>
279
290
  <span class="cline-any cline-neutral">&nbsp;</span>
280
291
  <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-yes">36x</span>
292
+ <span class="cline-any cline-yes">37x</span>
282
293
  <span class="cline-any cline-yes">2x</span>
283
294
  <span class="cline-any cline-neutral">&nbsp;</span>
284
295
  <span class="cline-any cline-neutral">&nbsp;</span>
285
296
  <span class="cline-any cline-neutral">&nbsp;</span>
286
297
  <span class="cline-any cline-neutral">&nbsp;</span>
287
- <span class="cline-any cline-yes">36x</span>
298
+ <span class="cline-any cline-yes">37x</span>
288
299
  <span class="cline-any cline-yes">3x</span>
289
300
  <span class="cline-any cline-yes">3x</span>
290
301
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -310,13 +321,13 @@
310
321
  <span class="cline-any cline-neutral">&nbsp;</span>
311
322
  <span class="cline-any cline-neutral">&nbsp;</span>
312
323
  <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-yes">36x</span>
324
+ <span class="cline-any cline-yes">37x</span>
314
325
  <span class="cline-any cline-yes">1x</span>
315
326
  <span class="cline-any cline-yes">1x</span>
316
327
  <span class="cline-any cline-neutral">&nbsp;</span>
317
328
  <span class="cline-any cline-neutral">&nbsp;</span>
318
329
  <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-yes">36x</span>
330
+ <span class="cline-any cline-yes">37x</span>
320
331
  <span class="cline-any cline-yes">4x</span>
321
332
  <span class="cline-any cline-yes">4x</span>
322
333
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -333,7 +344,7 @@
333
344
  <span class="cline-any cline-neutral">&nbsp;</span>
334
345
  <span class="cline-any cline-neutral">&nbsp;</span>
335
346
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-yes">36x</span>
347
+ <span class="cline-any cline-yes">37x</span>
337
348
  <span class="cline-any cline-no">&nbsp;</span>
338
349
  <span class="cline-any cline-neutral">&nbsp;</span>
339
350
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -343,7 +354,7 @@
343
354
  <span class="cline-any cline-neutral">&nbsp;</span>
344
355
  <span class="cline-any cline-neutral">&nbsp;</span>
345
356
  <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">36x</span>
357
+ <span class="cline-any cline-yes">37x</span>
347
358
  <span class="cline-any cline-no">&nbsp;</span>
348
359
  <span class="cline-any cline-neutral">&nbsp;</span>
349
360
  <span class="cline-any cline-no">&nbsp;</span>
@@ -352,7 +363,7 @@
352
363
  <span class="cline-any cline-neutral">&nbsp;</span>
353
364
  <span class="cline-any cline-neutral">&nbsp;</span>
354
365
  <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-yes">36x</span>
366
+ <span class="cline-any cline-yes">37x</span>
356
367
  <span class="cline-any cline-no">&nbsp;</span>
357
368
  <span class="cline-any cline-no">&nbsp;</span>
358
369
  <span class="cline-any cline-no">&nbsp;</span>
@@ -361,6 +372,17 @@
361
372
  <span class="cline-any cline-no">&nbsp;</span>
362
373
  <span class="cline-any cline-neutral">&nbsp;</span>
363
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-yes">37x</span>
377
+ <span class="cline-any cline-yes">9x</span>
378
+ <span class="cline-any cline-yes">9x</span>
379
+ <span class="cline-any cline-yes">9x</span>
380
+ <span class="cline-any cline-yes">9x</span>
381
+ <span class="cline-any cline-yes">9x</span>
382
+ <span class="cline-any cline-no">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-yes">9x</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
386
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const env = require("../environment")
365
387
  const { OBJ_STORE_DIRECTORY } = require("../constants")
366
388
  const { sanitizeKey } = require("@budibase/auth/src/objectStore")
@@ -513,6 +535,17 @@ exports.doesDatabaseExist = <span class="fstat-no" title="function not covered"
513
535
  <span class="cstat-no" title="statement not covered" > return false</span>
514
536
  }
515
537
  }
538
+ &nbsp;
539
+ exports.formatBytes = bytes =&gt; {
540
+ const units = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
541
+ const byteIncrements = 1024
542
+ let unit = 0
543
+ let size = parseInt(bytes, 10) || 0
544
+ while (size &gt;= byteIncrements &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >++unit)</span> {
545
+ <span class="cstat-no" title="statement not covered" > size /= byteIncrements</span>
546
+ }
547
+ return `${size.toFixed(size &lt; 10 &amp;&amp; unit &gt; 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >1 </span>: 0)}${units[unit]}`
548
+ }
516
549
  &nbsp;</pre></td></tr></table></pre>
517
550
 
518
551
  <div class='push'></div><!-- for sticky footer -->
@@ -520,7 +553,7 @@ exports.doesDatabaseExist = <span class="fstat-no" title="function not covered"
520
553
  <div class='footer quiet pad2 space-top1 center small'>
521
554
  Code coverage generated by
522
555
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
523
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
556
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
524
557
  </div>
525
558
  </div>
526
559
  <script src="../prettify.js"></script>
@@ -367,7 +367,7 @@ module.exports = InMemoryQueue
367
367
  <div class='footer quiet pad2 space-top1 center small'>
368
368
  Code coverage generated by
369
369
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
370
- at Mon Dec 13 2021 18:06:31 GMT+0000 (Coordinated Universal Time)
370
+ at Thu Dec 16 2021 10:26:23 GMT+0000 (Coordinated Universal Time)
371
371
  </div>
372
372
  </div>
373
373
  <script src="../../prettify.js"></script>