@budibase/server 2.3.1 → 2.3.2-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.3dd03883.css → index.584d49b4.css} +1 -1
  3. package/builder/assets/{index.5dbe1f07.js → index.f9a5e06c.js} +207 -207
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +8468 -4046
  6. package/coverage/coverage-final.json +153 -70
  7. package/coverage/lcov-report/index.html +332 -122
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +114 -114
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +25 -25
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +15 -15
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +17 -17
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +12 -12
  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 +70 -70
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +10 -10
  21. package/coverage/lcov-report/src/api/controllers/index.html +35 -35
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +11 -11
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +22 -22
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +1 -1
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +1 -1
  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 +8 -8
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +1 -1
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +1 -1
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +1 -1
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +1 -1
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
  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 +1 -1
  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 +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
  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 +1 -1
  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 +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
  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 +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
  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 +1 -1
  67. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +13 -13
  68. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
  69. package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
  70. package/coverage/lcov-report/src/api/controllers/routing.ts.html +1 -1
  71. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +1 -1
  72. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +1 -1
  73. package/coverage/lcov-report/src/api/controllers/row/index.html +5 -5
  74. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +16 -16
  75. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +16 -16
  76. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
  77. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +16 -16
  78. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +15 -15
  79. package/coverage/lcov-report/src/api/controllers/screen.ts.html +21 -21
  80. package/coverage/lcov-report/src/api/controllers/script.ts.html +1 -1
  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 +1 -1
  83. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +43 -43
  84. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/table/index.html +20 -20
  86. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +18 -18
  87. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +49 -49
  88. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +34 -34
  89. package/coverage/lcov-report/src/api/controllers/templates.ts.html +1 -1
  90. package/coverage/lcov-report/src/api/controllers/user.ts.html +15 -15
  91. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +1 -1
  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 +1 -1
  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 +1 -1
  97. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +1 -1
  98. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +13 -13
  99. package/coverage/lcov-report/src/api/index.html +1 -1
  100. package/coverage/lcov-report/src/api/index.ts.html +5 -5
  101. package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
  102. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
  104. package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
  105. package/coverage/lcov-report/src/api/routes/automation.ts.html +1 -1
  106. package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
  107. package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
  108. package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
  109. package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
  110. package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
  111. package/coverage/lcov-report/src/api/routes/dev.ts.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/index.ts.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/integration.ts.html +1 -1
  115. package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
  116. package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
  117. package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/permission.ts.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +2 -5
  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 +1 -1
  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 +1 -1
  125. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
  127. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
  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 +38 -8
  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 +1 -1
  132. package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
  133. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
  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 +1 -1
  136. package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/row.ts.html +1 -1
  139. package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
  140. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  141. package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
  142. package/coverage/lcov-report/src/api/routes/table.ts.html +1 -1
  143. package/coverage/lcov-report/src/api/routes/templates.ts.html +1 -1
  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/index.html +521 -0
  155. package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +238 -0
  156. package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +670 -0
  157. package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +259 -0
  158. package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +280 -0
  159. package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +358 -0
  160. package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +484 -0
  161. package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +622 -0
  162. package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +1696 -0
  163. package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +478 -0
  164. package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +430 -0
  165. package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +1804 -0
  166. package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +391 -0
  167. package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +541 -0
  168. package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +991 -0
  169. package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +154 -0
  170. package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +688 -0
  171. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +110 -41
  172. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +19 -19
  173. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +11 -5
  174. package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +1342 -0
  175. package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +484 -0
  176. package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
  177. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  178. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +1 -1
  179. package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
  180. package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
  181. package/coverage/lcov-report/src/app.ts.html +6 -3
  182. package/coverage/lcov-report/src/automations/actions.ts.html +1 -1
  183. package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
  184. package/coverage/lcov-report/src/automations/bullboard.ts.html +2 -2
  185. package/coverage/lcov-report/src/automations/index.html +27 -27
  186. package/coverage/lcov-report/src/automations/index.ts.html +5 -5
  187. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  188. package/coverage/lcov-report/src/automations/logging/index.ts.html +7 -7
  189. package/coverage/lcov-report/src/automations/steps/bash.ts.html +1 -1
  190. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
  191. package/coverage/lcov-report/src/automations/steps/delay.ts.html +1 -1
  192. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
  193. package/coverage/lcov-report/src/automations/steps/discord.ts.html +1 -1
  194. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
  195. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
  196. package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
  197. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  198. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
  199. package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
  200. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
  201. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
  202. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
  203. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
  204. package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
  205. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
  206. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  207. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
  208. package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +337 -0
  209. package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +187 -0
  210. package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +223 -0
  211. package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +133 -0
  212. package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +250 -0
  213. package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +166 -0
  214. package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +229 -0
  215. package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +229 -0
  216. package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +232 -0
  217. package/coverage/lcov-report/src/automations/tests/index.html +341 -0
  218. package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +220 -0
  219. package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +202 -0
  220. package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +436 -0
  221. package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +298 -0
  222. package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +151 -0
  223. package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +217 -0
  224. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  225. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  226. package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +166 -0
  227. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
  228. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
  229. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  230. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +1 -1
  231. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
  232. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
  233. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
  234. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
  235. package/coverage/lcov-report/src/automations/triggers.ts.html +24 -24
  236. package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +280 -0
  237. package/coverage/lcov-report/src/automations/unitTests/index.html +116 -0
  238. package/coverage/lcov-report/src/automations/utils.ts.html +38 -38
  239. package/coverage/lcov-report/src/constants/index.html +1 -1
  240. package/coverage/lcov-report/src/constants/index.ts.html +2 -2
  241. package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
  242. package/coverage/lcov-report/src/constants/screens.ts.html +3 -3
  243. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
  244. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
  245. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
  246. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  247. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
  248. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
  249. package/coverage/lcov-report/src/db/dynamoClient.ts.html +1 -1
  250. package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
  251. package/coverage/lcov-report/src/db/index.html +16 -16
  252. package/coverage/lcov-report/src/db/index.ts.html +13 -13
  253. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +12 -12
  254. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
  255. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  256. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
  257. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +6 -6
  258. package/coverage/lcov-report/src/db/newid.ts.html +3 -3
  259. package/coverage/lcov-report/src/db/tests/index.html +131 -0
  260. package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +793 -0
  261. package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +277 -0
  262. package/coverage/lcov-report/src/db/utils.ts.html +33 -33
  263. package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
  264. package/coverage/lcov-report/src/definitions/index.html +1 -1
  265. package/coverage/lcov-report/src/environment.ts.html +19 -19
  266. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
  267. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
  268. package/coverage/lcov-report/src/events/index.html +1 -1
  269. package/coverage/lcov-report/src/events/index.ts.html +1 -1
  270. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  271. package/coverage/lcov-report/src/index.html +16 -16
  272. package/coverage/lcov-report/src/index.ts.html +1 -1
  273. package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
  274. package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
  275. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  276. package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
  277. package/coverage/lcov-report/src/integrations/base/sql.ts.html +1 -1
  278. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +1 -1
  279. package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
  280. package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
  281. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
  282. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
  283. package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
  284. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1 -1
  285. package/coverage/lcov-report/src/integrations/index.html +1 -1
  286. package/coverage/lcov-report/src/integrations/index.ts.html +10 -10
  287. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
  288. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
  289. package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
  290. package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
  291. package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
  292. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  293. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  294. package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
  295. package/coverage/lcov-report/src/integrations/rest.ts.html +1 -1
  296. package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
  297. package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
  298. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  299. package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +310 -0
  300. package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +199 -0
  301. package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +349 -0
  302. package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +550 -0
  303. package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +331 -0
  304. package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +376 -0
  305. package/coverage/lcov-report/src/integrations/tests/index.html +230 -5
  306. package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +253 -0
  307. package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +1087 -0
  308. package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +484 -0
  309. package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +373 -0
  310. package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +328 -0
  311. package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +337 -0
  312. package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +1870 -0
  313. package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +421 -0
  314. package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +1753 -0
  315. package/coverage/lcov-report/src/integrations/utils.ts.html +3 -3
  316. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  317. package/coverage/lcov-report/src/middleware/authorized.ts.html +19 -19
  318. package/coverage/lcov-report/src/middleware/builder.ts.html +13 -13
  319. package/coverage/lcov-report/src/middleware/currentapp.ts.html +47 -47
  320. package/coverage/lcov-report/src/middleware/index.html +15 -15
  321. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  322. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  323. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  324. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  325. package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +574 -0
  326. package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +814 -0
  327. package/coverage/lcov-report/src/middleware/tests/index.html +161 -0
  328. package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +397 -0
  329. package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +214 -0
  330. package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
  331. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
  332. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  333. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  334. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  335. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  336. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  337. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  338. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  339. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  340. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  341. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  342. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  343. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  344. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  345. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  346. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  347. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  348. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  349. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  350. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  351. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
  352. package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +163 -0
  353. package/coverage/lcov-report/src/migrations/functions/tests/index.html +161 -0
  354. package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +163 -0
  355. package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +517 -0
  356. package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +190 -0
  357. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  358. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  359. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  360. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  361. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  362. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +131 -0
  363. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +190 -0
  364. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +244 -0
  365. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  366. package/coverage/lcov-report/src/migrations/index.html +1 -1
  367. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  368. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  369. package/coverage/lcov-report/src/migrations/tests/index.html +23 -8
  370. package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +535 -0
  371. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  372. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  373. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
  374. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +18 -18
  375. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +7 -7
  376. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  377. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  378. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  379. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  380. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +26 -8
  381. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
  382. package/coverage/lcov-report/src/sdk/app/backups/index.html +10 -10
  383. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  384. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
  385. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +15 -15
  386. package/coverage/lcov-report/src/sdk/app/datasources/index.html +1 -1
  387. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +1 -1
  388. package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
  389. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +1 -1
  390. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +1 -1
  391. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
  392. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  393. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
  394. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
  395. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  396. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  397. package/coverage/lcov-report/src/sdk/index.html +1 -1
  398. package/coverage/lcov-report/src/sdk/index.ts.html +2 -2
  399. package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +313 -0
  400. package/coverage/lcov-report/src/sdk/tests/index.html +116 -0
  401. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  402. package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
  403. package/coverage/lcov-report/src/sdk/users/utils.ts.html +24 -24
  404. package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
  405. package/coverage/lcov-report/src/sdk/utils/index.ts.html +1 -1
  406. package/coverage/lcov-report/src/startup.ts.html +4 -4
  407. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +308 -140
  408. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +6 -6
  409. package/coverage/lcov-report/src/tests/utilities/index.html +18 -18
  410. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  411. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +18 -18
  412. package/coverage/lcov-report/src/threads/automation.ts.html +1 -1
  413. package/coverage/lcov-report/src/threads/index.html +1 -1
  414. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  415. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  416. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  417. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
  418. package/coverage/lcov-report/src/utilities/centralPath.ts.html +1 -1
  419. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +3 -3
  420. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  421. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +1 -1
  422. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  423. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  424. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +1 -1
  425. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  426. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +1 -1
  427. package/coverage/lcov-report/src/utilities/global.ts.html +36 -36
  428. package/coverage/lcov-report/src/utilities/index.html +34 -19
  429. package/coverage/lcov-report/src/utilities/index.ts.html +19 -19
  430. package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
  431. package/coverage/lcov-report/src/utilities/retry.ts.html +139 -0
  432. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  433. package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
  434. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  435. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +41 -41
  436. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +2 -2
  437. package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +116 -0
  438. package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +256 -0
  439. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +12 -12
  440. package/coverage/lcov-report/src/utilities/schema.ts.html +1 -1
  441. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
  442. package/coverage/lcov-report/src/utilities/security.ts.html +19 -19
  443. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  444. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +32 -32
  445. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  446. package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
  447. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +15 -15
  448. package/coverage/lcov-report/src/watch.ts.html +1 -1
  449. package/coverage/lcov-report/src/websocket.ts.html +1 -1
  450. package/coverage/lcov.info +14432 -7219
  451. package/dist/app.js +1 -1
  452. package/dist/package.json +8 -6
  453. package/dist/sdk/app/backups/exports.js +8 -2
  454. package/dist/tsconfig.build.tsbuildinfo +1 -1
  455. package/dist/utilities/retry.js +30 -0
  456. package/jest-testcontainers-config.js +8 -0
  457. package/jest.config.ts +28 -11
  458. package/package.json +9 -7
  459. package/scripts/load/create-many-apps.js +24 -0
  460. package/scripts/load/create-many-rows.js +30 -0
  461. package/scripts/load/utils.js +66 -0
  462. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  463. package/src/api/routes/public/applications.ts +0 -1
  464. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  465. package/src/api/routes/tests/analytics.spec.js +4 -1
  466. package/src/api/routes/tests/apikeys.spec.js +1 -1
  467. package/src/api/routes/tests/application.spec.ts +20 -6
  468. package/src/api/routes/tests/auth.spec.js +2 -2
  469. package/src/api/routes/tests/automation.spec.js +6 -2
  470. package/src/api/routes/tests/backup.spec.ts +4 -13
  471. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +10 -14
  472. package/src/api/routes/tests/component.spec.js +1 -1
  473. package/src/api/routes/tests/datasource.spec.ts +20 -3
  474. package/src/api/routes/tests/dev.spec.js +1 -1
  475. package/src/api/routes/tests/integration.spec.js +1 -1
  476. package/src/api/routes/tests/layout.spec.js +1 -1
  477. package/src/api/routes/tests/metadata.spec.js +1 -1
  478. package/src/api/routes/tests/misc.spec.js +1 -1
  479. package/src/api/routes/tests/permissions.spec.js +4 -1
  480. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +21 -1
  481. package/src/api/routes/tests/role.spec.js +6 -1
  482. package/src/api/routes/tests/routing.spec.js +1 -1
  483. package/src/api/routes/tests/row.spec.js +11 -3
  484. package/src/api/routes/tests/screen.spec.js +1 -1
  485. package/src/api/routes/tests/static.spec.js +2 -1
  486. package/src/api/routes/tests/table.spec.js +1 -1
  487. package/src/api/routes/tests/templates.spec.js +1 -1
  488. package/src/api/routes/tests/user.spec.js +3 -0
  489. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  490. package/src/api/routes/tests/utilities/index.ts +5 -3
  491. package/src/api/routes/tests/view.spec.js +4 -1
  492. package/src/api/routes/tests/webhook.spec.js +11 -2
  493. package/src/app.ts +2 -1
  494. package/src/automations/tests/automation.spec.js +4 -4
  495. package/src/automations/tests/bash.spec.js +1 -1
  496. package/src/automations/tests/discord.spec.js +1 -1
  497. package/src/automations/tests/executeQuery.spec.js +2 -3
  498. package/src/automations/tests/executeScript.spec.js +1 -1
  499. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  500. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  501. package/src/automations/tests/serverLog.spec.js +1 -1
  502. package/src/automations/tests/updateRow.spec.js +1 -1
  503. package/src/automations/tests/zapier.spec.js +1 -1
  504. package/src/db/tests/linkController.spec.js +4 -1
  505. package/src/db/tests/linkTests.spec.js +1 -1
  506. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  507. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  508. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  509. package/src/migrations/tests/index.spec.ts +3 -2
  510. package/src/sdk/app/backups/exports.ts +8 -2
  511. package/src/tests/jestEnv.ts +2 -6
  512. package/src/tests/jestSetup.ts +5 -6
  513. package/src/tests/utilities/TestConfiguration.ts +90 -34
  514. 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.24% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>198/214</span>
