@budibase/server 2.2.12-alpha.7 → 2.2.12-alpha.70

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 (484) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/node-fetch.ts +2 -0
  3. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  4. package/builder/assets/bg.29e85dd5.png +0 -0
  5. package/builder/assets/bulgaria.bd68393d.png +0 -0
  6. package/builder/assets/covanta.72c46c1e.png +0 -0
  7. package/builder/assets/index.80bd6b61.css +6 -0
  8. package/builder/assets/index.c1b13e6f.js +1798 -0
  9. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +5113 -4924
  12. package/coverage/coverage-final.json +268 -264
  13. package/coverage/lcov-report/index.html +202 -157
  14. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
  15. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/application.ts.html +185 -164
  17. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  18. package/coverage/lcov-report/src/api/controllers/automation.ts.html +24 -24
  19. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  20. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +15 -15
  21. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  22. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +112 -88
  23. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  24. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +80 -80
  26. package/coverage/lcov-report/src/api/controllers/dev.ts.html +17 -17
  27. package/coverage/lcov-report/src/api/controllers/index.html +36 -36
  28. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  30. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  31. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  32. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  33. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  34. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  35. package/coverage/lcov-report/src/api/controllers/plugin/index.html +19 -19
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +29 -29
  37. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  38. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  39. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  40. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  41. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
  42. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  50. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
  52. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
  53. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
  54. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
  55. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
  64. package/coverage/lcov-report/src/api/controllers/query/index.html +7 -7
  65. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +89 -65
  66. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  67. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  68. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  69. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +36 -18
  70. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +60 -30
  71. package/coverage/lcov-report/src/api/controllers/row/index.html +40 -40
  72. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +34 -34
  73. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +142 -70
  74. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +120 -120
  75. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
  76. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +152 -38
  77. package/coverage/lcov-report/src/api/controllers/screen.ts.html +7 -7
  78. package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
  79. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  80. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +39 -42
  81. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +52 -52
  82. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +43 -37
  83. package/coverage/lcov-report/src/api/controllers/table/index.html +34 -34
  84. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +155 -68
  85. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +47 -47
  86. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +66 -69
  87. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  88. package/coverage/lcov-report/src/api/controllers/user.ts.html +99 -75
  89. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +62 -17
  90. package/coverage/lcov-report/src/api/controllers/view/index.html +29 -29
  91. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +53 -92
  92. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
  93. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +6 -6
  94. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  95. package/coverage/lcov-report/src/api/index.html +1 -1
  96. package/coverage/lcov-report/src/api/index.ts.html +27 -27
  97. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  98. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
  100. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  101. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  102. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  103. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  104. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  106. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  107. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  108. package/coverage/lcov-report/src/api/routes/index.html +5 -5
  109. package/coverage/lcov-report/src/api/routes/index.ts.html +42 -36
  110. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  111. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  112. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  113. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  114. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  115. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  116. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +14 -14
  117. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  119. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
  121. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  122. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  123. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  124. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  127. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  128. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  130. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  131. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  132. package/coverage/lcov-report/src/api/routes/row.ts.html +12 -12
  133. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  134. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  136. package/coverage/lcov-report/src/api/routes/table.ts.html +26 -95
  137. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  138. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +1 -1
  141. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  142. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  143. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +43 -43
  144. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  145. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  146. package/coverage/lcov-report/src/app.ts.html +13 -7
  147. package/coverage/lcov-report/src/automations/actions.ts.html +27 -27
  148. package/coverage/lcov-report/src/automations/automationUtils.ts.html +59 -59
  149. package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
  150. package/coverage/lcov-report/src/automations/index.html +30 -30
  151. package/coverage/lcov-report/src/automations/index.ts.html +10 -10
  152. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  153. package/coverage/lcov-report/src/automations/logging/index.ts.html +7 -7
  154. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  155. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  156. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  157. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  158. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  159. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  160. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  161. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  162. package/coverage/lcov-report/src/automations/steps/index.html +15 -15
  163. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  164. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  165. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
  166. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +38 -38
  167. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  168. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +7 -7
  169. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  170. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  171. package/coverage/lcov-report/src/automations/steps/utils.ts.html +10 -10
  172. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  173. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +13 -13
  175. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  179. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  182. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  183. package/coverage/lcov-report/src/automations/triggers.ts.html +52 -37
  184. package/coverage/lcov-report/src/automations/utils.ts.html +52 -52
  185. package/coverage/lcov-report/src/constants/index.html +1 -1
  186. package/coverage/lcov-report/src/constants/index.ts.html +2 -2
  187. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  188. package/coverage/lcov-report/src/constants/screens.ts.html +3 -3
  189. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +22 -22
  190. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  191. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  192. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  193. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  194. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  195. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  196. package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
  197. package/coverage/lcov-report/src/db/index.html +1 -1
  198. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  199. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +18 -18
  200. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  201. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  202. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +27 -27
  203. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +13 -13
  204. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  205. package/coverage/lcov-report/src/db/utils.ts.html +40 -40
  206. package/coverage/lcov-report/src/definitions/automations.ts.html +6 -3
  207. package/coverage/lcov-report/src/definitions/index.html +5 -20
  208. package/coverage/lcov-report/src/environment.ts.html +10 -10
  209. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +8 -8
  210. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  211. package/coverage/lcov-report/src/events/index.html +1 -1
  212. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  213. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  214. package/coverage/lcov-report/src/index.html +13 -13
  215. package/coverage/lcov-report/src/index.ts.html +5 -5
  216. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  217. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/base/index.html +11 -11
  219. package/coverage/lcov-report/src/integrations/base/query.ts.html +14 -8
  220. package/coverage/lcov-report/src/integrations/base/sql.ts.html +12 -12
  221. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  222. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  223. package/coverage/lcov-report/src/integrations/couchdb.ts.html +110 -32
  224. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +9 -9
  225. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +26 -14
  226. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  227. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  228. package/coverage/lcov-report/src/integrations/index.html +47 -47
  229. package/coverage/lcov-report/src/integrations/index.ts.html +49 -49
  230. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  231. package/coverage/lcov-report/src/integrations/mongodb.ts.html +417 -285
  232. package/coverage/lcov-report/src/integrations/mysql.ts.html +11 -11
  233. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  234. package/coverage/lcov-report/src/integrations/postgres.ts.html +10 -10
  235. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  236. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +15 -150
  237. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  238. package/coverage/lcov-report/src/integrations/rest.ts.html +36 -45
  239. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  240. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  241. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  242. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  243. package/coverage/lcov-report/src/integrations/utils.ts.html +18 -18
  244. package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
  245. package/coverage/lcov-report/src/middleware/authorized.ts.html +27 -27
  246. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  247. package/coverage/lcov-report/src/middleware/currentapp.ts.html +45 -42
  248. package/coverage/lcov-report/src/middleware/index.html +1 -1
  249. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  250. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  251. package/coverage/lcov-report/src/middleware/resourceId.ts.html +21 -21
  252. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  253. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  254. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  264. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  269. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  271. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  272. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  273. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  274. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  275. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  280. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  281. package/coverage/lcov-report/src/migrations/index.html +1 -1
  282. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  283. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  284. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  285. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  288. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
  289. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  290. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  292. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +3 -3
  293. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  294. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  295. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
  296. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  298. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  299. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  300. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  302. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +100 -0
  304. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  305. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  306. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  307. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  308. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  309. package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
  310. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +27 -18
  311. package/coverage/lcov-report/src/sdk/index.html +5 -5
  312. package/coverage/lcov-report/src/sdk/index.ts.html +23 -11
  313. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  314. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  315. package/coverage/lcov-report/src/sdk/users/utils.ts.html +28 -28
  316. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  317. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  318. package/coverage/lcov-report/src/startup.ts.html +34 -34
  319. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +134 -125
  320. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  321. package/coverage/lcov-report/src/tests/utilities/index.html +21 -21
  322. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  323. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +213 -24
  324. package/coverage/lcov-report/src/threads/automation.ts.html +216 -186
  325. package/coverage/lcov-report/src/threads/index.html +30 -30
  326. package/coverage/lcov-report/src/threads/index.ts.html +24 -24
  327. package/coverage/lcov-report/src/threads/query.ts.html +68 -29
  328. package/coverage/lcov-report/src/threads/utils.ts.html +9 -9
  329. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
  330. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  331. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +9 -9
  332. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +27 -21
  334. package/coverage/lcov-report/src/utilities/fileSystem/index.html +21 -21
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  336. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +5 -8
  337. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +3 -3
  339. package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
  340. package/coverage/lcov-report/src/utilities/index.html +39 -39
  341. package/coverage/lcov-report/src/utilities/index.ts.html +12 -12
  342. package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
  343. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  344. package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
  345. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +50 -50
  347. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  348. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +14 -14
  349. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
  350. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  351. package/coverage/lcov-report/src/utilities/security.ts.html +4 -4
  352. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  353. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +4 -4
  354. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  355. package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
  356. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +38 -11
  357. package/coverage/lcov-report/src/watch.ts.html +7 -7
  358. package/coverage/lcov-report/src/websocket.ts.html +3 -3
  359. package/coverage/lcov.info +7892 -7532
  360. package/dist/api/controllers/application.js +73 -74
  361. package/dist/api/controllers/cloud.js +1 -1
  362. package/dist/api/controllers/datasource.js +24 -15
  363. package/dist/api/controllers/query/index.js +18 -11
  364. package/dist/api/controllers/row/ExternalRequest.js +12 -3
  365. package/dist/api/controllers/row/external.js +20 -13
  366. package/dist/api/controllers/row/internal.js +40 -15
  367. package/dist/api/controllers/row/utils.js +35 -3
  368. package/dist/api/controllers/static/index.js +38 -38
  369. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  370. package/dist/api/controllers/table/external.js +16 -35
  371. package/dist/api/controllers/table/index.js +44 -15
  372. package/dist/api/controllers/table/internal.js +4 -4
  373. package/dist/api/controllers/table/utils.js +9 -9
  374. package/dist/api/controllers/user.js +14 -6
  375. package/dist/api/controllers/view/exporters.js +22 -6
  376. package/dist/api/controllers/view/index.js +20 -56
  377. package/dist/api/controllers/webhook.js +45 -43
  378. package/dist/api/routes/index.js +2 -0
  379. package/dist/api/routes/row.js +2 -2
  380. package/dist/api/routes/table.js +6 -37
  381. package/dist/api/routes/utils/validators.js +1 -1
  382. package/dist/app.js +1 -0
  383. package/dist/automations/triggers.js +1 -0
  384. package/dist/definitions/datasource.js +0 -6
  385. package/dist/index.js +2 -2
  386. package/dist/integrations/base/query.js +7 -2
  387. package/dist/integrations/base/sqlTable.js +14 -14
  388. package/dist/integrations/couchdb.js +34 -8
  389. package/dist/integrations/dynamodb.js +8 -5
  390. package/dist/integrations/elasticsearch.js +7 -3
  391. package/dist/integrations/index.js +5 -5
  392. package/dist/integrations/mongodb.js +311 -271
  393. package/dist/integrations/mysql.js +2 -2
  394. package/dist/integrations/queries/sql.js +73 -100
  395. package/dist/integrations/rest.js +16 -18
  396. package/dist/middleware/currentapp.js +4 -2
  397. package/dist/package.json +7 -7
  398. package/dist/sdk/app/datasources/datasources.js +147 -0
  399. package/dist/sdk/app/datasources/index.js +27 -0
  400. package/dist/sdk/app/queries/index.js +27 -0
  401. package/dist/sdk/app/queries/queries.js +60 -0
  402. package/dist/sdk/app/tables/index.js +6 -2
  403. package/dist/sdk/index.js +4 -0
  404. package/dist/sdk/utils/index.js +29 -0
  405. package/dist/threads/automation.js +18 -7
  406. package/dist/threads/query.js +27 -13
  407. package/dist/tsconfig.build.tsbuildinfo +1 -1
  408. package/dist/utilities/fileSystem/filesystem.js +36 -34
  409. package/dist/utilities/fileSystem/plugin.js +17 -14
  410. package/dist/utilities/fileSystem/template.js +7 -4
  411. package/dist/utilities/schema.js +108 -0
  412. package/dist/utilities/workerRequests.js +2 -0
  413. package/package.json +8 -8
  414. package/scripts/dev/manage.js +3 -2
  415. package/src/api/controllers/application.ts +81 -74
  416. package/src/api/controllers/cloud.ts +1 -1
  417. package/src/api/controllers/datasource.ts +33 -25
  418. package/src/api/controllers/query/index.ts +47 -39
  419. package/src/api/controllers/row/ExternalRequest.ts +8 -2
  420. package/src/api/controllers/row/external.ts +24 -14
  421. package/src/api/controllers/row/internal.ts +42 -18
  422. package/src/api/controllers/row/utils.ts +40 -2
  423. package/src/api/controllers/static/index.ts +17 -18
  424. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  425. package/src/api/controllers/table/external.ts +18 -16
  426. package/src/api/controllers/table/index.ts +46 -17
  427. package/src/api/controllers/table/internal.ts +4 -4
  428. package/src/api/controllers/table/utils.ts +12 -13
  429. package/src/api/controllers/user.ts +21 -13
  430. package/src/api/controllers/view/exporters.ts +20 -5
  431. package/src/api/controllers/view/index.ts +22 -35
  432. package/src/api/controllers/webhook.ts +48 -46
  433. package/src/api/routes/index.ts +2 -0
  434. package/src/api/routes/row.ts +1 -1
  435. package/src/api/routes/table.ts +15 -38
  436. package/src/api/routes/tests/datasource.spec.ts +35 -1
  437. package/src/api/routes/tests/misc.spec.js +4 -10
  438. package/src/api/routes/tests/table.spec.js +8 -30
  439. package/src/api/routes/tests/user.spec.js +20 -1
  440. package/src/api/routes/utils/validators.ts +1 -1
  441. package/src/app.ts +3 -1
  442. package/src/automations/tests/loop.spec.ts +45 -0
  443. package/src/automations/triggers.ts +6 -1
  444. package/src/definitions/automations.ts +1 -0
  445. package/src/definitions/datasource.ts +0 -41
  446. package/src/index.ts +1 -1
  447. package/src/integrations/base/query.ts +3 -1
  448. package/src/integrations/base/sqlTable.ts +1 -1
  449. package/src/integrations/couchdb.ts +40 -14
  450. package/src/integrations/dynamodb.ts +3 -3
  451. package/src/integrations/elasticsearch.ts +8 -4
  452. package/src/integrations/index.ts +4 -4
  453. package/src/integrations/mongodb.ts +315 -271
  454. package/src/integrations/mysql.ts +1 -1
  455. package/src/integrations/queries/sql.ts +5 -50
  456. package/src/integrations/rest.ts +16 -19
  457. package/src/integrations/tests/couchdb.spec.ts +33 -21
  458. package/src/integrations/tests/rest.spec.ts +4 -2
  459. package/src/middleware/currentapp.ts +3 -2
  460. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  461. package/src/sdk/app/datasources/datasources.ts +136 -0
  462. package/src/sdk/app/datasources/index.ts +5 -0
  463. package/src/sdk/app/queries/index.ts +5 -0
  464. package/src/sdk/app/queries/queries.ts +50 -0
  465. package/src/sdk/app/tables/index.ts +6 -3
  466. package/src/sdk/index.ts +4 -0
  467. package/src/sdk/utils/index.ts +16 -0
  468. package/src/tests/utilities/TestConfiguration.ts +15 -12
  469. package/src/tests/utilities/structures.ts +65 -2
  470. package/src/threads/automation.ts +18 -8
  471. package/src/threads/definitions.ts +3 -0
  472. package/src/threads/query.ts +28 -15
  473. package/src/utilities/fileSystem/filesystem.ts +6 -4
  474. package/src/utilities/fileSystem/plugin.ts +3 -4
  475. package/src/utilities/fileSystem/template.ts +2 -2
  476. package/src/utilities/schema.ts +141 -0
  477. package/src/utilities/workerRequests.ts +10 -1
  478. package/tsconfig.json +2 -1
  479. package/builder/assets/index.e386f2c1.js +0 -1023
  480. package/builder/assets/index.fa480d5b.css +0 -6
  481. package/dist/utilities/csvParser.js +0 -152
  482. package/src/utilities/csvParser.ts +0 -161
  483. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  484. 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">63.93% </span>
