@budibase/server 2.2.12-alpha.5 → 2.2.12-alpha.50

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 (577) hide show
  1. package/__mocks__/node-fetch.ts +2 -0
  2. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  3. package/builder/assets/bg.c1563288.png +0 -0
  4. package/builder/assets/bulgaria.bd68393d.png +0 -0
  5. package/builder/assets/covanta.72c46c1e.png +0 -0
  6. package/builder/assets/index.22dc2872.css +6 -0
  7. package/builder/assets/{index.d930bfc5.js → index.d24b0406.js} +423 -427
  8. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  9. package/builder/index.html +2 -2
  10. package/coverage/clover.xml +5670 -5622
  11. package/coverage/coverage-final.json +282 -279
  12. package/coverage/lcov-report/index.html +458 -413
  13. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
  14. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
  15. package/coverage/lcov-report/src/api/controllers/application.ts.html +199 -178
  16. package/coverage/lcov-report/src/api/controllers/auth.ts.html +10 -10
  17. package/coverage/lcov-report/src/api/controllers/automation.ts.html +37 -37
  18. package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
  19. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +19 -19
  20. package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
  21. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +117 -93
  22. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +18 -18
  23. package/coverage/lcov-report/src/api/controllers/deploy/index.html +7 -7
  24. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +83 -83
  25. package/coverage/lcov-report/src/api/controllers/dev.ts.html +28 -28
  26. package/coverage/lcov-report/src/api/controllers/index.html +105 -105
  27. package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
  28. package/coverage/lcov-report/src/api/controllers/layout.ts.html +9 -9
  29. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
  30. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
  31. package/coverage/lcov-report/src/api/controllers/permission.ts.html +14 -14
  32. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +4 -4
  33. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +20 -20
  34. package/coverage/lcov-report/src/api/controllers/plugin/index.html +31 -31
  35. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +32 -32
  36. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +10 -10
  37. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  38. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +4 -4
  39. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +4 -4
  40. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +31 -31
  41. package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
  50. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
  51. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
  52. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
  53. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
  54. package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
  55. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
  63. package/coverage/lcov-report/src/api/controllers/query/index.html +16 -16
  64. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +94 -70
  65. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  66. package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
  67. package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
  68. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +58 -40
  69. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +87 -57
  70. package/coverage/lcov-report/src/api/controllers/row/index.html +66 -66
  71. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +36 -36
  72. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +155 -83
  73. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
  74. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +33 -33
  75. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +153 -39
  76. package/coverage/lcov-report/src/api/controllers/screen.ts.html +12 -12
  77. package/coverage/lcov-report/src/api/controllers/script.ts.html +11 -11
  78. package/coverage/lcov-report/src/api/controllers/static/index.html +15 -15
  79. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +49 -52
  80. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +60 -60
  81. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +56 -50
  82. package/coverage/lcov-report/src/api/controllers/table/index.html +48 -48
  83. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +155 -68
  84. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +58 -61
  85. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +93 -96
  86. package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
  87. package/coverage/lcov-report/src/api/controllers/user.ts.html +103 -79
  88. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
  89. package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
  90. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +57 -96
  91. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
  92. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +8 -8
  93. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  94. package/coverage/lcov-report/src/api/index.html +15 -15
  95. package/coverage/lcov-report/src/api/index.ts.html +35 -35
  96. package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
  97. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
  98. package/coverage/lcov-report/src/api/routes/application.ts.html +13 -13
  99. package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
  100. package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
  101. package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
  102. package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
  103. package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
  104. package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
  105. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -11
  106. package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
  107. package/coverage/lcov-report/src/api/routes/index.html +67 -67
  108. package/coverage/lcov-report/src/api/routes/index.ts.html +43 -37
  109. package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
  110. package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
  111. package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
  112. package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
  113. package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
  114. package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
  115. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +16 -16
  116. package/coverage/lcov-report/src/api/routes/public/index.html +24 -24
  117. package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
  118. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +5 -5
  119. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +12 -12
  120. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
  121. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
  122. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
  123. package/coverage/lcov-report/src/api/routes/public/tests/index.html +7 -7
  124. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
  125. package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
  126. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
  127. package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
  128. package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
  129. package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
  130. package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
  131. package/coverage/lcov-report/src/api/routes/row.ts.html +14 -14
  132. package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
  133. package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
  134. package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
  135. package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
  136. package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
  137. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +13 -13
  138. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +23 -23
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +14 -14
  140. package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
  141. package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
  142. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
  143. package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
  144. package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
  145. package/coverage/lcov-report/src/app.ts.html +22 -16
  146. package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
  147. package/coverage/lcov-report/src/automations/automationUtils.ts.html +61 -61
  148. package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
  149. package/coverage/lcov-report/src/automations/index.html +54 -54
  150. package/coverage/lcov-report/src/automations/index.ts.html +23 -23
  151. package/coverage/lcov-report/src/automations/logging/index.html +3 -3
  152. package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
  153. package/coverage/lcov-report/src/automations/steps/bash.ts.html +11 -11
  154. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
  155. package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
  156. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
  157. package/coverage/lcov-report/src/automations/steps/discord.ts.html +11 -11
  158. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +9 -9
  159. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +9 -9
  160. package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
  161. package/coverage/lcov-report/src/automations/steps/index.html +75 -75
  162. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
  163. package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
  164. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
  165. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
  166. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +9 -9
  167. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +10 -10
  168. package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
  169. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +9 -9
  170. package/coverage/lcov-report/src/automations/steps/utils.ts.html +12 -12
  171. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +8 -8
  172. package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
  173. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +24 -24
  174. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
  175. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
  176. package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
  177. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
  178. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
  179. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
  181. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
  182. package/coverage/lcov-report/src/automations/triggers.ts.html +53 -38
  183. package/coverage/lcov-report/src/automations/utils.ts.html +69 -69
  184. package/coverage/lcov-report/src/constants/index.html +19 -19
  185. package/coverage/lcov-report/src/constants/index.ts.html +80 -80
  186. package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
  187. package/coverage/lcov-report/src/constants/screens.ts.html +4 -4
  188. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
  189. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
  190. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
  191. package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
  192. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
  193. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
  194. package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
  195. package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
  196. package/coverage/lcov-report/src/db/index.html +32 -32
  197. package/coverage/lcov-report/src/db/index.ts.html +10 -10
  198. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
  199. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
  200. package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
  201. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
  202. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +25 -25
  203. package/coverage/lcov-report/src/db/newid.ts.html +5 -5
  204. package/coverage/lcov-report/src/db/utils.ts.html +76 -76
  205. package/coverage/lcov-report/src/definitions/automations.ts.html +9 -6
  206. package/coverage/lcov-report/src/definitions/index.html +5 -20
  207. package/coverage/lcov-report/src/environment.ts.html +16 -16
  208. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
  209. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
  210. package/coverage/lcov-report/src/events/index.html +20 -20
  211. package/coverage/lcov-report/src/events/index.ts.html +7 -7
  212. package/coverage/lcov-report/src/events/utils.ts.html +11 -11
  213. package/coverage/lcov-report/src/index.html +36 -36
  214. package/coverage/lcov-report/src/index.ts.html +8 -8
  215. package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
  216. package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
  217. package/coverage/lcov-report/src/integrations/base/index.html +28 -28
  218. package/coverage/lcov-report/src/integrations/base/query.ts.html +15 -9
  219. package/coverage/lcov-report/src/integrations/base/sql.ts.html +37 -37
  220. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +22 -22
  221. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  222. package/coverage/lcov-report/src/integrations/couchdb.ts.html +10 -10
  223. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +17 -17
  224. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +9 -9
  225. package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
  226. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +41 -41
  227. package/coverage/lcov-report/src/integrations/index.html +124 -124
  228. package/coverage/lcov-report/src/integrations/index.ts.html +47 -47
  229. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
  230. package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
  231. package/coverage/lcov-report/src/integrations/mysql.ts.html +28 -28
  232. package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
  233. package/coverage/lcov-report/src/integrations/postgres.ts.html +22 -22
  234. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  235. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +18 -153
  236. package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
  237. package/coverage/lcov-report/src/integrations/rest.ts.html +43 -52
  238. package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
  239. package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
  240. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  241. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  242. package/coverage/lcov-report/src/integrations/utils.ts.html +49 -49
  243. package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
  244. package/coverage/lcov-report/src/middleware/authorized.ts.html +49 -37
  245. package/coverage/lcov-report/src/middleware/builder.ts.html +26 -26
  246. package/coverage/lcov-report/src/middleware/currentapp.ts.html +50 -47
  247. package/coverage/lcov-report/src/middleware/index.html +40 -40
  248. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
  249. package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
  250. package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
  251. package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
  252. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  253. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +10 -10
  264. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
  268. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
  269. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
  270. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
  271. package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
  272. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
  273. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
  275. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
  279. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  280. package/coverage/lcov-report/src/migrations/index.html +15 -15
  281. package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
  282. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
  283. package/coverage/lcov-report/src/migrations/tests/index.html +6 -6
  284. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
  285. package/coverage/lcov-report/src/sdk/app/applications/index.html +11 -11
  286. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
  287. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +24 -24
  288. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
  289. package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
  290. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
  291. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  292. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
  293. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
  294. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +24 -24
  295. package/coverage/lcov-report/src/sdk/app/backups/index.html +27 -27
  296. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
  297. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +12 -12
  298. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  299. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  300. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  301. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  302. package/coverage/lcov-report/src/{utilities/statusCodes.ts.html → sdk/app/queries/index.ts.html} +22 -28
  303. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  304. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
  305. package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
  306. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
  307. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  308. package/coverage/lcov-report/src/sdk/app/tables/index.html +15 -15
  309. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +29 -20
  310. package/coverage/lcov-report/src/sdk/index.html +7 -7
  311. package/coverage/lcov-report/src/sdk/index.ts.html +24 -12
  312. package/coverage/lcov-report/src/sdk/users/index.html +6 -6
  313. package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
  314. package/coverage/lcov-report/src/sdk/users/utils.ts.html +29 -29
  315. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  316. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  317. package/coverage/lcov-report/src/startup.ts.html +40 -55
  318. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +141 -132
  319. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
  320. package/coverage/lcov-report/src/tests/utilities/index.html +30 -30
  321. package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
  322. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +232 -43
  323. package/coverage/lcov-report/src/threads/automation.ts.html +225 -195
  324. package/coverage/lcov-report/src/threads/index.html +46 -46
  325. package/coverage/lcov-report/src/threads/index.ts.html +38 -38
  326. package/coverage/lcov-report/src/threads/query.ts.html +73 -34
  327. package/coverage/lcov-report/src/threads/utils.ts.html +26 -26
  328. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +4 -4
  329. package/coverage/lcov-report/src/utilities/centralPath.ts.html +10 -10
  330. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +11 -11
  331. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
  332. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +32 -26
  333. package/coverage/lcov-report/src/utilities/fileSystem/index.html +42 -42
  334. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  335. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +10 -13
  336. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
  337. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
  338. package/coverage/lcov-report/src/utilities/global.ts.html +61 -61
  339. package/coverage/lcov-report/src/utilities/index.html +80 -95
  340. package/coverage/lcov-report/src/utilities/index.ts.html +32 -32
  341. package/coverage/lcov-report/src/utilities/redis.ts.html +35 -35
  342. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  343. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  344. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +32 -32
  345. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +67 -67
  346. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
  347. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +26 -26
  348. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
  349. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +8 -8
  350. package/coverage/lcov-report/src/utilities/security.ts.html +13 -13
  351. package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
  352. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +8 -8
  353. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
  354. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  355. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +61 -34
  356. package/coverage/lcov-report/src/watch.ts.html +20 -20
  357. package/coverage/lcov-report/src/websocket.ts.html +5 -5
  358. package/coverage/lcov.info +11919 -11276
  359. package/dist/api/controllers/application.js +73 -74
  360. package/dist/api/controllers/cloud.js +1 -1
  361. package/dist/api/controllers/datasource.js +24 -15
  362. package/dist/api/controllers/query/index.js +23 -13
  363. package/dist/api/controllers/row/ExternalRequest.js +12 -3
  364. package/dist/api/controllers/row/external.js +20 -13
  365. package/dist/api/controllers/row/internal.js +40 -15
  366. package/dist/api/controllers/row/utils.js +35 -3
  367. package/dist/api/controllers/static/index.js +45 -42
  368. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  369. package/dist/api/controllers/table/external.js +16 -35
  370. package/dist/api/controllers/table/index.js +44 -15
  371. package/dist/api/controllers/table/internal.js +6 -7
  372. package/dist/api/controllers/table/utils.js +9 -9
  373. package/dist/api/controllers/user.js +14 -6
  374. package/dist/api/controllers/view/exporters.js +22 -6
  375. package/dist/api/controllers/view/index.js +20 -56
  376. package/dist/api/controllers/view/viewBuilder.js +15 -2
  377. package/dist/api/controllers/webhook.js +45 -43
  378. package/dist/api/routes/analytics.js +2 -1
  379. package/dist/api/routes/apikeys.js +2 -1
  380. package/dist/api/routes/application.js +2 -1
  381. package/dist/api/routes/auth.js +2 -1
  382. package/dist/api/routes/automation.js +2 -1
  383. package/dist/api/routes/backup.js +2 -1
  384. package/dist/api/routes/cloud.js +2 -1
  385. package/dist/api/routes/component.js +2 -1
  386. package/dist/api/routes/datasource.js +2 -1
  387. package/dist/api/routes/deploy.js +2 -1
  388. package/dist/api/routes/dev.js +2 -1
  389. package/dist/api/routes/index.js +2 -0
  390. package/dist/api/routes/integration.js +2 -1
  391. package/dist/api/routes/layout.js +2 -1
  392. package/dist/api/routes/metadata.js +2 -1
  393. package/dist/api/routes/migrations.js +2 -1
  394. package/dist/api/routes/permission.js +2 -1
  395. package/dist/api/routes/query.js +2 -1
  396. package/dist/api/routes/role.js +2 -1
  397. package/dist/api/routes/routing.js +2 -1
  398. package/dist/api/routes/row.js +2 -2
  399. package/dist/api/routes/screen.js +2 -1
  400. package/dist/api/routes/script.js +2 -1
  401. package/dist/api/routes/static.js +6 -5
  402. package/dist/api/routes/table.js +8 -38
  403. package/dist/api/routes/templates.js +2 -1
  404. package/dist/api/routes/user.js +2 -1
  405. package/dist/api/routes/utils/validators.js +1 -1
  406. package/dist/api/routes/view.js +2 -1
  407. package/dist/api/routes/webhook.js +2 -1
  408. package/dist/app.js +9 -7
  409. package/dist/automations/logging/index.js +5 -25
  410. package/dist/automations/triggers.js +1 -0
  411. package/dist/db/index.js +5 -2
  412. package/dist/db/linkedRows/LinkController.js +2 -1
  413. package/dist/db/linkedRows/LinkDocument.js +2 -1
  414. package/dist/db/newid.js +4 -2
  415. package/dist/definitions/datasource.js +0 -6
  416. package/dist/environment.js +2 -1
  417. package/dist/events/AutomationEmitter.js +2 -1
  418. package/dist/events/BudibaseEmitter.js +2 -1
  419. package/dist/events/index.js +2 -1
  420. package/dist/index.js +2 -2
  421. package/dist/integrations/base/query.js +7 -2
  422. package/dist/integrations/base/sqlTable.js +14 -14
  423. package/dist/integrations/dynamodb.js +8 -5
  424. package/dist/integrations/index.js +5 -5
  425. package/dist/integrations/mongodb.js +311 -271
  426. package/dist/integrations/mysql.js +2 -2
  427. package/dist/integrations/queries/sql.js +73 -100
  428. package/dist/integrations/rest.js +16 -18
  429. package/dist/middleware/authorized.js +2 -1
  430. package/dist/middleware/builder.js +4 -2
  431. package/dist/middleware/currentapp.js +6 -3
  432. package/dist/middleware/publicApi.js +4 -2
  433. package/dist/middleware/selfhost.js +4 -1
  434. package/dist/package.json +9 -7
  435. package/dist/sdk/app/datasources/datasources.js +147 -0
  436. package/dist/sdk/app/datasources/index.js +27 -0
  437. package/dist/sdk/app/queries/index.js +27 -0
  438. package/dist/sdk/app/queries/queries.js +60 -0
  439. package/dist/sdk/app/tables/index.js +6 -2
  440. package/dist/sdk/index.js +4 -0
  441. package/dist/sdk/utils/index.js +29 -0
  442. package/dist/startup.js +17 -17
  443. package/dist/threads/automation.js +18 -7
  444. package/dist/threads/index.js +4 -4
  445. package/dist/threads/query.js +27 -13
  446. package/dist/tsconfig.build.tsbuildinfo +1 -1
  447. package/dist/utilities/fileSystem/filesystem.js +38 -36
  448. package/dist/utilities/fileSystem/plugin.js +17 -14
  449. package/dist/utilities/fileSystem/template.js +7 -4
  450. package/dist/utilities/schema.js +108 -0
  451. package/dist/utilities/scriptRunner.js +2 -1
  452. package/dist/utilities/statusCodes.js +2 -1
  453. package/dist/utilities/workerRequests.js +2 -0
  454. package/dist/watch.js +2 -25
  455. package/jest.config.ts +5 -2
  456. package/package.json +10 -8
  457. package/scripts/dev/manage.js +1 -0
  458. package/src/api/controllers/application.ts +81 -74
  459. package/src/api/controllers/cloud.ts +1 -1
  460. package/src/api/controllers/datasource.ts +33 -25
  461. package/src/api/controllers/query/index.ts +49 -41
  462. package/src/api/controllers/row/ExternalRequest.ts +8 -2
  463. package/src/api/controllers/row/external.ts +24 -14
  464. package/src/api/controllers/row/internal.ts +42 -18
  465. package/src/api/controllers/row/utils.ts +40 -2
  466. package/src/api/controllers/static/index.ts +18 -19
  467. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  468. package/src/api/controllers/table/external.ts +18 -16
  469. package/src/api/controllers/table/index.ts +46 -17
  470. package/src/api/controllers/table/internal.ts +6 -7
  471. package/src/api/controllers/table/utils.ts +12 -13
  472. package/src/api/controllers/user.ts +21 -13
  473. package/src/api/controllers/view/exporters.ts +20 -5
  474. package/src/api/controllers/view/index.ts +22 -35
  475. package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
  476. package/src/api/controllers/view/viewBuilder.ts +1 -1
  477. package/src/api/controllers/webhook.ts +48 -46
  478. package/src/api/routes/analytics.ts +1 -1
  479. package/src/api/routes/apikeys.ts +1 -1
  480. package/src/api/routes/application.ts +1 -1
  481. package/src/api/routes/auth.ts +1 -1
  482. package/src/api/routes/automation.ts +1 -1
  483. package/src/api/routes/backup.ts +1 -1
  484. package/src/api/routes/cloud.ts +1 -1
  485. package/src/api/routes/component.ts +1 -1
  486. package/src/api/routes/datasource.ts +1 -1
  487. package/src/api/routes/deploy.ts +1 -1
  488. package/src/api/routes/dev.ts +1 -1
  489. package/src/api/routes/index.ts +2 -0
  490. package/src/api/routes/integration.ts +1 -1
  491. package/src/api/routes/layout.ts +1 -1
  492. package/src/api/routes/metadata.ts +1 -1
  493. package/src/api/routes/migrations.ts +1 -1
  494. package/src/api/routes/permission.ts +1 -1
  495. package/src/api/routes/query.ts +1 -1
  496. package/src/api/routes/role.ts +1 -1
  497. package/src/api/routes/routing.ts +1 -1
  498. package/src/api/routes/row.ts +1 -1
  499. package/src/api/routes/screen.ts +1 -1
  500. package/src/api/routes/script.ts +1 -1
  501. package/src/api/routes/static.ts +2 -2
  502. package/src/api/routes/table.ts +16 -39
  503. package/src/api/routes/templates.ts +1 -1
  504. package/src/api/routes/tests/datasource.spec.ts +35 -1
  505. package/src/api/routes/tests/misc.spec.js +4 -10
  506. package/src/api/routes/tests/plugin.spec.ts +10 -10
  507. package/src/api/routes/tests/table.spec.js +8 -30
  508. package/src/api/routes/tests/user.spec.js +20 -1
  509. package/src/api/routes/tests/utilities/TestFunctions.ts +1 -1
  510. package/src/api/routes/user.ts +1 -1
  511. package/src/api/routes/utils/validators.ts +1 -1
  512. package/src/api/routes/view.ts +1 -1
  513. package/src/api/routes/webhook.ts +1 -1
  514. package/src/app.ts +5 -3
  515. package/src/automations/logging/index.ts +1 -1
  516. package/src/automations/tests/loop.spec.ts +45 -0
  517. package/src/automations/triggers.ts +6 -1
  518. package/src/db/index.ts +1 -1
  519. package/src/db/linkedRows/LinkController.ts +1 -1
  520. package/src/db/linkedRows/LinkDocument.ts +1 -1
  521. package/src/db/newid.ts +1 -1
  522. package/src/db/tests/linkController.spec.js +1 -1
  523. package/src/definitions/automations.ts +1 -0
  524. package/src/definitions/datasource.ts +0 -41
  525. package/src/environment.ts +1 -1
  526. package/src/events/AutomationEmitter.ts +1 -1
  527. package/src/events/BudibaseEmitter.ts +1 -1
  528. package/src/events/index.ts +1 -1
  529. package/src/index.ts +1 -1
  530. package/src/integrations/base/query.ts +3 -1
  531. package/src/integrations/base/sqlTable.ts +1 -1
  532. package/src/integrations/dynamodb.ts +3 -3
  533. package/src/integrations/index.ts +4 -4
  534. package/src/integrations/mongodb.ts +315 -271
  535. package/src/integrations/mysql.ts +1 -1
  536. package/src/integrations/queries/sql.ts +5 -50
  537. package/src/integrations/rest.ts +16 -19
  538. package/src/integrations/tests/rest.spec.ts +19 -15
  539. package/src/middleware/authorized.ts +5 -1
  540. package/src/middleware/builder.ts +1 -1
  541. package/src/middleware/currentapp.ts +4 -3
  542. package/src/middleware/publicApi.ts +1 -1
  543. package/src/middleware/selfhost.ts +1 -1
  544. package/src/middleware/tests/authorized.spec.js +1 -1
  545. package/src/middleware/tests/currentapp.spec.js +1 -1
  546. package/src/middleware/tests/selfhost.spec.js +1 -1
  547. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  548. package/src/sdk/app/datasources/datasources.ts +136 -0
  549. package/src/sdk/app/datasources/index.ts +5 -0
  550. package/src/sdk/app/queries/index.ts +5 -0
  551. package/src/sdk/app/queries/queries.ts +50 -0
  552. package/src/sdk/app/tables/index.ts +6 -3
  553. package/src/sdk/index.ts +4 -0
  554. package/src/sdk/utils/index.ts +16 -0
  555. package/src/startup.ts +3 -8
  556. package/src/tests/jestEnv.ts +13 -0
  557. package/src/tests/jestSetup.ts +0 -14
  558. package/src/tests/utilities/TestConfiguration.ts +16 -13
  559. package/src/tests/utilities/structures.ts +65 -2
  560. package/src/threads/automation.ts +18 -8
  561. package/src/threads/definitions.ts +3 -0
  562. package/src/threads/index.ts +1 -1
  563. package/src/threads/query.ts +28 -15
  564. package/src/utilities/fileSystem/filesystem.ts +7 -5
  565. package/src/utilities/fileSystem/plugin.ts +3 -4
  566. package/src/utilities/fileSystem/template.ts +2 -2
  567. package/src/utilities/schema.ts +141 -0
  568. package/src/utilities/scriptRunner.ts +1 -1
  569. package/src/utilities/statusCodes.ts +1 -1
  570. package/src/utilities/workerRequests.ts +10 -1
  571. package/src/watch.ts +1 -1
  572. package/tsconfig.json +2 -1
  573. package/builder/assets/index.fa480d5b.css +0 -6
  574. package/dist/utilities/csvParser.js +0 -152
  575. package/src/utilities/csvParser.ts +0 -161
  576. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  577. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">41.66% </span>