28
+ <span class='fraction'>214/232</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">84.95% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>92/109</span>
35
+ <span class='fraction'>96/113</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.2% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>197/213</span>
49
+ <span class='fraction'>213/231</span>
50
50
  </div>
51
51
 
52
52
 
@@ -712,7 +712,63 @@
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
716
772
  <span class="cline-any cline-neutral">&nbsp;</span>
717
773
  <span class="cline-any cline-neutral">&nbsp;</span>
718
774
  <span class="cline-any cline-yes">55x</span>
@@ -724,6 +780,7 @@
724
780
  <span class="cline-any cline-yes">55x</span>
725
781
  <span class="cline-any cline-yes">55x</span>
726
782
  <span class="cline-any cline-yes">55x</span>
783
+ <span class="cline-any cline-yes">55x</span>
727
784
  <span class="cline-any cline-neutral">&nbsp;</span>
728
785
  <span class="cline-any cline-neutral">&nbsp;</span>
729
786
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -746,8 +803,7 @@
746
803
  <span class="cline-any cline-neutral">&nbsp;</span>
747
804
  <span class="cline-any cline-neutral">&nbsp;</span>
748
805
  <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>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
807
  <span class="cline-any cline-yes">55x</span>
752
808
  <span class="cline-any cline-yes">55x</span>
