@budibase/server 2.3.10 → 2.3.11-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 (549) 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.10df3878.js → index.a7877207.js} +146 -146
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +11930 -7194
  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 +38 -35
  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 +31 -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 +16 -16
  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 +21739 -14013
  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 +1 -1
  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/integrations/base/sql.js +10 -3
  465. package/dist/package.json +8 -6
  466. package/dist/sdk/app/backups/exports.js +8 -2
  467. package/dist/sdk/app/datasources/datasources.js +3 -0
  468. package/dist/tests/utilities/TestConfiguration.js +626 -0
  469. package/dist/tests/utilities/controllers.js +40 -0
  470. package/dist/tests/utilities/structures.js +234 -0
  471. package/dist/tsconfig.build.tsbuildinfo +1 -1
  472. package/dist/utilities/retry.js +30 -0
  473. package/jest-testcontainers-config.js +8 -0
  474. package/jest.config.ts +28 -11
  475. package/package.json +9 -7
  476. package/scripts/load/create-many-apps.js +24 -0
  477. package/scripts/load/create-many-rows.js +30 -0
  478. package/scripts/load/utils.js +66 -0
  479. package/specs/openapi.json +6 -6
  480. package/specs/openapi.yaml +3 -3
  481. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  482. package/src/api/controllers/query/index.ts +2 -0
  483. package/src/api/controllers/row/ExternalRequest.ts +6 -2
  484. package/src/api/controllers/row/external.ts +13 -1
  485. package/src/api/controllers/table/external.ts +3 -2
  486. package/src/api/routes/public/applications.ts +0 -1
  487. package/src/api/routes/public/tests/compare.spec.js +1 -1
  488. package/src/api/routes/public/tests/users.spec.js +1 -1
  489. package/src/api/routes/public/tests/utils.ts +25 -8
  490. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  491. package/src/api/routes/tests/analytics.spec.js +4 -1
  492. package/src/api/routes/tests/apikeys.spec.js +1 -1
  493. package/src/api/routes/tests/application.spec.ts +20 -6
  494. package/src/api/routes/tests/auth.spec.js +2 -2
  495. package/src/api/routes/tests/automation.spec.js +6 -2
  496. package/src/api/routes/tests/backup.spec.ts +4 -13
  497. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +11 -15
  498. package/src/api/routes/tests/component.spec.js +1 -1
  499. package/src/api/routes/tests/datasource.spec.ts +20 -3
  500. package/src/api/routes/tests/dev.spec.js +1 -1
  501. package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
  502. package/src/api/routes/tests/integration.spec.js +1 -1
  503. package/src/api/routes/tests/layout.spec.js +1 -1
  504. package/src/api/routes/tests/metadata.spec.js +1 -1
  505. package/src/api/routes/tests/misc.spec.js +1 -1
  506. package/src/api/routes/tests/permissions.spec.js +4 -1
  507. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
  508. package/src/api/routes/tests/role.spec.js +6 -1
  509. package/src/api/routes/tests/routing.spec.js +1 -1
  510. package/src/api/routes/tests/row.spec.js +11 -3
  511. package/src/api/routes/tests/screen.spec.js +1 -1
  512. package/src/api/routes/tests/static.spec.js +2 -1
  513. package/src/api/routes/tests/table.spec.js +1 -1
  514. package/src/api/routes/tests/templates.spec.js +1 -1
  515. package/src/api/routes/tests/user.spec.js +12 -12
  516. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  517. package/src/api/routes/tests/utilities/index.ts +5 -3
  518. package/src/api/routes/tests/view.spec.js +4 -1
  519. package/src/api/routes/tests/webhook.spec.js +11 -2
  520. package/src/app.ts +2 -1
  521. package/src/automations/tests/automation.spec.js +4 -4
  522. package/src/automations/tests/bash.spec.js +1 -1
  523. package/src/automations/tests/discord.spec.js +1 -1
  524. package/src/automations/tests/executeQuery.spec.js +2 -3
  525. package/src/automations/tests/executeScript.spec.js +1 -1
  526. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  527. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  528. package/src/automations/tests/serverLog.spec.js +1 -1
  529. package/src/automations/tests/updateRow.spec.js +1 -1
  530. package/src/automations/tests/zapier.spec.js +1 -1
  531. package/src/constants/index.ts +1 -23
  532. package/src/db/defaultData/datasource_bb_default.ts +6 -10
  533. package/src/db/linkedRows/LinkController.ts +2 -1
  534. package/src/db/tests/linkController.spec.js +4 -1
  535. package/src/db/tests/linkTests.spec.js +1 -1
  536. package/src/integration-test/postgres.spec.ts +752 -0
  537. package/src/integrations/base/sql.ts +15 -5
  538. package/src/integrations/oracle.ts +1 -1
  539. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  540. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  541. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  542. package/src/migrations/tests/index.spec.ts +13 -20
  543. package/src/sdk/app/backups/exports.ts +8 -2
  544. package/src/sdk/app/datasources/datasources.ts +3 -0
  545. package/src/tests/jestEnv.ts +2 -6
  546. package/src/tests/jestSetup.ts +8 -7
  547. package/src/tests/utilities/TestConfiguration.ts +126 -50
  548. package/src/tests/utilities/structures.ts +16 -2
  549. 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">92.52% </span>
26
+ <span class="strong">92.5% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>198/214</span>
28
+ <span class='fraction'>222/240</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">84.4% </span>
33
+ <span class="strong">85.21% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>92/109</span>
35
+ <span class='fraction'>98/115</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">92.85% </span>
40
+ <span class="strong">91.93% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>52/56</span>
42
+ <span class='fraction'>57/62</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.48% </span>
47
+ <span class="strong">92.46% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>197/213</span>
49
+ <span class='fraction'>221/239</span>
50
50
  </div>
51
51
 
52
52
 
@@ -712,18 +712,95 @@
712
712
  <a name='L647'></a><a href='#L647'>647</a>
713
713
  <a name='L648'></a><a href='#L648'>648</a>
714
714
  <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a>
772
+ <a name='L707'></a><a href='#L707'>707</a>
773
+ <a name='L708'></a><a href='#L708'>708</a>
774
+ <a name='L709'></a><a href='#L709'>709</a>
775
+ <a name='L710'></a><a href='#L710'>710</a>
776
+ <a name='L711'></a><a href='#L711'>711</a>
777
+ <a name='L712'></a><a href='#L712'>712</a>
778
+ <a name='L713'></a><a href='#L713'>713</a>
779
+ <a name='L714'></a><a href='#L714'>714</a>
780
+ <a name='L715'></a><a href='#L715'>715</a>
781
+ <a name='L716'></a><a href='#L716'>716</a>
782
+ <a name='L717'></a><a href='#L717'>717</a>
783
+ <a name='L718'></a><a href='#L718'>718</a>
784
+ <a name='L719'></a><a href='#L719'>719</a>
785
+ <a name='L720'></a><a href='#L720'>720</a>
786
+ <a name='L721'></a><a href='#L721'>721</a>
787
+ <a name='L722'></a><a href='#L722'>722</a>
788
+ <a name='L723'></a><a href='#L723'>723</a>
789
+ <a name='L724'></a><a href='#L724'>724</a>
790
+ <a name='L725'></a><a href='#L725'>725</a>
791
+ <a name='L726'></a><a href='#L726'>726</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">57x</span>
716
792
  <span class="cline-any cline-neutral">&nbsp;</span>
