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

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 (509) hide show
  1. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  2. package/builder/assets/{index.11f4795c.js → index.5d8a522b.js} +408 -419
  3. package/builder/assets/index.80229ab4.css +6 -0
  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/tsconfig.json +2 -1
  504. package/builder/assets/index.fa480d5b.css +0 -6
  505. package/coverage/lcov-report/src/utilities/statusCodes.ts.html +0 -106
  506. package/dist/utilities/csvParser.js +0 -152
  507. package/src/utilities/csvParser.ts +0 -161
  508. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  509. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -17,7 +17,7 @@ const { budibaseTempDir } = require("../budibaseDir");
17
17
  const fs = require("fs");
18
18
  const { join } = require("path");
19
19
  const uuid = require("uuid/v4");
20
- const env = require("../../environment");
20
+ const environment_1 = __importDefault(require("../../environment"));
21
21
  const tar_1 = __importDefault(require("tar"));
22
22
  exports.TOP_LEVEL_PATH = join(__dirname, "..", "..", "..");
23
23
  /**
@@ -38,7 +38,7 @@ const init = () => {
38
38
  }
39
39
  }
40
40
  const clientLibPath = join(budibaseTempDir(), "budibase-client.js");
41
- if (env.isTest() && !fs.existsSync(clientLibPath)) {
41
+ if (environment_1.default.isTest() && !fs.existsSync(clientLibPath)) {
42
42
  fs.copyFileSync(require.resolve("@budibase/client"), clientLibPath);
43
43
  }
44
44
  };
@@ -48,7 +48,7 @@ exports.init = init;
48
48
  * everything required to function is ready.
49
49
  */
