@budibase/server 2.2.9 → 2.2.10-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/__mocks__/aws-sdk.ts +19 -0
  2. package/__mocks__/node-fetch.ts +78 -0
  3. package/builder/assets/{index.f6d4f2ae.js → index.a0477c30.js} +364 -361
  4. package/builder/assets/{index.9cb087df.css → index.fa480d5b.css} +2 -2
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +5008 -4974
  7. package/coverage/coverage-final.json +265 -262
  8. package/coverage/lcov-report/index.html +207 -207
  9. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +7 -7
  10. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  11. package/coverage/lcov-report/src/api/controllers/application.ts.html +260 -182
  12. package/coverage/lcov-report/src/api/controllers/auth.ts.html +11 -11
  13. package/coverage/lcov-report/src/api/controllers/automation.ts.html +51 -51
  14. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  15. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +91 -79
  16. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  17. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +30 -30
  18. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +17 -14
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.html +19 -19
  20. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +141 -195
  21. package/coverage/lcov-report/src/api/controllers/dev.ts.html +18 -18
  22. package/coverage/lcov-report/src/api/controllers/index.html +51 -51
  23. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  24. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  25. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  26. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  27. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  28. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +19 -19
  29. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +63 -63
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  31. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
  32. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +55 -55
  33. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  34. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  35. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  36. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +67 -16
  37. package/coverage/lcov-report/src/api/controllers/public/index.html +15 -15
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  45. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +6 -6
  46. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +10 -10
  47. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +9 -9
  48. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +11 -11
  49. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +6 -6
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +8 -8
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +8 -8
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +10 -10
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/index.html +19 -19
  60. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +60 -60
  61. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  62. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  63. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  64. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +12 -15
  65. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +20 -20
  66. package/coverage/lcov-report/src/api/controllers/row/index.html +1 -1
  67. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +14 -14
  68. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +54 -51
  69. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +9 -9
  70. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +21 -12
  71. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +17 -14
  72. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  73. package/coverage/lcov-report/src/api/controllers/script.ts.html +18 -18
  74. package/coverage/lcov-report/src/api/controllers/static/index.html +11 -11
  75. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +32 -44
  76. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +10 -10
  77. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +14 -14
  78. package/coverage/lcov-report/src/api/controllers/table/index.html +19 -19
  79. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +14 -14
  80. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +17 -17
  81. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +51 -51
  82. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  83. package/coverage/lcov-report/src/api/controllers/user.ts.html +119 -119
  84. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +4 -4
  85. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +47 -47
  87. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
  88. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +33 -33
  89. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +14 -14
  90. package/coverage/lcov-report/src/api/index.html +1 -1
  91. package/coverage/lcov-report/src/api/index.ts.html +33 -33
  92. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  93. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  94. package/coverage/lcov-report/src/api/routes/application.ts.html +44 -11
  95. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  96. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  97. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  100. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  101. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -11
  102. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  103. package/coverage/lcov-report/src/api/routes/index.html +7 -7
  104. package/coverage/lcov-report/src/api/routes/index.ts.html +40 -37
  105. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  106. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  107. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  108. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  109. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  110. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  111. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +146 -14
  112. package/coverage/lcov-report/src/api/routes/public/index.html +7 -7
  113. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  114. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  115. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +28 -16
  116. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  117. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  118. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  119. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  121. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  122. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  123. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  125. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  126. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  127. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  128. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  129. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  130. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  131. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  132. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +15 -15
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +24 -24
  136. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  137. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  139. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  140. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  141. package/coverage/lcov-report/src/app.ts.html +32 -32
  142. package/coverage/lcov-report/src/automations/actions.ts.html +25 -25
  143. package/coverage/lcov-report/src/automations/automationUtils.ts.html +91 -19
  144. package/coverage/lcov-report/src/automations/bullboard.ts.html +11 -11
  145. package/coverage/lcov-report/src/automations/index.html +19 -19
  146. package/coverage/lcov-report/src/automations/index.ts.html +13 -13
  147. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  148. package/coverage/lcov-report/src/automations/logging/index.ts.html +11 -11
  149. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  150. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  151. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  152. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  153. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  154. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  155. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  156. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  157. package/coverage/lcov-report/src/automations/steps/index.html +83 -83
  158. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  159. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  160. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +14 -14
  161. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +17 -17
  162. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  163. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +18 -18
  164. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  165. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  166. package/coverage/lcov-report/src/automations/steps/utils.ts.html +16 -16
  167. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.html +5 -5
  169. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +26 -26
  170. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  171. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  173. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  178. package/coverage/lcov-report/src/automations/triggers.ts.html +21 -21
  179. package/coverage/lcov-report/src/automations/utils.ts.html +56 -56
  180. package/coverage/lcov-report/src/constants/index.html +1 -1
  181. package/coverage/lcov-report/src/constants/index.ts.html +92 -92
  182. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  183. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  184. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +23 -23
  185. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  186. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  187. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  188. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  189. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  190. package/coverage/lcov-report/src/db/dynamoClient.ts.html +16 -16
  191. package/coverage/lcov-report/src/db/inMemoryView.ts.html +5 -5
  192. package/coverage/lcov-report/src/db/index.html +19 -19
  193. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  194. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +8 -8
  195. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  196. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  197. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
  198. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +12 -12
  199. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  200. package/coverage/lcov-report/src/db/utils.ts.html +80 -80
  201. package/coverage/lcov-report/src/definitions/automations.ts.html +4 -4
  202. package/coverage/lcov-report/src/definitions/datasource.ts.html +4 -4
  203. package/coverage/lcov-report/src/definitions/index.html +1 -1
  204. package/coverage/lcov-report/src/environment.ts.html +40 -28
  205. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  206. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  207. package/coverage/lcov-report/src/events/index.html +1 -1
  208. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  209. package/coverage/lcov-report/src/events/utils.ts.html +3 -3
  210. package/coverage/lcov-report/src/index.html +25 -25
  211. package/coverage/lcov-report/src/index.ts.html +1 -1
  212. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  213. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  214. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  215. package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
  216. package/coverage/lcov-report/src/integrations/base/sql.ts.html +14 -14
  217. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  218. package/coverage/lcov-report/src/integrations/base/utils.ts.html +3 -3
  219. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  220. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  221. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  222. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  223. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +12 -12
  224. package/coverage/lcov-report/src/integrations/index.html +5 -5
  225. package/coverage/lcov-report/src/integrations/index.ts.html +35 -47
  226. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  227. package/coverage/lcov-report/src/integrations/mongodb.ts.html +5 -5
  228. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  229. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  230. package/coverage/lcov-report/src/integrations/postgres.ts.html +42 -42
  231. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  232. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +13 -13
  233. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  234. package/coverage/lcov-report/src/integrations/rest.ts.html +16 -16
  235. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  236. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  237. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  238. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  239. package/coverage/lcov-report/src/integrations/utils.ts.html +36 -36
  240. package/coverage/lcov-report/src/middleware/appInfo.ts.html +7 -7
  241. package/coverage/lcov-report/src/middleware/authorized.ts.html +28 -28
  242. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  243. package/coverage/lcov-report/src/middleware/currentapp.ts.html +39 -39
  244. package/coverage/lcov-report/src/middleware/index.html +1 -1
  245. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  246. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  247. package/coverage/lcov-report/src/middleware/resourceId.ts.html +22 -22
  248. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  249. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  250. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +13 -10
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  264. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  265. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  267. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  268. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  270. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  275. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  276. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  277. package/coverage/lcov-report/src/migrations/index.html +1 -1
  278. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  279. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  280. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  281. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  282. package/coverage/lcov-report/src/sdk/app/applications/index.html +15 -15
  283. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  284. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  285. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  286. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  288. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +6 -6
  289. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  290. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  291. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +42 -54
  292. package/coverage/lcov-report/src/sdk/app/backups/index.html +30 -30
  293. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  294. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  295. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  296. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  297. package/coverage/lcov-report/src/sdk/index.html +1 -1
  298. package/coverage/lcov-report/src/sdk/index.ts.html +8 -8
  299. package/coverage/lcov-report/src/sdk/users/index.html +5 -5
  300. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  301. package/coverage/lcov-report/src/sdk/users/utils.ts.html +34 -34
  302. package/coverage/lcov-report/src/startup.ts.html +42 -42
  303. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +182 -125
  304. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  305. package/coverage/lcov-report/src/tests/utilities/index.html +15 -15
  306. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  307. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +30 -30
  308. package/coverage/lcov-report/src/threads/automation.ts.html +32 -101
  309. package/coverage/lcov-report/src/threads/index.html +19 -19
  310. package/coverage/lcov-report/src/threads/index.ts.html +25 -25
  311. package/coverage/lcov-report/src/threads/query.ts.html +71 -71
  312. package/coverage/lcov-report/src/threads/utils.ts.html +18 -18
  313. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  314. package/coverage/lcov-report/src/utilities/centralPath.ts.html +4 -4
  315. package/coverage/lcov-report/src/utilities/csvParser.ts.html +8 -8
  316. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  317. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
  318. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +595 -0
  319. package/coverage/lcov-report/src/utilities/fileSystem/index.html +79 -19
  320. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
  321. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +280 -0
  322. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  323. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  324. package/coverage/lcov-report/src/utilities/global.ts.html +43 -43
  325. package/coverage/lcov-report/src/utilities/index.html +48 -63
  326. package/coverage/lcov-report/src/utilities/index.ts.html +36 -168
  327. package/coverage/lcov-report/src/utilities/redis.ts.html +32 -32
  328. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  329. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  330. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +28 -28
  331. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +60 -33
  332. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  333. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  334. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +32 -32
  335. package/coverage/lcov-report/src/utilities/security.ts.html +6 -6
  336. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +1 -1
  337. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  338. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  339. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  340. package/coverage/lcov-report/src/utilities/users.ts.html +6 -6
  341. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +56 -56
  342. package/coverage/lcov-report/src/watch.ts.html +9 -9
  343. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  344. package/coverage/lcov.info +7146 -7081
  345. package/dist/api/controllers/application.js +47 -35
  346. package/dist/api/controllers/cloud.js +6 -2
  347. package/dist/api/controllers/deploy/index.js +43 -60
  348. package/dist/api/controllers/plugin/index.js +6 -6
  349. package/dist/api/controllers/public/applications.js +22 -1
  350. package/dist/api/controllers/row/ExternalRequest.js +0 -1
  351. package/dist/api/controllers/row/internal.js +11 -11
  352. package/dist/api/controllers/row/staticFormula.js +1 -1
  353. package/dist/api/controllers/static/index.js +8 -11
  354. package/dist/api/routes/application.js +3 -0
  355. package/dist/api/routes/deploy.js +1 -2
  356. package/dist/api/routes/public/applications.js +37 -0
  357. package/dist/api/routes/public/middleware/mapper.js +3 -0
  358. package/dist/automations/automationUtils.js +26 -1
  359. package/dist/environment.js +5 -1
  360. package/dist/integrations/googlesheets.js +1 -1
  361. package/dist/integrations/index.js +1 -2
  362. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  363. package/dist/package.json +9 -7
  364. package/dist/sdk/app/backups/imports.js +3 -7
  365. package/dist/threads/automation.js +2 -26
  366. package/dist/tsconfig.build.tsbuildinfo +1 -1
  367. package/dist/utilities/fileSystem/app.js +97 -0
  368. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  369. package/dist/utilities/fileSystem/filesystem.js +182 -0
  370. package/dist/utilities/fileSystem/index.js +18 -342
  371. package/dist/utilities/fileSystem/plugin.js +63 -0
  372. package/dist/utilities/fileSystem/template.js +44 -0
  373. package/dist/utilities/index.js +1 -44
  374. package/dist/utilities/rowProcessor/index.js +12 -4
  375. package/package.json +10 -8
  376. package/specs/openapi.json +84 -0
  377. package/specs/openapi.yaml +53 -0
  378. package/specs/resources/application.js +19 -0
  379. package/src/api/controllers/application.ts +62 -36
  380. package/src/api/controllers/auth.ts +2 -2
  381. package/src/api/controllers/cloud.ts +10 -6
  382. package/src/api/controllers/deploy/Deployment.ts +1 -0
  383. package/src/api/controllers/deploy/index.ts +40 -58
  384. package/src/api/controllers/plugin/index.ts +14 -9
  385. package/src/api/controllers/public/applications.ts +17 -0
  386. package/src/api/controllers/row/ExternalRequest.ts +0 -1
  387. package/src/api/controllers/row/internal.ts +23 -22
  388. package/src/api/controllers/row/staticFormula.ts +5 -2
  389. package/src/api/controllers/row/utils.ts +2 -1
  390. package/src/api/controllers/static/index.ts +6 -10
  391. package/src/api/routes/application.ts +11 -0
  392. package/src/api/routes/deploy.ts +0 -1
  393. package/src/api/routes/index.ts +4 -3
  394. package/src/api/routes/public/applications.ts +44 -0
  395. package/src/api/routes/public/middleware/mapper.ts +4 -0
  396. package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +0 -0
  397. package/src/api/routes/tests/{application.spec.js → application.spec.ts} +94 -18
  398. package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -6
  399. package/src/api/routes/tests/cloud.spec.ts +65 -0
  400. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  401. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  402. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  403. package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +23 -15
  404. package/src/api/routes/tests/permissions.spec.js +1 -1
  405. package/src/api/routes/tests/plugin.spec.ts +179 -0
  406. package/src/api/routes/tests/routing.spec.js +1 -2
  407. package/src/api/routes/tests/row.spec.js +4 -2
  408. package/src/api/routes/tests/static.spec.js +2 -17
  409. package/src/api/routes/tests/table.spec.js +8 -2
  410. package/src/api/routes/tests/user.spec.js +86 -0
  411. package/src/api/routes/tests/utilities/index.ts +2 -2
  412. package/src/api/routes/tests/webhook.spec.js +1 -1
  413. package/src/automations/automationUtils.ts +24 -0
  414. package/src/automations/tests/bash.spec.js +34 -0
  415. package/src/automations/tests/discord.spec.js +27 -0
  416. package/src/automations/tests/executeQuery.spec.js +49 -0
  417. package/src/automations/tests/executeScript.spec.js +48 -0
  418. package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
  419. package/src/automations/tests/serverLog.spec.js +22 -0
  420. package/src/automations/tests/utilities/index.ts +2 -2
  421. package/src/automations/tests/zapier.spec.js +27 -0
  422. package/src/automations/unitTests/automationUtils.spec.ts +65 -0
  423. package/src/definitions/openapi.ts +10 -0
  424. package/src/environment.ts +5 -1
  425. package/src/integrations/googlesheets.ts +1 -1
  426. package/src/integrations/index.ts +1 -5
  427. package/src/migrations/functions/backfill/global/configs.ts +5 -4
  428. package/src/sdk/app/backups/imports.ts +3 -7
  429. package/src/tests/jestSetup.ts +4 -1
  430. package/src/tests/utilities/TestConfiguration.ts +23 -4
  431. package/src/threads/automation.ts +2 -25
  432. package/src/utilities/fileSystem/app.ts +86 -0
  433. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  434. package/src/utilities/fileSystem/filesystem.ts +170 -0
  435. package/src/utilities/fileSystem/index.ts +5 -348
  436. package/src/utilities/fileSystem/plugin.ts +65 -0
  437. package/src/utilities/fileSystem/template.ts +36 -0
  438. package/src/utilities/index.ts +1 -45
  439. package/src/utilities/rowProcessor/index.ts +17 -8
  440. package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
  441. package/tsconfig.build.json +2 -0
  442. package/coverage/lcov-report/src/utilities/plugins.ts.html +0 -151
  443. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  444. package/dist/api/routes/tests/utilities/index.js +0 -131
  445. package/dist/automations/tests/utilities/index.js +0 -81
  446. package/dist/tests/utilities/TestConfiguration.js +0 -562
  447. package/dist/tests/utilities/controllers.js +0 -40
  448. package/dist/tests/utilities/structures.js +0 -168
  449. package/dist/utilities/plugins.js +0 -26
  450. package/src/api/routes/tests/deployment.spec.ts +0 -25
  451. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  452. package/src/utilities/plugins.ts +0 -22
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">88.8% </span>
26
+ <span class="strong">90.2% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>246/277</span>
28
+ <span class='fraction'>267/296</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">68.03% </span>
33
+ <span class="strong">66.96% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>83/122</span>
35
+ <span class='fraction'>75/112</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">92.85% </span>
40
+ <span class="strong">95.65% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>39/42</span>
42
+ <span class='fraction'>44/46</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.38% </span>
47
+ <span class="strong">89.75% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>236/267</span>
49
+ <span class='fraction'>254/283</span>
50
50
  </div>