753
809
  <span class="cline-any cline-yes">55x</span>
@@ -755,10 +811,16 @@
755
811
  <span class="cline-any cline-yes">55x</span>
756
812
  <span class="cline-any cline-neutral">&nbsp;</span>
757
813
  <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>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&nbsp;</span>
822
+ <span class="cline-any cline-neutral">&nbsp;</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
824
  <span class="cline-any cline-neutral">&nbsp;</span>
763
825
  <span class="cline-any cline-neutral">&nbsp;</span>
764
826
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -790,6 +852,18 @@
790
852
  <span class="cline-any cline-neutral">&nbsp;</span>
791
853
  <span class="cline-any cline-yes">53x</span>
792
854
  <span class="cline-any cline-yes">53x</span>
855
+ <span class="cline-any cline-yes">53x</span>
856
+ <span class="cline-any cline-yes">53x</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-yes">162x</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>
793
867
  <span class="cline-any cline-neutral">&nbsp;</span>
794
868
  <span class="cline-any cline-neutral">&nbsp;</span>
795
869
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -805,7 +879,7 @@
805
879
  <span class="cline-any cline-neutral">&nbsp;</span>
806
880
  <span class="cline-any cline-neutral">&nbsp;</span>
807
881
  <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-yes">380x</span>
882
+ <span class="cline-any cline-yes">209x</span>
809
883
  <span class="cline-any cline-neutral">&nbsp;</span>
810
884
  <span class="cline-any cline-neutral">&nbsp;</span>
