@budibase/server 1.0.212-alpha.14 → 1.0.212-alpha.15

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 (166) hide show
  1. package/builder/assets/{index.1f366fcc.js → index.83448a6c.js} +1 -1
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +115 -97
  4. package/coverage/coverage-final.json +1 -1
  5. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/index.html +1 -1
  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 +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  43. package/coverage/lcov-report/api/index.html +1 -1
  44. package/coverage/lcov-report/api/index.js.html +1 -1
  45. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/index.html +1 -1
  56. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  70. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  73. package/coverage/lcov-report/automations/actions.js.html +1 -1
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  76. package/coverage/lcov-report/automations/index.html +1 -1
  77. package/coverage/lcov-report/automations/index.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/index.html +1 -1
  85. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  104. package/coverage/lcov-report/constants/index.html +1 -1
  105. package/coverage/lcov-report/constants/index.js.html +1 -1
  106. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  107. package/coverage/lcov-report/constants/screens.js.html +1 -1
  108. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  109. package/coverage/lcov-report/db/index.html +1 -1
  110. package/coverage/lcov-report/db/index.js.html +1 -1
  111. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  115. package/coverage/lcov-report/db/newid.js.html +1 -1
  116. package/coverage/lcov-report/db/utils.js.html +1 -1
  117. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  118. package/coverage/lcov-report/events/index.html +1 -1
  119. package/coverage/lcov-report/events/index.js.html +1 -1
  120. package/coverage/lcov-report/events/utils.js.html +1 -1
  121. package/coverage/lcov-report/index.html +19 -19
  122. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  123. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  124. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  125. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  126. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  127. package/coverage/lcov-report/middleware/index.html +1 -1
  128. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  129. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  130. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  131. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  132. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  133. package/coverage/lcov-report/threads/automation.js.html +1 -1
  134. package/coverage/lcov-report/threads/index.html +19 -19
  135. package/coverage/lcov-report/threads/query.js.html +147 -18
  136. package/coverage/lcov-report/threads/utils.js.html +1 -1
  137. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  138. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  139. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  140. package/coverage/lcov-report/utilities/global.js.html +1 -1
  141. package/coverage/lcov-report/utilities/index.html +1 -1
  142. package/coverage/lcov-report/utilities/index.js.html +1 -1
  143. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  144. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  150. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  151. package/coverage/lcov-report/utilities/security.js.html +1 -1
  152. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  156. package/coverage/lcov-report/utilities/users.js.html +1 -1
  157. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  158. package/coverage/lcov.info +188 -154
  159. package/dist/api/controllers/query/index.js +19 -0
  160. package/dist/package.json +6 -6
  161. package/dist/threads/query.js +35 -5
  162. package/dist/tsconfig.build.tsbuildinfo +1 -1
  163. package/package.json +7 -7
  164. package/src/api/controllers/query/index.ts +23 -1
  165. package/src/module.d.ts +1 -0
  166. package/src/threads/query.js +50 -7
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">68.57% </span>
26
+ <span class="strong">66.06% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>216/315</span>
28
+ <span class='fraction'>220/333</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">48.9% </span>
33
+ <span class="strong">45.03% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>67/137</span>
35
+ <span class='fraction'>68/151</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">79.41% </span>
40
+ <span class="strong">77.14% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>27/34</span>
42
+ <span class='fraction'>27/35</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">68.6% </span>
47
+ <span class="strong">66.05% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>212/309</span>
49
+ <span class='fraction'>216/327</span>
50
50
  </div>
51
51
 
52
52
 
@@ -95,17 +95,17 @@
95
95
 
96
96
  <tr>
97
97
  <td class="file high" data-value="query.js"><a href="query.js.html">query.js</a></td>
98
- <td data-value="90.17" class="pic high">
99
- <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
98
+ <td data-value="80.76" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
100
100
  </td>