717
793
  <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-yes">55x</span>
719
- <span class="cline-any cline-yes">55x</span>
794
+ <span class="cline-any cline-yes">57x</span>
795
+ <span class="cline-any cline-yes">57x</span>
720
796
  <span class="cline-any cline-neutral">&nbsp;</span>
721
797
  <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-yes">55x</span>
798
+ <span class="cline-any cline-yes">57x</span>
723
799
  <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-yes">55x</span>
725
- <span class="cline-any cline-yes">55x</span>
726
- <span class="cline-any cline-yes">55x</span>
800
+ <span class="cline-any cline-yes">57x</span>
801
+ <span class="cline-any cline-yes">57x</span>
802
+ <span class="cline-any cline-yes">57x</span>
803
+ <span class="cline-any cline-yes">57x</span>
727
804
  <span class="cline-any cline-neutral">&nbsp;</span>
728
805
  <span class="cline-any cline-neutral">&nbsp;</span>
729
806
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -735,7 +812,7 @@
735
812
  <span class="cline-any cline-neutral">&nbsp;</span>
736
813
  <span class="cline-any cline-neutral">&nbsp;</span>
737
814
  <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-yes">55x</span>
815
+ <span class="cline-any cline-yes">57x</span>
739
816
  <span class="cline-any cline-neutral">&nbsp;</span>
740
817
  <span class="cline-any cline-neutral">&nbsp;</span>
741
818
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -746,19 +823,13 @@
746
823
  <span class="cline-any cline-neutral">&nbsp;</span>
747
824
  <span class="cline-any cline-neutral">&nbsp;</span>
748
825
  <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-yes">55x</span>
750
- <span class="cline-any cline-yes">55x</span>
751
- <span class="cline-any cline-yes">55x</span>
752
- <span class="cline-any cline-yes">55x</span>
753
- <span class="cline-any cline-yes">55x</span>
754
- <span class="cline-any cline-yes">55x</span>
755
- <span class="cline-any cline-yes">55x</span>
756
826
  <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-yes">55x</span>
758
- <span class="cline-any cline-yes">55x</span>
759
- <span class="cline-any cline-yes">55x</span>
760
- <span class="cline-any cline-yes">55x</span>
761
- <span class="cline-any cline-yes">55x</span>
827
+ <span class="cline-any cline-yes">57x</span>
828
+ <span class="cline-any cline-yes">57x</span>
829
+ <span class="cline-any cline-yes">57x</span>
830
+ <span class="cline-any cline-yes">57x</span>
831
+ <span class="cline-any cline-yes">57x</span>
832
+ <span class="cline-any cline-yes">57x</span>
762
833
  <span class="cline-any cline-neutral">&nbsp;</span>
763
834
  <span class="cline-any cline-neutral">&nbsp;</span>
764
835
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -766,6 +837,7 @@
766
837
  <span class="cline-any cline-neutral">&nbsp;</span>
767
838
  <span class="cline-any cline-neutral">&nbsp;</span>
768
839
  <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-yes">57x</span>
769
841
  <span class="cline-any cline-neutral">&nbsp;</span>
770
842
  <span class="cline-any cline-neutral">&nbsp;</span>
771
843
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -778,22 +850,51 @@
778
850
  <span class="cline-any cline-neutral">&nbsp;</span>
779
851
  <span class="cline-any cline-neutral">&nbsp;</span>
780
852
  <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-yes">53x</span>
782
853
  <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-yes">30x</span>
784
- <span class="cline-any cline-yes">30x</span>
785
854
  <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-yes">30x</span>
787
- <span class="cline-any cline-yes">30x</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-yes">55x</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-yes">32x</span>
873
+ <span class="cline-any cline-yes">32x</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-yes">32x</span>
876
+ <span class="cline-any cline-yes">32x</span>
788
877
  <span class="cline-any cline-neutral">&nbsp;</span>
789
878
  <span class="cline-any cline-yes">23x</span>
790
879
  <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-yes">53x</span>
792
- <span class="cline-any cline-yes">53x</span>
880
+ <span class="cline-any cline-yes">55x</span>
881
+ <span class="cline-any cline-yes">55x</span>
882
+ <span class="cline-any cline-yes">55x</span>
883
+ <span class="cline-any cline-yes">55x</span>
884
+ <span class="cline-any cline-neutral">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-yes">166x</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
889
  <span class="cline-any cline-neutral">&nbsp;</span>
794
890
  <span class="cline-any cline-neutral">&nbsp;</span>
795
891
  <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-yes">29x</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-yes">31x</span>
797
898
  <span class="cline-any cline-neutral">&nbsp;</span>
798
899
  <span class="cline-any cline-neutral">&nbsp;</span>
799
900
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -805,7 +906,7 @@
805
906
  <span class="cline-any cline-neutral">&nbsp;</span>
806
907
  <span class="cline-any cline-neutral">&nbsp;</span>
807
908
  <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-yes">380x</span>
909
+ <span class="cline-any cline-yes">242x</span>
809
910
  <span class="cline-any cline-neutral">&nbsp;</span>
810
911
  <span class="cline-any cline-neutral">&nbsp;</span>
811
912
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -822,18 +923,19 @@
822
923
  <span class="cline-any cline-neutral">&nbsp;</span>
823
924
  <span class="cline-any cline-neutral">&nbsp;</span>
824
925
  <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-yes">1071x</span>
826
- <span class="cline-any cline-yes">347x</span>
926
+ <span class="cline-any cline-yes">828x</span>
927
+ <span class="cline-any cline-yes">182x</span>
827
928
  <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-yes">1071x</span>
829
929
  <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-yes">1071x</span>
831
- <span class="cline-any cline-yes">461x</span>
832
- <span class="cline-any cline-yes">461x</span>
930
+ <span class="cline-any cline-yes">828x</span>
931
+ <span class="cline-any cline-yes">828x</span>
833
932
  <span class="cline-any cline-neutral">&nbsp;</span>
933
+ <span class="cline-any cline-yes">828x</span>
934
+ <span class="cline-any cline-yes">548x</span>
935
+ <span class="cline-any cline-yes">548x</span>
834
936
  <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-yes">610x</span>
836
937
  <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-yes">280x</span>
837
939
  <span class="cline-any cline-neutral">&nbsp;</span>
