@budibase/server 2.2.26 → 2.2.27-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (779) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/aws-sdk.ts +20 -1
  3. package/__mocks__/node-fetch.ts +80 -0
  4. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  5. package/builder/assets/bg.29e85dd5.png +0 -0
  6. package/builder/assets/bulgaria.bd68393d.png +0 -0
  7. package/builder/assets/covanta.72c46c1e.png +0 -0
  8. package/builder/assets/index.3dd03883.css +6 -0
  9. package/builder/assets/index.77ae0e4d.js +1802 -0
  10. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  11. package/builder/index.html +3 -3
  12. package/coverage/clover.xml +12565 -8055
  13. package/coverage/coverage-final.json +365 -276
  14. package/coverage/lcov-report/index.html +721 -466
  15. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
  16. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
  17. package/coverage/lcov-report/src/api/controllers/application.ts.html +364 -268
  18. package/coverage/lcov-report/src/api/controllers/auth.ts.html +12 -12
  19. package/coverage/lcov-report/src/api/controllers/automation.ts.html +61 -61
  20. package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
  21. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +89 -77
  22. package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
  23. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +122 -98
  24. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +21 -18
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.html +21 -21
  26. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +142 -196
  27. package/coverage/lcov-report/src/api/controllers/dev.ts.html +33 -33
  28. package/coverage/lcov-report/src/api/controllers/index.html +125 -125
  29. package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
  30. package/coverage/lcov-report/src/api/controllers/layout.ts.html +18 -18
  31. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
  32. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
  33. package/coverage/lcov-report/src/api/controllers/permission.ts.html +35 -35
  34. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +20 -20
  35. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +62 -62
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  37. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +150 -135
  38. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +56 -56
  39. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  40. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  41. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  42. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +75 -24
  43. package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
  50. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
  52. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
  53. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
  54. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
  55. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
  57. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
  64. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
  65. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +391 -0
  66. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +116 -0
  67. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +116 -0
  68. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +796 -0
  69. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +116 -0
  70. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +805 -0
  71. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +116 -0
  72. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +568 -0
  73. package/coverage/lcov-report/src/api/controllers/query/index.html +20 -20
  74. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +131 -107
  75. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +11 -11
  76. package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
  77. package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
  78. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +56 -41
  79. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +87 -57
  80. package/coverage/lcov-report/src/api/controllers/row/index.html +66 -66
  81. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +26 -26
  82. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +171 -96
  83. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
  84. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +30 -21
  85. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +143 -26
  86. package/coverage/lcov-report/src/api/controllers/screen.ts.html +31 -31
  87. package/coverage/lcov-report/src/api/controllers/script.ts.html +19 -19
  88. package/coverage/lcov-report/src/api/controllers/static/index.html +18 -18
  89. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +56 -71
  90. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +61 -61
  91. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +56 -50
  92. package/coverage/lcov-report/src/api/controllers/table/index.html +51 -51
  93. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +157 -70
  94. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +68 -71
  95. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +109 -112
  96. package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
  97. package/coverage/lcov-report/src/api/controllers/user.ts.html +161 -137
  98. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
  99. package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
  100. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +97 -133
  101. package/coverage/lcov-report/src/api/controllers/view/tests/index.html +116 -0
  102. package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +277 -0
  103. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +31 -31
  104. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +37 -37
  105. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +78 -72
  106. package/coverage/lcov-report/src/api/index.html +15 -15
  107. package/coverage/lcov-report/src/api/index.ts.html +40 -40
  108. package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
  109. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
  110. package/coverage/lcov-report/src/api/routes/application.ts.html +46 -13
  111. package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
  112. package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
  113. package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
  114. package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
  115. package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
  116. package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
  117. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -14
  118. package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
  119. package/coverage/lcov-report/src/api/routes/index.html +68 -68
  120. package/coverage/lcov-report/src/api/routes/index.ts.html +49 -40
  121. package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
  122. package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
  123. package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
  124. package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
  125. package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
  126. package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
  127. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +147 -15
  128. package/coverage/lcov-report/src/api/routes/public/index.html +27 -27
  129. package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
  130. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  131. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +28 -16
  132. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
  133. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
  134. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
  135. package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +583 -0
  136. package/coverage/lcov-report/src/api/routes/public/tests/index.html +41 -11
  137. package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +199 -0
  138. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
  139. package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
  140. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
  141. package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
  142. package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
  143. package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
  144. package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
  145. package/coverage/lcov-report/src/api/routes/row.ts.html +14 -14
  146. package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
  147. package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
  148. package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
  149. package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
  150. package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
  151. package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +271 -0
  152. package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +259 -0
  153. package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +1066 -0
  154. package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +154 -0
  155. package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +1123 -0
  156. package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +223 -0
  157. package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +262 -0
  158. package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +178 -0
  159. package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +799 -0
  160. package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +202 -0
  161. package/coverage/lcov-report/src/api/routes/tests/index.html +521 -0
  162. package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +238 -0
  163. package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +670 -0
  164. package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +259 -0
  165. package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +280 -0
  166. package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +358 -0
  167. package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +484 -0
  168. package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +622 -0
  169. package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +1696 -0
  170. package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +478 -0
  171. package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +430 -0
  172. package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +1804 -0
  173. package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +391 -0
  174. package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +541 -0
  175. package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +991 -0
  176. package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +154 -0
  177. package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +688 -0
  178. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +116 -47
  179. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +27 -27
  180. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +42 -36
  181. package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +1342 -0
  182. package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +484 -0
  183. package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
  184. package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
  185. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
  186. package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
  187. package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
  188. package/coverage/lcov-report/src/app.ts.html +57 -48
  189. package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
  190. package/coverage/lcov-report/src/automations/automationUtils.ts.html +127 -55
  191. package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
  192. package/coverage/lcov-report/src/automations/index.html +58 -58
  193. package/coverage/lcov-report/src/automations/index.ts.html +23 -23
  194. package/coverage/lcov-report/src/automations/logging/index.html +3 -3
  195. package/coverage/lcov-report/src/automations/logging/index.ts.html +15 -15
  196. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  197. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
  198. package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
  199. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
  200. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  201. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  202. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  203. package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
  204. package/coverage/lcov-report/src/automations/steps/index.html +129 -129
  205. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
  206. package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
  207. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
  208. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
  209. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  210. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +19 -19
  211. package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
  212. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +12 -12
  213. package/coverage/lcov-report/src/automations/steps/utils.ts.html +18 -18
  214. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  215. package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +337 -0
  216. package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +187 -0
  217. package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +223 -0
  218. package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +133 -0
  219. package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +250 -0
  220. package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +166 -0
  221. package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +229 -0
  222. package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +229 -0
  223. package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +232 -0
  224. package/coverage/lcov-report/src/automations/tests/index.html +341 -0
  225. package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +220 -0
  226. package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +202 -0
  227. package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +436 -0
  228. package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +298 -0
  229. package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +151 -0
  230. package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +217 -0
  231. package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
  232. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +32 -32
  233. package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +166 -0
  234. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
  235. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
  236. package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
  237. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
  238. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
  239. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
  240. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
  241. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
  242. package/coverage/lcov-report/src/automations/triggers.ts.html +61 -46
  243. package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +280 -0
  244. package/coverage/lcov-report/src/automations/unitTests/index.html +116 -0
  245. package/coverage/lcov-report/src/automations/utils.ts.html +84 -84
  246. package/coverage/lcov-report/src/constants/index.html +19 -19
  247. package/coverage/lcov-report/src/constants/index.ts.html +103 -103
  248. package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
  249. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  250. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
  251. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
  252. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
  253. package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
  254. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
  255. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
  256. package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
  257. package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
  258. package/coverage/lcov-report/src/db/index.html +43 -43
  259. package/coverage/lcov-report/src/db/index.ts.html +20 -20
  260. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
  261. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
  262. package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
  263. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
  264. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +27 -27
  265. package/coverage/lcov-report/src/db/newid.ts.html +5 -5
  266. package/coverage/lcov-report/src/db/tests/index.html +131 -0
  267. package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +793 -0
  268. package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +277 -0
  269. package/coverage/lcov-report/src/db/utils.ts.html +92 -92
  270. package/coverage/lcov-report/src/definitions/automations.ts.html +9 -6
  271. package/coverage/lcov-report/src/definitions/index.html +5 -20
  272. package/coverage/lcov-report/src/environment.ts.html +49 -37
  273. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
  274. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
  275. package/coverage/lcov-report/src/events/index.html +20 -20
  276. package/coverage/lcov-report/src/events/index.ts.html +7 -7
  277. package/coverage/lcov-report/src/events/utils.ts.html +11 -11
  278. package/coverage/lcov-report/src/index.html +48 -48
  279. package/coverage/lcov-report/src/index.ts.html +8 -8
  280. package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
  281. package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
  282. package/coverage/lcov-report/src/integrations/base/index.html +29 -29
  283. package/coverage/lcov-report/src/integrations/base/query.ts.html +15 -9
  284. package/coverage/lcov-report/src/integrations/base/sql.ts.html +38 -38
  285. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +23 -23
  286. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  287. package/coverage/lcov-report/src/integrations/couchdb.ts.html +109 -31
  288. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +17 -17
  289. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +27 -15
  290. package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
  291. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +42 -42
  292. package/coverage/lcov-report/src/integrations/index.html +130 -130
  293. package/coverage/lcov-report/src/integrations/index.ts.html +50 -62
  294. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
  295. package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
  296. package/coverage/lcov-report/src/integrations/mysql.ts.html +28 -28
  297. package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
  298. package/coverage/lcov-report/src/integrations/postgres.ts.html +54 -54
  299. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  300. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +24 -159
  301. package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
  302. package/coverage/lcov-report/src/integrations/rest.ts.html +43 -52
  303. package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
  304. package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
  305. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  306. package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +310 -0
  307. package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +199 -0
  308. package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +349 -0
  309. package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +550 -0
  310. package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +331 -0
  311. package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +376 -0
  312. package/coverage/lcov-report/src/integrations/tests/index.html +230 -5
  313. package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +253 -0
  314. package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +1087 -0
  315. package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +484 -0
  316. package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +373 -0
  317. package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +328 -0
  318. package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +337 -0
  319. package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +1870 -0
  320. package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +421 -0
  321. package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +1753 -0
  322. package/coverage/lcov-report/src/integrations/utils.ts.html +54 -54
  323. package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
  324. package/coverage/lcov-report/src/middleware/authorized.ts.html +49 -37
  325. package/coverage/lcov-report/src/middleware/builder.ts.html +26 -26
  326. package/coverage/lcov-report/src/middleware/currentapp.ts.html +60 -57
  327. package/coverage/lcov-report/src/middleware/index.html +44 -44
  328. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
  329. package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
  330. package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
  331. package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
  332. package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +574 -0
  333. package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +814 -0
  334. package/coverage/lcov-report/src/middleware/tests/index.html +161 -0
  335. package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +397 -0
  336. package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +214 -0
  337. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  338. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
  339. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
  340. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
  341. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
  342. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
  343. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
  344. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
  345. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
  346. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
  347. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
  348. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +17 -14
  349. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
  350. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
  351. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
  352. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
  353. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
  354. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
  355. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
  356. package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
  357. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
  358. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
  359. package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +163 -0
  360. package/coverage/lcov-report/src/migrations/functions/tests/index.html +161 -0
  361. package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +163 -0
  362. package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +517 -0
  363. package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +190 -0
  364. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
  365. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
  366. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
  367. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
  368. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
  369. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +131 -0
  370. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +190 -0
  371. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +244 -0
  372. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  373. package/coverage/lcov-report/src/migrations/index.html +15 -15
  374. package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
  375. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
  376. package/coverage/lcov-report/src/migrations/tests/index.html +26 -11
  377. package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +535 -0
  378. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
  379. package/coverage/lcov-report/src/sdk/app/applications/index.html +20 -20
  380. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
  381. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  382. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
  383. package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
  384. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
  385. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +14 -14
  386. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
  387. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
  388. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +45 -57
  389. package/coverage/lcov-report/src/sdk/app/backups/index.html +42 -42
  390. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
  391. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  392. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  393. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  394. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  395. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  396. package/coverage/lcov-report/src/{utilities/statusCodes.ts.html → sdk/app/queries/index.ts.html} +22 -28
  397. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  398. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
  399. package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
  400. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
  401. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  402. package/coverage/lcov-report/src/sdk/app/tables/index.html +15 -15
  403. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +30 -21
  404. package/coverage/lcov-report/src/sdk/index.html +7 -7
  405. package/coverage/lcov-report/src/sdk/index.ts.html +24 -12
  406. package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +313 -0
  407. package/coverage/lcov-report/src/sdk/tests/index.html +116 -0
  408. package/coverage/lcov-report/src/sdk/users/index.html +10 -10
  409. package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
  410. package/coverage/lcov-report/src/sdk/users/utils.ts.html +35 -35
  411. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  412. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  413. package/coverage/lcov-report/src/startup.ts.html +48 -63
  414. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +421 -187
  415. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
  416. package/coverage/lcov-report/src/tests/utilities/index.html +35 -35
  417. package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
  418. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +236 -47
  419. package/coverage/lcov-report/src/threads/automation.ts.html +212 -251
  420. package/coverage/lcov-report/src/threads/index.html +46 -46
  421. package/coverage/lcov-report/src/threads/index.ts.html +39 -39
  422. package/coverage/lcov-report/src/threads/query.ts.html +140 -101
  423. package/coverage/lcov-report/src/threads/utils.ts.html +29 -29
  424. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +5 -5
  425. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  426. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  427. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +20 -20
  428. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
  429. package/coverage/lcov-report/src/utilities/fileSystem/index.html +88 -28
  430. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +20 -1049
  431. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
  432. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
  433. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  434. package/coverage/lcov-report/src/utilities/global.ts.html +60 -60
  435. package/coverage/lcov-report/src/utilities/index.html +102 -117
  436. package/coverage/lcov-report/src/utilities/index.ts.html +47 -179
  437. package/coverage/lcov-report/src/utilities/redis.ts.html +38 -38
  438. package/coverage/lcov-report/src/utilities/{plugins.ts.html → retry.ts.html} +31 -43
  439. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  440. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  441. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +34 -34
  442. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +72 -45
  443. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
  444. package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +116 -0
  445. package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +256 -0
  446. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +52 -52
  447. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +174 -234
  448. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +33 -33
  449. package/coverage/lcov-report/src/utilities/security.ts.html +30 -30
  450. package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
  451. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +37 -37
  452. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
  453. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  454. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +92 -65
  455. package/coverage/lcov-report/src/watch.ts.html +20 -20
  456. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  457. package/coverage/lcov.info +24966 -17056
  458. package/dist/api/controllers/application.js +120 -109
  459. package/dist/api/controllers/cloud.js +6 -2
  460. package/dist/api/controllers/datasource.js +24 -15
  461. package/dist/api/controllers/deploy/index.js +43 -60
  462. package/dist/api/controllers/plugin/index.js +6 -6
  463. package/dist/api/controllers/public/applications.js +22 -1
  464. package/dist/api/controllers/query/index.js +23 -13
  465. package/dist/api/controllers/row/ExternalRequest.js +12 -4
  466. package/dist/api/controllers/row/external.js +20 -13
  467. package/dist/api/controllers/row/internal.js +52 -27
  468. package/dist/api/controllers/row/staticFormula.js +1 -1
  469. package/dist/api/controllers/row/utils.js +35 -3
  470. package/dist/api/controllers/static/index.js +47 -47
  471. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  472. package/dist/api/controllers/table/external.js +16 -35
  473. package/dist/api/controllers/table/index.js +44 -15
  474. package/dist/api/controllers/table/internal.js +6 -7
  475. package/dist/api/controllers/table/utils.js +9 -9
  476. package/dist/api/controllers/user.js +14 -6
  477. package/dist/api/controllers/view/exporters.js +22 -6
  478. package/dist/api/controllers/view/index.js +23 -58
  479. package/dist/api/controllers/view/viewBuilder.js +15 -2
  480. package/dist/api/controllers/webhook.js +45 -43
  481. package/dist/api/routes/analytics.js +2 -1
  482. package/dist/api/routes/apikeys.js +2 -1
  483. package/dist/api/routes/application.js +5 -1
  484. package/dist/api/routes/auth.js +2 -1
  485. package/dist/api/routes/automation.js +2 -1
  486. package/dist/api/routes/backup.js +2 -1
  487. package/dist/api/routes/cloud.js +2 -1
  488. package/dist/api/routes/component.js +2 -1
  489. package/dist/api/routes/datasource.js +2 -1
  490. package/dist/api/routes/deploy.js +3 -3
  491. package/dist/api/routes/dev.js +2 -1
  492. package/dist/api/routes/index.js +2 -0
  493. package/dist/api/routes/integration.js +2 -1
  494. package/dist/api/routes/layout.js +2 -1
  495. package/dist/api/routes/metadata.js +2 -1
  496. package/dist/api/routes/migrations.js +2 -1
  497. package/dist/api/routes/permission.js +2 -1
  498. package/dist/api/routes/public/applications.js +37 -0
  499. package/dist/api/routes/public/middleware/mapper.js +3 -0
  500. package/dist/api/routes/query.js +2 -1
  501. package/dist/api/routes/role.js +2 -1
  502. package/dist/api/routes/routing.js +2 -1
  503. package/dist/api/routes/row.js +2 -2
  504. package/dist/api/routes/screen.js +2 -1
  505. package/dist/api/routes/script.js +2 -1
  506. package/dist/api/routes/static.js +6 -5
  507. package/dist/api/routes/table.js +8 -38
  508. package/dist/api/routes/templates.js +2 -1
  509. package/dist/api/routes/user.js +2 -1
  510. package/dist/api/routes/utils/validators.js +1 -1
  511. package/dist/api/routes/view.js +2 -1
  512. package/dist/api/routes/webhook.js +2 -1
  513. package/dist/app.js +10 -8
  514. package/dist/automations/automationUtils.js +26 -1
  515. package/dist/automations/logging/index.js +5 -25
  516. package/dist/automations/triggers.js +1 -0
  517. package/dist/db/index.js +5 -2
  518. package/dist/db/linkedRows/LinkController.js +2 -1
  519. package/dist/db/linkedRows/LinkDocument.js +2 -1
  520. package/dist/db/newid.js +4 -2
  521. package/dist/definitions/datasource.js +0 -6
  522. package/dist/environment.js +7 -2
  523. package/dist/events/AutomationEmitter.js +2 -1
  524. package/dist/events/BudibaseEmitter.js +2 -1
  525. package/dist/events/index.js +2 -1
  526. package/dist/index.js +2 -2
  527. package/dist/integrations/base/query.js +7 -2
  528. package/dist/integrations/base/sqlTable.js +14 -14
  529. package/dist/integrations/couchdb.js +34 -8
  530. package/dist/integrations/dynamodb.js +8 -5
  531. package/dist/integrations/elasticsearch.js +7 -3
  532. package/dist/integrations/googlesheets.js +1 -1
  533. package/dist/integrations/index.js +6 -7
  534. package/dist/integrations/mongodb.js +311 -271
  535. package/dist/integrations/mysql.js +2 -2
  536. package/dist/integrations/queries/sql.js +73 -100
  537. package/dist/integrations/rest.js +16 -18
  538. package/dist/middleware/authorized.js +2 -1
  539. package/dist/middleware/builder.js +4 -2
  540. package/dist/middleware/currentapp.js +6 -3
  541. package/dist/middleware/publicApi.js +4 -2
  542. package/dist/middleware/selfhost.js +4 -1
  543. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  544. package/dist/package.json +14 -8
  545. package/dist/sdk/app/backups/imports.js +2 -6
  546. package/dist/sdk/app/datasources/datasources.js +147 -0
  547. package/dist/sdk/app/datasources/index.js +27 -0
  548. package/dist/sdk/app/queries/index.js +27 -0
  549. package/dist/sdk/app/queries/queries.js +60 -0
  550. package/dist/sdk/app/tables/index.js +6 -2
  551. package/dist/sdk/index.js +4 -0
  552. package/dist/sdk/utils/index.js +29 -0
  553. package/dist/startup.js +17 -17
  554. package/dist/threads/automation.js +22 -35
  555. package/dist/threads/index.js +4 -4
  556. package/dist/threads/query.js +27 -13
  557. package/dist/tsconfig.build.tsbuildinfo +1 -1
  558. package/dist/utilities/fileSystem/app.js +97 -0
  559. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  560. package/dist/utilities/fileSystem/filesystem.js +184 -0
  561. package/dist/utilities/fileSystem/index.js +18 -342
  562. package/dist/utilities/fileSystem/plugin.js +66 -0
  563. package/dist/utilities/fileSystem/template.js +47 -0
  564. package/dist/utilities/index.js +1 -44
  565. package/dist/utilities/retry.js +30 -0
  566. package/dist/utilities/rowProcessor/index.js +12 -4
  567. package/dist/utilities/schema.js +108 -0
  568. package/dist/utilities/scriptRunner.js +2 -1
  569. package/dist/utilities/statusCodes.js +2 -1
  570. package/dist/utilities/workerRequests.js +2 -0
  571. package/dist/watch.js +2 -25
  572. package/jest-testcontainers-config.js +8 -0
  573. package/jest.config.ts +33 -13
  574. package/package.json +15 -9
  575. package/scripts/dev/manage.js +3 -2
  576. package/specs/openapi.json +84 -0
  577. package/specs/openapi.yaml +53 -0
  578. package/specs/resources/application.js +19 -0
  579. package/src/api/controllers/application.ts +142 -110
  580. package/src/api/controllers/auth.ts +2 -2
  581. package/src/api/controllers/cloud.ts +10 -6
  582. package/src/api/controllers/datasource.ts +33 -25
  583. package/src/api/controllers/deploy/Deployment.ts +1 -0
  584. package/src/api/controllers/deploy/index.ts +40 -58
  585. package/src/api/controllers/plugin/index.ts +14 -9
  586. package/src/api/controllers/public/applications.ts +17 -0
  587. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  588. package/src/api/controllers/query/index.ts +49 -41
  589. package/src/api/controllers/row/ExternalRequest.ts +8 -3
  590. package/src/api/controllers/row/external.ts +24 -14
  591. package/src/api/controllers/row/internal.ts +66 -41
  592. package/src/api/controllers/row/staticFormula.ts +5 -2
  593. package/src/api/controllers/row/utils.ts +42 -3
  594. package/src/api/controllers/static/index.ts +22 -27
  595. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  596. package/src/api/controllers/table/external.ts +18 -16
  597. package/src/api/controllers/table/index.ts +46 -17
  598. package/src/api/controllers/table/internal.ts +6 -7
  599. package/src/api/controllers/table/utils.ts +12 -13
  600. package/src/api/controllers/user.ts +21 -13
  601. package/src/api/controllers/view/exporters.ts +20 -5
  602. package/src/api/controllers/view/index.ts +30 -42
  603. package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
  604. package/src/api/controllers/view/viewBuilder.ts +1 -1
  605. package/src/api/controllers/webhook.ts +48 -46
  606. package/src/api/routes/analytics.ts +1 -1
  607. package/src/api/routes/apikeys.ts +1 -1
  608. package/src/api/routes/application.ts +12 -1
  609. package/src/api/routes/auth.ts +1 -1
  610. package/src/api/routes/automation.ts +1 -1
  611. package/src/api/routes/backup.ts +1 -1
  612. package/src/api/routes/cloud.ts +1 -1
  613. package/src/api/routes/component.ts +1 -1
  614. package/src/api/routes/datasource.ts +1 -1
  615. package/src/api/routes/deploy.ts +1 -2
  616. package/src/api/routes/dev.ts +1 -1
  617. package/src/api/routes/index.ts +6 -3
  618. package/src/api/routes/integration.ts +1 -1
  619. package/src/api/routes/layout.ts +1 -1
  620. package/src/api/routes/metadata.ts +1 -1
  621. package/src/api/routes/migrations.ts +1 -1
  622. package/src/api/routes/permission.ts +1 -1
  623. package/src/api/routes/public/applications.ts +44 -0
  624. package/src/api/routes/public/middleware/mapper.ts +4 -0
  625. package/src/api/routes/query.ts +1 -1
  626. package/src/api/routes/role.ts +1 -1
  627. package/src/api/routes/routing.ts +1 -1
  628. package/src/api/routes/row.ts +1 -1
  629. package/src/api/routes/screen.ts +1 -1
  630. package/src/api/routes/script.ts +1 -1
  631. package/src/api/routes/static.ts +2 -2
  632. package/src/api/routes/table.ts +16 -39
  633. package/src/api/routes/templates.ts +1 -1
  634. package/src/api/routes/tests/__snapshots__/{datasource.spec.js.snap → datasource.spec.ts.snap} +1 -1
  635. package/src/api/routes/tests/analytics.spec.js +4 -1
  636. package/src/api/routes/tests/apikeys.spec.js +1 -1
  637. package/src/api/routes/tests/{application.spec.js → application.spec.ts} +112 -22
  638. package/src/api/routes/tests/auth.spec.js +2 -2
  639. package/src/api/routes/tests/automation.spec.js +5 -1
  640. package/src/api/routes/tests/{backup.spec.js → backup.spec.ts} +17 -15
  641. package/src/api/routes/tests/cloud.seq.spec.ts +59 -0
  642. package/src/api/routes/tests/component.spec.js +1 -1
  643. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  644. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  645. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  646. package/src/api/routes/tests/{datasource.spec.js → datasource.spec.ts} +76 -17
  647. package/src/api/routes/tests/dev.spec.js +1 -1
  648. package/src/api/routes/tests/integration.spec.js +1 -1
  649. package/src/api/routes/tests/layout.spec.js +1 -1
  650. package/src/api/routes/tests/metadata.spec.js +1 -1
  651. package/src/api/routes/tests/misc.spec.js +5 -11
  652. package/src/api/routes/tests/permissions.spec.js +5 -2
  653. package/src/api/routes/tests/plugin.spec.ts +179 -0
  654. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +21 -1
  655. package/src/api/routes/tests/role.spec.js +6 -1
  656. package/src/api/routes/tests/routing.spec.js +2 -3
  657. package/src/api/routes/tests/row.spec.js +15 -5
  658. package/src/api/routes/tests/screen.spec.js +1 -1
  659. package/src/api/routes/tests/static.spec.js +4 -18
  660. package/src/api/routes/tests/table.spec.js +17 -33
  661. package/src/api/routes/tests/templates.spec.js +1 -1
  662. package/src/api/routes/tests/user.spec.js +108 -0
  663. package/src/api/routes/tests/utilities/TestFunctions.ts +26 -3
  664. package/src/api/routes/tests/utilities/index.ts +7 -5
  665. package/src/api/routes/tests/view.spec.js +4 -1
  666. package/src/api/routes/tests/webhook.spec.js +12 -3
  667. package/src/api/routes/user.ts +1 -1
  668. package/src/api/routes/utils/validators.ts +1 -1
  669. package/src/api/routes/view.ts +1 -1
  670. package/src/api/routes/webhook.ts +1 -1
  671. package/src/app.ts +7 -4
  672. package/src/automations/automationUtils.ts +24 -0
  673. package/src/automations/logging/index.ts +1 -1
  674. package/src/automations/tests/automation.spec.js +4 -4
  675. package/src/automations/tests/bash.spec.js +34 -0
  676. package/src/automations/tests/discord.spec.js +27 -0
  677. package/src/automations/tests/executeQuery.spec.js +48 -0
  678. package/src/automations/tests/executeScript.spec.js +48 -0
  679. package/src/automations/tests/loop.spec.ts +45 -0
  680. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  681. package/src/automations/tests/sendSmtpEmail.spec.js +71 -0
  682. package/src/automations/tests/serverLog.spec.js +22 -0
  683. package/src/automations/tests/updateRow.spec.js +1 -1
  684. package/src/automations/tests/utilities/index.ts +2 -2
  685. package/src/automations/tests/zapier.spec.js +27 -0
  686. package/src/automations/triggers.ts +6 -1
  687. package/src/automations/unitTests/automationUtils.spec.ts +65 -0
  688. package/src/db/index.ts +1 -1
  689. package/src/db/linkedRows/LinkController.ts +1 -1
  690. package/src/db/linkedRows/LinkDocument.ts +1 -1
  691. package/src/db/newid.ts +1 -1
  692. package/src/db/tests/linkController.spec.js +5 -2
  693. package/src/db/tests/linkTests.spec.js +1 -1
  694. package/src/definitions/automations.ts +1 -0
  695. package/src/definitions/datasource.ts +0 -41
  696. package/src/definitions/openapi.ts +10 -0
  697. package/src/environment.ts +6 -2
  698. package/src/events/AutomationEmitter.ts +1 -1
  699. package/src/events/BudibaseEmitter.ts +1 -1
  700. package/src/events/index.ts +1 -1
  701. package/src/index.ts +1 -1
  702. package/src/integrations/base/query.ts +3 -1
  703. package/src/integrations/base/sqlTable.ts +1 -1
  704. package/src/integrations/couchdb.ts +40 -14
  705. package/src/integrations/dynamodb.ts +3 -3
  706. package/src/integrations/elasticsearch.ts +8 -4
  707. package/src/integrations/googlesheets.ts +1 -1
  708. package/src/integrations/index.ts +5 -9
  709. package/src/integrations/mongodb.ts +315 -271
  710. package/src/integrations/mysql.ts +1 -1
  711. package/src/integrations/queries/sql.ts +5 -50
  712. package/src/integrations/rest.ts +16 -19
  713. package/src/integrations/tests/couchdb.spec.ts +33 -21
  714. package/src/integrations/tests/rest.spec.ts +19 -15
  715. package/src/middleware/authorized.ts +5 -1
  716. package/src/middleware/builder.ts +1 -1
  717. package/src/middleware/currentapp.ts +4 -3
  718. package/src/middleware/publicApi.ts +1 -1
  719. package/src/middleware/selfhost.ts +1 -1
  720. package/src/middleware/tests/authorized.spec.js +1 -1
  721. package/src/middleware/tests/currentapp.spec.js +1 -1
  722. package/src/middleware/tests/selfhost.spec.js +1 -1
  723. package/src/migrations/functions/backfill/global/configs.ts +5 -4
  724. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  725. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  726. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  727. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  728. package/src/migrations/tests/index.spec.ts +3 -2
  729. package/src/sdk/app/backups/imports.ts +2 -6
  730. package/src/sdk/app/datasources/datasources.ts +136 -0
  731. package/src/sdk/app/datasources/index.ts +5 -0
  732. package/src/sdk/app/queries/index.ts +5 -0
  733. package/src/sdk/app/queries/queries.ts +50 -0
  734. package/src/sdk/app/tables/index.ts +6 -3
  735. package/src/sdk/index.ts +4 -0
  736. package/src/sdk/tests/attachments.spec.ts +1 -4
  737. package/src/sdk/utils/index.ts +16 -0
  738. package/src/startup.ts +3 -8
  739. package/src/tests/jestEnv.ts +9 -0
  740. package/src/tests/jestSetup.ts +8 -20
  741. package/src/tests/utilities/TestConfiguration.ts +127 -49
  742. package/src/tests/utilities/structures.ts +65 -2
  743. package/src/threads/automation.ts +22 -35
  744. package/src/threads/definitions.ts +3 -0
  745. package/src/threads/index.ts +1 -1
  746. package/src/threads/query.ts +28 -15
  747. package/src/utilities/fileSystem/app.ts +86 -0
  748. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  749. package/src/utilities/fileSystem/filesystem.ts +172 -0
  750. package/src/utilities/fileSystem/index.ts +5 -348
  751. package/src/utilities/fileSystem/plugin.ts +64 -0
  752. package/src/utilities/fileSystem/template.ts +36 -0
  753. package/src/utilities/index.ts +1 -45
  754. package/src/utilities/retry.ts +18 -0
  755. package/src/utilities/rowProcessor/index.ts +17 -8
  756. package/src/utilities/rowProcessor/tests/utils.spec.ts +57 -0
  757. package/src/utilities/schema.ts +141 -0
  758. package/src/utilities/scriptRunner.ts +1 -1
  759. package/src/utilities/statusCodes.ts +1 -1
  760. package/src/utilities/workerRequests.ts +10 -1
  761. package/src/watch.ts +1 -1
  762. package/tsconfig.build.json +2 -0
  763. package/tsconfig.json +2 -1
  764. package/builder/assets/index.96b9ffed.css +0 -6
  765. package/builder/assets/index.fae8f9eb.js +0 -1024
  766. package/dist/api/routes/tests/utilities/TestFunctions.js +0 -167
  767. package/dist/api/routes/tests/utilities/index.js +0 -131
  768. package/dist/automations/tests/utilities/index.js +0 -81
  769. package/dist/tests/utilities/TestConfiguration.js +0 -562
  770. package/dist/tests/utilities/controllers.js +0 -40
  771. package/dist/tests/utilities/structures.js +0 -168
  772. package/dist/utilities/csvParser.js +0 -152
  773. package/dist/utilities/plugins.js +0 -26
  774. package/src/api/routes/tests/deployment.spec.ts +0 -25
  775. package/src/automations/unitTests/automationUtils.spec.js +0 -17
  776. package/src/utilities/csvParser.ts +0 -161
  777. package/src/utilities/plugins.ts +0 -22
  778. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  779. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">94.33% </span>
