@budibase/server 2.3.13 → 2.3.14-alpha.0

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 (551) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.4488f38d.css → index.a534ca24.css} +1 -1
  3. package/builder/assets/{index.b1cc0b01.js → index.d7529be1.js} +204 -204
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +11936 -7197
  6. package/coverage/coverage-final.json +356 -271
  7. package/coverage/lcov-report/index.html +420 -195
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +140 -140
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +47 -47
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +26 -26
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +37 -37
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +81 -81
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +26 -26
  21. package/coverage/lcov-report/src/api/controllers/index.html +37 -37
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +15 -15
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +34 -34
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +18 -18
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +391 -0
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +116 -0
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +116 -0
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +796 -0
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +116 -0
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +805 -0
  64. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +116 -0
  65. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +568 -0
  66. package/coverage/lcov-report/src/api/controllers/query/index.html +10 -10
  67. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +61 -55
  68. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  69. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  70. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  71. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +431 -419
  72. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +211 -175
  73. package/coverage/lcov-report/src/api/controllers/row/index.html +42 -42
  74. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +79 -79
  75. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +34 -34
  76. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +6 -6
  77. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
  78. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +31 -31
  79. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  80. package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
  81. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  82. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +22 -22
  83. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +51 -51
  84. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +198 -195
  85. package/coverage/lcov-report/src/api/controllers/table/index.html +47 -47
  86. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +42 -42
  87. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +61 -61
  88. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +63 -63
  89. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  90. package/coverage/lcov-report/src/api/controllers/user.ts.html +28 -28
  91. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +2 -2
  92. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  93. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +16 -16
  94. package/coverage/lcov-report/src/api/controllers/view/tests/index.html +116 -0
  95. package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +277 -0
  96. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
  97. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +7 -7
  98. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +25 -25
  99. package/coverage/lcov-report/src/api/index.html +1 -1
  100. package/coverage/lcov-report/src/api/index.ts.html +27 -27
  101. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  102. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  103. package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
  104. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  105. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  106. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  107. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  108. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  109. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  110. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  111. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  112. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/index.ts.html +35 -35
  114. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  115. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  116. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  117. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  118. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  119. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  120. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +14 -17
  121. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  123. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
  125. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  126. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  127. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  128. package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +583 -0
  129. package/coverage/lcov-report/src/api/routes/public/tests/index.html +42 -12
  130. package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +199 -0
  131. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +78 -27
  132. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  133. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  134. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  136. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  137. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  138. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  139. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  140. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  141. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  142. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  143. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  144. package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +271 -0
  145. package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +259 -0
  146. package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +1066 -0
  147. package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +154 -0
  148. package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +1123 -0
  149. package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +223 -0
  150. package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +268 -0
  151. package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +178 -0
  152. package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +799 -0
  153. package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +202 -0
  154. package/coverage/lcov-report/src/api/routes/tests/environmentVariables.spec.ts.html +517 -0
  155. package/coverage/lcov-report/src/api/routes/tests/index.html +536 -0
  156. package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +238 -0
  157. package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +670 -0
  158. package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +259 -0
  159. package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +280 -0
  160. package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +358 -0
  161. package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +484 -0
  162. package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +622 -0
  163. package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +1699 -0
  164. package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +478 -0
  165. package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +430 -0
  166. package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +1804 -0
  167. package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +391 -0
  168. package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +541 -0
  169. package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +991 -0
  170. package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +154 -0
  171. package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +679 -0
  172. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +110 -41
  173. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +19 -19
  174. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +29 -23
  175. package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +1342 -0
  176. package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +484 -0
  177. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  178. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  179. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  180. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  181. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  182. package/coverage/lcov-report/src/app.ts.html +59 -44
  183. package/coverage/lcov-report/src/automations/actions.ts.html +24 -24
  184. package/coverage/lcov-report/src/automations/automationUtils.ts.html +4 -4
  185. package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
  186. package/coverage/lcov-report/src/automations/index.html +27 -27
  187. package/coverage/lcov-report/src/automations/index.ts.html +5 -5
  188. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  189. package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
  190. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  191. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  192. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  193. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  194. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  195. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  196. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  197. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  198. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  199. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  200. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  201. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
  202. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +13 -13
  203. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  204. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +4 -4
  205. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  206. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  207. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  208. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  209. package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +337 -0
  210. package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +187 -0
  211. package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +223 -0
  212. package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +133 -0
  213. package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +250 -0
  214. package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +166 -0
  215. package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +229 -0
  216. package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +229 -0
  217. package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +232 -0
  218. package/coverage/lcov-report/src/automations/tests/index.html +341 -0
  219. package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +220 -0
  220. package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +202 -0
  221. package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +436 -0
  222. package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +298 -0
  223. package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +151 -0
  224. package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +217 -0
  225. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  226. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  227. package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +166 -0
  228. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  229. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  230. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  231. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  232. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  233. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  234. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  235. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  236. package/coverage/lcov-report/src/automations/triggers.ts.html +44 -44
  237. package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +280 -0
  238. package/coverage/lcov-report/src/automations/unitTests/index.html +116 -0
  239. package/coverage/lcov-report/src/automations/utils.ts.html +63 -63
  240. package/coverage/lcov-report/src/constants/index.html +16 -16
  241. package/coverage/lcov-report/src/constants/index.ts.html +33 -99
  242. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  243. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  244. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +33 -45
  245. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  246. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  247. package/coverage/lcov-report/src/db/defaultData/index.html +11 -11
  248. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  249. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  250. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  251. package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
  252. package/coverage/lcov-report/src/db/index.html +16 -16
  253. package/coverage/lcov-report/src/db/index.ts.html +19 -19
  254. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +26 -23
  255. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  256. package/coverage/lcov-report/src/db/linkedRows/index.html +10 -10
  257. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +23 -23
  258. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +10 -10
  259. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  260. package/coverage/lcov-report/src/db/tests/index.html +131 -0
  261. package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +793 -0
  262. package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +277 -0
  263. package/coverage/lcov-report/src/db/utils.ts.html +52 -52
  264. package/coverage/lcov-report/src/definitions/automations.ts.html +2 -2
  265. package/coverage/lcov-report/src/definitions/index.html +1 -1
  266. package/coverage/lcov-report/src/environment.ts.html +34 -31
  267. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  268. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +6 -6
  269. package/coverage/lcov-report/src/events/index.html +1 -1
  270. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  271. package/coverage/lcov-report/src/events/utils.ts.html +10 -10
  272. package/coverage/lcov-report/src/index.html +23 -23
  273. package/coverage/lcov-report/src/index.ts.html +1 -1
  274. package/coverage/lcov-report/src/integration-test/index.html +116 -0
  275. package/coverage/lcov-report/src/integration-test/postgres.spec.ts.html +2341 -0
  276. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  277. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  278. package/coverage/lcov-report/src/integrations/base/index.html +30 -30
  279. package/coverage/lcov-report/src/integrations/base/query.ts.html +9 -9
  280. package/coverage/lcov-report/src/integrations/base/sql.ts.html +217 -187
  281. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +107 -107
  282. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  283. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  284. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  285. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  286. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  287. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  288. package/coverage/lcov-report/src/integrations/index.html +27 -27
  289. package/coverage/lcov-report/src/integrations/index.ts.html +40 -40
  290. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  291. package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
  292. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  293. package/coverage/lcov-report/src/integrations/oracle.ts.html +14 -14
  294. package/coverage/lcov-report/src/integrations/postgres.ts.html +68 -68
  295. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  296. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +8 -8
  297. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  298. package/coverage/lcov-report/src/integrations/rest.ts.html +15 -15
  299. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  300. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  301. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  302. package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +310 -0
  303. package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +199 -0
  304. package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +349 -0
  305. package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +550 -0
  306. package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +331 -0
  307. package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +376 -0
  308. package/coverage/lcov-report/src/integrations/tests/index.html +230 -5
  309. package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +253 -0
  310. package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +1087 -0
  311. package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +484 -0
  312. package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +373 -0
  313. package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +328 -0
  314. package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +337 -0
  315. package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +1870 -0
  316. package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +421 -0
  317. package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +1753 -0
  318. package/coverage/lcov-report/src/integrations/utils.ts.html +77 -77
  319. package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
  320. package/coverage/lcov-report/src/middleware/authorized.ts.html +29 -29
  321. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  322. package/coverage/lcov-report/src/middleware/currentapp.ts.html +53 -53
  323. package/coverage/lcov-report/src/middleware/index.html +15 -15
  324. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  325. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  326. package/coverage/lcov-report/src/middleware/resourceId.ts.html +28 -28
  327. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  328. package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +574 -0
  329. package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +814 -0
  330. package/coverage/lcov-report/src/middleware/tests/index.html +161 -0
  331. package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +397 -0
  332. package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +214 -0
  333. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  334. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  335. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  336. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  337. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  338. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  339. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  340. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  341. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  342. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  343. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  344. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  345. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  346. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  347. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  348. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  349. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  350. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  351. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  352. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  353. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  354. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  355. package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +163 -0
  356. package/coverage/lcov-report/src/migrations/functions/tests/index.html +161 -0
  357. package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +163 -0
  358. package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +517 -0
  359. package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +190 -0
  360. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  361. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  362. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  363. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  364. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  365. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +131 -0
  366. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +190 -0
  367. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +244 -0
  368. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  369. package/coverage/lcov-report/src/migrations/index.html +1 -1
  370. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  371. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  372. package/coverage/lcov-report/src/migrations/tests/index.html +23 -8
  373. package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +511 -0
  374. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  375. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  376. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  377. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
  378. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  379. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  380. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  381. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +10 -10
  382. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  383. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +41 -23
  384. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
  385. package/coverage/lcov-report/src/sdk/app/backups/index.html +10 -10
  386. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  387. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  388. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +69 -60
  389. package/coverage/lcov-report/src/sdk/app/datasources/index.html +19 -19
  390. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +3 -3
  391. package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
  392. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +3 -3
  393. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +11 -11
  394. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  395. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  396. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  397. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  398. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  399. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +10 -10
  400. package/coverage/lcov-report/src/sdk/index.html +1 -1
  401. package/coverage/lcov-report/src/sdk/index.ts.html +11 -11
  402. package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +313 -0
  403. package/coverage/lcov-report/src/sdk/tests/index.html +116 -0
  404. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  405. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  406. package/coverage/lcov-report/src/sdk/users/utils.ts.html +31 -31
  407. package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
  408. package/coverage/lcov-report/src/sdk/utils/index.ts.html +11 -11
  409. package/coverage/lcov-report/src/startup.ts.html +42 -42
  410. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +421 -193
  411. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  412. package/coverage/lcov-report/src/tests/utilities/index.html +28 -28
  413. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  414. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +77 -35
  415. package/coverage/lcov-report/src/threads/automation.ts.html +22 -22
  416. package/coverage/lcov-report/src/threads/index.html +1 -1
  417. package/coverage/lcov-report/src/threads/index.ts.html +24 -24
  418. package/coverage/lcov-report/src/threads/query.ts.html +76 -76
  419. package/coverage/lcov-report/src/threads/utils.ts.html +12 -12
  420. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  421. package/coverage/lcov-report/src/utilities/centralPath.ts.html +2 -2
  422. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +17 -17
  423. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +8 -8
  424. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +25 -25
  425. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  426. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +6 -6
  427. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +8 -8
  428. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  429. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
  430. package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
  431. package/coverage/lcov-report/src/utilities/index.html +34 -19
  432. package/coverage/lcov-report/src/utilities/index.ts.html +26 -26
  433. package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
  434. package/coverage/lcov-report/src/utilities/retry.ts.html +139 -0
  435. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  436. package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
  437. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +19 -19
  438. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +49 -49
  439. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  440. package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +116 -0
  441. package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +256 -0
  442. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  443. package/coverage/lcov-report/src/utilities/schema.ts.html +3 -3
  444. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  445. package/coverage/lcov-report/src/utilities/security.ts.html +22 -22
  446. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  447. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  448. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  449. package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
  450. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +15 -15
  451. package/coverage/lcov-report/src/watch.ts.html +7 -7
  452. package/coverage/lcov-report/src/websocket.ts.html +5 -5
  453. package/coverage/lcov.info +20061 -12327
  454. package/dist/api/controllers/query/index.js +2 -0
  455. package/dist/api/controllers/row/ExternalRequest.js +4 -2
  456. package/dist/api/controllers/row/external.js +12 -1
  457. package/dist/api/controllers/table/external.js +8 -8
  458. package/dist/api/routes/public/tests/utils.js +29 -2
  459. package/dist/api/routes/tests/utilities/index.js +131 -0
  460. package/dist/app.js +8 -4
  461. package/dist/constants/index.js +4 -24
  462. package/dist/db/defaultData/datasource_bb_default.js +6 -5
  463. package/dist/db/linkedRows/LinkController.js +9 -8
  464. package/dist/environment.js +1 -0
  465. package/dist/integrations/base/sql.js +10 -3
  466. package/dist/package.json +8 -6
  467. package/dist/sdk/app/backups/exports.js +8 -2
  468. package/dist/sdk/app/datasources/datasources.js +3 -0
  469. package/dist/tests/utilities/TestConfiguration.js +626 -0
  470. package/dist/tests/utilities/controllers.js +40 -0
  471. package/dist/tests/utilities/structures.js +234 -0
  472. package/dist/tsconfig.build.tsbuildinfo +1 -1
  473. package/dist/utilities/retry.js +30 -0
  474. package/jest-testcontainers-config.js +8 -0
  475. package/jest.config.ts +28 -11
  476. package/package.json +9 -7
  477. package/scripts/load/create-many-apps.js +24 -0
  478. package/scripts/load/create-many-rows.js +30 -0
  479. package/scripts/load/utils.js +66 -0
  480. package/specs/openapi.json +6 -6
  481. package/specs/openapi.yaml +3 -3
  482. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  483. package/src/api/controllers/query/index.ts +2 -0
  484. package/src/api/controllers/row/ExternalRequest.ts +6 -2
  485. package/src/api/controllers/row/external.ts +13 -1
  486. package/src/api/controllers/table/external.ts +3 -2
  487. package/src/api/routes/public/applications.ts +0 -1
  488. package/src/api/routes/public/tests/compare.spec.js +1 -1
  489. package/src/api/routes/public/tests/users.spec.js +1 -1
  490. package/src/api/routes/public/tests/utils.ts +25 -8
  491. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  492. package/src/api/routes/tests/analytics.spec.js +4 -1
  493. package/src/api/routes/tests/apikeys.spec.js +1 -1
  494. package/src/api/routes/tests/application.spec.ts +20 -6
  495. package/src/api/routes/tests/auth.spec.js +2 -2
  496. package/src/api/routes/tests/automation.spec.js +6 -2
  497. package/src/api/routes/tests/backup.spec.ts +4 -13
  498. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +11 -15
  499. package/src/api/routes/tests/component.spec.js +1 -1
  500. package/src/api/routes/tests/datasource.spec.ts +20 -3
  501. package/src/api/routes/tests/dev.spec.js +1 -1
  502. package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
  503. package/src/api/routes/tests/integration.spec.js +1 -1
  504. package/src/api/routes/tests/layout.spec.js +1 -1
  505. package/src/api/routes/tests/metadata.spec.js +1 -1
  506. package/src/api/routes/tests/misc.spec.js +1 -1
  507. package/src/api/routes/tests/permissions.spec.js +4 -1
  508. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
  509. package/src/api/routes/tests/role.spec.js +6 -1
  510. package/src/api/routes/tests/routing.spec.js +1 -1
  511. package/src/api/routes/tests/row.spec.js +11 -3
  512. package/src/api/routes/tests/screen.spec.js +1 -1
  513. package/src/api/routes/tests/static.spec.js +2 -1
  514. package/src/api/routes/tests/table.spec.js +1 -1
  515. package/src/api/routes/tests/templates.spec.js +1 -1
  516. package/src/api/routes/tests/user.spec.js +12 -12
  517. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  518. package/src/api/routes/tests/utilities/index.ts +5 -3
  519. package/src/api/routes/tests/view.spec.js +4 -1
  520. package/src/api/routes/tests/webhook.spec.js +11 -2
  521. package/src/app.ts +9 -4
  522. package/src/automations/tests/automation.spec.js +4 -4
  523. package/src/automations/tests/bash.spec.js +1 -1
  524. package/src/automations/tests/discord.spec.js +1 -1
  525. package/src/automations/tests/executeQuery.spec.js +2 -3
  526. package/src/automations/tests/executeScript.spec.js +1 -1
  527. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  528. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  529. package/src/automations/tests/serverLog.spec.js +1 -1
  530. package/src/automations/tests/updateRow.spec.js +1 -1
  531. package/src/automations/tests/zapier.spec.js +1 -1
  532. package/src/constants/index.ts +1 -23
  533. package/src/db/defaultData/datasource_bb_default.ts +6 -10
  534. package/src/db/linkedRows/LinkController.ts +2 -1
  535. package/src/db/tests/linkController.spec.js +4 -1
  536. package/src/db/tests/linkTests.spec.js +1 -1
  537. package/src/environment.ts +1 -0
  538. package/src/integration-test/postgres.spec.ts +752 -0
  539. package/src/integrations/base/sql.ts +15 -5
  540. package/src/integrations/oracle.ts +1 -1
  541. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  542. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  543. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  544. package/src/migrations/tests/index.spec.ts +13 -20
  545. package/src/sdk/app/backups/exports.ts +8 -2
  546. package/src/sdk/app/datasources/datasources.ts +3 -0
  547. package/src/tests/jestEnv.ts +2 -6
  548. package/src/tests/jestSetup.ts +8 -7
  549. package/src/tests/utilities/TestConfiguration.ts +126 -50
  550. package/src/tests/utilities/structures.ts +16 -2
  551. package/src/utilities/retry.ts +18 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">6.57% </span>
