@budibase/server 2.1.32-alpha.5 → 2.1.32-alpha.7

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 (583) hide show
  1. package/builder/assets/{index.192baaa3.js → index.e0fdcf54.js} +184 -184
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +3112 -3177
  4. package/coverage/coverage-final.json +105 -106
  5. package/coverage/lcov-report/index.html +145 -145
  6. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  7. package/coverage/lcov-report/src/api/controllers/{apikeys.js.html → apikeys.ts.html} +19 -19
  8. package/coverage/lcov-report/src/api/controllers/application.ts.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/auth.ts.html +3 -3
  10. package/coverage/lcov-report/src/api/controllers/{automation.js.html → automation.ts.html} +68 -68
  11. package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
  12. package/coverage/lcov-report/src/api/controllers/{cloud.js.html → cloud.ts.html} +40 -40
  13. package/coverage/lcov-report/src/api/controllers/component.ts.html +6 -3
  14. package/coverage/lcov-report/src/api/controllers/{datasource.js.html → datasource.ts.html} +100 -79
  15. package/coverage/lcov-report/src/api/controllers/deploy/{Deployment.js.html → Deployment.ts.html} +30 -21
  16. package/coverage/lcov-report/src/api/controllers/deploy/index.html +6 -6
  17. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +1 -1
  18. package/coverage/lcov-report/src/api/controllers/dev.ts.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/index.html +108 -108
  20. package/coverage/lcov-report/src/api/controllers/integration.js.html +1 -1
  21. package/coverage/lcov-report/src/api/controllers/{layout.js.html → layout.ts.html} +19 -19
  22. package/coverage/lcov-report/src/api/controllers/{metadata.js.html → metadata.ts.html} +19 -16
  23. package/coverage/lcov-report/src/api/controllers/migrations.js.html +1 -1
  24. package/coverage/lcov-report/src/api/controllers/{permission.js.html → permission.ts.html} +73 -64
  25. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +1 -1
  26. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +1 -1
  27. package/coverage/lcov-report/src/api/controllers/plugin/index.html +11 -11
  28. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +10 -13
  29. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +1 -1
  31. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +1 -1
  32. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +1 -1
  33. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
  34. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  35. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +1 -1
  36. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +1 -1
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
  42. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
  44. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +3 -3
  45. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
  46. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
  47. package/coverage/lcov-report/src/api/controllers/query/import/index.html +11 -11
  48. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +8 -11
  49. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +1 -1
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/index.html +2 -2
  57. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/{validation.js.html → validation.ts.html} +10 -10
  59. package/coverage/lcov-report/src/api/controllers/{role.js.html → role.ts.html} +37 -49
  60. package/coverage/lcov-report/src/api/controllers/{routing.js.html → routing.ts.html} +58 -49
  61. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +6 -18
  62. package/coverage/lcov-report/src/api/controllers/row/external.js.html +4 -4
  63. package/coverage/lcov-report/src/api/controllers/row/index.html +35 -35
  64. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +1 -1
  65. package/coverage/lcov-report/src/api/controllers/row/internal.js.html +17 -20
  66. package/coverage/lcov-report/src/api/controllers/row/{internalSearch.js.html → internalSearch.ts.html} +175 -103
  67. package/coverage/lcov-report/src/api/controllers/row/{staticFormula.js.html → staticFormula.ts.html} +62 -47
  68. package/coverage/lcov-report/src/api/controllers/row/{utils.js.html → utils.ts.html} +57 -36
  69. package/coverage/lcov-report/src/api/controllers/screen.ts.html +29 -17
  70. package/coverage/lcov-report/src/api/controllers/{script.js.html → script.ts.html} +10 -7
  71. package/coverage/lcov-report/src/api/controllers/static/index.html +10 -10
  72. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +15 -27
  73. package/coverage/lcov-report/src/api/controllers/table/{bulkFormula.js.html → bulkFormula.ts.html} +89 -47
  74. package/coverage/lcov-report/src/api/controllers/table/{external.js.html → external.ts.html} +192 -87
  75. package/coverage/lcov-report/src/api/controllers/table/index.html +39 -39
  76. package/coverage/lcov-report/src/api/controllers/table/{index.js.html → index.ts.html} +28 -28
  77. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +3 -6
  78. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +18 -18
  79. package/coverage/lcov-report/src/api/controllers/{templates.js.html → templates.ts.html} +27 -18
  80. package/coverage/lcov-report/src/api/controllers/{user.js.html → user.ts.html} +72 -78
  81. package/coverage/lcov-report/src/api/controllers/view/{exporters.js.html → exporters.ts.html} +13 -7
  82. package/coverage/lcov-report/src/api/controllers/view/index.html +21 -21
  83. package/coverage/lcov-report/src/api/controllers/view/{index.js.html → index.ts.html} +68 -41
  84. package/coverage/lcov-report/src/api/controllers/view/{utils.js.html → utils.ts.html} +54 -36
  85. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.js.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +1 -1
  87. package/coverage/lcov-report/src/api/index.html +14 -14
  88. package/coverage/lcov-report/src/api/{index.js.html → index.ts.html} +28 -49
  89. package/coverage/lcov-report/src/api/routes/{analytics.js.html → analytics.ts.html} +7 -7
  90. package/coverage/lcov-report/src/api/routes/{apikeys.js.html → apikeys.ts.html} +11 -11
  91. package/coverage/lcov-report/src/api/routes/application.ts.html +35 -11
  92. package/coverage/lcov-report/src/api/routes/auth.ts.html +3 -3
  93. package/coverage/lcov-report/src/api/routes/{automation.js.html → automation.ts.html} +41 -35
  94. package/coverage/lcov-report/src/api/routes/backup.ts.html +18 -6
  95. package/coverage/lcov-report/src/api/routes/{deploy.js.html → cloud.ts.html} +18 -15
  96. package/coverage/lcov-report/src/api/routes/{component.js.html → component.ts.html} +10 -10
  97. package/coverage/lcov-report/src/api/routes/{datasource.js.html → datasource.ts.html} +53 -26
  98. package/coverage/lcov-report/src/api/routes/deploy.ts.html +148 -0
  99. package/coverage/lcov-report/src/api/routes/{dev.js.html → dev.ts.html} +54 -18
  100. package/coverage/lcov-report/src/api/routes/index.html +41 -41
  101. package/coverage/lcov-report/src/api/routes/index.ts.html +3 -3
  102. package/coverage/lcov-report/src/api/routes/integration.ts.html +133 -0
  103. package/coverage/lcov-report/src/api/routes/{layout.js.html → layout.ts.html} +11 -11
  104. package/coverage/lcov-report/src/api/routes/{metadata.js.html → metadata.ts.html} +17 -17
  105. package/coverage/lcov-report/src/api/routes/{migrations.js.html → migrations.ts.html} +12 -12
  106. package/coverage/lcov-report/src/api/routes/{permission.js.html → permission.ts.html} +41 -17
  107. package/coverage/lcov-report/src/api/routes/plugin.ts.html +32 -8
  108. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +1 -1
  109. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  110. package/coverage/lcov-report/src/api/routes/public/index.ts.html +1 -1
  111. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
  115. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
  116. package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
  117. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/{query.js.html → query.ts.html} +24 -33
  120. package/coverage/lcov-report/src/{utilities/routing/index.js.html → api/routes/role.ts.html} +32 -35
  121. package/coverage/lcov-report/src/api/routes/{routing.js.html → routing.ts.html} +10 -10
  122. package/coverage/lcov-report/src/api/routes/row.ts.html +8 -14
  123. package/coverage/lcov-report/src/api/routes/{screen.js.html → screen.ts.html} +29 -14
  124. package/coverage/lcov-report/src/api/routes/{script.js.html → script.ts.html} +10 -10
  125. package/coverage/lcov-report/src/api/routes/static.ts.html +9 -18
  126. package/coverage/lcov-report/src/api/routes/{table.js.html → table.ts.html} +16 -25
  127. package/coverage/lcov-report/src/api/routes/{templates.js.html → templates.ts.html} +11 -11
  128. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +12 -18
  129. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +10 -10
  130. package/coverage/lcov-report/src/api/routes/tests/utilities/index.js.html +1 -1
  131. package/coverage/lcov-report/src/api/routes/{user.js.html → user.ts.html} +14 -20
  132. package/coverage/lcov-report/src/api/routes/utils/index.html +6 -6
  133. package/coverage/lcov-report/src/api/routes/utils/{validators.js.html → validators.ts.html} +39 -51
  134. package/coverage/lcov-report/src/api/routes/{view.js.html → view.ts.html} +33 -24
  135. package/coverage/lcov-report/src/api/routes/webhook.ts.html +3 -3
  136. package/coverage/lcov-report/src/app.ts.html +9 -12
  137. package/coverage/lcov-report/src/automations/actions.js.html +1 -1
  138. package/coverage/lcov-report/src/automations/automationUtils.js.html +1 -1
  139. package/coverage/lcov-report/src/automations/bullboard.js.html +1 -1
  140. package/coverage/lcov-report/src/automations/index.html +10 -10
  141. package/coverage/lcov-report/src/automations/index.js.html +1 -1
  142. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  143. package/coverage/lcov-report/src/automations/logging/index.ts.html +1 -1
  144. package/coverage/lcov-report/src/automations/steps/bash.js.html +1 -1
  145. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
  146. package/coverage/lcov-report/src/automations/steps/delay.js.html +1 -1
  147. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
  148. package/coverage/lcov-report/src/automations/steps/discord.js.html +1 -1
  149. package/coverage/lcov-report/src/automations/steps/executeQuery.js.html +1 -1
  150. package/coverage/lcov-report/src/automations/steps/executeScript.js.html +1 -1
  151. package/coverage/lcov-report/src/automations/steps/filter.js.html +1 -1
  152. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  153. package/coverage/lcov-report/src/automations/steps/integromat.js.html +1 -1
  154. package/coverage/lcov-report/src/automations/steps/loop.js.html +1 -1
  155. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.js.html +1 -1
  156. package/coverage/lcov-report/src/automations/steps/queryRows.js.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.js.html +1 -1
  158. package/coverage/lcov-report/src/automations/steps/serverLog.js.html +1 -1
  159. package/coverage/lcov-report/src/automations/steps/slack.js.html +1 -1
  160. package/coverage/lcov-report/src/automations/steps/updateRow.js.html +1 -1
  161. package/coverage/lcov-report/src/automations/steps/utils.js.html +1 -1
  162. package/coverage/lcov-report/src/automations/steps/zapier.js.html +1 -1
  163. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  164. package/coverage/lcov-report/src/automations/tests/utilities/index.js.html +1 -1
  165. package/coverage/lcov-report/src/automations/triggerInfo/app.js.html +1 -1
  166. package/coverage/lcov-report/src/automations/triggerInfo/cron.js.html +1 -1
  167. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  168. package/coverage/lcov-report/src/automations/triggerInfo/index.js.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.js.html +1 -1
  170. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.js.html +1 -1
  171. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.js.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/webhook.js.html +1 -1
  173. package/coverage/lcov-report/src/automations/triggers.js.html +11 -14
  174. package/coverage/lcov-report/src/automations/utils.ts.html +1 -1
  175. package/coverage/lcov-report/src/constants/index.html +5 -5
  176. package/coverage/lcov-report/src/constants/index.js.html +7 -13
  177. package/coverage/lcov-report/src/constants/layouts.js.html +1 -1
  178. package/coverage/lcov-report/src/constants/screens.js.html +3 -3
  179. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.js.html +1 -1
  180. package/coverage/lcov-report/src/db/defaultData/employeeImport.js.html +1 -1
  181. package/coverage/lcov-report/src/db/defaultData/expensesImport.js.html +1 -1
  182. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  183. package/coverage/lcov-report/src/db/defaultData/inventoryImport.js.html +1 -1
  184. package/coverage/lcov-report/src/db/defaultData/jobsImport.js.html +1 -1
  185. package/coverage/lcov-report/src/db/dynamoClient.js.html +1 -1
  186. package/coverage/lcov-report/src/db/inMemoryView.js.html +4 -4
  187. package/coverage/lcov-report/src/db/index.html +1 -1
  188. package/coverage/lcov-report/src/db/index.js.html +1 -1
  189. package/coverage/lcov-report/src/db/linkedRows/LinkController.js.html +3 -3
  190. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.js.html +1 -1
  191. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  192. package/coverage/lcov-report/src/db/linkedRows/index.js.html +3 -3
  193. package/coverage/lcov-report/src/db/linkedRows/linkUtils.js.html +4 -4
  194. package/coverage/lcov-report/src/db/newid.js.html +1 -1
  195. package/coverage/lcov-report/src/db/utils.ts.html +2 -2
  196. package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
  197. package/coverage/lcov-report/src/definitions/datasource.ts.html +1 -1
  198. package/coverage/lcov-report/src/definitions/index.html +1 -1
  199. package/coverage/lcov-report/src/environment.js.html +1 -1
  200. package/coverage/lcov-report/src/events/AutomationEmitter.js.html +1 -1
  201. package/coverage/lcov-report/src/events/index.html +1 -1
  202. package/coverage/lcov-report/src/events/index.js.html +1 -1
  203. package/coverage/lcov-report/src/events/utils.js.html +1 -1
  204. package/coverage/lcov-report/src/index.html +17 -32
  205. package/coverage/lcov-report/src/index.ts.html +1 -1
  206. package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
  207. package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
  208. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  209. package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/base/sql.ts.html +2 -2
  211. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +2 -2
  212. package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
  213. package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
  214. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
  215. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
  216. package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
  217. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1 -1
  218. package/coverage/lcov-report/src/integrations/index.html +4 -4
  219. package/coverage/lcov-report/src/integrations/index.ts.html +58 -46
  220. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
  221. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
  222. package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
  223. package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
  224. package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
  225. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  226. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  227. package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
  228. package/coverage/lcov-report/src/integrations/rest.ts.html +1 -1
  229. package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
  230. package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
  231. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  232. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  233. package/coverage/lcov-report/src/integrations/utils.ts.html +1 -1
  234. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  235. package/coverage/lcov-report/src/middleware/authorized.ts.html +30 -51
  236. package/coverage/lcov-report/src/middleware/builder.ts.html +1 -1
  237. package/coverage/lcov-report/src/middleware/currentapp.ts.html +1 -1
  238. package/coverage/lcov-report/src/middleware/index.html +10 -10
  239. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  240. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  241. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  242. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  243. package/coverage/lcov-report/src/middleware/utils.ts.html +1 -1
  244. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +3 -3
  245. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  246. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  247. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  248. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  255. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  256. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  257. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  259. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  263. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +9 -9
  265. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +7 -10
  267. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  268. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -10
  269. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  270. package/coverage/lcov-report/src/migrations/index.html +1 -1
  271. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  272. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  273. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  274. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  275. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  276. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  277. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
  278. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  279. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +16 -10
  280. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +9 -21
  281. package/coverage/lcov-report/src/sdk/app/backups/index.html +16 -16
  282. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  283. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
  284. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  285. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +1 -1
  286. package/coverage/lcov-report/src/sdk/index.html +1 -1
  287. package/coverage/lcov-report/src/sdk/index.ts.html +1 -1
  288. package/coverage/lcov-report/src/startup.ts.html +3 -3
  289. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.js.html +61 -49
  290. package/coverage/lcov-report/src/tests/utilities/controllers.js.html +1 -1
  291. package/coverage/lcov-report/src/tests/utilities/index.html +15 -15
  292. package/coverage/lcov-report/src/tests/utilities/index.js.html +1 -1
  293. package/coverage/lcov-report/src/tests/utilities/structures.js.html +9 -12
  294. package/coverage/lcov-report/src/threads/automation.ts.html +20 -23
  295. package/coverage/lcov-report/src/threads/index.html +24 -24
  296. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  297. package/coverage/lcov-report/src/threads/query.ts.html +18 -33
  298. package/coverage/lcov-report/src/threads/utils.ts.html +10 -13
  299. package/coverage/lcov-report/src/utilities/{budibaseDir.js.html → budibaseDir.ts.html} +5 -5
  300. package/coverage/lcov-report/src/utilities/centralPath.js.html +1 -1
  301. package/coverage/lcov-report/src/utilities/csvParser.js.html +1 -1
  302. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.js.html +13 -13
  303. package/coverage/lcov-report/src/utilities/fileSystem/index.html +5 -20
  304. package/coverage/lcov-report/src/utilities/fileSystem/index.js.html +16 -16
  305. package/coverage/lcov-report/src/utilities/fileSystem/processor.js.html +1 -1
  306. package/coverage/lcov-report/src/utilities/global.ts.html +1 -1
  307. package/coverage/lcov-report/src/utilities/index.html +44 -44
  308. package/coverage/lcov-report/src/utilities/{index.js.html → index.ts.html} +68 -44
  309. package/coverage/lcov-report/src/utilities/plugins.js.html +1 -1
  310. package/coverage/lcov-report/src/utilities/queue/inMemoryQueue.js.html +1 -1
  311. package/coverage/lcov-report/src/utilities/queue/index.html +1 -1
  312. package/coverage/lcov-report/src/utilities/{redis.js.html → redis.ts.html} +36 -33
  313. package/coverage/lcov-report/src/utilities/routing/index.html +6 -6
  314. package/coverage/lcov-report/src/utilities/routing/index.ts.html +181 -0
  315. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +38 -23
  316. package/coverage/lcov-report/src/utilities/rowProcessor/{index.js.html → index.ts.html} +106 -337
  317. package/coverage/lcov-report/src/utilities/rowProcessor/map.js.html +370 -0
  318. package/coverage/lcov-report/src/utilities/rowProcessor/{utils.js.html → utils.ts.html} +43 -31
  319. package/coverage/lcov-report/src/utilities/scriptRunner.js.html +1 -1
  320. package/coverage/lcov-report/src/utilities/{security.js.html → security.ts.html} +49 -67
  321. package/coverage/lcov-report/src/utilities/statusCodes.js.html +1 -1
  322. package/coverage/lcov-report/src/utilities/usageQuota/index.html +18 -18
  323. package/coverage/lcov-report/src/utilities/usageQuota/{rows.js.html → rows.ts.html} +27 -39
  324. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  325. package/coverage/lcov-report/src/utilities/{users.js.html → users.ts.html} +22 -28
  326. package/coverage/lcov-report/src/utilities/{workerRequests.js.html → workerRequests.ts.html} +69 -54
  327. package/coverage/lcov-report/src/watch.ts.html +8 -11
  328. package/coverage/lcov-report/src/websocket.ts.html +1 -1
  329. package/coverage/lcov.info +5519 -5768
  330. package/dist/api/controllers/apikeys.js +12 -9
  331. package/dist/api/controllers/automation.js +104 -84
  332. package/dist/api/controllers/cloud.js +84 -71
  333. package/dist/api/controllers/component.js +4 -2
  334. package/dist/api/controllers/datasource.js +125 -111
  335. package/dist/api/controllers/deploy/Deployment.js +10 -6
  336. package/dist/api/controllers/layout.js +18 -15
  337. package/dist/api/controllers/metadata.js +51 -37
  338. package/dist/api/controllers/permission.js +52 -43
  339. package/dist/api/controllers/plugin/index.js +6 -7
  340. package/dist/api/controllers/public/tables.js +29 -9
  341. package/dist/api/controllers/query/import/index.js +1 -2
  342. package/dist/api/controllers/query/validation.js +41 -33
  343. package/dist/api/controllers/role.js +29 -27
  344. package/dist/api/controllers/routing.js +71 -58
  345. package/dist/api/controllers/row/ExternalRequest.js +6 -7
  346. package/dist/api/controllers/row/external.js +3 -3
  347. package/dist/api/controllers/row/internal.js +11 -12
  348. package/dist/api/controllers/row/internalSearch.js +95 -80
  349. package/dist/api/controllers/row/staticFormula.js +85 -75
  350. package/dist/api/controllers/row/utils.js +118 -84
  351. package/dist/api/controllers/screen.js +81 -66
  352. package/dist/api/controllers/script.js +13 -6
  353. package/dist/api/controllers/static/index.js +9 -11
  354. package/dist/api/controllers/table/bulkFormula.js +47 -35
  355. package/dist/api/controllers/table/external.js +67 -54
  356. package/dist/api/controllers/table/index.js +66 -33
  357. package/dist/api/controllers/table/internal.js +1 -2
  358. package/dist/api/controllers/table/utils.js +8 -9
  359. package/dist/api/controllers/templates.js +17 -10
  360. package/dist/api/controllers/user.js +82 -70
  361. package/dist/api/controllers/view/exporters.js +8 -4
  362. package/dist/api/controllers/view/index.js +201 -153
  363. package/dist/api/controllers/view/utils.js +151 -121
  364. package/dist/api/index.js +38 -34
  365. package/dist/api/routes/analytics.js +29 -3
  366. package/dist/api/routes/apikeys.js +33 -7
  367. package/dist/api/routes/application.js +8 -9
  368. package/dist/api/routes/auth.js +1 -2
  369. package/dist/api/routes/automation.js +46 -20
  370. package/dist/api/routes/backup.js +3 -4
  371. package/dist/api/routes/cloud.js +32 -6
  372. package/dist/api/routes/component.js +32 -6
  373. package/dist/api/routes/datasource.js +39 -13
  374. package/dist/api/routes/deploy.js +34 -8
  375. package/dist/api/routes/dev.js +36 -10
  376. package/dist/api/routes/integration.js +10 -7
  377. package/dist/api/routes/layout.js +33 -7
  378. package/dist/api/routes/metadata.js +36 -10
  379. package/dist/api/routes/migrations.js +32 -6
  380. package/dist/api/routes/permission.js +38 -12
  381. package/dist/api/routes/plugin.js +5 -5
  382. package/dist/api/routes/query.js +42 -15
  383. package/dist/api/routes/role.js +36 -10
  384. package/dist/api/routes/routing.js +32 -6
  385. package/dist/api/routes/row.js +2 -1
  386. package/dist/api/routes/screen.js +35 -9
  387. package/dist/api/routes/script.js +32 -6
  388. package/dist/api/routes/static.js +9 -9
  389. package/dist/api/routes/table.js +40 -13
  390. package/dist/api/routes/templates.js +33 -7
  391. package/dist/api/routes/tests/utilities/TestFunctions.js +6 -8
  392. package/dist/api/routes/user.js +40 -13
  393. package/dist/api/routes/utils/validators.js +142 -126
  394. package/dist/api/routes/view.js +38 -12
  395. package/dist/api/routes/webhook.js +1 -2
  396. package/dist/app.js +3 -4
  397. package/dist/automations/triggers.js +5 -6
  398. package/dist/constants/index.js +3 -5
  399. package/dist/constants/screens.js +2 -2
  400. package/dist/db/inMemoryView.js +3 -3
  401. package/dist/db/linkedRows/LinkController.js +2 -2
  402. package/dist/db/linkedRows/index.js +2 -2
  403. package/dist/db/linkedRows/linkUtils.js +3 -3
  404. package/dist/db/views/staticViews.js +4 -4
  405. package/dist/integrations/index.js +15 -6
  406. package/dist/middleware/authorized.js +22 -21
  407. package/dist/migrations/functions/appUrls.js +2 -2
  408. package/dist/migrations/functions/usageQuotas/syncApps.js +3 -4
  409. package/dist/migrations/functions/usageQuotas/syncRows.js +3 -4
  410. package/dist/migrations/functions/userEmailViewCasing.js +3 -3
  411. package/dist/package.json +6 -6
  412. package/dist/sdk/app/backups/exports.js +1 -2
  413. package/dist/sdk/app/backups/imports.js +2 -3
  414. package/dist/startup.js +4 -4
  415. package/dist/tests/utilities/TestConfiguration.js +27 -35
  416. package/dist/tests/utilities/structures.js +3 -4
  417. package/dist/threads/automation.js +15 -16
  418. package/dist/threads/query.js +17 -19
  419. package/dist/threads/utils.js +11 -9
  420. package/dist/tsconfig.build.tsbuildinfo +1 -1
  421. package/dist/utilities/budibaseDir.js +4 -2
  422. package/dist/utilities/fileSystem/clientLibrary.js +12 -12
  423. package/dist/utilities/fileSystem/index.js +3 -3
  424. package/dist/utilities/index.js +102 -75
  425. package/dist/utilities/redis.js +100 -65
  426. package/dist/utilities/routing/index.js +27 -23
  427. package/dist/utilities/rowProcessor/index.js +124 -191
  428. package/dist/utilities/rowProcessor/map.js +96 -0
  429. package/dist/utilities/rowProcessor/utils.js +35 -26
  430. package/dist/utilities/security.js +39 -35
  431. package/dist/utilities/usageQuota/rows.js +56 -49
  432. package/dist/utilities/users.js +31 -28
  433. package/dist/utilities/workerRequests.js +115 -82
  434. package/dist/watch.js +1 -2
  435. package/package.json +7 -7
  436. package/scripts/exportAppTemplate.js +2 -2
  437. package/src/api/controllers/{apikeys.js → apikeys.ts} +10 -10
  438. package/src/api/controllers/auth.ts +2 -2
  439. package/src/api/controllers/{automation.js → automation.ts} +48 -48
  440. package/src/api/controllers/{cloud.js → cloud.ts} +24 -24
  441. package/src/api/controllers/component.ts +2 -1
  442. package/src/api/controllers/{datasource.js → datasource.ts} +55 -48
  443. package/src/api/controllers/deploy/{Deployment.js → Deployment.ts} +13 -10
  444. package/src/api/controllers/{layout.js → layout.ts} +8 -8
  445. package/src/api/controllers/{metadata.js → metadata.ts} +11 -10
  446. package/src/api/controllers/{permission.js → permission.ts} +49 -46
  447. package/src/api/controllers/plugin/index.ts +4 -5
  448. package/src/api/controllers/public/tables.ts +2 -2
  449. package/src/api/controllers/query/import/index.ts +2 -3
  450. package/src/api/controllers/query/{validation.js → validation.ts} +7 -7
  451. package/src/api/controllers/{role.js → role.ts} +21 -25
  452. package/src/api/controllers/{routing.js → routing.ts} +37 -34
  453. package/src/api/controllers/row/ExternalRequest.ts +4 -8
  454. package/src/api/controllers/row/external.js +3 -3
  455. package/src/api/controllers/row/internal.js +11 -12
  456. package/src/api/controllers/row/{internalSearch.js → internalSearch.ts} +92 -68
  457. package/src/api/controllers/row/{staticFormula.js → staticFormula.ts} +28 -23
  458. package/src/api/controllers/row/{utils.js → utils.ts} +25 -18
  459. package/src/api/controllers/screen.ts +10 -6
  460. package/src/api/controllers/script.ts +12 -0
  461. package/src/api/controllers/static/index.ts +9 -13
  462. package/src/api/controllers/table/{bulkFormula.js → bulkFormula.ts} +39 -25
  463. package/src/api/controllers/table/{external.js → external.ts} +86 -51
  464. package/src/api/controllers/table/{index.js → index.ts} +17 -17
  465. package/src/api/controllers/table/internal.ts +1 -2
  466. package/src/api/controllers/table/utils.ts +10 -10
  467. package/src/api/controllers/{templates.js → templates.ts} +10 -7
  468. package/src/api/controllers/{user.js → user.ts} +47 -49
  469. package/src/api/controllers/view/{exporters.js → exporters.ts} +5 -3
  470. package/src/api/controllers/view/{index.js → index.ts} +36 -27
  471. package/src/api/controllers/view/{utils.js → utils.ts} +26 -20
  472. package/src/api/{index.js → index.ts} +15 -22
  473. package/src/api/routes/analytics.ts +9 -0
  474. package/src/api/routes/apikeys.ts +12 -0
  475. package/src/api/routes/application.ts +17 -9
  476. package/src/api/routes/auth.ts +2 -2
  477. package/src/api/routes/automation.ts +87 -0
  478. package/src/api/routes/backup.ts +8 -4
  479. package/src/api/routes/cloud.ts +18 -0
  480. package/src/api/routes/component.ts +14 -0
  481. package/src/api/routes/datasource.ts +60 -0
  482. package/src/api/routes/deploy.ts +21 -0
  483. package/src/api/routes/dev.ts +38 -0
  484. package/src/api/routes/integration.ts +16 -0
  485. package/src/api/routes/layout.ts +16 -0
  486. package/src/api/routes/{metadata.js → metadata.ts} +13 -13
  487. package/src/api/routes/migrations.ts +14 -0
  488. package/src/api/routes/permission.ts +41 -0
  489. package/src/api/routes/plugin.ts +14 -6
  490. package/src/api/routes/{query.js → query.ts} +17 -20
  491. package/src/api/routes/role.ts +24 -0
  492. package/src/api/routes/routing.ts +14 -0
  493. package/src/api/routes/row.ts +3 -5
  494. package/src/api/routes/screen.ts +23 -0
  495. package/src/api/routes/script.ts +10 -0
  496. package/src/api/routes/static.ts +4 -7
  497. package/src/api/routes/{table.js → table.ts} +9 -12
  498. package/src/api/routes/templates.ts +16 -0
  499. package/src/api/routes/tests/backup.spec.js +9 -1
  500. package/src/api/routes/tests/permissions.spec.js +2 -1
  501. package/src/api/routes/tests/role.spec.js +3 -5
  502. package/src/api/routes/tests/routing.spec.js +2 -1
  503. package/src/api/routes/tests/row.spec.js +3 -4
  504. package/src/api/routes/tests/user.spec.js +2 -1
  505. package/src/api/routes/tests/utilities/TestFunctions.ts +6 -8
  506. package/src/api/routes/{user.js → user.ts} +7 -9
  507. package/src/api/routes/utils/{validators.js → validators.ts} +33 -37
  508. package/src/api/routes/view.ts +34 -0
  509. package/src/api/routes/webhook.ts +2 -2
  510. package/src/app.ts +3 -4
  511. package/src/automations/triggers.js +5 -6
  512. package/src/constants/index.js +3 -5
  513. package/src/constants/screens.js +2 -2
  514. package/src/db/inMemoryView.js +3 -3
  515. package/src/db/linkedRows/LinkController.js +2 -2
  516. package/src/db/linkedRows/index.js +2 -2
  517. package/src/db/linkedRows/linkUtils.js +3 -3
  518. package/src/db/utils.ts +1 -1
  519. package/src/db/views/staticViews.js +4 -4
  520. package/src/integrations/base/sql.ts +1 -1
  521. package/src/integrations/base/sqlTable.ts +1 -1
  522. package/src/integrations/index.ts +45 -41
  523. package/src/middleware/authorized.ts +21 -28
  524. package/src/middleware/tests/authorized.spec.js +5 -6
  525. package/src/migrations/functions/appUrls.ts +2 -2
  526. package/src/migrations/functions/tests/appUrls.spec.js +4 -4
  527. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +14 -9
  528. package/src/migrations/functions/usageQuotas/syncApps.ts +3 -4
  529. package/src/migrations/functions/usageQuotas/syncRows.ts +3 -4
  530. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +7 -7
  531. package/src/migrations/functions/userEmailViewCasing.ts +3 -3
  532. package/src/sdk/app/backups/exports.ts +5 -3
  533. package/src/sdk/app/backups/imports.ts +3 -7
  534. package/src/startup.ts +2 -2
  535. package/src/tests/utilities/TestConfiguration.js +39 -35
  536. package/src/tests/utilities/structures.js +3 -4
  537. package/src/threads/automation.ts +14 -15
  538. package/src/threads/query.ts +11 -16
  539. package/src/threads/utils.ts +4 -5
  540. package/src/utilities/budibaseDir.ts +3 -0
  541. package/src/utilities/fileSystem/clientLibrary.js +12 -12
  542. package/src/utilities/fileSystem/index.js +8 -8
  543. package/src/utilities/{index.js → index.ts} +40 -32
  544. package/src/utilities/{redis.js → redis.ts} +21 -20
  545. package/src/utilities/routing/index.ts +32 -0
  546. package/src/utilities/rowProcessor/{index.js → index.ts} +65 -142
  547. package/src/utilities/rowProcessor/map.js +95 -0
  548. package/src/utilities/rowProcessor/{utils.js → utils.ts} +19 -15
  549. package/src/utilities/security.ts +65 -0
  550. package/src/utilities/usageQuota/{rows.js → rows.ts} +14 -18
  551. package/src/utilities/{users.js → users.ts} +11 -13
  552. package/src/utilities/{workerRequests.js → workerRequests.ts} +43 -38
  553. package/src/watch.ts +2 -3
  554. package/coverage/lcov-report/src/api/routes/cloud.js.html +0 -127
  555. package/coverage/lcov-report/src/api/routes/integration.js.html +0 -121
  556. package/coverage/lcov-report/src/api/routes/role.js.html +0 -130
  557. package/coverage/lcov-report/src/module.d.ts.html +0 -127
  558. package/coverage/lcov-report/src/utilities/fileSystem/utilities.js.html +0 -193
  559. package/dist/utilities/fileSystem/utilities.js +0 -22
  560. package/src/api/controllers/script.js +0 -11
  561. package/src/api/routes/analytics.js +0 -9
  562. package/src/api/routes/apikeys.js +0 -12
  563. package/src/api/routes/automation.js +0 -85
  564. package/src/api/routes/cloud.js +0 -14
  565. package/src/api/routes/component.js +0 -14
  566. package/src/api/routes/datasource.js +0 -51
  567. package/src/api/routes/deploy.js +0 -17
  568. package/src/api/routes/dev.js +0 -26
  569. package/src/api/routes/integration.js +0 -12
  570. package/src/api/routes/layout.js +0 -16
  571. package/src/api/routes/migrations.js +0 -14
  572. package/src/api/routes/permission.js +0 -33
  573. package/src/api/routes/role.js +0 -15
  574. package/src/api/routes/routing.js +0 -14
  575. package/src/api/routes/screen.js +0 -18
  576. package/src/api/routes/script.js +0 -10
  577. package/src/api/routes/templates.js +0 -16
  578. package/src/api/routes/view.js +0 -31
  579. package/src/module.d.ts +0 -14
  580. package/src/utilities/budibaseDir.js +0 -3
  581. package/src/utilities/fileSystem/utilities.js +0 -36
  582. package/src/utilities/routing/index.js +0 -25
  583. package/src/utilities/security.js +0 -71
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for src/api/controllers/apikeys.js</title>
6
+ <title>Code coverage report for src/api/controllers/apikeys.ts</title>
7
7
  <meta charset="utf-8" />