811
885
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -822,18 +896,19 @@
822
896
  <span class="cline-any cline-neutral">&nbsp;</span>
823
897
  <span class="cline-any cline-neutral">&nbsp;</span>
824
898
  <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>
899
+ <span class="cline-any cline-yes">654x</span>
900
+ <span class="cline-any cline-yes">180x</span>
827
901
  <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-yes">1071x</span>
829
902
  <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>
903
+ <span class="cline-any cline-yes">654x</span>
904
+ <span class="cline-any cline-yes">654x</span>
833
905
  <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-yes">654x</span>
907
+ <span class="cline-any cline-yes">378x</span>
908
+ <span class="cline-any cline-yes">378x</span>
834
909
  <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-yes">610x</span>
836
910
  <span class="cline-any cline-neutral">&nbsp;</span>
911
+ <span class="cline-any cline-yes">276x</span>
837
912
  <span class="cline-any cline-neutral">&nbsp;</span>
838
913
  <span class="cline-any cline-neutral">&nbsp;</span>
839
914
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -841,14 +916,20 @@
841
916
  <span class="cline-any cline-neutral">&nbsp;</span>
842
917
  <span class="cline-any cline-neutral">&nbsp;</span>
843
918
  <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
919
  <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>
920
+ <span class="cline-any cline-yes">109x</span>
921
+ <span class="cline-any cline-yes">109x</span>
922
+ <span class="cline-any cline-yes">103x</span>
850
923
  <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-yes">276x</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-yes">109x</span>
926
+ <span class="cline-any cline-yes">29x</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-yes">109x</span>
929
+ <span class="cline-any cline-yes">109x</span>
930
+ <span class="cline-any cline-yes">109x</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-yes">109x</span>
852
933
  <span class="cline-any cline-neutral">&nbsp;</span>
853
934
  <span class="cline-any cline-neutral">&nbsp;</span>
854
935
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -859,32 +940,52 @@
859
940
  <span class="cline-any cline-yes">30x</span>
860
941
  <span class="cline-any cline-neutral">&nbsp;</span>
861
942
  <span class="cline-any cline-yes">51x</span>
862
- <span class="cline-any cline-yes">520x</span>
943
+ <span class="cline-any cline-yes">216x</span>
944
+ <span class="cline-any cline-neutral">&nbsp;</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-neutral">&nbsp;</span>
947
+ <span class="cline-any cline-neutral">&nbsp;</span>
948
+ <span class="cline-any cline-yes">55x</span>
949
+ <span class="cline-any cline-yes">6x</span>
950
+ <span class="cline-any cline-yes">6x</span>
951
+ <span class="cline-any cline-neutral">&nbsp;</span>
952
+ <span class="cline-any cline-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-yes">55x</span>
954
+ <span class="cline-any cline-yes">6x</span>
955
+ <span class="cline-any cline-yes">6x</span>
863
956
  <span class="cline-any cline-neutral">&nbsp;</span>
864
957
  <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-yes">53x</span>
959
+ <span class="cline-any cline-no">&nbsp;</span>
960
+ <span class="cline-any cline-no">&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>
964
+ <span class="cline-any cline-yes">6x</span>
965
+ <span class="cline-any cline-yes">6x</span>
865
966
  <span class="cline-any cline-neutral">&nbsp;</span>
866
967
  <span class="cline-any cline-neutral">&nbsp;</span>
867
968
  <span class="cline-any cline-neutral">&nbsp;</span>
868
969
  <span class="cline-any cline-neutral">&nbsp;</span>
869
970
  <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>
873
971
  <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>
972
+ <span class="cline-any cline-yes">593x</span>
973
+ <span class="cline-any cline-yes">593x</span>
974
+ <span class="cline-any cline-yes">593x</span>
879
975
  <span class="cline-any cline-neutral">&nbsp;</span>
976
+ <span class="cline-any cline-yes">593x</span>
977
+ <span class="cline-any cline-yes">593x</span>
978
+ <span class="cline-any cline-yes">593x</span>
979
+ <span class="cline-any cline-yes">593x</span>
980
+ <span class="cline-any cline-yes">593x</span>
880
981
  <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>
883
982
  <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>
983
+ <span class="cline-any cline-yes">593x</span>
984
+ <span class="cline-any cline-yes">115x</span>
887
985
  <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-yes">593x</span>
987
+ <span class="cline-any cline-yes">593x</span>
988
+ <span class="cline-any cline-yes">590x</span>
888
989
  <span class="cline-any cline-neutral">&nbsp;</span>
889
990
  <span class="cline-any cline-neutral">&nbsp;</span>
890
991
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -897,38 +998,39 @@
897
998
  <span class="cline-any cline-neutral">&nbsp;</span>
898
999
  <span class="cline-any cline-neutral">&nbsp;</span>
899
1000
  <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-yes">325x</span>
901
1001
  <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>
1002
+ <span class="cline-any cline-yes">158x</span>
904
1003
  <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-yes">82x</span>
1004
+ <span class="cline-any cline-yes">158x</span>
1005
+ <span class="cline-any cline-yes">158x</span>
906
1006
  <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-yes">325x</span>
1007
+ <span class="cline-any cline-yes">144x</span>
908
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
1009
+ <span class="cline-any cline-yes">158x</span>
909
1010
  <span class="cline-any cline-neutral">&nbsp;</span>
910
1011
  <span class="cline-any cline-neutral">&nbsp;</span>
911
1012
  <span class="cline-any cline-neutral">&nbsp;</span>
912
1013
  <span class="cline-any cline-neutral">&nbsp;</span>
913
1014
  <span class="cline-any cline-neutral">&nbsp;</span>
914
1015
  <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-yes">325x</span>
916
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
1017
+ <span class="cline-any cline-yes">158x</span>
917
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
918
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
919
1020
  <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>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-yes">158x</span>
1023
+ <span class="cline-any cline-yes">125x</span>
922
1024
  <span class="cline-any cline-neutral">&nbsp;</span>
923
1025
  <span class="cline-any cline-yes">33x</span>
924
1026
  <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-yes">325x</span>
1027
+ <span class="cline-any cline-yes">158x</span>
926
1028
  <span class="cline-any cline-yes">2x</span>
927
1029
  <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-yes">323x</span>