101
- <td data-value="90.17" class="pct high">90.17%</td>
102
- <td data-value="112" class="abs high">101/112</td>
103
- <td data-value="78.72" class="pct medium">78.72%</td>
104
- <td data-value="47" class="abs medium">37/47</td>
105
- <td data-value="83.33" class="pct high">83.33%</td>
106
- <td data-value="12" class="abs high">10/12</td>
107
- <td data-value="90.74" class="pct high">90.74%</td>
108
- <td data-value="108" class="abs high">98/108</td>
101
+ <td data-value="80.76" class="pct high">80.76%</td>
102
+ <td data-value="130" class="abs high">105/130</td>
103
+ <td data-value="62.29" class="pct medium">62.29%</td>
104
+ <td data-value="61" class="abs medium">38/61</td>
105
+ <td data-value="76.92" class="pct medium">76.92%</td>
106
+ <td data-value="13" class="abs medium">10/13</td>
107
+ <td data-value="80.95" class="pct high">80.95%</td>
108
+ <td data-value="126" class="abs high">102/126</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
134
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
135
135
  </div>
136
136
  <script src="../prettify.js"></script>
137
137
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">90.17% </span>
26
+ <span class="strong">80.76% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>101/112</span>
28
+ <span class='fraction'>105/130</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">78.72% </span>
33
+ <span class="strong">62.29% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>37/47</span>
35
+ <span class='fraction'>38/61</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">83.33% </span>
40
+ <span class="strong">76.92% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/12</span>
42
+ <span class='fraction'>10/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">90.74% </span>
47
+ <span class="strong">80.95% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>98/108</span>
49
+ <span class='fraction'>102/126</span>
50
50
  </div>
51
51
 
52
52
 
@@ -291,12 +291,61 @@
291
291
  <a name='L226'></a><a href='#L226'>226</a>
292
292
  <a name='L227'></a><a href='#L227'>227</a>
293
293
  <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
295
338
  <span class="cline-any cline-yes">2x</span>
296
339
  <span class="cline-any cline-yes">2x</span>
297
340
  <span class="cline-any cline-yes">2x</span>
298
341
  <span class="cline-any cline-yes">2x</span>
299
342
  <span class="cline-any cline-yes">2x</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-yes">2x</span>
347
+ <span class="cline-any cline-yes">2x</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
349
  <span class="cline-any cline-yes">2x</span>
301
350
  <span class="cline-any cline-neutral">&nbsp;</span>
302
351
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -321,10 +370,12 @@
321
370
  <span class="cline-any cline-neutral">&nbsp;</span>
322
371
  <span class="cline-any cline-yes">22x</span>
323
372
  <span class="cline-any cline-yes">22x</span>
373
+ <span class="cline-any cline-yes">22x</span>
324
374
  <span class="cline-any cline-neutral">&nbsp;</span>
325
375
  <span class="cline-any cline-neutral">&nbsp;</span>
326
376
  <span class="cline-any cline-neutral">&nbsp;</span>
327
377
  <span class="cline-any cline-yes">23x</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
379
  <span class="cline-any cline-yes">23x</span>
329
380
  <span class="cline-any cline-yes">23x</span>
330
381
  <span class="cline-any cline-yes">2x</span>
@@ -392,15 +443,25 @@
392
443
  <span class="cline-any cline-neutral">&nbsp;</span>
393
444
  <span class="cline-any cline-neutral">&nbsp;</span>
394
445
  <span class="cline-any cline-yes">21x</span>
446
+ <span class="cline-any cline-yes">1x</span>
395
447
  <span class="cline-any cline-neutral">&nbsp;</span>
396
448
  <span class="cline-any cline-neutral">&nbsp;</span>
397
449
  <span class="cline-any cline-neutral">&nbsp;</span>
398
450
  <span class="cline-any cline-neutral">&nbsp;</span>
399
451
  <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-yes">1x</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-no">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
461
  <span class="cline-any cline-neutral">&nbsp;</span>
402
462
  <span class="cline-any cline-yes">1x</span>
