@budibase/server 1.0.217 → 1.0.219-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/__mocks__/node-fetch.ts +9 -0
  2. package/builder/assets/index.7786f497.css +6 -0
  3. package/builder/assets/index.832d3790.js +977 -0
  4. package/builder/assets/{vendor.9bf2fcb4.js → vendor.001dcf8c.js} +163 -163
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +866 -792
  7. package/coverage/coverage-final.json +26 -26
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/automation.js.html +111 -12
  11. package/coverage/lcov-report/api/controllers/backup.js.html +9 -6
  12. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/datasource.js.html +16 -16
  15. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/index.html +21 -21
  17. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +47 -17
  27. package/coverage/lcov-report/api/controllers/row/index.html +34 -34
  28. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +95 -11
  30. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +17 -8
  32. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  46. package/coverage/lcov-report/api/index.html +15 -15
  47. package/coverage/lcov-report/api/index.js.html +22 -13
  48. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/automation.js.html +32 -2
  52. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/index.html +1 -1
  59. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  76. package/coverage/lcov-report/automations/actions.js.html +1 -1
  77. package/coverage/lcov-report/automations/automationUtils.js.html +57 -12
  78. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  79. package/coverage/lcov-report/automations/index.html +17 -17
  80. package/coverage/lcov-report/automations/index.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/filter.js.html +58 -34
  87. package/coverage/lcov-report/automations/steps/index.html +11 -11
  88. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggers.js.html +4 -4
  107. package/coverage/lcov-report/constants/index.html +1 -1
  108. package/coverage/lcov-report/constants/index.js.html +1 -1
  109. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  110. package/coverage/lcov-report/constants/screens.js.html +1 -1
  111. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  112. package/coverage/lcov-report/db/index.html +14 -14
  113. package/coverage/lcov-report/db/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.html +13 -13
  116. package/coverage/lcov-report/db/linkedRows/index.js.html +10 -7
  117. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  118. package/coverage/lcov-report/db/newid.js.html +2 -2
  119. package/coverage/lcov-report/db/utils.js.html +27 -51
  120. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  121. package/coverage/lcov-report/events/index.html +1 -1
  122. package/coverage/lcov-report/events/index.js.html +1 -1
  123. package/coverage/lcov-report/events/utils.js.html +1 -1
  124. package/coverage/lcov-report/index.html +74 -74
  125. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  126. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  127. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  128. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  129. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  130. package/coverage/lcov-report/middleware/index.html +1 -1
  131. package/coverage/lcov-report/middleware/joi-validator.js.html +10 -10
  132. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  133. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  134. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  135. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  136. package/coverage/lcov-report/threads/automation.js.html +18 -9
  137. package/coverage/lcov-report/threads/index.html +25 -25
  138. package/coverage/lcov-report/threads/query.js.html +280 -76
  139. package/coverage/lcov-report/threads/utils.js.html +4 -4
  140. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  141. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  142. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  143. package/coverage/lcov-report/utilities/global.js.html +14 -14
  144. package/coverage/lcov-report/utilities/index.html +1 -1
  145. package/coverage/lcov-report/utilities/index.js.html +9 -9
  146. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  147. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  148. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  149. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  150. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  151. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  152. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  153. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  154. package/coverage/lcov-report/utilities/security.js.html +2 -2
  155. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  156. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  157. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  158. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  159. package/coverage/lcov-report/utilities/users.js.html +1 -1
  160. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  161. package/coverage/lcov.info +1554 -1422
  162. package/dist/api/controllers/application.js +18 -15
  163. package/dist/api/controllers/automation.js +28 -2
  164. package/dist/api/controllers/backup.js +3 -2
  165. package/dist/api/controllers/query/index.js +25 -0
  166. package/dist/api/controllers/row/external.js +19 -7
  167. package/dist/api/controllers/row/internalSearch.js +22 -1
  168. package/dist/api/controllers/row/utils.js +3 -0
  169. package/dist/api/index.js +4 -1
  170. package/dist/api/routes/automation.js +2 -0
  171. package/dist/automations/automationUtils.js +16 -4
  172. package/dist/automations/logging/index.js +70 -0
  173. package/dist/automations/steps/filter.js +38 -29
  174. package/dist/automations/triggers.js +1 -1
  175. package/dist/db/linkedRows/index.js +1 -0
  176. package/dist/db/utils.js +4 -31
  177. package/dist/definitions/datasource.js +1 -0
  178. package/dist/environment.js +1 -0
  179. package/dist/integrations/airtable.js +1 -0
  180. package/dist/integrations/arangodb.js +1 -0
  181. package/dist/integrations/base/sql.js +20 -3
  182. package/dist/integrations/couchdb.js +1 -0
  183. package/dist/integrations/dynamodb.js +1 -0
  184. package/dist/integrations/elasticsearch.js +1 -0
  185. package/dist/integrations/firebase.js +1 -0
  186. package/dist/integrations/googlesheets.js +1 -0
  187. package/dist/integrations/index.js +4 -0
  188. package/dist/integrations/microsoftSqlServer.js +2 -1
  189. package/dist/integrations/mongodb.js +1 -0
  190. package/dist/integrations/mysql.js +2 -1
  191. package/dist/integrations/oracle.js +1 -0
  192. package/dist/integrations/postgres.js +2 -1
  193. package/dist/integrations/queries/sql.js +3 -0
  194. package/dist/integrations/redis.js +1 -0
  195. package/dist/integrations/rest.js +2 -1
  196. package/dist/integrations/s3.js +1 -0
  197. package/dist/integrations/snowflake.js +102 -0
  198. package/dist/package.json +7 -6
  199. package/dist/tests/utilities/TestConfiguration.js +19 -6
  200. package/dist/threads/automation.js +6 -3
  201. package/dist/threads/index.js +15 -1
  202. package/dist/threads/query.js +53 -8
  203. package/dist/tsconfig.build.tsbuildinfo +1 -1
  204. package/dist/utilities/fileSystem/index.js +16 -6
  205. package/package.json +8 -7
  206. package/scripts/integrations/oracle/instantclient/linux/arm64/basiclite-19.10.zip +0 -0
  207. package/scripts/integrations/oracle/instantclient/linux/arm64/install.sh +23 -0
  208. package/scripts/integrations/oracle/instantclient/linux/install.sh +10 -0
  209. package/src/api/controllers/application.ts +18 -14
  210. package/src/api/controllers/automation.js +35 -2
  211. package/src/api/controllers/backup.js +3 -2
  212. package/src/api/controllers/query/index.ts +29 -1
  213. package/src/api/controllers/row/external.js +19 -9
  214. package/src/api/controllers/row/internalSearch.js +28 -0
  215. package/src/api/controllers/row/utils.js +3 -0
  216. package/src/api/index.js +4 -1
  217. package/src/api/routes/automation.js +10 -0
  218. package/src/api/routes/tests/query.spec.js +166 -0
  219. package/src/automations/automationUtils.js +19 -4
  220. package/src/automations/logging/index.ts +35 -0
  221. package/src/automations/steps/filter.js +36 -28
  222. package/src/automations/tests/filter.spec.js +2 -1
  223. package/src/automations/triggers.js +1 -1
  224. package/src/db/linkedRows/index.js +1 -0
  225. package/src/db/utils.js +5 -13
  226. package/src/definitions/common.ts +1 -0
  227. package/src/definitions/datasource.ts +2 -0
  228. package/src/environment.js +1 -0
  229. package/src/integrations/airtable.ts +1 -0
  230. package/src/integrations/arangodb.ts +1 -0
  231. package/src/integrations/base/sql.ts +25 -11
  232. package/src/integrations/couchdb.ts +1 -0
  233. package/src/integrations/dynamodb.ts +1 -0
  234. package/src/integrations/elasticsearch.ts +1 -0
  235. package/src/integrations/firebase.ts +1 -0
  236. package/src/integrations/googlesheets.ts +1 -0
  237. package/src/integrations/index.ts +4 -0
  238. package/src/integrations/microsoftSqlServer.ts +2 -0
  239. package/src/integrations/mongodb.ts +1 -0
  240. package/src/integrations/mysql.ts +2 -0
  241. package/src/integrations/oracle.ts +1 -0
  242. package/src/integrations/postgres.ts +2 -0
  243. package/src/integrations/queries/sql.ts +3 -1
  244. package/src/integrations/redis.ts +1 -0
  245. package/src/integrations/rest.ts +2 -1
  246. package/src/integrations/s3.ts +1 -0
  247. package/src/integrations/snowflake.ts +99 -0
  248. package/src/integrations/tests/rest.spec.js +16 -1
  249. package/src/migrations/tests/index.spec.ts +18 -2
  250. package/src/module.d.ts +2 -0
  251. package/src/tests/utilities/TestConfiguration.js +22 -3
  252. package/src/threads/automation.js +6 -3
  253. package/src/threads/index.ts +5 -1
  254. package/src/threads/query.js +78 -10
  255. package/src/utilities/fileSystem/index.js +22 -8
  256. package/builder/assets/index.24307ca0.css +0 -6
  257. package/builder/assets/index.cc2e9cbe.js +0 -1316
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">91.34% </span>
26
+ <span class="strong">80.76% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>95/104</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">79.06% </span>
33
+ <span class="strong">62.29% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>34/43</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">90.9% </span>
40
+ <span class="strong">76.92% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/11</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">92% </span>
47
+ <span class="strong">80.95% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>92/100</span>
49
+ <span class='fraction'>102/126</span>
50
50
  </div>