26
+ <span class="strong">92.24% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>200/212</span>
28
+ <span class='fraction'>214/232</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">84.4% </span>
33
+ <span class="strong">84.95% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>92/109</span>
35
+ <span class='fraction'>96/113</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">94.91% </span>
40
+ <span class="strong">91.93% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>56/59</span>
42
+ <span class='fraction'>57/62</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">94.14% </span>
47
+ <span class="strong">92.2% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>193/205</span>
49
+ <span class='fraction'>213/231</span>
50
50
  </div>
51
51
 
52
52
 
@@ -690,44 +690,127 @@
690
690
  <a name='L625'></a><a href='#L625'>625</a>
691
691
  <a name='L626'></a><a href='#L626'>626</a>
692
692
  <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">46x</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>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
697
772
  <span class="cline-any cline-neutral">&nbsp;</span>
698
773
  <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-yes">55x</span>
775
+ <span class="cline-any cline-yes">55x</span>
699
776
  <span class="cline-any cline-neutral">&nbsp;</span>
700
777
  <span class="cline-any cline-neutral">&nbsp;</span>
778
+ <span class="cline-any cline-yes">55x</span>
701
779
  <span class="cline-any cline-neutral">&nbsp;</span>
780
+ <span class="cline-any cline-yes">55x</span>
781
+ <span class="cline-any cline-yes">55x</span>
782
+ <span class="cline-any cline-yes">55x</span>
783
+ <span class="cline-any cline-yes">55x</span>
702
784
  <span class="cline-any cline-neutral">&nbsp;</span>