403
463
  <span class="cline-any cline-yes">1x</span>
464
+ <span class="cline-any cline-yes">1x</span>
404
465
  <span class="cline-any cline-neutral">&nbsp;</span>
405
466
  <span class="cline-any cline-neutral">&nbsp;</span>
406
467
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -445,6 +506,31 @@
445
506
  <span class="cline-any cline-neutral">&nbsp;</span>
446
507
  <span class="cline-any cline-neutral">&nbsp;</span>
447
508
  <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-no">&nbsp;</span>
513
+ <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-no">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-no">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-no">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-no">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
534
  <span class="cline-any cline-yes">6x</span>
449
535
  <span class="cline-any cline-yes">6x</span>
450
536
  <span class="cline-any cline-yes">6x</span>
@@ -525,6 +611,12 @@ const ScriptRunner = require("../utilities/scriptRunner")
525
611
  const { integrations } = require("../integrations")
526
612
  const { processStringSync } = require("@budibase/string-templates")
527
613
  const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
614
+ const {
615
+ refreshOAuthToken,
616
+ updateUserOAuth,
617
+ } = require("@budibase/backend-core/auth")
618
+ const { getGlobalIDFromUserMetadataID } = require("../db/utils")
619
+ &nbsp;
528
620
  const { isSQL } = require("../integrations/utils")