51
51
 
52
52
 
@@ -266,12 +266,86 @@
266
266
  <a name='L201'></a><a href='#L201'>201</a>
267
267
  <a name='L202'></a><a href='#L202'>202</a>
268
268
  <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
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>
270
338
  <span class="cline-any cline-yes">2x</span>
271
339
  <span class="cline-any cline-yes">2x</span>
272
340
  <span class="cline-any cline-yes">2x</span>
273
341
  <span class="cline-any cline-yes">2x</span>
274
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>
275
349
  <span class="cline-any cline-yes">2x</span>
276
350
  <span class="cline-any cline-neutral">&nbsp;</span>
277
351
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -280,59 +354,86 @@
280
354
  <span class="cline-any cline-neutral">&nbsp;</span>
281
355
  <span class="cline-any cline-neutral">&nbsp;</span>
282
356
  <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-yes">15x</span>
284
- <span class="cline-any cline-yes">15x</span>
285
- <span class="cline-any cline-yes">15x</span>
286
- <span class="cline-any cline-yes">15x</span>
287
- <span class="cline-any cline-yes">15x</span>
288
- <span class="cline-any cline-yes">15x</span>
289
- <span class="cline-any cline-yes">15x</span>
290
- <span class="cline-any cline-yes">15x</span>
291
- <span class="cline-any cline-yes">15x</span>
357
+ <span class="cline-any cline-yes">22x</span>
358
+ <span class="cline-any cline-yes">22x</span>
359
+ <span class="cline-any cline-yes">22x</span>
360
+ <span class="cline-any cline-yes">22x</span>
361
+ <span class="cline-any cline-yes">22x</span>
362
+ <span class="cline-any cline-yes">22x</span>
363
+ <span class="cline-any cline-yes">22x</span>
364
+ <span class="cline-any cline-yes">22x</span>
365
+ <span class="cline-any cline-yes">22x</span>
292
366
  <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-yes">22x</span>
