@budibase/server 2.2.12-alpha.1 → 2.2.12

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 (460) hide show
  1. package/__mocks__/aws-sdk.ts +0 -19
  2. package/__mocks__/node-fetch.ts +0 -78
  3. package/builder/assets/{index.fa480d5b.css → index.9cb087df.css} +2 -2
  4. package/builder/assets/{index.5e79c3b5.js → index.c0e1038a.js} +364 -367
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +5018 -5052
  7. package/coverage/coverage-final.json +265 -268
  8. package/coverage/lcov-report/index.html +206 -206
  9. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +7 -7
  10. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  11. package/coverage/lcov-report/src/api/controllers/application.ts.html +183 -258
  12. package/coverage/lcov-report/src/api/controllers/auth.ts.html +11 -11
  13. package/coverage/lcov-report/src/api/controllers/automation.ts.html +51 -51
  14. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  15. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +79 -91
  16. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  17. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +30 -30
  18. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -17
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.html +19 -19
  20. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +195 -141
  21. package/coverage/lcov-report/src/api/controllers/dev.ts.html +18 -18
  22. package/coverage/lcov-report/src/api/controllers/index.html +51 -51
  23. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  24. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  25. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  26. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  27. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  28. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +19 -19
  29. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +63 -63
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
  31. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +135 -150
  32. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +55 -55
  33. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
  34. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
  35. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
  36. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +16 -67
  37. package/coverage/lcov-report/src/api/controllers/public/index.html +15 -15
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  45. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +6 -6
  46. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +10 -10
  47. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +9 -9
  48. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +11 -11
  49. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +6 -6
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +8 -8
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +8 -8
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +8 -8
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +10 -10
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +14 -14
  59. package/coverage/lcov-report/src/api/controllers/query/index.html +19 -19
  60. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +60 -60
  61. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  62. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  63. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  64. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +15 -12
  65. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +20 -20
  66. package/coverage/lcov-report/src/api/controllers/row/index.html +1 -1
  67. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +14 -14
  68. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +52 -55
  69. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +9 -9
  70. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +12 -21
  71. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +14 -17
  72. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  73. package/coverage/lcov-report/src/api/controllers/script.ts.html +18 -18
  74. package/coverage/lcov-report/src/api/controllers/static/index.html +11 -11
  75. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +44 -32
  76. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +10 -10
  77. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +14 -14
  78. package/coverage/lcov-report/src/api/controllers/table/index.html +19 -19
  79. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +14 -14
  80. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +17 -17
  81. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +51 -51
  82. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  83. package/coverage/lcov-report/src/api/controllers/user.ts.html +119 -119
  84. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +4 -4
  85. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +49 -49
  87. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
  88. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +33 -33
  89. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +14 -14
  90. package/coverage/lcov-report/src/api/index.html +1 -1
  91. package/coverage/lcov-report/src/api/index.ts.html +33 -33
  92. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  93. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  94. package/coverage/lcov-report/src/api/routes/application.ts.html +11 -44
  95. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  96. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  97. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  100. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  101. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -8
  102. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  103. package/coverage/lcov-report/src/api/routes/index.html +7 -7
  104. package/coverage/lcov-report/src/api/routes/index.ts.html +37 -40
  105. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  106. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  107. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  108. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  109. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  110. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  111. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +14 -146
  112. package/coverage/lcov-report/src/api/routes/public/index.html +7 -7
  113. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  114. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
  115. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +16 -28
  116. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  117. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  118. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  119. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  121. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  122. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  123. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  125. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  126. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  127. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  128. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  129. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  130. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  131. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  132. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +15 -15
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +24 -24
  136. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  137. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  139. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  140. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  141. package/coverage/lcov-report/src/app.ts.html +32 -32
  142. package/coverage/lcov-report/src/automations/actions.ts.html +25 -25
  143. package/coverage/lcov-report/src/automations/automationUtils.ts.html +19 -91
  144. package/coverage/lcov-report/src/automations/bullboard.ts.html +11 -11
  145. package/coverage/lcov-report/src/automations/index.html +19 -19
  146. package/coverage/lcov-report/src/automations/index.ts.html +13 -13
  147. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  148. package/coverage/lcov-report/src/automations/logging/index.ts.html +11 -11
  149. package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
  150. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  151. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  152. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  153. package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
  154. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
  155. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
  156. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  157. package/coverage/lcov-report/src/automations/steps/index.html +83 -83
  158. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  159. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  160. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +14 -14
  161. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +17 -17
  162. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
  163. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +18 -18
  164. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  165. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  166. package/coverage/lcov-report/src/automations/steps/utils.ts.html +16 -16
  167. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.html +5 -5
  169. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +26 -26
  170. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  171. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  173. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  178. package/coverage/lcov-report/src/automations/triggers.ts.html +21 -21
  179. package/coverage/lcov-report/src/automations/utils.ts.html +56 -56
  180. package/coverage/lcov-report/src/constants/index.html +1 -1
  181. package/coverage/lcov-report/src/constants/index.ts.html +92 -92
  182. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  183. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  184. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +23 -23
  185. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  186. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  187. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  188. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  189. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  190. package/coverage/lcov-report/src/db/dynamoClient.ts.html +16 -16
  191. package/coverage/lcov-report/src/db/inMemoryView.ts.html +5 -5
  192. package/coverage/lcov-report/src/db/index.html +19 -19
  193. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  194. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +8 -8
  195. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  196. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  197. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
  198. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +12 -12
  199. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  200. package/coverage/lcov-report/src/db/utils.ts.html +80 -80
  201. package/coverage/lcov-report/src/definitions/automations.ts.html +4 -4
  202. package/coverage/lcov-report/src/definitions/datasource.ts.html +4 -4
  203. package/coverage/lcov-report/src/definitions/index.html +1 -1
  204. package/coverage/lcov-report/src/environment.ts.html +28 -40
  205. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  206. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  207. package/coverage/lcov-report/src/events/index.html +1 -1
  208. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  209. package/coverage/lcov-report/src/events/utils.ts.html +3 -3
  210. package/coverage/lcov-report/src/index.html +25 -25
  211. package/coverage/lcov-report/src/index.ts.html +1 -1
  212. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  213. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  214. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  215. package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
  216. package/coverage/lcov-report/src/integrations/base/sql.ts.html +14 -14
  217. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  218. package/coverage/lcov-report/src/integrations/base/utils.ts.html +3 -3
  219. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  220. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  221. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  222. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  223. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +12 -12
  224. package/coverage/lcov-report/src/integrations/index.html +5 -5
  225. package/coverage/lcov-report/src/integrations/index.ts.html +47 -35
  226. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  227. package/coverage/lcov-report/src/integrations/mongodb.ts.html +5 -5
  228. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  229. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  230. package/coverage/lcov-report/src/integrations/postgres.ts.html +42 -42
  231. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  232. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +13 -13
  233. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  234. package/coverage/lcov-report/src/integrations/rest.ts.html +16 -16
  235. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  236. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  237. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  238. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  239. package/coverage/lcov-report/src/integrations/utils.ts.html +36 -36
  240. package/coverage/lcov-report/src/middleware/appInfo.ts.html +7 -7
  241. package/coverage/lcov-report/src/middleware/authorized.ts.html +28 -28
  242. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  243. package/coverage/lcov-report/src/middleware/currentapp.ts.html +39 -39
  244. package/coverage/lcov-report/src/middleware/index.html +1 -1
  245. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  246. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  247. package/coverage/lcov-report/src/middleware/resourceId.ts.html +22 -22
  248. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  249. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  250. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +10 -13
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  264. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  265. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  267. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  268. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  270. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  275. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  276. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  277. package/coverage/lcov-report/src/migrations/index.html +1 -1
  278. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  279. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  280. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  281. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  282. package/coverage/lcov-report/src/sdk/app/applications/index.html +15 -15
  283. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  284. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
  285. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  286. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  288. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +6 -6
  289. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  290. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  291. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +53 -41
  292. package/coverage/lcov-report/src/sdk/app/backups/index.html +28 -28
  293. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  294. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
  295. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  296. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  298. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  299. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  300. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
  301. package/coverage/lcov-report/src/sdk/index.html +1 -1
  302. package/coverage/lcov-report/src/sdk/index.ts.html +9 -9
  303. package/coverage/lcov-report/src/sdk/users/index.html +5 -5
  304. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  305. package/coverage/lcov-report/src/sdk/users/utils.ts.html +34 -34
  306. package/coverage/lcov-report/src/startup.ts.html +42 -42
  307. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +125 -182
  308. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  309. package/coverage/lcov-report/src/tests/utilities/index.html +15 -15
  310. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  311. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +30 -30
  312. package/coverage/lcov-report/src/threads/automation.ts.html +103 -34
  313. package/coverage/lcov-report/src/threads/index.html +19 -19
  314. package/coverage/lcov-report/src/threads/index.ts.html +25 -25
  315. package/coverage/lcov-report/src/threads/query.ts.html +71 -71
  316. package/coverage/lcov-report/src/threads/utils.ts.html +18 -18
  317. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  318. package/coverage/lcov-report/src/utilities/centralPath.ts.html +4 -4
  319. package/coverage/lcov-report/src/utilities/csvParser.ts.html +8 -8
  320. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
  321. package/coverage/lcov-report/src/utilities/fileSystem/index.html +19 -79
  322. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1049 -20
  323. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  324. package/coverage/lcov-report/src/utilities/global.ts.html +43 -43
  325. package/coverage/lcov-report/src/utilities/index.html +63 -48
  326. package/coverage/lcov-report/src/utilities/index.ts.html +168 -36
  327. package/coverage/lcov-report/src/utilities/plugins.ts.html +151 -0
  328. package/coverage/lcov-report/src/utilities/redis.ts.html +32 -32
  329. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  330. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  331. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +28 -28
  332. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +33 -60
  333. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  334. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  335. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +32 -32
  336. package/coverage/lcov-report/src/utilities/security.ts.html +6 -6
  337. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  339. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  340. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  341. package/coverage/lcov-report/src/utilities/users.ts.html +6 -6
  342. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +56 -56
  343. package/coverage/lcov-report/src/watch.ts.html +9 -9
  344. package/coverage/lcov-report/src/websocket.ts.html +15 -15
  345. package/coverage/lcov.info +7122 -7189
  346. package/dist/api/controllers/application.js +35 -47
  347. package/dist/api/controllers/cloud.js +2 -6
  348. package/dist/api/controllers/deploy/index.js +60 -43
  349. package/dist/api/controllers/plugin/index.js +6 -6
  350. package/dist/api/controllers/public/applications.js +1 -22
  351. package/dist/api/controllers/row/ExternalRequest.js +1 -0
  352. package/dist/api/controllers/row/internal.js +12 -12
  353. package/dist/api/controllers/row/staticFormula.js +1 -1
  354. package/dist/api/controllers/static/index.js +11 -8
  355. package/dist/api/controllers/view/index.js +2 -2
  356. package/dist/api/routes/application.js +0 -3
  357. package/dist/api/routes/deploy.js +2 -1
  358. package/dist/api/routes/public/applications.js +0 -37
  359. package/dist/api/routes/public/middleware/mapper.js +0 -3
  360. package/dist/api/routes/tests/utilities/TestFunctions.js +167 -0
  361. package/dist/api/routes/tests/utilities/index.js +131 -0
  362. package/dist/automations/automationUtils.js +1 -26
  363. package/dist/automations/tests/utilities/index.js +81 -0
  364. package/dist/environment.js +1 -5
  365. package/dist/integrations/googlesheets.js +1 -1
  366. package/dist/integrations/index.js +2 -1
  367. package/dist/migrations/functions/backfill/global/configs.js +4 -4
  368. package/dist/package.json +6 -8
  369. package/dist/sdk/app/backups/imports.js +6 -2
  370. package/dist/tests/utilities/TestConfiguration.js +562 -0
  371. package/dist/tests/utilities/controllers.js +40 -0
  372. package/dist/tests/utilities/structures.js +168 -0
  373. package/dist/threads/automation.js +28 -4
  374. package/dist/tsconfig.build.tsbuildinfo +1 -1
  375. package/dist/utilities/fileSystem/clientLibrary.js +3 -3
  376. package/dist/utilities/fileSystem/index.js +342 -18
  377. package/dist/utilities/index.js +44 -1
  378. package/dist/utilities/plugins.js +26 -0
  379. package/dist/utilities/rowProcessor/index.js +4 -12
  380. package/package.json +7 -9
  381. package/scripts/dev/manage.js +16 -0
  382. package/specs/openapi.json +0 -84
  383. package/specs/openapi.yaml +0 -53
  384. package/specs/resources/application.js +0 -19
  385. package/src/api/controllers/application.ts +36 -61
  386. package/src/api/controllers/auth.ts +2 -2
  387. package/src/api/controllers/cloud.ts +6 -10
  388. package/src/api/controllers/deploy/Deployment.ts +0 -1
  389. package/src/api/controllers/deploy/index.ts +58 -40
  390. package/src/api/controllers/plugin/index.ts +9 -14
  391. package/src/api/controllers/public/applications.ts +0 -17
  392. package/src/api/controllers/row/ExternalRequest.ts +1 -0
  393. package/src/api/controllers/row/internal.ts +23 -24
  394. package/src/api/controllers/row/staticFormula.ts +2 -5
  395. package/src/api/controllers/row/utils.ts +1 -2
  396. package/src/api/controllers/static/index.ts +10 -6
  397. package/src/api/controllers/view/index.ts +2 -2
  398. package/src/api/routes/application.ts +0 -11
  399. package/src/api/routes/deploy.ts +1 -0
  400. package/src/api/routes/index.ts +3 -4
  401. package/src/api/routes/public/applications.ts +0 -44
  402. package/src/api/routes/public/middleware/mapper.ts +0 -4
  403. package/src/api/routes/tests/__snapshots__/{datasource.spec.ts.snap → datasource.spec.js.snap} +0 -0
  404. package/src/api/routes/tests/{application.spec.ts → application.spec.js} +18 -94
  405. package/src/api/routes/tests/{backup.spec.ts → backup.spec.js} +6 -17
  406. package/src/api/routes/tests/{datasource.spec.ts → datasource.spec.js} +15 -23
  407. package/src/api/routes/tests/deployment.spec.ts +25 -0
  408. package/src/api/routes/tests/permissions.spec.js +1 -1
  409. package/src/api/routes/tests/routing.spec.js +2 -1
  410. package/src/api/routes/tests/row.spec.js +2 -4
  411. package/src/api/routes/tests/static.spec.js +17 -2
  412. package/src/api/routes/tests/table.spec.js +2 -8
  413. package/src/api/routes/tests/user.spec.js +0 -86
  414. package/src/api/routes/tests/utilities/index.ts +2 -2
  415. package/src/api/routes/tests/webhook.spec.js +1 -1
  416. package/src/automations/automationUtils.ts +0 -24
  417. package/src/automations/tests/utilities/index.ts +2 -2
  418. package/src/automations/unitTests/automationUtils.spec.js +17 -0
  419. package/src/definitions/openapi.ts +0 -10
  420. package/src/environment.ts +1 -5
  421. package/src/integrations/googlesheets.ts +1 -1
  422. package/src/integrations/index.ts +5 -1
  423. package/src/migrations/functions/backfill/global/configs.ts +4 -5
  424. package/src/sdk/app/backups/imports.ts +6 -2
  425. package/src/sdk/tests/attachments.spec.ts +4 -1
  426. package/src/tests/jestSetup.ts +1 -4
  427. package/src/tests/utilities/TestConfiguration.ts +4 -23
  428. package/src/threads/automation.ts +27 -4
  429. package/src/utilities/fileSystem/clientLibrary.ts +1 -1
  430. package/src/utilities/fileSystem/index.ts +348 -5
  431. package/src/utilities/index.ts +45 -1
  432. package/src/utilities/plugins.ts +22 -0
  433. package/src/utilities/rowProcessor/index.ts +8 -17
  434. package/tsconfig.build.json +0 -2
  435. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  436. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -595
  437. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -280
  438. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  439. package/dist/utilities/fileSystem/app.js +0 -97
  440. package/dist/utilities/fileSystem/filesystem.js +0 -182
  441. package/dist/utilities/fileSystem/plugin.js +0 -63
  442. package/dist/utilities/fileSystem/template.js +0 -44
  443. package/src/api/routes/tests/cloud.spec.ts +0 -65
  444. package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
  445. package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
  446. package/src/api/routes/tests/data/export-test.tar.gz +0 -0
  447. package/src/api/routes/tests/plugin.spec.ts +0 -179
  448. package/src/automations/tests/bash.spec.js +0 -34
  449. package/src/automations/tests/discord.spec.js +0 -27
  450. package/src/automations/tests/executeQuery.spec.js +0 -49
  451. package/src/automations/tests/executeScript.spec.js +0 -48
  452. package/src/automations/tests/sendSmtpEmail.spec.js +0 -71
  453. package/src/automations/tests/serverLog.spec.js +0 -22
  454. package/src/automations/tests/zapier.spec.js +0 -27
  455. package/src/automations/unitTests/automationUtils.spec.ts +0 -65
  456. package/src/utilities/fileSystem/app.ts +0 -86
  457. package/src/utilities/fileSystem/filesystem.ts +0 -170
  458. package/src/utilities/fileSystem/plugin.ts +0 -65
  459. package/src/utilities/fileSystem/template.ts +0 -36
  460. package/src/utilities/rowProcessor/tests/utils.spec.ts +0 -57
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">84.84% </span>
26
+ <span class="strong">81.25% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>56/66</span>
28
+ <span class='fraction'>65/80</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">57.89% </span>
33
+ <span class="strong">53.84% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>11/19</span>
35
+ <span class='fraction'>14/26</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">92.85% </span>
40
+ <span class="strong">94.11% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>13/14</span>
42
+ <span class='fraction'>16/17</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">84.61% </span>
47
+ <span class="strong">81.01% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>55/65</span>
49
+ <span class='fraction'>64/79</span>
50
50
  </div>