50
50
  const checkDevelopmentEnvironment = () => {
51
- if (!env.isDev() || env.isTest()) {
51
+ if (!environment_1.default.isDev() || environment_1.default.isTest()) {
52
52
  return;
53
53
  }
54
54
  if (!fs.existsSync(budibaseTempDir())) {
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse = exports.validate = exports.isRows = exports.isSchema = void 0;
4
+ const constants_1 = require("../constants");
5
+ const PARSERS = {
6
+ [constants_1.FieldTypes.NUMBER]: (attribute) => {
7
+ if (!attribute) {
8
+ return attribute;
9
+ }
10
+ return Number(attribute);
11
+ },
12
+ [constants_1.FieldTypes.DATETIME]: (attribute) => {
13
+ if (!attribute) {
14
+ return attribute;
15
+ }
16
+ return new Date(attribute).toISOString();
17
+ },
18
+ };
19
+ function isSchema(schema) {
20
+ return (typeof schema === "object" &&
21
+ Object.values(schema).every(rawColumn => {
22
+ const column = rawColumn;
23
+ return (column !== null &&
24
+ typeof column === "object" &&
25
+ typeof column.type === "string" &&
26
+ Object.values(constants_1.FieldTypes).includes(column.type));
27
+ }));
28
+ }
29
+ exports.isSchema = isSchema;
30
+ function isRows(rows) {
31
+ return Array.isArray(rows) && rows.every(row => typeof row === "object");
32
+ }
33
+ exports.isRows = isRows;
34
+ function validate(rows, schema) {
35
+ const results = {
36
+ schemaValidation: {},
37
+ allValid: false,
38
+ invalidColumns: [],
39
+ };
40
+ rows.forEach(row => {
41
+ Object.entries(row).forEach(([columnName, columnData]) => {
42
+ var _a, _b;
43
+ const columnType = (_a = schema[columnName]) === null || _a === void 0 ? void 0 : _a.type;
44
+ const isAutoColumn = (_b = schema[columnName]) === null || _b === void 0 ? void 0 : _b.autocolumn;
45
+ // If the columnType is not a string, then it's not present in the schema, and should be added to the invalid columns array
46
+ if (typeof columnType !== "string") {
47
+ results.invalidColumns.push(columnName);
48
+ }
49
+ else if (
50
+ // If there's no data for this field don't bother with further checks
51
+ // If the field is already marked as invalid there's no need for further checks
52
+ results.schemaValidation[columnName] === false ||
53
+ columnData == null ||
54
+ isAutoColumn) {
55
+ return;
56
+ }
57
+ else if (columnType === constants_1.FieldTypes.NUMBER &&
58
+ isNaN(Number(columnData))) {
59
+ // If provided must be a valid number
60
+ results.schemaValidation[columnName] = false;
61
+ }
62
+ else if (
63
+ // If provided must be a valid date
64
+ columnType === constants_1.FieldTypes.DATETIME &&
65
+ isNaN(new Date(columnData).getTime())) {
66
+ results.schemaValidation[columnName] = false;
67
+ }
68
+ else {
69
+ results.schemaValidation[columnName] = true;
70
+ }
71
+ });
72
+ });
73
+ results.allValid =
74
+ Object.values(results.schemaValidation).length > 0 &&
75
+ Object.values(results.schemaValidation).every(column => column);
76
+ // Select unique values
77
+ results.invalidColumns = [...new Set(results.invalidColumns)];
78
+ return results;
79
+ }
80
+ exports.validate = validate;
81
+ function parse(rows, schema) {
82
+ return rows.map(row => {
83
+ const parsedRow = {};
84
+ Object.entries(row).forEach(([columnName, columnData]) => {
85
+ var _a;
86
+ if (!(columnName in schema) || ((_a = schema[columnName]) === null || _a === void 0 ? void 0 : _a.autocolumn)) {
87
+ // Objects can be present in the row data but not in the schema, so make sure we don't proceed in such a case
88
+ return;
89
+ }
90
+ const columnType = schema[columnName].type;
91
+ if (columnType === constants_1.FieldTypes.NUMBER) {
92
+ // If provided must be a valid number
93
+ parsedRow[columnName] = columnData ? Number(columnData) : columnData;
94
+ }
95
+ else if (columnType === constants_1.FieldTypes.DATETIME) {
96
+ // If provided must be a valid date
97
+ parsedRow[columnName] = columnData
98
+ ? new Date(columnData).toISOString()
99
+ : columnData;
100
+ }
101
+ else {
102
+ parsedRow[columnName] = columnData;
103
+ }
104
+ });
105
+ return parsedRow;
106
+ });
107
+ }
108
+ exports.parse = parse;
@@ -2,6 +2,7 @@
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
5
6
  const node_fetch_1 = __importDefault(require("node-fetch"));
6
7
  const vm2_1 = require("vm2");
7
8
  const JS_TIMEOUT_MS = 1000;
@@ -22,4 +23,4 @@ class ScriptRunner {
22
23
  return this.results.out;
23
24
  }
24
25
  }
25
- module.exports = ScriptRunner;
26
+ exports.default = ScriptRunner;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
- module.exports = {
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
3
4
  OK: 200,
4
5
  UNAUTHORIZED: 401,
5
6
  FORBIDDEN: 403,
@@ -41,6 +41,8 @@ function request(ctx, request) {
41
41
  if (ctx && ctx.headers) {
42
42
  request.headers = ctx.headers;
43
43
  }
44
+ // add x-budibase-correlation-id header
45
+ backend_core_1.logging.correlation.setHeader(request.headers);
44
46
  return request;
45
47
  }
46
48
  exports.request = request;
package/dist/watch.js CHANGED
@@ -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) {
@@ -37,13 +14,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
14
  Object.defineProperty(exports, "__esModule", { value: true });
38
15
  exports.watch = void 0;
39
16
  const path_1 = __importDefault(require("path"));
40
- const env = __importStar(require("./environment"));
17
+ const environment_1 = __importDefault(require("./environment"));
41
18
  const chokidar_1 = __importDefault(require("chokidar"));
42
19
  const fs_1 = __importDefault(require("fs"));
43
20
  const backend_core_1 = require("@budibase/backend-core");
44
21
  const plugin_1 = require("./api/controllers/plugin");
45
22
  function watch() {
46
- const watchPath = path_1.default.join(env.PLUGINS_DIR, "./**/*.tar.gz");
23
+ const watchPath = path_1.default.join(environment_1.default.PLUGINS_DIR, "./**/*.tar.gz");
47
24
  chokidar_1.default
48
25
  .watch(watchPath, {
49
26
  ignored: "**/node_modules",
package/jest.config.ts CHANGED
@@ -2,15 +2,18 @@ import { Config } from "@jest/types"
2
2
  import * as fs from "fs"
3
3
 
4
4
  const config: Config.InitialOptions = {
5
- preset: "ts-jest",
6
5
  testEnvironment: "node",
7
- setupFiles: ["./src/tests/jestSetup.ts"],
6
+ setupFiles: ["./src/tests/jestEnv.ts"],
7
+ setupFilesAfterEnv: ["./src/tests/jestSetup.ts"],
8
8
  collectCoverageFrom: [
9
9
  "src/**/*.{js,ts}",
10
10
  // The use of coverage with couchdb view functions breaks tests
11
11
  "!src/db/views/staticViews.*",
12
12
  ],
13
13
  coverageReporters: ["lcov", "json", "clover"],
14
+ transform: {
15
+ "^.+\\.ts?$": "@swc/jest",
16
+ },
14
17
  }
15
18
 
16
19
  if (!process.env.CI) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "2.2.12-alpha.4",
4
+ "version": "2.2.12-alpha.41",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -43,11 +43,11 @@
43
43
  "license": "GPL-3.0",
44
44
  "dependencies": {
45
45
  "@apidevtools/swagger-parser": "10.0.3",
46
- "@budibase/backend-core": "2.2.12-alpha.4",
47
- "@budibase/client": "2.2.12-alpha.4",
48
- "@budibase/pro": "2.2.12-alpha.3",
49
- "@budibase/string-templates": "2.2.12-alpha.4",
50
- "@budibase/types": "2.2.12-alpha.4",
46
+ "@budibase/backend-core": "2.2.12-alpha.41",
47
+ "@budibase/client": "2.2.12-alpha.41",
48
+ "@budibase/pro": "2.2.12-alpha.40",
49
+ "@budibase/string-templates": "2.2.12-alpha.41",
50
+ "@budibase/types": "2.2.12-alpha.41",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -77,7 +77,7 @@
77
77
  "joi": "17.6.0",
78
78
  "js-yaml": "4.1.0",
79
79
  "jsonschema": "1.4.0",
80
- "knex": "0.95.15",
80
+ "knex": "2.4.0",
81
81
  "koa": "2.13.4",
82
82
  "koa-body": "4.2.0",
83
83
  "koa-compress": "4.0.1",
@@ -123,6 +123,8 @@
123
123
  "@babel/preset-env": "7.16.11",
124
124
  "@budibase/standard-components": "^0.9.139",
125
125
  "@jest/test-sequencer": "24.9.0",
126
+ "@swc/core": "^1.3.25",
127
+ "@swc/jest": "^0.2.24",
126
128
  "@types/apidoc": "0.50.0",
127
129
  "@types/bson": "4.2.0",
128
130
  "@types/global-agent": "2.1.1",
@@ -167,5 +169,5 @@
167
169
  "optionalDependencies": {
168
170
  "oracledb": "5.3.0"
169
171
  },
170
- "gitHead": "90b3aaddb3f131078b05acf21651c8535b9c7d03"
172
+ "gitHead": "b5da4944f2a33a3a70df34852833b83f536cde92"
171
173
  }
@@ -4,12 +4,12 @@ import { Thread, ThreadType } from "../../../threads"
4
4
  import { save as saveDatasource } from "../datasource"
5
5
  import { RestImporter } from "./import"
6
6
  import { invalidateDynamicVariables } from "../../../threads/utils"
7
- import { QUERY_THREAD_TIMEOUT } from "../../../environment"
7
+ import env from "../../../environment"
8
8
  import { quotas } from "@budibase/pro"
9
9
  import { events, context, utils, constants } from "@budibase/backend-core"
10
10
 
11
11
  const Runner = new Thread(ThreadType.QUERY, {
12
- timeoutMs: QUERY_THREAD_TIMEOUT || 10000,
12
+ timeoutMs: env.QUERY_THREAD_TIMEOUT || 10000,
13
13
  })
14
14
 
15
15
  // simple function to append "readable" to all read queries
@@ -681,6 +681,12 @@ export class ExternalRequest {
681
681
  config,
682
682
  table
683
683
  )
684
+ //if the sort column is a formula, remove it
685
+ for (let sortColumn of Object.keys(sort || {})) {
686
+ if (table.schema[sortColumn]?.type === "formula") {
687
+ delete sort?.[sortColumn]
688
+ }
689
+ }
684
690
  filters = buildFilters(id, filters || {}, table)
685
691
  const relationships = this.buildRelationships(table)
686
692
  // clean up row on ingress using schema
@@ -27,7 +27,7 @@ import {
27
27
  import { cloneDeep } from "lodash/fp"
28
28
  import { context, db as dbCore } from "@budibase/backend-core"
29
29
  import { finaliseRow, updateRelatedFormula } from "./staticFormula"
30
- import * as exporters from "../view/exporters"
30
+ import { csv, json, jsonWithSchema, Format, isFormat } from "../view/exporters"
31
31
  import { apiFileReturn } from "../../../utilities/fileSystem"
32
32
  import {
33
33
  Ctx,
@@ -412,14 +412,15 @@ export async function exportRows(ctx: Ctx) {
412
412
  rows = result
413
413
  }
414
414
 
415
- let headers = Object.keys(rows[0])
416
- // @ts-ignore
417
- const exporter = exporters[format]
418
- const filename = `export.${format}`
419
-
420
- // send down the file
421
- ctx.attachment(filename)
422
- return apiFileReturn(exporter(headers, rows))
415
+ if (format === Format.CSV) {
416
+ ctx.attachment("export.csv")
417
+ return apiFileReturn(csv(Object.keys(rows[0]), rows))
418
+ } else if (format === Format.JSON) {
419
+ ctx.attachment("export.json")
420
+ return apiFileReturn(json(rows))
421
+ } else {
422
+ throw "Format not recognised"
423
+ }
423
424
  }
424
425
 
425
426
  export async function fetchEnrichedRow(ctx: Ctx) {
@@ -10,7 +10,7 @@ const {
10
10
  NODE_MODULES_PATH,
11
11
  TOP_LEVEL_PATH,
12
12
  } = require("../../../utilities/fileSystem")
13
- const env = require("../../../environment")
13
+ import env from "../../../environment"
14
14
  const { DocumentType } = require("../../../db/utils")
15
15
  const { context, objectStore, utils } = require("@budibase/backend-core")
16
16
  const AWS = require("aws-sdk")
@@ -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
@@ -10,9 +10,9 @@ import {
10
10
  } from "./utils"
11
11
  import { FieldTypes, RelationshipTypes } from "../../../constants"
12
12
  import { makeExternalQuery } from "../../../integrations/base/query"
13
- import * as csvParser from "../../../utilities/csvParser"
14
13
  import { handleRequest } from "../row/external"
15
14
  import { events, context } from "@budibase/backend-core"
15
+ import { parse, isRows, isSchema } from "../../../utilities/schema"
16
16
  import {
17
17
  Datasource,
18
18
  Table,
@@ -197,7 +197,7 @@ export async function save(ctx: BBContext) {
197
197
  const table: TableRequest = ctx.request.body
198
198
  const renamed = table?._rename
199
199
  // can't do this right now
200
- delete table.dataImport
200
+ delete table.rows
201
201
  const datasourceId = getDatasourceId(ctx.request.body)!
202
202
  // table doesn't exist already, note that it is created
203
203
  if (!table._id) {
@@ -338,17 +338,17 @@ export async function destroy(ctx: BBContext) {
338
338
 
339
339
  export async function bulkImport(ctx: BBContext) {
340
340
  const table = await sdk.tables.getTable(ctx.params.tableId)
341
- const { dataImport } = ctx.request.body
342
- if (!dataImport || !dataImport.schema || !dataImport.csvString) {
341
+ const { rows }: { rows: unknown } = ctx.request.body
342
+ const schema: unknown = table.schema
343
+
344
+ if (!rows || !isRows(rows) || !isSchema(schema)) {
343
345
  ctx.throw(400, "Provided data import information is invalid.")
344
346
  }
345
- const rows = await csvParser.transform({
346
- ...dataImport,
347
- existingTable: table,
348
- })
347
+
348
+ const parsedRows = await parse(rows, schema)
349
349
  await handleRequest(Operation.BULK_CREATE, table._id!, {
350
- rows,
350
+ rows: parsedRows,
351
351
  })
352
- await events.rows.imported(table, "csv", rows.length)
352
+ await events.rows.imported(table, parsedRows.length)
353
353
  return table
354
354
  }
@@ -1,11 +1,16 @@
1
1
  import * as internal from "./internal"
2
2
  import * as external from "./external"
3
- import * as csvParser from "../../../utilities/csvParser"
3
+ import {
4
+ validate as validateSchema,
5
+ isSchema,
6
+ isRows,
7
+ } from "../../../utilities/schema"
4
8
  import { isExternalTable, isSQL } from "../../../integrations/utils"
5
9
  import { getDatasourceParams } from "../../../db/utils"
6
10
  import { context, events } from "@budibase/backend-core"
7
11
  import { Table, BBContext } from "@budibase/types"
8
12
  import sdk from "../../../sdk"
13
+ import csv from "csvtojson"
9
14
 
10
15
  function pickApi({ tableId, table }: { tableId?: string; table?: Table }) {
11
16
  if (table && !tableId) {
@@ -56,16 +61,16 @@ export async function find(ctx: BBContext) {
56
61
  export async function save(ctx: BBContext) {
57
62
  const appId = ctx.appId
58
63
  const table = ctx.request.body
59
- const importFormat =
60
- table.dataImport && table.dataImport.csvString ? "csv" : undefined
64
+ const isImport = table.rows
65
+
61
66
  const savedTable = await pickApi({ table }).save(ctx)
62
67
  if (!table._id) {
63
68
  await events.table.created(savedTable)
64
69
  } else {
65
70
  await events.table.updated(savedTable)
66
71
  }
67
- if (importFormat) {
68
- await events.table.imported(savedTable, importFormat)
72
+ if (isImport) {
73
+ await events.table.imported(savedTable)
69
74
  }
70
75
  ctx.status = 200
71
76
  ctx.message = `Table ${table.name} saved successfully.`
@@ -96,19 +101,43 @@ export async function bulkImport(ctx: BBContext) {
96
101
  ctx.body = { message: `Bulk rows created.` }
97
102
  }
98
103
 
99
- export async function validateCSVSchema(ctx: BBContext) {
100
- // tableId being specified means its an import to an existing table
101
- const { csvString, schema = {}, tableId } = ctx.request.body
102
- let existingTable
104
+ export async function csvToJson(ctx: BBContext) {
105
+ const { csvString } = ctx.request.body
106
+
107
+ const result = await csv().fromString(csvString)
108
+
109
+ ctx.status = 200
110
+ ctx.body = result
111
+ }
112
+
113
+ export async function validateNewTableImport(ctx: BBContext) {
114
+ const { rows, schema }: { rows: unknown; schema: unknown } = ctx.request.body
115
+
116
+ if (isRows(rows) && isSchema(schema)) {
117
+ ctx.status = 200
118
+ ctx.body = validateSchema(rows, schema)
119
+ } else {
120
+ ctx.status = 422
121
+ }
122
+ }
123
+
124
+ export async function validateExistingTableImport(ctx: BBContext) {
125
+ const { rows, tableId }: { rows: unknown; tableId: unknown } =
126
+ ctx.request.body
127
+
128
+ let schema = null
103
129
  if (tableId) {
104
- existingTable = await sdk.tables.getTable(tableId)
130
+ const table = await sdk.tables.getTable(tableId)
131
+ schema = table.schema
132
+ } else {
133
+ ctx.status = 422
134
+ return
105
135
  }
106
- let result: Record<string, any> | undefined = await csvParser.parse(
107
- csvString,
108
- schema
109
- )
110
- if (existingTable) {
111
- result = csvParser.updateSchema({ schema: result, existingTable })
136
+
137
+ if (tableId && isRows(rows) && isSchema(schema)) {
138
+ ctx.status = 200
139
+ ctx.body = validateSchema(rows, schema)
140
+ } else {
141
+ ctx.status = 422
112
142
  }
113
- ctx.body = { schema: result }
114
143
  }
@@ -3,7 +3,7 @@ import { getRowParams, generateTableID } from "../../../db/utils"
3
3
  import { FieldTypes } from "../../../constants"
4
4
  import { TableSaveFunctions, hasTypeChanged, handleDataImport } from "./utils"
5
5
  import { context } from "@budibase/backend-core"
6
- import { isTest } from "../../../environment"
6
+ import env from "../../../environment"
7
7
  import {
8
8
  cleanupAttachments,
9
9
  fixAutoColumnSubType,
@@ -13,7 +13,6 @@ import { Table } from "@budibase/types"
13
13
  import { quotas } from "@budibase/pro"
14
14
  import { isEqual } from "lodash"
15
15
  import { cloneDeep } from "lodash/fp"
16
- import env from "../../../environment"
17
16
  import sdk from "../../../sdk"
18
17
 
19
18
  function checkAutoColumns(table: Table, oldTable: Table) {
@@ -36,7 +35,7 @@ function checkAutoColumns(table: Table, oldTable: Table) {
36
35
 
37
36
  export async function save(ctx: any) {
38
37
  const db = context.getAppDB()
39
- const { dataImport, ...rest } = ctx.request.body
38
+ const { rows, ...rest } = ctx.request.body
40
39
  let tableToSave = {
41
40
  type: "table",
42
41
  _id: generateTableID(),
@@ -62,7 +61,7 @@ export async function save(ctx: any) {
62
61
  const tableSaveFunctions = new TableSaveFunctions({
63
62
  user: ctx.user,
64
63
  oldTable,
65
- dataImport,
64
+ importRows: rows,
66
65
  })
67
66
  tableToSave = await tableSaveFunctions.before(tableToSave)
68
67
 
@@ -164,7 +163,7 @@ export async function destroy(ctx: any) {
164
163
  await db.remove(tableToDelete._id, tableToDelete._rev)
165
164
 
166
165
  // remove table search index
167
- if (!isTest() || env.COUCH_DB_URL) {
166
+ if (!env.isTest() || env.COUCH_DB_URL) {
168
167
  const currentIndexes = await db.getIndexes()
169
168
  const existingIndex = currentIndexes.indexes.find(
170
169
  (existing: any) => existing.name === `search:${ctx.params.tableId}`
@@ -186,7 +185,7 @@ export async function destroy(ctx: any) {
186
185
 
187
186
  export async function bulkImport(ctx: any) {
188
187
  const table = await sdk.tables.getTable(ctx.params.tableId)
189
- const { dataImport } = ctx.request.body
190
- await handleDataImport(ctx.user, table, dataImport)
188
+ const { rows } = ctx.request.body
189
+ await handleDataImport(ctx.user, table, rows)
191
190
  return table
192
191
  }
@@ -1,4 +1,4 @@
1
- import { transform } from "../../../utilities/csvParser"
1
+ import { parse, isSchema, isRows } from "../../../utilities/schema"
2
2
  import { getRowParams, generateRowID, InternalTables } from "../../../db/utils"
3
3
  import { isEqual } from "lodash"
4
4
  import { AutoFieldSubTypes, FieldTypes } from "../../../constants"
@@ -128,24 +128,23 @@ export function importToRows(data: any, table: any, user: any = {}) {
128
128
  return finalData
129
129
  }
130
130
 
131
- export async function handleDataImport(user: any, table: any, dataImport: any) {
132
- if (!dataImport || !dataImport.csvString) {
131
+ export async function handleDataImport(user: any, table: any, rows: any) {
132
+ const schema: unknown = table.schema
133
+
134
+ if (!rows || !isRows(rows) || !isSchema(schema)) {
133
135
  return table
134
136
  }
135
137
 
136
138
  const db = context.getAppDB()
137
- // Populate the table with rows imported from CSV in a bulk update
138
- const data = await transform({
139
- ...dataImport,
140
- existingTable: table,
141
- })
139
+ const data = parse(rows, schema)
142
140
 
143
141
  let finalData: any = importToRows(data, table, user)
144
142
 
145
143
  await quotas.addRows(finalData.length, () => db.bulkDocs(finalData), {
146
144
  tableId: table._id,
147
145
  })
148
- await events.rows.imported(table, "csv", finalData.length)
146
+
147
+ await events.rows.imported(table, finalData.length)
149
148
  return table
150
149
  }
151
150
 
@@ -210,14 +209,14 @@ class TableSaveFunctions {
210
209
  db: any
211
210
  user: any
212
211
  oldTable: any
213
- dataImport: any
212
+ importRows: any
214
213
  rows: any
215
214
 
216
- constructor({ user, oldTable, dataImport }: any) {
215
+ constructor({ user, oldTable, importRows }: any) {
217
216
  this.db = context.getAppDB()
218
217
  this.user = user
219
218
  this.oldTable = oldTable
220
- this.dataImport = dataImport
219
+ this.importRows = importRows
221
220
  // any rows that need updated
222
221
  this.rows = []
223
222
  }
@@ -241,7 +240,7 @@ class TableSaveFunctions {
241
240
  // after saving
242
241
  async after(table: any) {
243
242
  table = await handleSearchIndexes(table)
244
- table = await handleDataImport(this.user, table, this.dataImport)
243
+ table = await handleDataImport(this.user, table, this.importRows)
245
244
  return table
246
245
  }
247
246