293
368
  <span class="cline-any cline-neutral">&nbsp;</span>
294
369
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-yes">15x</span>
296
- <span class="cline-any cline-yes">15x</span>
297
370
  <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-yes">22x</span>
372
+ <span class="cline-any cline-yes">22x</span>
373
+ <span class="cline-any cline-yes">22x</span>
298
374
  <span class="cline-any cline-neutral">&nbsp;</span>
299
375
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-yes">16x</span>
301
- <span class="cline-any cline-yes">16x</span>
302
- <span class="cline-any cline-yes">16x</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-yes">23x</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-yes">23x</span>
380
+ <span class="cline-any cline-yes">23x</span>
303
381
  <span class="cline-any cline-yes">2x</span>
304
382
  <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-yes">14x</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-yes">21x</span>
385
+ <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
389
  <span class="cline-any cline-neutral">&nbsp;</span>
307
390
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">14x</span>
309
391
  <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-yes">21x</span>
310
393
  <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-yes">14x</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-yes">21x</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-yes">21x</span>
400
+ <span class="cline-any cline-yes">21x</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-yes">21x</span>
404
+ <span class="cline-any cline-yes">1x</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-yes">21x</span>
312
413
  <span class="cline-any cline-yes">2x</span>
313
414
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">12x</span>
415
+ <span class="cline-any cline-yes">19x</span>
315
416
  <span class="cline-any cline-neutral">&nbsp;</span>