1030
+ <span class="cline-any cline-yes">156x</span>
929
1031
  <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>
1032
+ <span class="cline-any cline-yes">158x</span>
1033
+ <span class="cline-any cline-yes">158x</span>
932
1034
  <span class="cline-any cline-neutral">&nbsp;</span>
933
1035
  <span class="cline-any cline-neutral">&nbsp;</span>
934
1036
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1007,41 +1109,51 @@
1007
1109
  <span class="cline-any cline-neutral">&nbsp;</span>
1008
1110
  <span class="cline-any cline-neutral">&nbsp;</span>
1009
1111
  <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-yes">237x</span>
1112
+ <span class="cline-any cline-yes">235x</span>
1113
+ <span class="cline-any cline-yes">235x</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-neutral">&nbsp;</span>
1011
1116
  <span class="cline-any cline-neutral">&nbsp;</span>
1012
1117
  <span class="cline-any cline-neutral">&nbsp;</span>
1118
+ <span class="cline-any cline-yes">235x</span>
1013
1119
  <span class="cline-any cline-neutral">&nbsp;</span>
1014
1120
  <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-yes">237x</span>
1016
1121
  <span class="cline-any cline-neutral">&nbsp;</span>
1122
+ <span class="cline-any cline-yes">235x</span>
1123
+ <span class="cline-any cline-yes">235x</span>
1124
+ <span class="cline-any cline-yes">235x</span>
1017
1125
  <span class="cline-any cline-neutral">&nbsp;</span>
1018
1126
  <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
1127
  <span class="cline-any cline-neutral">&nbsp;</span>
1023
1128
  <span class="cline-any cline-neutral">&nbsp;</span>
1024
1129
  <span class="cline-any cline-neutral">&nbsp;</span>
1025
1130
  <span class="cline-any cline-neutral">&nbsp;</span>
1026
1131
  <span class="cline-any cline-neutral">&nbsp;</span>
1027
1132
  <span class="cline-any cline-neutral">&nbsp;</span>
1133
+ <span class="cline-any cline-yes">235x</span>
1134
+ <span class="cline-any cline-yes">235x</span>
1028
1135
  <span class="cline-any cline-neutral">&nbsp;</span>
1136
+ <span class="cline-any cline-yes">235x</span>
1029
1137
  <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>
1032
1138
  <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-yes">237x</span>
1034
1139
  <span class="cline-any cline-neutral">&nbsp;</span>
1140
+ <span class="cline-any cline-yes">2025x</span>
1035
1141
  <span class="cline-any cline-neutral">&nbsp;</span>
1036
1142
  <span class="cline-any cline-neutral">&nbsp;</span>
1143
+ <span class="cline-any cline-neutral">&nbsp;</span>
1144
+ <span class="cline-any cline-yes">4x</span>
1145
+ <span class="cline-any cline-neutral">&nbsp;</span>
1037
1146
  <span class="cline-any cline-yes">4x</span>
1038
1147
  <span class="cline-any cline-neutral">&nbsp;</span>
1148
+ <span class="cline-any cline-neutral">&nbsp;</span>
1149
+ <span class="cline-any cline-yes">4x</span>
1039
1150
  <span class="cline-any cline-yes">4x</span>
1040
1151
  <span class="cline-any cline-neutral">&nbsp;</span>
1041
1152
  <span class="cline-any cline-neutral">&nbsp;</span>
1042
1153
  <span class="cline-any cline-yes">4x</span>
1043
1154
  <span class="cline-any cline-yes">4x</span>
1044
1155
  <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
1157
  <span class="cline-any cline-yes">4x</span>
1046
1158
  <span class="cline-any cline-neutral">&nbsp;</span>
1047
1159
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1077,35 +1189,35 @@
1077
1189
  <span class="cline-any cline-neutral">&nbsp;</span>
1078
1190
  <span class="cline-any cline-neutral">&nbsp;</span>
1079
1191
  <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>
1192
+ <span class="cline-any cline-yes">121x</span>
1193
+ <span class="cline-any cline-yes">121x</span>
1194
+ <span class="cline-any cline-yes">121x</span>
1083
1195
  <span class="cline-any cline-neutral">&nbsp;</span>
1084
1196
  <span class="cline-any cline-neutral">&nbsp;</span>
1085
1197
  <span class="cline-any cline-neutral">&nbsp;</span>
1086
1198
  <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-yes">288x</span>
1199
+ <span class="cline-any cline-yes">121x</span>
1088
1200
  <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-yes">288x</span>
1201
+ <span class="cline-any cline-yes">121x</span>
1090
1202
  <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-yes">288x</span>
1203
+ <span class="cline-any cline-yes">121x</span>
1092
1204
  <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>
1205
+ <span class="cline-any cline-yes">121x</span>
1206
+ <span class="cline-any cline-yes">121x</span>
1095
1207
  <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-yes">288x</span>
1208
+ <span class="cline-any cline-yes">121x</span>
1097
1209
  <span class="cline-any cline-neutral">&nbsp;</span>
1098
1210
  <span class="cline-any cline-neutral">&nbsp;</span>
1099
1211
  <span class="cline-any cline-neutral">&nbsp;</span>
1100
1212
  <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-yes">296x</span>
1213
+ <span class="cline-any cline-yes">126x</span>
1102
1214
  <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>
1215
+ <span class="cline-any cline-yes">126x</span>
1216
+ <span class="cline-any cline-yes">126x</span>
1105
1217
  <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>
1218
+ <span class="cline-any cline-yes">126x</span>
1219
+ <span class="cline-any cline-yes">126x</span>
1220
+ <span class="cline-any cline-yes">126x</span>
1109
1221
  <span class="cline-any cline-neutral">&nbsp;</span>
1110
1222
  <span class="cline-any cline-neutral">&nbsp;</span>
1111
1223
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1123,16 +1235,16 @@
1123
1235
  <span class="cline-any cline-neutral">&nbsp;</span>
1124
1236
  <span class="cline-any cline-neutral">&nbsp;</span>
1125
1237
  <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>
1238
+ <span class="cline-any cline-yes">120x</span>
1239
+ <span class="cline-any cline-yes">120x</span>
1240
+ <span class="cline-any cline-yes">120x</span>
1129
1241
  <span class="cline-any cline-neutral">&nbsp;</span>