26
+ <span class="strong">59.86% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>10/152</span>
28
+ <span class='fraction'>91/152</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">46.96% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/66</span>
35
+ <span class='fraction'>31/66</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">64.7% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/17</span>
42
+ <span class='fraction'>11/17</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">6.57% </span>
47
+ <span class="strong">59.86% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>10/152</span>
49
+ <span class='fraction'>91/152</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -419,21 +419,22 @@
419
419
  <a name='L354'></a><a href='#L354'>354</a>
420
420
  <a name='L355'></a><a href='#L355'>355</a>
421
421
  <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
423
424
  <span class="cline-any cline-neutral">&nbsp;</span>
424
425
  <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-yes">56x</span>
426
+ <span class="cline-any cline-yes">58x</span>
426
427
  <span class="cline-any cline-neutral">&nbsp;</span>
427
428
  <span class="cline-any cline-neutral">&nbsp;</span>
428
429
  <span class="cline-any cline-neutral">&nbsp;</span>
429
430
  <span class="cline-any cline-neutral">&nbsp;</span>
430
431
  <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">56x</span>
432
- <span class="cline-any cline-yes">56x</span>
433
- <span class="cline-any cline-yes">56x</span>
434
- <span class="cline-any cline-yes">56x</span>
435
- <span class="cline-any cline-yes">56x</span>
436
- <span class="cline-any cline-yes">56x</span>
432
+ <span class="cline-any cline-yes">58x</span>
433
+ <span class="cline-any cline-yes">58x</span>
434
+ <span class="cline-any cline-yes">58x</span>
435
+ <span class="cline-any cline-yes">58x</span>
436
+ <span class="cline-any cline-yes">58x</span>
437
+ <span class="cline-any cline-yes">58x</span>
437
438
  <span class="cline-any cline-neutral">&nbsp;</span>