26
+ <span class="strong">65% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>39/61</span>
28
+ <span class='fraction'>52/80</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">35.48% </span>
33
+ <span class="strong">36.11% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>11/31</span>
35
+ <span class='fraction'>13/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">80% </span>
40
+ <span class="strong">68.75% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>8/10</span>
42
+ <span class='fraction'>11/16</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">62.71% </span>
47
+ <span class="strong">64.1% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>37/59</span>
49
+ <span class='fraction'>50/78</span>
50
50
  </div>
51
51
 
52
52
 
@@ -182,18 +182,58 @@
182
182
  <a name='L117'></a><a href='#L117'>117</a>
183
183
  <a name='L118'></a><a href='#L118'>118</a>
184
184
  <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">56x</span>
186
- <span class="cline-any cline-yes">56x</span>
187
- <span class="cline-any cline-yes">56x</span>
188
- <span class="cline-any cline-yes">56x</span>
189
- <span class="cline-any cline-yes">56x</span>
190
- <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-yes">73x</span>
192
- <span class="cline-any cline-yes">56x</span>
193
- <span class="cline-any cline-yes">56x</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-neutral">&nbsp;</span>
196
- <span class="cline-any cline-yes">56x</span>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">57x</span>
224
+ <span class="cline-any cline-yes">57x</span>
225
+ <span class="cline-any cline-yes">57x</span>
226
+ <span class="cline-any cline-yes">57x</span>
227
+ <span class="cline-any cline-yes">57x</span>
228
+ <span class="cline-any cline-neutral">&nbsp;</span>
229
+ <span class="cline-any cline-yes">75x</span>
230
+ <span class="cline-any cline-yes">57x</span>
231
+ <span class="cline-any cline-yes">57x</span>
232
+ <span class="cline-any cline-yes">57x</span>
233
+ <span class="cline-any cline-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-yes">57x</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-yes">57x</span>
197
237
  <span class="cline-any cline-neutral">&nbsp;</span>