51
51
 
52
52
 
@@ -665,15 +665,41 @@
665
665
  <a name='L600'></a><a href='#L600'>600</a>
666
666
  <a name='L601'></a><a href='#L601'>601</a>
667
667
  <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">46x</span>
669
- <span class="cline-any cline-yes">46x</span>
670
- <span class="cline-any cline-yes">46x</span>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">54x</span>
695
+ <span class="cline-any cline-yes">54x</span>
696
+ <span class="cline-any cline-yes">54x</span>
671
697
  <span class="cline-any cline-neutral">&nbsp;</span>
672
698
  <span class="cline-any cline-neutral">&nbsp;</span>
673
699
  <span class="cline-any cline-neutral">&nbsp;</span>
674
700
  <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-yes">46x</span>
676
- <span class="cline-any cline-yes">46x</span>
701
+ <span class="cline-any cline-yes">54x</span>
702
+ <span class="cline-any cline-yes">54x</span>
677
703
  <span class="cline-any cline-neutral">&nbsp;</span>
678
704
  <span class="cline-any cline-neutral">&nbsp;</span>
679
705
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -681,7 +707,7 @@
681
707
  <span class="cline-any cline-neutral">&nbsp;</span>
682
708
  <span class="cline-any cline-neutral">&nbsp;</span>