529
621
  const {
530
622
  enrichQueryFields,
@@ -549,10 +641,12 @@ class QueryRunner {
549
641
  // it can be
550
642
  this.queryResponse = {}
551
643
  this.hasRerun = false
644
+ this.hasRefreshedOAuth = false
552
645
  }
553
646
  &nbsp;
554
647
  async execute() {
555
648
  let { datasource, fields, queryVerb, transformer } = this
649
+ &nbsp;
556
650
  const Integration = integrations[datasource.source]
557
651
  if (!Integration) {
558
652
  throw "Integration type does not exist."
@@ -619,14 +713,24 @@ class QueryRunner {
619
713
  }
620
714
  &nbsp;
621
715
  // if the request fails we retry once, invalidating the cached value
622
- if (
623
- info &amp;&amp;
624
- info.code &gt;= 400 &amp;&amp;
625
- this.cachedVariables.length &gt; 0 &amp;&amp;
626
- !this.hasRerun
627
- ) {
716
+ if (info &amp;&amp; info.code &gt;= 400 &amp;&amp; !this.hasRerun) {
717
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
718
+ this.ctx.user?.provider &amp;&amp;
719
+ <span class="branch-1 cbranch-no" title="branch not covered" > info.code === 401 </span>&amp;&amp;
720
+ <span class="branch-2 cbranch-no" title="branch not covered" > !this.hasRefreshedOAuth</span>
721
+ ) {
722
+ // Attempt to refresh the access token from the provider
723
+ <span class="cstat-no" title="statement not covered" > this.hasRefreshedOAuth = true</span>
724
+ const authResponse = <span class="cstat-no" title="statement not covered" >await this.refreshOAuth2(this.ctx)</span>
725
+ &nbsp;
726
+ <span class="cstat-no" title="statement not covered" > if (!authResponse || authResponse.err) {</span>
727
+ // In this event the user may have oAuth issues that
728
+ // could require re-authenticating with their provider.
729
+ <span class="cstat-no" title="statement not covered" > throw new Error("OAuth2 access token could not be refreshed")</span>
730
+ }
731
+ }
732
+ &nbsp;
628
733
  this.hasRerun = true
629
- // invalidate the cache value
630
734
  await threadUtils.invalidateDynamicVariables(this.cachedVariables)
631
735
  return this.execute()
632
736
  }
@@ -671,6 +775,31 @@ class QueryRunner {
671
775
  { noRecursiveQuery: true }
672
776
  ).execute()
673
777
  }
778
+ &nbsp;
779
+ <span class="fstat-no" title="function not covered" > as</span>ync refreshOAuth2(ctx) {
780
+ const { oauth2, providerType, _id } = <span class="cstat-no" title="statement not covered" >ctx.user</span>
781
+ const { configId } = <span class="cstat-no" title="statement not covered" >ctx.auth</span>
782
+ &nbsp;
783
+ <span class="cstat-no" title="statement not covered" > if (!providerType || !oauth2?.refreshToken) {</span>
784
+ <span class="cstat-no" title="statement not covered" > console.error("No refresh token found for authenticated user")</span>
785
+ <span class="cstat-no" title="statement not covered" > return</span>
786
+ }
787
+ &nbsp;
788
+ const resp = <span class="cstat-no" title="statement not covered" >await refreshOAuthToken(</span>
789
+ oauth2.refreshToken,
790
+ providerType,
791
+ configId
792
+ )
793
+ &nbsp;
794
+ // Refresh session flow. Should be in same location as refreshOAuthToken
795
+ // There are several other properties available in 'resp'
796
+ <span class="cstat-no" title="statement not covered" > if (!resp.error) {</span>
797
+ const globalUserId = <span class="cstat-no" title="statement not covered" >getGlobalIDFromUserMetadataID(_id)</span>
798
+ <span class="cstat-no" title="statement not covered" > await updateUserOAuth(globalUserId, resp)</span>
799
+ }
800
+ &nbsp;
801
+ <span class="cstat-no" title="statement not covered" > return resp</span>
802
+ }
674
803
  &nbsp;
675
804
  async getDynamicVariable(variable) {
676
805
  let { parameters } = this
@@ -754,7 +883,7 @@ module.exports = (input, callback) =&gt; {
754
883
  <div class='footer quiet pad2 space-top1 center small'>
755
884
  Code coverage generated by
756
885
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
757
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
886
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
758
887
  </div>
759
888
  <script src="../prettify.js"></script>
760
889
  <script>
@@ -304,7 +304,7 @@ exports.hasExtraData = response =&gt; {
304
304
  <div class='footer quiet pad2 space-top1 center small'>
305
305
  Code coverage generated by
306
306
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
307
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
307
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
308
308
  </div>
309
309
  <script src="../prettify.js"></script>
310
310
  <script>
@@ -79,7 +79,7 @@ module.exports.budibaseTempDir = budibaseTempDir
79
79
  <div class='footer quiet pad2 space-top1 center small'>
80
80
  Code coverage generated by
81
81
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
82
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
82
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
83
83
  </div>
84
84
  <script src="../prettify.js"></script>
85
85
  <script>
@@ -136,7 +136,7 @@ exports.resolve = function (...args) {
136
136
  <div class='footer quiet pad2 space-top1 center small'>
137
137
  Code coverage generated by
138
138
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
139
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
140
140
  </div>
141
141
  <script src="../prettify.js"></script>
142
142
  <script>
@@ -502,7 +502,7 @@ module.exports = {
502
502
  <div class='footer quiet pad2 space-top1 center small'>
503
503
  Code coverage generated by
504
504
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
505
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
505
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
506
506
  </div>
507
507
  <script src="../prettify.js"></script>
508
508
  <script>
@@ -391,7 +391,7 @@ exports.getGlobalUsersFromMetadata = async users =&gt; {
391
391
  <div class='footer quiet pad2 space-top1 center small'>
392
392
  Code coverage generated by
393
393
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
394
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
394
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
395
395
  </div>
396
396
  <script src="../prettify.js"></script>
397
397
  <script>
@@ -236,7 +236,7 @@
236
236
  <div class='footer quiet pad2 space-top1 center small'>
237
237
  Code coverage generated by
238
238
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
239
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
239
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
240
240
  </div>
241
241
  <script src="../prettify.js"></script>
242
242
  <script>
@@ -577,7 +577,7 @@ exports.convertBookmark = bookmark =&gt; {
577
577
  <div class='footer quiet pad2 space-top1 center small'>
578
578
  Code coverage generated by
579
579
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
580
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
580
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
581
581
  </div>
582
582
  <script src="../prettify.js"></script>
583
583
  <script>
@@ -412,7 +412,7 @@ module.exports = InMemoryQueue
412
412
  <div class='footer quiet pad2 space-top1 center small'>
413
413
  Code coverage generated by
414
414
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
415
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
415
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
416
416
  </div>
417
417
  <script src="../../prettify.js"></script>
418
418
  <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 Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
104
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <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 Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
104
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -145,7 +145,7 @@ exports.createRoutingView = createRoutingView
145
145
  <div class='footer quiet pad2 space-top1 center small'>
146
146
  Code coverage generated by
147
147
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
148
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
148
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
149
149
  </div>
150
150
  <script src="../../prettify.js"></script>
151
151
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
119
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -1096,7 +1096,7 @@ exports.cleanupAttachments = async (table, { row, rows, oldRow, oldTable }) =&gt
1096
1096
  <div class='footer quiet pad2 space-top1 center small'>
1097
1097
  Code coverage generated by
1098
1098
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1099
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
1099
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
1100
1100
  </div>
1101
1101
  <script src="../../prettify.js"></script>
1102
1102
  <script>
@@ -346,7 +346,7 @@ exports.processDates = <span class="fstat-no" title="function not covered" >(t</
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 Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
349
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
350
350
  </div>
351
351
  <script src="../../prettify.js"></script>
352
352
  <script>
@@ -142,7 +142,7 @@ module.exports = ScriptRunner
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
145
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
146
146
  </div>
147
147
  <script src="../prettify.js"></script>
148
148
  <script>
@@ -280,7 +280,7 @@ exports.CURRENTLY_SUPPORTED_LEVELS = CURRENTLY_SUPPORTED_LEVELS
280
280
  <div class='footer quiet pad2 space-top1 center small'>
281
281
  Code coverage generated by
282
282
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
283
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
283
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
284
284
  </div>
285
285
  <script src="../prettify.js"></script>
286
286
  <script>
@@ -91,7 +91,7 @@
91
91
  <div class='footer quiet pad2 space-top1 center small'>
92
92
  Code coverage generated by
93
93
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
94
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
94
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
95
95
  </div>
96
96
  <script src="../prettify.js"></script>
97
97
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
119
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
120
120
  </div>
121
121
  <script src="../../prettify.js"></script>
122
122
  <script>
@@ -307,7 +307,7 @@ exports.getUniqueRows = async appIds =&gt; {
307
307
  <div class='footer quiet pad2 space-top1 center small'>
308
308
  Code coverage generated by
309
309
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
310
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
310
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
311
311
  </div>
312
312
  <script src="../../prettify.js"></script>
313
313
  <script>
@@ -124,7 +124,7 @@ function <span class="fstat-no" title="function not covered" >resetQuotasIfRequi
124
124
  <div class='footer quiet pad2 space-top1 center small'>
125
125
  Code coverage generated by
126
126
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
127
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
127
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
128
128
  </div>
129
129
  <script src="../../prettify.js"></script>
130
130
  <script>
@@ -205,7 +205,7 @@ exports.publicApiUserFix = ctx =&gt; {
205
205
  <div class='footer quiet pad2 space-top1 center small'>
206
206
  Code coverage generated by
207
207
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
208
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
208
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
209
209
  </div>
210
210
  <script src="../prettify.js"></script>
211
211
  <script>
@@ -487,7 +487,7 @@ exports.readGlobalUser = <span class="fstat-no" title="function not covered" >as
487
487
  <div class='footer quiet pad2 space-top1 center small'>
488
488
  Code coverage generated by
489
489
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
490
- at Tue Jul 05 2022 08:31:25 GMT+0000 (Coordinated Universal Time)
490
+ at Tue Jul 05 2022 09:27:24 GMT+0000 (Coordinated Universal Time)
491
491
  </div>
492
492
  <script src="../prettify.js"></script>
493
493
  <script>