51
51
 
52
52
 
@@ -197,22 +197,67 @@
197
197
  <a name='L132'></a><a href='#L132'>132</a>
198
198
  <a name='L133'></a><a href='#L133'>133</a>
199
199
  <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">59x</span>
201
- <span class="cline-any cline-yes">59x</span>
202
- <span class="cline-any cline-yes">59x</span>
203
- <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-yes">59x</span>
205
- <span class="cline-any cline-yes">59x</span>
206
- <span class="cline-any cline-neutral">&nbsp;</span>
207
- <span class="cline-any cline-yes">59x</span>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">54x</span>
245
+ <span class="cline-any cline-yes">54x</span>
246
+ <span class="cline-any cline-yes">54x</span>
247
+ <span class="cline-any cline-yes">54x</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-yes">54x</span>
250
+ <span class="cline-any cline-yes">54x</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-yes">54x</span>
208
253
  <span class="cline-any cline-yes">3x</span>
209
254
  <span class="cline-any cline-neutral">&nbsp;</span>
210
255
  <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-yes">59x</span>
256
+ <span class="cline-any cline-yes">54x</span>
212
257
  <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-yes">59x</span>
258
+ <span class="cline-any cline-yes">54x</span>
214
259
  <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-yes">59x</span>
260
+ <span class="cline-any cline-yes">54x</span>
216
261
  <span class="cline-any cline-yes">1x</span>
