@budibase/server 2.1.22-alpha.3 → 2.1.22-alpha.5

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 (331) hide show
  1. package/builder/assets/{index.cf509b0e.js → index.ccab8b9a.js} +223 -223
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +9559 -2656
  4. package/coverage/coverage-final.json +144 -1
  5. package/coverage/lcov-report/index.html +621 -126
  6. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +190 -0
  7. package/coverage/lcov-report/{api → src/api}/controllers/apikeys.js.html +10 -10
  8. package/coverage/lcov-report/src/api/controllers/application.ts.html +1996 -0
  9. package/coverage/lcov-report/src/api/controllers/auth.ts.html +298 -0
  10. package/coverage/lcov-report/{api → src/api}/controllers/automation.js.html +10 -10
  11. package/coverage/lcov-report/src/api/controllers/backup.ts.html +148 -0
  12. package/coverage/lcov-report/{api → src/api}/controllers/cloud.js.html +10 -10
  13. package/coverage/lcov-report/src/api/controllers/component.ts.html +256 -0
  14. package/coverage/lcov-report/{api → src/api}/controllers/datasource.js.html +10 -10
  15. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.js.html +250 -0
  16. package/coverage/lcov-report/src/api/controllers/deploy/index.html +131 -0
  17. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +766 -0
  18. package/coverage/lcov-report/{api → src/api}/controllers/dev.js.html +10 -10
  19. package/coverage/lcov-report/{api → src/api}/controllers/index.html +123 -18
  20. package/coverage/lcov-report/{api → src/api}/controllers/integration.js.html +10 -10
  21. package/coverage/lcov-report/{api → src/api}/controllers/layout.js.html +10 -10
  22. package/coverage/lcov-report/{api → src/api}/controllers/metadata.js.html +10 -10
  23. package/coverage/lcov-report/{api → src/api}/controllers/migrations.js.html +10 -10
  24. package/coverage/lcov-report/{api → src/api}/controllers/permission.js.html +10 -10
  25. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +130 -0
  26. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +310 -0
  27. package/coverage/lcov-report/src/api/controllers/plugin/index.html +206 -0
  28. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +487 -0
  29. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +253 -0
  30. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +97 -0
  31. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +121 -0
  32. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +142 -0
  33. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +316 -0
  34. package/coverage/lcov-report/src/api/controllers/public/index.html +191 -0
  35. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +181 -0
  36. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +191 -0
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +124 -0
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +202 -0
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +178 -0
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +163 -0
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +181 -0
  42. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +145 -0
  43. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +328 -0
  44. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +253 -0
  45. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +268 -0
  46. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +220 -0
  47. package/coverage/lcov-report/src/api/controllers/query/import/index.html +116 -0
  48. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +376 -0
  49. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +131 -0
  50. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +379 -0
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +157 -0
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +403 -0
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +146 -0
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +586 -0
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +712 -0
  56. package/coverage/lcov-report/src/api/controllers/query/index.html +131 -0
  57. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +985 -0
  58. package/coverage/lcov-report/{api → src/api}/controllers/query/validation.js.html +10 -10
  59. package/coverage/lcov-report/{api → src/api}/controllers/role.js.html +10 -10
  60. package/coverage/lcov-report/{api → src/api}/controllers/routing.js.html +10 -10
  61. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +2332 -0
  62. package/coverage/lcov-report/{api → src/api}/controllers/row/external.js.html +10 -10
  63. package/coverage/lcov-report/{api → src/api}/controllers/row/index.html +48 -18
  64. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +541 -0
  65. package/coverage/lcov-report/{api → src/api}/controllers/row/internal.js.html +10 -10
  66. package/coverage/lcov-report/{api → src/api}/controllers/row/internalSearch.js.html +10 -10
  67. package/coverage/lcov-report/{api → src/api}/controllers/row/staticFormula.js.html +10 -10
  68. package/coverage/lcov-report/{api → src/api}/controllers/row/utils.js.html +10 -10
  69. package/coverage/lcov-report/src/api/controllers/screen.ts.html +451 -0
  70. package/coverage/lcov-report/{api → src/api}/controllers/script.js.html +10 -10
  71. package/coverage/lcov-report/src/api/controllers/static/index.html +116 -0
  72. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +700 -0
  73. package/coverage/lcov-report/{api → src/api}/controllers/table/bulkFormula.js.html +10 -10
  74. package/coverage/lcov-report/{api → src/api}/controllers/table/external.js.html +10 -10
  75. package/coverage/lcov-report/{api → src/api}/controllers/table/index.html +49 -19
  76. package/coverage/lcov-report/{api → src/api}/controllers/table/index.js.html +10 -10
  77. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +658 -0
  78. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1240 -0
  79. package/coverage/lcov-report/{api → src/api}/controllers/templates.js.html +10 -10
  80. package/coverage/lcov-report/{api → src/api}/controllers/user.js.html +10 -10
  81. package/coverage/lcov-report/{api → src/api}/controllers/view/exporters.js.html +10 -10
  82. package/coverage/lcov-report/{api → src/api}/controllers/view/index.html +10 -10
  83. package/coverage/lcov-report/{api → src/api}/controllers/view/index.js.html +10 -10
  84. package/coverage/lcov-report/{api → src/api}/controllers/view/utils.js.html +10 -10
  85. package/coverage/lcov-report/{api → src/api}/controllers/view/viewBuilder.js.html +10 -10
  86. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +379 -0
  87. package/coverage/lcov-report/{api → src/api}/index.html +10 -10
  88. package/coverage/lcov-report/{api → src/api}/index.js.html +10 -10
  89. package/coverage/lcov-report/{api → src/api}/routes/analytics.js.html +10 -10
  90. package/coverage/lcov-report/{api → src/api}/routes/apikeys.js.html +10 -10
  91. package/coverage/lcov-report/src/api/routes/application.ts.html +199 -0
  92. package/coverage/lcov-report/src/api/routes/auth.ts.html +109 -0
  93. package/coverage/lcov-report/{api → src/api}/routes/automation.js.html +10 -10
  94. package/coverage/lcov-report/src/api/routes/backup.ts.html +115 -0
  95. package/coverage/lcov-report/{api → src/api}/routes/cloud.js.html +10 -10
  96. package/coverage/lcov-report/{api → src/api}/routes/component.js.html +10 -10
  97. package/coverage/lcov-report/{api → src/api}/routes/datasource.js.html +10 -10
  98. package/coverage/lcov-report/{api → src/api}/routes/deploy.js.html +10 -10
  99. package/coverage/lcov-report/{api → src/api}/routes/dev.js.html +10 -10
  100. package/coverage/lcov-report/{api → src/api}/routes/index.html +137 -17
  101. package/coverage/lcov-report/src/api/routes/index.ts.html +289 -0
  102. package/coverage/lcov-report/{api → src/api}/routes/integration.js.html +10 -10
  103. package/coverage/lcov-report/{api → src/api}/routes/layout.js.html +10 -10
  104. package/coverage/lcov-report/{api → src/api}/routes/metadata.js.html +10 -10
  105. package/coverage/lcov-report/{api → src/api}/routes/migrations.js.html +10 -10
  106. package/coverage/lcov-report/{api → src/api}/routes/permission.js.html +10 -10
  107. package/coverage/lcov-report/src/api/routes/plugin.ts.html +127 -0
  108. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +541 -0
  109. package/coverage/lcov-report/src/api/routes/public/index.html +191 -0
  110. package/coverage/lcov-report/src/api/routes/public/index.ts.html +502 -0
  111. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +116 -0
  112. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +328 -0
  113. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +313 -0
  114. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +598 -0
  115. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +586 -0
  116. package/coverage/lcov-report/src/api/routes/public/users.ts.html +511 -0
  117. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +238 -0
  118. package/coverage/lcov-report/src/api/routes/public/utils/index.html +116 -0
  119. package/coverage/lcov-report/{api → src/api}/routes/query.js.html +10 -10
  120. package/coverage/lcov-report/{api → src/api}/routes/role.js.html +10 -10
  121. package/coverage/lcov-report/{api → src/api}/routes/routing.js.html +10 -10
  122. package/coverage/lcov-report/src/api/routes/row.ts.html +889 -0
  123. package/coverage/lcov-report/{api → src/api}/routes/screen.js.html +10 -10
  124. package/coverage/lcov-report/{api → src/api}/routes/script.js.html +10 -10
  125. package/coverage/lcov-report/src/api/routes/static.ts.html +289 -0
  126. package/coverage/lcov-report/{api → src/api}/routes/table.js.html +10 -10
  127. package/coverage/lcov-report/{api → src/api}/routes/templates.js.html +10 -10
  128. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +556 -0
  129. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +131 -0
  130. package/coverage/lcov-report/src/api/routes/tests/utilities/index.js.html +367 -0
  131. package/coverage/lcov-report/{api → src/api}/routes/user.js.html +10 -10
  132. package/coverage/lcov-report/{api → src/api}/routes/utils/index.html +10 -10
  133. package/coverage/lcov-report/{api → src/api}/routes/utils/validators.js.html +10 -10
  134. package/coverage/lcov-report/{api → src/api}/routes/view.js.html +10 -10
  135. package/coverage/lcov-report/src/api/routes/webhook.ts.html +166 -0
  136. package/coverage/lcov-report/src/app.ts.html +403 -0
  137. package/coverage/lcov-report/{automations → src/automations}/actions.js.html +10 -10
  138. package/coverage/lcov-report/{automations → src/automations}/automationUtils.js.html +10 -10
  139. package/coverage/lcov-report/{automations → src/automations}/bullboard.js.html +10 -10
  140. package/coverage/lcov-report/{automations → src/automations}/index.html +34 -19
  141. package/coverage/lcov-report/{automations → src/automations}/index.js.html +10 -10
  142. package/coverage/lcov-report/src/automations/logging/index.html +116 -0
  143. package/coverage/lcov-report/src/automations/logging/index.ts.html +199 -0
  144. package/coverage/lcov-report/{automations → src/automations}/steps/bash.js.html +10 -10
  145. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +367 -0
  146. package/coverage/lcov-report/{automations → src/automations}/steps/delay.js.html +10 -10
  147. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +334 -0
  148. package/coverage/lcov-report/{automations → src/automations}/steps/discord.js.html +10 -10
  149. package/coverage/lcov-report/{automations → src/automations}/steps/executeQuery.js.html +10 -10
  150. package/coverage/lcov-report/{automations → src/automations}/steps/executeScript.js.html +10 -10
  151. package/coverage/lcov-report/{automations → src/automations}/steps/filter.js.html +10 -10
  152. package/coverage/lcov-report/{automations → src/automations}/steps/index.html +48 -18
  153. package/coverage/lcov-report/{automations → src/automations}/steps/integromat.js.html +10 -10
  154. package/coverage/lcov-report/{automations → src/automations}/steps/loop.js.html +10 -10
  155. package/coverage/lcov-report/{automations → src/automations}/steps/outgoingWebhook.js.html +10 -10
  156. package/coverage/lcov-report/{automations → src/automations}/steps/queryRows.js.html +10 -10
  157. package/coverage/lcov-report/{automations → src/automations}/steps/sendSmtpEmail.js.html +10 -10
  158. package/coverage/lcov-report/{automations → src/automations}/steps/serverLog.js.html +10 -10
  159. package/coverage/lcov-report/{automations → src/automations}/steps/slack.js.html +10 -10
  160. package/coverage/lcov-report/{automations → src/automations}/steps/updateRow.js.html +10 -10
  161. package/coverage/lcov-report/{automations → src/automations}/steps/utils.js.html +10 -10
  162. package/coverage/lcov-report/{automations → src/automations}/steps/zapier.js.html +10 -10
  163. package/coverage/lcov-report/src/automations/tests/utilities/index.html +116 -0
  164. package/coverage/lcov-report/src/automations/tests/utilities/index.js.html +238 -0
  165. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/app.js.html +10 -10
  166. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/cron.js.html +10 -10
  167. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/index.html +10 -10
  168. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/index.js.html +10 -10
  169. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/rowDeleted.js.html +10 -10
  170. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/rowSaved.js.html +10 -10
  171. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/rowUpdated.js.html +10 -10
  172. package/coverage/lcov-report/{automations → src/automations}/triggerInfo/webhook.js.html +10 -10
  173. package/coverage/lcov-report/{automations → src/automations}/triggers.js.html +10 -10
  174. package/coverage/lcov-report/src/automations/utils.ts.html +895 -0
  175. package/coverage/lcov-report/{constants → src/constants}/index.html +10 -10
  176. package/coverage/lcov-report/{constants → src/constants}/index.js.html +10 -10
  177. package/coverage/lcov-report/{constants → src/constants}/layouts.js.html +10 -10
  178. package/coverage/lcov-report/{constants → src/constants}/screens.js.html +10 -10
  179. package/coverage/lcov-report/src/db/dynamoClient.js.html +466 -0
  180. package/coverage/lcov-report/{db → src/db}/inMemoryView.js.html +10 -10
  181. package/coverage/lcov-report/{db → src/db}/index.html +33 -18
  182. package/coverage/lcov-report/{db → src/db}/index.js.html +10 -10
  183. package/coverage/lcov-report/{db → src/db}/linkedRows/LinkController.js.html +10 -10
  184. package/coverage/lcov-report/{db → src/db}/linkedRows/index.html +10 -10
  185. package/coverage/lcov-report/{db → src/db}/linkedRows/index.js.html +10 -10
  186. package/coverage/lcov-report/{db → src/db}/linkedRows/linkUtils.js.html +10 -10
  187. package/coverage/lcov-report/{db → src/db}/newid.js.html +10 -10
  188. package/coverage/lcov-report/{db → src/db}/utils.js.html +10 -10
  189. package/coverage/lcov-report/src/definitions/automations.ts.html +181 -0
  190. package/coverage/lcov-report/src/definitions/datasource.ts.html +235 -0
  191. package/coverage/lcov-report/src/definitions/index.html +131 -0
  192. package/coverage/lcov-report/src/environment.js.html +445 -0
  193. package/coverage/lcov-report/{events → src/events}/AutomationEmitter.js.html +10 -10
  194. package/coverage/lcov-report/{events → src/events}/index.html +10 -10
  195. package/coverage/lcov-report/{events → src/events}/index.js.html +10 -10
  196. package/coverage/lcov-report/{events → src/events}/utils.js.html +10 -10
  197. package/coverage/lcov-report/src/index.html +206 -0
  198. package/coverage/lcov-report/src/index.ts.html +133 -0
  199. package/coverage/lcov-report/src/integrations/airtable.ts.html +529 -0
  200. package/coverage/lcov-report/src/integrations/arangodb.ts.html +415 -0
  201. package/coverage/lcov-report/src/integrations/base/index.html +161 -0
  202. package/coverage/lcov-report/src/integrations/base/query.ts.html +133 -0
  203. package/coverage/lcov-report/src/integrations/base/sql.ts.html +1951 -0
  204. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +691 -0
  205. package/coverage/lcov-report/src/integrations/base/utils.ts.html +121 -0
  206. package/coverage/lcov-report/src/integrations/couchdb.ts.html +406 -0
  207. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +745 -0
  208. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +634 -0
  209. package/coverage/lcov-report/src/integrations/firebase.ts.html +646 -0
  210. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1321 -0
  211. package/coverage/lcov-report/src/integrations/index.html +371 -0
  212. package/coverage/lcov-report/src/integrations/index.ts.html +433 -0
  213. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1006 -0
  214. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1864 -0
  215. package/coverage/lcov-report/src/integrations/mysql.ts.html +952 -0
  216. package/coverage/lcov-report/src/integrations/oracle.ts.html +1474 -0
  217. package/coverage/lcov-report/src/integrations/postgres.ts.html +1069 -0
  218. package/coverage/lcov-report/src/integrations/queries/index.html +116 -0
  219. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +463 -0
  220. package/coverage/lcov-report/src/integrations/redis.ts.html +550 -0
  221. package/coverage/lcov-report/src/integrations/rest.ts.html +1381 -0
  222. package/coverage/lcov-report/src/integrations/s3.ts.html +862 -0
  223. package/coverage/lcov-report/src/integrations/snowflake.ts.html +376 -0
  224. package/coverage/lcov-report/{integrations → src/integrations}/tests/TestConfiguration.js.html +10 -10
  225. package/coverage/lcov-report/{integrations → src/integrations}/tests/index.html +10 -10
  226. package/coverage/lcov-report/src/integrations/utils.ts.html +1006 -0
  227. package/coverage/lcov-report/{middleware → src/middleware}/appInfo.js.html +10 -10
  228. package/coverage/lcov-report/src/middleware/authorized.ts.html +481 -0
  229. package/coverage/lcov-report/{middleware → src/middleware}/builder.js.html +10 -10
  230. package/coverage/lcov-report/{middleware → src/middleware}/currentapp.js.html +10 -10
  231. package/coverage/lcov-report/{middleware → src/middleware}/index.html +33 -18
  232. package/coverage/lcov-report/{middleware → src/middleware}/joi-validator.js.html +10 -10
  233. package/coverage/lcov-report/{middleware → src/middleware}/publicApi.js.html +10 -10
  234. package/coverage/lcov-report/{middleware → src/middleware}/resourceId.js.html +10 -10
  235. package/coverage/lcov-report/{middleware → src/middleware}/selfhost.js.html +10 -10
  236. package/coverage/lcov-report/{middleware → src/middleware}/utils.js.html +10 -10
  237. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +187 -0
  238. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +163 -0
  239. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +151 -0
  240. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +206 -0
  241. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +172 -0
  242. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +226 -0
  243. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +151 -0
  244. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +151 -0
  245. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +175 -0
  246. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +532 -0
  247. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +283 -0
  248. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +146 -0
  249. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +265 -0
  250. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +232 -0
  251. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +724 -0
  252. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +161 -0
  253. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +106 -0
  254. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +235 -0
  255. package/coverage/lcov-report/src/migrations/functions/index.html +146 -0
  256. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +130 -0
  257. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +161 -0
  258. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +94 -0
  259. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +130 -0
  260. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +115 -0
  261. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +172 -0
  262. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +124 -0
  263. package/coverage/lcov-report/src/migrations/index.html +116 -0
  264. package/coverage/lcov-report/src/migrations/index.ts.html +403 -0
  265. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +205 -0
  266. package/coverage/lcov-report/src/migrations/tests/index.html +131 -0
  267. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +283 -0
  268. package/coverage/lcov-report/src/module.d.ts.html +127 -0
  269. package/coverage/lcov-report/src/sdk/app/automations/index.html +131 -0
  270. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +100 -0
  271. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +214 -0
  272. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +91 -0
  273. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +598 -0
  274. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +703 -0
  275. package/coverage/lcov-report/src/sdk/app/backups/index.html +176 -0
  276. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +112 -0
  277. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +319 -0
  278. package/coverage/lcov-report/src/sdk/app/tables/index.html +116 -0
  279. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +268 -0
  280. package/coverage/lcov-report/{utilities/routing → src/sdk}/index.html +10 -10
  281. package/coverage/lcov-report/src/sdk/index.ts.html +130 -0
  282. package/coverage/lcov-report/src/startup.ts.html +499 -0
  283. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.js.html +1873 -0
  284. package/coverage/lcov-report/src/tests/utilities/controllers.js.html +133 -0
  285. package/coverage/lcov-report/src/tests/utilities/index.html +161 -0
  286. package/coverage/lcov-report/src/tests/utilities/index.js.html +118 -0
  287. package/coverage/lcov-report/src/tests/utilities/structures.js.html +652 -0
  288. package/coverage/lcov-report/src/threads/automation.ts.html +1597 -0
  289. package/coverage/lcov-report/src/threads/index.html +161 -0
  290. package/coverage/lcov-report/src/threads/index.ts.html +418 -0
  291. package/coverage/lcov-report/src/threads/query.ts.html +976 -0
  292. package/coverage/lcov-report/src/threads/utils.ts.html +376 -0
  293. package/coverage/lcov-report/{utilities → src/utilities}/budibaseDir.js.html +10 -10
  294. package/coverage/lcov-report/{utilities → src/utilities}/centralPath.js.html +10 -10
  295. package/coverage/lcov-report/{utilities → src/utilities}/csvParser.js.html +10 -10
  296. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.js.html +547 -0
  297. package/coverage/lcov-report/src/utilities/fileSystem/index.html +161 -0
  298. package/coverage/lcov-report/src/utilities/fileSystem/index.js.html +1141 -0
  299. package/coverage/lcov-report/src/utilities/fileSystem/processor.js.html +148 -0
  300. package/coverage/lcov-report/src/utilities/fileSystem/utilities.js.html +193 -0
  301. package/coverage/lcov-report/{utilities → src/utilities}/global.js.html +10 -10
  302. package/coverage/lcov-report/{utilities → src/utilities}/index.html +33 -18
  303. package/coverage/lcov-report/{utilities → src/utilities}/index.js.html +10 -10
  304. package/coverage/lcov-report/{utilities → src/utilities}/plugins.js.html +10 -10
  305. package/coverage/lcov-report/{utilities → src/utilities}/queue/inMemoryQueue.js.html +10 -10
  306. package/coverage/lcov-report/{utilities → src/utilities}/queue/index.html +10 -10
  307. package/coverage/lcov-report/src/utilities/redis.js.html +340 -0
  308. package/coverage/lcov-report/{api/controllers/query → src/utilities/routing}/index.html +8 -8
  309. package/coverage/lcov-report/{utilities → src/utilities}/routing/index.js.html +10 -10
  310. package/coverage/lcov-report/{utilities → src/utilities}/rowProcessor/index.html +10 -10
  311. package/coverage/lcov-report/{utilities → src/utilities}/rowProcessor/index.js.html +10 -10
  312. package/coverage/lcov-report/{utilities → src/utilities}/rowProcessor/utils.js.html +10 -10
  313. package/coverage/lcov-report/{utilities → src/utilities}/scriptRunner.js.html +10 -10
  314. package/coverage/lcov-report/{utilities → src/utilities}/security.js.html +10 -10
  315. package/coverage/lcov-report/{utilities → src/utilities}/statusCodes.js.html +10 -10
  316. package/coverage/lcov-report/{utilities → src/utilities}/usageQuota/index.html +10 -10
  317. package/coverage/lcov-report/{utilities → src/utilities}/usageQuota/rows.js.html +10 -10
  318. package/coverage/lcov-report/{utilities → src/utilities}/usageQuota/usageQuoteReset.js.html +10 -10
  319. package/coverage/lcov-report/{utilities → src/utilities}/users.js.html +10 -10
  320. package/coverage/lcov-report/{utilities → src/utilities}/workerRequests.js.html +10 -10
  321. package/coverage/lcov-report/src/watch.ts.html +199 -0
  322. package/coverage/lcov-report/src/websocket.ts.html +163 -0
  323. package/coverage/lcov.info +17327 -4751
  324. package/dist/package.json +10 -44
  325. package/dist/tests/utilities/TestConfiguration.js +3 -1
  326. package/dist/tsconfig.build.tsbuildinfo +1 -1
  327. package/jest.config.ts +32 -0
  328. package/package.json +11 -45
  329. package/{scripts/jestSetup.js → src/tests/jestSetup.ts} +11 -2
  330. package/src/tests/utilities/TestConfiguration.js +3 -1
  331. package/tsconfig.json +3 -1