683
709
  <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-yes">46x</span>
710
+ <span class="cline-any cline-yes">54x</span>
685
711
  <span class="cline-any cline-neutral">&nbsp;</span>
686
712
  <span class="cline-any cline-neutral">&nbsp;</span>
687
713
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -691,36 +717,34 @@
691
717
  <span class="cline-any cline-neutral">&nbsp;</span>
692
718
  <span class="cline-any cline-neutral">&nbsp;</span>
693
719
  <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-yes">46x</span>
695
- <span class="cline-any cline-yes">46x</span>
696
- <span class="cline-any cline-yes">46x</span>
697
- <span class="cline-any cline-yes">46x</span>
698
720
  <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-yes">54x</span>
722
+ <span class="cline-any cline-yes">54x</span>
723
+ <span class="cline-any cline-yes">54x</span>
724
+ <span class="cline-any cline-yes">54x</span>
725
+ <span class="cline-any cline-yes">54x</span>
726
+ <span class="cline-any cline-yes">54x</span>
699
727
  <span class="cline-any cline-neutral">&nbsp;</span>
700
728
  <span class="cline-any cline-neutral">&nbsp;</span>
701
729
  <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-yes">46x</span>
703
- <span class="cline-any cline-yes">46x</span>
704
730
  <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-yes">54x</span>
732
+ <span class="cline-any cline-yes">54x</span>
733
+ <span class="cline-any cline-yes">54x</span>
734
+ <span class="cline-any cline-yes">54x</span>
735
+ <span class="cline-any cline-yes">54x</span>
705
736
  <span class="cline-any cline-neutral">&nbsp;</span>
706
737
  <span class="cline-any cline-neutral">&nbsp;</span>
707
738
  <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-yes">46x</span>
709
- <span class="cline-any cline-yes">46x</span>
710
- <span class="cline-any cline-yes">46x</span>
711
- <span class="cline-any cline-yes">46x</span>
712
- <span class="cline-any cline-yes">46x</span>
713
739
  <span class="cline-any cline-neutral">&nbsp;</span>
714
740
  <span class="cline-any cline-neutral">&nbsp;</span>
715
741
  <span class="cline-any cline-neutral">&nbsp;</span>
716
742
  <span class="cline-any cline-neutral">&nbsp;</span>
717
743
  <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-yes">54x</span>
745
+ <span class="cline-any cline-yes">54x</span>
718
746
  <span class="cline-any cline-neutral">&nbsp;</span>
719
747
  <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-yes">46x</span>
721
- <span class="cline-any cline-yes">46x</span>
722
- <span class="cline-any cline-yes">46x</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
748
  <span class="cline-any cline-neutral">&nbsp;</span>
725
749
  <span class="cline-any cline-neutral">&nbsp;</span>