217
262
  <span class="cline-any cline-yes">1x</span>
218
263
  <span class="cline-any cline-yes">1x</span>
@@ -226,11 +271,54 @@
226
271
  <span class="cline-any cline-neutral">&nbsp;</span>
227
272
  <span class="cline-any cline-neutral">&nbsp;</span>
228
273
  <span class="cline-any cline-neutral">&nbsp;</span>
229
- <span class="cline-any cline-yes">59x</span>
230
- <span class="cline-any cline-yes">52x</span>
274
+ <span class="cline-any cline-yes">54x</span>
275
+ <span class="cline-any cline-yes">46x</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-yes">54x</span>
283
+ <span class="cline-any cline-yes">2x</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-yes">2x</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-no">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
291
  <span class="cline-any cline-neutral">&nbsp;</span>
232
292
  <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-yes">59x</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-yes">54x</span>
302
+ <span class="cline-any cline-yes">6x</span>
303
+ <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-no">&nbsp;</span>
309
+ <span class="cline-any cline-no">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-no">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-yes">6x</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-yes">54x</span>
318
+ <span class="cline-any cline-yes">2x</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-yes">54x</span>
234
322
  <span class="cline-any cline-neutral">&nbsp;</span>
235
323
  <span class="cline-any cline-neutral">&nbsp;</span>