1130
1242
  <span class="cline-any cline-neutral">&nbsp;</span>
1131
1243
  <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-yes">119x</span>
1244
+ <span class="cline-any cline-yes">116x</span>
1133
1245
  <span class="cline-any cline-yes">3x</span>
1134
1246
  <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-yes">119x</span>
1247
+ <span class="cline-any cline-yes">116x</span>
1136
1248
  <span class="cline-any cline-neutral">&nbsp;</span>
1137
1249
  <span class="cline-any cline-neutral">&nbsp;</span>
1138
1250
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1173,12 +1285,12 @@
1173
1285
  <span class="cline-any cline-neutral">&nbsp;</span>
1174
1286
  <span class="cline-any cline-neutral">&nbsp;</span>
1175
1287
  <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-yes">71x</span>
1288
+ <span class="cline-any cline-yes">69x</span>
1177
1289
  <span class="cline-any cline-no">&nbsp;</span>
1178
1290
  <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>
1291
+ <span class="cline-any cline-yes">69x</span>
1292
+ <span class="cline-any cline-yes">69x</span>
1293
+ <span class="cline-any cline-yes">69x</span>
1182
1294
  <span class="cline-any cline-neutral">&nbsp;</span>
1183
1295
  <span class="cline-any cline-neutral">&nbsp;</span>
1184
1296
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1227,14 +1339,14 @@
1227
1339
  <span class="cline-any cline-neutral">&nbsp;</span>
1228
1340
  <span class="cline-any cline-neutral">&nbsp;</span>
1229
1341
  <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>
1342
+ <span class="cline-any cline-yes">20x</span>
1343
+ <span class="cline-any cline-yes">20x</span>
1232
1344
  <span class="cline-any cline-no">&nbsp;</span>
1233
1345
  <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-yes">26x</span>
1346
+ <span class="cline-any cline-yes">20x</span>
1235
1347
  <span class="cline-any cline-neutral">&nbsp;</span>
1236
1348
  <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-yes">26x</span>
1349
+ <span class="cline-any cline-yes">20x</span>
1238
1350
  <span class="cline-any cline-neutral">&nbsp;</span>
1239
1351
  <span class="cline-any cline-neutral">&nbsp;</span>
1240
1352
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1254,20 +1366,20 @@
1254
1366
  <span class="cline-any cline-neutral">&nbsp;</span>
1255
1367
  <span class="cline-any cline-neutral">&nbsp;</span>
1256
1368
  <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-yes">8x</span>
1369
+ <span class="cline-any cline-yes">4x</span>
1258
1370
  <span class="cline-any cline-no">&nbsp;</span>
1259
1371
  <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>
1372
+ <span class="cline-any cline-yes">4x</span>
1373
+ <span class="cline-any cline-yes">4x</span>
1262
1374
  <span class="cline-any cline-neutral">&nbsp;</span>
1263
1375
  <span class="cline-any cline-neutral">&nbsp;</span>
1264
1376
  <span class="cline-any cline-neutral">&nbsp;</span>
1265
1377
  <span class="cline-any cline-neutral">&nbsp;</span>
1266
1378
  <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>
1379
+ <span class="cline-any cline-yes">41x</span>
1380
+ <span class="cline-any cline-yes">41x</span>
1381
+ <span class="cline-any cline-yes">40x</span>
1382
+ <span class="cline-any cline-yes">40x</span>
1271
1383
  <span class="cline-any cline-neutral">&nbsp;</span>
1272
1384
  <span class="cline-any cline-neutral">&nbsp;</span>
1273
1385
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1338,30 +1450,30 @@
1338
1450
  <span class="cline-any cline-neutral">&nbsp;</span>
1339
1451
  <span class="cline-any cline-neutral">&nbsp;</span>
1340
1452
  <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-yes">37x</span>
1453
+ <span class="cline-any cline-yes">18x</span>
1342
1454
  <span class="cline-any cline-no">&nbsp;</span>
1343
1455
  <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>
1456
+ <span class="cline-any cline-yes">18x</span>
1457
+ <span class="cline-any cline-yes">18x</span>
1346
1458
  <span class="cline-any cline-neutral">&nbsp;</span>
1347
1459
  <span class="cline-any cline-neutral">&nbsp;</span>
1348
1460
  <span class="cline-any cline-neutral">&nbsp;</span>
1349
1461
  <span class="cline-any cline-neutral">&nbsp;</span>
1350
1462
  <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>
1463
+ <span class="cline-any cline-yes">11x</span>
1464
+ <span class="cline-any cline-yes">11x</span>
1353
1465
  <span class="cline-any cline-neutral">&nbsp;</span>
1354
1466
  <span class="cline-any cline-neutral">&nbsp;</span>
1355
1467
  <span class="cline-any cline-neutral">&nbsp;</span>
1356
1468
  <span class="cline-any cline-neutral">&nbsp;</span>
1357
1469
  <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>
1470
+ <span class="cline-any cline-yes">2x</span>
1471
+ <span class="cline-any cline-yes">2x</span>
1360
1472
  <span class="cline-any cline-neutral">&nbsp;</span>
1361
1473
  <span class="cline-any cline-neutral">&nbsp;</span>
1362
1474
  <span class="cline-any cline-neutral">&nbsp;</span>
1363
1475
  <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"
1476
+ <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
1477
  &nbsp;
1366
1478
  // init the licensing mock
1367
1479
  import * as pro from "@budibase/pro"
@@ -1373,6 +1485,7 @@ mocks.licenses.useUnlimited()
1373
1485
  import { init as dbInit } from "../../db"
1374
1486
  dbInit()
1375
1487
  import env from "../../environment"