198
238
  <span class="cline-any cline-yes">2x</span>
199
239
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -207,7 +247,6 @@
207
247
  <span class="cline-any cline-yes">1x</span>
208
248
  <span class="cline-any cline-yes">1x</span>
209
249
  <span class="cline-any cline-yes">1x</span>
210
- <span class="cline-any cline-yes">1x</span>
211
250
  <span class="cline-any cline-neutral">&nbsp;</span>
212
251
  <span class="cline-any cline-neutral">&nbsp;</span>
213
252
  <span class="cline-any cline-yes">26x</span>
@@ -229,7 +268,7 @@
229
268
  <span class="cline-any cline-yes">23x</span>
230
269
  <span class="cline-any cline-neutral">&nbsp;</span>
231
270
  <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-yes">85x</span>
271
+ <span class="cline-any cline-yes">87x</span>
233
272
  <span class="cline-any cline-neutral">&nbsp;</span>
234
273
  <span class="cline-any cline-neutral">&nbsp;</span>
235
274
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -239,28 +278,28 @@
239
278
  <span class="cline-any cline-neutral">&nbsp;</span>
240
279
  <span class="cline-any cline-neutral">&nbsp;</span>
241
280
  <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">85x</span>
281
+ <span class="cline-any cline-yes">87x</span>
243
282
  <span class="cline-any cline-yes">2x</span>