@@ -0,0 +1,895 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/automations/utils.ts</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/automations</a> utils.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">64.7% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>77/119</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">41.81% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>23/55</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">72.72% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>16/22</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">64.65% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>75/116</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 medium'></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>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">45x</span>
337
+ <span class="cline-any cline-yes">45x</span>
338
+ <span class="cline-any cline-yes">45x</span>
339
+ <span class="cline-any cline-yes">45x</span>
340
+ <span class="cline-any cline-yes">45x</span>
341
+ <span class="cline-any cline-yes">45x</span>
342
+ <span class="cline-any cline-yes">45x</span>
343
+ <span class="cline-any cline-yes">45x</span>
344
+ <span class="cline-any cline-yes">45x</span>
345
+ <span class="cline-any cline-yes">45x</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-yes">45x</span>
351
+ <span class="cline-any cline-yes">45x</span>
352
+ <span class="cline-any cline-yes">45x</span>
353
+ <span class="cline-any cline-yes">45x</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-yes">45x</span>
356
+ <span class="cline-any cline-yes">45x</span>
357
+ <span class="cline-any cline-yes">45x</span>
358
+ <span class="cline-any cline-yes">45x</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-yes">45x</span>
361
+ <span class="cline-any cline-yes">9x</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-yes">45x</span>
365
+ <span class="cline-any cline-yes">9x</span>
366
+ <span class="cline-any cline-yes">9x</span>
367
+ <span class="cline-any cline-yes">9x</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-yes">9x</span>
370
+ <span class="cline-any cline-yes">9x</span>
371
+ <span class="cline-any cline-yes">9x</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
379
+ <span class="cline-any cline-no">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-yes">45x</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&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-yes">2x</span>
389
+ <span class="cline-any cline-neutral">&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-yes">2x</span>
393
+ <span class="cline-any cline-no">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-yes">2x</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-yes">2x</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-yes">45x</span>
405
+ <span class="cline-any cline-yes">88x</span>
406
+ <span class="cline-any cline-yes">88x</span>
407
+ <span class="cline-any cline-yes">1012x</span>
408
+ <span class="cline-any cline-yes">44x</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-yes">88x</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-yes">45x</span>
416
+ <span class="cline-any cline-yes">253x</span>
417
+ <span class="cline-any cline-yes">253x</span>
418
+ <span class="cline-any cline-yes">253x</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-no">&nbsp;</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-yes">253x</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-yes">45x</span>
430
+ <span class="cline-any cline-no">&nbsp;</span>
431
+ <span class="cline-any cline-no">&nbsp;</span>
432
+ <span class="cline-any cline-no">&nbsp;</span>
433
+ <span class="cline-any cline-no">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&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-yes">45x</span>
440
+ <span class="cline-any cline-yes">252x</span>
441
+ <span class="cline-any cline-yes">252x</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&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-yes">252x</span>
449
+ <span class="cline-any cline-no">&nbsp;</span>
450
+ <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-yes">252x</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-yes">45x</span>
455
+ <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-yes">45x</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-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-yes">45x</span>
473
+ <span class="cline-any cline-yes">1x</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-yes">1x</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-no">&nbsp;</span>
483
+ <span class="cline-any cline-no">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-no">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
+ <span class="cline-any cline-no">&nbsp;</span>
497
+ <span class="cline-any cline-no">&nbsp;</span>
498
+ <span class="cline-any cline-no">&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-yes">1x</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-neutral">&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-yes">45x</span>
513
+ <span class="cline-any cline-yes">34x</span>
514
+ <span class="cline-any cline-yes">34x</span>
515
+ <span class="cline-any cline-yes">34x</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-yes">34x</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-yes">102x</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-yes">34x</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&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-no">&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-no">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-no">&nbsp;</span>
537
+ <span class="cline-any cline-no">&nbsp;</span>
538
+ <span class="cline-any cline-no">&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-yes">34x</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-yes">1x</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-yes">1x</span>
558
+ <span class="cline-any cline-yes">1x</span>
559
+ <span class="cline-any cline-neutral">&nbsp;</span>
560
+ <span class="cline-any cline-neutral">&nbsp;</span>
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-yes">1x</span>
563
+ <span class="cline-any cline-yes">1x</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-yes">34x</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</span>
575
+ <span class="cline-any cline-neutral">&nbsp;</span>
576
+ <span class="cline-any cline-yes">45x</span>
577
+ <span class="cline-any cline-yes">1x</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-yes">45x</span>
586
+ <span class="cline-any cline-yes">1x</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-yes">45x</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-no">&nbsp;</span>
593
+ <span class="cline-any cline-no">&nbsp;</span>
594
+ <span class="cline-any cline-no">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-no">&nbsp;</span>
597
+ <span class="cline-any cline-no">&nbsp;</span>
598
+ <span class="cline-any cline-no">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-no">&nbsp;</span>
601
+ <span class="cline-any cline-no">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-no">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Thread, ThreadType } from "../threads"
607
+ import { definitions } from "./triggerInfo"
608
+ import { automationQueue } from "./bullboard"
609
+ import newid from "../db/newid"
610
+ import { updateEntityMetadata } from "../utilities"
611
+ import { MetadataTypes } from "../constants"
612
+ import { getProdAppID, doWithDB } from "@budibase/backend-core/db"
613
+ import { getAutomationMetadataParams } from "../db/utils"
614
+ import { cloneDeep } from "lodash/fp"
615
+ import {
616
+ getAppDB,
617
+ getAppId,
618
+ getProdAppDB,
619
+ } from "@budibase/backend-core/context"
620
+ import { context } from "@budibase/backend-core"
621
+ import { quotas } from "@budibase/pro"
622
+ import { Automation, WebhookActionType } from "@budibase/types"
623
+ import sdk from "../sdk"
624
+ &nbsp;
625
+ const REBOOT_CRON = "@reboot"
626
+ const WH_STEP_ID = definitions.WEBHOOK.stepId
627
+ const CRON_STEP_ID = definitions.CRON.stepId
628
+ const Runner = new Thread(ThreadType.AUTOMATION)
629
+ &nbsp;
630
+ const jobMessage = (job: any, message: string) =&gt; {
631
+ return `app=${job.data.event.appId} automation=${job.data.automation._id} jobId=${job.id} trigger=${job.data.automation.definition.trigger.event} : ${message}`
632
+ }
633
+ &nbsp;
634
+ export async function processEvent(job: any) {
635
+ try {
636
+ const automationId = job.data.automation._id
637
+ console.log(jobMessage(job, "running"))
638
+ // need to actually await these so that an error can be captured properly
639
+ return await context.doInContext(job.data.event.appId, async () =&gt; {
640
+ const runFn = () =&gt; Runner.run(job)
641
+ return quotas.addAutomation(runFn, {
642
+ automationId,
643
+ })
644
+ })
645
+ } catch (err) {
646
+ const errJson = <span class="cstat-no" title="statement not covered" >JSON.stringify(err)</span>
647
+ <span class="cstat-no" title="statement not covered" > console.error(jobMessage(job, `was unable to run - ${errJson}`))</span>
648
+ <span class="cstat-no" title="statement not covered" > console.trace(err)</span>
649
+ <span class="cstat-no" title="statement not covered" > return { err }</span>
650
+ }
651
+ }
652
+ &nbsp;
653
+ export async function updateTestHistory(
654
+ appId: any,
655
+ automation: any,
656
+ history: any
657
+ ) {
658
+ return updateEntityMetadata(
659
+ MetadataTypes.AUTOMATION_TEST_HISTORY,
660
+ automation._id,
661
+ (metadata: any) =&gt; {
662
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (metadata &amp;&amp; Array.isArray(metadata.history)) {
663
+ <span class="cstat-no" title="statement not covered" > metadata.history.push(history)</span>
664
+ } else {
665
+ metadata = {
666
+ history: [history],
667
+ }
668
+ }
669
+ return metadata
670
+ }
671
+ )
672
+ }
673
+ &nbsp;
674
+ export function removeDeprecated(definitions: any) {
675
+ const base = cloneDeep(definitions)
676
+ for (let key of Object.keys(base)) {
677
+ if (base[key].deprecated) {
678
+ delete base[key]
679
+ }
680
+ }
681
+ return base
682
+ }
683
+ &nbsp;
684
+ // end the repetition and the job itself
685
+ export async function disableAllCrons(appId: any) {
686
+ const promises = []
687
+ const jobs = await automationQueue.getRepeatableJobs()
688
+ for (let job of jobs) {
689
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (job.key.includes(`${appId}_cron`)) {</span>
690
+ <span class="cstat-no" title="statement not covered" > promises.push(automationQueue.removeRepeatableByKey(job.key))</span>
691
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (job.id) {</span>
692
+ <span class="cstat-no" title="statement not covered" > promises.push(automationQueue.removeJobs(job.id))</span>
693
+ }
694
+ }
695
+ }
696
+ return Promise.all(promises)
697
+ }
698
+ &nbsp;
699
+ export async function <span class="fstat-no" title="function not covered" >disableCronById(</span>jobId: number | string) {
700
+ const repeatJobs = <span class="cstat-no" title="statement not covered" >await automationQueue.getRepeatableJobs()</span>
701
+ <span class="cstat-no" title="statement not covered" > for (let repeatJob of repeatJobs) {</span>
702
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (repeatJob.id === jobId) {</span>
703
+ <span class="cstat-no" title="statement not covered" > await automationQueue.removeRepeatableByKey(repeatJob.key)</span>
704
+ }
705
+ }
706
+ <span class="cstat-no" title="statement not covered" > console.log(`jobId=${jobId} disabled`)</span>
707
+ }
708
+ &nbsp;
709
+ export async function clearMetadata() {
710
+ const db = getProdAppDB()
711
+ const automationMetadata = (
712
+ await db.allDocs(
713
+ getAutomationMetadataParams({
714
+ include_docs: true,
715
+ })
716
+ )
717
+ ).rows.map(<span class="fstat-no" title="function not covered" >(r</span>ow: any) =&gt; <span class="cstat-no" title="statement not covered" >row.doc)</span>
718
+ for (let metadata of automationMetadata) {
719
+ <span class="cstat-no" title="statement not covered" > metadata._deleted = true</span>
720
+ }
721
+ await db.bulkDocs(automationMetadata)
722
+ }
723
+ &nbsp;
724
+ export function isCronTrigger(auto: Automation) {
725
+ return (
726
+ auto &amp;&amp;
727
+ auto.definition.trigger &amp;&amp;
728
+ auto.definition.trigger.stepId === CRON_STEP_ID
729
+ )
730
+ }
731
+ &nbsp;
732
+ export function <span class="fstat-no" title="function not covered" >isRebootTrigger(</span>auto: Automation) {
733
+ const trigger = <span class="cstat-no" title="statement not covered" >auto ? auto.definition.trigger : null</span>
734
+ <span class="cstat-no" title="statement not covered" > return isCronTrigger(auto) &amp;&amp; trigger?.inputs.cron === REBOOT_CRON</span>
735
+ }
736
+ &nbsp;
737
+ /**
738
+ * This function handles checking of any cron jobs that need to be enabled/updated.
739
+ * @param {string} appId The ID of the app in which we are checking for webhooks
740
+ * @param {object|undefined} automation The automation object to be updated.
741
+ */
742
+ export async function enableCronTrigger(appId: any, automation: Automation) {
743
+ const trigger = automation ? automation.definition.trigger : <span class="branch-1 cbranch-no" title="branch not covered" >null</span>
744
+ &nbsp;
745
+ // need to create cron job
746
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
747
+ isCronTrigger(automation) &amp;&amp;
748
+ <span class="branch-1 cbranch-no" title="branch not covered" > !isRebootTrigger(automation) </span>&amp;&amp;
749
+ <span class="branch-2 cbranch-no" title="branch not covered" > trigger?.inputs.cron</span>
750
+ ) {
751
+ // make a job id rather than letting Bull decide, makes it easier to handle on way out
752
+ const jobId = <span class="cstat-no" title="statement not covered" >`${appId}_cron_${newid()}`</span>
753
+ const job: any = <span class="cstat-no" title="statement not covered" >await automationQueue.add(</span>
754
+ {
755
+ automation,
756
+ event: { appId, timestamp: Date.now() },
757
+ },
758
+ { repeat: { cron: trigger.inputs.cron }, jobId }
759
+ )
760
+ // Assign cron job ID from bull so we can remove it later if the cron trigger is removed
761
+ <span class="cstat-no" title="statement not covered" > trigger.cronJobId = job.id</span>
762
+ // can't use getAppDB here as this is likely to be called from dev app,
763
+ // but this call could be for dev app or prod app, need to just use what
764
+ // was passed in
765
+ <span class="cstat-no" title="statement not covered" > await doWithDB(appId, <span class="fstat-no" title="function not covered" >async (d</span>b: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span></span>
766
+ const response = <span class="cstat-no" title="statement not covered" >await db.put(automation)</span>
767
+ <span class="cstat-no" title="statement not covered" > automation._id = response.id</span>
768
+ <span class="cstat-no" title="statement not covered" > automation._rev = response.rev</span>
769
+ })
770
+ }
771
+ return automation
772
+ }
773
+ &nbsp;
774
+ /**
775
+ * This function handles checking if any webhooks need to be created or deleted for automations.
776
+ * @param {string} appId The ID of the app in which we are checking for webhooks
777
+ * @param {object|undefined} oldAuto The old automation object if updating/deleting
778
+ * @param {object|undefined} newAuto The new automation object if creating/updating
779
+ * @returns {Promise&lt;object|undefined&gt;} After this is complete the new automation object may have been updated and should be
780
+ * written to DB (this does not write to DB as it would be wasteful to repeat).
781
+ */
782
+ export async function checkForWebhooks({ oldAuto, newAuto }: any) {
783
+ const appId = getAppId()
784
+ const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
785
+ const newTrigger = newAuto ? newAuto.definition.trigger : null
786
+ const triggerChanged =
787
+ oldTrigger &amp;&amp; newTrigger &amp;&amp; oldTrigger.id !== newTrigger.id
788
+ function isWebhookTrigger(auto: any) {
789
+ return (
790
+ auto &amp;&amp;
791
+ auto.definition.trigger &amp;&amp;
792
+ auto.definition.trigger.stepId === WH_STEP_ID
793
+ )
794
+ }
795
+ // need to delete webhook
796
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (
797
+ isWebhookTrigger(oldAuto) &amp;&amp;
798
+ (<span class="branch-1 cbranch-no" title="branch not covered" >!isWebhookTrigger(newAuto) </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >triggerChanged)</span> &amp;&amp;
799
+ <span class="branch-3 cbranch-no" title="branch not covered" > oldTrigger.webhookId</span>
800
+ ) {
801
+ <span class="cstat-no" title="statement not covered" > try {</span>
802
+ let db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
803
+ // need to get the webhook to get the rev
804
+ const webhook = <span class="cstat-no" title="statement not covered" >await db.get(oldTrigger.webhookId)</span>
805
+ // might be updating - reset the inputs to remove the URLs
806
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (newTrigger) {</span>
807
+ <span class="cstat-no" title="statement not covered" > delete newTrigger.webhookId</span>
808
+ <span class="cstat-no" title="statement not covered" > newTrigger.inputs = {}</span>
809
+ }
810
+ <span class="cstat-no" title="statement not covered" > await sdk.automations.webhook.destroy(webhook._id, webhook._rev)</span>
811
+ } catch (err) {
812
+ // don't worry about not being able to delete, if it doesn't exist all good
813
+ }
814
+ }
815
+ // need to create webhook
816
+ if (
817
+ (!isWebhookTrigger(oldAuto) || <span class="branch-1 cbranch-no" title="branch not covered" >triggerChanged)</span> &amp;&amp;
818
+ isWebhookTrigger(newAuto)
819
+ ) {
820
+ const webhook = await sdk.automations.webhook.save(
821
+ sdk.automations.webhook.newDoc(
822
+ "Automation webhook",
823
+ WebhookActionType.AUTOMATION,
824
+ newAuto._id
825
+ )
826
+ )
827
+ const id = webhook._id
828
+ newTrigger.webhookId = id
829
+ // the app ID has to be development for this endpoint
830
+ // it can only be used when building the app
831
+ // but the trigger endpoint will always be used in production
832
+ const prodAppId = getProdAppID(appId)
833
+ newTrigger.inputs = {
834
+ schemaUrl: `api/webhooks/schema/${appId}/${id}`,
835
+ triggerUrl: `api/webhooks/trigger/${prodAppId}/${id}`,
836
+ }
837
+ }
838
+ return newAuto
839
+ }
840
+ &nbsp;
841
+ /**
842
+ * When removing an app/unpublishing it need to make sure automations are cleaned up (cron).
843
+ * @param appId {string} the app that is being removed.
844
+ * @return {Promise&lt;void&gt;} clean is complete if this succeeds.
845
+ */
846
+ export async function cleanupAutomations(appId: any) {
847
+ await disableAllCrons(appId)
848
+ }
849
+ &nbsp;
850
+ /**
851
+ * Checks if the supplied automation is of a recurring type.
852
+ * @param automation The automation to check.
853
+ * @return {boolean} if it is recurring (cron).
854
+ */
855
+ export function isRecurring(automation: Automation) {
856
+ return automation.definition.trigger.stepId === definitions.CRON.stepId
857
+ }
858
+ &nbsp;
859
+ export function <span class="fstat-no" title="function not covered" >isErrorInOutput(</span>output: {
860
+ steps: { outputs?: { success: boolean } }[]
861
+ }) {
862
+ let first = <span class="cstat-no" title="statement not covered" >true,</span>
863
+ error = <span class="cstat-no" title="statement not covered" >false</span>
864
+ <span class="cstat-no" title="statement not covered" > for (let step of output.steps) {</span>
865
+ // skip the trigger, its always successful if automation ran
866
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (first) {</span>
867
+ <span class="cstat-no" title="statement not covered" > first = false</span>
868
+ <span class="cstat-no" title="statement not covered" > continue</span>
869
+ }
870
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!step.outputs?.success) {</span>
871
+ <span class="cstat-no" title="statement not covered" > error = true</span>
872
+ }
873
+ }
874
+ <span class="cstat-no" title="statement not covered" > return error</span>
875
+ }
876
+ &nbsp;</pre></td></tr></table></pre>
877
+
878
+ <div class='push'></div><!-- for sticky footer -->
879
+ </div><!-- /wrapper -->
880
+ <div class='footer quiet pad2 space-top1 center small'>
881
+ Code coverage generated by
882
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
883
+ at Wed Nov 16 2022 12:03:55 GMT+0000 (Coordinated Universal Time)
884
+ </div>
885
+ <script src="../../prettify.js"></script>
886
+ <script>
887
+ window.onload = function () {
888
+ prettyPrint();
889
+ };
890
+ </script>
891
+ <script src="../../sorter.js"></script>
892
+ <script src="../../block-navigation.js"></script>
893
+ </body>
894
+ </html>
895
+