236
324
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -259,7 +347,7 @@
259
347
  <span class="cline-any cline-neutral">&nbsp;</span>
260
348
  <span class="cline-any cline-neutral">&nbsp;</span>
261
349
  <span class="cline-any cline-neutral">&nbsp;</span>
262
- <span class="cline-any cline-yes">59x</span>
350
+ <span class="cline-any cline-yes">54x</span>
263
351
  <span class="cline-any cline-neutral">&nbsp;</span>
264
352
  <span class="cline-any cline-neutral">&nbsp;</span>
265
353
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -269,7 +357,7 @@
269
357
  <span class="cline-any cline-neutral">&nbsp;</span>
270
358
  <span class="cline-any cline-neutral">&nbsp;</span>
271
359
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">59x</span>
360
+ <span class="cline-any cline-yes">54x</span>
273
361
  <span class="cline-any cline-yes">4x</span>
274
362
  <span class="cline-any cline-yes">4x</span>
275
363
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -286,7 +374,7 @@
286
374
  <span class="cline-any cline-neutral">&nbsp;</span>
287
375
  <span class="cline-any cline-neutral">&nbsp;</span>
288
376
  <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-yes">59x</span>
377
+ <span class="cline-any cline-yes">54x</span>
290
378
  <span class="cline-any cline-no">&nbsp;</span>