703
785
  <span class="cline-any cline-neutral">&nbsp;</span>
704
786
  <span class="cline-any cline-neutral">&nbsp;</span>
705
787
  <span class="cline-any cline-neutral">&nbsp;</span>
706
788
  <span class="cline-any cline-neutral">&nbsp;</span>
707
789
  <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-yes">46x</span>
709
790
  <span class="cline-any cline-neutral">&nbsp;</span>
710
791
  <span class="cline-any cline-neutral">&nbsp;</span>
711
792
  <span class="cline-any cline-neutral">&nbsp;</span>
712
793
  <span class="cline-any cline-neutral">&nbsp;</span>
713
794
  <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-yes">55x</span>
714
796
  <span class="cline-any cline-neutral">&nbsp;</span>
715
797
  <span class="cline-any cline-neutral">&nbsp;</span>
716
798
  <span class="cline-any cline-neutral">&nbsp;</span>
717
799
  <span class="cline-any cline-neutral">&nbsp;</span>
718
800
  <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-yes">46x</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-yes">46x</span>
724
- <span class="cline-any cline-yes">46x</span>
725
801
  <span class="cline-any cline-neutral">&nbsp;</span>
726
- <span class="cline-any cline-yes">46x</span>
727
- <span class="cline-any cline-yes">46x</span>
728
- <span class="cline-any cline-yes">46x</span>
729
- <span class="cline-any cline-yes">46x</span>
730
- <span class="cline-any cline-yes">46x</span>
802
+ <span class="cline-any cline-neutral">&nbsp;</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-yes">55x</span>
808
+ <span class="cline-any cline-yes">55x</span>
809
+ <span class="cline-any cline-yes">55x</span>
810
+ <span class="cline-any cline-yes">55x</span>
811
+ <span class="cline-any cline-yes">55x</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-yes">55x</span>
731
814
  <span class="cline-any cline-neutral">&nbsp;</span>