244
283
  <span class="cline-any cline-yes">2x</span>
245
284
  <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-yes">83x</span>
247
- <span class="cline-any cline-neutral">&nbsp;</span>
248
285
  <span class="cline-any cline-yes">85x</span>
249
- <span class="cline-any cline-yes">85x</span>
250
- <span class="cline-any cline-yes">228x</span>
251
- <span class="cline-any cline-yes">228x</span>
252
286
  <span class="cline-any cline-neutral">&nbsp;</span>
253
- <span class="cline-any cline-yes">228x</span>
287
+ <span class="cline-any cline-yes">87x</span>
288
+ <span class="cline-any cline-yes">87x</span>
289
+ <span class="cline-any cline-yes">232x</span>
290
+ <span class="cline-any cline-yes">232x</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-yes">232x</span>
254
293
  <span class="cline-any cline-no">&nbsp;</span>
255
294
  <span class="cline-any cline-neutral">&nbsp;</span>
256
295
  <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-yes">228x</span>
296
+ <span class="cline-any cline-yes">232x</span>
258
297
  <span class="cline-any cline-no">&nbsp;</span>
259
298
  <span class="cline-any cline-neutral">&nbsp;</span>
260
299
  <span class="cline-any cline-neutral">&nbsp;</span>
261
300
  <span class="cline-any cline-neutral">&nbsp;</span>