26
+ <span class="strong">58.74% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>90/216</span>
28
+ <span class='fraction'>131/223</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">17.77% </span>
33
+ <span class="strong">45.78% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>16/90</span>
35
+ <span class='fraction'>38/83</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">42.1% </span>
40
+ <span class="strong">52.63% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>8/19</span>
42
+ <span class='fraction'>10/19</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">41.23% </span>
47
+ <span class="strong">58.37% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>87/211</span>
49
+ <span class='fraction'>129/221</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -543,22 +543,32 @@
543
543
  <a name='L478'></a><a href='#L478'>478</a>
544
544
  <a name='L479'></a><a href='#L479'>479</a>
545
545
  <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">54x</span>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
547
557
  <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-yes">54x</span>
549
- <span class="cline-any cline-yes">54x</span>
558
+ <span class="cline-any cline-yes">55x</span>
550
559
  <span class="cline-any cline-neutral">&nbsp;</span>
551
560
  <span class="cline-any cline-neutral">&nbsp;</span>
552
561
  <span class="cline-any cline-neutral">&nbsp;</span>
553
562
  <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-yes">54x</span>
555
- <span class="cline-any cline-yes">54x</span>
556
- <span class="cline-any cline-yes">54x</span>
557
- <span class="cline-any cline-yes">54x</span>
558
- <span class="cline-any cline-yes">54x</span>
559
- <span class="cline-any cline-yes">54x</span>
560
- <span class="cline-any cline-yes">54x</span>
561
- <span class="cline-any cline-yes">54x</span>
563
+ <span class="cline-any cline-yes">55x</span>
564
+ <span class="cline-any cline-yes">55x</span>
565
+ <span class="cline-any cline-yes">55x</span>
566
+ <span class="cline-any cline-yes">55x</span>
567
+ <span class="cline-any cline-yes">55x</span>
568
+ <span class="cline-any cline-yes">55x</span>
569
+ <span class="cline-any cline-yes">55x</span>
570
+ <span class="cline-any cline-yes">55x</span>
571
+ <span class="cline-any cline-yes">55x</span>
562
572
  <span class="cline-any cline-neutral">&nbsp;</span>