726
750
  <span class="cline-any cline-yes">8x</span>
@@ -756,10 +780,10 @@
756
780
  <span class="cline-any cline-neutral">&nbsp;</span>
757
781
  <span class="cline-any cline-neutral">&nbsp;</span>
758
782
  <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-yes">254x</span>
783
+ <span class="cline-any cline-yes">292x</span>
760
784
  <span class="cline-any cline-yes">4x</span>
761
785
  <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-yes">1169x</span>
786
+ <span class="cline-any cline-yes">1271x</span>
763
787
  <span class="cline-any cline-no">&nbsp;</span>
764
788
  <span class="cline-any cline-neutral">&nbsp;</span>
765
789
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -771,25 +795,25 @@
771
795
  <span class="cline-any cline-neutral">&nbsp;</span>
772
796
  <span class="cline-any cline-neutral">&nbsp;</span>
773
797
  <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-yes">254x</span>
798
+ <span class="cline-any cline-yes">292x</span>
775
799
  <span class="cline-any cline-no">&nbsp;</span>
776
800
  <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-yes">254x</span>
801
+ <span class="cline-any cline-yes">292x</span>
778
802
  <span class="cline-any cline-yes">4x</span>
779
803
  <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-yes">1169x</span>
804
+ <span class="cline-any cline-yes">1271x</span>
781
805
  <span class="cline-any cline-no">&nbsp;</span>
782
806
  <span class="cline-any cline-neutral">&nbsp;</span>
783
807
  <span class="cline-any cline-neutral">&nbsp;</span>
784
808
  <span class="cline-any cline-neutral">&nbsp;</span>
785
809
  <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-yes">251x</span>
787
- <span class="cline-any cline-yes">251x</span>
788
- <span class="cline-any cline-yes">251x</span>
789
- <span class="cline-any cline-yes">251x</span>
810
+ <span class="cline-any cline-yes">289x</span>
811
+ <span class="cline-any cline-yes">289x</span>
812
+ <span class="cline-any cline-yes">289x</span>
813
+ <span class="cline-any cline-yes">289x</span>
790
814
  <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-yes">251x</span>
792
- <span class="cline-any cline-yes">251x</span>
815
+ <span class="cline-any cline-yes">289x</span>
816
+ <span class="cline-any cline-yes">289x</span>
793
817
  <span class="cline-any cline-neutral">&nbsp;</span>
794
818
  <span class="cline-any cline-neutral">&nbsp;</span>
795
819
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -798,30 +822,30 @@
798
822
  <span class="cline-any cline-neutral">&nbsp;</span>
799
823
  <span class="cline-any cline-neutral">&nbsp;</span>
800
824
  <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-yes">251x</span>
802
- <span class="cline-any cline-yes">251x</span>
803
- <span class="cline-any cline-yes">251x</span>
825
+ <span class="cline-any cline-yes">289x</span>
826
+ <span class="cline-any cline-yes">289x</span>
827
+ <span class="cline-any cline-yes">289x</span>
804
828
  <span class="cline-any cline-neutral">&nbsp;</span>
805
829
  <span class="cline-any cline-neutral">&nbsp;</span>
806
830
  <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-yes">251x</span>
831
+ <span class="cline-any cline-yes">289x</span>
808
832
  <span class="cline-any cline-yes">1x</span>
809
833
  <span class="cline-any cline-yes">1x</span>
810
834
  <span class="cline-any cline-no">&nbsp;</span>
811
835
  <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-yes">250x</span>
836
+ <span class="cline-any cline-yes">288x</span>
813
837
  <span class="cline-any cline-yes">2x</span>
814
838
  <span class="cline-any cline-neutral">&nbsp;</span>
815
839
  <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-yes">248x</span>
840
+ <span class="cline-any cline-yes">286x</span>
817
841
  <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-yes">248x</span>
842
+ <span class="cline-any cline-yes">286x</span>
819
843
  <span class="cline-any cline-neutral">&nbsp;</span>
820
844
  <span class="cline-any cline-no">&nbsp;</span>
821
845
  <span class="cline-any cline-neutral">&nbsp;</span>
822
846
  <span class="cline-any cline-neutral">&nbsp;</span>
823
847
  <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-yes">251x</span>
848
+ <span class="cline-any cline-yes">289x</span>
825
849
  <span class="cline-any cline-neutral">&nbsp;</span>
826
850
  <span class="cline-any cline-neutral">&nbsp;</span>
827
851
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -831,32 +855,32 @@
831
855
  <span class="cline-any cline-no">&nbsp;</span>
832
856
  <span class="cline-any cline-neutral">&nbsp;</span>
833
857
  <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-yes">46x</span>
835
- <span class="cline-any cline-yes">15x</span>
836
- <span class="cline-any cline-yes">15x</span>
837
- <span class="cline-any cline-yes">15x</span>
858
+ <span class="cline-any cline-yes">54x</span>
859
+ <span class="cline-any cline-yes">24x</span>
860
+ <span class="cline-any cline-yes">24x</span>
861
+ <span class="cline-any cline-yes">24x</span>
838
862
  <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-yes">15x</span>
840
- <span class="cline-any cline-yes">23x</span>
841
- <span class="cline-any cline-yes">23x</span>
863
+ <span class="cline-any cline-yes">24x</span>
864
+ <span class="cline-any cline-yes">31x</span>
865
+ <span class="cline-any cline-yes">31x</span>
842
866
  <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">15x</span>
844
- <span class="cline-any cline-yes">15x</span>
845
- <span class="cline-any cline-yes">15x</span>
846
- <span class="cline-any cline-yes">23x</span>
847
- <span class="cline-any cline-yes">23x</span>
867
+ <span class="cline-any cline-yes">24x</span>
868
+ <span class="cline-any cline-yes">24x</span>
869
+ <span class="cline-any cline-yes">24x</span>
870
+ <span class="cline-any cline-yes">31x</span>
871
+ <span class="cline-any cline-yes">31x</span>
848
872
  <span class="cline-any cline-no">&nbsp;</span>
849
873
  <span class="cline-any cline-neutral">&nbsp;</span>
850
874
  <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-yes">23x</span>
875
+ <span class="cline-any cline-yes">31x</span>
852
876
  <span class="cline-any cline-neutral">&nbsp;</span>
853
877
  <span class="cline-any cline-neutral">&nbsp;</span>
854
878
  <span class="cline-any cline-neutral">&nbsp;</span>
855
879
  <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-yes">15x</span>
880
+ <span class="cline-any cline-yes">24x</span>
857
881
  <span class="cline-any cline-neutral">&nbsp;</span>
858
882
  <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-yes">46x</span>
883
+ <span class="cline-any cline-yes">54x</span>
860
884
  <span class="cline-any cline-yes">1x</span>
861
885
  <span class="cline-any cline-yes">1x</span>
862
886
  <span class="cline-any cline-yes">1x</span>
@@ -871,7 +895,7 @@
871
895
  <span class="cline-any cline-neutral">&nbsp;</span>