838
940
  <span class="cline-any cline-neutral">&nbsp;</span>
839
941
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -841,49 +943,76 @@
841
943
  <span class="cline-any cline-neutral">&nbsp;</span>
842
944
  <span class="cline-any cline-neutral">&nbsp;</span>
843
945
  <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-yes">276x</span>
845
- <span class="cline-any cline-yes">54x</span>
846
946
  <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-yes">276x</span>
848
- <span class="cline-any cline-yes">276x</span>
849
- <span class="cline-any cline-yes">276x</span>
947
+ <span class="cline-any cline-yes">111x</span>
948
+ <span class="cline-any cline-yes">111x</span>
949
+ <span class="cline-any cline-yes">105x</span>
850
950
  <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-yes">276x</span>
852
951
  <span class="cline-any cline-neutral">&nbsp;</span>
952
+ <span class="cline-any cline-yes">111x</span>
953
+ <span class="cline-any cline-yes">29x</span>
853
954
  <span class="cline-any cline-neutral">&nbsp;</span>
955
+ <span class="cline-any cline-yes">111x</span>
956
+ <span class="cline-any cline-yes">111x</span>
957
+ <span class="cline-any cline-yes">111x</span>
854
958
  <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-yes">51x</span>
959
+ <span class="cline-any cline-yes">111x</span>
960
+ <span class="cline-any cline-neutral">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-yes">53x</span>
856
964
  <span class="cline-any cline-no">&nbsp;</span>
857
965
  <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-yes">51x</span>
859
- <span class="cline-any cline-yes">30x</span>
966
+ <span class="cline-any cline-yes">53x</span>
967
+ <span class="cline-any cline-yes">32x</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-yes">53x</span>
970
+ <span class="cline-any cline-yes">220x</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-neutral">&nbsp;</span>
973
+ <span class="cline-any cline-neutral">&nbsp;</span>
974
+ <span class="cline-any cline-neutral">&nbsp;</span>
975
+ <span class="cline-any cline-yes">57x</span>
976
+ <span class="cline-any cline-yes">6x</span>
977
+ <span class="cline-any cline-yes">6x</span>
978
+ <span class="cline-any cline-neutral">&nbsp;</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-yes">57x</span>
981
+ <span class="cline-any cline-yes">6x</span>
982
+ <span class="cline-any cline-yes">6x</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
984
  <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-yes">51x</span>
862
- <span class="cline-any cline-yes">520x</span>
985
+ <span class="cline-any cline-yes">55x</span>
986
+ <span class="cline-any cline-no">&nbsp;</span>
987
+ <span class="cline-any cline-no">&nbsp;</span>
863
988
  <span class="cline-any cline-neutral">&nbsp;</span>
864
989
  <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-yes">55x</span>
991
+ <span class="cline-any cline-yes">6x</span>
992
+ <span class="cline-any cline-yes">6x</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
994
  <span class="cline-any cline-neutral">&nbsp;</span>
866
995
  <span class="cline-any cline-neutral">&nbsp;</span>
867
996
  <span class="cline-any cline-neutral">&nbsp;</span>
868
997
  <span class="cline-any cline-neutral">&nbsp;</span>
869
998
  <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-yes">1010x</span>
871
- <span class="cline-any cline-yes">1010x</span>
872
- <span class="cline-any cline-yes">1010x</span>
999
+ <span class="cline-any cline-yes">767x</span>
1000
+ <span class="cline-any cline-yes">767x</span>
1001
+ <span class="cline-any cline-yes">767x</span>
873
1002
  <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-yes">1010x</span>
875
- <span class="cline-any cline-yes">1010x</span>
876
- <span class="cline-any cline-yes">1010x</span>
877
- <span class="cline-any cline-yes">1010x</span>
878
- <span class="cline-any cline-yes">1010x</span>
1003
+ <span class="cline-any cline-yes">767x</span>
1004
+ <span class="cline-any cline-yes">767x</span>
1005
+ <span class="cline-any cline-yes">767x</span>
1006
+ <span class="cline-any cline-yes">767x</span>
1007
+ <span class="cline-any cline-yes">767x</span>
879
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
880
1009
  <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-yes">1010x</span>
882
- <span class="cline-any cline-yes">117x</span>
1010
+ <span class="cline-any cline-yes">767x</span>
1011
+ <span class="cline-any cline-yes">214x</span>
883
1012
  <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-yes">1010x</span>
885
- <span class="cline-any cline-yes">1010x</span>
886
- <span class="cline-any cline-yes">1007x</span>
1013
+ <span class="cline-any cline-yes">767x</span>
1014
+ <span class="cline-any cline-yes">767x</span>
1015
+ <span class="cline-any cline-yes">764x</span>
887
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
888
1017
  <span class="cline-any cline-neutral">&nbsp;</span>
889
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -897,14 +1026,14 @@
897
1026
  <span class="cline-any cline-neutral">&nbsp;</span>
898
1027
  <span class="cline-any cline-neutral">&nbsp;</span>
899
1028
  <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-yes">325x</span>
1029
+ <span class="cline-any cline-yes">160x</span>
901
1030
  <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-yes">325x</span>
903
- <span class="cline-any cline-yes">325x</span>
1031
+ <span class="cline-any cline-yes">160x</span>
1032
+ <span class="cline-any cline-yes">160x</span>
904
1033
  <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-yes">82x</span>
1034
+ <span class="cline-any cline-yes">146x</span>
906
1035
  <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-yes">325x</span>
1036
+ <span class="cline-any cline-yes">160x</span>
908
1037
  <span class="cline-any cline-neutral">&nbsp;</span>
909
1038
  <span class="cline-any cline-neutral">&nbsp;</span>
910
1039
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -912,23 +1041,24 @@
912
1041
  <span class="cline-any cline-neutral">&nbsp;</span>
913
1042
  <span class="cline-any cline-neutral">&nbsp;</span>
914
1043
  <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-yes">325x</span>
1044
+ <span class="cline-any cline-yes">160x</span>
916
1045
  <span class="cline-any cline-neutral">&nbsp;</span>
917
1046
  <span class="cline-any cline-neutral">&nbsp;</span>
918
1047
  <span class="cline-any cline-neutral">&nbsp;</span>
919
1048
  <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">325x</span>
921
- <span class="cline-any cline-yes">292x</span>
1049
+ <span class="cline-any cline-yes">160x</span>
1050
+ <span class="cline-any cline-yes">127x</span>
922
1051
  <span class="cline-any cline-neutral">&nbsp;</span>
923
1052
  <span class="cline-any cline-yes">33x</span>
924
1053
  <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-yes">325x</span>
1054
+ <span class="cline-any cline-yes">160x</span>
926
1055
  <span class="cline-any cline-yes">2x</span>
927
1056
  <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-yes">323x</span>
