@budibase/server 1.0.218 → 1.0.219-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 (257) hide show
  1. package/__mocks__/node-fetch.ts +9 -0
  2. package/builder/assets/index.00d6b4be.js +977 -0
  3. package/builder/assets/index.7786f497.css +6 -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 +868 -794
  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 +283 -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 +1553 -1425
  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 +54 -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 +79 -10
  255. package/src/utilities/fileSystem/index.js +22 -8
  256. package/builder/assets/index.24307ca0.css +0 -6
  257. package/builder/assets/index.36419068.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">81.53% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>95/104</span>
28
+ <span class='fraction'>106/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">66.66% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>34/43</span>
35
+ <span class='fraction'>38/57</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">81.74% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>92/100</span>
49
+ <span class='fraction'>103/126</span>
50
50
  </div>
51
51
 
52
52
 
@@ -266,12 +266,88 @@
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>
338
+ <a name='L273'></a><a href='#L273'>273</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
270
339
  <span class="cline-any cline-yes">2x</span>
271
340
  <span class="cline-any cline-yes">2x</span>
272
341
  <span class="cline-any cline-yes">2x</span>
273
342
  <span class="cline-any cline-yes">2x</span>
274
343
  <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-yes">2x</span>
348
+ <span class="cline-any cline-yes">2x</span>
349
+ <span class="cline-any cline-yes">2x</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
351
  <span class="cline-any cline-yes">2x</span>
276
352
  <span class="cline-any cline-neutral">&nbsp;</span>
277
353
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -280,59 +356,86 @@
280
356
  <span class="cline-any cline-neutral">&nbsp;</span>
281
357
  <span class="cline-any cline-neutral">&nbsp;</span>
282
358
  <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>
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>
366
+ <span class="cline-any cline-yes">22x</span>
367
+ <span class="cline-any cline-yes">22x</span>
292
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-yes">22x</span>
293
370
  <span class="cline-any cline-neutral">&nbsp;</span>
294
371
  <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
372
  <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-yes">22x</span>
374
+ <span class="cline-any cline-yes">22x</span>
375
+ <span class="cline-any cline-yes">22x</span>
298
376
  <span class="cline-any cline-neutral">&nbsp;</span>
299
377
  <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>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-yes">23x</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-yes">23x</span>
382
+ <span class="cline-any cline-yes">23x</span>
303
383
  <span class="cline-any cline-yes">2x</span>
304
384
  <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-yes">14x</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-yes">21x</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-no">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-yes">21x</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-yes">21x</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-yes">21x</span>
402
+ <span class="cline-any cline-yes">21x</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-yes">21x</span>
406
+ <span class="cline-any cline-yes">1x</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
409
  <span class="cline-any cline-neutral">&nbsp;</span>
307
410
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">14x</span>
309
411
  <span class="cline-any cline-neutral">&nbsp;</span>
310
412
  <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-yes">14x</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-yes">21x</span>
312
415
  <span class="cline-any cline-yes">2x</span>
313
416
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">12x</span>
417
+ <span class="cline-any cline-yes">19x</span>
315
418
  <span class="cline-any cline-neutral">&nbsp;</span>
316
419
  <span class="cline-any cline-neutral">&nbsp;</span>
317
420
  <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">14x</span>
421
+ <span class="cline-any cline-yes">21x</span>
319
422
  <span class="cline-any cline-no">&nbsp;</span>
320
423
  <span class="cline-any cline-neutral">&nbsp;</span>
321
424
  <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>
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">21x</span>
430
+ <span class="cline-any cline-yes">21x</span>
431
+ <span class="cline-any cline-yes">19x</span>
432
+ <span class="cline-any cline-yes">19x</span>
433
+ <span class="cline-any cline-yes">19x</span>
434
+ <span class="cline-any cline-yes">19x</span>
332
435
  <span class="cline-any cline-neutral">&nbsp;</span>
333
436
  <span class="cline-any cline-neutral">&nbsp;</span>
334
437
  <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-yes">14x</span>
438
+ <span class="cline-any cline-yes">21x</span>
336
439
  <span class="cline-any cline-no">&nbsp;</span>
337
440
  <span class="cline-any cline-neutral">&nbsp;</span>
338
441
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -341,41 +444,45 @@
341
444
  <span class="cline-any cline-neutral">&nbsp;</span>
342
445
  <span class="cline-any cline-neutral">&nbsp;</span>
343
446
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">14x</span>
447
+ <span class="cline-any cline-yes">21x</span>
448
+ <span class="cline-any cline-yes">1x</span>
345
449
  <span class="cline-any cline-neutral">&nbsp;</span>