262
301
  <span class="cline-any cline-neutral">&nbsp;</span>
263
- <span class="cline-any cline-yes">228x</span>
302
+ <span class="cline-any cline-yes">232x</span>
264
303
  <span class="cline-any cline-no">&nbsp;</span>
265
304
  <span class="cline-any cline-no">&nbsp;</span>
266
305
  <span class="cline-any cline-no">&nbsp;</span>
@@ -277,7 +316,7 @@
277
316
  <span class="cline-any cline-neutral">&nbsp;</span>
278
317
  <span class="cline-any cline-no">&nbsp;</span>
279
318
  <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-yes">228x</span>
319
+ <span class="cline-any cline-yes">232x</span>
281
320
  <span class="cline-any cline-neutral">&nbsp;</span>
282
321
  <span class="cline-any cline-neutral">&nbsp;</span>
283
322
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -295,11 +334,48 @@
295
334
  <span class="cline-any cline-no">&nbsp;</span>
296
335
  <span class="cline-any cline-neutral">&nbsp;</span>
297
336
  <span class="cline-any cline-neutral">&nbsp;</span>
298
- <span class="cline-any cline-yes">228x</span>
337
+ <span class="cline-any cline-yes">232x</span>
299
338
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-yes">228x</span>
339
+ <span class="cline-any cline-yes">232x</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-yes">87x</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-yes">116x</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-yes">6x</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-yes">6x</span>
353
+ <span class="cline-any cline-yes">12x</span>
354
+ <span class="cline-any cline-no">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-yes">6x</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-no">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
301
361
  <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-yes">85x</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-yes">6x</span>
365
+ <span class="cline-any cline-yes">2x</span>
366
+ <span class="cline-any cline-yes">2x</span>
367
+ <span class="cline-any cline-yes">4x</span>
368
+ <span class="cline-any cline-no">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-yes">4x</span>
371
+ <span class="cline-any cline-yes">4x</span>
372
+ <span class="cline-any cline-no">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-yes">6x</span>
303
379
  <span class="cline-any cline-neutral">&nbsp;</span>
304
380
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { InternalTables } from "../../../db/utils"
305
381
  import * as userController from "../user"
@@ -310,7 +386,9 @@ import { BBContext, Row, Table } from "@budibase/types"
310
386
  export { removeKeyNumbering } from "../../../integrations/base/utils"
311
387
  const validateJs = require("validate.js")
312
388
  const { cloneDeep } = require("lodash/fp")
389
+ import { Format } from "../view/exporters"
313
390
  import { Ctx } from "@budibase/types"
391
+ import sdk from "../../../sdk"
314
392
  &nbsp;