1057
+ <span class="cline-any cline-yes">158x</span>
1058
+ <span class="cline-any cline-neutral">&nbsp;</span>
1059
+ <span class="cline-any cline-yes">160x</span>
1060
+ <span class="cline-any cline-yes">160x</span>
929
1061
  <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-yes">325x</span>
931
- <span class="cline-any cline-yes">325x</span>
932
1062
  <span class="cline-any cline-neutral">&nbsp;</span>
933
1063
  <span class="cline-any cline-neutral">&nbsp;</span>
934
1064
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -944,6 +1074,15 @@
944
1074
  <span class="cline-any cline-neutral">&nbsp;</span>
945
1075
  <span class="cline-any cline-neutral">&nbsp;</span>
946
1076
  <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-yes">16x</span>
1079
+ <span class="cline-any cline-yes">16x</span>
1080
+ <span class="cline-any cline-yes">16x</span>
1081
+ <span class="cline-any cline-yes">16x</span>
1082
+ <span class="cline-any cline-yes">16x</span>
1083
+ <span class="cline-any cline-yes">16x</span>
1084
+ <span class="cline-any cline-yes">13x</span>
1085
+ <span class="cline-any cline-neutral">&nbsp;</span>
947
1086
  <span class="cline-any cline-yes">16x</span>
948
1087
  <span class="cline-any cline-yes">16x</span>
949
1088
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1007,18 +1146,21 @@
1007
1146
  <span class="cline-any cline-neutral">&nbsp;</span>
1008
1147
  <span class="cline-any cline-neutral">&nbsp;</span>
1009
1148
  <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-yes">237x</span>
1149
+ <span class="cline-any cline-yes">277x</span>
1150
+ <span class="cline-any cline-yes">277x</span>
1151
+ <span class="cline-any cline-neutral">&nbsp;</span>
1152
+ <span class="cline-any cline-neutral">&nbsp;</span>
1011
1153
  <span class="cline-any cline-neutral">&nbsp;</span>
1012
1154
  <span class="cline-any cline-neutral">&nbsp;</span>
1155
+ <span class="cline-any cline-yes">277x</span>
1013
1156
  <span class="cline-any cline-neutral">&nbsp;</span>
1014
1157
  <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-yes">237x</span>
1016
1158
  <span class="cline-any cline-neutral">&nbsp;</span>
1159
+ <span class="cline-any cline-yes">277x</span>
1160
+ <span class="cline-any cline-yes">277x</span>
1161
+ <span class="cline-any cline-yes">277x</span>
1017
1162
  <span class="cline-any cline-neutral">&nbsp;</span>
1018
1163
  <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-yes">237x</span>
1020
- <span class="cline-any cline-yes">237x</span>
1021
- <span class="cline-any cline-yes">237x</span>
1022
1164
  <span class="cline-any cline-neutral">&nbsp;</span>
1023
1165
  <span class="cline-any cline-neutral">&nbsp;</span>
1024
1166
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1026,11 +1168,14 @@
1026
1168
  <span class="cline-any cline-neutral">&nbsp;</span>
1027
1169
  <span class="cline-any cline-neutral">&nbsp;</span>
1028
1170
  <span class="cline-any cline-neutral">&nbsp;</span>
1171
+ <span class="cline-any cline-yes">277x</span>
1172
+ <span class="cline-any cline-yes">277x</span>
1029
1173
  <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-yes">237x</span>
1031
- <span class="cline-any cline-yes">237x</span>
1174
+ <span class="cline-any cline-yes">277x</span>
1032
1175
  <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-yes">237x</span>
1176
+ <span class="cline-any cline-neutral">&nbsp;</span>
1177
+ <span class="cline-any cline-neutral">&nbsp;</span>
1178
+ <span class="cline-any cline-yes">2423x</span>
1034
1179
  <span class="cline-any cline-neutral">&nbsp;</span>
1035
1180
  <span class="cline-any cline-neutral">&nbsp;</span>
1036
1181
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1042,6 +1187,11 @@
1042
1187
  <span class="cline-any cline-yes">4x</span>
1043
1188
  <span class="cline-any cline-yes">4x</span>
1044
1189
  <span class="cline-any cline-neutral">&nbsp;</span>
1190
+ <span class="cline-any cline-neutral">&nbsp;</span>
1191
+ <span class="cline-any cline-yes">4x</span>
1192
+ <span class="cline-any cline-yes">4x</span>
1193
+ <span class="cline-any cline-neutral">&nbsp;</span>
1194
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
1195
  <span class="cline-any cline-yes">4x</span>
1046
1196
  <span class="cline-any cline-neutral">&nbsp;</span>
1047
1197
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1057,19 +1207,19 @@
1057
1207
  <span class="cline-any cline-neutral">&nbsp;</span>
1058
1208
  <span class="cline-any cline-neutral">&nbsp;</span>
1059
1209
  <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-yes">2x</span>
1061
- <span class="cline-any cline-yes">2x</span>
1210
+ <span class="cline-any cline-yes">3x</span>
1211
+ <span class="cline-any cline-yes">3x</span>
1062
1212
  <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-yes">2x</span>
1064
- <span class="cline-any cline-yes">2x</span>
1213
+ <span class="cline-any cline-yes">3x</span>
1214
+ <span class="cline-any cline-yes">3x</span>
1065
1215
  <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-yes">2x</span>
1216
+ <span class="cline-any cline-yes">3x</span>
1067
1217
  <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-yes">2x</span>
1218
+ <span class="cline-any cline-yes">3x</span>
1069
1219
  <span class="cline-any cline-neutral">&nbsp;</span>
1070
1220
  <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-yes">2x</span>
1072
- <span class="cline-any cline-yes">2x</span>
1221
+ <span class="cline-any cline-yes">3x</span>
1222
+ <span class="cline-any cline-yes">3x</span>
1073
1223
  <span class="cline-any cline-neutral">&nbsp;</span>
1074
1224
  <span class="cline-any cline-neutral">&nbsp;</span>
1075
1225
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1077,35 +1227,35 @@
1077
1227
  <span class="cline-any cline-neutral">&nbsp;</span>
1078
1228
  <span class="cline-any cline-neutral">&nbsp;</span>
1079
1229
  <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-yes">288x</span>
1081
- <span class="cline-any cline-yes">288x</span>
1082
- <span class="cline-any cline-yes">288x</span>
1230
+ <span class="cline-any cline-yes">123x</span>
1231
+ <span class="cline-any cline-yes">123x</span>
1232
+ <span class="cline-any cline-yes">123x</span>
1083
1233
  <span class="cline-any cline-neutral">&nbsp;</span>
1084
1234
  <span class="cline-any cline-neutral">&nbsp;</span>
1085
1235
  <span class="cline-any cline-neutral">&nbsp;</span>
1086
1236
  <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-yes">288x</span>
1237
+ <span class="cline-any cline-yes">123x</span>
1088
1238
  <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-yes">288x</span>