872
896
  <span class="cline-any cline-neutral">&nbsp;</span>
873
897
  <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-yes">46x</span>
898
+ <span class="cline-any cline-yes">54x</span>
875
899
  <span class="cline-any cline-yes">6x</span>
876
900
  <span class="cline-any cline-yes">6x</span>
877
901
  <span class="cline-any cline-yes">6x</span>
@@ -881,6 +905,8 @@
881
905
  <span class="cline-any cline-yes">6x</span>
882
906
  <span class="cline-any cline-neutral">&nbsp;</span>
883
907
  <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
910
  <span class="cline-any cline-yes">6x</span>
885
911
  <span class="cline-any cline-no">&nbsp;</span>
886
912
  <span class="cline-any cline-no">&nbsp;</span>
@@ -892,34 +918,38 @@
892
918
  <span class="cline-any cline-neutral">&nbsp;</span>
893
919
  <span class="cline-any cline-neutral">&nbsp;</span>
894
920
  <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-yes">6x</span>
895
922
  <span class="cline-any cline-neutral">&nbsp;</span>
896
923
  <span class="cline-any cline-neutral">&nbsp;</span>
897
924
  <span class="cline-any cline-neutral">&nbsp;</span>
898
925
  <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-yes">251x</span>
900
- <span class="cline-any cline-yes">251x</span>
901
- <span class="cline-any cline-yes">251x</span>
902
- <span class="cline-any cline-yes">251x</span>
903
- <span class="cline-any cline-yes">251x</span>
904
- <span class="cline-any cline-yes">251x</span>
905
926
  <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-yes">251x</span>
907
- <span class="cline-any cline-yes">251x</span>
908
927
  <span class="cline-any cline-neutral">&nbsp;</span>
909
928
  <span class="cline-any cline-neutral">&nbsp;</span>
910
929
  <span class="cline-any cline-neutral">&nbsp;</span>
930
+ <span class="cline-any cline-yes">289x</span>
931
+ <span class="cline-any cline-yes">289x</span>
932
+ <span class="cline-any cline-yes">289x</span>
933
+ <span class="cline-any cline-yes">289x</span>
934
+ <span class="cline-any cline-yes">289x</span>
935
+ <span class="cline-any cline-yes">289x</span>
911
936
  <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-yes">251x</span>
913
- <span class="cline-any cline-yes">2x</span>
937
+ <span class="cline-any cline-yes">289x</span>
938
+ <span class="cline-any cline-yes">289x</span>
914
939
  <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-yes">251x</span>
916
- <span class="cline-any cline-yes">251x</span>
917
- <span class="cline-any cline-yes">251x</span>
918
- <span class="cline-any cline-yes">251x</span>
919
940
  <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">251x</span>
921
941
  <span class="cline-any cline-neutral">&nbsp;</span>
922
942
  <span class="cline-any cline-neutral">&nbsp;</span>
943
+ <span class="cline-any cline-yes">289x</span>
944
+ <span class="cline-any cline-yes">4x</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-yes">289x</span>
947
+ <span class="cline-any cline-yes">289x</span>
948
+ <span class="cline-any cline-yes">289x</span>
949
+ <span class="cline-any cline-yes">289x</span>
950
+ <span class="cline-any cline-neutral">&nbsp;</span>
951
+ <span class="cline-any cline-yes">289x</span>
952
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
953
  <span class="cline-any cline-neutral">&nbsp;</span>
924
954
  <span class="cline-any cline-neutral">&nbsp;</span>
925
955
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -952,8 +982,9 @@
952
982
  <span class="cline-any cline-neutral">&nbsp;</span>
953
983
  <span class="cline-any cline-neutral">&nbsp;</span>
954
984
  <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-yes">251x</span>
956
- <span class="cline-any cline-yes">251x</span>
985
+ <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-yes">289x</span>
987
+ <span class="cline-any cline-yes">289x</span>
957
988
  <span class="cline-any cline-yes">1x</span>
958
989
  <span class="cline-any cline-neutral">&nbsp;</span>
959
990
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -979,23 +1010,23 @@
979
1010
  <span class="cline-any cline-neutral">&nbsp;</span>
980
1011
  <span class="cline-any cline-neutral">&nbsp;</span>
981
1012
  <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-yes">251x</span>
983
- <span class="cline-any cline-yes">251x</span>
1013
+ <span class="cline-any cline-yes">289x</span>
1014
+ <span class="cline-any cline-yes">289x</span>
984
1015
  <span class="cline-any cline-neutral">&nbsp;</span>
985
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
986
1017
  <span class="cline-any cline-neutral">&nbsp;</span>
987
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
988
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
989
1020
  <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-yes">251x</span>
991
- <span class="cline-any cline-yes">251x</span>
1021
+ <span class="cline-any cline-yes">289x</span>
1022
+ <span class="cline-any cline-yes">289x</span>
992
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
993
1024
  <span class="cline-any cline-neutral">&nbsp;</span>
994
1025
  <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-yes">251x</span>
1026
+ <span class="cline-any cline-yes">289x</span>
996
1027
  <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-yes">251x</span>
998
- <span class="cline-any cline-yes">251x</span>
1028
+ <span class="cline-any cline-yes">289x</span>
1029
+ <span class="cline-any cline-yes">289x</span>
999
1030
  <span class="cline-any cline-neutral">&nbsp;</span>
1000
1031
  <span class="cline-any cline-yes">3x</span>
1001
1032
  <span class="cline-any cline-yes">1x</span>
@@ -1009,23 +1040,23 @@
1009
1040
  <span class="cline-any cline-no">&nbsp;</span>
1010
1041
  <span class="cline-any cline-neutral">&nbsp;</span>
1011
1042
  <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-yes">251x</span>
1043
+ <span class="cline-any cline-yes">289x</span>
1013
1044
  <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-yes">251x</span>
1015
- <span class="cline-any cline-yes">254x</span>
1045
+ <span class="cline-any cline-yes">289x</span>
1046
+ <span class="cline-any cline-yes">292x</span>
1016
1047
  <span class="cline-any cline-neutral">&nbsp;</span>
1017
1048
  <span class="cline-any cline-neutral">&nbsp;</span>
1018
1049
  <span class="cline-any cline-neutral">&nbsp;</span>
1019
1050
  <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-yes">251x</span>
1021
- <span class="cline-any cline-yes">251x</span>
1051
+ <span class="cline-any cline-yes">289x</span>
1052
+ <span class="cline-any cline-yes">289x</span>
1022
1053
  <span class="cline-any cline-neutral">&nbsp;</span>
1023
1054
  <span class="cline-any cline-neutral">&nbsp;</span>
1024
1055
  <span class="cline-any cline-neutral">&nbsp;</span>
1025
1056
  <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-yes">251x</span>
1057
+ <span class="cline-any cline-yes">289x</span>
1027
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-yes">251x</span>
1059
+ <span class="cline-any cline-yes">289x</span>
1029
1060
  <span class="cline-any cline-yes">3x</span>