438
439
  <span class="cline-any cline-neutral">&nbsp;</span>
439
440
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -443,10 +444,10 @@
443
444
  <span class="cline-any cline-neutral">&nbsp;</span>
444
445
  <span class="cline-any cline-neutral">&nbsp;</span>
445
446
  <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-yes">56x</span>
447
- <span class="cline-any cline-yes">56x</span>
448
- <span class="cline-any cline-yes">56x</span>
449
447
  <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-yes">58x</span>
449
+ <span class="cline-any cline-yes">58x</span>
450
+ <span class="cline-any cline-yes">58x</span>
450
451
  <span class="cline-any cline-neutral">&nbsp;</span>
451
452
  <span class="cline-any cline-neutral">&nbsp;</span>
452
453
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -455,8 +456,8 @@
455
456
  <span class="cline-any cline-neutral">&nbsp;</span>
456
457
  <span class="cline-any cline-neutral">&nbsp;</span>
457
458
  <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
459
  <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-yes">49x</span>
460
461
  <span class="cline-any cline-neutral">&nbsp;</span>
461
462
  <span class="cline-any cline-neutral">&nbsp;</span>
462
463
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -466,63 +467,64 @@
466
467
  <span class="cline-any cline-neutral">&nbsp;</span>
467
468
  <span class="cline-any cline-neutral">&nbsp;</span>
468
469
  <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-no">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
470
  <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-no">&nbsp;</span>