8
8
  <link rel="stylesheet" href="../../../prettify.css" />
9
9
  <link rel="stylesheet" href="../../../base.css" />
@@ -19,20 +19,20 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/api/controllers</a> apikeys.js</h1>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/api/controllers</a> apikeys.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>24/24</span>
28
+ <span class='fraction'>23/23</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">50% </span>
33
+ <span class="strong">66.66% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/4</span>
35
+ <span class='fraction'>2/3</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>24/24</span>
49
+ <span class='fraction'>23/23</span>
50
50
  </div>
51
51
 
52
52
 
@@ -118,7 +118,7 @@
118
118
  <a name='L53'></a><a href='#L53'>53</a>
119
119
  <a name='L54'></a><a href='#L54'>54</a>
120
120
  <a name='L55'></a><a href='#L55'>55</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">44x</span>
121
- <span class="cline-any cline-yes">44x</span>
121
+ <span class="cline-any cline-neutral">&nbsp;</span>
122
122
  <span class="cline-any cline-neutral">&nbsp;</span>
123
123
  <span class="cline-any cline-yes">44x</span>
124
124
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -171,13 +171,13 @@
171
171
  <span class="cline-any cline-neutral">&nbsp;</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
173
  <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { StaticDatabases } = require("@budibase/backend-core/db")
