@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
@@ -0,0 +1,814 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/middleware/tests/currentapp.spec.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/middleware/tests</a> currentapp.spec.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/85</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/2</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">0% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/41</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/83</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
310
+ <span class="cline-any cline-no">&nbsp;</span>
311
+ <span class="cline-any cline-no">&nbsp;</span>
312
+ <span class="cline-any cline-no">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-no">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-no">&nbsp;</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-no">&nbsp;</span>
330
+ <span class="cline-any cline-no">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-no">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-no">&nbsp;</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-no">&nbsp;</span>
345
+ <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-no">&nbsp;</span>
348
+ <span class="cline-any cline-no">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-no">&nbsp;</span>
374
+ <span class="cline-any cline-no">&nbsp;</span>
375
+ <span class="cline-any cline-no">&nbsp;</span>
376
+ <span class="cline-any cline-no">&nbsp;</span>
377
+ <span class="cline-any cline-no">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-no">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-no">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-no">&nbsp;</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-no">&nbsp;</span>
407
+ <span class="cline-any cline-no">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-no">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-no">&nbsp;</span>
434
+ <span class="cline-any cline-no">&nbsp;</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-no">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-no">&nbsp;</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-no">&nbsp;</span>
448
+ <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-neutral">&nbsp;</span>
450
+ <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-no">&nbsp;</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-no">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-no">&nbsp;</span>
460
+ <span class="cline-any cline-no">&nbsp;</span>
461
+ <span class="cline-any cline-no">&nbsp;</span>
462
+ <span class="cline-any cline-no">&nbsp;</span>
463
+ <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-no">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-no">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-no">&nbsp;</span>
471
+ <span class="cline-any cline-no">&nbsp;</span>
472
+ <span class="cline-any cline-no">&nbsp;</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-no">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-no">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-no">&nbsp;</span>
479
+ <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-no">&nbsp;</span>
481
+ <span class="cline-any cline-no">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-no">&nbsp;</span>
485
+ <span class="cline-any cline-no">&nbsp;</span>
486
+ <span class="cline-any cline-no">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-no">&nbsp;</span>
490
+ <span class="cline-any cline-no">&nbsp;</span>
491
+ <span class="cline-any cline-no">&nbsp;</span>
492
+ <span class="cline-any cline-no">&nbsp;</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-no">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-no">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-no">&nbsp;</span>
522
+ <span class="cline-any cline-no">&nbsp;</span>
523
+ <span class="cline-any cline-no">&nbsp;</span>
524
+ <span class="cline-any cline-no">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-no">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-no">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-no">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</span>
548
+ <span class="cline-any cline-no">&nbsp;</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >require("../../db").init()</span>
553
+ <span class="cstat-no" title="statement not covered" >mockAuthWithNoCookie()</span>
554
+ <span class="cstat-no" title="statement not covered" >mockWorker()</span>
555
+ <span class="cstat-no" title="statement not covered" >mockUserGroups()</span>
556
+ &nbsp;
557
+ function <span class="fstat-no" title="function not covered" >mockWorker(</span>) {
558
+ <span class="cstat-no" title="statement not covered" > jest.mock("../../utilities/workerRequests", <span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
559
+ getGlobalSelf: <span class="fstat-no" title="function not covered" >()</span> =&gt; {
560
+ <span class="cstat-no" title="statement not covered" > return {</span>
561
+ _id: "us_uuid1",
562
+ roles: {
563
+ "app_test": "BASIC",
564
+ },
565
+ roleId: "BASIC",
566
+ }
567
+ }
568
+ }))
569
+ }
570
+ &nbsp;
571
+ function <span class="fstat-no" title="function not covered" >mockReset(</span>) {
572
+ <span class="cstat-no" title="statement not covered" > jest.resetModules()</span>
573
+ <span class="cstat-no" title="statement not covered" > mockWorker()</span>
574
+ }
575
+ &nbsp;
576
+ function <span class="fstat-no" title="function not covered" >mockUserGroups(</span>) {
577
+ <span class="cstat-no" title="statement not covered" > jest.mock("@budibase/pro", <span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
578
+ groups: {
579
+ getGroupRoleId: <span class="fstat-no" title="function not covered" >()</span> =&gt; {
580
+ <span class="cstat-no" title="statement not covered" > return "BASIC"</span>
581
+ },
582
+ },
583
+ }))
584
+ }
585
+ &nbsp;
586
+ function <span class="fstat-no" title="function not covered" >mockAuthWithNoCookie(</span>) {
587
+ <span class="cstat-no" title="statement not covered" > jest.resetModules()</span>
588
+ <span class="cstat-no" title="statement not covered" > mockWorker()</span>
589
+ <span class="cstat-no" title="statement not covered" > jest.mock("@budibase/backend-core", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
590
+ const core = <span class="cstat-no" title="statement not covered" >jest.requireActual("@budibase/backend-core")</span>
591
+ <span class="cstat-no" title="statement not covered" > return {</span>
592
+ ...core,
593
+ db: {
594
+ ...core.db,
595
+ dbExists: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >true,</span>
596
+ },
597
+ cache: {
598
+ user: {
599
+ getUser: <span class="fstat-no" title="function not covered" >as</span>ync id =&gt; {
600
+ <span class="cstat-no" title="statement not covered" > return {</span>
601
+ _id: "us_uuid1",
602
+ }
603
+ },
604
+ },
605
+ },
606
+ utils: {
607
+ getAppIdFromCtx: jest.fn(),
608
+ setCookie: jest.fn(),
609
+ getCookie: jest.fn(),
610
+ },
611
+ }
612
+ })
613
+ }
614
+ &nbsp;
615
+ function <span class="fstat-no" title="function not covered" >mockAuthWithCookie(</span>) {
616
+ <span class="cstat-no" title="statement not covered" > jest.resetModules()</span>
617
+ <span class="cstat-no" title="statement not covered" > mockWorker()</span>
618
+ <span class="cstat-no" title="statement not covered" > jest.mock("@budibase/backend-core", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
619
+ const core = <span class="cstat-no" title="statement not covered" >jest.requireActual("@budibase/backend-core")</span>
620
+ <span class="cstat-no" title="statement not covered" > return {</span>
621
+ ...core,
622
+ db: {
623
+ ...core.db,
624
+ dbExists: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >true,</span>
625
+ },
626
+ utils: {
627
+ getAppIdFromCtx: <span class="fstat-no" title="function not covered" >()</span> =&gt; {
628
+ <span class="cstat-no" title="statement not covered" > return "app_test"</span>
629
+ },
630
+ setCookie: jest.fn(),
631
+ clearCookie: jest.fn(),
632
+ getCookie: <span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >{ appId: "app_different", roleId: "PUBLIC" })</span>,
633
+ },
634
+ cache: {
635
+ user: {
636
+ getUser: <span class="fstat-no" title="function not covered" >as</span>ync id =&gt; {
637
+ <span class="cstat-no" title="statement not covered" > return {</span>
638
+ _id: "us_uuid1",
639
+ }
640
+ },
641
+ },
642
+ },
643
+ }
644
+ })
645
+ }
646
+ &nbsp;
647
+ class TestConfiguration {
648
+ <span class="fstat-no" title="function not covered" > co</span>nstructor() {
649
+ <span class="cstat-no" title="statement not covered" > this.next = jest.fn()</span>
650
+ <span class="cstat-no" title="statement not covered" > this.throw = jest.fn()</span>
651
+ &nbsp;
652
+ <span class="cstat-no" title="statement not covered" > this.ctx = {</span>
653
+ next: this.next,
654
+ throw: this.throw,
655
+ request: {
656
+ body: {},
657
+ headers: {},
658
+ },
659
+ headers: {},
660
+ path: "",
661
+ cookies: {
662
+ set: jest.fn(),
663
+ }
664
+ }
665
+ }
666
+ &nbsp;
667
+ <span class="fstat-no" title="function not covered" > se</span>tUser() {
668
+ <span class="cstat-no" title="statement not covered" > this.ctx.user = {</span>
669
+ userId: "us_uuid1",
670
+ _id: "us_uuid1",
671
+ }
672
+ }
673
+ &nbsp;
674
+ <span class="fstat-no" title="function not covered" > ex</span>ecuteMiddleware() {
675
+ // import as late as possible for mocks
676
+ <span class="cstat-no" title="statement not covered" > jest.resetModules()</span>
677
+ <span class="cstat-no" title="statement not covered" > require("../../db").init()</span>
678
+ const currentAppMiddleware = <span class="cstat-no" title="statement not covered" >require("../currentapp").default</span>
679
+ <span class="cstat-no" title="statement not covered" > return currentAppMiddleware(this.ctx, this.next)</span>
680
+ }
681
+ }
682
+ &nbsp;
683
+ <span class="cstat-no" title="statement not covered" >describe("Current app middleware", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
684
+ let config
685
+ &nbsp;
686
+ <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
687
+ <span class="cstat-no" title="statement not covered" > config = new TestConfiguration()</span>
688
+ })
689
+ &nbsp;
690
+ <span class="cstat-no" title="statement not covered" > afterEach(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
691
+ <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
692
+ })
693
+ &nbsp;
694
+ <span class="cstat-no" title="statement not covered" > describe("test having no cookies or app ID", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
695
+ <span class="cstat-no" title="statement not covered" > it("should be able to proceed with nothing setup", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
696
+ <span class="cstat-no" title="statement not covered" > await config.executeMiddleware()</span>
697
+ <span class="cstat-no" title="statement not covered" > expect(config.next).toHaveBeenCalled()</span>
698
+ })
699
+ })
700
+ &nbsp;
701
+ <span class="cstat-no" title="statement not covered" > describe("check get public for app when not logged in", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
702
+ <span class="cstat-no" title="statement not covered" > it("should be able to proceed with no login, but cookies configured", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
703
+ <span class="cstat-no" title="statement not covered" > mockAuthWithCookie()</span>
704
+ <span class="cstat-no" title="statement not covered" > await config.executeMiddleware()</span>
705
+ <span class="cstat-no" title="statement not covered" > expect(config.ctx.roleId).toEqual("PUBLIC")</span>
706
+ <span class="cstat-no" title="statement not covered" > expect(config.ctx.appId).toEqual("app_test")</span>
707
+ <span class="cstat-no" title="statement not covered" > expect(config.next).toHaveBeenCalled()</span>
708
+ })
709
+ })
710
+ &nbsp;
711
+ <span class="cstat-no" title="statement not covered" > describe("check functionality when logged in", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
712
+ async function <span class="fstat-no" title="function not covered" >checkExpected(</span>setCookie) {
713
+ <span class="cstat-no" title="statement not covered" > config.setUser()</span>
714
+ <span class="cstat-no" title="statement not covered" > await config.executeMiddleware()</span>
715
+ let { utils } = <span class="cstat-no" title="statement not covered" >require("@budibase/backend-core")</span>
716
+ <span class="cstat-no" title="statement not covered" > if (setCookie) {</span>
717
+ <span class="cstat-no" title="statement not covered" > expect(utils.setCookie).toHaveBeenCalled()</span>
718
+ } else {
719
+ <span class="cstat-no" title="statement not covered" > expect(utils.setCookie).not.toHaveBeenCalled()</span>
720
+ }
721
+ <span class="cstat-no" title="statement not covered" > expect(config.ctx.roleId).toEqual("PUBLIC")</span>
722
+ <span class="cstat-no" title="statement not covered" > expect(config.ctx.user.role._id).toEqual("PUBLIC")</span>
723
+ <span class="cstat-no" title="statement not covered" > expect(config.ctx.appId).toEqual("app_test")</span>
724
+ <span class="cstat-no" title="statement not covered" > expect(config.next).toHaveBeenCalled()</span>
725
+ }
726
+ &nbsp;
727
+ <span class="cstat-no" title="statement not covered" > it("should be able to setup an app token when cookie not setup", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
728
+ <span class="cstat-no" title="statement not covered" > mockAuthWithCookie()</span>
729
+ <span class="cstat-no" title="statement not covered" > await checkExpected(true)</span>
730
+ })
731
+ &nbsp;
732
+ <span class="cstat-no" title="statement not covered" > it("should perform correct when no cookie exists", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
733
+ <span class="cstat-no" title="statement not covered" > mockReset()</span>
734
+ <span class="cstat-no" title="statement not covered" > jest.mock("@budibase/backend-core", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
735
+ const core = <span class="cstat-no" title="statement not covered" >jest.requireActual("@budibase/backend-core")</span>
736
+ <span class="cstat-no" title="statement not covered" > return {</span>
737
+ ...core,
738
+ db: {
739
+ ...core.db,
740
+ dbExists: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >true,</span>
741
+ },
742
+ utils: {
743
+ getAppIdFromCtx: <span class="fstat-no" title="function not covered" >()</span> =&gt; {
744
+ <span class="cstat-no" title="statement not covered" > return "app_test"</span>
745
+ },
746
+ setCookie: jest.fn(),
747
+ getCookie: jest.fn(),
748
+ },
749
+ cache: {
750
+ user: {
751
+ getUser: <span class="fstat-no" title="function not covered" >as</span>ync id =&gt; {
752
+ <span class="cstat-no" title="statement not covered" > return {</span>
753
+ _id: "us_uuid1",
754
+ }
755
+ },
756
+ },
757
+ },
758
+ }
759
+ })
760
+ <span class="cstat-no" title="statement not covered" > await checkExpected(true)</span>
761
+ })
762
+ &nbsp;
763
+ <span class="cstat-no" title="statement not covered" > it("lastly check what occurs when cookie doesn't need updated", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
764
+ <span class="cstat-no" title="statement not covered" > mockReset()</span>
765
+ <span class="cstat-no" title="statement not covered" > jest.mock("@budibase/backend-core", <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
766
+ const core = <span class="cstat-no" title="statement not covered" >jest.requireActual("@budibase/backend-core")</span>
767
+ <span class="cstat-no" title="statement not covered" > return {</span>
768
+ ...core,
769
+ db: {
770
+ ...core.db,
771
+ dbExists: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >true,</span>
772
+ },
773
+ utils: {
774
+ getAppIdFromCtx: <span class="fstat-no" title="function not covered" >()</span> =&gt; {
775
+ <span class="cstat-no" title="statement not covered" > return "app_test"</span>
776
+ },
777
+ setCookie: jest.fn(),
778
+ getCookie: <span class="fstat-no" title="function not covered" >()</span> =&gt; (<span class="cstat-no" title="statement not covered" >{ appId: "app_test", roleId: "PUBLIC" })</span>,
779
+ },
780
+ cache: {
781
+ user: {
782
+ getUser: <span class="fstat-no" title="function not covered" >as</span>ync id =&gt; {
783
+ <span class="cstat-no" title="statement not covered" > return {</span>
784
+ _id: "us_uuid1",
785
+ }
786
+ },
787
+ },
788
+ },
789
+ }
790
+ })
791
+ <span class="cstat-no" title="statement not covered" > await checkExpected(false)</span>
792
+ })
793
+ })
794
+ })
795
+ &nbsp;</pre></td></tr></table></pre>
796
+
797
+ <div class='push'></div><!-- for sticky footer -->
798
+ </div><!-- /wrapper -->
799
+ <div class='footer quiet pad2 space-top1 center small'>
800
+ Code coverage generated by
801
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
802
+ at Tue Feb 07 2023 15:01:11 GMT+0000 (Coordinated Universal Time)
803
+ </div>
804
+ <script src="../../../prettify.js"></script>
805
+ <script>
806
+ window.onload = function () {
807
+ prettyPrint();
808
+ };
809
+ </script>
810
+ <script src="../../../sorter.js"></script>
811
+ <script src="../../../block-navigation.js"></script>
812
+ </body>
813
+ </html>
814
+