563
573
  <span class="cline-any cline-neutral">&nbsp;</span>
564
574
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -567,24 +577,28 @@
567
577
  <span class="cline-any cline-neutral">&nbsp;</span>
568
578
  <span class="cline-any cline-neutral">&nbsp;</span>
569
579
  <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-yes">55x</span>
581
+ <span class="cline-any cline-yes">55x</span>
582
+ <span class="cline-any cline-yes">55x</span>
583
+ <span class="cline-any cline-yes">55x</span>
584
+ <span class="cline-any cline-yes">55x</span>
585
+ <span class="cline-any cline-yes">55x</span>
586
+ <span class="cline-any cline-yes">55x</span>
587
+ <span class="cline-any cline-yes">55x</span>
588
+ <span class="cline-any cline-yes">55x</span>
570
589
  <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-yes">54x</span>
572
- <span class="cline-any cline-yes">54x</span>
573
- <span class="cline-any cline-yes">54x</span>
574
- <span class="cline-any cline-yes">54x</span>
575
- <span class="cline-any cline-yes">54x</span>
576
- <span class="cline-any cline-yes">54x</span>
577
- <span class="cline-any cline-yes">54x</span>
578
- <span class="cline-any cline-yes">54x</span>
579
590
  <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-yes">2x</span>