1030
1061
  <span class="cline-any cline-yes">3x</span>
1031
1062
  <span class="cline-any cline-yes">3x</span>
@@ -1047,17 +1078,17 @@
1047
1078
  <span class="cline-any cline-neutral">&nbsp;</span>
1048
1079
  <span class="cline-any cline-neutral">&nbsp;</span>
1049
1080
  <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-yes">46x</span>
1051
- <span class="cline-any cline-yes">251x</span>
1052
- <span class="cline-any cline-yes">251x</span>
1053
- <span class="cline-any cline-yes">251x</span>
1054
- <span class="cline-any cline-yes">251x</span>
1055
- <span class="cline-any cline-yes">251x</span>
1081
+ <span class="cline-any cline-yes">54x</span>
1082
+ <span class="cline-any cline-yes">289x</span>
1083
+ <span class="cline-any cline-yes">289x</span>
1084
+ <span class="cline-any cline-yes">289x</span>
1085
+ <span class="cline-any cline-yes">289x</span>
1086
+ <span class="cline-any cline-yes">289x</span>
1056
1087
  <span class="cline-any cline-neutral">&nbsp;</span>
1057
1088
  <span class="cline-any cline-neutral">&nbsp;</span>
1058
1089
  <span class="cline-any cline-neutral">&nbsp;</span>
1059
1090
  <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-yes">46x</span>
1091
+ <span class="cline-any cline-yes">54x</span>
1061
1092
  <span class="cline-any cline-yes">3x</span>
1062
1093
  <span class="cline-any cline-neutral">&nbsp;</span>
1063
1094
  <span class="cline-any cline-yes">3x</span>
@@ -1077,7 +1108,7 @@
1077
1108
  <span class="cline-any cline-yes">3x</span>
1078
1109
  <span class="cline-any cline-neutral">&nbsp;</span>
1079
1110
  <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-yes">46x</span>
1111
+ <span class="cline-any cline-yes">54x</span>
1081
1112
  <span class="cline-any cline-neutral">&nbsp;</span>
1082
1113
  <span class="cline-any cline-yes">2x</span>
1083
1114
  <span class="cline-any cline-yes">2x</span>
@@ -1101,7 +1132,7 @@
1101
1132
  <span class="cline-any cline-yes">2x</span>
1102
1133
  <span class="cline-any cline-neutral">&nbsp;</span>
1103
1134
  <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-yes">46x</span>
1135
+ <span class="cline-any cline-yes">54x</span>
1105
1136
  <span class="cline-any cline-neutral">&nbsp;</span>
1106
1137
  <span class="cline-any cline-yes">1x</span>
1107
1138
  <span class="cline-any cline-yes">1x</span>
@@ -1127,75 +1158,96 @@
1127
1158
  <span class="cline-any cline-yes">1x</span>
1128
1159
  <span class="cline-any cline-neutral">&nbsp;</span>
1129
1160
  <span class="cline-any cline-neutral">&nbsp;</span>
1161
+ <span class="cline-any cline-yes">54x</span>
1162
+ <span class="cline-any cline-yes">33x</span>
1163
+ <span class="cline-any cline-yes">33x</span>
1130
1164
  <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-yes">23x</span>
1132
- <span class="cline-any cline-yes">23x</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-yes">23x</span>
1135
- <span class="cline-any cline-yes">1x</span>
1136
- <span class="cline-any cline-yes">1x</span>
1165
+ <span class="cline-any cline-yes">33x</span>
1166
+ <span class="cline-any cline-yes">33x</span>
1137
1167
  <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-yes">1x</span>
1168
+ <span class="cline-any cline-yes">33x</span>
1139
1169
  <span class="cline-any cline-neutral">&nbsp;</span>
1140
1170
  <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-yes">23x</span>
1142
- <span class="cline-any cline-yes">23x</span>
1143
- <span class="cline-any cline-yes">23x</span>
1171
+ <span class="cline-any cline-yes">33x</span>
1144
1172
  <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-yes">23x</span>
1146
- <span class="cline-any cline-yes">1x</span>
1173
+ <span class="cline-any cline-yes">33x</span>
1174
+ <span class="cline-any cline-yes">33x</span>
1147
1175
  <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-yes">22x</span>
1149
- <span class="cline-any cline-yes">22x</span>
1150
1176
  <span class="cline-any cline-neutral">&nbsp;</span>
1151
1177
  <span class="cline-any cline-neutral">&nbsp;</span>
1178
+ <span class="cline-any cline-yes">30x</span>
1179
+ <span class="cline-any cline-yes">30x</span>
1180
+ <span class="cline-any cline-yes">30x</span>
1152
1181
  <span class="cline-any cline-neutral">&nbsp;</span>
1153
1182
  <span class="cline-any cline-neutral">&nbsp;</span>
1183
+ <span class="cline-any cline-yes">30x</span>
1154
1184
  <span class="cline-any cline-neutral">&nbsp;</span>
1185
+ <span class="cline-any cline-yes">30x</span>
1186
+ <span class="cline-any cline-yes">30x</span>
1155
1187
  <span class="cline-any cline-neutral">&nbsp;</span>
1156
1188
  <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-yes">23x</span>
1158
- <span class="cline-any cline-yes">1x</span>
1189
+ <span class="cline-any cline-yes">30x</span>
1159
1190
  <span class="cline-any cline-neutral">&nbsp;</span>
1191
+ <span class="cline-any cline-yes">30x</span>
1192
+ <span class="cline-any cline-yes">30x</span>
1193
+ <span class="cline-any cline-yes">30x</span>
1194
+ <span class="cline-any cline-yes">30x</span>
1160
1195
  <span class="cline-any cline-neutral">&nbsp;</span>
1196
+ <span class="cline-any cline-yes">30x</span>
1197
+ <span class="cline-any cline-no">&nbsp;</span>
1161
1198
  <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-yes">22x</span>
1163
1199
  <span class="cline-any cline-neutral">&nbsp;</span>
1164
- <span class="cline-any cline-yes">23x</span>
1165
- <span class="cline-any cline-yes">23x</span>
1200
+ <span class="cline-any cline-yes">30x</span>
1201
+ <span class="cline-any cline-yes">30x</span>
1202
+ <span class="cline-any cline-yes">30x</span>
1166
1203
  <span class="cline-any cline-neutral">&nbsp;</span>
1167
1204
  <span class="cline-any cline-neutral">&nbsp;</span>
1168
1205
  <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-yes">23x</span>
1170
- <span class="cline-any cline-yes">23x</span>
1206
+ <span class="cline-any cline-yes">33x</span>
1207
+ <span class="cline-any cline-yes">33x</span>
1171
1208
  <span class="cline-any cline-neutral">&nbsp;</span>
1172
1209
  <span class="cline-any cline-neutral">&nbsp;</span>
1173
1210
  <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-yes">23x</span>