316
417
  <span class="cline-any cline-neutral">&nbsp;</span>
317
418
  <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">14x</span>
419
+ <span class="cline-any cline-yes">21x</span>
319
420
  <span class="cline-any cline-no">&nbsp;</span>
320
421
  <span class="cline-any cline-neutral">&nbsp;</span>
321
422
  <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-yes">14x</span>
323
- <span class="cline-any cline-yes">14x</span>
324
- <span class="cline-any cline-yes">14x</span>
325
- <span class="cline-any cline-yes">14x</span>
326
- <span class="cline-any cline-yes">14x</span>
327
- <span class="cline-any cline-yes">14x</span>
328
- <span class="cline-any cline-yes">12x</span>
329
- <span class="cline-any cline-yes">12x</span>
330
- <span class="cline-any cline-yes">12x</span>
331
- <span class="cline-any cline-yes">12x</span>
423
+ <span class="cline-any cline-yes">21x</span>
424
+ <span class="cline-any cline-yes">21x</span>
425
+ <span class="cline-any cline-yes">21x</span>
426
+ <span class="cline-any cline-yes">21x</span>
427
+ <span class="cline-any cline-yes">21x</span>
428
+ <span class="cline-any cline-yes">21x</span>
429
+ <span class="cline-any cline-yes">19x</span>
430
+ <span class="cline-any cline-yes">19x</span>
431
+ <span class="cline-any cline-yes">19x</span>
432
+ <span class="cline-any cline-yes">19x</span>
332
433
  <span class="cline-any cline-neutral">&nbsp;</span>
333
434
  <span class="cline-any cline-neutral">&nbsp;</span>
334
435
  <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-yes">14x</span>
436
+ <span class="cline-any cline-yes">21x</span>
336
437
  <span class="cline-any cline-no">&nbsp;</span>
337
438
  <span class="cline-any cline-neutral">&nbsp;</span>
338
439
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -341,41 +442,51 @@
341
442
  <span class="cline-any cline-neutral">&nbsp;</span>
342
443
  <span class="cline-any cline-neutral">&nbsp;</span>
343
444
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">14x</span>
445
+ <span class="cline-any cline-yes">21x</span>
446
+ <span class="cline-any cline-yes">1x</span>
345
447
  <span class="cline-any cline-neutral">&nbsp;</span>
346
448
  <span class="cline-any cline-neutral">&nbsp;</span>
347
449
  <span class="cline-any cline-neutral">&nbsp;</span>
348
450
  <span class="cline-any cline-neutral">&nbsp;</span>
349
451
  <span class="cline-any cline-neutral">&nbsp;</span>
350
- <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>
351
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>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-yes">1x</span>
352
463
  <span class="cline-any cline-yes">1x</span>
353
464
  <span class="cline-any cline-yes">1x</span>
354
465
  <span class="cline-any cline-neutral">&nbsp;</span>
355
466
  <span class="cline-any cline-neutral">&nbsp;</span>
356
467
  <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-yes">13x</span>
468
+ <span class="cline-any cline-yes">20x</span>
358
469
  <span class="cline-any cline-no">&nbsp;</span>
359
470
  <span class="cline-any cline-neutral">&nbsp;</span>