1239
+ <span class="cline-any cline-yes">123x</span>
1090
1240
  <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-yes">288x</span>
1241
+ <span class="cline-any cline-yes">123x</span>
1092
1242
  <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-yes">288x</span>
1094
- <span class="cline-any cline-yes">288x</span>
1243
+ <span class="cline-any cline-yes">123x</span>
1244
+ <span class="cline-any cline-yes">123x</span>
1095
1245
  <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-yes">288x</span>
1246
+ <span class="cline-any cline-yes">123x</span>
1097
1247
  <span class="cline-any cline-neutral">&nbsp;</span>
1098
1248
  <span class="cline-any cline-neutral">&nbsp;</span>
1099
1249
  <span class="cline-any cline-neutral">&nbsp;</span>
1100
1250
  <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-yes">296x</span>
1251
+ <span class="cline-any cline-yes">128x</span>
1102
1252
  <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-yes">296x</span>
1104
- <span class="cline-any cline-yes">296x</span>
1253
+ <span class="cline-any cline-yes">128x</span>
1254
+ <span class="cline-any cline-yes">128x</span>
1105
1255
  <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-yes">296x</span>
1107
- <span class="cline-any cline-yes">296x</span>
1108
- <span class="cline-any cline-yes">296x</span>
1256
+ <span class="cline-any cline-yes">128x</span>
1257
+ <span class="cline-any cline-yes">128x</span>
1258
+ <span class="cline-any cline-yes">128x</span>
1109
1259
  <span class="cline-any cline-neutral">&nbsp;</span>
1110
1260
  <span class="cline-any cline-neutral">&nbsp;</span>
1111
1261
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1123,16 +1273,16 @@
1123
1273
  <span class="cline-any cline-neutral">&nbsp;</span>
1124
1274
  <span class="cline-any cline-neutral">&nbsp;</span>
1125
1275
  <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-yes">123x</span>
1127
- <span class="cline-any cline-yes">123x</span>
1128
- <span class="cline-any cline-yes">123x</span>
1276
+ <span class="cline-any cline-yes">169x</span>
1277
+ <span class="cline-any cline-yes">169x</span>
1278
+ <span class="cline-any cline-yes">169x</span>
1129
1279
  <span class="cline-any cline-neutral">&nbsp;</span>
1130
1280
  <span class="cline-any cline-neutral">&nbsp;</span>
1131
1281
  <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-yes">119x</span>
1282
+ <span class="cline-any cline-yes">165x</span>
1133
1283
  <span class="cline-any cline-yes">3x</span>
1134
1284
  <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-yes">119x</span>
1285
+ <span class="cline-any cline-yes">165x</span>
1136
1286
  <span class="cline-any cline-neutral">&nbsp;</span>
1137
1287
  <span class="cline-any cline-neutral">&nbsp;</span>
1138
1288
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1173,23 +1323,23 @@
1173
1323
  <span class="cline-any cline-neutral">&nbsp;</span>
1174
1324
  <span class="cline-any cline-neutral">&nbsp;</span>
1175
1325
  <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-yes">71x</span>
1326
+ <span class="cline-any cline-yes">163x</span>
1177
1327
  <span class="cline-any cline-no">&nbsp;</span>
1178
1328
  <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-yes">71x</span>
1180
- <span class="cline-any cline-yes">71x</span>
1181
- <span class="cline-any cline-yes">71x</span>
1329
+ <span class="cline-any cline-yes">163x</span>
1330
+ <span class="cline-any cline-yes">163x</span>
1331
+ <span class="cline-any cline-yes">163x</span>
1182
1332
  <span class="cline-any cline-neutral">&nbsp;</span>
1183
1333
  <span class="cline-any cline-neutral">&nbsp;</span>
1184
1334
  <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-yes">11x</span>
1335
+ <span class="cline-any cline-yes">12x</span>
1186
1336
  <span class="cline-any cline-neutral">&nbsp;</span>
1187
1337
  <span class="cline-any cline-neutral">&nbsp;</span>
1188
1338
  <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-yes">1x</span>
1339
+ <span class="cline-any cline-yes">5x</span>
1190
1340
  <span class="cline-any cline-yes">1x</span>
1191
1341
  <span class="cline-any cline-neutral">&nbsp;</span>
1192
- <span class="cline-any cline-yes">1x</span>
1342
+ <span class="cline-any cline-yes">5x</span>
1193
1343
  <span class="cline-any cline-neutral">&nbsp;</span>
1194
1344
  <span class="cline-any cline-neutral">&nbsp;</span>
1195
1345
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1227,14 +1377,14 @@
1227
1377
  <span class="cline-any cline-neutral">&nbsp;</span>
1228
1378
  <span class="cline-any cline-neutral">&nbsp;</span>
1229
1379
  <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-yes">26x</span>
1231
- <span class="cline-any cline-yes">26x</span>
1380
+ <span class="cline-any cline-yes">20x</span>
1381
+ <span class="cline-any cline-yes">20x</span>
1232
1382
  <span class="cline-any cline-no">&nbsp;</span>
1233
1383
  <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-yes">26x</span>
1384
+ <span class="cline-any cline-yes">20x</span>
1235
1385
  <span class="cline-any cline-neutral">&nbsp;</span>
1236
1386
  <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-yes">26x</span>
1387
+ <span class="cline-any cline-yes">20x</span>
1238
1388
  <span class="cline-any cline-neutral">&nbsp;</span>
1239
1389
  <span class="cline-any cline-neutral">&nbsp;</span>
1240
1390
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1254,20 +1404,22 @@
1254
1404
  <span class="cline-any cline-neutral">&nbsp;</span>
1255
1405
  <span class="cline-any cline-neutral">&nbsp;</span>
1256
1406
  <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-yes">8x</span>
1407
+ <span class="cline-any cline-yes">4x</span>
1258
1408
  <span class="cline-any cline-no">&nbsp;</span>
1259
1409
  <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-yes">8x</span>
1261
- <span class="cline-any cline-yes">8x</span>
1410
+ <span class="cline-any cline-yes">4x</span>
1411
+ <span class="cline-any cline-yes">4x</span>
1412
+ <span class="cline-any cline-neutral">&nbsp;</span>
1413
+ <span class="cline-any cline-neutral">&nbsp;</span>
1262
1414
  <span class="cline-any cline-neutral">&nbsp;</span>
1263
1415
  <span class="cline-any cline-neutral">&nbsp;</span>
1264
1416
  <span class="cline-any cline-neutral">&nbsp;</span>
1265
1417
  <span class="cline-any cline-neutral">&nbsp;</span>
1266
1418
  <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-yes">68x</span>
1268
- <span class="cline-any cline-yes">68x</span>
1269
- <span class="cline-any cline-yes">67x</span>
1270
- <span class="cline-any cline-yes">67x</span>
1419
+ <span class="cline-any cline-yes">63x</span>
1420
+ <span class="cline-any cline-yes">63x</span>
1421
+ <span class="cline-any cline-yes">62x</span>
1422
+ <span class="cline-any cline-yes">62x</span>
1271
1423
  <span class="cline-any cline-neutral">&nbsp;</span>