732
815
  <span class="cline-any cline-neutral">&nbsp;</span>
733
816
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -747,22 +830,44 @@
747
830
  <span class="cline-any cline-neutral">&nbsp;</span>
748
831
  <span class="cline-any cline-neutral">&nbsp;</span>
749
832
  <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-yes">44x</span>
751
833
  <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-yes">29x</span>
753
- <span class="cline-any cline-yes">29x</span>
754
834
  <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-yes">29x</span>
756
- <span class="cline-any cline-yes">29x</span>
757
835
  <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-yes">15x</span>
759
836
  <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-yes">44x</span>
761
- <span class="cline-any cline-yes">44x</span>
762
837
  <span class="cline-any cline-neutral">&nbsp;</span>
763
838
  <span class="cline-any cline-neutral">&nbsp;</span>
764
839
  <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-yes">28x</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-neutral">&nbsp;</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-yes">53x</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-yes">30x</span>
846
+ <span class="cline-any cline-yes">30x</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-yes">30x</span>
849
+ <span class="cline-any cline-yes">30x</span>
850
+ <span class="cline-any cline-neutral">&nbsp;</span>
851
+ <span class="cline-any cline-yes">23x</span>
852
+ <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-yes">53x</span>
854
+ <span class="cline-any cline-yes">53x</span>
855
+ <span class="cline-any cline-yes">53x</span>
856
+ <span class="cline-any cline-yes">53x</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-yes">162x</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-yes">29x</span>
766
871
  <span class="cline-any cline-neutral">&nbsp;</span>
767
872
  <span class="cline-any cline-neutral">&nbsp;</span>
768
873
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -774,11 +879,11 @@
774
879
  <span class="cline-any cline-neutral">&nbsp;</span>
775
880
  <span class="cline-any cline-neutral">&nbsp;</span>
776
881
  <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-yes">317x</span>
882
+ <span class="cline-any cline-yes">209x</span>
778
883
  <span class="cline-any cline-neutral">&nbsp;</span>
779
884
  <span class="cline-any cline-neutral">&nbsp;</span>
780
885
  <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-yes">1x</span>
886
+ <span class="cline-any cline-yes">4x</span>
782
887
  <span class="cline-any cline-neutral">&nbsp;</span>
783
888
  <span class="cline-any cline-neutral">&nbsp;</span>
784
889
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -791,18 +896,19 @@
791
896
  <span class="cline-any cline-neutral">&nbsp;</span>
792
897
  <span class="cline-any cline-neutral">&nbsp;</span>
793
898
  <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-yes">972x</span>
795
- <span class="cline-any cline-yes">305x</span>
899
+ <span class="cline-any cline-yes">654x</span>
900
+ <span class="cline-any cline-yes">180x</span>
796
901
  <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-yes">972x</span>