471
+ <span class="cline-any cline-yes">49x</span>
473
472
  <span class="cline-any cline-no">&nbsp;</span>
474
473
  <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-yes">49x</span>
475
475
  <span class="cline-any cline-no">&nbsp;</span>
476
476
  <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-yes">49x</span>
477
478
  <span class="cline-any cline-neutral">&nbsp;</span>
478
479
  <span class="cline-any cline-neutral">&nbsp;</span>
479
480
  <span class="cline-any cline-neutral">&nbsp;</span>
480
481
  <span class="cline-any cline-neutral">&nbsp;</span>
481
482
  <span class="cline-any cline-neutral">&nbsp;</span>
482
483
  <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
484
  <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
485
+ <span class="cline-any cline-yes">49x</span>
487
486
  <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-yes">49x</span>
488
+ <span class="cline-any cline-yes">181x</span>
488
489
  <span class="cline-any cline-neutral">&nbsp;</span>
489
490
  <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
491
  <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-no">&nbsp;</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
492
+ <span class="cline-any cline-yes">22x</span>
493
+ <span class="cline-any cline-yes">22x</span>
496
494
  <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-yes">22x</span>
496
+ <span class="cline-any cline-yes">22x</span>
497
497
  <span class="cline-any cline-no">&nbsp;</span>
498
498
  <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-yes">22x</span>
499
500
  <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-no">&nbsp;</span>
501
501
  <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-yes">66x</span>
502
503
  <span class="cline-any cline-neutral">&nbsp;</span>
503
504
  <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-no">&nbsp;</span>
505
505
  <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-yes">22x</span>
506
507
  <span class="cline-any cline-neutral">&nbsp;</span>
507
508
  <span class="cline-any cline-neutral">&nbsp;</span>
508
509
  <span class="cline-any cline-neutral">&nbsp;</span>
509
510
  <span class="cline-any cline-neutral">&nbsp;</span>
510
511
  <span class="cline-any cline-neutral">&nbsp;</span>
511
512
  <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
513
  <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-yes">49x</span>
516
515
  <span class="cline-any cline-no">&nbsp;</span>
517
516
  <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-yes">49x</span>
518
+ <span class="cline-any cline-yes">49x</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
520
  <span class="cline-any cline-no">&nbsp;</span>
519
521
  <span class="cline-any cline-neutral">&nbsp;</span>
520
522
  <span class="cline-any cline-neutral">&nbsp;</span>
521
523
  <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
524
+ <span class="cline-any cline-yes">22x</span>
523
525
  <span class="cline-any cline-no">&nbsp;</span>
524
526
  <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-yes">22x</span>
526
528
  <span class="cline-any cline-neutral">&nbsp;</span>
527
529
  <span class="cline-any cline-neutral">&nbsp;</span>
528
530
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -569,17 +571,17 @@
569
571
  <span class="cline-any cline-neutral">&nbsp;</span>
570
572
  <span class="cline-any cline-neutral">&nbsp;</span>
571
573
  <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-no">&nbsp;</span>
574
+ <span class="cline-any cline-yes">22x</span>
573
575
  <span class="cline-any cline-no">&nbsp;</span>
574
576
  <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
+ <span class="cline-any cline-yes">22x</span>
578
+ <span class="cline-any cline-yes">22x</span>
577
579
  <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
580
+ <span class="cline-any cline-yes">22x</span>
581
+ <span class="cline-any cline-yes">22x</span>
582
+ <span class="cline-any cline-yes">22x</span>
583
+ <span class="cline-any cline-yes">22x</span>
584
+ <span class="cline-any cline-yes">22x</span>
583
585
  <span class="cline-any cline-neutral">&nbsp;</span>
584
586
  <span class="cline-any cline-neutral">&nbsp;</span>
585
587
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -589,11 +591,11 @@
589
591
  <span class="cline-any cline-neutral">&nbsp;</span>
590
592
  <span class="cline-any cline-neutral">&nbsp;</span>
591
593
  <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
594
+ <span class="cline-any cline-yes">22x</span>
593
595
  <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
596
+ <span class="cline-any cline-yes">22x</span>
597
+ <span class="cline-any cline-yes">22x</span>
598
+ <span class="cline-any cline-yes">22x</span>
597
599
  <span class="cline-any cline-neutral">&nbsp;</span>
598
600
  <span class="cline-any cline-neutral">&nbsp;</span>
599
601
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -602,67 +604,67 @@
602
604
  <span class="cline-any cline-no">&nbsp;</span>
603
605
  <span class="cline-any cline-no">&nbsp;</span>
604
606
  <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
607
+ <span class="cline-any cline-yes">22x</span>
606
608
  <span class="cline-any cline-neutral">&nbsp;</span>
607
609
  <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
610
+ <span class="cline-any cline-yes">22x</span>
611
+ <span class="cline-any cline-yes">22x</span>
612
+ <span class="cline-any cline-yes">22x</span>
611
613
  <span class="cline-any cline-neutral">&nbsp;</span>
612
614
  <span class="cline-any cline-neutral">&nbsp;</span>
613
615
  <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-no">&nbsp;</span>
616
+ <span class="cline-any cline-yes">22x</span>
615
617
  <span class="cline-any cline-neutral">&nbsp;</span>
616
618
  <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
619
+ <span class="cline-any cline-yes">49x</span>
620
+ <span class="cline-any cline-yes">49x</span>
621
+ <span class="cline-any cline-yes">49x</span>
620
622
  <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-no">&nbsp;</span>
623
+ <span class="cline-any cline-yes">49x</span>
624
+ <span class="cline-any cline-yes">49x</span>
623
625
  <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-no">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
626
+ <span class="cline-any cline-yes">49x</span>
627
+ <span class="cline-any cline-yes">49x</span>
626
628
  <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-no">&nbsp;</span>
629
+ <span class="cline-any cline-yes">49x</span>
628
630
  <span class="cline-any cline-neutral">&nbsp;</span>
629
631
  <span class="cline-any cline-neutral">&nbsp;</span>
630
632
  <span class="cline-any cline-neutral">&nbsp;</span>
631
633
  <span class="cline-any cline-neutral">&nbsp;</span>
632
634
  <span class="cline-any cline-neutral">&nbsp;</span>
633
635
  <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-no">&nbsp;</span>
636
+ <span class="cline-any cline-yes">49x</span>
635
637
  <span class="cline-any cline-no">&nbsp;</span>
636
638
  <span class="cline-any cline-neutral">&nbsp;</span>
637
639
  <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-no">&nbsp;</span>
640
+ <span class="cline-any cline-yes">49x</span>
639
641
  <span class="cline-any cline-no">&nbsp;</span>
640
642
  <span class="cline-any cline-neutral">&nbsp;</span>
641
643
  <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-no">&nbsp;</span>
643
- <span class="cline-any cline-no">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-no">&nbsp;</span>
644
+ <span class="cline-any cline-yes">49x</span>
645
+ <span class="cline-any cline-yes">49x</span>
646
+ <span class="cline-any cline-yes">49x</span>
647
+ <span class="cline-any cline-yes">22x</span>
646
648
  <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-no">&nbsp;</span>