1272
1424
  <span class="cline-any cline-neutral">&nbsp;</span>
1273
1425
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1338,30 +1490,30 @@
1338
1490
  <span class="cline-any cline-neutral">&nbsp;</span>
1339
1491
  <span class="cline-any cline-neutral">&nbsp;</span>
1340
1492
  <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-yes">37x</span>
1493
+ <span class="cline-any cline-yes">18x</span>
1342
1494
  <span class="cline-any cline-no">&nbsp;</span>
1343
1495
  <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-yes">37x</span>
1345
- <span class="cline-any cline-yes">37x</span>
1496
+ <span class="cline-any cline-yes">18x</span>
1497
+ <span class="cline-any cline-yes">18x</span>
1346
1498
  <span class="cline-any cline-neutral">&nbsp;</span>
1347
1499
  <span class="cline-any cline-neutral">&nbsp;</span>
1348
1500
  <span class="cline-any cline-neutral">&nbsp;</span>
1349
1501
  <span class="cline-any cline-neutral">&nbsp;</span>
1350
1502
  <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-yes">27x</span>
1352
- <span class="cline-any cline-yes">27x</span>
1503
+ <span class="cline-any cline-yes">11x</span>
1504
+ <span class="cline-any cline-yes">11x</span>
1353
1505
  <span class="cline-any cline-neutral">&nbsp;</span>
1354
1506
  <span class="cline-any cline-neutral">&nbsp;</span>
1355
1507
  <span class="cline-any cline-neutral">&nbsp;</span>
1356
1508
  <span class="cline-any cline-neutral">&nbsp;</span>
1357
1509
  <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-yes">5x</span>
1359
- <span class="cline-any cline-yes">5x</span>
1510
+ <span class="cline-any cline-yes">2x</span>
1511
+ <span class="cline-any cline-yes">2x</span>
1360
1512
  <span class="cline-any cline-neutral">&nbsp;</span>
1361
1513
  <span class="cline-any cline-neutral">&nbsp;</span>
1362
1514
  <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-yes">55x</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { mocks } from "@budibase/backend-core/tests"
1515
+ <span class="cline-any cline-yes">57x</span>
1516
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { generator, mocks, structures } from "@budibase/backend-core/tests"
1365
1517
  &nbsp;
1366
1518
  // init the licensing mock
1367
1519
  import * as pro from "@budibase/pro"
@@ -1373,6 +1525,7 @@ mocks.licenses.useUnlimited()
1373
1525
  import { init as dbInit } from "../../db"
1374
1526
  dbInit()
1375
1527
  import env from "../../environment"