798
902
  <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-yes">972x</span>
800
- <span class="cline-any cline-yes">449x</span>
801
- <span class="cline-any cline-yes">449x</span>
903
+ <span class="cline-any cline-yes">654x</span>
904
+ <span class="cline-any cline-yes">654x</span>
802
905
  <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-yes">654x</span>
907
+ <span class="cline-any cline-yes">378x</span>
908
+ <span class="cline-any cline-yes">378x</span>
803
909
  <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">523x</span>
805
910
  <span class="cline-any cline-neutral">&nbsp;</span>
911
+ <span class="cline-any cline-yes">276x</span>
806
912
  <span class="cline-any cline-neutral">&nbsp;</span>
807
913
  <span class="cline-any cline-neutral">&nbsp;</span>
808
914
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -810,49 +916,76 @@
810
916
  <span class="cline-any cline-neutral">&nbsp;</span>
811
917
  <span class="cline-any cline-neutral">&nbsp;</span>
812
918
  <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-yes">237x</span>
814
- <span class="cline-any cline-yes">40x</span>
815
919
  <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-yes">237x</span>
817
- <span class="cline-any cline-yes">237x</span>
818
- <span class="cline-any cline-yes">237x</span>
920
+ <span class="cline-any cline-yes">109x</span>
921
+ <span class="cline-any cline-yes">109x</span>
922
+ <span class="cline-any cline-yes">103x</span>
819
923
  <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-yes">237x</span>
821
924
  <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-yes">109x</span>
926
+ <span class="cline-any cline-yes">29x</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-yes">109x</span>
929
+ <span class="cline-any cline-yes">109x</span>
930
+ <span class="cline-any cline-yes">109x</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-yes">109x</span>
822
933
  <span class="cline-any cline-neutral">&nbsp;</span>
823
934
  <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-yes">42x</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-yes">51x</span>
825
937
  <span class="cline-any cline-no">&nbsp;</span>
826
938
  <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-yes">42x</span>
828
- <span class="cline-any cline-yes">29x</span>
939
+ <span class="cline-any cline-yes">51x</span>
940
+ <span class="cline-any cline-yes">30x</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-yes">51x</span>
943
+ <span class="cline-any cline-yes">216x</span>
944
+ <span class="cline-any cline-neutral">&nbsp;</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
946
  <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-yes">42x</span>
831
- <span class="cline-any cline-yes">436x</span>
832
947
  <span class="cline-any cline-neutral">&nbsp;</span>
948
+ <span class="cline-any cline-yes">55x</span>
949
+ <span class="cline-any cline-yes">6x</span>
950
+ <span class="cline-any cline-yes">6x</span>
833
951
  <span class="cline-any cline-neutral">&nbsp;</span>
834
952
  <span class="cline-any cline-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-yes">55x</span>
954
+ <span class="cline-any cline-yes">6x</span>
955
+ <span class="cline-any cline-yes">6x</span>
835
956
  <span class="cline-any cline-neutral">&nbsp;</span>
836
957
  <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-yes">53x</span>
959
+ <span class="cline-any cline-no">&nbsp;</span>
960
+ <span class="cline-any cline-no">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-yes">53x</span>
964
+ <span class="cline-any cline-yes">6x</span>
965
+ <span class="cline-any cline-yes">6x</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
837
967
  <span class="cline-any cline-neutral">&nbsp;</span>
838
968
  <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-yes">911x</span>
840
- <span class="cline-any cline-yes">911x</span>
841
- <span class="cline-any cline-yes">911x</span>
842
969
  <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">911x</span>
844
- <span class="cline-any cline-yes">911x</span>
845
- <span class="cline-any cline-yes">911x</span>
846
- <span class="cline-any cline-yes">911x</span>
847
- <span class="cline-any cline-yes">911x</span>
848
970
  <span class="cline-any cline-neutral">&nbsp;</span>
849
971
  <span class="cline-any cline-neutral">&nbsp;</span>
850
- <span class="cline-any cline-yes">911x</span>
972
+ <span class="cline-any cline-yes">593x</span>
973
+ <span class="cline-any cline-yes">593x</span>
974
+ <span class="cline-any cline-yes">593x</span>
975
+ <span class="cline-any cline-neutral">&nbsp;</span>
976
+ <span class="cline-any cline-yes">593x</span>
977
+ <span class="cline-any cline-yes">593x</span>
978
+ <span class="cline-any cline-yes">593x</span>
979
+ <span class="cline-any cline-yes">593x</span>
980
+ <span class="cline-any cline-yes">593x</span>
981
+ <span class="cline-any cline-neutral">&nbsp;</span>
982
+ <span class="cline-any cline-neutral">&nbsp;</span>
983
+ <span class="cline-any cline-yes">593x</span>
851
984
  <span class="cline-any cline-yes">115x</span>
852
985
  <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-yes">911x</span>
854
- <span class="cline-any cline-yes">911x</span>
855
- <span class="cline-any cline-yes">908x</span>
986
+ <span class="cline-any cline-yes">593x</span>
987
+ <span class="cline-any cline-yes">593x</span>
988
+ <span class="cline-any cline-yes">590x</span>
856
989
  <span class="cline-any cline-neutral">&nbsp;</span>
857
990
  <span class="cline-any cline-neutral">&nbsp;</span>
858
991
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -866,14 +999,14 @@
866
999
  <span class="cline-any cline-neutral">&nbsp;</span>
867
1000
  <span class="cline-any cline-neutral">&nbsp;</span>
868
1001
  <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-yes">279x</span>
1002
+ <span class="cline-any cline-yes">158x</span>
870
1003
  <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-yes">279x</span>
872
- <span class="cline-any cline-yes">279x</span>
1004
+ <span class="cline-any cline-yes">158x</span>
1005
+ <span class="cline-any cline-yes">158x</span>
873
1006
  <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-yes">66x</span>
1007
+ <span class="cline-any cline-yes">144x</span>
875
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-yes">279x</span>
1009
+ <span class="cline-any cline-yes">158x</span>
877
1010
  <span class="cline-any cline-neutral">&nbsp;</span>
878
1011
  <span class="cline-any cline-neutral">&nbsp;</span>
879
1012
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -881,23 +1014,23 @@
881
1014
  <span class="cline-any cline-neutral">&nbsp;</span>
882
1015
  <span class="cline-any cline-neutral">&nbsp;</span>
883
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-yes">279x</span>
1017
+ <span class="cline-any cline-yes">158x</span>
885
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
886
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
887
1020
  <span class="cline-any cline-neutral">&nbsp;</span>
888
1021
  <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-yes">279x</span>
890
- <span class="cline-any cline-yes">247x</span>
1022
+ <span class="cline-any cline-yes">158x</span>
1023
+ <span class="cline-any cline-yes">125x</span>
891
1024
  <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-yes">32x</span>
1025
+ <span class="cline-any cline-yes">33x</span>
893
1026
  <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-yes">279x</span>
895
- <span class="cline-any cline-yes">1x</span>
1027
+ <span class="cline-any cline-yes">158x</span>
1028
+ <span class="cline-any cline-yes">2x</span>
896
1029
  <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-yes">278x</span>
1030
+ <span class="cline-any cline-yes">156x</span>
898
1031
  <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-yes">279x</span>
900
- <span class="cline-any cline-yes">279x</span>
1032
+ <span class="cline-any cline-yes">158x</span>
1033
+ <span class="cline-any cline-yes">158x</span>
901
1034
  <span class="cline-any cline-neutral">&nbsp;</span>
902
1035
  <span class="cline-any cline-neutral">&nbsp;</span>
903
1036
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -913,8 +1046,8 @@
913
1046
  <span class="cline-any cline-neutral">&nbsp;</span>
914
1047
  <span class="cline-any cline-neutral">&nbsp;</span>
915
1048
  <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-yes">9x</span>
917
- <span class="cline-any cline-yes">9x</span>
1049
+ <span class="cline-any cline-yes">16x</span>
1050
+ <span class="cline-any cline-yes">16x</span>
918
1051
  <span class="cline-any cline-neutral">&nbsp;</span>
919
1052
  <span class="cline-any cline-neutral">&nbsp;</span>
920
1053
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -923,8 +1056,8 @@
923
1056
  <span class="cline-any cline-neutral">&nbsp;</span>
924
1057
  <span class="cline-any cline-neutral">&nbsp;</span>
925
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-yes">9x</span>
927
- <span class="cline-any cline-yes">9x</span>
1059
+ <span class="cline-any cline-yes">16x</span>
1060
+ <span class="cline-any cline-yes">16x</span>
928
1061
  <span class="cline-any cline-neutral">&nbsp;</span>
929
1062
  <span class="cline-any cline-neutral">&nbsp;</span>
930
1063
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -976,30 +1109,35 @@
976
1109
  <span class="cline-any cline-neutral">&nbsp;</span>
977
1110
  <span class="cline-any cline-neutral">&nbsp;</span>
978
1111
  <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-yes">202x</span>
1112
+ <span class="cline-any cline-yes">235x</span>
1113
+ <span class="cline-any cline-yes">235x</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-neutral">&nbsp;</span>
1116
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
1117
  <span class="cline-any cline-neutral">&nbsp;</span>
1118
+ <span class="cline-any cline-yes">235x</span>
981
1119
  <span class="cline-any cline-neutral">&nbsp;</span>
982
1120
  <span class="cline-any cline-neutral">&nbsp;</span>
983
1121
  <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-yes">202x</span>
1122
+ <span class="cline-any cline-yes">235x</span>
1123
+ <span class="cline-any cline-yes">235x</span>
1124
+ <span class="cline-any cline-yes">235x</span>
985
1125
  <span class="cline-any cline-neutral">&nbsp;</span>
986
1126
  <span class="cline-any cline-neutral">&nbsp;</span>
987
1127
  <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-yes">202x</span>
989
- <span class="cline-any cline-yes">202x</span>
990
- <span class="cline-any cline-yes">202x</span>
991
1128
  <span class="cline-any cline-neutral">&nbsp;</span>
