@budibase/server 1.3.20 → 1.3.21-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 (308) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.c9d3f9e8.js +1005 -0
  3. package/builder/assets/index.f1b70f52.css +6 -0
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +451 -390
  6. package/coverage/coverage-final.json +21 -21
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +41 -8
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/component.js.html +68 -11
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +73 -34
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +46 -46
  16. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  26. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/screen.js.html +207 -12
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  45. package/coverage/lcov-report/api/index.html +1 -1
  46. package/coverage/lcov-report/api/index.js.html +13 -13
  47. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/index.html +1 -1
  58. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  69. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +75 -12
  73. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  75. package/coverage/lcov-report/automations/actions.js.html +1 -1
  76. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  77. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  78. package/coverage/lcov-report/automations/index.html +1 -1
  79. package/coverage/lcov-report/automations/index.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/index.html +1 -1
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  106. package/coverage/lcov-report/constants/index.html +1 -1
  107. package/coverage/lcov-report/constants/index.js.html +1 -1
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +1 -1
  110. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +18 -18
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  117. package/coverage/lcov-report/db/newid.js.html +2 -2
  118. package/coverage/lcov-report/db/utils.js.html +56 -20
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +1 -1
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +46 -46
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  127. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  128. package/coverage/lcov-report/middleware/currentapp.js.html +46 -40
  129. package/coverage/lcov-report/middleware/index.html +15 -15
  130. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  131. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  132. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  135. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  136. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  137. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  138. package/coverage/lcov-report/utilities/global.js.html +16 -16
  139. package/coverage/lcov-report/utilities/index.html +15 -15
  140. package/coverage/lcov-report/utilities/index.js.html +24 -24
  141. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  142. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  143. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  146. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  148. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  149. package/coverage/lcov-report/utilities/security.js.html +2 -2
  150. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  152. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  154. package/coverage/lcov-report/utilities/users.js.html +1 -1
  155. package/coverage/lcov-report/utilities/workerRequests.js.html +32 -8
  156. package/coverage/lcov.info +798 -672
  157. package/dist/api/controllers/application.js +5 -5
  158. package/dist/api/controllers/auth.js +9 -0
  159. package/dist/api/controllers/component.js +14 -1
  160. package/dist/api/controllers/datasource.js +21 -8
  161. package/dist/api/controllers/deploy/index.js +1 -8
  162. package/dist/api/controllers/integration.js +4 -4
  163. package/dist/{migrations/functions/usageQuotas/syncDevelopers.js → api/controllers/plugin/file.js} +13 -13
  164. package/dist/api/controllers/plugin/github.js +69 -0
  165. package/dist/api/controllers/plugin/index.js +200 -0
  166. package/dist/api/controllers/plugin/npm.js +58 -0
  167. package/dist/api/controllers/plugin/uploaders.js +11 -0
  168. package/dist/{migrations/functions/usageQuotas/syncPublishedApps.js → api/controllers/plugin/url.js} +13 -15
  169. package/dist/api/controllers/plugin/utils.js +26 -0
  170. package/dist/api/controllers/row/external.js +1 -1
  171. package/dist/api/controllers/screen.js +52 -2
  172. package/dist/api/controllers/static/index.js +1 -0
  173. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  174. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  175. package/dist/api/index.js +1 -1
  176. package/dist/api/routes/application.js +3 -2
  177. package/dist/api/routes/index.js +2 -0
  178. package/dist/{migrations/functions/publishedAppsQuota.js → api/routes/plugin.js} +13 -21
  179. package/dist/api/routes/public/rows.js +1 -82
  180. package/dist/api/routes/public/tables.js +1 -1
  181. package/dist/api/routes/table.js +1 -1
  182. package/dist/api/routes/utils/validators.js +20 -2
  183. package/dist/app.js +16 -1
  184. package/dist/db/utils.js +10 -1
  185. package/dist/environment.js +1 -0
  186. package/dist/integrations/airtable.js +126 -129
  187. package/dist/integrations/arangodb.js +86 -89
  188. package/dist/integrations/base/query.js +2 -2
  189. package/dist/integrations/base/sqlTable.js +3 -1
  190. package/dist/integrations/couchdb.js +80 -83
  191. package/dist/integrations/dynamodb.js +161 -164
  192. package/dist/integrations/elasticsearch.js +135 -138
  193. package/dist/integrations/firebase.js +154 -157
  194. package/dist/integrations/googlesheets.js +323 -327
  195. package/dist/integrations/index.js +99 -51
  196. package/dist/integrations/microsoftSqlServer.js +240 -243
  197. package/dist/integrations/mongodb.js +239 -242
  198. package/dist/integrations/mysql.js +215 -219
  199. package/dist/integrations/oracle.js +318 -322
  200. package/dist/integrations/postgres.js +262 -265
  201. package/dist/integrations/redis.js +134 -139
  202. package/dist/integrations/rest.js +289 -292
  203. package/dist/integrations/s3.js +61 -64
  204. package/dist/integrations/snowflake.js +83 -86
  205. package/dist/middleware/currentapp.js +2 -0
  206. package/dist/migrations/functions/backfill/global.js +0 -3
  207. package/dist/migrations/index.js +0 -10
  208. package/dist/package.json +9 -6
  209. package/dist/tests/utilities/TestConfiguration.js +1 -1
  210. package/dist/threads/query.js +2 -2
  211. package/dist/tsconfig.build.tsbuildinfo +1 -1
  212. package/dist/utilities/fileSystem/index.js +111 -1
  213. package/dist/utilities/workerRequests.js +4 -0
  214. package/dist/watch.js +77 -0
  215. package/dist/websocket.js +22 -0
  216. package/package.json +10 -7
  217. package/scripts/dev/manage.js +4 -0
  218. package/scripts/localdomain.js +3 -1
  219. package/specs/openapi.json +115 -112
  220. package/specs/openapi.yaml +96 -94
  221. package/specs/resources/misc.js +116 -0
  222. package/specs/resources/query.js +1 -1
  223. package/src/api/controllers/application.ts +1 -2
  224. package/src/api/controllers/auth.js +11 -0
  225. package/src/api/controllers/component.js +21 -2
  226. package/src/api/controllers/datasource.js +21 -8
  227. package/src/api/controllers/deploy/index.ts +1 -6
  228. package/src/api/controllers/integration.js +4 -4
  229. package/src/api/controllers/plugin/file.ts +15 -0
  230. package/src/api/controllers/plugin/github.ts +75 -0
  231. package/src/api/controllers/plugin/index.ts +215 -0
  232. package/src/api/controllers/plugin/npm.ts +56 -0
  233. package/src/api/controllers/plugin/uploaders.ts +4 -0
  234. package/src/api/controllers/plugin/url.ts +12 -0
  235. package/src/api/controllers/plugin/utils.ts +19 -0
  236. package/src/api/controllers/public/mapping/types.ts +8 -0
  237. package/src/api/controllers/row/external.js +1 -1
  238. package/src/api/controllers/screen.js +66 -1
  239. package/src/api/controllers/static/index.ts +1 -1
  240. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  241. package/src/api/controllers/static/templates/preview.hbs +5 -1
  242. package/src/api/index.js +1 -1
  243. package/src/api/routes/application.ts +13 -2
  244. package/src/api/routes/index.ts +2 -0
  245. package/src/api/routes/plugin.ts +14 -0
  246. package/src/api/routes/public/rows.ts +1 -82
  247. package/src/api/routes/public/tables.ts +1 -1
  248. package/src/api/routes/table.js +1 -1
  249. package/src/api/routes/tests/query.spec.js +8 -25
  250. package/src/api/routes/tests/user.spec.js +0 -2
  251. package/src/api/routes/utils/validators.js +26 -5
  252. package/src/app.ts +25 -2
  253. package/src/db/utils.js +12 -0
  254. package/src/definitions/openapi.ts +56 -55
  255. package/src/environment.js +1 -0
  256. package/src/integrations/airtable.ts +116 -118
  257. package/src/integrations/arangodb.ts +87 -89
  258. package/src/integrations/base/query.ts +2 -2
  259. package/src/integrations/base/sqlTable.ts +3 -1
  260. package/src/integrations/couchdb.ts +83 -89
  261. package/src/integrations/dynamodb.ts +173 -175
  262. package/src/integrations/elasticsearch.ts +120 -122
  263. package/src/integrations/firebase.ts +157 -159
  264. package/src/integrations/googlesheets.ts +328 -338
  265. package/src/integrations/index.ts +64 -21
  266. package/src/integrations/microsoftSqlServer.ts +249 -251
  267. package/src/integrations/mongodb.ts +261 -258
  268. package/src/integrations/mysql.ts +229 -234
  269. package/src/integrations/oracle.ts +373 -380
  270. package/src/integrations/postgres.ts +264 -268
  271. package/src/integrations/redis.ts +128 -132
  272. package/src/integrations/rest.ts +324 -329
  273. package/src/integrations/s3.ts +68 -71
  274. package/src/integrations/snowflake.ts +80 -82
  275. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  276. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  277. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  278. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  279. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  280. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  281. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  282. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  283. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  284. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  285. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  286. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  287. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  288. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  289. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  290. package/src/middleware/currentapp.js +2 -0
  291. package/src/migrations/functions/backfill/global.ts +0 -3
  292. package/src/migrations/index.ts +0 -16
  293. package/src/module.d.ts +2 -0
  294. package/src/tests/utilities/TestConfiguration.js +1 -1
  295. package/src/threads/query.ts +2 -2
  296. package/src/utilities/fileSystem/index.js +130 -0
  297. package/src/utilities/workerRequests.js +8 -0
  298. package/src/watch.ts +38 -0
  299. package/src/websocket.ts +26 -0
  300. package/builder/assets/index.79165a2a.js +0 -876
  301. package/builder/assets/index.fbe5f97c.css +0 -6
  302. package/builder/assets/vendor.5e1fe644.css +0 -1
  303. package/builder/assets/vendor.67dbd8fa.js +0 -248
  304. package/dist/migrations/functions/developerQuota.js +0 -49
  305. package/src/migrations/functions/developerQuota.ts +0 -15
  306. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  307. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  308. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +0 -21