648
- <span class="cline-any cline-no">&nbsp;</span>
649
+ <span class="cline-any cline-yes">49x</span>
650
+ <span class="cline-any cline-yes">49x</span>
649
651
  <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
652
+ <span class="cline-any cline-yes">49x</span>
651
653
  <span class="cline-any cline-neutral">&nbsp;</span>
652
654
  <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-no">&nbsp;</span>
655
- <span class="cline-any cline-no">&nbsp;</span>
655
+ <span class="cline-any cline-yes">49x</span>
656
+ <span class="cline-any cline-yes">159x</span>
657
+ <span class="cline-any cline-yes">137x</span>
656
658
  <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-no">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
+ <span class="cline-any cline-yes">22x</span>
660
+ <span class="cline-any cline-yes">22x</span>
659
661
  <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-no">&nbsp;</span>
662
+ <span class="cline-any cline-yes">22x</span>
661
663
  <span class="cline-any cline-no">&nbsp;</span>
662
664
  <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-no">&nbsp;</span>
664
- <span class="cline-any cline-no">&nbsp;</span>
665
- <span class="cline-any cline-no">&nbsp;</span>
665
+ <span class="cline-any cline-yes">22x</span>
666
+ <span class="cline-any cline-yes">22x</span>
667
+ <span class="cline-any cline-yes">22x</span>
666
668
  <span class="cline-any cline-no">&nbsp;</span>
667
669
  <span class="cline-any cline-neutral">&nbsp;</span>
668
670
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -676,33 +678,33 @@
676
678
  <span class="cline-any cline-no">&nbsp;</span>
677
679
  <span class="cline-any cline-neutral">&nbsp;</span>
678
680
  <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-no">&nbsp;</span>
680
- <span class="cline-any cline-no">&nbsp;</span>
681
+ <span class="cline-any cline-yes">22x</span>
682
+ <span class="cline-any cline-yes">22x</span>
681
683
  <span class="cline-any cline-neutral">&nbsp;</span>
682
684
  <span class="cline-any cline-neutral">&nbsp;</span>
683
685
  <span class="cline-any cline-neutral">&nbsp;</span>
684
686
  <span class="cline-any cline-neutral">&nbsp;</span>
685
687
  <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-no">&nbsp;</span>
687
- <span class="cline-any cline-no">&nbsp;</span>
688
- <span class="cline-any cline-no">&nbsp;</span>
688
+ <span class="cline-any cline-yes">22x</span>
689
+ <span class="cline-any cline-yes">22x</span>
690
+ <span class="cline-any cline-yes">22x</span>
689
691
  <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
691
- <span class="cline-any cline-no">&nbsp;</span>
692
+ <span class="cline-any cline-yes">22x</span>
693
+ <span class="cline-any cline-yes">22x</span>
692
694
  <span class="cline-any cline-neutral">&nbsp;</span>
693
695
  <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
696
+ <span class="cline-any cline-yes">22x</span>
695
697
  <span class="cline-any cline-no">&nbsp;</span>
696
698
  <span class="cline-any cline-neutral">&nbsp;</span>
697
699
  <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-no">&nbsp;</span>
699
- <span class="cline-any cline-no">&nbsp;</span>
700
+ <span class="cline-any cline-yes">22x</span>
701
+ <span class="cline-any cline-yes">22x</span>
700
702
  <span class="cline-any cline-neutral">&nbsp;</span>
701
703
  <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-no">&nbsp;</span>
704
+ <span class="cline-any cline-yes">49x</span>
703
705
  <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-no">&nbsp;</span>
705
- <span class="cline-any cline-no">&nbsp;</span>
706
+ <span class="cline-any cline-yes">49x</span>
707
+ <span class="cline-any cline-yes">49x</span>
706
708
  <span class="cline-any cline-neutral">&nbsp;</span>
707
709
  <span class="cline-any cline-neutral">&nbsp;</span>
708
710
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -711,26 +713,26 @@
711
713
  <span class="cline-any cline-neutral">&nbsp;</span>
712
714
  <span class="cline-any cline-neutral">&nbsp;</span>
713
715
  <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-no">&nbsp;</span>
716
+ <span class="cline-any cline-yes">49x</span>
715
717
  <span class="cline-any cline-no">&nbsp;</span>
716
718
  <span class="cline-any cline-no">&nbsp;</span>
717
719
  <span class="cline-any cline-no">&nbsp;</span>
718
720
  <span class="cline-any cline-neutral">&nbsp;</span>
719
721
  <span class="cline-any cline-neutral">&nbsp;</span>
720
722
  <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-no">&nbsp;</span>
723
+ <span class="cline-any cline-yes">49x</span>
722
724
  <span class="cline-any cline-no">&nbsp;</span>
723
725
  <span class="cline-any cline-no">&nbsp;</span>
724
726
  <span class="cline-any cline-neutral">&nbsp;</span>
725
727
  <span class="cline-any cline-neutral">&nbsp;</span>
726
728
  <span class="cline-any cline-neutral">&nbsp;</span>
727
729
  <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-no">&nbsp;</span>
730
+ <span class="cline-any cline-yes">49x</span>
729
731
  <span class="cline-any cline-neutral">&nbsp;</span>
730
- <span class="cline-any cline-no">&nbsp;</span>
731
- <span class="cline-any cline-no">&nbsp;</span>
732
+ <span class="cline-any cline-yes">49x</span>
733
+ <span class="cline-any cline-yes">49x</span>
732
734
  <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-no">&nbsp;</span>
735
+ <span class="cline-any cline-yes">49x</span>
734
736
  <span class="cline-any cline-neutral">&nbsp;</span>
735
737
  <span class="cline-any cline-neutral">&nbsp;</span>
736
738
  <span class="cline-any cline-no">&nbsp;</span>
@@ -785,7 +787,7 @@ import {
785
787
  foreignKeyStructure,
786
788
  hasTypeChanged,
787
789
  } from "./utils"
788
- import { FieldTypes, RelationshipTypes } from "../../../constants"
790
+ import { FieldTypes } from "../../../constants"
789
791
  import { makeExternalQuery } from "../../../integrations/base/query"
790
792
  import { handleRequest } from "../row/external"
791
793
  import { events, context } from "@budibase/backend-core"
@@ -799,11 +801,12 @@ import {
799
801
  FieldSchema,
800
802
  BBContext,
801
803
  TableRequest,
804
+ RelationshipTypes,
802
805
  } from "@budibase/types"
803
806
  import sdk from "../../../sdk"
804
807
  const { cloneDeep } = require("lodash/fp")
805
808
  &nbsp;