1528
+ import { env as coreEnv } from "@budibase/backend-core"
1376
1529
  import {
1377
1530
  basicTable,
1378
1531
  basicRow,
@@ -1401,17 +1554,27 @@ import { cleanup } from "../../utilities/fileSystem"
1401
1554
  import newid from "../../db/newid"
1402
1555
  import { generateUserMetadataID } from "../../db/utils"
1403
1556
  import { startup } from "../../startup"
1404
- const supertest = require("supertest")
1405
- &nbsp;
1406
- const GLOBAL_USER_ID = "us_uuid1"
1407
- const EMAIL = "babs@babs.com"
1408
- const FIRSTNAME = "Barbara"
1409
- const LASTNAME = "Barbington"
1410
- const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306"
1557
+ import supertest from "supertest"
1558
+ import {
1559
+ AuthToken,
1560
+ Database,
1561
+ Datasource,
1562
+ Row,
1563
+ SourceName,
1564
+ Table,
1565
+ } from "@budibase/types"
1566
+ &nbsp;
1567
+ type DefaultUserValues = {
1568
+ globalUserId: string
1569
+ email: string
1570
+ firstName: string
1571
+ lastName: string
1572
+ csrfToken: string
1573
+ }
1411
1574
  &nbsp;
1412
1575
  class TestConfiguration {
1413
1576
  server: any
1414
- request: any
1577
+ request: supertest.SuperTest&lt;supertest.Test&gt; | undefined
1415
1578
  started: boolean
1416
1579
  appId: string | null
1417
1580
  allApps: any[]
@@ -1425,6 +1588,8 @@ class TestConfiguration {
1425
1588
  linkedTable: any
1426
1589
  automation: any
1427
1590
  datasource: any
1591
+ tenantId: string | null
1592
+ defaultUserValues: DefaultUserValues
1428
1593
  &nbsp;
1429
1594
  constructor(openServer = true) {
1430
1595
  if (openServer) {
@@ -1439,6 +1604,18 @@ class TestConfiguration {
1439
1604
  }
1440
1605
  this.appId = null
1441
1606
  this.allApps = []
1607
+ this.tenantId = null
1608
+ this.defaultUserValues = this.populateDefaultUserValues()
1609
+ }
1610
+ &nbsp;
1611
+ populateDefaultUserValues(): DefaultUserValues {
1612
+ return {
1613
+ globalUserId: `us_${newid()}`,
1614
+ email: generator.email(),
1615
+ firstName: generator.first(),
1616
+ lastName: generator.last(),
1617
+ csrfToken: generator.hash(),
1618
+ }
1442
1619
  }
1443
1620
  &nbsp;
1444
1621
  getRequest() {
@@ -1463,10 +1640,10 @@ class TestConfiguration {
1463
1640
  &nbsp;
1464
1641
  getUserDetails() {
1465
1642
  return {
1466
- globalId: GLOBAL_USER_ID,
1467
- email: EMAIL,
1468
- firstName: FIRSTNAME,
1469
- lastName: LASTNAME,
1643
+ globalId: this.defaultUserValues.globalUserId,
1644
+ email: this.defaultUserValues.email,
1645
+ firstName: this.defaultUserValues.firstName,
1646
+ lastName: this.defaultUserValues.lastName,
1470
1647
  }
1471
1648
  }
1472
1649
  &nbsp;
@@ -1474,7 +1651,9 @@ class TestConfiguration {
1474
1651
  if (!appId) {
1475
1652
  appId = this.appId
1476
1653
  }
1477
- return tenancy.doInTenant(TENANT_ID, () =&gt; {
1654
+ &nbsp;
1655
+ const tenant = this.getTenantId()
1656
+ return tenancy.doInTenant(tenant, () =&gt; {
1478
1657
  // check if already in a context
1479
1658
  if (context.getAppId() == null &amp;&amp; appId !== null) {
1480
1659
  return context.doInAppContext(appId, async () =&gt; {
@@ -1490,6 +1669,11 @@ class TestConfiguration {
1490
1669
  &nbsp;
1491
1670
  // use a new id as the name to avoid name collisions
1492
1671
  async init(appName = newid()) {
1672
+ this.defaultUserValues = this.populateDefaultUserValues()
1673
+ if (context.isMultiTenant()) {
1674
+ this.tenantId = structures.tenant.id()
1675
+ }
1676
+ &nbsp;
1493
1677
  if (!this.started) {
1494
1678
  await startup()
1495
1679
  }
@@ -1511,10 +1695,31 @@ class TestConfiguration {
1511
1695
  cleanup(this.allApps.map(app =&gt; app.appId))
1512
1696
  }
1513
1697
  }
1698
+ &nbsp;
1699
+ // MODES
1700
+ #setMultiTenancy = (value: boolean) =&gt; {
1701
+ env._set("MULTI_TENANCY", value)
1702
+ coreEnv._set("MULTI_TENANCY", value)
1703
+ }
1704
+ &nbsp;
1705
+ #setSelfHosted = (value: boolean) =&gt; {
1706
+ env._set("SELF_HOSTED", value)
1707
+ coreEnv._set("SELF_HOSTED", value)
1708
+ }
1709
+ &nbsp;
1710
+ modeCloud = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
1711
+ <span class="cstat-no" title="statement not covered" > this.#setSelfHosted(false)</span>
1712
+ <span class="cstat-no" title="statement not covered" > this.#setMultiTenancy(true)</span>
1713
+ }
1714
+ &nbsp;
1715
+ modeSelf = () =&gt; {
1716
+ this.#setSelfHosted(true)
1717
+ this.#setMultiTenancy(false)
1718
+ }
1514
1719
  &nbsp;
1515
1720
  // UTILS
1516
1721
  &nbsp;
1517
- async _req(body: any, params: any, controlFunc: any) {
1722
+ _req(body: any, params: any, controlFunc: any) {
1518
1723
  // create a fake request ctx
1519
1724
  const request: any = {}
1520
1725
  const appId = this.appId
@@ -1522,7 +1727,7 @@ class TestConfiguration {
1522
1727
  // fake cookies, we don't need them
1523
1728
  request.cookies = { set: <span class="fstat-no" title="function not covered" >() =&gt; {</span>}, get: <span class="fstat-no" title="function not covered" >() =&gt; {</span>} }
1524
1729
  request.config = { jwtSecret: env.JWT_SECRET }
1525
- request.user = { appId, tenantId: TENANT_ID }
1730
+ request.user = { appId, tenantId: this.getTenantId() }
1526
1731
  request.query = {}
1527
1732
  request.request = {
1528
1733
  body,
@@ -1538,15 +1743,15 @@ class TestConfiguration {
1538
1743
  &nbsp;
1539
1744
  // USER / AUTH
1540
1745
  async globalUser({
1541
- id = GLOBAL_USER_ID,
1542
- firstName = FIRSTNAME,
1543
- lastName = LASTNAME,
1746
+ id = this.defaultUserValues.globalUserId,
1747
+ firstName = this.defaultUserValues.firstName,
1748
+ lastName = this.defaultUserValues.lastName,
1544
1749
  builder = true,
1545
1750
  admin = false,
1546
- email = EMAIL,
1751
+ email = this.defaultUserValues.email,
1547
1752
  roles,
1548
1753
  }: any = {}) {
1549
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) =&gt; {
1754
+ return tenancy.doWithGlobalDB(this.getTenantId(), async (db: Database) =&gt; {
1550
1755
  let existing
1551
1756
  try {
1552
1757
  existing = await db.get(id)
@@ -1557,14 +1762,14 @@ class TestConfiguration {
1557
1762
  _id: id,
1558
1763
  ...existing,
1559
1764
  roles: roles || {},
1560
- tenantId: TENANT_ID,
1765
+ tenantId: this.getTenantId(),
1561
1766
  firstName,
1562
1767
  lastName,
1563
1768
  }
1564
1769
  await sessions.createASession(id, {
1565
1770
  sessionId: "sessionid",
1566
- tenantId: TENANT_ID,
1567
- csrfToken: CSRF_TOKEN,
1771
+ tenantId: this.getTenantId(),
1772
+ csrfToken: this.defaultUserValues.csrfToken,
1568
1773
  })
1569
1774
  if (builder) {
1570
1775
  user.builder = { global: true }
@@ -1578,21 +1783,31 @@ class TestConfiguration {
1578
1783
  }
1579
1784
  const resp = await db.put(user)
1580
1785
  return {
1581
- _rev: resp._rev,
1786
+ _rev: resp.rev,
1582
1787
  ...user,
1583
1788
  }
1584
1789
  })
1585
1790
  }
1586
1791
  &nbsp;
1587
1792
  async createUser(
1588
- id = null,
1589
- firstName = FIRSTNAME,
1590
- lastName = LASTNAME,
1591
- email = EMAIL,
1592
- builder = true,
1593
- admin = false,
1594
- roles = {}
1793
+ user: {
1794
+ id?: string
1795
+ firstName?: string
1796
+ lastName?: string
1797
+ email?: string
1798
+ builder?: boolean
1799
+ admin?: boolean
1800
+ roles?: any
1801
+ } = {}
1595
1802
  ) {
1803
+ let { id, firstName, lastName, email, builder, admin, roles } = user
1804
+ firstName = firstName || this.defaultUserValues.firstName
1805
+ lastName = lastName || this.defaultUserValues.lastName
1806
+ email = email || this.defaultUserValues.email
1807
+ roles = roles || {}
1808
+ if (builder == null) {
1809
+ builder = true
1810
+ }
1596
1811
  const globalId = !id ? `us_${Math.random()}` : `us_${id}`
1597
1812
  const resp = await this.globalUser({
1598
1813
  id: globalId,
@@ -1627,13 +1842,13 @@ class TestConfiguration {
1627
1842
  }
1628
1843
  await sessions.createASession(userId, {
1629
1844
  sessionId: "sessionid",
1630
- tenantId: TENANT_ID,
1845
+ tenantId: this.getTenantId(),
1631
1846
  })
1632
1847
  // have to fake this
1633
1848
  const authObj = {
1634
1849
  userId,
1635
1850
  sessionId: "sessionid",
1636
- tenantId: TENANT_ID,
1851
+ tenantId: this.getTenantId(),
1637
1852
  }
1638
1853
  const app = {
1639
1854
  roleId: roleId,
@@ -1656,10 +1871,11 @@ class TestConfiguration {
1656
1871
  }
1657
1872
  &nbsp;
1658
1873
  defaultHeaders(extras = {}) {
1659
- const authObj = {
1660
- userId: GLOBAL_USER_ID,
1874
+ const tenantId = this.getTenantId()
1875
+ const authObj: AuthToken = {
1876
+ userId: this.defaultUserValues.globalUserId,
1661
1877
  sessionId: "sessionid",
1662
- tenantId: TENANT_ID,
1878
+ tenantId,
1663
1879
  }
1664
1880
  const app = {
1665
1881
  roleId: roles.BUILTIN_ROLE_IDS.ADMIN,
@@ -1673,14 +1889,19 @@ class TestConfiguration {
1673
1889
  `${constants.Cookie.Auth}=${authToken}`,
1674
1890
  `${constants.Cookie.CurrentApp}=${appToken}`,
1675
1891
  ],
1676
- [constants.Header.CSRF_TOKEN]: CSRF_TOKEN,
1892
+ [constants.Header.CSRF_TOKEN]: this.defaultUserValues.csrfToken,
1677
1893
  ...extras,
1678
1894
  }
1895
+ &nbsp;
1679
1896
  if (this.appId) {
1680
1897
  headers[constants.Header.APP_ID] = this.appId
1681
1898
  }
1682
1899
  return headers
1683
1900
  }
1901
+ &nbsp;
1902
+ getTenantId() {
1903
+ return this.tenantId || TENANT_ID
1904
+ }
1684
1905
  &nbsp;
1685
1906
  publicHeaders({ prodApp = true } = {}) {
1686
1907
  const appId = prodApp ? this.prodAppId : this.appId
@@ -1691,11 +1912,16 @@ class TestConfiguration {
1691
1912
  if (appId) {
1692
1913
  headers[constants.Header.APP_ID] = appId
1693
1914
  }
1915
+ &nbsp;
1916
+ if (this.tenantId) {
1917
+ headers[constants.Header.TENANT_ID] = this.tenantId
1918
+ }
1919
+ &nbsp;
1694
1920
  return headers
1695
1921
  }
1696
1922
  &nbsp;
1697
1923
  async roleHeaders({
1698
- email = EMAIL,
1924
+ email = this.defaultUserValues.email,
1699
1925
  roleId = <span class="branch-0 cbranch-no" title="branch not covered" >roles.BUILTIN_ROLE_IDS.ADMIN,</span>
1700
1926
  builder = false,
1701
1927
  prodApp = true,
@@ -1705,8 +1931,8 @@ class TestConfiguration {
1705
1931
  &nbsp;
1706
1932
  // API
1707
1933
  &nbsp;
1708
- async generateApiKey(userId = GLOBAL_USER_ID) {
1709
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) =&gt; {
1934
+ async generateApiKey(userId = this.defaultUserValues.globalUserId) {
1935
+ return tenancy.doWithGlobalDB(this.getTenantId(), async (db: any) =&gt; {
1710
1936
  const id = dbCore.generateDevInfoID(userId)
1711
1937
  let devInfo
1712
1938
  try {
@@ -1715,7 +1941,7 @@ class TestConfiguration {
1715
1941
  devInfo = { _id: id, userId }
1716
1942
  }
1717
1943
  devInfo.apiKey = encryption.encrypt(
1718
- `${TENANT_ID}${dbCore.SEPARATOR}${newid()}`
1944
+ `${this.getTenantId()}${dbCore.SEPARATOR}${newid()}`
1719
1945
  )
1720
1946
  await db.put(devInfo)
1721
1947
  return devInfo.apiKey
@@ -1771,13 +1997,13 @@ class TestConfiguration {
1771
1997
  &nbsp;
1772
1998
  // TABLE
1773
1999
  &nbsp;
1774
- async updateTable(config?: any) {
2000
+ async updateTable(config?: any): Promise&lt;Table&gt; {
1775
2001
  config = config || basicTable()
1776
2002
  this.table = await this._req(config, null, controllers.table.save)
1777
2003
  return this.table
1778
2004
  }
1779
2005
  &nbsp;
1780
- async createTable(config?: any) {
2006
+ async createTable(config?: Table) {
1781
2007
  if (config != null &amp;&amp; config._id) {
1782
2008
  delete config._id
1783
2009
  }
@@ -1821,7 +2047,7 @@ class TestConfiguration {
1821
2047
  &nbsp;
1822
2048
  // ROW
1823
2049
  &nbsp;
1824
- async createRow(config: any = null) {
2050
+ async createRow(config?: Row): Promise&lt;Row&gt; {
1825
2051
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.table) {
1826
2052
  <span class="cstat-no" title="statement not covered" > throw "Test requires table to be configured."</span>
1827
2053
  }
@@ -1830,7 +2056,7 @@ class TestConfiguration {
1830
2056
  return this._req(config, { tableId }, controllers.row.save)
1831
2057
  }
1832
2058
  &nbsp;
1833
- async getRow(tableId: string, rowId: string) {
2059
+ async getRow(tableId: string, rowId: string): Promise&lt;Row&gt; {
1834
2060
  return this._req(null, { tableId, rowId }, controllers.row.find)
1835
2061
  }
1836
2062
  &nbsp;
@@ -1912,7 +2138,9 @@ class TestConfiguration {
1912
2138
  &nbsp;
1913
2139
  // DATASOURCE
1914
2140
  &nbsp;
1915
- async createDatasource(config?: any) {
2141
+ async createDatasource(config?: {
2142
+ datasource: Datasource
2143
+ }): Promise&lt;Datasource&gt; {
1916
2144
  config = config || basicDatasource()
1917
2145
  const response = await this._req(config, null, controllers.datasource.save)
1918
2146
  this.datasource = response.datasource
@@ -1933,7 +2161,7 @@ class TestConfiguration {
1933
2161
  return this.createDatasource({
1934
2162
  datasource: {
1935
2163
  ...basicDatasource().datasource,
1936
- source: "REST",
2164
+ source: SourceName.REST,
1937
2165
  config: cfg || {},
1938
2166
  },
1939
2167
  })
@@ -1942,7 +2170,7 @@ class TestConfiguration {
1942
2170
  async dynamicVariableDatasource() {
1943
2171
  let datasource = await this.restDatasource()
1944
2172
  const basedOnQuery = await this.createQuery({
1945
- ...basicQuery(datasource._id),
2173
+ ...basicQuery(datasource._id!),
1946
2174
  fields: {
1947
2175
  path: "www.google.com",
1948
2176
  },
@@ -1970,7 +2198,7 @@ class TestConfiguration {
1970
2198
  datasource: any,
1971
2199
  fields: any,
1972
2200
  params: any,
1973
- verb: string
2201
+ verb?: string
1974
2202
  ) {
1975
2203
  return request
1976
2204
  .post(`/api/queries/preview`)
@@ -2017,7 +2245,7 @@ export = TestConfiguration
2017
2245
  <div class='footer quiet pad2 space-top1 center small'>
2018
2246
  Code coverage generated by
2019
2247
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2020
- at Fri Feb 10 2023 15:52:40 GMT+0000 (Coordinated Universal Time)
2248
+ at Fri Feb 10 2023 19:13:10 GMT+0000 (Coordinated Universal Time)
2021
2249
  </div>
2022
2250
  <script src="../../../prettify.js"></script>
2023
2251
  <script>