@budibase/server 2.2.12-alpha.4 → 2.2.12-alpha.40

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 (508) hide show
  1. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  2. package/builder/assets/index.80229ab4.css +6 -0
  3. package/builder/assets/{index.11f4795c.js → index.b8f2b884.js} +408 -419
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +4294 -4395
  6. package/coverage/coverage-final.json +278 -279
  7. package/coverage/lcov-report/index.html +395 -395
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +9 -9
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +6 -6
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +105 -105
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +10 -10
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +37 -37
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +8 -8
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +16 -16
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +12 -12
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +24 -24
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +18 -18
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +7 -7
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +83 -83
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +28 -28
  21. package/coverage/lcov-report/src/api/controllers/index.html +98 -98
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +5 -5
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +9 -9
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +11 -11
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +6 -6
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +14 -14
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +4 -4
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +20 -20
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +31 -31
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +26 -26
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +10 -10
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +3 -3
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +4 -4
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +4 -4
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +31 -31
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +58 -58
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +7 -7
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +25 -25
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +9 -9
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +8 -8
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +4 -4
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +4 -4
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +4 -4
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +15 -15
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +21 -21
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +21 -21
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +27 -27
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +8 -8
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +8 -8
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +11 -11
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +14 -14
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +14 -14
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +8 -8
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +12 -12
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +23 -23
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +16 -16
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +20 -20
  58. package/coverage/lcov-report/src/api/controllers/query/index.html +15 -15
  59. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +28 -28
  60. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  61. package/coverage/lcov-report/src/api/controllers/role.ts.html +9 -9
  62. package/coverage/lcov-report/src/api/controllers/routing.ts.html +10 -10
  63. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +55 -37
  64. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +44 -44
  65. package/coverage/lcov-report/src/api/controllers/row/index.html +58 -58
  66. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +36 -36
  67. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +77 -74
  68. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +146 -146
  69. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +33 -33
  70. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +28 -28
  71. package/coverage/lcov-report/src/api/controllers/screen.ts.html +12 -12
  72. package/coverage/lcov-report/src/api/controllers/script.ts.html +11 -11
  73. package/coverage/lcov-report/src/api/controllers/static/index.html +15 -15
  74. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +34 -34
  75. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +60 -60
  76. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +42 -42
  77. package/coverage/lcov-report/src/api/controllers/table/index.html +48 -48
  78. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +155 -68
  79. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +58 -61
  80. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +93 -96
  81. package/coverage/lcov-report/src/api/controllers/templates.ts.html +21 -21
  82. package/coverage/lcov-report/src/api/controllers/user.ts.html +103 -79
  83. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +64 -19
  84. package/coverage/lcov-report/src/api/controllers/view/index.html +38 -38
  85. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +74 -47
  86. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
  87. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +8 -8
  88. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +15 -15
  89. package/coverage/lcov-report/src/api/index.html +15 -15
  90. package/coverage/lcov-report/src/api/index.ts.html +31 -31
  91. package/coverage/lcov-report/src/api/routes/analytics.ts.html +10 -10
  92. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +11 -11
  93. package/coverage/lcov-report/src/api/routes/application.ts.html +13 -13
  94. package/coverage/lcov-report/src/api/routes/auth.ts.html +9 -9
  95. package/coverage/lcov-report/src/api/routes/automation.ts.html +14 -14
  96. package/coverage/lcov-report/src/api/routes/backup.ts.html +11 -11
  97. package/coverage/lcov-report/src/api/routes/cloud.ts.html +11 -11
  98. package/coverage/lcov-report/src/api/routes/component.ts.html +11 -11
  99. package/coverage/lcov-report/src/api/routes/datasource.ts.html +12 -12
  100. package/coverage/lcov-report/src/api/routes/deploy.ts.html +11 -11
  101. package/coverage/lcov-report/src/api/routes/dev.ts.html +17 -17
  102. package/coverage/lcov-report/src/api/routes/index.html +66 -66
  103. package/coverage/lcov-report/src/api/routes/index.ts.html +36 -36
  104. package/coverage/lcov-report/src/api/routes/integration.ts.html +11 -11
  105. package/coverage/lcov-report/src/api/routes/layout.ts.html +11 -11
  106. package/coverage/lcov-report/src/api/routes/metadata.ts.html +12 -12
  107. package/coverage/lcov-report/src/api/routes/migrations.ts.html +10 -10
  108. package/coverage/lcov-report/src/api/routes/permission.ts.html +12 -12
  109. package/coverage/lcov-report/src/api/routes/plugin.ts.html +10 -10
  110. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +16 -16
  111. package/coverage/lcov-report/src/api/routes/public/index.html +24 -24
  112. package/coverage/lcov-report/src/api/routes/public/index.ts.html +60 -60
  113. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +5 -5
  114. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +12 -12
  115. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +11 -11
  116. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +14 -14
  117. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +14 -14
  118. package/coverage/lcov-report/src/api/routes/public/tests/index.html +7 -7
  119. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +5 -5
  120. package/coverage/lcov-report/src/api/routes/public/users.ts.html +14 -14
  121. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +21 -21
  122. package/coverage/lcov-report/src/api/routes/public/utils/index.html +5 -5
  123. package/coverage/lcov-report/src/api/routes/query.ts.html +14 -14
  124. package/coverage/lcov-report/src/api/routes/role.ts.html +12 -12
  125. package/coverage/lcov-report/src/api/routes/routing.ts.html +11 -11
  126. package/coverage/lcov-report/src/api/routes/row.ts.html +13 -13
  127. package/coverage/lcov-report/src/api/routes/screen.ts.html +12 -12
  128. package/coverage/lcov-report/src/api/routes/script.ts.html +13 -13
  129. package/coverage/lcov-report/src/api/routes/static.ts.html +18 -18
  130. package/coverage/lcov-report/src/api/routes/table.ts.html +29 -98
  131. package/coverage/lcov-report/src/api/routes/templates.ts.html +11 -11
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +13 -13
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +23 -23
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +14 -14
  135. package/coverage/lcov-report/src/api/routes/user.ts.html +12 -12
  136. package/coverage/lcov-report/src/api/routes/utils/index.html +3 -3
  137. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +44 -44
  138. package/coverage/lcov-report/src/api/routes/view.ts.html +13 -13
  139. package/coverage/lcov-report/src/api/routes/webhook.ts.html +13 -13
  140. package/coverage/lcov-report/src/app.ts.html +22 -16
  141. package/coverage/lcov-report/src/automations/actions.ts.html +31 -31
  142. package/coverage/lcov-report/src/automations/automationUtils.ts.html +61 -61
  143. package/coverage/lcov-report/src/automations/bullboard.ts.html +19 -19
  144. package/coverage/lcov-report/src/automations/index.html +53 -53
  145. package/coverage/lcov-report/src/automations/index.ts.html +23 -23
  146. package/coverage/lcov-report/src/automations/logging/index.html +3 -3
  147. package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
  148. package/coverage/lcov-report/src/automations/steps/bash.ts.html +11 -11
  149. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +9 -9
  150. package/coverage/lcov-report/src/automations/steps/delay.ts.html +7 -7
  151. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +9 -9
  152. package/coverage/lcov-report/src/automations/steps/discord.ts.html +11 -11
  153. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +9 -9
  154. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +9 -9
  155. package/coverage/lcov-report/src/automations/steps/filter.ts.html +12 -12
  156. package/coverage/lcov-report/src/automations/steps/index.html +75 -75
  157. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +10 -10
  158. package/coverage/lcov-report/src/automations/steps/loop.ts.html +5 -5
  159. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +19 -19
  160. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +43 -43
  161. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +9 -9
  162. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +10 -10
  163. package/coverage/lcov-report/src/automations/steps/slack.ts.html +10 -10
  164. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +9 -9
  165. package/coverage/lcov-report/src/automations/steps/utils.ts.html +12 -12
  166. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +8 -8
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.html +15 -15
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +24 -24
  169. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +6 -6
  170. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +6 -6
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.html +17 -17
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +10 -10
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +6 -6
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +6 -6
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +6 -6
  176. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +6 -6
  177. package/coverage/lcov-report/src/automations/triggers.ts.html +53 -38
  178. package/coverage/lcov-report/src/automations/utils.ts.html +65 -65
  179. package/coverage/lcov-report/src/constants/index.html +19 -19
  180. package/coverage/lcov-report/src/constants/index.ts.html +80 -80
  181. package/coverage/lcov-report/src/constants/layouts.ts.html +9 -9
  182. package/coverage/lcov-report/src/constants/screens.ts.html +4 -4
  183. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -45
  184. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +8 -8
  185. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +8 -8
  186. package/coverage/lcov-report/src/db/defaultData/index.html +43 -43
  187. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +8 -8
  188. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +8 -8
  189. package/coverage/lcov-report/src/db/dynamoClient.ts.html +26 -26
  190. package/coverage/lcov-report/src/db/inMemoryView.ts.html +13 -13
  191. package/coverage/lcov-report/src/db/index.html +32 -32
  192. package/coverage/lcov-report/src/db/index.ts.html +10 -10
  193. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +38 -38
  194. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +7 -7
  195. package/coverage/lcov-report/src/db/linkedRows/index.html +37 -37
  196. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +40 -40
  197. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +25 -25
  198. package/coverage/lcov-report/src/db/newid.ts.html +5 -5
  199. package/coverage/lcov-report/src/db/utils.ts.html +75 -75
  200. package/coverage/lcov-report/src/definitions/automations.ts.html +5 -5
  201. package/coverage/lcov-report/src/definitions/datasource.ts.html +5 -5
  202. package/coverage/lcov-report/src/definitions/index.html +4 -4
  203. package/coverage/lcov-report/src/environment.ts.html +16 -16
  204. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +14 -14
  205. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +8 -8
  206. package/coverage/lcov-report/src/events/index.html +20 -20
  207. package/coverage/lcov-report/src/events/index.ts.html +7 -7
  208. package/coverage/lcov-report/src/events/utils.ts.html +11 -11
  209. package/coverage/lcov-report/src/index.html +36 -36
  210. package/coverage/lcov-report/src/index.ts.html +6 -6
  211. package/coverage/lcov-report/src/integrations/airtable.ts.html +10 -10
  212. package/coverage/lcov-report/src/integrations/arangodb.ts.html +9 -9
  213. package/coverage/lcov-report/src/integrations/base/index.html +20 -20
  214. package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
  215. package/coverage/lcov-report/src/integrations/base/sql.ts.html +37 -37
  216. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +21 -21
  217. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/couchdb.ts.html +10 -10
  219. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +15 -15
  220. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +9 -9
  221. package/coverage/lcov-report/src/integrations/firebase.ts.html +12 -12
  222. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +41 -41
  223. package/coverage/lcov-report/src/integrations/index.html +125 -125
  224. package/coverage/lcov-report/src/integrations/index.ts.html +40 -40
  225. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +31 -31
  226. package/coverage/lcov-report/src/integrations/mongodb.ts.html +421 -289
  227. package/coverage/lcov-report/src/integrations/mysql.ts.html +27 -27
  228. package/coverage/lcov-report/src/integrations/oracle.ts.html +31 -31
  229. package/coverage/lcov-report/src/integrations/postgres.ts.html +22 -22
  230. package/coverage/lcov-report/src/integrations/queries/index.html +5 -5
  231. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +6 -6
  232. package/coverage/lcov-report/src/integrations/redis.ts.html +8 -8
  233. package/coverage/lcov-report/src/integrations/rest.ts.html +28 -28
  234. package/coverage/lcov-report/src/integrations/s3.ts.html +17 -17
  235. package/coverage/lcov-report/src/integrations/snowflake.ts.html +15 -15
  236. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  237. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  238. package/coverage/lcov-report/src/integrations/utils.ts.html +49 -49
  239. package/coverage/lcov-report/src/middleware/appInfo.ts.html +11 -11
  240. package/coverage/lcov-report/src/middleware/authorized.ts.html +31 -19
  241. package/coverage/lcov-report/src/middleware/builder.ts.html +15 -15
  242. package/coverage/lcov-report/src/middleware/currentapp.ts.html +18 -15
  243. package/coverage/lcov-report/src/middleware/index.html +40 -40
  244. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +10 -10
  245. package/coverage/lcov-report/src/middleware/publicApi.ts.html +9 -9
  246. package/coverage/lcov-report/src/middleware/resourceId.ts.html +23 -23
  247. package/coverage/lcov-report/src/middleware/selfhost.ts.html +2 -2
  248. package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
  249. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +6 -6
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +7 -7
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +7 -7
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +31 -31
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +8 -8
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +13 -13
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +7 -7
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +7 -7
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +8 -8
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +21 -21
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +10 -10
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +19 -19
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +9 -9
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +13 -13
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +23 -23
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +26 -26
  265. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +7 -7
  266. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +14 -14
  267. package/coverage/lcov-report/src/migrations/functions/index.html +18 -18
  268. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +8 -8
  269. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +11 -11
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +11 -11
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +3 -3
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +6 -6
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +8 -8
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +7 -7
  275. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +4 -4
  276. package/coverage/lcov-report/src/migrations/index.html +15 -15
  277. package/coverage/lcov-report/src/migrations/index.ts.html +43 -43
  278. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +4 -4
  279. package/coverage/lcov-report/src/migrations/tests/index.html +6 -6
  280. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +3 -3
  281. package/coverage/lcov-report/src/sdk/app/applications/index.html +11 -11
  282. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +6 -6
  283. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +24 -24
  284. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +15 -15
  285. package/coverage/lcov-report/src/sdk/app/automations/index.html +7 -7
  286. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +5 -5
  287. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +8 -8
  288. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +5 -5
  289. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +30 -30
  290. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +24 -24
  291. package/coverage/lcov-report/src/sdk/app/backups/index.html +27 -27
  292. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +7 -7
  293. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +12 -12
  294. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +8 -8
  295. package/coverage/lcov-report/src/sdk/app/rows/index.html +8 -8
  296. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +6 -6
  297. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  298. package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
  299. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +16 -16
  300. package/coverage/lcov-report/src/sdk/index.html +5 -5
  301. package/coverage/lcov-report/src/sdk/index.ts.html +11 -11
  302. package/coverage/lcov-report/src/sdk/users/index.html +6 -6
  303. package/coverage/lcov-report/src/sdk/users/index.ts.html +5 -5
  304. package/coverage/lcov-report/src/sdk/users/utils.ts.html +29 -29
  305. package/coverage/lcov-report/src/startup.ts.html +40 -55
  306. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +108 -108
  307. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +20 -20
  308. package/coverage/lcov-report/src/tests/utilities/index.html +30 -30
  309. package/coverage/lcov-report/src/tests/utilities/index.ts.html +2 -2
  310. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +231 -42
  311. package/coverage/lcov-report/src/threads/automation.ts.html +202 -190
  312. package/coverage/lcov-report/src/threads/index.html +43 -43
  313. package/coverage/lcov-report/src/threads/index.ts.html +38 -38
  314. package/coverage/lcov-report/src/threads/query.ts.html +12 -12
  315. package/coverage/lcov-report/src/threads/utils.ts.html +26 -26
  316. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +4 -4
  317. package/coverage/lcov-report/src/utilities/centralPath.ts.html +5 -5
  318. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +10 -10
  319. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
  320. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +20 -20
  321. package/coverage/lcov-report/src/utilities/fileSystem/index.html +42 -42
  322. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  323. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +6 -6
  324. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +9 -9
  325. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +5 -5
  326. package/coverage/lcov-report/src/utilities/global.ts.html +54 -54
  327. package/coverage/lcov-report/src/utilities/index.html +74 -89
  328. package/coverage/lcov-report/src/utilities/index.ts.html +32 -32
  329. package/coverage/lcov-report/src/utilities/redis.ts.html +35 -35
  330. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  331. package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
  332. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +32 -32
  333. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +67 -67
  334. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +9 -9
  335. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +26 -26
  336. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
  337. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +8 -8
  338. package/coverage/lcov-report/src/utilities/security.ts.html +13 -13
  339. package/coverage/lcov-report/src/utilities/usageQuota/index.html +9 -9
  340. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +8 -8
  341. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +3 -3
  342. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  343. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +61 -34
  344. package/coverage/lcov-report/src/watch.ts.html +20 -20
  345. package/coverage/lcov-report/src/websocket.ts.html +5 -5
  346. package/coverage/lcov.info +10214 -9826
  347. package/dist/api/controllers/query/index.js +5 -2
  348. package/dist/api/controllers/row/ExternalRequest.js +7 -0
  349. package/dist/api/controllers/row/internal.js +12 -8
  350. package/dist/api/controllers/static/index.js +7 -4
  351. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  352. package/dist/api/controllers/table/external.js +8 -30
  353. package/dist/api/controllers/table/index.js +44 -15
  354. package/dist/api/controllers/table/internal.js +6 -7
  355. package/dist/api/controllers/table/utils.js +9 -9
  356. package/dist/api/controllers/user.js +14 -6
  357. package/dist/api/controllers/view/exporters.js +22 -6
  358. package/dist/api/controllers/view/index.js +19 -34
  359. package/dist/api/controllers/view/viewBuilder.js +15 -2
  360. package/dist/api/routes/analytics.js +2 -1
  361. package/dist/api/routes/apikeys.js +2 -1
  362. package/dist/api/routes/application.js +2 -1
  363. package/dist/api/routes/auth.js +2 -1
  364. package/dist/api/routes/automation.js +2 -1
  365. package/dist/api/routes/backup.js +2 -1
  366. package/dist/api/routes/cloud.js +2 -1
  367. package/dist/api/routes/component.js +2 -1
  368. package/dist/api/routes/datasource.js +2 -1
  369. package/dist/api/routes/deploy.js +2 -1
  370. package/dist/api/routes/dev.js +2 -1
  371. package/dist/api/routes/integration.js +2 -1
  372. package/dist/api/routes/layout.js +2 -1
  373. package/dist/api/routes/metadata.js +2 -1
  374. package/dist/api/routes/migrations.js +2 -1
  375. package/dist/api/routes/permission.js +2 -1
  376. package/dist/api/routes/query.js +2 -1
  377. package/dist/api/routes/role.js +2 -1
  378. package/dist/api/routes/routing.js +2 -1
  379. package/dist/api/routes/screen.js +2 -1
  380. package/dist/api/routes/script.js +2 -1
  381. package/dist/api/routes/static.js +6 -5
  382. package/dist/api/routes/table.js +8 -38
  383. package/dist/api/routes/templates.js +2 -1
  384. package/dist/api/routes/user.js +2 -1
  385. package/dist/api/routes/utils/validators.js +1 -1
  386. package/dist/api/routes/view.js +2 -1
  387. package/dist/api/routes/webhook.js +2 -1
  388. package/dist/app.js +9 -7
  389. package/dist/automations/logging/index.js +5 -25
  390. package/dist/automations/triggers.js +1 -0
  391. package/dist/db/index.js +5 -2
  392. package/dist/db/linkedRows/LinkController.js +2 -1
  393. package/dist/db/linkedRows/LinkDocument.js +2 -1
  394. package/dist/db/newid.js +4 -2
  395. package/dist/environment.js +2 -1
  396. package/dist/events/AutomationEmitter.js +2 -1
  397. package/dist/events/BudibaseEmitter.js +2 -1
  398. package/dist/events/index.js +2 -1
  399. package/dist/integrations/index.js +5 -5
  400. package/dist/integrations/mongodb.js +311 -271
  401. package/dist/middleware/authorized.js +2 -1
  402. package/dist/middleware/builder.js +4 -2
  403. package/dist/middleware/currentapp.js +6 -3
  404. package/dist/middleware/publicApi.js +4 -2
  405. package/dist/middleware/selfhost.js +4 -1
  406. package/dist/package.json +9 -7
  407. package/dist/startup.js +17 -17
  408. package/dist/threads/automation.js +9 -5
  409. package/dist/threads/index.js +4 -4
  410. package/dist/tsconfig.build.tsbuildinfo +1 -1
  411. package/dist/utilities/fileSystem/filesystem.js +3 -3
  412. package/dist/utilities/schema.js +108 -0
  413. package/dist/utilities/scriptRunner.js +2 -1
  414. package/dist/utilities/statusCodes.js +2 -1
  415. package/dist/utilities/workerRequests.js +2 -0
  416. package/dist/watch.js +2 -25
  417. package/jest.config.ts +5 -2
  418. package/package.json +10 -8
  419. package/src/api/controllers/query/index.ts +2 -2
  420. package/src/api/controllers/row/ExternalRequest.ts +6 -0
  421. package/src/api/controllers/row/internal.ts +10 -9
  422. package/src/api/controllers/static/index.ts +1 -1
  423. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  424. package/src/api/controllers/table/external.ts +10 -10
  425. package/src/api/controllers/table/index.ts +46 -17
  426. package/src/api/controllers/table/internal.ts +6 -7
  427. package/src/api/controllers/table/utils.ts +12 -13
  428. package/src/api/controllers/user.ts +21 -13
  429. package/src/api/controllers/view/exporters.ts +20 -5
  430. package/src/api/controllers/view/index.ts +21 -12
  431. package/src/api/controllers/view/tests/viewBuilder.spec.js +1 -1
  432. package/src/api/controllers/view/viewBuilder.ts +1 -1
  433. package/src/api/routes/analytics.ts +1 -1
  434. package/src/api/routes/apikeys.ts +1 -1
  435. package/src/api/routes/application.ts +1 -1
  436. package/src/api/routes/auth.ts +1 -1
  437. package/src/api/routes/automation.ts +1 -1
  438. package/src/api/routes/backup.ts +1 -1
  439. package/src/api/routes/cloud.ts +1 -1
  440. package/src/api/routes/component.ts +1 -1
  441. package/src/api/routes/datasource.ts +1 -1
  442. package/src/api/routes/deploy.ts +1 -1
  443. package/src/api/routes/dev.ts +1 -1
  444. package/src/api/routes/integration.ts +1 -1
  445. package/src/api/routes/layout.ts +1 -1
  446. package/src/api/routes/metadata.ts +1 -1
  447. package/src/api/routes/migrations.ts +1 -1
  448. package/src/api/routes/permission.ts +1 -1
  449. package/src/api/routes/query.ts +1 -1
  450. package/src/api/routes/role.ts +1 -1
  451. package/src/api/routes/routing.ts +1 -1
  452. package/src/api/routes/screen.ts +1 -1
  453. package/src/api/routes/script.ts +1 -1
  454. package/src/api/routes/static.ts +2 -2
  455. package/src/api/routes/table.ts +16 -39
  456. package/src/api/routes/templates.ts +1 -1
  457. package/src/api/routes/tests/misc.spec.js +4 -10
  458. package/src/api/routes/tests/plugin.spec.ts +10 -10
  459. package/src/api/routes/tests/table.spec.js +8 -30
  460. package/src/api/routes/tests/user.spec.js +20 -1
  461. package/src/api/routes/tests/utilities/TestFunctions.ts +1 -1
  462. package/src/api/routes/user.ts +1 -1
  463. package/src/api/routes/utils/validators.ts +1 -1
  464. package/src/api/routes/view.ts +1 -1
  465. package/src/api/routes/webhook.ts +1 -1
  466. package/src/app.ts +5 -3
  467. package/src/automations/logging/index.ts +1 -1
  468. package/src/automations/tests/loop.spec.ts +45 -0
  469. package/src/automations/triggers.ts +6 -1
  470. package/src/db/index.ts +1 -1
  471. package/src/db/linkedRows/LinkController.ts +1 -1
  472. package/src/db/linkedRows/LinkDocument.ts +1 -1
  473. package/src/db/newid.ts +1 -1
  474. package/src/db/tests/linkController.spec.js +1 -1
  475. package/src/environment.ts +1 -1
  476. package/src/events/AutomationEmitter.ts +1 -1
  477. package/src/events/BudibaseEmitter.ts +1 -1
  478. package/src/events/index.ts +1 -1
  479. package/src/integrations/index.ts +4 -4
  480. package/src/integrations/mongodb.ts +315 -271
  481. package/src/integrations/tests/rest.spec.ts +15 -13
  482. package/src/middleware/authorized.ts +5 -1
  483. package/src/middleware/builder.ts +1 -1
  484. package/src/middleware/currentapp.ts +4 -3
  485. package/src/middleware/publicApi.ts +1 -1
  486. package/src/middleware/selfhost.ts +1 -1
  487. package/src/middleware/tests/authorized.spec.js +1 -1
  488. package/src/middleware/tests/currentapp.spec.js +1 -1
  489. package/src/middleware/tests/selfhost.spec.js +1 -1
  490. package/src/startup.ts +3 -8
  491. package/src/tests/jestEnv.ts +13 -0
  492. package/src/tests/jestSetup.ts +0 -14
  493. package/src/tests/utilities/TestConfiguration.ts +1 -1
  494. package/src/tests/utilities/structures.ts +65 -2
  495. package/src/threads/automation.ts +9 -5
  496. package/src/threads/index.ts +1 -1
  497. package/src/utilities/fileSystem/filesystem.ts +1 -1
  498. package/src/utilities/schema.ts +141 -0
  499. package/src/utilities/scriptRunner.ts +1 -1
  500. package/src/utilities/statusCodes.ts +1 -1
  501. package/src/utilities/workerRequests.ts +10 -1
  502. package/src/watch.ts +1 -1
  503. package/builder/assets/index.fa480d5b.css +0 -6
  504. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +0 -106
  505. package/dist/utilities/csvParser.js +0 -152
  506. package/src/utilities/csvParser.ts +0 -161
  507. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  508. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -8,6 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.destroy = exports.executeV2 = exports.executeV1 = exports.preview = exports.find = exports.save = exports.import = exports.fetch = void 0;