@@ -232,7 +232,7 @@ exports.update = async function (ctx) {
232
232
  <div class='footer quiet pad2 space-top1 center small'>
233
233
  Code coverage generated by
234
234
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
235
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
235
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
236
236
  </div>
237
237
  <script src="../../prettify.js"></script>
238
238
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">82.14% </span>
26
+ <span class="strong">84.37% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>23/28</span>
28
+ <span class='fraction'>27/32</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>4/8</span>
35
+ <span class='fraction'>5/10</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
42
+ <span class='fraction'>2/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">82.14% </span>
47
+ <span class="strong">84.37% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>23/28</span>
49
+ <span class='fraction'>27/32</span>
50
50
  </div>
51
51
 
52
52
 
@@ -121,12 +121,32 @@
121
121
  <a name='L56'></a><a href='#L56'>56</a>
122
122
  <a name='L57'></a><a href='#L57'>57</a>
123
123
  <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">28x</span>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">28x</span>
125
136
  <span class="cline-any cline-yes">28x</span>
126
137
  <span class="cline-any cline-yes">28x</span>
127
138
  <span class="cline-any cline-yes">28x</span>
128
139
  <span class="cline-any cline-yes">28x</span>
129
140
  <span class="cline-any cline-neutral">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
+ <span class="cline-any cline-yes">28x</span>
145
+ <span class="cline-any cline-yes">1x</span>
146
+ <span class="cline-any cline-yes">1x</span>
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
150
  <span class="cline-any cline-yes">28x</span>
131
151
  <span class="cline-any cline-yes">1x</span>
132
152
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -179,12 +199,23 @@
179
199
  <span class="cline-any cline-no">&nbsp;</span>
180
200
  <span class="cline-any cline-neutral">&nbsp;</span>
181
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-yes">1x</span>
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
204
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { outputProcessing } = require("../../utilities/rowProcessor")
183
205
  const { InternalTables } = require("../../db/utils")
184
206
  const { getFullUser } = require("../../utilities/users")
185
207
  const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
186
208
  const { getAppDB, getAppId } = require("@budibase/backend-core/context")
187
209
  &nbsp;
210
+ /**
211
+ * Add the attributes that are session based to the current user.
212
+ */
213
+ const addSessionAttributesToUser = ctx =&gt; {
214
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (ctx.user) {
215
+ ctx.body.license = ctx.user.license
216
+ }
217
+ }
218
+ &nbsp;
188
219
  exports.fetchSelf = async ctx =&gt; {
189
220
  let userId = ctx.user.userId || <span class="branch-1 cbranch-no" title="branch not covered" >ctx.user._id</span>
190
221
  /* istanbul ignore next */
@@ -236,6 +267,8 @@ exports.fetchSelf = async ctx =&gt; {
236
267
  } else <span class="missing-if-branch" title="else path not taken" >E</span>{
237
268
  <span class="cstat-no" title="statement not covered" > ctx.body = user</span>
238
269
  }
270
+ &nbsp;
271
+ addSessionAttributesToUser(ctx)
239
272
  }
240
273
  &nbsp;</pre></td></tr></table></pre>
241
274
 
@@ -244,7 +277,7 @@ exports.fetchSelf = async ctx =&gt; {
244
277
  <div class='footer quiet pad2 space-top1 center small'>
245
278
  Code coverage generated by
246
279
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
247
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
280
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
248
281
  </div>
249
282
  <script src="../../prettify.js"></script>
250
283
  <script>
@@ -925,7 +925,7 @@ exports.test = async function (ctx) {
925
925
  <div class='footer quiet pad2 space-top1 center small'>
926
926
  Code coverage generated by
927
927
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
928
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
928
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
929
929
  </div>
930
930
  <script src="../../prettify.js"></script>
931
931
  <script>
@@ -127,7 +127,7 @@ exports.exportAppDump = async function (ctx) {
127
127
  <div class='footer quiet pad2 space-top1 center small'>
128
128
  Code coverage generated by
129
129
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
130
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
130
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
131
131
  </div>
132
132
  <script src="../../prettify.js"></script>
133
133
  <script>
@@ -409,7 +409,7 @@ exports.importApps = <span class="fstat-no" title="function not covered" >as</sp
409
409
  <div class='footer quiet pad2 space-top1 center small'>
410
410
  Code coverage generated by
411
411
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
412
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
412
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
413
413
  </div>
414
414
  <script src="../../prettify.js"></script>
415
415
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">94.73% </span>
26
+ <span class="strong">81.48% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>18/19</span>
28
+ <span class='fraction'>22/27</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">40% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>2/5</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">94.73% </span>
47
+ <span class="strong">81.48% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>18/19</span>
49
+ <span class='fraction'>22/27</span>
50
50
  </div>
51
51
 
52
52
 
@@ -101,7 +101,27 @@
101
101
  <a name='L36'></a><a href='#L36'>36</a>
102
102
  <a name='L37'></a><a href='#L37'>37</a>
103
103
  <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">28x</span>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">28x</span>
124
+ <span class="cline-any cline-yes">28x</span>
105
125
  <span class="cline-any cline-yes">28x</span>
106
126
  <span class="cline-any cline-yes">28x</span>
107
127
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -113,7 +133,6 @@
113
133
  <span class="cline-any cline-yes">1x</span>
114
134
  <span class="cline-any cline-neutral">&nbsp;</span>
115
135
  <span class="cline-any cline-yes">1x</span>
116
- <span class="cline-any cline-neutral">&nbsp;</span>
117
136
  <span class="cline-any cline-yes">1x</span>
118
137
  <span class="cline-any cline-neutral">&nbsp;</span>
119
138
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -134,14 +153,34 @@
134
153
  <span class="cline-any cline-neutral">&nbsp;</span>
135
154
  <span class="cline-any cline-neutral">&nbsp;</span>
136
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
157
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
+ <span class="cline-any cline-yes">1x</span>
159
+ <span class="cline-any cline-yes">1x</span>
160
+ <span class="cline-any cline-neutral">&nbsp;</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-neutral">&nbsp;</span>
164
+ <span class="cline-any cline-yes">1x</span>
165
+ <span class="cline-any cline-no">&nbsp;</span>
166
+ <span class="cline-any cline-no">&nbsp;</span>
167
+ <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-no">&nbsp;</span>
169
+ <span class="cline-any cline-no">&nbsp;</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
175
  <span class="cline-any cline-yes">1x</span>
138
176
  <span class="cline-any cline-neutral">&nbsp;</span>
139
177
  <span class="cline-any cline-no">&nbsp;</span>
140
178
  <span class="cline-any cline-neutral">&nbsp;</span>
141
179
  <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { DocumentType } = require("../../db/utils")
180
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { DocumentType, getPluginParams } = require("../../db/utils")
143
181
  const { getComponentLibraryManifest } = require("../../utilities/fileSystem")
144
182
  const { getAppDB } = require("@budibase/backend-core/context")
183
+ const { getGlobalDB } = require("@budibase/backend-core/tenancy")
145
184
  &nbsp;
146
185
  exports.fetchAppComponentDefinitions = async function (ctx) {
147
186
  try {
@@ -151,7 +190,6 @@ exports.fetchAppComponentDefinitions = async function (ctx) {
151
190
  let componentManifests = await Promise.all(
152
191
  app.componentLibraries.map(async library =&gt; {
153
192
  let manifest = await getComponentLibraryManifest(library)
154
- &nbsp;
155
193
  return {
156
194
  manifest,
157
195
  library,
@@ -172,6 +210,25 @@ exports.fetchAppComponentDefinitions = async function (ctx) {
172
210
  }
173
211
  }
174
212
  }
213
+ &nbsp;
214
+ // Add custom components
215
+ const globalDB = getGlobalDB()
216
+ const response = await globalDB.allDocs(
217
+ getPluginParams(null, {
218
+ include_docs: true,
219
+ })
220
+ )
221
+ response.rows
222
+ .map(<span class="fstat-no" title="function not covered" >ro</span>w =&gt; <span class="cstat-no" title="statement not covered" >row.doc)</span>
223
+ .filter(<span class="fstat-no" title="function not covered" >pl</span>ugin =&gt; <span class="cstat-no" title="statement not covered" >plugin.schema.type === "component")</span>
224
+ .forEach(<span class="fstat-no" title="function not covered" >pl</span>ugin =&gt; {
225
+ const fullComponentName = <span class="cstat-no" title="statement not covered" >`plugin/${plugin.name}`</span>
226
+ <span class="cstat-no" title="statement not covered" > definitions[fullComponentName] = {</span>
227
+ component: fullComponentName,
228
+ ...plugin.schema.schema,
229
+ }
230
+ })
231
+ &nbsp;
175
232
  ctx.body = definitions
176
233
  } catch (err) {
177
234
  <span class="cstat-no" title="statement not covered" > console.error(`component-definitions=failed`, err)</span>
@@ -184,7 +241,7 @@ exports.fetchAppComponentDefinitions = async function (ctx) {
184
241
  <div class='footer quiet pad2 space-top1 center small'>
185
242
  Code coverage generated by
186
243
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
187
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
244
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
188
245
  </div>
189
246
  <script src="../../prettify.js"></script>
190
247
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">61.48% </span>
26
+ <span class="strong">58.45% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>83/135</span>
28
+ <span class='fraction'>83/142</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">37.73% </span>
33
+ <span class="strong">32.78% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>20/53</span>
35
+ <span class='fraction'>20/61</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">57.89% </span>
40
+ <span class="strong">55% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/19</span>
42
+ <span class='fraction'>11/20</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">61.19% </span>
47
+ <span class="strong">58.15% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>82/134</span>
49
+ <span class='fraction'>82/141</span>
50
50
  </div>
51
51
 
52
52
 
@@ -326,7 +326,20 @@
326
326
  <a name='L261'></a><a href='#L261'>261</a>
327
327
  <a name='L262'></a><a href='#L262'>262</a>
328
328
  <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
330
343
  <span class="cline-any cline-neutral">&nbsp;</span>
331
344
  <span class="cline-any cline-neutral">&nbsp;</span>
332
345
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -378,9 +391,23 @@
378
391
  <span class="cline-any cline-yes">45x</span>
379
392
  <span class="cline-any cline-no">&nbsp;</span>
380
393
  <span class="cline-any cline-no">&nbsp;</span>
394
+ <span class="cline-any cline-no">&nbsp;</span>
381
395
  <span class="cline-any cline-neutral">&nbsp;</span>
382
396
  <span class="cline-any cline-no">&nbsp;</span>
383
397
  <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-no">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-no">&nbsp;</span>
402
+ <span class="cline-any cline-no">&nbsp;</span>
403
+ <span class="cline-any cline-no">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
411
  <span class="cline-any cline-neutral">&nbsp;</span>
385
412
  <span class="cline-any cline-no">&nbsp;</span>
386
413
  <span class="cline-any cline-no">&nbsp;</span>
@@ -454,40 +481,40 @@
454
481
  <span class="cline-any cline-neutral">&nbsp;</span>
455
482
  <span class="cline-any cline-neutral">&nbsp;</span>
456
483
  <span class="cline-any cline-yes">45x</span>
457
- <span class="cline-any cline-yes">66x</span>
458
- <span class="cline-any cline-yes">66x</span>
459
- <span class="cline-any cline-yes">66x</span>
484
+ <span class="cline-any cline-yes">64x</span>
485
+ <span class="cline-any cline-yes">64x</span>
486
+ <span class="cline-any cline-yes">64x</span>
460
487
  <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-yes">66x</span>
488
+ <span class="cline-any cline-yes">64x</span>
462
489
  <span class="cline-any cline-neutral">&nbsp;</span>
463
490
  <span class="cline-any cline-neutral">&nbsp;</span>
464
491
  <span class="cline-any cline-neutral">&nbsp;</span>
465
492
  <span class="cline-any cline-neutral">&nbsp;</span>
466
493
  <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-yes">66x</span>
468
- <span class="cline-any cline-yes">66x</span>
494
+ <span class="cline-any cline-yes">64x</span>
495
+ <span class="cline-any cline-yes">64x</span>
469
496
  <span class="cline-any cline-no">&nbsp;</span>
470
497
  <span class="cline-any cline-no">&nbsp;</span>
471
498
  <span class="cline-any cline-no">&nbsp;</span>
472
499
  <span class="cline-any cline-neutral">&nbsp;</span>
473
500
  <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-yes">66x</span>
475
- <span class="cline-any cline-yes">66x</span>
476
- <span class="cline-any cline-yes">66x</span>
501
+ <span class="cline-any cline-yes">64x</span>
502
+ <span class="cline-any cline-yes">64x</span>
503
+ <span class="cline-any cline-yes">64x</span>
477
504
  <span class="cline-any cline-neutral">&nbsp;</span>
478
505
  <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-yes">66x</span>
480
- <span class="cline-any cline-yes">66x</span>
481
- <span class="cline-any cline-yes">66x</span>
506
+ <span class="cline-any cline-yes">64x</span>
507
+ <span class="cline-any cline-yes">64x</span>
508
+ <span class="cline-any cline-yes">63x</span>
482
509
  <span class="cline-any cline-no">&nbsp;</span>
483
510
  <span class="cline-any cline-neutral">&nbsp;</span>
484
511
  <span class="cline-any cline-neutral">&nbsp;</span>
485
512
  <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-yes">66x</span>
487
- <span class="cline-any cline-yes">66x</span>
513
+ <span class="cline-any cline-yes">63x</span>
514
+ <span class="cline-any cline-yes">63x</span>
488
515
  <span class="cline-any cline-no">&nbsp;</span>
489
516
  <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-yes">66x</span>
517
+ <span class="cline-any cline-yes">63x</span>
491
518
  <span class="cline-any cline-neutral">&nbsp;</span>
492
519
  <span class="cline-any cline-neutral">&nbsp;</span>
493
520
  <span class="cline-any cline-yes">45x</span>
@@ -551,7 +578,6 @@
551
578
  <span class="cline-any cline-neutral">&nbsp;</span>
552
579
  <span class="cline-any cline-no">&nbsp;</span>
553
580
  <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
555
581
  <span class="cline-any cline-neutral">&nbsp;</span>
556
582
  <span class="cline-any cline-neutral">&nbsp;</span>
557
583
  <span class="cline-any cline-no">&nbsp;</span>
@@ -598,7 +624,7 @@
598
624
  getTableParams,
599
625
  } = require("../../db/utils")
600
626
  const { BuildSchemaErrors, InvalidColumns } = require("../../constants")
601
- const { integrations } = require("../../integrations")
627
+ const { getIntegration } = require("../../integrations")
602
628
  const { getDatasourceAndQuery } = require("./row/utils")
603
629
  const { invalidateDynamicVariables } = require("../../threads/utils")
604
630
  const { getAppDB } = require("@budibase/backend-core/context")
@@ -641,9 +667,23 @@ exports.fetch = async function (ctx) {
641
667
  exports.buildSchemaFromDb = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
642
668
  const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
643
669
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(ctx.params.datasourceId)</span>
670
+ const tablesFilter = <span class="cstat-no" title="statement not covered" >ctx.request.body.tablesFilter</span>
644
671
  &nbsp;
645
- const { tables, error } = <span class="cstat-no" title="statement not covered" >await buildSchemaHelper(datasource)</span>
646
- <span class="cstat-no" title="statement not covered" > datasource.entities = tables</span>
672
+ let { tables, error } = <span class="cstat-no" title="statement not covered" >await buildSchemaHelper(datasource)</span>
673
+ <span class="cstat-no" title="statement not covered" > if (tablesFilter) {</span>
674
+ <span class="cstat-no" title="statement not covered" > if (!datasource.entities) {</span>
675
+ <span class="cstat-no" title="statement not covered" > datasource.entities = {}</span>
676
+ }
677
+ <span class="cstat-no" title="statement not covered" > for (let key in tables) {</span>
678
+ <span class="cstat-no" title="statement not covered" > if (</span>
679
+ tablesFilter.some(<span class="fstat-no" title="function not covered" >fi</span>lter =&gt; <span class="cstat-no" title="statement not covered" >filter.toLowerCase() === key.toLowerCase())</span>
680
+ ) {
681
+ <span class="cstat-no" title="statement not covered" > datasource.entities[key] = tables[key]</span>
682
+ }
683
+ }
684
+ } else {
685
+ <span class="cstat-no" title="statement not covered" > datasource.entities = tables</span>
686
+ }
647
687
  &nbsp;
648
688
  const dbResp = <span class="cstat-no" title="statement not covered" >await db.put(datasource)</span>
649
689
  <span class="cstat-no" title="statement not covered" > datasource._rev = dbResp.rev</span>
@@ -705,7 +745,7 @@ exports.update = async function (ctx) {
705
745
  &nbsp;
706
746
  // Drain connection pools when configuration is changed
707
747
  <span class="missing-if-branch" title="else path not taken" >E</span>if (datasource.source) {
708
- const source = integrations[datasource.source]
748
+ const source = await getIntegration(datasource.source)
709
749
  <span class="missing-if-branch" title="if path not taken" >I</span>if (source &amp;&amp; source.pool) {
710
750
  <span class="cstat-no" title="statement not covered" > await source.pool.end()</span>
711
751
  }
@@ -740,7 +780,7 @@ exports.save = async function (ctx) {
740
780
  &nbsp;
741
781
  // Drain connection pools when configuration is changed
742
782
  <span class="missing-if-branch" title="else path not taken" >E</span>if (datasource.source) {
743
- const source = integrations[datasource.source]
783
+ const source = await getIntegration(datasource.source)
744
784
  <span class="missing-if-branch" title="if path not taken" >I</span>if (source &amp;&amp; source.pool) {
745
785
  <span class="cstat-no" title="statement not covered" > await source.pool.end()</span>
746
786
  }
@@ -809,15 +849,14 @@ function <span class="fstat-no" title="function not covered" >updateError(</span
809
849
  }
810
850
  &nbsp;
811
851
  const buildSchemaHelper = <span class="fstat-no" title="function not covered" >as</span>ync datasource =&gt; {
812
- const Connector = <span class="cstat-no" title="statement not covered" >integrations[datasource.source]</span>
852
+ const Connector = <span class="cstat-no" title="statement not covered" >await getIntegration(datasource.source)</span>
813
853
  &nbsp;
814
854
  // Connect to the DB and build the schema
815
855
  const connector = <span class="cstat-no" title="statement not covered" >new Connector(datasource.config)</span>
816
856
  <span class="cstat-no" title="statement not covered" > await connector.buildSchema(datasource._id, datasource.entities)</span>
817
- <span class="cstat-no" title="statement not covered" > datasource.entities = connector.tables</span>
818
857
  &nbsp;
819
858
  // make sure they all have a display name selected
820
- <span class="cstat-no" title="statement not covered" > for (let entity of Object.values(datasource.entities)) {</span>
859
+ <span class="cstat-no" title="statement not covered" > for (let entity of Object.values(datasource.entities ?? {})) {</span>
821
860
  <span class="cstat-no" title="statement not covered" > if (entity.primaryDisplay) {</span>
822
861
  <span class="cstat-no" title="statement not covered" > continue</span>
823
862
  }
@@ -859,7 +898,7 @@ const buildSchemaHelper = <span class="fstat-no" title="function not covered" >a
859
898
  <div class='footer quiet pad2 space-top1 center small'>
860
899
  Code coverage generated by
861
900
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
862
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
901
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
863
902
  </div>
864
903
  <script src="../../prettify.js"></script>
865
904
  <script>
@@ -475,7 +475,7 @@ exports.getBudibaseVersion = async ctx =&gt; {
475
475
  <div class='footer quiet pad2 space-top1 center small'>
476
476
  Code coverage generated by
477
477
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
478
- at Fri Sep 16 2022 11:32:13 GMT+0000 (Coordinated Universal Time)
478
+ at Fri Sep 16 2022 17:35:38 GMT+0000 (Coordinated Universal Time)
479
479
  </div>
480
480
  <script src="../../prettify.js"></script>
481
481
  <script>