291
379
  <span class="cline-any cline-neutral">&nbsp;</span>
292
380
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -296,16 +384,16 @@
296
384
  <span class="cline-any cline-neutral">&nbsp;</span>
297
385
  <span class="cline-any cline-neutral">&nbsp;</span>
298
386
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">59x</span>
300
- <span class="cline-any cline-yes">2x</span>
387
+ <span class="cline-any cline-yes">54x</span>
388
+ <span class="cline-any cline-yes">1x</span>
301
389
  <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-yes">2x</span>
303
- <span class="cline-any cline-yes">2x</span>
390
+ <span class="cline-any cline-yes">1x</span>
391
+ <span class="cline-any cline-yes">1x</span>
304
392
  <span class="cline-any cline-neutral">&nbsp;</span>
305
393
  <span class="cline-any cline-neutral">&nbsp;</span>
306
394
  <span class="cline-any cline-neutral">&nbsp;</span>
307
395
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">59x</span>
396
+ <span class="cline-any cline-yes">54x</span>
309
397
  <span class="cline-any cline-yes">39x</span>
310
398
  <span class="cline-any cline-yes">39x</span>
311
399
  <span class="cline-any cline-yes">39x</span>
@@ -316,7 +404,7 @@
316
404
  <span class="cline-any cline-yes">39x</span>
317
405
  <span class="cline-any cline-neutral">&nbsp;</span>
318
406
  <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-yes">59x</span>
407
+ <span class="cline-any cline-yes">54x</span>
320
408
  <span class="cline-any cline-yes">1x</span>
321
409
  <span class="cline-any cline-yes">1x</span>
322
410
  <span class="cline-any cline-no">&nbsp;</span>
@@ -324,15 +412,16 @@
324
412
  <span class="cline-any cline-yes">1x</span>
325
413
  <span class="cline-any cline-neutral">&nbsp;</span>
326
414
  <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-yes">59x</span>
328
- <span class="cline-any cline-yes">290x</span>
415
+ <span class="cline-any cline-yes">54x</span>
416
+ <span class="cline-any cline-yes">252x</span>
329
417
  <span class="cline-any cline-no">&nbsp;</span>