1488
+ import { env as coreEnv } from "@budibase/backend-core"
1376
1489
  import {
1377
1490
  basicTable,
1378
1491
  basicRow,
@@ -1401,13 +1514,16 @@ import { cleanup } from "../../utilities/fileSystem"
1401
1514
  import newid from "../../db/newid"
1402
1515
  import { generateUserMetadataID } from "../../db/utils"
1403
1516
  import { startup } from "../../startup"
1517
+ import { AuthToken, Database } from "@budibase/types"
1404
1518
  const supertest = require("supertest")
1405
1519
  &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"
1520
+ type DefaultUserValues = {
1521
+ globalUserId: string
1522
+ email: string
1523
+ firstName: string
1524
+ lastName: string
1525
+ csrfToken: string
1526
+ }
1411
1527
  &nbsp;
1412
1528
  class TestConfiguration {
1413
1529
  server: any
@@ -1425,6 +1541,8 @@ class TestConfiguration {
1425
1541
  linkedTable: any
1426
1542
  automation: any
1427
1543
  datasource: any
1544
+ tenantId: string | null
1545
+ defaultUserValues: DefaultUserValues
1428
1546
  &nbsp;
1429
1547
  constructor(openServer = true) {
1430
1548
  if (openServer) {
@@ -1439,6 +1557,18 @@ class TestConfiguration {
1439
1557
  }
1440
1558
  this.appId = null
1441
1559
  this.allApps = []
1560
+ this.tenantId = null
1561
+ this.defaultUserValues = this.populateDefaultUserValues()
1562
+ }
1563
+ &nbsp;
1564
+ populateDefaultUserValues(): DefaultUserValues {
1565
+ return {
1566
+ globalUserId: `us_${newid()}`,
1567
+ email: generator.email(),
1568
+ firstName: generator.first(),
1569
+ lastName: generator.last(),
1570
+ csrfToken: generator.hash(),
1571
+ }
1442
1572
  }
1443
1573
  &nbsp;
1444
1574
  getRequest() {
@@ -1463,10 +1593,10 @@ class TestConfiguration {
1463
1593
  &nbsp;
1464
1594
  getUserDetails() {
1465
1595
  return {
1466
- globalId: GLOBAL_USER_ID,
1467
- email: EMAIL,
1468
- firstName: FIRSTNAME,
1469
- lastName: LASTNAME,
1596
+ globalId: this.defaultUserValues.globalUserId,
1597
+ email: this.defaultUserValues.email,
1598
+ firstName: this.defaultUserValues.firstName,
1599
+ lastName: this.defaultUserValues.lastName,
1470
1600
  }
1471
1601
  }
1472
1602
  &nbsp;
@@ -1474,7 +1604,9 @@ class TestConfiguration {
1474
1604
  if (!appId) {
1475
1605
  appId = this.appId
1476
1606
  }
1477
- return tenancy.doInTenant(TENANT_ID, () =&gt; {
1607
+ &nbsp;
1608
+ const tenant = this.getTenantId()
1609
+ return tenancy.doInTenant(tenant, () =&gt; {
1478
1610
  // check if already in a context
1479
1611
  if (context.getAppId() == null &amp;&amp; appId !== null) {
1480
1612
  return context.doInAppContext(appId, async () =&gt; {
@@ -1490,6 +1622,11 @@ class TestConfiguration {
1490
1622
  &nbsp;
1491
1623
  // use a new id as the name to avoid name collisions
1492
1624
  async init(appName = newid()) {
1625
+ this.defaultUserValues = this.populateDefaultUserValues()
1626
+ if (context.isMultiTenant()) {
1627
+ this.tenantId = structures.tenant.id()
1628
+ }
1629
+ &nbsp;
1493
1630
  if (!this.started) {
1494
1631
  await startup()
1495
1632
  }
@@ -1511,6 +1648,27 @@ class TestConfiguration {
1511
1648
  cleanup(this.allApps.map(app =&gt; app.appId))
1512
1649
  }
1513
1650
  }
1651
+ &nbsp;
1652
+ // MODES
1653
+ #setMultiTenancy = (value: boolean) =&gt; {
1654
+ env._set("MULTI_TENANCY", value)
1655
+ coreEnv._set("MULTI_TENANCY", value)
1656
+ }
1657
+ &nbsp;
1658
+ #setSelfHosted = (value: boolean) =&gt; {
1659
+ env._set("SELF_HOSTED", value)
1660
+ coreEnv._set("SELF_HOSTED", value)
1661
+ }
1662
+ &nbsp;
1663
+ modeCloud = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
1664
+ <span class="cstat-no" title="statement not covered" > this.#setSelfHosted(false)</span>
1665
+ <span class="cstat-no" title="statement not covered" > this.#setMultiTenancy(true)</span>
1666
+ }
1667
+ &nbsp;
1668
+ modeSelf = () =&gt; {
1669
+ this.#setSelfHosted(true)
1670
+ this.#setMultiTenancy(false)
1671
+ }
1514
1672
  &nbsp;
1515
1673
  // UTILS
1516
1674
  &nbsp;
@@ -1522,7 +1680,7 @@ class TestConfiguration {
1522
1680
  // fake cookies, we don't need them
1523
1681
  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
1682
  request.config = { jwtSecret: env.JWT_SECRET }
1525
- request.user = { appId, tenantId: TENANT_ID }
1683
+ request.user = { appId, tenantId: this.getTenantId() }
1526
1684
  request.query = {}
1527
1685
  request.request = {
1528
1686
  body,
@@ -1538,15 +1696,15 @@ class TestConfiguration {
1538
1696
  &nbsp;
1539
1697
  // USER / AUTH
1540
1698
  async globalUser({
1541
- id = GLOBAL_USER_ID,
1542
- firstName = FIRSTNAME,
1543
- lastName = LASTNAME,
1699
+ id = this.defaultUserValues.globalUserId,
1700
+ firstName = this.defaultUserValues.firstName,
1701
+ lastName = this.defaultUserValues.lastName,
1544
1702
  builder = true,
1545
1703
  admin = false,
1546
- email = EMAIL,
1704
+ email = this.defaultUserValues.email,
1547
1705
  roles,
1548
1706
  }: any = {}) {
1549
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) =&gt; {
1707
+ return tenancy.doWithGlobalDB(this.getTenantId(), async (db: Database) =&gt; {
1550
1708
  let existing
1551
1709
  try {
1552
1710
  existing = await db.get(id)
@@ -1557,14 +1715,14 @@ class TestConfiguration {
1557
1715
  _id: id,
1558
1716
  ...existing,
1559
1717
  roles: roles || {},
1560
- tenantId: TENANT_ID,
1718
+ tenantId: this.getTenantId(),
1561
1719
  firstName,
1562
1720
  lastName,
1563
1721
  }
1564
1722
  await sessions.createASession(id, {
1565
1723
  sessionId: "sessionid",
1566
- tenantId: TENANT_ID,
1567
- csrfToken: CSRF_TOKEN,
1724
+ tenantId: this.getTenantId(),
1725
+ csrfToken: this.defaultUserValues.csrfToken,
1568
1726
  })
1569
1727
  if (builder) {
1570
1728
  user.builder = { global: true }
@@ -1578,7 +1736,7 @@ class TestConfiguration {
1578
1736
  }
1579
1737
  const resp = await db.put(user)
1580
1738
  return {
1581
- _rev: resp._rev,
1739
+ _rev: resp.rev,
1582
1740
  ...user,
1583
1741
  }
1584
1742
  })
@@ -1586,9 +1744,9 @@ class TestConfiguration {
1586
1744
  &nbsp;
1587
1745
  async createUser(
1588
1746
  id = null,
1589
- firstName = FIRSTNAME,
1590
- lastName = LASTNAME,
1591
- email = EMAIL,
1747
+ firstName = this.defaultUserValues.firstName,
1748
+ lastName = this.defaultUserValues.lastName,
1749
+ email = this.defaultUserValues.email,
1592
1750
  builder = true,
1593
1751
  admin = false,
1594
1752
  roles = {}
@@ -1627,13 +1785,13 @@ class TestConfiguration {
1627
1785
  }
1628
1786
  await sessions.createASession(userId, {
1629
1787
  sessionId: "sessionid",
1630
- tenantId: TENANT_ID,
1788
+ tenantId: this.getTenantId(),
1631
1789
  })
1632
1790
  // have to fake this
1633
1791
  const authObj = {
1634
1792
  userId,
1635
1793
  sessionId: "sessionid",
1636
- tenantId: TENANT_ID,
1794
+ tenantId: this.getTenantId(),
1637
1795
  }
1638
1796
  const app = {
1639
1797
  roleId: roleId,
@@ -1656,10 +1814,11 @@ class TestConfiguration {
1656
1814
  }
1657
1815
  &nbsp;
1658
1816
  defaultHeaders(extras = {}) {
1659
- const authObj = {
1660
- userId: GLOBAL_USER_ID,
1817
+ const tenantId = this.getTenantId()
1818
+ const authObj: AuthToken = {
1819
+ userId: this.defaultUserValues.globalUserId,
1661
1820
  sessionId: "sessionid",
1662
- tenantId: TENANT_ID,
1821
+ tenantId,
1663
1822
  }
1664
1823
  const app = {
1665
1824
  roleId: roles.BUILTIN_ROLE_IDS.ADMIN,
@@ -1673,7 +1832,7 @@ class TestConfiguration {
1673
1832
  `${constants.Cookie.Auth}=${authToken}`,
1674
1833
  `${constants.Cookie.CurrentApp}=${appToken}`,
1675
1834
  ],
1676
- [constants.Header.CSRF_TOKEN]: CSRF_TOKEN,
1835
+ [constants.Header.CSRF_TOKEN]: this.defaultUserValues.csrfToken,
1677
1836
  ...extras,
1678
1837
  }
1679
1838
  if (this.appId) {
@@ -1681,6 +1840,10 @@ class TestConfiguration {
1681
1840
  }
1682
1841
  return headers
1683
1842
  }
1843
+ &nbsp;
1844
+ getTenantId() {
1845
+ return this.tenantId || TENANT_ID
1846
+ }
1684
1847
  &nbsp;
1685
1848
  publicHeaders({ prodApp = true } = {}) {
1686
1849
  const appId = prodApp ? this.prodAppId : this.appId
@@ -1691,11 +1854,16 @@ class TestConfiguration {
1691
1854
  if (appId) {
1692
1855
  headers[constants.Header.APP_ID] = appId
1693
1856
  }
1857
+ &nbsp;
1858
+ if (this.tenantId) {
1859
+ headers[constants.Header.TENANT_ID] = this.tenantId
1860
+ }
1861
+ &nbsp;
1694
1862
  return headers
1695
1863
  }
1696
1864
  &nbsp;
1697
1865
  async roleHeaders({
1698
- email = EMAIL,
1866
+ email = this.defaultUserValues.email,
1699
1867
  roleId = <span class="branch-0 cbranch-no" title="branch not covered" >roles.BUILTIN_ROLE_IDS.ADMIN,</span>
1700
1868
  builder = false,
1701
1869
  prodApp = true,
@@ -1705,8 +1873,8 @@ class TestConfiguration {
1705
1873
  &nbsp;
1706
1874
  // API
1707
1875
  &nbsp;
1708
- async generateApiKey(userId = GLOBAL_USER_ID) {
1709
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) =&gt; {
1876
+ async generateApiKey(userId = this.defaultUserValues.globalUserId) {
1877
+ return tenancy.doWithGlobalDB(this.getTenantId(), async (db: any) =&gt; {
1710
1878
  const id = dbCore.generateDevInfoID(userId)
1711
1879
  let devInfo
1712
1880
  try {
@@ -1715,7 +1883,7 @@ class TestConfiguration {
1715
1883
  devInfo = { _id: id, userId }
1716
1884
  }
1717
1885
  devInfo.apiKey = encryption.encrypt(
1718
- `${TENANT_ID}${dbCore.SEPARATOR}${newid()}`
1886
+ `${this.getTenantId()}${dbCore.SEPARATOR}${newid()}`
1719
1887
  )
1720
1888
  await db.put(devInfo)
1721
1889
  return devInfo.apiKey
@@ -2017,7 +2185,7 @@ export = TestConfiguration
2017
2185
  <div class='footer quiet pad2 space-top1 center small'>
2018
2186
  Code coverage generated by
2019
2187
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2020
- at Mon Feb 06 2023 20:07:41 GMT+0000 (Coordinated Universal Time)
2188
+ at Tue Feb 07 2023 15:01:11 GMT+0000 (Coordinated Universal Time)
2021
2189
  </div>
2022
2190
  <script src="../../../prettify.js"></script>
2023
2191
  <script>