592
+ <span class="cline-any cline-yes">2x</span>
593
+ <span class="cline-any cline-yes">1x</span>
580
594
  <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-yes">1x</span>
585
596
  <span class="cline-any cline-no">&nbsp;</span>
586
597
  <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-yes">1x</span>
599
+ <span class="cline-any cline-yes">1x</span>
587
600
  <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-no">&nbsp;</span>
588
602
  <span class="cline-any cline-neutral">&nbsp;</span>
589
603
  <span class="cline-any cline-neutral">&nbsp;</span>
590
604
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -602,42 +616,42 @@
602
616
  <span class="cline-any cline-neutral">&nbsp;</span>
603
617
  <span class="cline-any cline-neutral">&nbsp;</span>
604
618
  <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-yes">7x</span>
606
- <span class="cline-any cline-yes">7x</span>
607
- <span class="cline-any cline-yes">7x</span>
608
- <span class="cline-any cline-yes">7x</span>
609
- <span class="cline-any cline-yes">7x</span>
610
- <span class="cline-any cline-yes">7x</span>
611
- <span class="cline-any cline-yes">7x</span>
612
- <span class="cline-any cline-yes">7x</span>
619
+ <span class="cline-any cline-yes">9x</span>
620
+ <span class="cline-any cline-yes">9x</span>
621
+ <span class="cline-any cline-yes">9x</span>
622
+ <span class="cline-any cline-yes">9x</span>
623
+ <span class="cline-any cline-yes">9x</span>
624
+ <span class="cline-any cline-yes">9x</span>
625
+ <span class="cline-any cline-yes">9x</span>
626
+ <span class="cline-any cline-yes">9x</span>
613
627
  <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-yes">7x</span>
615
- <span class="cline-any cline-yes">7x</span>
628
+ <span class="cline-any cline-yes">9x</span>
629
+ <span class="cline-any cline-yes">9x</span>
616
630
  <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-yes">7x</span>
618
- <span class="cline-any cline-yes">7x</span>
631
+ <span class="cline-any cline-yes">9x</span>
632
+ <span class="cline-any cline-yes">9x</span>
619
633
  <span class="cline-any cline-neutral">&nbsp;</span>
620
634
  <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-yes">7x</span>
622
- <span class="cline-any cline-yes">7x</span>
635
+ <span class="cline-any cline-yes">9x</span>
636
+ <span class="cline-any cline-yes">9x</span>
623
637
  <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-yes">7x</span>
625
- <span class="cline-any cline-yes">7x</span>
638
+ <span class="cline-any cline-yes">9x</span>
639
+ <span class="cline-any cline-yes">9x</span>
626
640
  <span class="cline-any cline-neutral">&nbsp;</span>
627
641
  <span class="cline-any cline-neutral">&nbsp;</span>
628
642
  <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-yes">7x</span>
643
+ <span class="cline-any cline-yes">9x</span>
630
644
  <span class="cline-any cline-no">&nbsp;</span>
631
645
  <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-yes">7x</span>
646
+ <span class="cline-any cline-yes">9x</span>
633
647
  <span class="cline-any cline-neutral">&nbsp;</span>
634
648
  <span class="cline-any cline-neutral">&nbsp;</span>
635
649
  <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-yes">5x</span>
637
- <span class="cline-any cline-yes">5x</span>
650
+ <span class="cline-any cline-yes">11x</span>
651
+ <span class="cline-any cline-yes">11x</span>
638
652
  <span class="cline-any cline-no">&nbsp;</span>
639
653
  <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-yes">5x</span>
654
+ <span class="cline-any cline-yes">11x</span>
641
655
  <span class="cline-any cline-neutral">&nbsp;</span>
642
656
  <span class="cline-any cline-neutral">&nbsp;</span>
643
657
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -719,9 +733,9 @@
719
733
  <span class="cline-any cline-neutral">&nbsp;</span>
720
734
  <span class="cline-any cline-neutral">&nbsp;</span>
721
735
  <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-yes">12x</span>
736
+ <span class="cline-any cline-yes">16x</span>
723
737
  <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-yes">12x</span>
738
+ <span class="cline-any cline-yes">16x</span>
725
739
  <span class="cline-any cline-neutral">&nbsp;</span>
726
740
  <span class="cline-any cline-neutral">&nbsp;</span>
727
741
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -730,13 +744,13 @@
730
744
  <span class="cline-any cline-no">&nbsp;</span>
731
745
  <span class="cline-any cline-neutral">&nbsp;</span>
732
746
  <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-yes">12x</span>
747
+ <span class="cline-any cline-yes">16x</span>
734
748
  <span class="cline-any cline-neutral">&nbsp;</span>
735
749
  <span class="cline-any cline-neutral">&nbsp;</span>
736
750
  <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-yes">7x</span>
751
+ <span class="cline-any cline-yes">9x</span>
738
752
  <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-yes">12x</span>
753
+ <span class="cline-any cline-yes">16x</span>
740
754
  <span class="cline-any cline-neutral">&nbsp;</span>
741
755
  <span class="cline-any cline-neutral">&nbsp;</span>
742
756
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -766,17 +780,19 @@
766
780
  <span class="cline-any cline-neutral">&nbsp;</span>
767
781
  <span class="cline-any cline-neutral">&nbsp;</span>
768
782
  <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-yes">7x</span>
770
- <span class="cline-any cline-yes">7x</span>
771
- <span class="cline-any cline-yes">7x</span>
772
783
  <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-yes">7x</span>
774
- <span class="cline-any cline-yes">7x</span>
775
- <span class="cline-any cline-yes">7x</span>
784
+ <span class="cline-any cline-yes">9x</span>
785
+ <span class="cline-any cline-yes">8x</span>
786
+ <span class="cline-any cline-yes">8x</span>
787
+ <span class="cline-any cline-yes">8x</span>
776
788
  <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-yes">7x</span>
789
+ <span class="cline-any cline-yes">8x</span>
790
+ <span class="cline-any cline-yes">8x</span>
791
+ <span class="cline-any cline-yes">8x</span>
778
792
  <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-yes">7x</span>
793
+ <span class="cline-any cline-yes">8x</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-yes">8x</span>
780
796
  <span class="cline-any cline-no">&nbsp;</span>
781
797
  <span class="cline-any cline-no">&nbsp;</span>
782
798
  <span class="cline-any cline-no">&nbsp;</span>
@@ -784,34 +800,34 @@
784
800
  <span class="cline-any cline-neutral">&nbsp;</span>
785
801
  <span class="cline-any cline-neutral">&nbsp;</span>
786
802
  <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-yes">7x</span>