315
393
  validateJs.extend(validateJs.validators.datetime, {
316
394
  parse: function (value: string) {
@@ -324,8 +402,7 @@ validateJs.extend(validateJs.validators.datetime, {
324
402
  &nbsp;
325
403
  export async function getDatasourceAndQuery(json: any) {
326
404
  const datasourceId = json.endpoint.datasourceId
327
- const db = context.getAppDB()
328
- const datasource = await db.get(datasourceId)
405
+ const datasource = await sdk.datasources.get(datasourceId)
329
406
  return makeExternalQuery(datasource, json)
330
407
  }
331
408
  &nbsp;
@@ -420,6 +497,43 @@ export async function validate({
420
497
  }
421
498
  return { valid: Object.keys(errors).length === 0, errors }
422
499
  }
500
+ &nbsp;
501
+ export function cleanExportRows(
502
+ rows: any[],
503
+ schema: any,
504
+ format: string,
505
+ columns: string[]
506
+ ) {
507
+ let cleanRows = [...rows]
508
+ &nbsp;
509
+ const relationships = Object.entries(schema)
510
+ .filter((entry: any[]) =&gt; entry[1].type === FieldTypes.LINK)
511
+ .map(<span class="fstat-no" title="function not covered" >entry =&gt; <span class="cstat-no" title="statement not covered" >e</span>ntry[0])</span>
512
+ &nbsp;
513
+ relationships.forEach(<span class="fstat-no" title="function not covered" >column =&gt; {</span>
514
+ <span class="cstat-no" title="statement not covered" > cleanRows.forEach(<span class="fstat-no" title="function not covered" >row =&gt; {</span></span>
515
+ <span class="cstat-no" title="statement not covered" > delete row[column]</span>
516
+ })
517
+ <span class="cstat-no" title="statement not covered" > delete schema[column]</span>
518
+ })
519
+ &nbsp;
520
+ // Intended to avoid 'undefined' in export
521
+ if (format === Format.CSV) {
522
+ const schemaKeys = Object.keys(schema)
523
+ for (let key of schemaKeys) {
524
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (columns?.length &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >columns.indexOf(key) &gt; 0) {</span>
525
+ <span class="cstat-no" title="statement not covered" > continue</span>
526
+ }
527
+ for (let row of cleanRows) {
528
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (row[key] == null) {
529
+ <span class="cstat-no" title="statement not covered" > row[key] = ""</span>
530
+ }
531
+ }
532
+ }
533
+ }
534
+ &nbsp;
535
+ return cleanRows
536
+ }
423
537
  &nbsp;</pre></td></tr></table></pre>
424
538
 
425
539
  <div class='push'></div><!-- for sticky footer -->
@@ -427,7 +541,7 @@ export async function validate({
427
541
  <div class='footer quiet pad2 space-top1 center small'>
428
542
  Code coverage generated by
429
543
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
430
- at Wed Jan 11 2023 10:34:19 GMT+0000 (Coordinated Universal Time)
544
+ at Fri Feb 03 2023 13:37:27 GMT+0000 (Coordinated Universal Time)
431
545
  </div>
432
546
  <script src="../../../../prettify.js"></script>
433
547
  <script>
@@ -189,18 +189,18 @@
189
189
  <a name='L124'></a><a href='#L124'>124</a>
190
190
  <a name='L125'></a><a href='#L125'>125</a>
191
191
  <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">54x</span>
192
+ <a name='L127'></a><a href='#L127'>127</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
193
193
  <span class="cline-any cline-neutral">&nbsp;</span>
194
194
  <span class="cline-any cline-neutral">&nbsp;</span>
195
195
  <span class="cline-any cline-neutral">&nbsp;</span>
196
196
  <span class="cline-any cline-neutral">&nbsp;</span>
197
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-yes">54x</span>
200
- <span class="cline-any cline-yes">54x</span>
199
+ <span class="cline-any cline-yes">55x</span>
200
+ <span class="cline-any cline-yes">55x</span>
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
202
  <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-yes">54x</span>
203
+ <span class="cline-any cline-yes">55x</span>
204
204
  <span class="cline-any cline-yes">1x</span>
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
206
  <span class="cline-any cline-yes">1x</span>
@@ -221,7 +221,7 @@
221
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
222
  <span class="cline-any cline-neutral">&nbsp;</span>
223
223
  <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-yes">81x</span>
224
+ <span class="cline-any cline-yes">82x</span>
225
225
  <span class="cline-any cline-yes">30x</span>
226
226
  <span class="cline-any cline-yes">30x</span>
227
227
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,7 +287,7 @@
287
287
  <span class="cline-any cline-neutral">&nbsp;</span>
288
288
  <span class="cline-any cline-neutral">&nbsp;</span>
289
289
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">54x</span>
290
+ <span class="cline-any cline-yes">55x</span>
291
291
  <span class="cline-any cline-yes">1x</span>
292
292
  <span class="cline-any cline-yes">1x</span>
293
293
  <span class="cline-any cline-yes">1x</span>
@@ -448,7 +448,7 @@ function findPlugins(component: ScreenProps, foundPlugins: string[]) {
448
448
  <div class='footer quiet pad2 space-top1 center small'>
449
449
  Code coverage generated by
450
450
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
451
- at Wed Jan 11 2023 10:34:19 GMT+0000 (Coordinated Universal Time)
451
+ at Fri Feb 03 2023 13:37:27 GMT+0000 (Coordinated Universal Time)
452
452
  </div>
453
453
  <script src="../../../prettify.js"></script>
454
454
  <script>
@@ -75,7 +75,7 @@
75
75
  <a name='L10'></a><a href='#L10'>10</a>
76
76
  <a name='L11'></a><a href='#L11'>11</a>
77
77
  <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
78
+ <a name='L13'></a><a href='#L13'>13</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">56x</span>
79
79
  <span class="cline-any cline-neutral">&nbsp;</span>
80
80
  <span class="cline-any cline-neutral">&nbsp;</span>
81
81
  <span class="cline-any cline-yes">2x</span>
@@ -106,7 +106,7 @@ export async function <span class="cstat-no" title="statement not covered" ><spa
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
109
- at Wed Jan 11 2023 10:34:19 GMT+0000 (Coordinated Universal Time)
109
+ at Fri Feb 03 2023 13:37:27 GMT+0000 (Coordinated Universal Time)
110
110
  </div>
111
111
  <script src="../../../prettify.js"></script>
112
112
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Wed Jan 11 2023 10:34:19 GMT+0000 (Coordinated Universal Time)
104
+ at Fri Feb 03 2023 13:37:27 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../../../prettify.js"></script>
107
107
  <script>
@@ -261,24 +261,24 @@
261
261
  <a name='L196'></a><a href='#L196'>196</a>
262
262
  <a name='L197'></a><a href='#L197'>197</a>
263
263
  <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">54x</span>
264
+ <a name='L199'></a><a href='#L199'>199</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
266
265
  <span class="cline-any cline-neutral">&nbsp;</span>
267
- <span class="cline-any cline-yes">54x</span>
268
- <span class="cline-any cline-yes">54x</span>
269
- <span class="cline-any cline-yes">54x</span>
270
- <span class="cline-any cline-yes">54x</span>
271
- <span class="cline-any cline-yes">54x</span>
266
+ <span class="cline-any cline-yes">55x</span>
267
+ <span class="cline-any cline-yes">55x</span>
268
+ <span class="cline-any cline-yes">55x</span>
269
+ <span class="cline-any cline-yes">55x</span>
272
270
  <span class="cline-any cline-neutral">&nbsp;</span>
273
271
  <span class="cline-any cline-neutral">&nbsp;</span>
274
272
  <span class="cline-any cline-neutral">&nbsp;</span>
275
273
  <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-yes">54x</span>
277
- <span class="cline-any cline-yes">54x</span>
278
- <span class="cline-any cline-yes">54x</span>
279
- <span class="cline-any cline-yes">54x</span>
280
- <span class="cline-any cline-yes">54x</span>
281
- <span class="cline-any cline-yes">54x</span>
274
+ <span class="cline-any cline-yes">55x</span>
275
+ <span class="cline-any cline-yes">55x</span>
276
+ <span class="cline-any cline-yes">55x</span>
277
+ <span class="cline-any cline-yes">55x</span>
278
+ <span class="cline-any cline-yes">55x</span>
279
+ <span class="cline-any cline-yes">55x</span>
280
+ <span class="cline-any cline-yes">55x</span>
281
+ <span class="cline-any cline-yes">55x</span>
282
282
  <span class="cline-any cline-neutral">&nbsp;</span>
283
283
  <span class="cline-any cline-neutral">&nbsp;</span>
284
284
  <span class="cline-any cline-no">&nbsp;</span>
@@ -299,7 +299,7 @@
299
299
  <span class="cline-any cline-neutral">&nbsp;</span>
300
300
  <span class="cline-any cline-neutral">&nbsp;</span>
301
301
  <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-yes">54x</span>
302
+ <span class="cline-any cline-yes">55x</span>
303
303
  <span class="cline-any cline-no">&nbsp;</span>
304
304
  <span class="cline-any cline-neutral">&nbsp;</span>
305
305
  <span class="cline-any cline-no">&nbsp;</span>
@@ -327,12 +327,12 @@
327
327
  <span class="cline-any cline-neutral">&nbsp;</span>
328
328
  <span class="cline-any cline-neutral">&nbsp;</span>
329
329
  <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-yes">54x</span>
330
+ <span class="cline-any cline-yes">55x</span>
331
331
  <span class="cline-any cline-yes">1x</span>
332
332
  <span class="cline-any cline-yes">1x</span>
333
333
  <span class="cline-any cline-neutral">&nbsp;</span>
334
334
  <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-yes">108x</span>
335
+ <span class="cline-any cline-yes">110x</span>
336
336
  <span class="cline-any cline-neutral">&nbsp;</span>
337
337
  <span class="cline-any cline-no">&nbsp;</span>
338
338
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -353,14 +353,14 @@
353
353
  <span class="cline-any cline-no">&nbsp;</span>
354
354
  <span class="cline-any cline-neutral">&nbsp;</span>
355
355
  <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-yes">108x</span>
356
+ <span class="cline-any cline-yes">110x</span>
357
357
  <span class="cline-any cline-no">&nbsp;</span>
358
358
  <span class="cline-any cline-neutral">&nbsp;</span>
359
359
  <span class="cline-any cline-neutral">&nbsp;</span>
360
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
361
  <span class="cline-any cline-neutral">&nbsp;</span>
362
362
  <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-yes">108x</span>
363
+ <span class="cline-any cline-yes">110x</span>
364
364
  <span class="cline-any cline-yes">3x</span>
365
365
  <span class="cline-any cline-yes">3x</span>
366
366
  <span class="cline-any cline-yes">3x</span>
@@ -391,7 +391,7 @@
391
391
  <span class="cline-any cline-neutral">&nbsp;</span>
392
392
  <span class="cline-any cline-neutral">&nbsp;</span>
393
393
  <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-yes">54x</span>
394
+ <span class="cline-any cline-yes">55x</span>
395
395
  <span class="cline-any cline-yes">1x</span>
396
396
  <span class="cline-any cline-yes">1x</span>
397
397
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -407,15 +407,13 @@
407
407
  <span class="cline-any cline-neutral">&nbsp;</span>
408
408
  <span class="cline-any cline-neutral">&nbsp;</span>
409
409
  <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-yes">54x</span>
410
+ <span class="cline-any cline-yes">55x</span>
411
411
  <span class="cline-any cline-no">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
413
413
  <span class="cline-any cline-neutral">&nbsp;</span>
414
414
  <span class="cline-any cline-neutral">&nbsp;</span>
415
415
  <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-yes">54x</span>
417
- <span class="cline-any cline-yes">4x</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-yes">55x</span>
419
417
  <span class="cline-any cline-neutral">&nbsp;</span>
420
418
  <span class="cline-any cline-neutral">&nbsp;</span>
421
419
  <span class="cline-any cline-yes">4x</span>
@@ -463,21 +461,22 @@
463
461
  <span class="cline-any cline-neutral">&nbsp;</span>
464
462
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">require("svelte/register")
465
463
  &nbsp;
466
- const send = require("koa-send")
467
- const { resolve, join } = require("../../../utilities/centralPath")
464
+ import { resolve, join } from "../../../utilities/centralPath"
468
465
  const uuid = require("uuid")
469
466
  import { ObjectStoreBuckets } from "../../../constants"
470
- const { processString } = require("@budibase/string-templates")
471
- const {
467
+ import { processString } from "@budibase/string-templates"
468
+ import {
472
469
  loadHandlebarsFile,
473
470
  NODE_MODULES_PATH,
474
471
  TOP_LEVEL_PATH,
475
- } = require("../../../utilities/fileSystem")
472
+ } from "../../../utilities/fileSystem"
476
473
  import env from "../../../environment"
477
- const { DocumentType } = require("../../../db/utils")
478
- const { context, objectStore, utils } = require("@budibase/backend-core")
479
- const AWS = require("aws-sdk")
480
- const fs = require("fs")
474
+ import { DocumentType } from "../../../db/utils"
475
+ import { context, objectStore, utils } from "@budibase/backend-core"
476
+ import AWS from "aws-sdk"
477
+ import fs from "fs"
478
+ import sdk from "../../../sdk"
479
+ const send = require("koa-send")
481
480
  &nbsp;
482
481
  async function <span class="fstat-no" title="function not covered" >prepareUpload({</span> s3Key, bucket, metadata, file }: any) {
483
482
  const response = <span class="cstat-no" title="statement not covered" >await objectStore.upload({</span>
@@ -573,7 +572,7 @@ export const serveApp = async function (ctx: any) {
573
572
  title: appInfo.name,
574
573
  production: env.isProd(),
575
574
  appId,
576
- clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
575
+ clientLibPath: objectStore.clientLibraryUrl(appId!, appInfo.version),
577
576
  usedPlugins: plugins,
578
577
  })
579
578
  &nbsp;
@@ -598,7 +597,7 @@ export const serveBuilderPreview = async function (ctx: any) {
598
597
  let appId = <span class="cstat-no" title="statement not covered" >context.getAppId()</span>
599
598
  const previewHbs = <span class="cstat-no" title="statement not covered" >loadHandlebarsFile(`${__dirname}/templates/preview.hbs`)</span>
600
599
  <span class="cstat-no" title="statement not covered" > ctx.body = await processString(previewHbs, {</span>
601
- clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
600
+ clientLibPath: objectStore.clientLibraryUrl(appId!, appInfo.version),
602
601
  })
603
602
  } else {
604
603
  // just return the app info for jest to assert on
@@ -613,13 +612,11 @@ export const serveClientLibrary = <span class="fstat-no" title="function not cov
613
612
  }
614
613
  &nbsp;
615
614
  export const getSignedUploadURL = async function (ctx: any) {
616
- const database = context.getAppDB()
617
- &nbsp;
618
615
  // Ensure datasource is valid
619
616
  let datasource
620
617
  try {
621
618
  const { datasourceId } = ctx.params
622
- datasource = await database.get(datasourceId)
619
+ datasource = await sdk.datasources.get(datasourceId, { enriched: true })
623
620
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!datasource) {
624
621
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "The specified datasource could not be found")</span>
625
622
  }
@@ -635,8 +632,8 @@ export const getSignedUploadURL = async function (ctx: any) {
635
632
  // Determine type of datasource and generate signed URL
636
633
  let signedUrl
637
634
  let publicUrl
638
- const awsRegion = datasource?.config?.region || "eu-west-1"
639
- if (datasource.source === "S3") {
635
+ const awsRegion = (datasource?.config?.region || "eu-west-1") as string
636
+ if (datasource?.source === "S3") {
640
637
  const { bucket, key } = ctx.request.body || <span class="branch-1 cbranch-no" title="branch not covered" >{}</span>
641
638
  if (!bucket || !key) {
642
639
  ctx.throw(400, "bucket and key values are required")
@@ -645,8 +642,8 @@ export const getSignedUploadURL = async function (ctx: any) {
645
642
  try {
646
643
  const s3 = new AWS.S3({
647
644
  region: awsRegion,
648
- accessKeyId: datasource?.config?.accessKeyId,
649
- secretAccessKey: datasource?.config?.secretAccessKey,
645
+ accessKeyId: datasource?.config?.accessKeyId as string,
646
+ secretAccessKey: datasource?.config?.secretAccessKey as string,
650
647
  apiVersion: "2006-03-01",
651
648
  signatureVersion: "v4",
652
649
  })
@@ -667,7 +664,7 @@ export const getSignedUploadURL = async function (ctx: any) {
667
664
  <div class='footer quiet pad2 space-top1 center small'>
668
665
  Code coverage generated by
669
666
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
670
- at Wed Jan 11 2023 10:34:19 GMT+0000 (Coordinated Universal Time)
667
+ at Fri Feb 03 2023 13:37:27 GMT+0000 (Coordinated Universal Time)
671
668
  </div>
672
669
  <script src="../../../../prettify.js"></script>
673
670
  <script>