346
450
  <span class="cline-any cline-neutral">&nbsp;</span>
347
451
  <span class="cline-any cline-neutral">&nbsp;</span>
348
452
  <span class="cline-any cline-neutral">&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>
349
456
  <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-yes">1x</span>
351
457
  <span class="cline-any cline-neutral">&nbsp;</span>
352
458
  <span class="cline-any cline-yes">1x</span>
353
459
  <span class="cline-any cline-yes">1x</span>
460
+ <span class="cline-any cline-yes">1x</span>
354
461
  <span class="cline-any cline-neutral">&nbsp;</span>
355
462
  <span class="cline-any cline-neutral">&nbsp;</span>
356
463
  <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-yes">13x</span>
464
+ <span class="cline-any cline-yes">20x</span>
358
465
  <span class="cline-any cline-no">&nbsp;</span>
359
466
  <span class="cline-any cline-neutral">&nbsp;</span>
360
467
  <span class="cline-any cline-neutral">&nbsp;</span>
361
468
  <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>
469
+ <span class="cline-any cline-yes">20x</span>
470
+ <span class="cline-any cline-yes">18x</span>
364
471
  <span class="cline-any cline-neutral">&nbsp;</span>
365
472
  <span class="cline-any cline-neutral">&nbsp;</span>
366
473
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-yes">13x</span>
474
+ <span class="cline-any cline-yes">20x</span>
368
475
  <span class="cline-any cline-no">&nbsp;</span>
369
476
  <span class="cline-any cline-neutral">&nbsp;</span>
370
477
  <span class="cline-any cline-neutral">&nbsp;</span>
371
478
  <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-yes">13x</span>
479
+ <span class="cline-any cline-yes">20x</span>
373
480
  <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-yes">13x</span>
481
+ <span class="cline-any cline-yes">20x</span>
375
482
  <span class="cline-any cline-no">&nbsp;</span>
376
483
  <span class="cline-any cline-neutral">&nbsp;</span>
377
484
  <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-yes">13x</span>
485
+ <span class="cline-any cline-yes">20x</span>
379
486
  <span class="cline-any cline-neutral">&nbsp;</span>
380
487
  <span class="cline-any cline-neutral">&nbsp;</span>
381
488
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -395,6 +502,37 @@
395
502
  <span class="cline-any cline-neutral">&nbsp;</span>
396
503
  <span class="cline-any cline-neutral">&nbsp;</span>
397
504
  <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-no">&nbsp;</span>
506
+ <span class="cline-any cline-no">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-no">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&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-neutral">&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-no">&nbsp;</span>
521
+ <span class="cline-any cline-no">&nbsp;</span>
522
+ <span class="cline-any cline-no">&nbsp;</span>
523
+ <span class="cline-any cline-no">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-no">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
536
  <span class="cline-any cline-yes">6x</span>
399
537
  <span class="cline-any cline-yes">6x</span>
400
538
  <span class="cline-any cline-yes">6x</span>
@@ -413,21 +551,21 @@
413
551
  <span class="cline-any cline-neutral">&nbsp;</span>
414
552
  <span class="cline-any cline-neutral">&nbsp;</span>
415
553
  <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>
554
+ <span class="cline-any cline-yes">21x</span>
555
+ <span class="cline-any cline-yes">21x</span>
418
556
  <span class="cline-any cline-no">&nbsp;</span>
419
557
  <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>
558
+ <span class="cline-any cline-yes">21x</span>
559
+ <span class="cline-any cline-yes">21x</span>
560
+ <span class="cline-any cline-yes">21x</span>
423
561
  <span class="cline-any cline-yes">2x</span>
424
562
  <span class="cline-any cline-yes">2x</span>
425
563
  <span class="cline-any cline-neutral">&nbsp;</span>
426
564
  <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-yes">14x</span>
565
+ <span class="cline-any cline-yes">21x</span>
428
566
  <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>
567
+ <span class="cline-any cline-yes">16x</span>
568
+ <span class="cline-any cline-yes">16x</span>
431
569
  <span class="cline-any cline-neutral">&nbsp;</span>
432
570
  <span class="cline-any cline-yes">6x</span>
433
571
  <span class="cline-any cline-no">&nbsp;</span>
@@ -436,9 +574,9 @@
436
574
  <span class="cline-any cline-yes">6x</span>
437
575
  <span class="cline-any cline-yes">6x</span>
438
576
  <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>
577
+ <span class="cline-any cline-yes">16x</span>
578
+ <span class="cline-any cline-yes">16x</span>
579
+ <span class="cline-any cline-yes">16x</span>
442
580
  <span class="cline-any cline-yes">6x</span>