360
471
  <span class="cline-any cline-neutral">&nbsp;</span>
361
472
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-yes">13x</span>
363
- <span class="cline-any cline-yes">11x</span>
473
+ <span class="cline-any cline-yes">20x</span>
474
+ <span class="cline-any cline-yes">18x</span>
364
475
  <span class="cline-any cline-neutral">&nbsp;</span>
365
476
  <span class="cline-any cline-neutral">&nbsp;</span>
366
477
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-yes">13x</span>
478
+ <span class="cline-any cline-yes">20x</span>
368
479
  <span class="cline-any cline-no">&nbsp;</span>
369
480
  <span class="cline-any cline-neutral">&nbsp;</span>
370
481
  <span class="cline-any cline-neutral">&nbsp;</span>
371
482
  <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-yes">13x</span>
483
+ <span class="cline-any cline-yes">20x</span>
373
484
  <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-yes">13x</span>
485
+ <span class="cline-any cline-yes">20x</span>
375
486
  <span class="cline-any cline-no">&nbsp;</span>
376
487
  <span class="cline-any cline-neutral">&nbsp;</span>
377
488
  <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-yes">13x</span>
489
+ <span class="cline-any cline-yes">20x</span>
379
490
  <span class="cline-any cline-neutral">&nbsp;</span>
380
491
  <span class="cline-any cline-neutral">&nbsp;</span>
381
492
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -395,6 +506,31 @@
395
506
  <span class="cline-any cline-neutral">&nbsp;</span>
396
507
  <span class="cline-any cline-neutral">&nbsp;</span>
397
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>
398
534
  <span class="cline-any cline-yes">6x</span>
399
535
  <span class="cline-any cline-yes">6x</span>
400
536
  <span class="cline-any cline-yes">6x</span>
@@ -413,21 +549,21 @@
413
549
  <span class="cline-any cline-neutral">&nbsp;</span>
414
550
  <span class="cline-any cline-neutral">&nbsp;</span>
415
551
  <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-yes">14x</span>
417
- <span class="cline-any cline-yes">14x</span>
552
+ <span class="cline-any cline-yes">21x</span>
553
+ <span class="cline-any cline-yes">21x</span>
418
554
  <span class="cline-any cline-no">&nbsp;</span>
419
555
  <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-yes">14x</span>
421
- <span class="cline-any cline-yes">14x</span>
422
- <span class="cline-any cline-yes">14x</span>
556
+ <span class="cline-any cline-yes">21x</span>
557
+ <span class="cline-any cline-yes">21x</span>
558
+ <span class="cline-any cline-yes">21x</span>
423
559
  <span class="cline-any cline-yes">2x</span>
424
560
  <span class="cline-any cline-yes">2x</span>
425
561
  <span class="cline-any cline-neutral">&nbsp;</span>
426
562
  <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-yes">14x</span>
563
+ <span class="cline-any cline-yes">21x</span>
428
564
  <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-yes">9x</span>
430
- <span class="cline-any cline-yes">9x</span>
565
+ <span class="cline-any cline-yes">16x</span>
566
+ <span class="cline-any cline-yes">16x</span>
431
567
  <span class="cline-any cline-neutral">&nbsp;</span>
432
568
  <span class="cline-any cline-yes">6x</span>
433
569
  <span class="cline-any cline-no">&nbsp;</span>
@@ -436,9 +572,9 @@
436
572
  <span class="cline-any cline-yes">6x</span>
437
573
  <span class="cline-any cline-yes">6x</span>
438
574
  <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-yes">9x</span>
440
- <span class="cline-any cline-yes">9x</span>
441
- <span class="cline-any cline-yes">9x</span>
575
+ <span class="cline-any cline-yes">16x</span>
576
+ <span class="cline-any cline-yes">16x</span>
577
+ <span class="cline-any cline-yes">16x</span>
442
578
  <span class="cline-any cline-yes">6x</span>
443
579
  <span class="cline-any cline-yes">6x</span>
444
580
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -454,16 +590,16 @@
454
590
  <span class="cline-any cline-yes">6x</span>