175
- const { getGlobalDB } = require("@budibase/backend-core/tenancy")
174
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { db as dbCore, tenancy } from "@budibase/backend-core"
175
+ import { BBContext, Document } from "@budibase/types"
176
176
  &nbsp;
177
- const KEYS_DOC = StaticDatabases.GLOBAL.docs.apiKeys
177
+ const KEYS_DOC = dbCore.StaticDatabases.GLOBAL.docs.apiKeys
178
178
  &nbsp;
179
179
  async function getBuilderMainDoc() {
180
- const db = getGlobalDB()
180
+ const db = tenancy.getGlobalDB()
181
181
  try {
182
182
  return await db.get(KEYS_DOC)
183
183
  } catch (err) {
@@ -188,30 +188,30 @@ async function getBuilderMainDoc() {
188
188
  }
189
189
  }
190
190
  &nbsp;
191
- async function setBuilderMainDoc(doc) {
191
+ async function setBuilderMainDoc(doc: Document) {
192
192
  // make sure to override the ID
193
193
  doc._id = KEYS_DOC
194
- const db = getGlobalDB()
194
+ const db = tenancy.getGlobalDB()
195
195
  return db.put(doc)
196
196
  }
197
197
  &nbsp;
198
- exports.fetch = async function (ctx) {
198
+ export async function fetch(ctx: BBContext) {
199
199
  try {
200
200
  const mainDoc = await getBuilderMainDoc()
201
201
  ctx.body = mainDoc.apiKeys ? <span class="branch-0 cbranch-no" title="branch not covered" >mainDoc.apiKeys </span>: {}
202
- } catch (err) {
202
+ } catch (err: any) {
203
203
  /* istanbul ignore next */
204
204
  ctx.throw(400, err)
205
205
  }
206
206
  }
207
207
  &nbsp;
208
- exports.update = async function (ctx) {
208
+ export async function update(ctx: BBContext) {
209
209
  const key = ctx.params.key
210
210
  const value = ctx.request.body.value
211
211
  &nbsp;
212
212
  try {
213
213
  const mainDoc = await getBuilderMainDoc()
214
- <span class="missing-if-branch" title="else path not taken" >E</span>if (mainDoc.apiKeys == null) {
214
+ if (mainDoc.apiKeys == null) {
215
215
  mainDoc.apiKeys = {}
216
216
  }
217
217
  mainDoc.apiKeys[key] = value
@@ -220,7 +220,7 @@ exports.update = async function (ctx) {
220
220
  _id: resp.id,
221
221
  _rev: resp.rev,
222
222
  }
223
- } catch (err) {
223
+ } catch (err: any) {
224
224
  /* istanbul ignore next */
225
225
  ctx.throw(400, err)
226
226
  }
@@ -232,7 +232,7 @@ exports.update = async function (ctx) {
232
232
  <div class='footer quiet pad2 space-top1 center small'>
233
233
  Code coverage generated by
234
234
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
235
- at Wed Nov 23 2022 08:44:01 GMT+0000 (Coordinated Universal Time)
235
+ at Wed Nov 23 2022 15:12:32 GMT+0000 (Coordinated Universal Time)
236
236
  </div>
237
237
  <script src="../../../prettify.js"></script>
238
238
  <script>
@@ -2023,7 +2023,7 @@ const migrateAppNavigation = async () =&gt; {
2023
2023
  <div class='footer quiet pad2 space-top1 center small'>
2024
2024
  Code coverage generated by
2025
2025
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2026
- at Wed Nov 23 2022 08:44:01 GMT+0000 (Coordinated Universal Time)
2026
+ at Wed Nov 23 2022 15:12:32 GMT+0000 (Coordinated Universal Time)
2027
2027
  </div>
2028
2028
  <script src="../../../prettify.js"></script>
2029
2029
  <script>
@@ -212,7 +212,7 @@ import { InternalTables } from "../../db/utils"
212
212
  import { getFullUser } from "../../utilities/users"
213
213
  import { roles, context } from "@budibase/backend-core"
214
214
  import { groups } from "@budibase/pro"
215
- import { ContextUser, User } from "@budibase/types"
215
+ import { ContextUser, User, Row } from "@budibase/types"
216
216
  &nbsp;
217
217
  const PUBLIC_ROLE = roles.BUILTIN_ROLE_IDS.PUBLIC
218
218
  &nbsp;
@@ -252,7 +252,7 @@ export async function fetchSelf(ctx: any) {
252
252
  try {
253
253
  const userTable = await db.get(InternalTables.USER_METADATA)
254
254
  // specifically needs to make sure is enriched
255
- ctx.body = await outputProcessing(userTable, user)
255
+ ctx.body = await outputProcessing(userTable, user as Row)
256
256
  } catch (err: any) {
257
257
  let response
258
258
  // user didn't exist in app, don't pretend they do
@@ -286,7 +286,7 @@ export async function fetchSelf(ctx: any) {
286
286
  <div class='footer quiet pad2 space-top1 center small'>
287
287
  Code coverage generated by
288
288
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
289
- at Wed Nov 23 2022 08:44:01 GMT+0000 (Coordinated Universal Time)
289
+ at Wed Nov 23 2022 15:12:32 GMT+0000 (Coordinated Universal Time)
290
290
  </div>
291
291
  <script src="../../../prettify.js"></script>
292
292
  <script>
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for src/api/controllers/automation.js</title>
6
+ <title>Code coverage report for src/api/controllers/automation.ts</title>
7
7
  <meta charset="utf-8" />
8
8
  <link rel="stylesheet" href="../../../prettify.css" />
9
9
  <link rel="stylesheet" href="../../../base.css" />
@@ -19,34 +19,34 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/api/controllers</a> automation.js</h1>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/api/controllers</a> automation.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">84.55% </span>
26
+ <span class="strong">83.7% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>115/136</span>
28
+ <span class='fraction'>113/135</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">62.5% </span>
33
+ <span class="strong">54.83% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>25/40</span>
35
+ <span class='fraction'>17/31</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">83.33% </span>
40
+ <span class="strong">80% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>20/24</span>
42
+ <span class='fraction'>20/25</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.96% </span>
47
+ <span class="strong">83.72% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>110/131</span>
49
+ <span class='fraction'>108/129</span>
50
50
  </div>
51
51
 
52
52
 
@@ -350,19 +350,12 @@
350
350
  <a name='L285'></a><a href='#L285'>285</a>
351
351
  <a name='L286'></a><a href='#L286'>286</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">44x</span>
352
352
  <span class="cline-any cline-yes">44x</span>
353
- <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
353
  <span class="cline-any cline-yes">44x</span>
358
354
  <span class="cline-any cline-neutral">&nbsp;</span>
359
355
  <span class="cline-any cline-neutral">&nbsp;</span>
360
356
  <span class="cline-any cline-neutral">&nbsp;</span>
361
357
  <span class="cline-any cline-neutral">&nbsp;</span>
362
358
  <span class="cline-any cline-yes">44x</span>
363
- <span class="cline-any cline-yes">44x</span>
364
- <span class="cline-any cline-yes">44x</span>
365
- <span class="cline-any cline-yes">44x</span>
366
359
  <span class="cline-any cline-neutral">&nbsp;</span>
367
360
  <span class="cline-any cline-neutral">&nbsp;</span>
368
361
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -371,6 +364,8 @@
371
364
  <span class="cline-any cline-yes">44x</span>
372
365
  <span class="cline-any cline-yes">44x</span>
373
366
  <span class="cline-any cline-yes">44x</span>
367
+ <span class="cline-any cline-yes">44x</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
369
  <span class="cline-any cline-neutral">&nbsp;</span>
375
370
  <span class="cline-any cline-yes">44x</span>
376
371
  <span class="cline-any cline-yes">44x</span>
@@ -453,12 +448,18 @@
453
448
  <span class="cline-any cline-neutral">&nbsp;</span>
454
449
  <span class="cline-any cline-neutral">&nbsp;</span>
455
450
  <span class="cline-any cline-yes">44x</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
454
  <span class="cline-any cline-yes">8x</span>
457
455
  <span class="cline-any cline-yes">7x</span>
458
456
  <span class="cline-any cline-neutral">&nbsp;</span>
459
457
  <span class="cline-any cline-neutral">&nbsp;</span>
460
458
  <span class="cline-any cline-yes">44x</span>
461
459
  <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
463
  <span class="cline-any cline-yes">6x</span>
463
464
  <span class="cline-any cline-yes">6x</span>
464
465
  <span class="cline-any cline-yes">4x</span>
@@ -501,7 +502,6 @@
501
502
  <span class="cline-any cline-neutral">&nbsp;</span>
502
503
  <span class="cline-any cline-neutral">&nbsp;</span>
503
504
  <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
505
  <span class="cline-any cline-yes">6x</span>
506
506
  <span class="cline-any cline-neutral">&nbsp;</span>
507
507
  <span class="cline-any cline-yes">6x</span>
@@ -633,29 +633,24 @@
633
633
  <span class="cline-any cline-yes">2x</span>
634
634
  <span class="cline-any cline-yes">2x</span>
635
635
  <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const actions = require("../../automations/actions")
637
- const triggers = require("../../automations/triggers")
638
- const {
636
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import actions from "../../automations/actions"
637
+ import triggers from "../../automations/triggers"
638
+ import {
639
639
  getAutomationParams,
640
640
  generateAutomationID,
641
641
  DocumentType,
642
- } = require("../../db/utils")
643
- const {
642
+ } from "../../db/utils"
643
+ import {
644
644
  checkForWebhooks,
645
645
  updateTestHistory,
646
646
  removeDeprecated,
647
- } = require("../../automations/utils")
648
- const { deleteEntityMetadata } = require("../../utilities")
649
- const { MetadataTypes } = require("../../constants")
650
- const { setTestFlag, clearTestFlag } = require("../../utilities/redis")
651
- const {
652
- getAppDB,
653
- getProdAppDB,
654
- doInAppContext,
655
- } = require("@budibase/backend-core/context")
656
- const { events } = require("@budibase/backend-core")
657
- const { app } = require("@budibase/backend-core/cache")
658
- const { automations } = require("@budibase/pro")
647
+ } from "../../automations/utils"
648
+ import { deleteEntityMetadata } from "../../utilities"
649
+ import { MetadataTypes } from "../../constants"
650
+ import { setTestFlag, clearTestFlag } from "../../utilities/redis"
651
+ import { context, cache, events } from "@budibase/backend-core"
652
+ import { automations } from "@budibase/pro"
653
+ import { Automation, BBContext } from "@budibase/types"
659
654
  &nbsp;
660
655
  const ACTION_DEFS = removeDeprecated(actions.ACTION_DEFINITIONS)
661
656
  const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
@@ -666,7 +661,7 @@ const TRIGGER_DEFS = removeDeprecated(triggers.TRIGGER_DEFINITIONS)
666
661
  * *
667
662
  *************************/
668
663
  &nbsp;
669
- async function cleanupAutomationMetadata(automationId) {
664
+ async function cleanupAutomationMetadata(automationId: string) {
670
665
  await deleteEntityMetadata(MetadataTypes.AUTOMATION_TEST_INPUT, automationId)
671
666
  await deleteEntityMetadata(
672
667
  MetadataTypes.AUTOMATION_TEST_HISTORY,
@@ -674,7 +669,7 @@ async function cleanupAutomationMetadata(automationId) {
674
669
  )
675
670
  }
676
671
  &nbsp;
677
- function cleanAutomationInputs(automation) {
672
+ function cleanAutomationInputs(automation: Automation) {
678
673
  <span class="missing-if-branch" title="if path not taken" >I</span>if (automation == null) {
679
674
  <span class="cstat-no" title="statement not covered" > return automation</span>
680
675
  }
@@ -698,14 +693,14 @@ function cleanAutomationInputs(automation) {
698
693
  return automation
699
694
  }
700
695
  &nbsp;
701
- exports.create = async function (ctx) {
702
- const db = getAppDB()
696
+ export async function create(ctx: BBContext) {
697
+ const db = context.getAppDB()
703
698
  let automation = ctx.request.body
704
699
  automation.appId = ctx.appId
705
700
  &nbsp;
706
701
  // call through to update if already exists
707
702
  if (automation._id &amp;&amp; automation._rev) {
708
- return exports.update(ctx)
703
+ return update(ctx)
709
704
  }
710
705
  &nbsp;
711
706
  automation._id = generateAutomationID()
@@ -732,17 +727,23 @@ exports.create = async function (ctx) {
732
727
  }
733
728
  }
734
729
  &nbsp;
735
- const getNewSteps = (oldAutomation, automation) =&gt; {
730
+ export function getNewSteps(oldAutomation: Automation, automation: Automation) {
736
731
  const oldStepIds = oldAutomation.definition.steps.map(s =&gt; s.id)
737
732
  return automation.definition.steps.filter(s =&gt; !oldStepIds.includes(s.id))
738
733
  }
739
734
  &nbsp;
740
- const getDeletedSteps = (oldAutomation, automation) =&gt; {
735
+ export function getDeletedSteps(
736
+ oldAutomation: Automation,
737
+ automation: Automation
738
+ ) {
741
739
  const stepIds = automation.definition.steps.map(s =&gt; s.id)
742
740
  return oldAutomation.definition.steps.filter(s =&gt; !stepIds.includes(s.id))
743
741
  }
744
742
  &nbsp;
745
- const handleStepEvents = async (oldAutomation, automation) =&gt; {
743
+ export async function handleStepEvents(
744
+ oldAutomation: Automation,
745
+ automation: Automation
746
+ ) {
746
747
  // new steps
747
748
  const newSteps = getNewSteps(oldAutomation, automation)
748
749
  for (let step of newSteps) {
@@ -756,8 +757,8 @@ const handleStepEvents = async (oldAutomation, automation) =&gt; {
756
757
  }
757
758
  }
758
759
  &nbsp;
759
- exports.update = async function (ctx) {
760
- const db = getAppDB()
760
+ export async function update(ctx: BBContext) {
761
+ const db = context.getAppDB()
761
762
  let automation = ctx.request.body
762
763
  automation.appId = ctx.appId
763
764
  const oldAutomation = await db.get(automation._id)
@@ -781,9 +782,8 @@ exports.update = async function (ctx) {
781
782
  if (oldAutoTrigger &amp;&amp; oldAutoTrigger.id !== newAutoTrigger.id) {
782
783
  await events.automation.triggerUpdated(automation)
783
784
  await deleteEntityMetadata(
784
- ctx.appId,
785
785
  MetadataTypes.AUTOMATION_TEST_INPUT,
786
- automation._id
786
+ automation._id!
787
787
  )
788
788
  }
789
789
  &nbsp;
@@ -800,8 +800,8 @@ exports.update = async function (ctx) {
800
800
  }
801
801
  }
802
802
  &nbsp;
803
- exports.fetch = async function (ctx) {
804
- const db = getAppDB()
803
+ export async function fetch(ctx: BBContext) {
804
+ const db = context.getAppDB()
805
805
  const response = await db.allDocs(
806
806
  getAutomationParams(null, {
807
807
  include_docs: true,
@@ -810,13 +810,13 @@ exports.fetch = async function (ctx) {
810
810
  ctx.body = response.rows.map(row =&gt; row.doc)
811
811
  }
812
812
  &nbsp;
813
- exports.find = async function (ctx) {
814
- const db = getAppDB()
813
+ export async function find(ctx: BBContext) {
814
+ const db = context.getAppDB()
815
815
  ctx.body = await db.get(ctx.params.id)
816
816
  }
817
817
  &nbsp;
818
- exports.destroy = async function (ctx) {
819
- const db = getAppDB()
818
+ export async function destroy(ctx: BBContext) {
819
+ const db = context.getAppDB()
820
820
  const automationId = ctx.params.id
821
821
  const oldAutomation = await db.get(automationId)
822
822
  await checkForWebhooks({
@@ -828,38 +828,38 @@ exports.destroy = async function (ctx) {
828
828
  await events.automation.deleted(oldAutomation)
829
829
  }
830
830
  &nbsp;
831
- exports.logSearch = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
831
+ export async function <span class="fstat-no" title="function not covered" >logSearch(</span>ctx: BBContext) {
832
832
  <span class="cstat-no" title="statement not covered" > ctx.body = await automations.logs.logSearch(ctx.request.body)</span>
833
833
  }
834
834
  &nbsp;
835
- exports.clearLogError = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
835
+ export async function <span class="fstat-no" title="function not covered" >clearLogError(</span>ctx: BBContext) {
836
836
  const { automationId, appId } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
837
- <span class="cstat-no" title="statement not covered" > await doInAppContext(appId, <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {</span>
838
- const db = <span class="cstat-no" title="statement not covered" >getProdAppDB()</span>
837
+ <span class="cstat-no" title="statement not covered" > await context.doInAppContext(appId, <span class="fstat-no" title="function not covered" >async () =</span>&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span></span>
838
+ const db = <span class="cstat-no" title="statement not covered" >context.getProdAppDB()</span>
839
839
  const metadata = <span class="cstat-no" title="statement not covered" >await db.get(DocumentType.APP_METADATA)</span>
840
840
  <span class="cstat-no" title="statement not covered" > if (!automationId) {</span>
841
841
  <span class="cstat-no" title="statement not covered" > delete metadata.automationErrors</span>
842
- } else <span class="cstat-no" title="statement not covered" >if (</span>
842
+ } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
843
843
  metadata.automationErrors &amp;&amp;
844
844
  metadata.automationErrors[automationId]
845
845
  ) {
846
846
  <span class="cstat-no" title="statement not covered" > delete metadata.automationErrors[automationId]</span>
847
847
  }
848
848
  <span class="cstat-no" title="statement not covered" > await db.put(metadata)</span>
849
- <span class="cstat-no" title="statement not covered" > await app.invalidateAppMetadata(metadata.appId, metadata)</span>
849
+ <span class="cstat-no" title="statement not covered" > await cache.app.invalidateAppMetadata(metadata.appId, metadata)</span>
850
850
  <span class="cstat-no" title="statement not covered" > ctx.body = { message: `Error logs cleared.` }</span>
851
851
  })
852
852
  }
853
853
  &nbsp;
854
- exports.getActionList = async function (ctx) {
854
+ export async function getActionList(ctx: BBContext) {
855
855
  ctx.body = ACTION_DEFS
856
856
  }
857
857
  &nbsp;
858
- exports.getTriggerList = async function (ctx) {
858
+ export async function getTriggerList(ctx: BBContext) {
859
859
  ctx.body = TRIGGER_DEFS
860
860
  }
861
861
  &nbsp;
862
- module.exports.getDefinitionList = async function (ctx) {
862
+ export async function getDefinitionList(ctx: BBContext) {
863
863
  ctx.body = {
864
864
  trigger: TRIGGER_DEFS,
865
865
  action: ACTION_DEFS,
@@ -872,8 +872,8 @@ module.exports.getDefinitionList = async function (ctx) {
872
872
  * *
873
873
  *********************/
874
874
  &nbsp;
875
- exports.trigger = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
876
- const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
875
+ export async function <span class="fstat-no" title="function not covered" >trigger(</span>ctx: BBContext) {
876
+ const db = <span class="cstat-no" title="statement not covered" >context.getAppDB()</span>
877
877
  let automation = <span class="cstat-no" title="statement not covered" >await db.get(ctx.params.id)</span>
878
878
  <span class="cstat-no" title="statement not covered" > await triggers.externalTrigger(automation, {</span>
879
879
  ...ctx.request.body,
@@ -885,7 +885,7 @@ exports.trigger = <span class="fstat-no" title="function not covered" >as</span>
885
885
  }
886
886
  }
887
887
  &nbsp;
888
- function prepareTestInput(input) {
888
+ function prepareTestInput(input: any) {
889
889
  // prepare the test parameters
890
890
  <span class="missing-if-branch" title="if path not taken" >I</span>if (input.id &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >input.row)</span> {
891
891
  <span class="cstat-no" title="statement not covered" > input.row._id = input.id</span>
@@ -896,8 +896,8 @@ function prepareTestInput(input) {
896
896
  return input
897
897
  }
898
898
  &nbsp;
899
- exports.test = async function (ctx) {
900
- const db = getAppDB()
899
+ export async function test(ctx: BBContext) {
900
+ const db = context.getAppDB()
901
901
  let automation = await db.get(ctx.params.id)
902
902
  await setTestFlag(automation._id)
903
903
  const testInput = prepareTestInput(ctx.request.body)
@@ -925,7 +925,7 @@ exports.test = async function (ctx) {
925
925
  <div class='footer quiet pad2 space-top1 center small'>
926
926
  Code coverage generated by
927
927
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
928
- at Wed Nov 23 2022 08:44:01 GMT+0000 (Coordinated Universal Time)
928
+ at Wed Nov 23 2022 15:12:32 GMT+0000 (Coordinated Universal Time)
929
929
  </div>
930
930
  <script src="../../../prettify.js"></script>
931
931
  <script>
@@ -133,7 +133,7 @@ export async function exportAppDump(ctx: any) {
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
136
- at Wed Nov 23 2022 08:44:01 GMT+0000 (Coordinated Universal Time)
136
+ at Wed Nov 23 2022 15:12:32 GMT+0000 (Coordinated Universal Time)
137
137
  </div>
138
138
  <script src="../../../prettify.js"></script>
139
139
  <script>