330
418
  <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-yes">290x</span>
419
+ <span class="cline-any cline-yes">252x</span>
332
420
  <span class="cline-any cline-neutral">&nbsp;</span>
333
421
  <span class="cline-any cline-neutral">&nbsp;</span>
334
422
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import env from "../environment"
335
- import { context } from "@budibase/backend-core"
423
+ import { OBJ_STORE_DIRECTORY } from "../constants"
424
+ import { objectStore, context } from "@budibase/backend-core"
336
425
  import { generateMetadataID } from "../db/utils"
337
426
  import { Document } from "@budibase/types"
338
427
  import stream from "stream"
@@ -364,6 +453,49 @@ export function checkSlashesInUrl(url: string) {
364
453
  return url.replace(/(https?:\/\/)|(\/)+/g, "$1$2")
365
454
  }
366
455
  &nbsp;
456
+ /**
457
+ * Gets the address of the object store, depending on whether self hosted or in cloud.
458
+ * @return {string} The base URL of the object store (MinIO or S3).
459
+ */
460
+ export function objectStoreUrl() {
461
+ if (env.SELF_HOSTED || <span class="branch-1 cbranch-no" title="branch not covered" >env.MINIO_URL)</span> {
462
+ // can use a relative url for this as all goes through the proxy (this is hosted in minio)
463
+ return OBJ_STORE_DIRECTORY
464
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
465
+ <span class="cstat-no" title="statement not covered" > return env.CDN_URL</span>
466
+ }
467
+ }
468
+ &nbsp;
469
+ /**
470
+ * In production the client library is stored in the object store, however in development
471
+ * we use the symlinked version produced by lerna, located in node modules. We link to this
472
+ * via a specific endpoint (under /api/assets/client).
473
+ * @param {string} appId In production we need the appId to look up the correct bucket, as the
474
+ * version of the client lib may differ between apps.
475
+ * @param {string} version The version to retrieve.
476
+ * @return {string} The URL to be inserted into appPackage response or server rendered
477
+ * app index file.
478
+ */
479
+ export function clientLibraryPath(appId: string, version: string) {
480
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (env.isProd()) {
481
+ let url = <span class="cstat-no" title="statement not covered" >`${objectStoreUrl()}/${objectStore.sanitizeKey(</span>
482
+ appId
483
+ )}/budibase-client.js`
484
+ &nbsp;
485
+ // append app version to bust the cache
486
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (version) {</span>
487
+ <span class="cstat-no" title="statement not covered" > url += `?v=${version}`</span>
488
+ }
489
+ <span class="cstat-no" title="statement not covered" > return url</span>
490
+ } else {
491
+ return `/api/assets/client`
492
+ }
493
+ }
494
+ &nbsp;
495
+ export function attachmentsRelativeURL(attachmentKey: string) {
496
+ return checkSlashesInUrl(`${objectStoreUrl()}/${attachmentKey}`)
497
+ }
498
+ &nbsp;
367
499
  export async function updateEntityMetadata(
368
500
  type: string,
369
501
  entityId: string,
@@ -472,7 +604,7 @@ export function isQsTrue(param: string) {
472
604
  <div class='footer quiet pad2 space-top1 center small'>
473
605
  Code coverage generated by
474
606
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
475
- at Mon Jan 09 2023 08:33:20 GMT+0000 (Coordinated Universal Time)
607
+ at Mon Jan 09 2023 15:38:31 GMT+0000 (Coordinated Universal Time)
476
608
  </div>
477
609
  <script src="../../prettify.js"></script>
478
610
  <script>
@@ -0,0 +1,151 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/utilities/plugins.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/utilities</a> plugins.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">42.85% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>6/14</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">40% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>2/5</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">50% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/2</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">42.85% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>6/14</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">46x</span>
89
+ <span class="cline-any cline-yes">46x</span>
90
+ <span class="cline-any cline-yes">46x</span>
91
+ <span class="cline-any cline-neutral">&nbsp;</span>
92
+ <span class="cline-any cline-neutral">&nbsp;</span>
93
+ <span class="cline-any cline-yes">46x</span>
94
+ <span class="cline-any cline-yes">6x</span>
95
+ <span class="cline-any cline-yes">6x</span>
96
+ <span class="cline-any cline-neutral">&nbsp;</span>
97
+ <span class="cline-any cline-no">&nbsp;</span>
98
+ <span class="cline-any cline-no">&nbsp;</span>
99
+ <span class="cline-any cline-no">&nbsp;</span>
100
+ <span class="cline-any cline-no">&nbsp;</span>
101
+ <span class="cline-any cline-neutral">&nbsp;</span>
102
+ <span class="cline-any cline-neutral">&nbsp;</span>
103
+ <span class="cline-any cline-neutral">&nbsp;</span>
104
+ <span class="cline-any cline-no">&nbsp;</span>
105
+ <span class="cline-any cline-no">&nbsp;</span>
106
+ <span class="cline-any cline-no">&nbsp;</span>
107
+ <span class="cline-any cline-no">&nbsp;</span>
108
+ <span class="cline-any cline-neutral">&nbsp;</span>
109
+ <span class="cline-any cline-neutral">&nbsp;</span>
110
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import env from "../environment"
111
+ import { plugins as ProPlugins } from "@budibase/pro"
112
+ import { objectStore } from "@budibase/backend-core"
113
+ import { Plugin } from "@budibase/types"
114
+ &nbsp;
115
+ export function enrichPluginURLs(plugins: Plugin[]) {
116
+ if (!plugins || <span class="branch-1 cbranch-no" title="branch not covered" >!plugins.length)</span> {
117
+ return []
118
+ }
119
+ <span class="cstat-no" title="statement not covered" > return plugins.map(<span class="fstat-no" title="function not covered" >plugin </span>=&gt; {</span>
120
+ const cloud = <span class="cstat-no" title="statement not covered" >!env.SELF_HOSTED</span>
121
+ const bucket = <span class="cstat-no" title="statement not covered" >objectStore.ObjectStoreBuckets.PLUGINS</span>
122
+ const jsFileName = <span class="cstat-no" title="statement not covered" >"plugin.min.js"</span>
123
+ &nbsp;
124
+ // In self host we need to prefix the path, as the bucket name is not part
125
+ // of the bucket path. In cloud, it's already part of the bucket path.
126
+ let jsUrl = <span class="cstat-no" title="statement not covered" >cloud ? `${env.CDN_URL}/` : `/${bucket}/`</span>
127
+ <span class="cstat-no" title="statement not covered" > jsUrl += ProPlugins.getBucketPath(plugin.name)</span>
128
+ <span class="cstat-no" title="statement not covered" > jsUrl += jsFileName</span>
129
+ <span class="cstat-no" title="statement not covered" > return { ...plugin, jsUrl }</span>
130
+ })
131
+ }
132
+ &nbsp;</pre></td></tr></table></pre>
133
+
134
+ <div class='push'></div><!-- for sticky footer -->
135
+ </div><!-- /wrapper -->
136
+ <div class='footer quiet pad2 space-top1 center small'>
137
+ Code coverage generated by
138
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
+ at Mon Jan 09 2023 15:38:31 GMT+0000 (Coordinated Universal Time)
140
+ </div>
141
+ <script src="../../prettify.js"></script>
142
+ <script>
143
+ window.onload = function () {
144
+ prettyPrint();
145
+ };
146
+ </script>
147
+ <script src="../../sorter.js"></script>
148
+ <script src="../../block-navigation.js"></script>
149
+ </body>
150
+ </html>
151
+
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">50.98% </span>
26
+ <span class="strong">49.01% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>26/51</span>
28
+ <span class='fraction'>25/51</span>
29
29
  </div>
30
30
 
31
31
 
@@ -37,16 +37,16 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">45.45% </span>
40
+ <span class="strong">36.36% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>5/11</span>
42
+ <span class='fraction'>4/11</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">54.16% </span>
47
+ <span class="strong">52.08% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>26/48</span>
49
+ <span class='fraction'>25/48</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -149,33 +149,33 @@
149
149
  <a name='L84'></a><a href='#L84'>84</a>
150
150
  <a name='L85'></a><a href='#L85'>85</a>
151
151
  <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">53x</span>
153
- <span class="cline-any cline-yes">53x</span>
152
+ <a name='L87'></a><a href='#L87'>87</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">45x</span>
153
+ <span class="cline-any cline-yes">45x</span>
154
154
  <span class="cline-any cline-neutral">&nbsp;</span>
155
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-yes">53x</span>
157
- <span class="cline-any cline-yes">53x</span>
156
+ <span class="cline-any cline-yes">45x</span>
157
+ <span class="cline-any cline-yes">45x</span>
158
158
  <span class="cline-any cline-neutral">&nbsp;</span>
159
159
  <span class="cline-any cline-neutral">&nbsp;</span>
160
160
  <span class="cline-any cline-neutral">&nbsp;</span>
161
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">53x</span>
163
- <span class="cline-any cline-yes">50x</span>
164
- <span class="cline-any cline-yes">50x</span>
165
- <span class="cline-any cline-yes">50x</span>
166
- <span class="cline-any cline-yes">50x</span>
167
- <span class="cline-any cline-yes">50x</span>
168
- <span class="cline-any cline-yes">50x</span>
162
+ <span class="cline-any cline-yes">45x</span>
163
+ <span class="cline-any cline-yes">42x</span>
164
+ <span class="cline-any cline-yes">42x</span>
165
+ <span class="cline-any cline-yes">42x</span>
166
+ <span class="cline-any cline-yes">42x</span>
167
+ <span class="cline-any cline-yes">42x</span>
168
+ <span class="cline-any cline-yes">42x</span>
169
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-yes">53x</span>
171
+ <span class="cline-any cline-yes">45x</span>
172
172
  <span class="cline-any cline-no">&nbsp;</span>
173
173
  <span class="cline-any cline-no">&nbsp;</span>
174
174
  <span class="cline-any cline-no">&nbsp;</span>
175
175
  <span class="cline-any cline-no">&nbsp;</span>
176
176
  <span class="cline-any cline-neutral">&nbsp;</span>
177
177
  <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">53x</span>
178
+ <span class="cline-any cline-yes">45x</span>
179
179
  <span class="cline-any cline-no">&nbsp;</span>
180
180
  <span class="cline-any cline-no">&nbsp;</span>
181
181
  <span class="cline-any cline-no">&nbsp;</span>
@@ -186,11 +186,11 @@
186
186
  <span class="cline-any cline-no">&nbsp;</span>
187
187
  <span class="cline-any cline-neutral">&nbsp;</span>
188
188
  <span class="cline-any cline-neutral">&nbsp;</span>
189
- <span class="cline-any cline-yes">53x</span>
190
- <span class="cline-any cline-yes">2x</span>
189
+ <span class="cline-any cline-yes">45x</span>
190
+ <span class="cline-any cline-no">&nbsp;</span>
191
191
  <span class="cline-any cline-neutral">&nbsp;</span>
192
192
  <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-yes">53x</span>
193
+ <span class="cline-any cline-yes">45x</span>
194
194
  <span class="cline-any cline-neutral">&nbsp;</span>
195
195
  <span class="cline-any cline-no">&nbsp;</span>
196
196
  <span class="cline-any cline-no">&nbsp;</span>
@@ -203,7 +203,7 @@
203
203
  <span class="cline-any cline-no">&nbsp;</span>
204
204
  <span class="cline-any cline-neutral">&nbsp;</span>
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
- <span class="cline-any cline-yes">53x</span>
206
+ <span class="cline-any cline-yes">45x</span>
207
207
  <span class="cline-any cline-no">&nbsp;</span>
208
208
  <span class="cline-any cline-no">&nbsp;</span>
209
209
  <span class="cline-any cline-no">&nbsp;</span>
@@ -215,24 +215,24 @@
215
215
  <span class="cline-any cline-no">&nbsp;</span>
216
216
  <span class="cline-any cline-neutral">&nbsp;</span>
217
217
  <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-yes">53x</span>
218
+ <span class="cline-any cline-yes">45x</span>
219
219
  <span class="cline-any cline-no">&nbsp;</span>
220
220
  <span class="cline-any cline-neutral">&nbsp;</span>
221
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-yes">53x</span>
222
+ <span class="cline-any cline-yes">45x</span>
223
223
  <span class="cline-any cline-no">&nbsp;</span>
224
224
  <span class="cline-any cline-neutral">&nbsp;</span>
225
225
  <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-yes">53x</span>
226
+ <span class="cline-any cline-yes">45x</span>
227
227
  <span class="cline-any cline-yes">2x</span>
228
228
  <span class="cline-any cline-neutral">&nbsp;</span>
229
229
  <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-yes">53x</span>
230
+ <span class="cline-any cline-yes">45x</span>
231
231
  <span class="cline-any cline-yes">4x</span>
232
232
  <span class="cline-any cline-yes">4x</span>
233
233
  <span class="cline-any cline-neutral">&nbsp;</span>
234
234
  <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-yes">53x</span>
235
+ <span class="cline-any cline-yes">45x</span>
236
236
  <span class="cline-any cline-yes">2x</span>
237
237
  <span class="cline-any cline-neutral">&nbsp;</span>
238
238
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { redis } from "@budibase/backend-core"
@@ -272,8 +272,8 @@ export async function <span class="fstat-no" title="function not covered" >doesU
272
272
  <span class="cstat-no" title="statement not covered" > return expected === userId</span>
273
273
  }
274
274
  &nbsp;
275
- export async function getLocksById(appIds: string[]) {
276
- return await devAppClient.bulkGet(appIds)
275
+ export async function <span class="fstat-no" title="function not covered" >getLocksById(</span>appIds: string[]) {
276
+ <span class="cstat-no" title="statement not covered" > return await devAppClient.bulkGet(appIds)</span>
277
277
  }
278
278
  &nbsp;
279
279
  export async function <span class="fstat-no" title="function not covered" >updateLock(</span>devAppId: string, user: ContextUser) {
@@ -328,7 +328,7 @@ export async function clearTestFlag(id: string) {
328
328
  <div class='footer quiet pad2 space-top1 center small'>
329
329
  Code coverage generated by
330
330
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
331
- at Mon Jan 09 2023 08:33:20 GMT+0000 (Coordinated Universal Time)
331
+ at Mon Jan 09 2023 15:38:31 GMT+0000 (Coordinated Universal Time)
332
332
  </div>
333
333
  <script src="../../prettify.js"></script>
334
334
  <script>