13
16
  const utils_1 = require("../../../db/utils");
@@ -16,11 +19,11 @@ const threads_1 = require("../../../threads");
16
19
  const datasource_1 = require("../datasource");
17
20
  const import_1 = require("./import");
18
21
  const utils_2 = require("../../../threads/utils");
19
- const environment_1 = require("../../../environment");
22
+ const environment_1 = __importDefault(require("../../../environment"));
20
23
  const pro_1 = require("@budibase/pro");
21
24
  const backend_core_1 = require("@budibase/backend-core");
22
25
  const Runner = new threads_1.Thread(threads_1.ThreadType.QUERY, {
23
- timeoutMs: environment_1.QUERY_THREAD_TIMEOUT || 10000,
26
+ timeoutMs: environment_1.default.QUERY_THREAD_TIMEOUT || 10000,
24
27
  });
25
28
  // simple function to append "readable" to all read queries
26
29
  function enrichQueries(input) {
@@ -562,6 +562,7 @@ class ExternalRequest {
562
562
  return fields;
563
563
  }
564
564
  run(config) {
565
+ var _a;
565
566
  return __awaiter(this, void 0, void 0, function* () {
566
567
  const { operation, tableId } = this;
567
568
  let { datasourceId, tableName } = (0, utils_3.breakExternalTableId)(tableId);
@@ -583,6 +584,12 @@ class ExternalRequest {
583
584
  }
584
585
  // look for specific components of config which may not be considered acceptable
585
586
  let { id, row, filters, sort, paginate, rows } = cleanupConfig(config, table);
587
+ //if the sort column is a formula, remove it
588
+ for (let sortColumn of Object.keys(sort || {})) {
589
+ if (((_a = table.schema[sortColumn]) === null || _a === void 0 ? void 0 : _a.type) === "formula") {
590
+ sort === null || sort === void 0 ? true : delete sort[sortColumn];
591
+ }
592
+ }
586
593
  filters = buildFilters(id, filters || {}, table);
587
594
  const relationships = this.buildRelationships(table);
588
595
  // clean up row on ingress using schema
@@ -61,7 +61,7 @@ const utils_2 = require("../view/utils");
61
61
  const fp_1 = require("lodash/fp");
62
62
  const backend_core_1 = require("@budibase/backend-core");
63
63
  const staticFormula_1 = require("./staticFormula");
64
- const exporters = __importStar(require("../view/exporters"));
64
+ const exporters_1 = require("../view/exporters");
65
65
  const fileSystem_1 = require("../../../utilities/fileSystem");
66
66
  const CALCULATION_TYPES = {
67
67
  SUM: "sum",
@@ -418,13 +418,17 @@ function exportRows(ctx) {
418
418
  else {
419
419
  rows = result;
420
420
  }
421
- let headers = Object.keys(rows[0]);
422
- // @ts-ignore
423
- const exporter = exporters[format];
424
- const filename = `export.${format}`;
425
- // send down the file
426
- ctx.attachment(filename);
427
- return (0, fileSystem_1.apiFileReturn)(exporter(headers, rows));
421
+ if (format === exporters_1.Format.CSV) {
422
+ ctx.attachment("export.csv");
423
+ return (0, fileSystem_1.apiFileReturn)((0, exporters_1.csv)(Object.keys(rows[0]), rows));
424
+ }
425
+ else if (format === exporters_1.Format.JSON) {
426
+ ctx.attachment("export.json");
427
+ return (0, fileSystem_1.apiFileReturn)((0, exporters_1.json)(rows));
428
+ }
429
+ else {
430
+ throw "Format not recognised";
431
+ }
428
432
  });
429
433
  }
430
434
  exports.exportRows = exportRows;
@@ -8,6 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.getSignedUploadURL = exports.serveClientLibrary = exports.serveBuilderPreview = exports.serveApp = exports.deleteObjects = exports.uploadFile = exports.serveBuilder = exports.toggleBetaUiFeature = void 0;
13
16
  require("svelte/register");
@@ -17,7 +20,7 @@ const uuid = require("uuid");
17
20
  const constants_1 = require("../../../constants");
18
21
  const { processString } = require("@budibase/string-templates");
19
22
  const { loadHandlebarsFile, NODE_MODULES_PATH, TOP_LEVEL_PATH, } = require("../../../utilities/fileSystem");
20
- const env = require("../../../environment");
23
+ const environment_1 = __importDefault(require("../../../environment"));
21
24
  const { DocumentType } = require("../../../db/utils");
22
25
  const { context, objectStore, utils } = require("@budibase/backend-core");
23
26
  const AWS = require("aws-sdk");
@@ -101,13 +104,13 @@ const serveApp = function (ctx) {
101
104
  const db = context.getAppDB({ skip_setup: true });
102
105
  const appInfo = yield db.get(DocumentType.APP_METADATA);
103
106
  let appId = context.getAppId();
104
- if (!env.isJest()) {
107
+ if (!environment_1.default.isJest()) {
105
108
  const App = require("./templates/BudibaseApp.svelte").default;
106
109
  const plugins = objectStore.enrichPluginURLs(appInfo.usedPlugins);
107
110
  const { head, html, css } = App.render({
108
111
  metaImage: "https://res.cloudinary.com/daog6scxm/image/upload/v1666109324/meta-images/budibase-meta-image_uukc1m.png",
109
112
  title: appInfo.name,
110
- production: env.isProd(),
113
+ production: environment_1.default.isProd(),
111
114
  appId,
112
115
  clientLibPath: objectStore.clientLibraryUrl(appId, appInfo.version),
113
116
  usedPlugins: plugins,
@@ -131,7 +134,7 @@ const serveBuilderPreview = function (ctx) {
131
134
  return __awaiter(this, void 0, void 0, function* () {
132
135
  const db = context.getAppDB({ skip_setup: true });
133
136
  const appInfo = yield db.get(DocumentType.APP_METADATA);
134
- if (!env.isJest()) {
137
+ if (!environment_1.default.isJest()) {
135
138
  let appId = context.getAppId();
136
139
  const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`);
137
140
  ctx.body = yield processString(previewHbs, {
@@ -2,7 +2,6 @@
2
2
  export let title = ""
3
3
  export let favicon = ""
4
4
  export let metaImage = ""
5
- export let url = ""
6
5
 
7
6
  export let clientLibPath
8
7
  export let usedPlugins
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -40,9 +17,9 @@ const utils_1 = require("../../../integrations/utils");
40
17
  const utils_2 = require("./utils");
41
18
  const constants_1 = require("../../../constants");
42
19
  const query_1 = require("../../../integrations/base/query");
43
- const csvParser = __importStar(require("../../../utilities/csvParser"));
44
20
  const external_1 = require("../row/external");
45
21
  const backend_core_1 = require("@budibase/backend-core");
22
+ const schema_1 = require("../../../utilities/schema");
46
23
  const types_1 = require("@budibase/types");
47
24
  const sdk_1 = __importDefault(require("../../../sdk"));
48
25
  const { cloneDeep } = require("lodash/fp");
@@ -176,7 +153,7 @@ function save(ctx) {
176
153
  const table = ctx.request.body;
177
154
  const renamed = table === null || table === void 0 ? void 0 : table._rename;
178
155
  // can't do this right now
179
- delete table.dataImport;
156
+ delete table.rows;
180
157
  const datasourceId = getDatasourceId(ctx.request.body);
181
158
  // table doesn't exist already, note that it is created
182
159
  if (!table._id) {
@@ -279,15 +256,16 @@ exports.destroy = destroy;
279
256
  function bulkImport(ctx) {
280
257
  return __awaiter(this, void 0, void 0, function* () {
281
258
  const table = yield sdk_1.default.tables.getTable(ctx.params.tableId);
282
- const { dataImport } = ctx.request.body;
283
- if (!dataImport || !dataImport.schema || !dataImport.csvString) {
259
+ const { rows } = ctx.request.body;
260
+ const schema = table.schema;
261
+ if (!rows || !(0, schema_1.isRows)(rows) || !(0, schema_1.isSchema)(schema)) {
284
262
  ctx.throw(400, "Provided data import information is invalid.");
285
263
  }
286
- const rows = yield csvParser.transform(Object.assign(Object.assign({}, dataImport), { existingTable: table }));
264
+ const parsedRows = yield (0, schema_1.parse)(rows, schema);
287
265
  yield (0, external_1.handleRequest)(types_1.Operation.BULK_CREATE, table._id, {
288
- rows,
266
+ rows: parsedRows,
289
267
  });
290
- yield backend_core_1.events.rows.imported(table, "csv", rows.length);
268
+ yield backend_core_1.events.rows.imported(table, parsedRows.length);
291
269
  return table;
292
270
  });
293
271
  }
@@ -35,14 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.validateCSVSchema = exports.bulkImport = exports.destroy = exports.save = exports.find = exports.fetch = void 0;
38
+ exports.validateExistingTableImport = exports.validateNewTableImport = exports.csvToJson = exports.bulkImport = exports.destroy = exports.save = exports.find = exports.fetch = void 0;
39
39
  const internal = __importStar(require("./internal"));
40
40
  const external = __importStar(require("./external"));
41
- const csvParser = __importStar(require("../../../utilities/csvParser"));
41
+ const schema_1 = require("../../../utilities/schema");
42
42
  const utils_1 = require("../../../integrations/utils");
43
43
  const utils_2 = require("../../../db/utils");
44
44
  const backend_core_1 = require("@budibase/backend-core");
45
45
  const sdk_1 = __importDefault(require("../../../sdk"));
46
+ const csvtojson_1 = __importDefault(require("csvtojson"));
46
47
  function pickApi({ tableId, table }) {
47
48
  if (table && !tableId) {
48
49
  tableId = table._id;
@@ -87,7 +88,7 @@ function save(ctx) {
87
88
  return __awaiter(this, void 0, void 0, function* () {
88
89
  const appId = ctx.appId;
89
90
  const table = ctx.request.body;
90
- const importFormat = table.dataImport && table.dataImport.csvString ? "csv" : undefined;
91
+ const isImport = table.rows;
91
92
  const savedTable = yield pickApi({ table }).save(ctx);
92
93
  if (!table._id) {
93
94
  yield backend_core_1.events.table.created(savedTable);
@@ -95,8 +96,8 @@ function save(ctx) {
95
96
  else {
96
97
  yield backend_core_1.events.table.updated(savedTable);
97
98
  }
98
- if (importFormat) {
99
- yield backend_core_1.events.table.imported(savedTable, importFormat);
99
+ if (isImport) {
100
+ yield backend_core_1.events.table.imported(savedTable);
100
101
  }
101
102
  ctx.status = 200;
102
103
  ctx.message = `Table ${table.name} saved successfully.`;
@@ -132,19 +133,47 @@ function bulkImport(ctx) {
132
133
  });
133
134
  }
134
135
  exports.bulkImport = bulkImport;
135
- function validateCSVSchema(ctx) {
136
+ function csvToJson(ctx) {
136
137
  return __awaiter(this, void 0, void 0, function* () {
137
- // tableId being specified means its an import to an existing table
138
- const { csvString, schema = {}, tableId } = ctx.request.body;
139
- let existingTable;
138
+ const { csvString } = ctx.request.body;
139
+ const result = yield (0, csvtojson_1.default)().fromString(csvString);
140
+ ctx.status = 200;
141
+ ctx.body = result;
142
+ });
143
+ }
144
+ exports.csvToJson = csvToJson;
145
+ function validateNewTableImport(ctx) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ const { rows, schema } = ctx.request.body;
148
+ if ((0, schema_1.isRows)(rows) && (0, schema_1.isSchema)(schema)) {
149
+ ctx.status = 200;
150
+ ctx.body = (0, schema_1.validate)(rows, schema);
151
+ }
152
+ else {
153
+ ctx.status = 422;
154
+ }
155
+ });
156
+ }
157
+ exports.validateNewTableImport = validateNewTableImport;
158
+ function validateExistingTableImport(ctx) {
159
+ return __awaiter(this, void 0, void 0, function* () {
160
+ const { rows, tableId } = ctx.request.body;
161
+ let schema = null;
140
162
  if (tableId) {
141
- existingTable = yield sdk_1.default.tables.getTable(tableId);
163
+ const table = yield sdk_1.default.tables.getTable(tableId);
164
+ schema = table.schema;
142
165
  }
143
- let result = yield csvParser.parse(csvString, schema);
144
- if (existingTable) {
145
- result = csvParser.updateSchema({ schema: result, existingTable });
166
+ else {
167
+ ctx.status = 422;
168
+ return;
169
+ }
170
+ if (tableId && (0, schema_1.isRows)(rows) && (0, schema_1.isSchema)(schema)) {
171
+ ctx.status = 200;
172
+ ctx.body = (0, schema_1.validate)(rows, schema);
173
+ }
174
+ else {
175
+ ctx.status = 422;
146
176
  }
147
- ctx.body = { schema: result };
148
177
  });
149
178
  }
150
- exports.validateCSVSchema = validateCSVSchema;
179
+ exports.validateExistingTableImport = validateExistingTableImport;
@@ -29,13 +29,12 @@ const utils_1 = require("../../../db/utils");
29
29
  const constants_1 = require("../../../constants");
30
30
  const utils_2 = require("./utils");
31
31
  const backend_core_1 = require("@budibase/backend-core");
32
- const environment_1 = require("../../../environment");
32
+ const environment_1 = __importDefault(require("../../../environment"));
33
33
  const rowProcessor_1 = require("../../../utilities/rowProcessor");
34
34
  const bulkFormula_1 = require("./bulkFormula");
35
35
  const pro_1 = require("@budibase/pro");
36
36
  const lodash_1 = require("lodash");
37
37
  const fp_1 = require("lodash/fp");
38
- const environment_2 = __importDefault(require("../../../environment"));
39
38
  const sdk_1 = __importDefault(require("../../../sdk"));
40
39
  function checkAutoColumns(table, oldTable) {
41
40
  if (!table.schema) {
@@ -58,7 +57,7 @@ function checkAutoColumns(table, oldTable) {
58
57
  function save(ctx) {
59
58
  return __awaiter(this, void 0, void 0, function* () {
60
59
  const db = backend_core_1.context.getAppDB();
61
- const _a = ctx.request.body, { dataImport } = _a, rest = __rest(_a, ["dataImport"]);
60
+ const _a = ctx.request.body, { rows } = _a, rest = __rest(_a, ["rows"]);
62
61
  let tableToSave = Object.assign({ type: "table", _id: (0, utils_1.generateTableID)(), views: {} }, rest);
63
62
  // if the table obj had an _id then it will have been retrieved
64
63
  let oldTable;
@@ -76,7 +75,7 @@ function save(ctx) {
76
75
  const tableSaveFunctions = new utils_2.TableSaveFunctions({
77
76
  user: ctx.user,
78
77
  oldTable,
79
- dataImport,
78
+ importRows: rows,
80
79
  });
81
80
  tableToSave = yield tableSaveFunctions.before(tableToSave);
82
81
  // make sure that types don't change of a column, have to remove
@@ -166,7 +165,7 @@ function destroy(ctx) {
166
165
  // don't remove the table itself until very end
167
166
  yield db.remove(tableToDelete._id, tableToDelete._rev);
168
167
  // remove table search index
169
- if (!(0, environment_1.isTest)() || environment_2.default.COUCH_DB_URL) {
168
+ if (!environment_1.default.isTest() || environment_1.default.COUCH_DB_URL) {
170
169
  const currentIndexes = yield db.getIndexes();
171
170
  const existingIndex = currentIndexes.indexes.find((existing) => existing.name === `search:${ctx.params.tableId}`);
172
171
  if (existingIndex) {
@@ -187,8 +186,8 @@ exports.destroy = destroy;
187
186
  function bulkImport(ctx) {
188
187
  return __awaiter(this, void 0, void 0, function* () {
189
188
  const table = yield sdk_1.default.tables.getTable(ctx.params.tableId);
190
- const { dataImport } = ctx.request.body;
191
- yield (0, utils_2.handleDataImport)(ctx.user, table, dataImport);
189
+ const { rows } = ctx.request.body;
190
+ yield (0, utils_2.handleDataImport)(ctx.user, table, rows);
192
191
  return table;
193
192
  });
194
193
  }
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.TableSaveFunctions = exports.hasTypeChanged = exports.areSwitchableTypes = exports.foreignKeyStructure = exports.generateJunctionTableName = exports.generateForeignKey = exports.checkForViewUpdates = exports.checkStaticTables = exports.handleSearchIndexes = exports.handleDataImport = exports.importToRows = exports.makeSureTableUpToDate = exports.checkForColumnUpdates = exports.clearColumns = void 0;
16
- const csvParser_1 = require("../../../utilities/csvParser");
16
+ const schema_1 = require("../../../utilities/schema");
17
17
  const utils_1 = require("../../../db/utils");
18
18
  const lodash_1 = require("lodash");
19
19
  const constants_1 = require("../../../constants");
@@ -124,19 +124,19 @@ function importToRows(data, table, user = {}) {
124
124
  return finalData;
125
125
  }
126
126
  exports.importToRows = importToRows;
127
- function handleDataImport(user, table, dataImport) {
127
+ function handleDataImport(user, table, rows) {
128
128
  return __awaiter(this, void 0, void 0, function* () {
129
- if (!dataImport || !dataImport.csvString) {
129
+ const schema = table.schema;
130
+ if (!rows || !(0, schema_1.isRows)(rows) || !(0, schema_1.isSchema)(schema)) {
130
131
  return table;
131
132
  }
132
133
  const db = backend_core_1.context.getAppDB();
133
- // Populate the table with rows imported from CSV in a bulk update
134
- const data = yield (0, csvParser_1.transform)(Object.assign(Object.assign({}, dataImport), { existingTable: table }));
134
+ const data = (0, schema_1.parse)(rows, schema);
135
135
  let finalData = importToRows(data, table, user);
136
136
  yield pro_1.quotas.addRows(finalData.length, () => db.bulkDocs(finalData), {
137
137
  tableId: table._id,
138
138
  });
139
- yield backend_core_1.events.rows.imported(table, "csv", finalData.length);
139
+ yield backend_core_1.events.rows.imported(table, finalData.length);
140
140
  return table;
141
141
  });
142
142
  }
@@ -195,11 +195,11 @@ function checkStaticTables(table) {
195
195
  }
196
196
  exports.checkStaticTables = checkStaticTables;
197
197
  class TableSaveFunctions {
198
- constructor({ user, oldTable, dataImport }) {
198
+ constructor({ user, oldTable, importRows }) {
199
199
  this.db = backend_core_1.context.getAppDB();
200
200
  this.user = user;
201
201
  this.oldTable = oldTable;
202
- this.dataImport = dataImport;
202
+ this.importRows = importRows;
203
203
  // any rows that need updated
204
204
  this.rows = [];
205
205
  }
@@ -225,7 +225,7 @@ class TableSaveFunctions {
225
225
  after(table) {
226
226
  return __awaiter(this, void 0, void 0, function* () {
227
227
  table = yield handleSearchIndexes(table);
228
- table = yield handleDataImport(this.user, table, this.dataImport);
228
+ table = yield handleDataImport(this.user, table, this.importRows);
229
229
  return table;
230
230
  });
231
231
  }
@@ -20,11 +20,13 @@ const users_1 = require("../../utilities/users");
20
20
  const backend_core_1 = require("@budibase/backend-core");
21
21
  const sdk_1 = __importDefault(require("../../sdk"));
22
22
  function syncUser(ctx) {
23
+ var _a;
23
24
  return __awaiter(this, void 0, void 0, function* () {
24
25
  let deleting = false, user;
25
26
  const userId = ctx.params.id;
27
+ const previousUser = (_a = ctx.request.body) === null || _a === void 0 ? void 0 : _a.previousUser;
26
28
  try {
27
- user = yield (0, global_1.getRawGlobalUser)(userId);
29
+ user = (yield (0, global_1.getRawGlobalUser)(userId));
28
30
  }
29
31
  catch (err) {
30
32
  if (err && err.status === 404) {
@@ -35,6 +37,9 @@ function syncUser(ctx) {
35
37
  throw err;
36
38
  }
37
39
  }
40
+ let previousApps = previousUser
41
+ ? Object.keys(previousUser.roles).map(appId => appId)
42
+ : [];
38
43
  const roles = deleting ? {} : user.roles;
39
44
  // remove props which aren't useful to metadata
40
45
  delete user.password;
@@ -51,8 +56,9 @@ function syncUser(ctx) {
51
56
  .filter(entry => entry[1] !== backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC)
52
57
  .map(([appId]) => appId);
53
58
  }
54
- for (let prodAppId of prodAppIds) {
59
+ for (let prodAppId of new Set([...prodAppIds, ...previousApps])) {
55
60
  const roleId = roles[prodAppId];
61
+ const deleteFromApp = !roleId;
56
62
  const devAppId = backend_core_1.db.getDevelopmentAppID(prodAppId);
57
63
  for (let appId of [prodAppId, devAppId]) {
58
64
  if (!(yield backend_core_1.db.dbExists(appId))) {
@@ -66,20 +72,22 @@ function syncUser(ctx) {
66
72
  metadata = yield db.get(metadataId);
67
73
  }
68
74
  catch (err) {
69
- if (deleting) {
75
+ if (deleteFromApp) {
70
76
  return;
71
77
  }
72
78
  metadata = {
73
79
  tableId: utils_2.InternalTables.USER_METADATA,
74
80
  };
75
81
  }
82
+ if (deleteFromApp) {
83
+ yield db.remove(metadata);
84
+ return;
85
+ }
76
86
  // assign the roleId for the metadata doc
77
87
  if (roleId) {
78
88
  metadata.roleId = roleId;
79
89
  }
80
- let combined = !deleting
81
- ? sdk_1.default.users.combineMetadataAndUser(user, metadata)
82
- : Object.assign(Object.assign({}, metadata), { status: backend_core_1.constants.UserStatus.INACTIVE, metadata: backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC });
90
+ let combined = sdk_1.default.users.combineMetadataAndUser(user, metadata);
83
91
  // if its null then there was no updates required
84
92
  if (combined) {
85
93
  yield db.put(combined);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExportFormats = exports.json = exports.csv = void 0;
3
+ exports.isFormat = exports.Format = exports.jsonWithSchema = exports.json = exports.csv = void 0;
4
4
  function csv(headers, rows) {
5
5
  let csv = headers.map(key => `"${key}"`).join(",");
6
6
  for (let row of rows) {
@@ -18,11 +18,27 @@ function csv(headers, rows) {
18
18
  return csv;
19
19
  }
20
20
  exports.csv = csv;
21
- function json(headers, rows) {
21
+ function json(rows) {
22
22
  return JSON.stringify(rows, undefined, 2);
23
23
  }
24
24
  exports.json = json;
25
- exports.ExportFormats = {
26
- CSV: "csv",
27
- JSON: "json",
28
- };
25
+ function jsonWithSchema(schema, rows) {
26
+ const newSchema = {};
27
+ Object.values(schema).forEach(column => {
28
+ if (!column.autocolumn) {
29
+ newSchema[column.name] = column;
30
+ }
31
+ });
32
+ return JSON.stringify({ schema: newSchema, rows }, undefined, 2);
33
+ }
34
+ exports.jsonWithSchema = jsonWithSchema;
35
+ var Format;
36
+ (function (Format) {
37
+ Format["CSV"] = "csv";
38
+ Format["JSON"] = "json";
39
+ Format["JSON_WITH_SCHEMA"] = "jsonWithSchema";
40
+ })(Format = exports.Format || (exports.Format = {}));
41
+ function isFormat(format) {
42
+ return Object.values(Format).includes(format);
43
+ }
44
+ exports.isFormat = isFormat;
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -49,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
49
26
  exports.exportView = exports.destroy = exports.filterEvents = exports.calculationEvents = exports.save = exports.fetch = void 0;
50
27
  const viewBuilder_1 = __importDefault(require("./viewBuilder"));
51
28
  const fileSystem_1 = require("../../../utilities/fileSystem");
52
- const exporters = __importStar(require("./exporters"));
29
+ const exporters_1 = require("./exporters");
53
30
  const utils_1 = require("./utils");
54
31
  const row_1 = require("../row");
55
32
  const constants_1 = require("../../../constants");
@@ -160,8 +137,8 @@ function exportView(ctx) {
160
137
  const viewName = decodeURIComponent(ctx.query.view);
161
138
  const view = yield (0, utils_1.getView)(viewName);
162
139
  const format = ctx.query.format;
163
- if (!format || !Object.values(exporters.ExportFormats).includes(format)) {
164
- ctx.throw(400, "Format must be specified, either csv or json");
140
+ if (!(0, exporters_1.isFormat)(format)) {
141
+ ctx.throw(400, "Format must be specified, either csv, json or jsonWithSchema");
165
142
  }
166
143
  if (view) {
167
144
  ctx.params.viewName = viewName;
@@ -199,7 +176,7 @@ function exportView(ctx) {
199
176
  delete schema[column];
200
177
  });
201
178
  // make sure no "undefined" entries appear in the CSV
202
- if (format === exporters.ExportFormats.CSV) {
179
+ if (format === exporters_1.Format.CSV) {
203
180
  const schemaKeys = Object.keys(schema);
204
181
  for (let key of schemaKeys) {
205
182
  for (let row of rows) {
@@ -209,13 +186,21 @@ function exportView(ctx) {
209
186
  }
210
187
  }
211
188
  }
212
- // Export part
213
- let headers = Object.keys(schema);
214
- const exporter = format === "csv" ? exporters.csv : exporters.json;
215
- const filename = `${viewName}.${format}`;
216
- // send down the file
217
- ctx.attachment(filename);
218
- ctx.body = (0, fileSystem_1.apiFileReturn)(exporter(headers, rows));
189
+ if (format === exporters_1.Format.CSV) {
190
+ ctx.attachment(`${viewName}.csv`);
191
+ ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.csv)(Object.keys(schema), rows));
192
+ }
193
+ else if (format === exporters_1.Format.JSON) {
194
+ ctx.attachment(`${viewName}.json`);
195
+ ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.json)(rows));
196
+ }
197
+ else if (format === exporters_1.Format.JSON_WITH_SCHEMA) {
198
+ ctx.attachment(`${viewName}.json`);
199
+ ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.jsonWithSchema)(schema, rows));
200
+ }
201
+ else {
202
+ throw "Format not recognised";
203
+ }
219
204
  if (viewName.startsWith(utils_2.DocumentType.TABLE)) {
220
205
  yield backend_core_1.events.table.exported(table, format);
221
206
  }
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
  const TOKEN_MAP = {
3
4
  EQUALS: "===",
4
5
  NOT_EQUALS: "!==",
@@ -102,7 +103,18 @@ function parseFilterExpression(filters) {
102
103
  function parseEmitExpression(field, groupBy) {
103
104
  return `emit(doc["${groupBy || "_id"}"], doc["${field}"]);`;
104
105
  }
105
- module.exports = function ({ field, tableId, groupBy, filters = [], calculation, }) {
106
+ /**
107
+ * Return a fully parsed CouchDB compliant view definition
108
+ * that will be stored in the design document in the database.
109
+ *
110
+ * @param {Object} viewDefinition - the JSON definition for a custom view.
111
+ * field: field that calculations will be performed on
112
+ * tableId: tableId of the table this view was created from
113
+ * groupBy: field that calculations will be grouped by. Field must be present for this to be useful
114
+ * filters: Array of filter objects containing predicates that are parsed into a JS expression
115
+ * calculation: an optional calculation to be performed over the view data.
116
+ */
117
+ function default_1({ field, tableId, groupBy, filters = [], calculation, }) {
106
118
  // first filter can't have a conjunction
107
119
  if (filters && filters.length > 0 && filters[0].conjunction) {
108
120
  delete filters[0].conjunction;
@@ -136,4 +148,5 @@ module.exports = function ({ field, tableId, groupBy, filters = [], calculation,
136
148
  ${emitExpression}
137
149
  }
138
150
  }` }, reduction);
139
- };
151
+ }
152
+ exports.default = default_1;
@@ -25,9 +25,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
28
29
  const router_1 = __importDefault(require("@koa/router"));
29
30
  const controller = __importStar(require("../controllers/analytics"));
30
31
  const router = new router_1.default();
31
32
  router.get("/api/bbtel", controller.isEnabled);
32
33
  router.post("/api/bbtel/ping", controller.ping);
33
- module.exports = router;
34
+ exports.default = router;