1175
- <span class="cline-any cline-yes">23x</span>
1176
- <span class="cline-any cline-yes">23x</span>
1211
+ <span class="cline-any cline-yes">33x</span>
1212
+ <span class="cline-any cline-yes">33x</span>
1213
+ <span class="cline-any cline-yes">33x</span>
1177
1214
  <span class="cline-any cline-no">&nbsp;</span>
1178
1215
  <span class="cline-any cline-neutral">&nbsp;</span>
1179
1216
  <span class="cline-any cline-neutral">&nbsp;</span>
1180
1217
  <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-yes">46x</span>
1182
- <span class="cline-any cline-yes">23x</span>
1183
- <span class="cline-any cline-yes">23x</span>
1184
- <span class="cline-any cline-yes">23x</span>
1185
- <span class="cline-any cline-yes">23x</span>
1186
- <span class="cline-any cline-yes">23x</span>
1218
+ <span class="cline-any cline-yes">54x</span>
1219
+ <span class="cline-any cline-yes">30x</span>
1220
+ <span class="cline-any cline-yes">30x</span>
1221
+ <span class="cline-any cline-yes">30x</span>
1222
+ <span class="cline-any cline-yes">30x</span>
1223
+ <span class="cline-any cline-yes">30x</span>
1187
1224
  <span class="cline-any cline-neutral">&nbsp;</span>
1188
1225
  <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-yes">46x</span>
1190
- <span class="cline-any cline-no">&nbsp;</span>
1191
- <span class="cline-any cline-no">&nbsp;</span>
1192
- <span class="cline-any cline-no">&nbsp;</span>
1226
+ <span class="cline-any cline-yes">54x</span>
1227
+ <span class="cline-any cline-yes">3x</span>
1228
+ <span class="cline-any cline-yes">3x</span>
1193
1229
  <span class="cline-any cline-neutral">&nbsp;</span>
1230
+ <span class="cline-any cline-neutral">&nbsp;</span>
1231
+ <span class="cline-any cline-yes">3x</span>
1194
1232
  <span class="cline-any cline-no">&nbsp;</span>
1195
1233
  <span class="cline-any cline-neutral">&nbsp;</span>
1196
1234
  <span class="cline-any cline-neutral">&nbsp;</span>
1235
+ <span class="cline-any cline-yes">3x</span>
1236
+ <span class="cline-any cline-yes">3x</span>
1237
+ <span class="cline-any cline-yes">3x</span>
1238
+ <span class="cline-any cline-yes">3x</span>
1239
+ <span class="cline-any cline-neutral">&nbsp;</span>
1240
+ <span class="cline-any cline-neutral">&nbsp;</span>
1241
+ <span class="cline-any cline-yes">54x</span>
1242
+ <span class="cline-any cline-yes">3x</span>
1243
+ <span class="cline-any cline-yes">3x</span>
1244
+ <span class="cline-any cline-yes">3x</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-yes">1x</span>
1247
+ <span class="cline-any cline-neutral">&nbsp;</span>
1248
+ <span class="cline-any cline-neutral">&nbsp;</span>
1197
1249
  <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-yes">46x</span>
1250
+ <span class="cline-any cline-yes">54x</span>
1199
1251
  <span class="cline-any cline-yes">6x</span>
1200
1252
  <span class="cline-any cline-yes">6x</span>
1201
1253
  <span class="cline-any cline-yes">6x</span>
@@ -1292,21 +1344,18 @@ import {
1292
1344
  errors,
1293
1345
  events,
1294
1346
  migrations,
1347
+ objectStore,
1295
1348
  } from "@budibase/backend-core"
1296
1349
  import { USERS_TABLE_SCHEMA } from "../../constants"
1297
1350
  import { buildDefaultDocs } from "../../db/defaultData/datasource_bb_default"
1298
1351
  import { removeAppFromUserRoles } from "../../utilities/workerRequests"
1299
- import {
1300
- clientLibraryPath,
1301
- stringToReadStream,
1302
- isQsTrue,
1303
- } from "../../utilities"
1352
+ import { stringToReadStream, isQsTrue } from "../../utilities"
1304
1353
  import { getLocksById } from "../../utilities/redis"
1305
1354
  import {
1306
1355
  updateClientLibrary,
1307
1356
  backupClientLibrary,
1308
1357
  revertClientLibrary,
1309
- } from "../../utilities/fileSystem/clientLibrary"
1358
+ } from "../../utilities/fileSystem"
1310
1359
  import { cleanupAutomations } from "../../automations/utils"
1311
1360
  import { checkAppMetadata } from "../../automations/logging"
1312
1361
  import { getUniqueRows } from "../../utilities/usageQuota/rows"
@@ -1318,10 +1367,11 @@ import {
1318
1367
  MigrationType,
1319
1368
  BBContext,
1320
1369
  Database,
1370
+ UserCtx,
1321
1371
  } from "@budibase/types"
1322
1372
  import { BASE_LAYOUT_PROP_IDS } from "../../constants/layouts"
1323
- import { enrichPluginURLs } from "../../utilities/plugins"
1324
1373
  import sdk from "../../sdk"
1374
+ import { getDB } from "@budibase/backend-core/src/db"
1325
1375
  &nbsp;
1326
1376
  // utility function, need to do away with this