992
1129
  <span class="cline-any cline-neutral">&nbsp;</span>
993
1130
  <span class="cline-any cline-neutral">&nbsp;</span>
994
1131
  <span class="cline-any cline-neutral">&nbsp;</span>
995
1132
  <span class="cline-any cline-neutral">&nbsp;</span>
1133
+ <span class="cline-any cline-yes">235x</span>
1134
+ <span class="cline-any cline-yes">235x</span>
996
1135
  <span class="cline-any cline-neutral">&nbsp;</span>
1136
+ <span class="cline-any cline-yes">235x</span>
997
1137
  <span class="cline-any cline-neutral">&nbsp;</span>
998
1138
  <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-yes">202x</span>
1000
- <span class="cline-any cline-yes">202x</span>
1001
1139
  <span class="cline-any cline-neutral">&nbsp;</span>
1002
- <span class="cline-any cline-yes">202x</span>
1140
+ <span class="cline-any cline-yes">2025x</span>
1003
1141
  <span class="cline-any cline-neutral">&nbsp;</span>
1004
1142
  <span class="cline-any cline-neutral">&nbsp;</span>
1005
1143
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1011,6 +1149,11 @@
1011
1149
  <span class="cline-any cline-yes">4x</span>
1012
1150
  <span class="cline-any cline-yes">4x</span>
1013
1151
  <span class="cline-any cline-neutral">&nbsp;</span>
1152
+ <span class="cline-any cline-neutral">&nbsp;</span>
1153
+ <span class="cline-any cline-yes">4x</span>
1154
+ <span class="cline-any cline-yes">4x</span>
1155
+ <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-neutral">&nbsp;</span>
1014
1157
  <span class="cline-any cline-yes">4x</span>
1015
1158
  <span class="cline-any cline-neutral">&nbsp;</span>
1016
1159
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1046,49 +1189,62 @@
1046
1189
  <span class="cline-any cline-neutral">&nbsp;</span>
1047
1190
  <span class="cline-any cline-neutral">&nbsp;</span>
1048
1191
  <span class="cline-any cline-neutral">&nbsp;</span>
1192
+ <span class="cline-any cline-yes">121x</span>
1193
+ <span class="cline-any cline-yes">121x</span>
1194
+ <span class="cline-any cline-yes">121x</span>
1195
+ <span class="cline-any cline-neutral">&nbsp;</span>
1196
+ <span class="cline-any cline-neutral">&nbsp;</span>
1197
+ <span class="cline-any cline-neutral">&nbsp;</span>
1198
+ <span class="cline-any cline-neutral">&nbsp;</span>
1199
+ <span class="cline-any cline-yes">121x</span>
1049
1200
  <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-yes">246x</span>
1201
+ <span class="cline-any cline-yes">121x</span>
1051
1202
  <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-yes">246x</span>
1053
- <span class="cline-any cline-yes">246x</span>
1054
- <span class="cline-any cline-yes">246x</span>
1203
+ <span class="cline-any cline-yes">121x</span>
1055
1204
  <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-yes">246x</span>
1205
+ <span class="cline-any cline-yes">121x</span>
1206
+ <span class="cline-any cline-yes">121x</span>
1057
1207
  <span class="cline-any cline-neutral">&nbsp;</span>
1208
+ <span class="cline-any cline-yes">121x</span>
1058
1209
  <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-yes">246x</span>
1060
1210
  <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-yes">246x</span>
1062
- <span class="cline-any cline-yes">246x</span>
1063
1211
  <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-yes">246x</span>
1065
1212
  <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-yes">126x</span>
1066
1214
  <span class="cline-any cline-neutral">&nbsp;</span>
1215
+ <span class="cline-any cline-yes">126x</span>
1216
+ <span class="cline-any cline-yes">126x</span>
1067
1217
  <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-yes">254x</span>
1218
+ <span class="cline-any cline-yes">126x</span>
1219
+ <span class="cline-any cline-yes">126x</span>
1220
+ <span class="cline-any cline-yes">126x</span>
1069
1221
  <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-yes">254x</span>
1071
- <span class="cline-any cline-yes">254x</span>
1072
1222
  <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-yes">254x</span>
1074
- <span class="cline-any cline-yes">254x</span>
1075
- <span class="cline-any cline-yes">254x</span>
1076
1223
  <span class="cline-any cline-neutral">&nbsp;</span>
1077
1224
  <span class="cline-any cline-neutral">&nbsp;</span>
1225
+ <span class="cline-any cline-no">&nbsp;</span>
1078
1226
  <span class="cline-any cline-neutral">&nbsp;</span>
1079
1227
  <span class="cline-any cline-neutral">&nbsp;</span>
1080
1228
  <span class="cline-any cline-neutral">&nbsp;</span>
1081
1229
  <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-yes">121x</span>
1083
- <span class="cline-any cline-yes">121x</span>
1084
- <span class="cline-any cline-yes">121x</span>
1230
+ <span class="cline-any cline-no">&nbsp;</span>
1231
+ <span class="cline-any cline-no">&nbsp;</span>
1232
+ <span class="cline-any cline-no">&nbsp;</span>
1233
+ <span class="cline-any cline-neutral">&nbsp;</span>
1234
+ <span class="cline-any cline-neutral">&nbsp;</span>
1235
+ <span class="cline-any cline-neutral">&nbsp;</span>
1085
1236
  <span class="cline-any cline-neutral">&nbsp;</span>
1086
1237
  <span class="cline-any cline-neutral">&nbsp;</span>
1238
+ <span class="cline-any cline-yes">120x</span>
1239
+ <span class="cline-any cline-yes">120x</span>
1240
+ <span class="cline-any cline-yes">120x</span>
1087
1241
  <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-yes">117x</span>
1242
+ <span class="cline-any cline-neutral">&nbsp;</span>
1243
+ <span class="cline-any cline-neutral">&nbsp;</span>
1244
+ <span class="cline-any cline-yes">116x</span>
1089
1245
  <span class="cline-any cline-yes">3x</span>
1090
1246
  <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-yes">117x</span>
1247
+ <span class="cline-any cline-yes">116x</span>
1092
1248
  <span class="cline-any cline-neutral">&nbsp;</span>
1093
1249
  <span class="cline-any cline-neutral">&nbsp;</span>
1094
1250
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1170,27 +1326,27 @@
1170
1326
  <span class="cline-any cline-neutral">&nbsp;</span>
1171
1327
  <span class="cline-any cline-neutral">&nbsp;</span>
1172
1328
  <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-yes">9x</span>
1329
+ <span class="cline-any cline-yes">10x</span>
1174
1330
  <span class="cline-any cline-no">&nbsp;</span>
1175
1331
  <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-yes">9x</span>
1332
+ <span class="cline-any cline-yes">10x</span>
1177
1333
  <span class="cline-any cline-neutral">&nbsp;</span>
1178
1334
  <span class="cline-any cline-neutral">&nbsp;</span>
1179
1335
  <span class="cline-any cline-neutral">&nbsp;</span>
1180
- <span class="cline-any cline-yes">9x</span>
1336
+ <span class="cline-any cline-yes">10x</span>
1181
1337
  <span class="cline-any cline-neutral">&nbsp;</span>
1182
1338
  <span class="cline-any cline-neutral">&nbsp;</span>
1183
1339
  <span class="cline-any cline-neutral">&nbsp;</span>
1184
1340
  <span class="cline-any cline-neutral">&nbsp;</span>
1185
1341
  <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-yes">25x</span>
1187
- <span class="cline-any cline-yes">25x</span>
1342
+ <span class="cline-any cline-yes">20x</span>
1343
+ <span class="cline-any cline-yes">20x</span>
1188
1344
  <span class="cline-any cline-no">&nbsp;</span>
1189
1345
  <span class="cline-any cline-neutral">&nbsp;</span>
1190
- <span class="cline-any cline-yes">25x</span>
1346
+ <span class="cline-any cline-yes">20x</span>
1191
1347
  <span class="cline-any cline-neutral">&nbsp;</span>
1192
1348
  <span class="cline-any cline-neutral">&nbsp;</span>
1193
- <span class="cline-any cline-yes">25x</span>
1349
+ <span class="cline-any cline-yes">20x</span>
1194
1350
  <span class="cline-any cline-neutral">&nbsp;</span>
1195
1351
  <span class="cline-any cline-neutral">&nbsp;</span>
1196
1352
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1210,20 +1366,20 @@
1210
1366
  <span class="cline-any cline-neutral">&nbsp;</span>
1211
1367
  <span class="cline-any cline-neutral">&nbsp;</span>
1212
1368
  <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-yes">8x</span>
1369
+ <span class="cline-any cline-yes">4x</span>
1214
1370
  <span class="cline-any cline-no">&nbsp;</span>
1215
1371
  <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-yes">8x</span>
1217
- <span class="cline-any cline-yes">8x</span>
1372
+ <span class="cline-any cline-yes">4x</span>
1373
+ <span class="cline-any cline-yes">4x</span>
1218
1374
  <span class="cline-any cline-neutral">&nbsp;</span>
1219
1375
  <span class="cline-any cline-neutral">&nbsp;</span>
1220
1376
  <span class="cline-any cline-neutral">&nbsp;</span>
1221
1377
  <span class="cline-any cline-neutral">&nbsp;</span>
1222
1378
  <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-yes">63x</span>
1224
- <span class="cline-any cline-yes">63x</span>
1225
- <span class="cline-any cline-yes">62x</span>
1226
- <span class="cline-any cline-yes">62x</span>
1379
+ <span class="cline-any cline-yes">41x</span>
1380
+ <span class="cline-any cline-yes">41x</span>
1381
+ <span class="cline-any cline-yes">40x</span>
1382
+ <span class="cline-any cline-yes">40x</span>
1227
1383
  <span class="cline-any cline-neutral">&nbsp;</span>
1228
1384
  <span class="cline-any cline-neutral">&nbsp;</span>
1229
1385
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1294,32 +1450,42 @@
1294
1450
  <span class="cline-any cline-neutral">&nbsp;</span>