788
- <span class="cline-any cline-yes">5x</span>
803
+ <span class="cline-any cline-yes">8x</span>
804
+ <span class="cline-any cline-yes">11x</span>
789
805
  <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-yes">5x</span>
791
- <span class="cline-any cline-yes">5x</span>
806
+ <span class="cline-any cline-yes">11x</span>
807
+ <span class="cline-any cline-yes">11x</span>
792
808
  <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-yes">5x</span>
794
- <span class="cline-any cline-no">&nbsp;</span>
795
- <span class="cline-any cline-no">&nbsp;</span>
796
- <span class="cline-any cline-no">&nbsp;</span>
809
+ <span class="cline-any cline-yes">11x</span>
810
+ <span class="cline-any cline-yes">2x</span>
811
+ <span class="cline-any cline-yes">2x</span>
812
+ <span class="cline-any cline-yes">2x</span>
797
813
  <span class="cline-any cline-neutral">&nbsp;</span>
798
814
  <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-yes">5x</span>
800
- <span class="cline-any cline-no">&nbsp;</span>
801
- <span class="cline-any cline-no">&nbsp;</span>
815
+ <span class="cline-any cline-yes">9x</span>
816
+ <span class="cline-any cline-yes">2x</span>
817
+ <span class="cline-any cline-yes">2x</span>
802
818
  <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-yes">5x</span>
804
- <span class="cline-any cline-yes">5x</span>
819
+ <span class="cline-any cline-yes">9x</span>
820
+ <span class="cline-any cline-yes">11x</span>
805
821
  <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-yes">5x</span>
807
- <span class="cline-any cline-no">&nbsp;</span>
822
+ <span class="cline-any cline-yes">11x</span>
823
+ <span class="cline-any cline-yes">3x</span>
808
824
  <span class="cline-any cline-neutral">&nbsp;</span>
809
825
  <span class="cline-any cline-neutral">&nbsp;</span>
810
826
  <span class="cline-any cline-neutral">&nbsp;</span>
811
827
  <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-no">&nbsp;</span>
813
- <span class="cline-any cline-no">&nbsp;</span>
814
- <span class="cline-any cline-no">&nbsp;</span>
828
+ <span class="cline-any cline-yes">3x</span>
829
+ <span class="cline-any cline-yes">3x</span>
830
+ <span class="cline-any cline-yes">3x</span>
815
831
  <span class="cline-any cline-neutral">&nbsp;</span>
816
832
  <span class="cline-any cline-neutral">&nbsp;</span>
817
833
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -825,23 +841,23 @@
825
841
  <span class="cline-any cline-no">&nbsp;</span>
826
842
  <span class="cline-any cline-neutral">&nbsp;</span>
827
843
  <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-no">&nbsp;</span>
844
+ <span class="cline-any cline-yes">3x</span>
845
+ <span class="cline-any cline-yes">3x</span>
830
846
  <span class="cline-any cline-neutral">&nbsp;</span>
831
847
  <span class="cline-any cline-neutral">&nbsp;</span>
832
848
  <span class="cline-any cline-neutral">&nbsp;</span>
833
849
  <span class="cline-any cline-no">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-yes">3x</span>
835
851
  <span class="cline-any cline-no">&nbsp;</span>
836
852
  <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-no">&nbsp;</span>
853
+ <span class="cline-any cline-yes">3x</span>
838
854
  <span class="cline-any cline-neutral">&nbsp;</span>
839
855
  <span class="cline-any cline-neutral">&nbsp;</span>
840
856
  <span class="cline-any cline-neutral">&nbsp;</span>
841
857
  <span class="cline-any cline-neutral">&nbsp;</span>
842
858
  <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-no">&nbsp;</span>
844
- <span class="cline-any cline-no">&nbsp;</span>
859
+ <span class="cline-any cline-yes">3x</span>
860
+ <span class="cline-any cline-yes">3x</span>
845
861
  <span class="cline-any cline-no">&nbsp;</span>
846
862
  <span class="cline-any cline-neutral">&nbsp;</span>
847
863
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -864,15 +880,15 @@
864
880
  <span class="cline-any cline-neutral">&nbsp;</span>
865
881
  <span class="cline-any cline-neutral">&nbsp;</span>
866
882
  <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-no">&nbsp;</span>
868
- <span class="cline-any cline-no">&nbsp;</span>
883
+ <span class="cline-any cline-yes">3x</span>
884
+ <span class="cline-any cline-yes">3x</span>
869
885
  <span class="cline-any cline-neutral">&nbsp;</span>
870
886
  <span class="cline-any cline-neutral">&nbsp;</span>
871
887
  <span class="cline-any cline-neutral">&nbsp;</span>
872
888
  <span class="cline-any cline-neutral">&nbsp;</span>
873
889
  <span class="cline-any cline-neutral">&nbsp;</span>
874
890
  <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-no">&nbsp;</span>
891
+ <span class="cline-any cline-yes">3x</span>
876
892
  <span class="cline-any cline-neutral">&nbsp;</span>
877
893
  <span class="cline-any cline-neutral">&nbsp;</span>
878
894
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -885,17 +901,17 @@
885
901
  <span class="cline-any cline-no">&nbsp;</span>
886
902
  <span class="cline-any cline-neutral">&nbsp;</span>
887
903
  <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-no">&nbsp;</span>
889
- <span class="cline-any cline-no">&nbsp;</span>
890
- <span class="cline-any cline-no">&nbsp;</span>
904
+ <span class="cline-any cline-yes">3x</span>
905
+ <span class="cline-any cline-yes">3x</span>
906
+ <span class="cline-any cline-yes">3x</span>
891
907
  <span class="cline-any cline-no">&nbsp;</span>
892
908
  <span class="cline-any cline-no">&nbsp;</span>
893
909
  <span class="cline-any cline-neutral">&nbsp;</span>
894
910
  <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-no">&nbsp;</span>
911
+ <span class="cline-any cline-yes">3x</span>
896
912
  <span class="cline-any cline-neutral">&nbsp;</span>
897
913
  <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-no">&nbsp;</span>
914
+ <span class="cline-any cline-yes">3x</span>
899
915
  <span class="cline-any cline-no">&nbsp;</span>
900
916
  <span class="cline-any cline-neutral">&nbsp;</span>
901
917
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -907,29 +923,29 @@
907
923
  <span class="cline-any cline-neutral">&nbsp;</span>
908
924
  <span class="cline-any cline-neutral">&nbsp;</span>
909
925
  <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-yes">5x</span>
926
+ <span class="cline-any cline-yes">11x</span>
911
927
  <span class="cline-any cline-no">&nbsp;</span>
912
928
  <span class="cline-any cline-no">&nbsp;</span>
913
929
  <span class="cline-any cline-neutral">&nbsp;</span>
914
930
  <span class="cline-any cline-neutral">&nbsp;</span>
915
931
  <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-yes">5x</span>
917
- <span class="cline-any cline-yes">5x</span>
918
- <span class="cline-any cline-yes">5x</span>
932
+ <span class="cline-any cline-yes">11x</span>
933
+ <span class="cline-any cline-yes">11x</span>
934
+ <span class="cline-any cline-yes">11x</span>
919
935
  <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">5x</span>
936
+ <span class="cline-any cline-yes">11x</span>
921
937
  <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-yes">5x</span>
938
+ <span class="cline-any cline-yes">11x</span>
923
939
  <span class="cline-any cline-neutral">&nbsp;</span>
924
940
  <span class="cline-any cline-neutral">&nbsp;</span>
925
941
  <span class="cline-any cline-neutral">&nbsp;</span>
926
942
  <span class="cline-any cline-neutral">&nbsp;</span>
927
943
  <span class="cline-any cline-neutral">&nbsp;</span>
928
944
  <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-yes">5x</span>
945
+ <span class="cline-any cline-yes">11x</span>
930
946
  <span class="cline-any cline-neutral">&nbsp;</span>
931
947
  <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-yes">5x</span>
948
+ <span class="cline-any cline-yes">11x</span>
933
949
  <span class="cline-any cline-no">&nbsp;</span>
934
950
  <span class="cline-any cline-no">&nbsp;</span>
935
951
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -937,10 +953,10 @@
937
953
  <span class="cline-any cline-neutral">&nbsp;</span>
938
954
  <span class="cline-any cline-no">&nbsp;</span>
939
955
  <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-yes">5x</span>
941
- <span class="cline-any cline-no">&nbsp;</span>
956
+ <span class="cline-any cline-yes">11x</span>
957
+ <span class="cline-any cline-yes">4x</span>
942
958
  <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-yes">5x</span>
959
+ <span class="cline-any cline-yes">7x</span>
944
960
  <span class="cline-any cline-neutral">&nbsp;</span>