443
581
  <span class="cline-any cline-yes">6x</span>
444
582
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -454,16 +592,16 @@
454
592
  <span class="cline-any cline-yes">6x</span>
455
593
  <span class="cline-any cline-neutral">&nbsp;</span>
456
594
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">14x</span>
595
+ <span class="cline-any cline-yes">21x</span>
458
596
  <span class="cline-any cline-neutral">&nbsp;</span>
459
597
  <span class="cline-any cline-neutral">&nbsp;</span>
460
598
  <span class="cline-any cline-neutral">&nbsp;</span>
461
599
  <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>
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">17x</span>
603
+ <span class="cline-any cline-yes">17x</span>
604
+ <span class="cline-any cline-yes">15x</span>
467
605
  <span class="cline-any cline-neutral">&nbsp;</span>
468
606
  <span class="cline-any cline-yes">2x</span>
469
607
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -475,6 +613,13 @@ const ScriptRunner = require("../utilities/scriptRunner")
475
613
  const { integrations } = require("../integrations")
476
614
  const { processStringSync } = require("@budibase/string-templates")
477
615
  const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
616
+ const {
617
+ refreshOAuthToken,
618
+ updateUserOAuth,
619
+ } = require("@budibase/backend-core/auth")
620
+ const { user: userCache } = require("@budibase/backend-core/cache")
621
+ const { getGlobalIDFromUserMetadataID } = require("../db/utils")
622
+ &nbsp;
478
623
  const { isSQL } = require("../integrations/utils")