455
591
  <span class="cline-any cline-neutral">&nbsp;</span>
456
592
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">14x</span>
593
+ <span class="cline-any cline-yes">21x</span>
458
594
  <span class="cline-any cline-neutral">&nbsp;</span>
459
595
  <span class="cline-any cline-neutral">&nbsp;</span>
460
596
  <span class="cline-any cline-neutral">&nbsp;</span>
461
597
  <span class="cline-any cline-yes">2x</span>
462
- <span class="cline-any cline-yes">10x</span>
463
- <span class="cline-any cline-yes">10x</span>
464
- <span class="cline-any cline-yes">10x</span>
465
- <span class="cline-any cline-yes">10x</span>
466
- <span class="cline-any cline-yes">8x</span>
598
+ <span class="cline-any cline-yes">17x</span>
599
+ <span class="cline-any cline-yes">17x</span>
600
+ <span class="cline-any cline-yes">17x</span>
601
+ <span class="cline-any cline-yes">17x</span>
602
+ <span class="cline-any cline-yes">15x</span>
467
603
  <span class="cline-any cline-neutral">&nbsp;</span>
468
604
  <span class="cline-any cline-yes">2x</span>
469
605
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -475,6 +611,12 @@ const ScriptRunner = require("../utilities/scriptRunner")
475
611
  const { integrations } = require("../integrations")
476
612
  const { processStringSync } = require("@budibase/string-templates")
477
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;
478
620
  const { isSQL } = require("../integrations/utils")