945
961
  <span class="cline-any cline-neutral">&nbsp;</span>
946
962
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -952,77 +968,81 @@
952
968
  <span class="cline-any cline-no">&nbsp;</span>
953
969
  <span class="cline-any cline-neutral">&nbsp;</span>
954
970
  <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-yes">5x</span>
956
- <span class="cline-any cline-no">&nbsp;</span>
957
- <span class="cline-any cline-no">&nbsp;</span>
958
- <span class="cline-any cline-no">&nbsp;</span>
959
- <span class="cline-any cline-no">&nbsp;</span>
960
- <span class="cline-any cline-no">&nbsp;</span>
971
+ <span class="cline-any cline-yes">11x</span>
972
+ <span class="cline-any cline-yes">4x</span>
973
+ <span class="cline-any cline-yes">4x</span>
974
+ <span class="cline-any cline-yes">2x</span>
975
+ <span class="cline-any cline-yes">2x</span>
976
+ <span class="cline-any cline-yes">2x</span>
961
977
  <span class="cline-any cline-neutral">&nbsp;</span>
962
978
  <span class="cline-any cline-neutral">&nbsp;</span>
963
979
  <span class="cline-any cline-neutral">&nbsp;</span>
964
980
  <span class="cline-any cline-neutral">&nbsp;</span>
965
981
  <span class="cline-any cline-neutral">&nbsp;</span>
966
982
  <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-yes">5x</span>
983
+ <span class="cline-any cline-yes">9x</span>
968
984
  <span class="cline-any cline-no">&nbsp;</span>
969
985
  <span class="cline-any cline-no">&nbsp;</span>
970
986
  <span class="cline-any cline-neutral">&nbsp;</span>
971
987
  <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-yes">5x</span>
973
- <span class="cline-any cline-no">&nbsp;</span>
988
+ <span class="cline-any cline-yes">9x</span>
989
+ <span class="cline-any cline-yes">2x</span>
974
990
  <span class="cline-any cline-neutral">&nbsp;</span>
975
991
  <span class="cline-any cline-neutral">&nbsp;</span>
976
992
  <span class="cline-any cline-neutral">&nbsp;</span>
977
993
  <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-no">&nbsp;</span>
994
+ <span class="cline-any cline-yes">2x</span>
979
995
  <span class="cline-any cline-neutral">&nbsp;</span>
980
996
  <span class="cline-any cline-neutral">&nbsp;</span>
981
997
  <span class="cline-any cline-neutral">&nbsp;</span>
982
998
  <span class="cline-any cline-neutral">&nbsp;</span>
983
999
  <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-no">&nbsp;</span>
1000
+ <span class="cline-any cline-yes">2x</span>
985
1001
  <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-no">&nbsp;</span>
987
- <span class="cline-any cline-no">&nbsp;</span>
1002
+ <span class="cline-any cline-yes">2x</span>
1003
+ <span class="cline-any cline-yes">2x</span>
988
1004
  <span class="cline-any cline-neutral">&nbsp;</span>
989
1005
  <span class="cline-any cline-neutral">&nbsp;</span>
990
1006
  <span class="cline-any cline-neutral">&nbsp;</span>
991
1007
  <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-yes">7x</span>
993
- <span class="cline-any cline-yes">6x</span>
1008
+ <span class="cline-any cline-yes">8x</span>
1009
+ <span class="cline-any cline-yes">8x</span>
994
1010
  <span class="cline-any cline-no">&nbsp;</span>
995
1011
  <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-yes">6x</span>
1012
+ <span class="cline-any cline-yes">8x</span>
997
1013
  <span class="cline-any cline-neutral">&nbsp;</span>
998
1014
  <span class="cline-any cline-neutral">&nbsp;</span>
999
1015
  <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-yes">54x</span>
1001
- <span class="cline-any cline-yes">7x</span>
1002
- <span class="cline-any cline-yes">7x</span>
1016
+ <span class="cline-any cline-yes">10x</span>
1017
+ <span class="cline-any cline-yes">9x</span>
1018
+ <span class="cline-any cline-yes">9x</span>
1003
1019
  <span class="cline-any cline-no">&nbsp;</span>
1004
1020
  <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">7x</span>
1006
- <span class="cline-any cline-yes">7x</span>
1007
- <span class="cline-any cline-yes">7x</span>
1008
- <span class="cline-any cline-yes">7x</span>
1009
- <span class="cline-any cline-yes">6x</span>
1021
+ <span class="cline-any cline-yes">9x</span>
1022
+ <span class="cline-any cline-yes">9x</span>
1023
+ <span class="cline-any cline-yes">9x</span>
1024
+ <span class="cline-any cline-yes">9x</span>
1025
+ <span class="cline-any cline-yes">8x</span>
1010
1026
  <span class="cline-any cline-neutral">&nbsp;</span>
1011
1027
  <span class="cline-any cline-no">&nbsp;</span>
1012
1028
  <span class="cline-any cline-neutral">&nbsp;</span>
1013
1029
  <span class="cline-any cline-neutral">&nbsp;</span>
1014
1030
  <span class="cline-any cline-neutral">&nbsp;</span>
1015
1031
  <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-yes">54x</span>
1032
+ <span class="cline-any cline-yes">55x</span>
1017
1033
  <span class="cline-any cline-no">&nbsp;</span>
1018
1034
  <span class="cline-any cline-no">&nbsp;</span>
1019
1035
  <span class="cline-any cline-no">&nbsp;</span>
1020
1036
  <span class="cline-any cline-neutral">&nbsp;</span>
1021
1037
  <span class="cline-any cline-no">&nbsp;</span>
1022
1038
  <span class="cline-any cline-no">&nbsp;</span>
1039
+ <span class="cline-any cline-neutral">&nbsp;</span>
1040
+ <span class="cline-any cline-no">&nbsp;</span>
1041
+ <span class="cline-any cline-no">&nbsp;</span>
1023
1042
  <span class="cline-any cline-no">&nbsp;</span>
1024
1043
  <span class="cline-any cline-neutral">&nbsp;</span>
1025
1044
  <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1026
1046
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { default as threadUtils } from "./utils"
1027
1047
  import { Job } from "bull"
1028
1048
  threadUtils.threadSetup()
@@ -1041,7 +1061,6 @@ import { storeLog } from "../automations/logging"
1041
1061
  import { Automation, AutomationStep, AutomationStatus } from "@budibase/types"