479
624
  const {
480
625
  enrichQueryFields,
@@ -492,29 +637,56 @@ class QueryRunner {
492
637
  this.queryId = input.queryId
493
638
  this.noRecursiveQuery = flags.noRecursiveQuery
494
639
  this.cachedVariables = []
640
+ // Additional context items for enrichment
641
+ this.ctx = input.ctx
495
642
  // allows the response from a query to be stored throughout this
496
643
  // execution so that if it needs to be re-used for another variable
497
644
  // it can be
498
645
  this.queryResponse = {}
499
646
  this.hasRerun = false
647
+ this.hasRefreshedOAuth = false
500
648
  }
501
649
  &nbsp;
502
650
  async execute() {
503
651
  let { datasource, fields, queryVerb, transformer } = this
652
+ &nbsp;
504
653
  const Integration = integrations[datasource.source]
505
654
  if (!Integration) {
506
655
  throw "Integration type does not exist."
507
656
  }
657
+ &nbsp;
658
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (datasource.config.authConfigs) {
659
+ <span class="cstat-no" title="statement not covered" > datasource.config.authConfigs = datasource.config.authConfigs.map(</span>
660
+ <span class="fstat-no" title="function not covered" > co</span>nfig =&gt; {
661
+ <span class="cstat-no" title="statement not covered" > return enrichQueryFields(config, this.ctx)</span>
662
+ }
663
+ )
664
+ }
665
+ &nbsp;
508
666
  const integration = new Integration(datasource.config)
509
667
  &nbsp;
510
668
  // pre-query, make sure datasource variables are added to parameters
511
669
  const parameters = await this.addDatasourceVariables()
670
+ &nbsp;
671
+ // Enrich the parameters with the addition context items.
672
+ // 'user' is now a reserved variable key in mapping parameters
673
+ const enrichedParameters = enrichQueryFields(parameters, this.ctx)
674
+ const enrichedContext = { ...enrichedParameters, ...this.ctx }
675
+ &nbsp;
676
+ // Parse global headers
677
+ if (datasource.config.defaultHeaders) {
678
+ datasource.config.defaultHeaders = enrichQueryFields(
679
+ datasource.config.defaultHeaders,
680
+ enrichedContext
681
+ )
682
+ }
683
+ &nbsp;
512
684
  let query
513
685
  // handle SQL injections by interpolating the variables
514
686
  if (isSQL(datasource)) {
515
- query = interpolateSQL(fields, parameters, integration)
687
+ query = interpolateSQL(fields, enrichedParameters, integration)
516
688
  } else {
517
- query = enrichQueryFields(fields, parameters)
689
+ query = enrichQueryFields(fields, enrichedContext)
518
690
  }
519
691
  &nbsp;
520
692
  // Add pagination values for REST queries
@@ -538,20 +710,24 @@ class QueryRunner {
538
710
  <span class="missing-if-branch" title="if path not taken" >I</span>if (transformer) {
539
711
  const runner = <span class="cstat-no" title="statement not covered" >new ScriptRunner(transformer, {</span>
540
712
  data: rows,
541
- params: parameters,
713
+ params: enrichedParameters,
542
714
  })
543
715
  <span class="cstat-no" title="statement not covered" > rows = runner.execute()</span>
544
716
  }
545
717
  &nbsp;
546
718
  // 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
- ) {
719
+ if (info &amp;&amp; info.code &gt;= 400 &amp;&amp; !this.hasRerun) {
720
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
721
+ this.ctx.user?.provider &amp;&amp;
722
+ <span class="branch-1 cbranch-no" title="branch not covered" > info.code === 401 </span>&amp;&amp;
723
+ <span class="branch-2 cbranch-no" title="branch not covered" > !this.hasRefreshedOAuth</span>
724
+ ) {
725
+ <span class="cstat-no" title="statement not covered" > await this.refreshOAuth2(this.ctx)</span>
726
+ // Attempt to refresh the access token from the provider
727
+ <span class="cstat-no" title="statement not covered" > this.hasRefreshedOAuth = true</span>
728
+ }
729
+ &nbsp;
553
730
  this.hasRerun = true
554
- // invalidate the cache value
555
731
  await threadUtils.invalidateDynamicVariables(this.cachedVariables)
556
732
  return this.execute()
557
733
  }
@@ -596,6 +772,37 @@ class QueryRunner {
596
772
  { noRecursiveQuery: true }
597
773
  ).execute()
598
774
  }
775
+ &nbsp;
776
+ <span class="fstat-no" title="function not covered" > as</span>ync refreshOAuth2(ctx) {
777
+ const { oauth2, providerType, _id } = <span class="cstat-no" title="statement not covered" >ctx.user</span>
778
+ const { configId } = <span class="cstat-no" title="statement not covered" >ctx.auth</span>
779
+ &nbsp;
780
+ <span class="cstat-no" title="statement not covered" > if (!providerType || !oauth2?.refreshToken) {</span>
781
+ <span class="cstat-no" title="statement not covered" > throw new Error("No refresh token found for authenticated user")</span>
782
+ }
783
+ &nbsp;
784
+ const resp = <span class="cstat-no" title="statement not covered" >await refreshOAuthToken(</span>
785
+ oauth2.refreshToken,
786
+ providerType,
787
+ configId
788
+ )
789
+ &nbsp;
790
+ // Refresh session flow. Should be in same location as refreshOAuthToken
791
+ // There are several other properties available in 'resp'
792
+ <span class="cstat-no" title="statement not covered" > if (!resp.err) {</span>
793
+ const globalUserId = <span class="cstat-no" title="statement not covered" >getGlobalIDFromUserMetadataID(_id)</span>
794
+ <span class="cstat-no" title="statement not covered" > await updateUserOAuth(globalUserId, resp)</span>
795
+ <span class="cstat-no" title="statement not covered" > this.ctx.user = await userCache.getUser(globalUserId)</span>
796
+ } else {
797
+ // In this event the user may have oAuth issues that
798
+ // could require re-authenticating with their provider.
799
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
800
+ "OAuth2 access token could not be refreshed: " + resp.err.toString()
801
+ )
802
+ }
803
+ &nbsp;
804
+ <span class="cstat-no" title="statement not covered" > return resp</span>
805
+ }
599
806
  &nbsp;
600
807
  async getDynamicVariable(variable) {
601
808
  let { parameters } = this
@@ -679,7 +886,7 @@ module.exports = (input, callback) =&gt; {
679
886
  <div class='footer quiet pad2 space-top1 center small'>
680
887
  Code coverage generated by
681
888
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
682
- at Mon Jul 04 2022 15:04:35 GMT+0000 (Coordinated Universal Time)
889
+ at Wed Jul 06 2022 12:36:17 GMT+0000 (Coordinated Universal Time)
683
890
  </div>
684
891
  <script src="../prettify.js"></script>
685
892
  <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 15:04:35 GMT+0000 (Coordinated Universal Time)
307
+ at Wed Jul 06 2022 12:36:17 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 15:04:35 GMT+0000 (Coordinated Universal Time)
82
+ at Wed Jul 06 2022 12:36:17 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 15:04:35 GMT+0000 (Coordinated Universal Time)
139
+ at Wed Jul 06 2022 12:36:17 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 15:04:35 GMT+0000 (Coordinated Universal Time)
505
+ at Wed Jul 06 2022 12:36:17 GMT+0000 (Coordinated Universal Time)
506
506
  </div>
507
507
  <script src="../prettify.js"></script>
508
508
  <script>