1295
1451
  <span class="cline-any cline-neutral">&nbsp;</span>
1296
1452
  <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-yes">34x</span>
1453
+ <span class="cline-any cline-yes">18x</span>
1298
1454
  <span class="cline-any cline-no">&nbsp;</span>
1299
1455
  <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-yes">34x</span>
1301
- <span class="cline-any cline-yes">34x</span>
1456
+ <span class="cline-any cline-yes">18x</span>
1457
+ <span class="cline-any cline-yes">18x</span>
1302
1458
  <span class="cline-any cline-neutral">&nbsp;</span>
1303
1459
  <span class="cline-any cline-neutral">&nbsp;</span>
1304
1460
  <span class="cline-any cline-neutral">&nbsp;</span>
1305
1461
  <span class="cline-any cline-neutral">&nbsp;</span>
1306
1462
  <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-yes">26x</span>
1308
- <span class="cline-any cline-yes">26x</span>
1463
+ <span class="cline-any cline-yes">11x</span>
1464
+ <span class="cline-any cline-yes">11x</span>
1309
1465
  <span class="cline-any cline-neutral">&nbsp;</span>
1310
1466
  <span class="cline-any cline-neutral">&nbsp;</span>
1311
1467
  <span class="cline-any cline-neutral">&nbsp;</span>
1312
1468
  <span class="cline-any cline-neutral">&nbsp;</span>
1313
1469
  <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-yes">5x</span>
1315
- <span class="cline-any cline-yes">5x</span>
1470
+ <span class="cline-any cline-yes">2x</span>
1471
+ <span class="cline-any cline-yes">2x</span>
1316
1472
  <span class="cline-any cline-neutral">&nbsp;</span>
1317
1473
  <span class="cline-any cline-neutral">&nbsp;</span>
1318
1474
  <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-yes">46x</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { init as dbInit } from "../../db"
1475
+ <span class="cline-any cline-yes">55x</span>
1476
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { generator, mocks, structures } from "@budibase/backend-core/tests"
1477
+ &nbsp;
1478
+ // init the licensing mock
1479
+ import * as pro from "@budibase/pro"
1480
+ mocks.licenses.init(pro)
1481
+ &nbsp;
1482
+ // use unlimited license by default
1483
+ mocks.licenses.useUnlimited()
1484
+ &nbsp;
1485
+ import { init as dbInit } from "../../db"
1321
1486
  dbInit()
1322
1487
  import env from "../../environment"