1327
1377
  async function getLayouts() {
@@ -1442,7 +1492,7 @@ export async function fetch(ctx: BBContext) {
1442
1492
  .filter((app: any) =&gt; app.status === "development")
1443
1493
  .map((app: any) =&gt; app.appId)
1444
1494
  // get the locks for all the dev apps
1445
- if (dev || <span class="branch-1 cbranch-no" title="branch not covered" >all)</span> {
1495
+ if (dev || all) {
1446
1496
  const locks = await getLocksById(appIds)
1447
1497
  for (let app of apps) {
1448
1498
  const lock = locks[app.appId]
@@ -1473,27 +1523,34 @@ export async function fetchAppDefinition(ctx: BBContext) {
1473
1523
  }
1474
1524
  }
1475
1525
  &nbsp;
1476
- export async function fetchAppPackage(ctx: BBContext) {
1526
+ export async function fetchAppPackage(ctx: UserCtx) {
1477
1527
  const db = context.getAppDB()
1478
1528
  let application = await db.get(DocumentType.APP_METADATA)
1479
1529
  const layouts = await getLayouts()
1480
1530
  let screens = await getScreens()
1481
1531
  &nbsp;
1482
1532
  // Enrich plugin URLs
1483
- application.usedPlugins = enrichPluginURLs(application.usedPlugins)
1533
+ application.usedPlugins = objectStore.enrichPluginURLs(
1534
+ application.usedPlugins
1535
+ )
1484
1536
  &nbsp;
1485
1537
  // Only filter screens if the user is not a builder
1486
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!(ctx.user<span class="branch-0 cbranch-no" title="branch not covered" >?.b</span>uilder &amp;&amp; ctx.user.builder.global)) {
1538
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!(ctx.user.builder &amp;&amp; ctx.user.builder.global)) {
1487
1539
  const userRoleId = <span class="cstat-no" title="statement not covered" >getUserRoleId(ctx)</span>
1488
1540
  const accessController = <span class="cstat-no" title="statement not covered" >new roles.AccessController()</span>
1489
1541
  <span class="cstat-no" title="statement not covered" > screens = await accessController.checkScreensAccess(screens, userRoleId)</span>
1490
1542
  }
1543
+ &nbsp;
1544
+ const clientLibPath = objectStore.clientLibraryUrl(
1545
+ ctx.params.appId,
1546
+ application.version
1547
+ )
1491
1548
  &nbsp;
1492
1549
  ctx.body = {
1493
1550
  application,
1494
1551
  screens,
1495
1552
  layouts,
1496
- clientLibPath: clientLibraryPath(ctx.params.appId, application.version),
1553
+ clientLibPath,
1497
1554
  }
1498
1555
  }
1499
1556
  &nbsp;
@@ -1639,7 +1696,7 @@ async function appPostCreate(ctx: BBContext, app: App) {
1639
1696
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (err.code &amp;&amp; err.code === errors.codes.USAGE_LIMIT_EXCEEDED) {</span>
1640
1697
  // this import resulted in row usage exceeding the quota
1641
1698
  // delete the app
1642
- // skip pre- and post-steps as no rows have been added to quotas yet
1699
+ // skip pre and post-steps as no rows have been added to quotas yet
1643
1700
  <span class="cstat-no" title="statement not covered" > ctx.params.appId = app.appId</span>
1644
1701
  <span class="cstat-no" title="statement not covered" > await destroyApp(ctx)</span>
1645
1702
  }
@@ -1729,41 +1786,47 @@ export async function revertClient(ctx: BBContext) {
1729
1786
  ctx.body = app
1730
1787
  }
1731
1788
  &nbsp;
1789
+ const unpublishApp = async (ctx: any) =&gt; {
1790
+ let appId = ctx.params.appId
1791
+ appId = dbCore.getProdAppID(appId)
1792
+ &nbsp;
1793
+ const db = context.getProdAppDB()
1794
+ const result = await db.destroy()
1795
+ &nbsp;
1796
+ await events.app.unpublished({ appId } as App)
1797
+ &nbsp;
1798
+ // automations only in production
1799
+ await cleanupAutomations(appId)
1800
+ &nbsp;
1801
+ await cache.app.invalidateAppMetadata(appId)
1802
+ return result
1803
+ }
1804
+ &nbsp;
1732
1805
  async function destroyApp(ctx: BBContext) {
1733
1806
  let appId = ctx.params.appId
1734
- let isUnpublish = ctx.query &amp;&amp; ctx.query.unpublish
1807
+ appId = dbCore.getProdAppID(appId)
1808
+ const devAppId = dbCore.getDevAppID(appId)
1735
1809
  &nbsp;
1736
- if (isUnpublish) {
1737
- appId = dbCore.getProdAppID(appId)
1738
- const devAppId = dbCore.getDevAppID(appId)
1739
- // sync before removing the published app
1810
+ // check if we need to unpublish first
1811
+ if (await dbCore.dbExists(appId)) {
1812
+ // app is deployed, run through unpublish flow
1740
1813
  await sdk.applications.syncApp(devAppId)
1814
+ await unpublishApp(ctx)
1741
1815
  }
1742
1816
  &nbsp;
1743
- const db = isUnpublish ? context.getProdAppDB() : context.getAppDB()
1817
+ const db = dbCore.getDB(devAppId)
1818
+ // standard app deletion flow
1744
1819
  const app = await db.get(DocumentType.APP_METADATA)
1745
1820
  const result = await db.destroy()
1821
+ await quotas.removeApp()
1822
+ await events.app.deleted(app)
1746
1823
  &nbsp;
1747
- if (isUnpublish) {
1748
- await events.app.unpublished(app)
1749
- } else {
1750
- await quotas.removeApp()
1751
- await events.app.deleted(app)
1824
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
1825
+ <span class="cstat-no" title="statement not covered" > await deleteApp(appId)</span>
1752
1826
  }
1753
1827
  &nbsp;
1754
- /* istanbul ignore next */
1755
- if (!env.isTest() &amp;&amp; !isUnpublish) {
1756
- await deleteApp(appId)
1757
- }
1758
- // automations only in production
1759
- if (isUnpublish) {
1760
- await cleanupAutomations(appId)
1761
- }
1762
- // remove app role when the dev app is deleted (no trace of app anymore)
1763
- else {
1764
- await removeAppFromUserRoles(ctx, appId)
1765
- }
1766
- await cache.app.invalidateAppMetadata(appId)
1828
+ await removeAppFromUserRoles(ctx, appId)
1829
+ await cache.app.invalidateAppMetadata(devAppId)
1767
1830
  return result
1768
1831
  }
1769
1832
  &nbsp;
@@ -1788,12 +1851,27 @@ export async function destroy(ctx: BBContext) {
1788
1851
  ctx.body = result
1789
1852
  }
1790
1853
  &nbsp;
1791
- export async function <span class="fstat-no" title="function not covered" >sync(</span>ctx: BBContext) {
1792
- const appId = <span class="cstat-no" title="statement not covered" >ctx.params.appId</span>
1793
- <span class="cstat-no" title="statement not covered" > try {</span>
1794
- <span class="cstat-no" title="statement not covered" > ctx.body = await sdk.applications.syncApp(appId)</span>
1854
+ export const unpublish = async (ctx: BBContext) =&gt; {
1855
+ const prodAppId = dbCore.getProdAppID(ctx.params.appId)
1856
+ const dbExists = await dbCore.dbExists(prodAppId)
1857
+ &nbsp;
1858
+ // check app has been published
1859
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!dbExists) {
1860
+ <span class="cstat-no" title="statement not covered" > return ctx.throw(400, "App has not been published.")</span>
1861
+ }
1862
+ &nbsp;
1863
+ await preDestroyApp(ctx)
1864
+ await unpublishApp(ctx)
1865
+ await postDestroyApp(ctx)
1866
+ ctx.status = 204
1867
+ }
1868
+ &nbsp;
1869
+ export async function sync(ctx: BBContext) {
1870
+ const appId = ctx.params.appId
1871
+ try {
1872
+ ctx.body = await sdk.applications.syncApp(appId)
1795
1873
  } catch (err: any) {
1796
- <span class="cstat-no" title="statement not covered" > ctx.throw(err.status || 400, err.message)</span>
1874
+ ctx.throw(err.status || 400, err.message)
1797
1875
  }
1798
1876
  }
1799
1877
  &nbsp;
@@ -1876,7 +1954,7 @@ async function migrateAppNavigation() {
1876
1954
  <div class='footer quiet pad2 space-top1 center small'>
1877
1955
  Code coverage generated by
1878
1956
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1879
- at Mon Dec 19 2022 18:23:56 GMT+0000 (Coordinated Universal Time)
1957
+ at Mon Dec 19 2022 21:07:22 GMT+0000 (Coordinated Universal Time)
1880
1958
  </div>
1881
1959
  <script src="../../../prettify.js"></script>
1882
1960
  <script>