1042
1062
  import {
1043
1063
  LoopStep,
1044
- LoopStepType,
1045
1064
  LoopInput,
1046
1065
  TriggerOutput,
1047
1066
  AutomationContext,
@@ -1051,20 +1070,25 @@ import { WorkerCallback } from "./definitions"
1051
1070
  import { context, logging } from "@budibase/backend-core"
1052
1071
  import { processObject } from "@budibase/string-templates"
1053
1072
  import { cloneDeep } from "lodash/fp"
1073
+ import * as sdkUtils from "../sdk/utils"
1054
1074
  import env from "../environment"
1055
1075
  const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId
1056
1076
  const LOOP_STEP_ID = actions.ACTION_DEFINITIONS.LOOP.stepId
1057
1077
  const CRON_STEP_ID = triggerDefs.CRON.stepId
1058
1078
  const STOPPED_STATUS = { success: true, status: AutomationStatus.STOPPED }
1059
1079
  &nbsp;
1060
- function <span class="fstat-no" title="function not covered" >getLoopIterations(</span>loopStep: LoopStep, input: LoopInput) {
1061
- const binding = <span class="cstat-no" title="statement not covered" >automationUtils.typecastForLooping(loopStep, input)</span>
1062
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!loopStep || !binding) {</span>
1063
- <span class="cstat-no" title="statement not covered" > return 1</span>
1080
+ function getLoopIterations(loopStep: LoopStep, input: LoopInput) {
1081
+ const binding = automationUtils.typecastForLooping(loopStep, input)
1082
+ if (!loopStep || !binding) {
1083
+ return 1
1084
+ }
1085
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(binding)) {
1086
+ <span class="cstat-no" title="statement not covered" > return binding.length</span>
1064
1087
  }
1065
- <span class="cstat-no" title="statement not covered" > return Array.isArray(binding)</span>
1066
- ? binding.length
1067
- : automationUtils.stringSplit(binding).length
1088
+ if (typeof binding === "string") {
1089
+ return automationUtils.stringSplit(binding).length
1090
+ }
1091
+ <span class="cstat-no" title="statement not covered" > return 1</span>
1068
1092
  }
1069
1093
  &nbsp;
1070
1094
  /**
@@ -1120,7 +1144,7 @@ class Orchestrator {
1120
1144
  return step
1121
1145
  }
1122
1146
  &nbsp;
1123
- async <span class="fstat-no" title="function not covered" >getMetadata(</span>): Promise&lt;AutomationMetadata&gt; {
1147
+ <span class="fstat-no" title="function not covered" > async g</span>etMetadata(): Promise&lt;AutomationMetadata&gt; {
1124
1148
  const metadataId = <span class="cstat-no" title="statement not covered" >generateAutomationMetadataID(this._automation._id!)</span>
1125
1149
  const db = <span class="cstat-no" title="statement not covered" >context.getAppDB()</span>
1126
1150
  let metadata: AutomationMetadata
@@ -1135,7 +1159,7 @@ class Orchestrator {
1135
1159
  <span class="cstat-no" title="statement not covered" > return metadata</span>
1136
1160
  }
1137
1161
  &nbsp;
1138
- async <span class="fstat-no" title="function not covered" >stopCron(</span>reason: string) {
1162
+ <span class="fstat-no" title="function not covered" > async s</span>topCron(reason: string) {
1139
1163
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this._job.opts.repeat) {</span>
1140
1164
  <span class="cstat-no" title="statement not covered" > return</span>
1141
1165
  }
@@ -1157,7 +1181,7 @@ class Orchestrator {
1157
1181
  <span class="cstat-no" title="statement not covered" > await storeLog(automation, this.executionOutput)</span>
1158
1182
  }
1159
1183
  &nbsp;
1160
- async <span class="fstat-no" title="function not covered" >checkIfShouldStop(</span>metadata: AutomationMetadata): Promise&lt;boolean&gt; {
1184
+ <span class="fstat-no" title="function not covered" > async c</span>heckIfShouldStop(metadata: AutomationMetadata): Promise&lt;boolean&gt; {
1161
1185
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!metadata.errorCount || !this._job.opts.repeat) {</span>
1162
1186
  <span class="cstat-no" title="statement not covered" > return false</span>
1163
1187
  }
@@ -1168,7 +1192,7 @@ class Orchestrator {
1168
1192
  <span class="cstat-no" title="statement not covered" > return false</span>
1169
1193
  }
1170
1194
  &nbsp;
1171
- async <span class="fstat-no" title="function not covered" >updateMetadata(</span>metadata: AutomationMetadata) {
1195
+ <span class="fstat-no" title="function not covered" > async u</span>pdateMetadata(metadata: AutomationMetadata) {
1172
1196
  const output = <span class="cstat-no" title="statement not covered" >this.executionOutput,</span>
1173
1197
  automation = <span class="cstat-no" title="statement not covered" >this._automation</span>
1174
1198
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!output || !isRecurring(automation)) {</span>
@@ -1246,6 +1270,8 @@ class Orchestrator {
1246
1270
  }
1247
1271
  &nbsp;
1248
1272
  async execute() {
1273
+ // this will retrieve from context created at start of thread
1274
+ this._context.env = await sdkUtils.getEnvironmentVariables()
1249
1275
  let automation = this._automation
1250
1276
  let stopped = false
1251
1277
  let loopStep: AutomationStep | undefined = undefined
@@ -1256,7 +1282,7 @@ class Orchestrator {
1256
1282
  let metadata
1257
1283
  let wasLoopStep = false
1258
1284
  // check if this is a recurring automation,
1259
- <span class="missing-if-branch" title="if path not taken" >I</span>if (isProdAppID(this._appId) &amp;&amp; isRecurring(automation)) {
1285
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (isProdAppID(this._appId) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >isRecurring(automation)) {</span>
1260
1286
  <span class="cstat-no" title="statement not covered" > metadata = await this.getMetadata()</span>
1261
1287
  const shouldStop = <span class="cstat-no" title="statement not covered" >await this.checkIfShouldStop(metadata)</span>
1262
1288
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (shouldStop) {</span>
@@ -1270,28 +1296,28 @@ class Orchestrator {
1270
1296
  iterations = 1,
1271
1297
  iterationCount = 0
1272
1298
  &nbsp;
1273
- <span class="missing-if-branch" title="if path not taken" >I</span>if (step.stepId === LOOP_STEP_ID) {
1274
- <span class="cstat-no" title="statement not covered" > loopStep = step</span>
1275
- <span class="cstat-no" title="statement not covered" > loopStepNumber = stepCount</span>
1276
- <span class="cstat-no" title="statement not covered" > continue</span>
1299
+ if (step.stepId === LOOP_STEP_ID) {
1300
+ loopStep = step
1301
+ loopStepNumber = stepCount
1302
+ continue
1277
1303
  }
1278
1304
  &nbsp;
1279
- <span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep) {
1280
- <span class="cstat-no" title="statement not covered" > input = await processObject(loopStep.inputs, this._context)</span>
1281
- <span class="cstat-no" title="statement not covered" > iterations = getLoopIterations(loopStep as LoopStep, input)</span>
1305
+ if (loopStep) {
1306
+ input = await processObject(loopStep.inputs, this._context)
1307
+ iterations = getLoopIterations(loopStep as LoopStep, input)
1282
1308
  }
1283
1309
  for (let index = 0; index &lt; iterations; index++) {
1284
1310
  let originalStepInput = cloneDeep(step.inputs)
1285
1311
  // Handle if the user has set a max iteration count or if it reaches the max limit set by us
1286
- <span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >input.binding)</span> {
1287
- let newInput: any = <span class="cstat-no" title="statement not covered" >await processObject(</span>
1312
+ if (loopStep &amp;&amp; input.binding) {
1313
+ let newInput: any = await processObject(
1288
1314
  loopStep.inputs,
1289
1315
  cloneDeep(this._context)
1290
1316
  )
1291
1317
  &nbsp;
1292
- let tempOutput = <span class="cstat-no" title="statement not covered" >{ items: loopSteps, iterations: iterationCount }</span>
1293
- <span class="cstat-no" title="statement not covered" > try {</span>
1294
- <span class="cstat-no" title="statement not covered" > newInput.binding = automationUtils.typecastForLooping(</span>
1318
+ let tempOutput = { items: loopSteps, iterations: iterationCount }
1319
+ try {
1320
+ newInput.binding = automationUtils.typecastForLooping(
1295
1321
  loopStep as LoopStep,
1296
1322
  newInput
1297
1323
  )
@@ -1305,23 +1331,23 @@ class Orchestrator {
1305
1331
  <span class="cstat-no" title="statement not covered" > break</span>
1306
1332
  }
1307
1333
  &nbsp;
1308
- let item
1309
- <span class="cstat-no" title="statement not covered" > if (</span>
1334
+ let item = []
1335
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
1310
1336
  typeof loopStep.inputs.binding === "string" &amp;&amp;
1311
1337
  loopStep.inputs.option === "String"
1312
1338
  ) {
1313
1339
  <span class="cstat-no" title="statement not covered" > item = automationUtils.stringSplit(newInput.binding)</span>
1314
- } else {
1340
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(loopStep.inputs.binding)) {
1315
1341
  <span class="cstat-no" title="statement not covered" > item = loopStep.inputs.binding</span>
1316
1342
  }
1317
- <span class="cstat-no" title="statement not covered" > this._context.steps[loopStepNumber] = {</span>
1343
+ this._context.steps[loopStepNumber] = {
1318
1344
  currentItem: item[index],
1319
1345
  }
1320
1346
  &nbsp;
1321
1347
  // The "Loop" binding in the front end is "fake", so replace it here so the context can understand it
1322
1348
  // Pretty hacky because we need to account for the row object
1323
- <span class="cstat-no" title="statement not covered" > for (let [key, value] of Object.entries(originalStepInput)) {</span>
1324
- <span class="cstat-no" title="statement not covered" > if (typeof value === "object") {</span>
1349
+ for (let [key, value] of Object.entries(originalStepInput)) {
1350
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof value === "object") {
1325
1351
  <span class="cstat-no" title="statement not covered" > for (let [innerKey, innerValue] of Object.entries(</span>
1326
1352
  originalStepInput[key]
1327
1353
  )) {
@@ -1344,15 +1370,15 @@ class Orchestrator {
1344
1370
  }
1345
1371
  }
1346
1372
  } else {
1347
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof value === "string") {</span>
1348
- <span class="cstat-no" title="statement not covered" > originalStepInput[key] = automationUtils.substituteLoopStep(</span>
1373
+ if (typeof value === "string") {
1374
+ originalStepInput[key] = automationUtils.substituteLoopStep(
1349
1375
  value,
1350
1376
  `steps.${loopStepNumber}`
1351
1377
  )
1352
1378
  }
1353
1379
  }
1354
1380
  }
1355
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
1381
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
1356
1382
  index === env.AUTOMATION_MAX_ITERATIONS ||
1357
1383
  index === parseInt(loopStep.inputs.iterations)
1358
1384
  ) {
@@ -1365,17 +1391,17 @@ class Orchestrator {
1365
1391
  <span class="cstat-no" title="statement not covered" > break</span>
1366
1392
  }
1367
1393
  &nbsp;
1368
- let isFailure = <span class="cstat-no" title="statement not covered" >false</span>
1369
- const currentItem = <span class="cstat-no" title="statement not covered" >this._context.steps[loopStepNumber]?.currentItem</span>
1370
- <span class="cstat-no" title="statement not covered" > if (currentItem &amp;&amp; typeof currentItem === "object") {</span>
1371
- <span class="cstat-no" title="statement not covered" > isFailure = Object.keys(currentItem).some(<span class="fstat-no" title="function not covered" >value </span>=&gt; {</span>
1394
+ let isFailure = false
1395
+ const currentItem = this._context.steps[loopStepNumber]?.currentItem
1396
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (currentItem &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof currentItem === "object") {</span>
1397
+ <span class="cstat-no" title="statement not covered" > isFailure = Object.keys(currentItem).some(<span class="fstat-no" title="function not covered" >value =&gt; {</span></span>
1372
1398
  <span class="cstat-no" title="statement not covered" > return currentItem[value] === loopStep?.inputs.failure</span>
1373
1399
  })
1374
1400
  } else {
1375
- <span class="cstat-no" title="statement not covered" > isFailure = currentItem &amp;&amp; currentItem === loopStep.inputs.failure</span>
1401
+ isFailure = currentItem &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >currentItem === loopStep.inputs.failure</span>
1376
1402
  }
1377
1403
  &nbsp;
1378
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isFailure) {</span>
1404
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (isFailure) {
1379
1405
  <span class="cstat-no" title="statement not covered" > this.updateContextAndOutput(loopStepNumber, step, tempOutput, {</span>
1380
1406
  status: AutomationErrors.FAILURE_CONDITION,
1381
1407
  success: false,
@@ -1417,8 +1443,8 @@ class Orchestrator {
1417
1443
  })
1418
1444
  <span class="cstat-no" title="statement not covered" > continue</span>
1419
1445
  }
1420
- <span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >loopSteps)</span> {
1421
- <span class="cstat-no" title="statement not covered" > loopSteps.push(outputs)</span>
1446
+ if (loopStep &amp;&amp; loopSteps) {
1447
+ loopSteps.push(outputs)
1422
1448
  } else {
1423
1449
  this.updateExecutionOutput(
1424
1450
  step.id,
@@ -1432,45 +1458,45 @@ class Orchestrator {
1432
1458
  <span class="cstat-no" title="statement not covered" > return err</span>
1433
1459
  }
1434
1460
  &nbsp;
1435
- <span class="missing-if-branch" title="if path not taken" >I</span>if (loopStep) {
1436
- <span class="cstat-no" title="statement not covered" > iterationCount++</span>
1437
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (index === iterations - 1) {</span>
1438
- <span class="cstat-no" title="statement not covered" > loopStep = undefined</span>
1439
- <span class="cstat-no" title="statement not covered" > this._context.steps.splice(loopStepNumber, 1)</span>
1440
- <span class="cstat-no" title="statement not covered" > break</span>
1461
+ if (loopStep) {
1462
+ iterationCount++
1463
+ if (index === iterations - 1) {
1464
+ loopStep = undefined
1465
+ this._context.steps.splice(loopStepNumber, 1)
1466
+ break
1441
1467
  }
1442
1468
  }
1443
1469
  }
1444
1470
  &nbsp;
1445
1471
  // Delete the step after the loop step as it's irrelevant, since information is included
1446
1472
  // in the loop step
1447
- <span class="missing-if-branch" title="if path not taken" >I</span>if (wasLoopStep &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!loopStep)</span> {
1473
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (wasLoopStep &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!loopStep) {</span>
1448
1474
  <span class="cstat-no" title="statement not covered" > this._context.steps.splice(loopStepNumber + 1, 1)</span>
1449
1475
  <span class="cstat-no" title="statement not covered" > wasLoopStep = false</span>
1450
1476
  }
1451
1477
  &nbsp;
1452
- <span class="missing-if-branch" title="if path not taken" >I</span>if (loopSteps &amp;&amp; loopSteps.length) {
1453
- let tempOutput = <span class="cstat-no" title="statement not covered" >{</span>
1478
+ if (loopSteps &amp;&amp; loopSteps.length) {
1479
+ let tempOutput = {
1454
1480
  success: true,
1455
1481
  items: loopSteps,
1456
1482
  iterations: iterationCount,
1457
1483
  }
1458
- <span class="cstat-no" title="statement not covered" > this.executionOutput.steps.splice(loopStepNumber + 1, 0, {</span>
1484
+ this.executionOutput.steps.splice(loopStepNumber + 1, 0, {
1459
1485
  id: step.id,
1460
1486
  stepId: step.stepId,
1461
1487
  outputs: tempOutput,
1462
1488
  inputs: step.inputs,
1463
1489
  })
1464
- <span class="cstat-no" title="statement not covered" > this._context.steps[loopStepNumber] = tempOutput</span>
1490
+ this._context.steps[loopStepNumber] = tempOutput
1465
1491
  &nbsp;
1466
- <span class="cstat-no" title="statement not covered" > wasLoopStep = true</span>
1467
- <span class="cstat-no" title="statement not covered" > loopSteps = []</span>
1492
+ wasLoopStep = true
1493
+ loopSteps = []
1468
1494
  }
1469
1495
  }
1470
1496
  &nbsp;
1471
1497
  // store the logs for the automation run
1472
1498
  await storeLog(this._automation, this.executionOutput)
1473
- <span class="missing-if-branch" title="if path not taken" >I</span>if (isProdAppID(this._appId) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >isRecurring(automation) </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >metadata)</span> {
1499
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (isProdAppID(this._appId) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >isRecurring(automation) &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >m</span>etadata) {</span>
1474
1500
  <span class="cstat-no" title="statement not covered" > await this.updateMetadata(metadata)</span>
1475
1501
  }
1476
1502
  return this.executionOutput
@@ -1493,14 +1519,18 @@ export function execute(job: Job, callback: WorkerCallback) {
1493
1519
  })
1494
1520
  }
1495
1521
  &nbsp;
1496
- export const removeStalled = <span class="fstat-no" title="function not covered" >async (j</span>ob: Job) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
1522
+ export const removeStalled = <span class="fstat-no" title="function not covered" >async (j</span>ob: Job) =&gt; {
1497
1523
  const appId = <span class="cstat-no" title="statement not covered" >job.data.event.appId</span>
1498
1524
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!appId) {</span>
1499
1525
  <span class="cstat-no" title="statement not covered" > throw new Error("Unable to execute, event doesn't contain app ID.")</span>
1500
1526
  }
1501
- <span class="cstat-no" title="statement not covered" > await context.doInAppContext(appId, <span class="fstat-no" title="function not covered" >async () =</span>&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span></span>
1502
- const automationOrchestrator = <span class="cstat-no" title="statement not covered" >new Orchestrator(job)</span>
1503
- <span class="cstat-no" title="statement not covered" > await automationOrchestrator.stopCron("stalled")</span>
1527
+ <span class="cstat-no" title="statement not covered" > await context.doInAppContext(appId, <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1528
+ const envVars = <span class="cstat-no" title="statement not covered" >await sdkUtils.getEnvironmentVariables()</span>
1529
+ // put into automation thread for whole context
1530
+ <span class="cstat-no" title="statement not covered" > await context.doInEnvironmentContext(envVars, <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1531
+ const automationOrchestrator = <span class="cstat-no" title="statement not covered" >new Orchestrator(job)</span>
1532
+ <span class="cstat-no" title="statement not covered" > await automationOrchestrator.stopCron("stalled")</span>
1533
+ })
1504
1534
  })
1505
1535
  }
1506
1536
  &nbsp;</pre></td></tr></table></pre>
@@ -1510,7 +1540,7 @@ export const removeStalled = <span class="fstat-no" title="function not covered"
1510
1540
  <div class='footer quiet pad2 space-top1 center small'>
1511
1541
  Code coverage generated by
1512
1542
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1513
- at Tue Jan 10 2023 17:21:59 GMT+0000 (Coordinated Universal Time)
1543
+ at Tue Jan 31 2023 16:24:59 GMT+0000 (Coordinated Universal Time)
1514
1544
  </div>
1515
1545
  <script src="../../prettify.js"></script>
1516
1546
  <script>