1488
+ import { env as coreEnv } from "@budibase/backend-core"
1323
1489
  import {
1324
1490
  basicTable,
1325
1491
  basicRow,
@@ -1348,13 +1514,16 @@ import { cleanup } from "../../utilities/fileSystem"
1348
1514
  import newid from "../../db/newid"
1349
1515
  import { generateUserMetadataID } from "../../db/utils"
1350
1516
  import { startup } from "../../startup"
1517
+ import { AuthToken, Database } from "@budibase/types"
1351
1518
  const supertest = require("supertest")
1352
1519
  &nbsp;
1353
- const GLOBAL_USER_ID = "us_uuid1"
1354
- const EMAIL = "babs@babs.com"
1355
- const FIRSTNAME = "Barbara"
1356
- const LASTNAME = "Barbington"
1357
- const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306"
1520
+ type DefaultUserValues = {
1521
+ globalUserId: string
1522
+ email: string
1523
+ firstName: string
1524
+ lastName: string
1525
+ csrfToken: string
1526
+ }
1358
1527
  &nbsp;
1359
1528
  class TestConfiguration {
1360
1529
  server: any
@@ -1372,12 +1541,14 @@ class TestConfiguration {
1372
1541
  linkedTable: any
1373
1542
  automation: any
1374
1543
  datasource: any
1544
+ tenantId: string | null
1545
+ defaultUserValues: DefaultUserValues
1375
1546
  &nbsp;
1376
1547
  constructor(openServer = true) {
1377
1548
  if (openServer) {
1378
1549
  // use a random port because it doesn't matter
1379
1550
  env.PORT = "0"
1380
- this.server = require("../../app")
1551
+ this.server = require("../../app").default
1381
1552
  // we need the request for logging in, involves cookies, hard to fake
1382
1553
  this.request = supertest(this.server)
1383
1554
  this.started = true
@@ -1386,6 +1557,18 @@ class TestConfiguration {
1386
1557
  }
1387
1558
  this.appId = null
1388
1559
  this.allApps = []
1560
+ this.tenantId = null
1561
+ this.defaultUserValues = this.populateDefaultUserValues()
1562
+ }
1563
+ &nbsp;
1564
+ populateDefaultUserValues(): DefaultUserValues {
1565
+ return {
1566
+ globalUserId: `us_${newid()}`,
1567
+ email: generator.email(),
1568
+ firstName: generator.first(),
1569
+ lastName: generator.last(),
1570
+ csrfToken: generator.hash(),
1571
+ }
1389
1572
  }
1390
1573
  &nbsp;
1391
1574
  getRequest() {
@@ -1410,10 +1593,10 @@ class TestConfiguration {
1410
1593
  &nbsp;
1411
1594
  getUserDetails() {
1412
1595
  return {
1413
- globalId: GLOBAL_USER_ID,
1414
- email: EMAIL,
1415
- firstName: FIRSTNAME,
1416
- lastName: LASTNAME,
1596
+ globalId: this.defaultUserValues.globalUserId,
1597
+ email: this.defaultUserValues.email,
1598
+ firstName: this.defaultUserValues.firstName,
1599
+ lastName: this.defaultUserValues.lastName,
1417
1600
  }
1418
1601
  }
1419
1602
  &nbsp;
@@ -1421,7 +1604,9 @@ class TestConfiguration {
1421
1604
  if (!appId) {
1422
1605
  appId = this.appId
1423
1606
  }
1424
- return tenancy.doInTenant(TENANT_ID, () =&gt; {
1607
+ &nbsp;
1608
+ const tenant = this.getTenantId()
1609
+ return tenancy.doInTenant(tenant, () =&gt; {
1425
1610
  // check if already in a context
1426
1611
  if (context.getAppId() == null &amp;&amp; appId !== null) {
1427
1612
  return context.doInAppContext(appId, async () =&gt; {
@@ -1437,6 +1622,11 @@ class TestConfiguration {
1437
1622
  &nbsp;
1438
1623
  // use a new id as the name to avoid name collisions
1439
1624
  async init(appName = newid()) {
1625
+ this.defaultUserValues = this.populateDefaultUserValues()
1626
+ if (context.isMultiTenant()) {
1627
+ this.tenantId = structures.tenant.id()
1628
+ }
1629
+ &nbsp;
1440
1630
  if (!this.started) {
1441
1631
  await startup()
1442
1632
  }
@@ -1458,6 +1648,27 @@ class TestConfiguration {
1458
1648
  cleanup(this.allApps.map(app =&gt; app.appId))
1459
1649
  }
1460
1650
  }
1651
+ &nbsp;
1652
+ // MODES
1653
+ #setMultiTenancy = (value: boolean) =&gt; {
1654
+ env._set("MULTI_TENANCY", value)
1655
+ coreEnv._set("MULTI_TENANCY", value)
1656
+ }
1657
+ &nbsp;
1658
+ #setSelfHosted = (value: boolean) =&gt; {
1659
+ env._set("SELF_HOSTED", value)
1660
+ coreEnv._set("SELF_HOSTED", value)
1661
+ }
1662
+ &nbsp;
1663
+ modeCloud = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
1664
+ <span class="cstat-no" title="statement not covered" > this.#setSelfHosted(false)</span>
1665
+ <span class="cstat-no" title="statement not covered" > this.#setMultiTenancy(true)</span>
1666
+ }
1667
+ &nbsp;
1668
+ modeSelf = () =&gt; {
1669
+ this.#setSelfHosted(true)
1670
+ this.#setMultiTenancy(false)
1671
+ }
1461
1672
  &nbsp;
1462
1673
  // UTILS
1463
1674
  &nbsp;
@@ -1467,9 +1678,9 @@ class TestConfiguration {
1467
1678
  const appId = this.appId
1468
1679
  request.appId = appId
1469
1680
  // fake cookies, we don't need them
1470
- request.cookies = { set: <span class="fstat-no" title="function not covered" >() =</span>&gt; {}, get: <span class="fstat-no" title="function not covered" >() =</span>&gt; {} }
1681
+ request.cookies = { set: <span class="fstat-no" title="function not covered" >() =&gt; {</span>}, get: <span class="fstat-no" title="function not covered" >() =&gt; {</span>} }
1471
1682
  request.config = { jwtSecret: env.JWT_SECRET }
1472
- request.user = { appId, tenantId: TENANT_ID }
1683
+ request.user = { appId, tenantId: this.getTenantId() }
1473
1684
  request.query = {}
1474
1685
  request.request = {
1475
1686
  body,
@@ -1485,15 +1696,15 @@ class TestConfiguration {
1485
1696
  &nbsp;
1486
1697
  // USER / AUTH
1487
1698
  async globalUser({
1488
- id = GLOBAL_USER_ID,
1489
- firstName = FIRSTNAME,
1490
- lastName = LASTNAME,
1699
+ id = this.defaultUserValues.globalUserId,
1700
+ firstName = this.defaultUserValues.firstName,
1701
+ lastName = this.defaultUserValues.lastName,
1491
1702
  builder = true,
1492
1703
  admin = false,
1493
- email = EMAIL,
1704
+ email = this.defaultUserValues.email,
1494
1705
  roles,
1495
1706
  }: any = {}) {
1496
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) =&gt; {
1707
+ return tenancy.doWithGlobalDB(this.getTenantId(), async (db: Database) =&gt; {
1497
1708
  let existing
1498
1709
  try {
1499
1710
  existing = await db.get(id)
@@ -1504,14 +1715,14 @@ class TestConfiguration {
1504
1715
  _id: id,
1505
1716
  ...existing,
1506
1717
  roles: roles || {},
1507
- tenantId: TENANT_ID,
1718
+ tenantId: this.getTenantId(),
1508
1719
  firstName,
1509
1720
  lastName,
1510
1721
  }
1511
1722
  await sessions.createASession(id, {
1512
1723
  sessionId: "sessionid",
1513
- tenantId: TENANT_ID,
1514
- csrfToken: CSRF_TOKEN,
1724
+ tenantId: this.getTenantId(),
1725
+ csrfToken: this.defaultUserValues.csrfToken,
1515
1726
  })
1516
1727
  if (builder) {
1517
1728
  user.builder = { global: true }
@@ -1525,7 +1736,7 @@ class TestConfiguration {
1525
1736
  }
1526
1737
  const resp = await db.put(user)
1527
1738
  return {
1528
- _rev: resp._rev,
1739
+ _rev: resp.rev,
1529
1740
  ...user,
1530
1741
  }
1531
1742
  })
@@ -1533,9 +1744,9 @@ class TestConfiguration {
1533
1744
  &nbsp;
1534
1745
  async createUser(
1535
1746
  id = null,
1536
- firstName = FIRSTNAME,
1537
- lastName = LASTNAME,
1538
- email = EMAIL,
1747
+ firstName = this.defaultUserValues.firstName,
1748
+ lastName = this.defaultUserValues.lastName,
1749
+ email = this.defaultUserValues.email,
1539
1750
  builder = true,
1540
1751
  admin = false,
1541
1752
  roles = {}
@@ -1574,13 +1785,13 @@ class TestConfiguration {
1574
1785
  }
1575
1786
  await sessions.createASession(userId, {
1576
1787
  sessionId: "sessionid",
1577
- tenantId: TENANT_ID,
1788
+ tenantId: this.getTenantId(),
1578
1789
  })
1579
1790
  // have to fake this
1580
1791
  const authObj = {
1581
1792
  userId,
1582
1793
  sessionId: "sessionid",
1583
- tenantId: TENANT_ID,
1794
+ tenantId: this.getTenantId(),
1584
1795
  }
1585
1796
  const app = {
1586
1797
  roleId: roleId,
@@ -1603,10 +1814,11 @@ class TestConfiguration {
1603
1814
  }
1604
1815
  &nbsp;
1605
1816
  defaultHeaders(extras = {}) {
1606
- const authObj = {
1607
- userId: GLOBAL_USER_ID,
1817
+ const tenantId = this.getTenantId()
1818
+ const authObj: AuthToken = {
1819
+ userId: this.defaultUserValues.globalUserId,
1608
1820
  sessionId: "sessionid",
1609
- tenantId: TENANT_ID,
1821
+ tenantId,
1610
1822
  }
1611
1823
  const app = {
1612
1824
  roleId: roles.BUILTIN_ROLE_IDS.ADMIN,
@@ -1620,7 +1832,7 @@ class TestConfiguration {
1620
1832
  `${constants.Cookie.Auth}=${authToken}`,
1621
1833
  `${constants.Cookie.CurrentApp}=${appToken}`,
1622
1834
  ],
1623
- [constants.Header.CSRF_TOKEN]: CSRF_TOKEN,
1835
+ [constants.Header.CSRF_TOKEN]: this.defaultUserValues.csrfToken,
1624
1836
  ...extras,
1625
1837
  }
1626
1838
  if (this.appId) {
@@ -1628,6 +1840,10 @@ class TestConfiguration {
1628
1840
  }
1629
1841
  return headers
1630
1842
  }
1843
+ &nbsp;
1844
+ getTenantId() {
1845
+ return this.tenantId || TENANT_ID
1846
+ }
1631
1847
  &nbsp;
1632
1848
  publicHeaders({ prodApp = true } = {}) {
1633
1849
  const appId = prodApp ? this.prodAppId : this.appId
@@ -1638,11 +1854,16 @@ class TestConfiguration {
1638
1854
  if (appId) {
1639
1855
  headers[constants.Header.APP_ID] = appId
1640
1856
  }
1857
+ &nbsp;
1858
+ if (this.tenantId) {
1859
+ headers[constants.Header.TENANT_ID] = this.tenantId
1860
+ }
1861
+ &nbsp;
1641
1862
  return headers
1642
1863
  }
1643
1864
  &nbsp;
1644
1865
  async roleHeaders({
1645
- email = EMAIL,
1866
+ email = this.defaultUserValues.email,
1646
1867
  roleId = <span class="branch-0 cbranch-no" title="branch not covered" >roles.BUILTIN_ROLE_IDS.ADMIN,</span>
1647
1868
  builder = false,
1648
1869
  prodApp = true,
@@ -1652,8 +1873,8 @@ class TestConfiguration {
1652
1873
  &nbsp;
1653
1874
  // API
1654
1875
  &nbsp;
1655
- async generateApiKey(userId = GLOBAL_USER_ID) {
1656
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) =&gt; {
1876
+ async generateApiKey(userId = this.defaultUserValues.globalUserId) {
1877
+ return tenancy.doWithGlobalDB(this.getTenantId(), async (db: any) =&gt; {
1657
1878
  const id = dbCore.generateDevInfoID(userId)
1658
1879
  let devInfo
1659
1880
  try {
@@ -1662,7 +1883,7 @@ class TestConfiguration {
1662
1883
  devInfo = { _id: id, userId }
1663
1884
  }
1664
1885
  devInfo.apiKey = encryption.encrypt(
1665
- `${TENANT_ID}${dbCore.SEPARATOR}${newid()}`
1886
+ `${this.getTenantId()}${dbCore.SEPARATOR}${newid()}`
1666
1887
  )
1667
1888
  await db.put(devInfo)
1668
1889
  return devInfo.apiKey
@@ -1670,29 +1891,31 @@ class TestConfiguration {
1670
1891
  }
1671
1892
  &nbsp;
1672
1893
  // APP
1673
- &nbsp;
1674
1894
  async createApp(appName: string) {
1675
1895
  // create dev app
1676
1896
  // clear any old app
1677
1897
  this.appId = null
1678
- // @ts-ignore
1679
- await context.updateAppId(null)
1680
- this.app = await this._req({ name: appName }, null, controllers.app.create)
1681
- this.appId = this.app.appId
1682
- // @ts-ignore
1683
- await context.updateAppId(this.appId)
1684
- &nbsp;
1685
- // create production app
1686
- this.prodApp = await this.deploy()
1898
+ await context.doInAppContext(null, async () =&gt; {
1899
+ this.app = await this._req(
1900
+ { name: appName },
1901
+ null,
1902
+ controllers.app.create
1903
+ )
1904
+ this.appId = this.app.appId
1905
+ })
1906
+ return await context.doInAppContext(this.appId, async () =&gt; {
1907
+ // create production app
1908
+ this.prodApp = await this.publish()
1687
1909
  &nbsp;
1688
- this.allApps.push(this.prodApp)
1689
- this.allApps.push(this.app)
1910
+ this.allApps.push(this.prodApp)
1911
+ this.allApps.push(this.app)
1690
1912
  &nbsp;
1691
- return this.app
1913
+ return this.app
1914
+ })
1692
1915
  }
1693
1916
  &nbsp;
1694
- async deploy() {
1695
- await this._req(null, null, controllers.deploy.deployApp)
1917
+ async publish() {
1918
+ await this._req(null, null, controllers.deploy.publishApp)
1696
1919
  // @ts-ignore
1697
1920
  const prodAppId = this.getAppId().replace("_dev", "")
1698
1921
  this.prodAppId = prodAppId
@@ -1702,6 +1925,17 @@ class TestConfiguration {
1702
1925
  return await db.get(dbCore.DocumentType.APP_METADATA)
1703
1926
  })
1704
1927
  }
1928
+ &nbsp;
1929
+ <span class="fstat-no" title="function not covered" > async u</span>npublish() {
1930
+ const response = <span class="cstat-no" title="statement not covered" >await this._req(</span>
1931
+ null,
1932
+ { appId: this.appId },
1933
+ controllers.app.unpublish
1934
+ )
1935
+ <span class="cstat-no" title="statement not covered" > this.prodAppId = null</span>
1936
+ <span class="cstat-no" title="statement not covered" > this.prodApp = null</span>
1937
+ <span class="cstat-no" title="statement not covered" > return response</span>
1938
+ }
1705
1939
  &nbsp;
1706
1940
  // TABLE
1707
1941
  &nbsp;
@@ -1824,7 +2058,7 @@ class TestConfiguration {
1824
2058
  return this._req(null, null, controllers.automation.fetch)
1825
2059
  }
1826
2060
  &nbsp;
1827
- async <span class="fstat-no" title="function not covered" >deleteAutomation(</span>automation?: any) {
2061
+ <span class="fstat-no" title="function not covered" > async d</span>eleteAutomation(automation?: any) {
1828
2062
  <span class="cstat-no" title="statement not covered" > automation = automation || this.automation</span>
1829
2063
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!automation) {</span>
1830
2064
  <span class="cstat-no" title="statement not covered" > return</span>
@@ -1921,7 +2155,7 @@ class TestConfiguration {
1921
2155
  }
1922
2156
  &nbsp;
1923
2157
  async createQuery(config?: any) {
1924
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!config)</span> {
2158
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!config) {</span>
1925
2159
  <span class="cstat-no" title="statement not covered" > throw "No datasource created for query."</span>
1926
2160
  }
1927
2161
  config = config || basicQuery(this.datasource._id)
@@ -1951,7 +2185,7 @@ export = TestConfiguration
1951
2185
  <div class='footer quiet pad2 space-top1 center small'>
1952
2186
  Code coverage generated by
1953
2187
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1954
- at Thu Feb 02 2023 11:56:48 GMT+0000 (Coordinated Universal Time)
2188
+ at Mon Feb 06 2023 09:24:58 GMT+0000 (Coordinated Universal Time)
1955
2189
  </div>
1956
2190
  <script src="../../../prettify.js"></script>
1957
2191
  <script>