806
- async function <span class="fstat-no" title="function not covered" >makeTableRequest(</span>
809
+ async function makeTableRequest(
807
810
  datasource: Datasource,
808
811
  operation: Operation,
809
812
  table: Table,
@@ -811,7 +814,7 @@ async function <span class="fstat-no" title="function not covered" >makeTableReq
811
814
  oldTable?: Table,
812
815
  renamed?: RenameColumn
813
816
  ) {
814
- const json: QueryJson = <span class="cstat-no" title="statement not covered" >{</span>
817
+ const json: QueryJson = {
815
818
  endpoint: {
816
819
  datasourceId: datasource._id!,
817
820
  entityId: table._id!,
@@ -822,65 +825,65 @@ async function <span class="fstat-no" title="function not covered" >makeTableReq
822
825
  },
823
826
  table,
824
827
  }
825
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (oldTable) {</span>
828
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (oldTable) {
826
829
  <span class="cstat-no" title="statement not covered" > json.meta!.table = oldTable</span>
827
830
  }
828
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (renamed) {</span>
831
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (renamed) {
829
832
  <span class="cstat-no" title="statement not covered" > json.meta!.renamed = renamed</span>
830
833
  }
831
- <span class="cstat-no" title="statement not covered" > return makeExternalQuery(datasource, json)</span>
834
+ return makeExternalQuery(datasource, json)
832
835
  }
833
836
  &nbsp;
834
- function <span class="fstat-no" title="function not covered" >cleanupRelationships(</span>
837
+ function cleanupRelationships(
835
838
  table: Table,
836
839
  tables: Record&lt;string, Table&gt;,
837
840
  oldTable?: Table
838
841
  ) {
839
- const tableToIterate = <span class="cstat-no" title="statement not covered" >oldTable ? oldTable : table</span>
842
+ const tableToIterate = oldTable ? <span class="branch-0 cbranch-no" title="branch not covered" >oldTable : t</span>able
840
843
  // clean up relationships in couch table schemas
841
- <span class="cstat-no" title="statement not covered" > for (let [key, schema] of Object.entries(tableToIterate.schema)) {</span>
842
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
844
+ for (let [key, schema] of Object.entries(tableToIterate.schema)) {
845
+ if (
843
846
  schema.type === FieldTypes.LINK &amp;&amp;
844
- (!oldTable || table.schema[key] == null)
847
+ (!oldTable || <span class="branch-2 cbranch-no" title="branch not covered" >table.schema[key] == null</span>)
845
848
  ) {
846
- const relatedTable = <span class="cstat-no" title="statement not covered" >Object.values(tables).find(</span>
847
- <span class="fstat-no" title="function not covered" > table =&gt; <span class="cstat-no" title="statement not covered" >t</span>able._id === schema.tableId</span>
849
+ const relatedTable = Object.values(tables).find(
850
+ table =&gt; table._id === schema.tableId
848
851
  )
849
- const foreignKey = <span class="cstat-no" title="statement not covered" >schema.foreignKey</span>
850
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!relatedTable || !foreignKey) {</span>
852
+ const foreignKey = schema.foreignKey
853
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!relatedTable || !foreignKey) {
851
854
  <span class="cstat-no" title="statement not covered" > continue</span>
852
855
  }
853
- <span class="cstat-no" title="statement not covered" > for (let [relatedKey, relatedSchema] of Object.entries(</span>
856
+ for (let [relatedKey, relatedSchema] of Object.entries(
854
857
  relatedTable.schema
855
858
  )) {
856
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
859
+ if (
857
860
  relatedSchema.type === FieldTypes.LINK &amp;&amp;
858
861
  relatedSchema.fieldName === foreignKey
859
862
  ) {
860
- <span class="cstat-no" title="statement not covered" > delete relatedTable.schema[relatedKey]</span>
863
+ delete relatedTable.schema[relatedKey]
861
864
  }
862
865
  }
863
866
  }
864
867
  }
865
868
  }
866
869
  &nbsp;
867
- function <span class="fstat-no" title="function not covered" >getDatasourceId(t</span>able: Table) {
868
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!table) {</span>
870
+ function getDatasourceId(table: Table) {
871
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!table) {
869
872
  <span class="cstat-no" title="statement not covered" > throw "No table supplied"</span>
870
873
  }
871
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (table.sourceId) {</span>
872
- <span class="cstat-no" title="statement not covered" > return table.sourceId</span>
874
+ if (table.sourceId) {
875
+ return table.sourceId
873
876
  }
874
877
  <span class="cstat-no" title="statement not covered" > return breakExternalTableId(table._id).datasourceId</span>
875
878
  }
876
879
  &nbsp;
877
- function <span class="fstat-no" title="function not covered" >otherRelationshipType(t</span>ype?: string) {
878
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (type === RelationshipTypes.MANY_TO_MANY) {</span>
880
+ function otherRelationshipType(type?: string) {
881
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (type === RelationshipTypes.MANY_TO_MANY) {
879
882
  <span class="cstat-no" title="statement not covered" > return RelationshipTypes.MANY_TO_MANY</span>
880
883
  }
881
- <span class="cstat-no" title="statement not covered" > return type === RelationshipTypes.ONE_TO_MANY</span>
884
+ return type === RelationshipTypes.ONE_TO_MANY
882
885
  ? RelationshipTypes.MANY_TO_ONE
883
- : RelationshipTypes.ONE_TO_MANY
886
+ : <span class="branch-1 cbranch-no" title="branch not covered" >RelationshipTypes.ONE_TO_MANY</span>
884
887
  }
885
888
  &nbsp;
886
889
  function <span class="fstat-no" title="function not covered" >generateManyLinkSchema(</span>
@@ -919,106 +922,106 @@ function <span class="fstat-no" title="function not covered" >generateManyLinkSc
919
922
  <span class="cstat-no" title="statement not covered" > return junctionTable</span>
920
923
  }
921
924
  &nbsp;
922
- function <span class="fstat-no" title="function not covered" >generateLinkSchema(</span>
925
+ function generateLinkSchema(
923
926
  column: FieldSchema,
924
927
  table: Table,
925
928
  relatedTable: Table,
926
- type: string
929
+ type: RelationshipTypes
927
930
  ) {
928
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!table.primary || !relatedTable.primary) {</span>
931
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!table.primary || !relatedTable.primary) {
929
932
  <span class="cstat-no" title="statement not covered" > throw new Error("Unable to generate link schema, no primary keys")</span>
930
933
  }
931
- const isOneSide = <span class="cstat-no" title="statement not covered" >type === RelationshipTypes.ONE_TO_MANY</span>
932
- const primary = <span class="cstat-no" title="statement not covered" >isOneSide ? relatedTable.primary[0] : table.primary[0]</span>
934
+ const isOneSide = type === RelationshipTypes.ONE_TO_MANY
935
+ const primary = isOneSide ? relatedTable.primary[0] : <span class="branch-1 cbranch-no" title="branch not covered" >table.primary[0]</span>
933
936
  // generate a foreign key
934
- const foreignKey = <span class="cstat-no" title="statement not covered" >generateForeignKey(column, relatedTable)</span>
935
- <span class="cstat-no" title="statement not covered" > column.relationshipType = type</span>
936
- <span class="cstat-no" title="statement not covered" > column.foreignKey = isOneSide ? foreignKey : primary</span>
937
- <span class="cstat-no" title="statement not covered" > column.fieldName = isOneSide ? primary : foreignKey</span>
938
- <span class="cstat-no" title="statement not covered" > return foreignKey</span>
937
+ const foreignKey = generateForeignKey(column, relatedTable)
938
+ column.relationshipType = type
939
+ column.foreignKey = isOneSide ? foreignKey : <span class="branch-1 cbranch-no" title="branch not covered" >primary</span>
940
+ column.fieldName = isOneSide ? primary : <span class="branch-1 cbranch-no" title="branch not covered" >foreignKey</span>
941
+ return foreignKey
939
942
  }
940
943
  &nbsp;
941
- function <span class="fstat-no" title="function not covered" >generateRelatedSchema(</span>
944
+ function generateRelatedSchema(
942
945
  linkColumn: FieldSchema,
943
946
  table: Table,
944
947
  relatedTable: Table,
945
948
  columnName: string
946
949
  ) {
947
950
  // generate column for other table
948
- const relatedSchema = <span class="cstat-no" title="statement not covered" >cloneDeep(linkColumn)</span>
951
+ const relatedSchema = cloneDeep(linkColumn)
949
952
  // swap them from the main link
950
- <span class="cstat-no" title="statement not covered" > if (linkColumn.foreignKey) {</span>
951
- <span class="cstat-no" title="statement not covered" > relatedSchema.fieldName = linkColumn.foreignKey</span>
952
- <span class="cstat-no" title="statement not covered" > relatedSchema.foreignKey = linkColumn.fieldName</span>
953
+ if (linkColumn.foreignKey) {
954
+ relatedSchema.fieldName = linkColumn.foreignKey
955
+ relatedSchema.foreignKey = linkColumn.fieldName
953
956
  }
954
957
  // is many to many
955
- else {
958
+ else <span class="missing-if-branch" title="else path not taken" >E</span>{
956
959
  // don't need to copy through, already got it
957
960
  <span class="cstat-no" title="statement not covered" > relatedSchema.fieldName = linkColumn.throughTo</span>
958
961
  <span class="cstat-no" title="statement not covered" > relatedSchema.throughTo = linkColumn.throughFrom</span>
959
962
  <span class="cstat-no" title="statement not covered" > relatedSchema.throughFrom = linkColumn.throughTo</span>
960
963
  }
961
- <span class="cstat-no" title="statement not covered" > relatedSchema.relationshipType = otherRelationshipType(</span>
964
+ relatedSchema.relationshipType = otherRelationshipType(
962
965
  linkColumn.relationshipType
963
966
  )
964
- <span class="cstat-no" title="statement not covered" > relatedSchema.tableId = relatedTable._id</span>
965
- <span class="cstat-no" title="statement not covered" > relatedSchema.name = columnName</span>
966
- <span class="cstat-no" title="statement not covered" > table.schema[columnName] = relatedSchema</span>
967
+ relatedSchema.tableId = relatedTable._id
968
+ relatedSchema.name = columnName
969
+ table.schema[columnName] = relatedSchema
967
970
  }
968
971
  &nbsp;
969
- function <span class="fstat-no" title="function not covered" >isRelationshipSetup(c</span>olumn: FieldSchema) {
970
- <span class="cstat-no" title="statement not covered" > return column.foreignKey || column.through</span>
972
+ function isRelationshipSetup(column: FieldSchema) {
973
+ return column.foreignKey || column.through
971
974
  }
972
975
  &nbsp;
973
- export async function <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >save<span class="fstat-no" title="function not covered" >(</span></span>c</span>tx: BBContext) {
974
- const table: TableRequest = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
975
- const renamed = <span class="cstat-no" title="statement not covered" >table?._rename</span>
976
+ export async function save(ctx: BBContext) {
977
+ const table: TableRequest = ctx.request.body
978
+ const renamed = table?._rename
976
979
  // can't do this right now
977
- <span class="cstat-no" title="statement not covered" > delete table.rows</span>
978
- const datasourceId = <span class="cstat-no" title="statement not covered" >getDatasourceId(ctx.request.body)!</span>
980
+ delete table.rows
981
+ const datasourceId = getDatasourceId(ctx.request.body)!
979
982
  // table doesn't exist already, note that it is created
980
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!table._id) {</span>
981
- <span class="cstat-no" title="statement not covered" > table.created = true</span>
983
+ if (!table._id) {
984
+ table.created = true
982
985
  }
983
- let tableToSave: TableRequest = <span class="cstat-no" title="statement not covered" >{</span>
986
+ let tableToSave: TableRequest = {
984
987
  type: "table",
985
988
  _id: buildExternalTableId(datasourceId, table.name),
986
989
  ...table,
987
990
  }
988
991
  &nbsp;
989
992
  let oldTable
990
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.request.body &amp;&amp; ctx.request.body._id) {</span>
993
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.request.body &amp;&amp; ctx.request.body._id) {
991
994
  <span class="cstat-no" title="statement not covered" > oldTable = await sdk.tables.getTable(ctx.request.body._id)</span>
992
995
  }
993
996
  &nbsp;
994
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (hasTypeChanged(tableToSave, oldTable)) {</span>
997
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hasTypeChanged(tableToSave, oldTable)) {
995
998
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "A column type has changed.")</span>
996
999
  }
997
1000
  &nbsp;
998
- const db = <span class="cstat-no" title="statement not covered" >context.getAppDB()</span>
999
- const datasource = <span class="cstat-no" title="statement not covered" >await sdk.datasources.get(datasourceId)</span>
1000
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!datasource.entities) {</span>
1001
- <span class="cstat-no" title="statement not covered" > datasource.entities = {}</span>
1001
+ const db = context.getAppDB()
1002
+ const datasource = await sdk.datasources.get(datasourceId)
1003
+ if (!datasource.entities) {
1004
+ datasource.entities = {}
1002
1005
  }
1003
- const oldTables = <span class="cstat-no" title="statement not covered" >cloneDeep(datasource.entities)</span>
1004
- const tables: Record&lt;string, Table&gt; = <span class="cstat-no" title="statement not covered" >datasource.entities</span>
1006
+ const oldTables = cloneDeep(datasource.entities)
1007
+ const tables: Record&lt;string, Table&gt; = datasource.entities
1005
1008
  &nbsp;
1006
- const extraTablesToUpdate = <span class="cstat-no" title="statement not covered" >[]</span>
1009
+ const extraTablesToUpdate = []
1007
1010
  &nbsp;
1008
1011
  // check if relations need setup
1009
- <span class="cstat-no" title="statement not covered" > for (let schema of Object.values(tableToSave.schema)) {</span>
1010
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (schema.type !== FieldTypes.LINK || isRelationshipSetup(schema)) {</span>
1011
- <span class="cstat-no" title="statement not covered" > continue</span>
1012
+ for (let schema of Object.values(tableToSave.schema)) {
1013
+ if (schema.type !== FieldTypes.LINK || isRelationshipSetup(schema)) {
1014
+ continue
1012
1015
  }
1013
- const relatedTable = <span class="cstat-no" title="statement not covered" >Object.values(tables).find(</span>
1014
- <span class="fstat-no" title="function not covered" > table =&gt; <span class="cstat-no" title="statement not covered" >t</span>able._id === schema.tableId</span>
1016
+ const relatedTable = Object.values(tables).find(
1017
+ table =&gt; table._id === schema.tableId
1015
1018
  )
1016
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!relatedTable) {</span>
1019
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!relatedTable) {
1017
1020
  <span class="cstat-no" title="statement not covered" > continue</span>
1018
1021
  }
1019
- const relatedColumnName = <span class="cstat-no" title="statement not covered" >schema.fieldName!</span>
1020
- const relationType = <span class="cstat-no" title="statement not covered" >schema.relationshipType!</span>
1021
- <span class="cstat-no" title="statement not covered" > if (relationType === RelationshipTypes.MANY_TO_MANY) {</span>
1022
+ const relatedColumnName = schema.fieldName!
1023
+ const relationType = schema.relationshipType!
1024
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (relationType === RelationshipTypes.MANY_TO_MANY) {
1022
1025
  const junctionTable = <span class="cstat-no" title="statement not covered" >generateManyLinkSchema(</span>
1023
1026
  datasource,
1024
1027
  schema,
@@ -1032,33 +1035,33 @@ export async function <span class="cstat-no" title="statement not covered" ><spa
1032
1035
  <span class="cstat-no" title="statement not covered" > extraTablesToUpdate.push(junctionTable)</span>
1033
1036
  } else {
1034
1037
  const fkTable =
1035
- <span class="cstat-no" title="statement not covered" > relationType === RelationshipTypes.ONE_TO_MANY ? table : relatedTable</span>
1036
- const foreignKey = <span class="cstat-no" title="statement not covered" >generateLinkSchema(</span>
1038
+ relationType === RelationshipTypes.ONE_TO_MANY ? table : <span class="branch-1 cbranch-no" title="branch not covered" >relatedTable</span>
1039
+ const foreignKey = generateLinkSchema(
1037
1040
  schema,
1038
1041
  table,
1039
1042
  relatedTable,
1040
1043
  relationType
1041
1044
  )
1042
- <span class="cstat-no" title="statement not covered" > fkTable.schema[foreignKey] = foreignKeyStructure(foreignKey)</span>
1043
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fkTable.constrained == null) {</span>
1044
- <span class="cstat-no" title="statement not covered" > fkTable.constrained = []</span>
1045
+ fkTable.schema[foreignKey] = foreignKeyStructure(foreignKey)
1046
+ if (fkTable.constrained == null) {
1047
+ fkTable.constrained = []
1045
1048
  }
1046
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fkTable.constrained.indexOf(foreignKey) === -1) {</span>
1047
- <span class="cstat-no" title="statement not covered" > fkTable.constrained.push(foreignKey)</span>
1049
+ if (fkTable.constrained.indexOf(foreignKey) === -1) {
1050
+ fkTable.constrained.push(foreignKey)
1048
1051
  }
1049
1052
  // foreign key is in other table, need to save it to external
1050
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fkTable._id !== table._id) {</span>
1053
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (fkTable._id !== table._id) {
1051
1054
  <span class="cstat-no" title="statement not covered" > extraTablesToUpdate.push(fkTable)</span>
1052
1055
  }
1053
1056
  }
1054
- <span class="cstat-no" title="statement not covered" > generateRelatedSchema(schema, relatedTable, table, relatedColumnName)</span>
1055
- <span class="cstat-no" title="statement not covered" > schema.main = true</span>
1057
+ generateRelatedSchema(schema, relatedTable, table, relatedColumnName)
1058
+ schema.main = true
1056
1059
  }
1057
1060
  &nbsp;
1058
- <span class="cstat-no" title="statement not covered" > cleanupRelationships(tableToSave, tables, oldTable)</span>
1061
+ cleanupRelationships(tableToSave, tables, oldTable)
1059
1062
  &nbsp;
1060
- const operation = <span class="cstat-no" title="statement not covered" >oldTable ? Operation.UPDATE_TABLE : Operation.CREATE_TABLE</span>
1061
- <span class="cstat-no" title="statement not covered" > await makeTableRequest(</span>
1063
+ const operation = oldTable ? <span class="branch-0 cbranch-no" title="branch not covered" >Operation.UPDATE_TABLE </span>: Operation.CREATE_TABLE
1064
+ await makeTableRequest(
1062
1065
  datasource,
1063
1066
  operation,
1064
1067
  tableToSave,
@@ -1067,26 +1070,26 @@ export async function <span class="cstat-no" title="statement not covered" ><spa
1067
1070
  renamed
1068
1071
  )
1069
1072
  // update any extra tables (like foreign keys in other tables)
1070
- <span class="cstat-no" title="statement not covered" > for (let extraTable of extraTablesToUpdate) {</span>
1073
+ for (let extraTable of extraTablesToUpdate) {
1071
1074
  const oldExtraTable = <span class="cstat-no" title="statement not covered" >oldTables[extraTable.name]</span>
1072
1075
  let op = <span class="cstat-no" title="statement not covered" >oldExtraTable ? Operation.UPDATE_TABLE : Operation.CREATE_TABLE</span>
1073
1076
  <span class="cstat-no" title="statement not covered" > await makeTableRequest(datasource, op, extraTable, tables, oldExtraTable)</span>
1074
1077
  }
1075
1078
  &nbsp;
1076
1079
  // make sure the constrained list, all still exist
1077
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(tableToSave.constrained)) {</span>
1080
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(tableToSave.constrained)) {
1078
1081
  <span class="cstat-no" title="statement not covered" > tableToSave.constrained = tableToSave.constrained.filter(<span class="fstat-no" title="function not covered" >constraint =&gt;</span></span>
1079
1082
  <span class="cstat-no" title="statement not covered" > Object.keys(tableToSave.schema).includes(constraint)</span>
1080
1083
  )
1081
1084
  }
1082
1085
  &nbsp;
1083
1086
  // remove the rename prop
1084
- <span class="cstat-no" title="statement not covered" > delete tableToSave._rename</span>
1087
+ delete tableToSave._rename
1085
1088
  // store it into couch now for budibase reference
1086
- <span class="cstat-no" title="statement not covered" > datasource.entities[tableToSave.name] = tableToSave</span>
1087
- <span class="cstat-no" title="statement not covered" > await db.put(datasource)</span>
1089
+ datasource.entities[tableToSave.name] = tableToSave
1090
+ await db.put(datasource)
1088
1091
  &nbsp;
1089
- <span class="cstat-no" title="statement not covered" > return tableToSave</span>
1092
+ return tableToSave
1090
1093
  }
1091
1094
  &nbsp;
1092
1095
  export async function <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >destroy<span class="fstat-no" title="function not covered" >(</span></span>c</span>tx: BBContext) {
@@ -1138,7 +1141,7 @@ export async function <span class="cstat-no" title="statement not covered" ><spa
1138
1141
  <div class='footer quiet pad2 space-top1 center small'>
1139
1142
  Code coverage generated by
1140
1143
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1141
- at Tue Feb 14 2023 15:13:55 GMT+0000 (Coordinated Universal Time)
1144
+ at Tue Feb 14 2023 18:11:53 GMT+0000 (Coordinated Universal Time)
1142
1145
  </div>
1143
1146
  <script src="../../../../prettify.js"></script>
1144
1147
  <script>