479
621
  const {
480
622
  enrichQueryFields,
@@ -492,29 +634,56 @@ class QueryRunner {
492
634
  this.queryId = input.queryId
493
635
  this.noRecursiveQuery = flags.noRecursiveQuery
494
636
  this.cachedVariables = []
637
+ // Additional context items for enrichment
638
+ this.ctx = input.ctx
495
639
  // allows the response from a query to be stored throughout this
496
640
  // execution so that if it needs to be re-used for another variable
497
641
  // it can be
498
642
  this.queryResponse = {}
499
643
  this.hasRerun = false
644
+ this.hasRefreshedOAuth = false
500
645
  }
501
646
  &nbsp;
502
647
  async execute() {
503
648
  let { datasource, fields, queryVerb, transformer } = this
649
+ &nbsp;
504
650
  const Integration = integrations[datasource.source]
505
651
  if (!Integration) {
506
652
  throw "Integration type does not exist."
507
653
  }
654
+ &nbsp;
655
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (datasource.config.authConfigs) {
656
+ <span class="cstat-no" title="statement not covered" > datasource.config.authConfigs = datasource.config.authConfigs.map(</span>
657
+ <span class="fstat-no" title="function not covered" > co</span>nfig =&gt; {
658
+ <span class="cstat-no" title="statement not covered" > return enrichQueryFields(config, this.ctx)</span>
659
+ }
660
+ )
661
+ }
662
+ &nbsp;
508
663
  const integration = new Integration(datasource.config)
509
664
  &nbsp;
510
665
  // pre-query, make sure datasource variables are added to parameters
511
666
  const parameters = await this.addDatasourceVariables()
667
+ &nbsp;
668
+ // Enrich the parameters with the addition context items.
669
+ // 'user' is now a reserved variable key in mapping parameters
670
+ const enrichedParameters = enrichQueryFields(parameters, this.ctx)
671
+ const enrichedContext = { ...enrichedParameters, ...this.ctx }
672
+ &nbsp;
673
+ // Parse global headers
674
+ if (datasource.config.defaultHeaders) {
675
+ datasource.config.defaultHeaders = enrichQueryFields(
676
+ datasource.config.defaultHeaders,
677
+ enrichedContext
678
+ )
679
+ }
680
+ &nbsp;
512
681
  let query
513
682
  // handle SQL injections by interpolating the variables
514
683
  if (isSQL(datasource)) {
515
- query = interpolateSQL(fields, parameters, integration)
684
+ query = interpolateSQL(fields, enrichedParameters, integration)
516
685
  } else {
517
- query = enrichQueryFields(fields, parameters)
686
+ query = enrichQueryFields(fields, enrichedContext)
518
687
  }
519
688
  &nbsp;
520
689
  // Add pagination values for REST queries
@@ -538,20 +707,30 @@ class QueryRunner {
538
707
  <span class="missing-if-branch" title="if path not taken" >I</span>if (transformer) {
539
708
  const runner = <span class="cstat-no" title="statement not covered" >new ScriptRunner(transformer, {</span>
540
709
  data: rows,
541
- params: parameters,
710
+ params: enrichedParameters,
542
711
  })
543
712
  <span class="cstat-no" title="statement not covered" > rows = runner.execute()</span>
544
713
  }
545
714
  &nbsp;
546
715
  // if the request fails we retry once, invalidating the cached value
547
- if (
548
- info &amp;&amp;
549
- info.code &gt;= 400 &amp;&amp;
550
- this.cachedVariables.length &gt; 0 &amp;&amp;
551
- !this.hasRerun
552
- ) {
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;
553
733
  this.hasRerun = true
554
- // invalidate the cache value
555
734
  await threadUtils.invalidateDynamicVariables(this.cachedVariables)
556
735
  return this.execute()
557
736
  }
@@ -596,6 +775,31 @@ class QueryRunner {
596
775
  { noRecursiveQuery: true }
597
776
  ).execute()
598
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
+ }
599
803
  &nbsp;
600
804
  async getDynamicVariable(variable) {
601
805
  let { parameters } = this
@@ -679,7 +883,7 @@ module.exports = (input, callback) =&gt; {
679
883
  <div class='footer quiet pad2 space-top1 center small'>
680
884
  Code coverage generated by
681
885
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
682
- at Mon Jul 04 2022 13:15:47 GMT+0000 (Coordinated Universal Time)
886
+ at Wed Jul 06 2022 12:15:49 GMT+0000 (Coordinated Universal Time)
683
887
  </div>
684
888
  <script src="../prettify.js"></script>
685
889
  <script>
@@ -200,18 +200,18 @@
200
200
  <span class="cline-any cline-neutral">&nbsp;</span>
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
202
  <span class="cline-any cline-yes">44x</span>
203
- <span class="cline-any cline-yes">14x</span>
203
+ <span class="cline-any cline-yes">21x</span>
204
204
  <span class="cline-any cline-no">&nbsp;</span>
205
205
  <span class="cline-any cline-no">&nbsp;</span>
206
206
  <span class="cline-any cline-neutral">&nbsp;</span>
207
207
  <span class="cline-any cline-no">&nbsp;</span>
208
208
  <span class="cline-any cline-neutral">&nbsp;</span>
209
209
  <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-yes">14x</span>
210
+ <span class="cline-any cline-yes">21x</span>
211
211
  <span class="cline-any cline-neutral">&nbsp;</span>
212
212
  <span class="cline-any cline-neutral">&nbsp;</span>
213
213
  <span class="cline-any cline-yes">44x</span>
214
- <span class="cline-any cline-yes">14x</span>
214
+ <span class="cline-any cline-yes">21x</span>
215
215
  <span class="cline-any cline-neutral">&nbsp;</span>
216
216
  <span class="cline-any cline-neutral">&nbsp;</span>
217
217
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -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 Mon Jul 04 2022 13:15:47 GMT+0000 (Coordinated Universal Time)
307
+ at Wed Jul 06 2022 12:15:49 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 Mon Jul 04 2022 13:15:47 GMT+0000 (Coordinated Universal Time)
82
+ at Wed Jul 06 2022 12:15:49 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 Mon Jul 04 2022 13:15:47 GMT+0000 (Coordinated Universal Time)
139
+ at Wed Jul 06 2022 12:15:49 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 Mon Jul 04 2022 13:15:47 GMT+0000 (Coordinated Universal Time)
505
+ at Wed Jul 06 2022 12:15:49 GMT+0000 (Coordinated Universal Time)
506
506
  </div>
507
507
  <script src="../prettify.js"></script>
508
508
  <script>