@budibase/server 2.3.17 → 2.3.18-alpha.1

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 (467) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.06e34d35.js → index.7089444f.js} +361 -361
  3. package/builder/assets/{index.4488f38d.css → index.7e76c039.css} +1 -1
  4. package/builder/index.html +2 -2
  5. package/dist/api/controllers/query/index.js +2 -0
  6. package/dist/api/controllers/row/ExternalRequest.js +4 -2
  7. package/dist/api/controllers/row/external.js +12 -1
  8. package/dist/api/controllers/row/staticFormula.js +5 -1
  9. package/dist/api/controllers/table/external.js +8 -8
  10. package/dist/api/index.js +1 -21
  11. package/dist/app.js +7 -1
  12. package/dist/constants/index.js +4 -24
  13. package/dist/db/defaultData/datasource_bb_default.js +6 -5
  14. package/dist/db/linkedRows/LinkController.js +9 -8
  15. package/dist/ddApm.js +11 -0
  16. package/dist/elasticApm.js +14 -0
  17. package/dist/integrations/base/sql.js +10 -3
  18. package/dist/package.json +12 -8
  19. package/dist/sdk/app/backups/exports.js +8 -2
  20. package/dist/sdk/app/datasources/datasources.js +3 -0
  21. package/dist/tsconfig.build.tsbuildinfo +1 -1
  22. package/dist/utilities/redis.js +2 -0
  23. package/dist/utilities/retry.js +30 -0
  24. package/jest-testcontainers-config.js +8 -0
  25. package/jest.config.ts +34 -22
  26. package/package.json +13 -9
  27. package/scripts/load/create-many-apps.js +24 -0
  28. package/scripts/load/create-many-rows.js +30 -0
  29. package/scripts/load/utils.js +66 -0
  30. package/specs/openapi.json +6 -6
  31. package/specs/openapi.yaml +3 -3
  32. package/specs/resources/query.js +1 -1
  33. package/specs/resources/table.js +1 -1
  34. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  35. package/src/api/controllers/query/index.ts +2 -0
  36. package/src/api/controllers/row/ExternalRequest.ts +6 -2
  37. package/src/api/controllers/row/external.ts +13 -1
  38. package/src/api/controllers/row/staticFormula.ts +7 -1
  39. package/src/api/controllers/table/external.ts +3 -2
  40. package/src/api/index.ts +3 -22
  41. package/src/api/routes/public/applications.ts +0 -1
  42. package/src/api/routes/public/tests/compare.spec.js +1 -1
  43. package/src/api/routes/public/tests/users.spec.js +1 -1
  44. package/src/api/routes/public/tests/utils.ts +25 -8
  45. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  46. package/src/api/routes/tests/analytics.spec.js +4 -1
  47. package/src/api/routes/tests/apikeys.spec.js +1 -1
  48. package/src/api/routes/tests/application.spec.ts +20 -6
  49. package/src/api/routes/tests/auth.spec.js +2 -2
  50. package/src/api/routes/tests/automation.spec.js +6 -2
  51. package/src/api/routes/tests/backup.spec.ts +4 -14
  52. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +11 -15
  53. package/src/api/routes/tests/component.spec.js +1 -1
  54. package/src/api/routes/tests/datasource.spec.ts +20 -3
  55. package/src/api/routes/tests/dev.spec.js +1 -1
  56. package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
  57. package/src/api/routes/tests/integration.spec.js +1 -1
  58. package/src/api/routes/tests/layout.spec.js +1 -1
  59. package/src/api/routes/tests/metadata.spec.js +1 -1
  60. package/src/api/routes/tests/misc.spec.js +1 -1
  61. package/src/api/routes/tests/permissions.spec.js +4 -1
  62. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
  63. package/src/api/routes/tests/role.spec.js +6 -1
  64. package/src/api/routes/tests/routing.spec.js +1 -1
  65. package/src/api/routes/tests/row.spec.js +11 -3
  66. package/src/api/routes/tests/screen.spec.js +1 -1
  67. package/src/api/routes/tests/static.spec.js +2 -13
  68. package/src/api/routes/tests/table.spec.js +1 -1
  69. package/src/api/routes/tests/templates.spec.js +1 -1
  70. package/src/api/routes/tests/user.spec.js +11 -12
  71. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  72. package/src/api/routes/tests/utilities/index.ts +5 -3
  73. package/src/api/routes/tests/view.spec.js +4 -1
  74. package/src/api/routes/tests/webhook.spec.js +11 -2
  75. package/src/app.ts +10 -1
  76. package/src/automations/tests/automation.spec.js +4 -4
  77. package/src/automations/tests/bash.spec.js +1 -1
  78. package/src/automations/tests/discord.spec.js +1 -1
  79. package/src/automations/tests/executeQuery.spec.js +2 -3
  80. package/src/automations/tests/executeScript.spec.js +1 -1
  81. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  82. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  83. package/src/automations/tests/serverLog.spec.js +1 -1
  84. package/src/automations/tests/updateRow.spec.js +1 -1
  85. package/src/automations/tests/zapier.spec.js +1 -1
  86. package/src/constants/index.ts +1 -23
  87. package/src/db/defaultData/datasource_bb_default.ts +6 -10
  88. package/src/db/linkedRows/LinkController.ts +2 -1
  89. package/src/db/tests/linkController.spec.js +4 -1
  90. package/src/db/tests/linkTests.spec.js +1 -1
  91. package/src/ddApm.ts +7 -0
  92. package/src/elasticApm.ts +10 -0
  93. package/src/integration-test/postgres.spec.ts +762 -0
  94. package/src/integrations/base/sql.ts +15 -5
  95. package/src/integrations/oracle.ts +1 -1
  96. package/src/integrations/tests/couchdb.spec.ts +0 -2
  97. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  98. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  99. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  100. package/src/migrations/tests/index.spec.ts +13 -20
  101. package/src/sdk/app/backups/exports.ts +8 -2
  102. package/src/sdk/app/datasources/datasources.ts +3 -0
  103. package/src/tests/jestEnv.ts +8 -11
  104. package/src/tests/jestSetup.ts +9 -7
  105. package/src/tests/logging.ts +34 -0
  106. package/src/tests/utilities/TestConfiguration.ts +166 -92
  107. package/src/tests/utilities/structures.ts +16 -2
  108. package/src/utilities/redis.ts +2 -0
  109. package/src/utilities/retry.ts +18 -0
  110. package/tsconfig.build.json +1 -0
  111. package/coverage/clover.xml +0 -11771
  112. package/coverage/coverage-final.json +0 -284
  113. package/coverage/lcov-report/base.css +0 -224
  114. package/coverage/lcov-report/block-navigation.js +0 -87
  115. package/coverage/lcov-report/favicon.png +0 -0
  116. package/coverage/lcov-report/index.html +0 -1031
  117. package/coverage/lcov-report/prettify.css +0 -1
  118. package/coverage/lcov-report/prettify.js +0 -2
  119. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  120. package/coverage/lcov-report/sorter.js +0 -196
  121. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
  122. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +0 -247
  123. package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -1987
  124. package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
  125. package/coverage/lcov-report/src/api/controllers/automation.ts.html +0 -940
  126. package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
  127. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +0 -442
  128. package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
  129. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +0 -1135
  130. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -262
  131. package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
  132. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -694
  133. package/coverage/lcov-report/src/api/controllers/dev.ts.html +0 -472
  134. package/coverage/lcov-report/src/api/controllers/index.html +0 -431
  135. package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
  136. package/coverage/lcov-report/src/api/controllers/layout.ts.html +0 -226
  137. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +0 -211
  138. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +0 -127
  139. package/coverage/lcov-report/src/api/controllers/permission.ts.html +0 -619
  140. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
  141. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
  142. package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
  143. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -499
  144. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
  145. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
  146. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
  147. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
  148. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -385
  149. package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
  150. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
  151. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
  152. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
  153. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
  154. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
  155. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
  156. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
  157. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
  158. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
  159. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
  160. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -325
  161. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
  162. package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
  163. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
  164. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
  165. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
  166. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
  167. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
  168. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
  169. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
  170. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
  171. package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
  172. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -1000
  173. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +0 -235
  174. package/coverage/lcov-report/src/api/controllers/role.ts.html +0 -397
  175. package/coverage/lcov-report/src/api/controllers/routing.ts.html +0 -370
  176. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2305
  177. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +0 -931
  178. package/coverage/lcov-report/src/api/controllers/row/index.html +0 -206
  179. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
  180. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +0 -1609
  181. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +0 -1678
  182. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +0 -577
  183. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +0 -556
  184. package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
  185. package/coverage/lcov-report/src/api/controllers/script.ts.html +0 -121
  186. package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
  187. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -679
  188. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +0 -649
  189. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +0 -1153
  190. package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
  191. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +0 -514
  192. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -658
  193. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1273
  194. package/coverage/lcov-report/src/api/controllers/templates.ts.html +0 -214
  195. package/coverage/lcov-report/src/api/controllers/user.ts.html +0 -634
  196. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +0 -214
  197. package/coverage/lcov-report/src/api/controllers/view/index.html +0 -161
  198. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +0 -661
  199. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +0 -580
  200. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +0 -694
  201. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -385
  202. package/coverage/lcov-report/src/api/index.html +0 -116
  203. package/coverage/lcov-report/src/api/index.ts.html +0 -352
  204. package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
  205. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
  206. package/coverage/lcov-report/src/api/routes/application.ts.html +0 -256
  207. package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
  208. package/coverage/lcov-report/src/api/routes/automation.ts.html +0 -346
  209. package/coverage/lcov-report/src/api/routes/backup.ts.html +0 -127
  210. package/coverage/lcov-report/src/api/routes/cloud.ts.html +0 -139
  211. package/coverage/lcov-report/src/api/routes/component.ts.html +0 -127
  212. package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
  213. package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -145
  214. package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
  215. package/coverage/lcov-report/src/api/routes/index.html +0 -551
  216. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -298
  217. package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
  218. package/coverage/lcov-report/src/api/routes/layout.ts.html +0 -133
  219. package/coverage/lcov-report/src/api/routes/metadata.ts.html +0 -199
  220. package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
  221. package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
  222. package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
  223. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -673
  224. package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
  225. package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
  226. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
  227. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -340
  228. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
  229. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
  230. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
  231. package/coverage/lcov-report/src/api/routes/public/tests/index.html +0 -116
  232. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +0 -169
  233. package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
  234. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
  235. package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
  236. package/coverage/lcov-report/src/api/routes/query.ts.html +0 -268
  237. package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
  238. package/coverage/lcov-report/src/api/routes/routing.ts.html +0 -127
  239. package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
  240. package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
  241. package/coverage/lcov-report/src/api/routes/script.ts.html +0 -115
  242. package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
  243. package/coverage/lcov-report/src/api/routes/table.ts.html +0 -595
  244. package/coverage/lcov-report/src/api/routes/templates.ts.html +0 -133
  245. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
  246. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
  247. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
  248. package/coverage/lcov-report/src/api/routes/user.ts.html +0 -238
  249. package/coverage/lcov-report/src/api/routes/utils/index.html +0 -116
  250. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +0 -805
  251. package/coverage/lcov-report/src/api/routes/view.ts.html +0 -187
  252. package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
  253. package/coverage/lcov-report/src/app.ts.html +0 -424
  254. package/coverage/lcov-report/src/automations/actions.ts.html +0 -316
  255. package/coverage/lcov-report/src/automations/automationUtils.ts.html +0 -562
  256. package/coverage/lcov-report/src/automations/bullboard.ts.html +0 -199
  257. package/coverage/lcov-report/src/automations/index.html +0 -191
  258. package/coverage/lcov-report/src/automations/index.ts.html +0 -163
  259. package/coverage/lcov-report/src/automations/logging/index.html +0 -116
  260. package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
  261. package/coverage/lcov-report/src/automations/steps/bash.ts.html +0 -319
  262. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
  263. package/coverage/lcov-report/src/automations/steps/delay.ts.html +0 -217
  264. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
  265. package/coverage/lcov-report/src/automations/steps/discord.ts.html +0 -397
  266. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +0 -370
  267. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +0 -325
  268. package/coverage/lcov-report/src/automations/steps/filter.ts.html +0 -394
  269. package/coverage/lcov-report/src/automations/steps/index.html +0 -371
  270. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +0 -409
  271. package/coverage/lcov-report/src/automations/steps/loop.ts.html +0 -241
  272. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +0 -499
  273. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +0 -664
  274. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +0 -355
  275. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +0 -256
  276. package/coverage/lcov-report/src/automations/steps/slack.ts.html +0 -340
  277. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +0 -439
  278. package/coverage/lcov-report/src/automations/steps/utils.ts.html +0 -223
  279. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +0 -403
  280. package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
  281. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
  282. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
  283. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +0 -193
  284. package/coverage/lcov-report/src/automations/triggerInfo/index.html +0 -206
  285. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
  286. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +0 -196
  287. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +0 -220
  288. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +0 -220
  289. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +0 -208
  290. package/coverage/lcov-report/src/automations/triggers.ts.html +0 -553
  291. package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
  292. package/coverage/lcov-report/src/constants/index.html +0 -146
  293. package/coverage/lcov-report/src/constants/index.ts.html +0 -697
  294. package/coverage/lcov-report/src/constants/layouts.ts.html +0 -526
  295. package/coverage/lcov-report/src/constants/screens.ts.html +0 -229
  296. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
  297. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
  298. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
  299. package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
  300. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
  301. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
  302. package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
  303. package/coverage/lcov-report/src/db/inMemoryView.ts.html +0 -250
  304. package/coverage/lcov-report/src/db/index.html +0 -176
  305. package/coverage/lcov-report/src/db/index.ts.html +0 -133
  306. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +0 -1417
  307. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
  308. package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
  309. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +0 -736
  310. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +0 -460
  311. package/coverage/lcov-report/src/db/newid.ts.html +0 -100
  312. package/coverage/lcov-report/src/db/utils.ts.html +0 -913
  313. package/coverage/lcov-report/src/definitions/automations.ts.html +0 -184
  314. package/coverage/lcov-report/src/definitions/index.html +0 -116
  315. package/coverage/lcov-report/src/environment.ts.html +0 -472
  316. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +0 -259
  317. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +0 -172
  318. package/coverage/lcov-report/src/events/index.html +0 -161
  319. package/coverage/lcov-report/src/events/index.ts.html +0 -100
  320. package/coverage/lcov-report/src/events/utils.ts.html +0 -319
  321. package/coverage/lcov-report/src/index.html +0 -191
  322. package/coverage/lcov-report/src/index.ts.html +0 -133
  323. package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
  324. package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
  325. package/coverage/lcov-report/src/integrations/base/index.html +0 -161
  326. package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -139
  327. package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -2017
  328. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
  329. package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
  330. package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -484
  331. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
  332. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -646
  333. package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
  334. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
  335. package/coverage/lcov-report/src/integrations/index.html +0 -371
  336. package/coverage/lcov-report/src/integrations/index.ts.html +0 -460
  337. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
  338. package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1999
  339. package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -979
  340. package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
  341. package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
  342. package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
  343. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -328
  344. package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
  345. package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1372
  346. package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
  347. package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
  348. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +0 -85
  349. package/coverage/lcov-report/src/integrations/tests/index.html +0 -116
  350. package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1036
  351. package/coverage/lcov-report/src/middleware/appInfo.ts.html +0 -145
  352. package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -472
  353. package/coverage/lcov-report/src/middleware/builder.ts.html +0 -361
  354. package/coverage/lcov-report/src/middleware/currentapp.ts.html +0 -508
  355. package/coverage/lcov-report/src/middleware/index.html +0 -236
  356. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +0 -205
  357. package/coverage/lcov-report/src/middleware/publicApi.ts.html +0 -148
  358. package/coverage/lcov-report/src/middleware/resourceId.ts.html +0 -283
  359. package/coverage/lcov-report/src/middleware/selfhost.ts.html +0 -121
  360. package/coverage/lcov-report/src/middleware/utils.ts.html +0 -112
  361. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -166
  362. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
  363. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
  364. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
  365. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
  366. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
  367. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
  368. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
  369. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
  370. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
  371. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -286
  372. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
  373. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
  374. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
  375. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
  376. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
  377. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
  378. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
  379. package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
  380. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
  381. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
  382. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
  383. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
  384. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
  385. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
  386. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
  387. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
  388. package/coverage/lcov-report/src/migrations/index.html +0 -116
  389. package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
  390. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
  391. package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
  392. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
  393. package/coverage/lcov-report/src/sdk/app/applications/index.html +0 -146
  394. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +0 -106
  395. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +0 -268
  396. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +0 -136
  397. package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
  398. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
  399. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
  400. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
  401. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
  402. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -640
  403. package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
  404. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
  405. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
  406. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +0 -562
  407. package/coverage/lcov-report/src/sdk/app/datasources/index.html +0 -131
  408. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +0 -100
  409. package/coverage/lcov-report/src/sdk/app/queries/index.html +0 -131
  410. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +0 -100
  411. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +0 -235
  412. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +0 -265
  413. package/coverage/lcov-report/src/sdk/app/rows/index.html +0 -146
  414. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +0 -106
  415. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +0 -139
  416. package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
  417. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -274
  418. package/coverage/lcov-report/src/sdk/index.html +0 -116
  419. package/coverage/lcov-report/src/sdk/index.ts.html +0 -151
  420. package/coverage/lcov-report/src/sdk/users/index.html +0 -131
  421. package/coverage/lcov-report/src/sdk/users/index.ts.html +0 -100
  422. package/coverage/lcov-report/src/sdk/users/utils.ts.html +0 -277
  423. package/coverage/lcov-report/src/sdk/utils/index.html +0 -116
  424. package/coverage/lcov-report/src/sdk/utils/index.ts.html +0 -133
  425. package/coverage/lcov-report/src/startup.ts.html +0 -484
  426. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -2032
  427. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
  428. package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
  429. package/coverage/lcov-report/src/tests/utilities/index.ts.html +0 -118
  430. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -856
  431. package/coverage/lcov-report/src/threads/automation.ts.html +0 -1555
  432. package/coverage/lcov-report/src/threads/index.html +0 -161
  433. package/coverage/lcov-report/src/threads/index.ts.html +0 -418
  434. package/coverage/lcov-report/src/threads/query.ts.html +0 -1000
  435. package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
  436. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +0 -94
  437. package/coverage/lcov-report/src/utilities/centralPath.ts.html +0 -151
  438. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  439. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
  440. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -601
  441. package/coverage/lcov-report/src/utilities/fileSystem/index.html +0 -206
  442. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -100
  443. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -277
  444. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
  445. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  446. package/coverage/lcov-report/src/utilities/global.ts.html +0 -499
  447. package/coverage/lcov-report/src/utilities/index.html +0 -251
  448. package/coverage/lcov-report/src/utilities/index.ts.html +0 -487
  449. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
  450. package/coverage/lcov-report/src/utilities/routing/index.html +0 -116
  451. package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
  452. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
  453. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +0 -922
  454. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
  455. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +0 -373
  456. package/coverage/lcov-report/src/utilities/schema.ts.html +0 -508
  457. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +0 -169
  458. package/coverage/lcov-report/src/utilities/security.ts.html +0 -280
  459. package/coverage/lcov-report/src/utilities/usageQuota/index.html +0 -131
  460. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +0 -325
  461. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +0 -139
  462. package/coverage/lcov-report/src/utilities/users.ts.html +0 -232
  463. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +0 -646
  464. package/coverage/lcov-report/src/watch.ts.html +0 -196
  465. package/coverage/lcov-report/src/websocket.ts.html +0 -163
  466. package/coverage/lcov.info +0 -21770
  467. package/dist/api/routes/public/tests/utils.js +0 -33
@@ -10,8 +10,8 @@
10
10
  href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap"
11
11
  rel="stylesheet"
12
12
  />
13
- <script type="module" crossorigin src="/builder/assets/index.06e34d35.js"></script>
14
- <link rel="stylesheet" href="/builder/assets/index.4488f38d.css">
13
+ <script type="module" crossorigin src="/builder/assets/index.7089444f.js"></script>
14
+ <link rel="stylesheet" href="/builder/assets/index.7e76c039.css">
15
15
  </head>
16
16
  <body id="app">
17
17
 
@@ -184,6 +184,8 @@ function preview(ctx) {
184
184
  schemaFields[key] = fieldType;
185
185
  }
186
186
  }
187
+ // remove configuration before sending event
188
+ delete datasource.config;
187
189
  yield backend_core_1.events.query.previewed(datasource, query);
188
190
  ctx.body = {
189
191
  rows,
@@ -439,7 +439,7 @@ class ExternalRequest {
439
439
  isOneSide(field)) {
440
440
  continue;
441
441
  }
442
- const isMany = field.relationshipType === constants_1.RelationshipTypes.MANY_TO_MANY;
442
+ const isMany = field.relationshipType === types_1.RelationshipTypes.MANY_TO_MANY;
443
443
  const tableId = isMany ? field.through : field.tableId;
444
444
  const { tableName: relatedTableName } = (0, utils_3.breakExternalTableId)(tableId);
445
445
  // @ts-ignore
@@ -609,7 +609,9 @@ class ExternalRequest {
609
609
  },
610
610
  resource: {
611
611
  // have to specify the fields to avoid column overlap (for SQL)
612
- fields: isSql ? this.buildFields(table) : [],
612
+ fields: isSql
613
+ ? this.buildFields(table, config.includeSqlRelationships)
614
+ : [],
613
615
  },
614
616
  filters,
615
617
  sort,
@@ -86,6 +86,7 @@ function patch(ctx) {
86
86
  return handleRequest(types_1.Operation.UPDATE, tableId, {
87
87
  id: (0, utils_1.breakRowIdField)(id),
88
88
  row: inputs,
89
+ includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
89
90
  });
90
91
  });
91
92
  }
@@ -96,6 +97,7 @@ function save(ctx) {
96
97
  const tableId = ctx.params.tableId;
97
98
  return handleRequest(types_1.Operation.CREATE, tableId, {
98
99
  row: inputs,
100
+ includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
99
101
  });
100
102
  });
101
103
  }
@@ -113,7 +115,9 @@ exports.fetchView = fetchView;
113
115
  function fetch(ctx) {
114
116
  return __awaiter(this, void 0, void 0, function* () {
115
117
  const tableId = ctx.params.tableId;
116
- return handleRequest(types_1.Operation.READ, tableId);
118
+ return handleRequest(types_1.Operation.READ, tableId, {
119
+ includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
120
+ });
117
121
  });
118
122
  }
119
123
  exports.fetch = fetch;
@@ -123,6 +127,7 @@ function find(ctx) {
123
127
  const tableId = ctx.params.tableId;
124
128
  const response = (yield handleRequest(types_1.Operation.READ, tableId, {
125
129
  id: (0, utils_1.breakRowIdField)(id),
130
+ includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
126
131
  }));
127
132
  return response ? response[0] : response;
128
133
  });
@@ -134,6 +139,7 @@ function destroy(ctx) {
134
139
  const id = ctx.request.body._id;
135
140
  const { row } = (yield handleRequest(types_1.Operation.DELETE, tableId, {
136
141
  id: (0, utils_1.breakRowIdField)(id),
142
+ includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
137
143
  }));
138
144
  return { response: { ok: true }, row };
139
145
  });
@@ -147,6 +153,7 @@ function bulkDestroy(ctx) {
147
153
  for (let row of rows) {
148
154
  promises.push(handleRequest(types_1.Operation.DELETE, tableId, {
149
155
  id: (0, utils_1.breakRowIdField)(row._id),
156
+ includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
150
157
  }));
151
158
  }
152
159
  const responses = (yield Promise.all(promises));
@@ -189,6 +196,7 @@ function search(ctx) {
189
196
  filters: query,
190
197
  sort,
191
198
  paginate: paginateObj,
199
+ includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
192
200
  }));
193
201
  let hasNextPage = false;
194
202
  if (paginate && rows.length === limit) {
@@ -199,6 +207,7 @@ function search(ctx) {
199
207
  limit: 1,
200
208
  page: bookmark * limit + 1,
201
209
  },
210
+ includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
202
211
  }));
203
212
  hasNextPage = nextRows.length > 0;
204
213
  }
@@ -287,6 +296,7 @@ function fetchEnrichedRow(ctx) {
287
296
  const response = (yield handleRequest(types_1.Operation.READ, tableId, {
288
297
  id,
289
298
  datasource,
299
+ includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
290
300
  }));
291
301
  const table = tables[tableName];
292
302
  const row = response[0];
@@ -312,6 +322,7 @@ function fetchEnrichedRow(ctx) {
312
322
  [primaryLink]: linkedIds,
313
323
  },
314
324
  },
325
+ includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
315
326
  });
316
327
  }
317
328
  return row;
@@ -42,7 +42,11 @@ function updateRelatedFormula(table, enrichedRows) {
42
42
  if (!relatedRows[relatedTableId]) {
43
43
  relatedRows[relatedTableId] = [];
44
44
  }
45
- relatedRows[relatedTableId] = relatedRows[relatedTableId].concat(field);
45
+ // filter down to the rows which are not already included in related
46
+ const currentIds = relatedRows[relatedTableId].map(row => row._id);
47
+ const uniqueRelatedRows = field.filter((row) => !currentIds.includes(row._id));
48
+ relatedRows[relatedTableId] =
49
+ relatedRows[relatedTableId].concat(uniqueRelatedRows);
46
50
  }
47
51
  }
48
52
  for (let tableId of table.relatedFormula) {
@@ -75,12 +75,12 @@ function getDatasourceId(table) {
75
75
  return (0, utils_1.breakExternalTableId)(table._id).datasourceId;
76
76
  }
77
77
  function otherRelationshipType(type) {
78
- if (type === constants_1.RelationshipTypes.MANY_TO_MANY) {
79
- return constants_1.RelationshipTypes.MANY_TO_MANY;
78
+ if (type === types_1.RelationshipTypes.MANY_TO_MANY) {
79
+ return types_1.RelationshipTypes.MANY_TO_MANY;
80
80
  }
81
- return type === constants_1.RelationshipTypes.ONE_TO_MANY
82
- ? constants_1.RelationshipTypes.MANY_TO_ONE
83
- : constants_1.RelationshipTypes.ONE_TO_MANY;
81
+ return type === types_1.RelationshipTypes.ONE_TO_MANY
82
+ ? types_1.RelationshipTypes.MANY_TO_ONE
83
+ : types_1.RelationshipTypes.ONE_TO_MANY;
84
84
  }
85
85
  function generateManyLinkSchema(datasource, column, table, relatedTable) {
86
86
  if (!table.primary || !relatedTable.primary) {
@@ -116,7 +116,7 @@ function generateLinkSchema(column, table, relatedTable, type) {
116
116
  if (!table.primary || !relatedTable.primary) {
117
117
  throw new Error("Unable to generate link schema, no primary keys");
118
118
  }
119
- const isOneSide = type === constants_1.RelationshipTypes.ONE_TO_MANY;
119
+ const isOneSide = type === types_1.RelationshipTypes.ONE_TO_MANY;
120
120
  const primary = isOneSide ? relatedTable.primary[0] : table.primary[0];
121
121
  // generate a foreign key
122
122
  const foreignKey = (0, utils_2.generateForeignKey)(column, relatedTable);
@@ -186,7 +186,7 @@ function save(ctx) {
186
186
  }
187
187
  const relatedColumnName = schema.fieldName;
188
188
  const relationType = schema.relationshipType;
189
- if (relationType === constants_1.RelationshipTypes.MANY_TO_MANY) {
189
+ if (relationType === types_1.RelationshipTypes.MANY_TO_MANY) {
190
190
  const junctionTable = generateManyLinkSchema(datasource, schema, table, relatedTable);
191
191
  if (tables[junctionTable.name]) {
192
192
  throw "Junction table already exists, cannot create another relationship.";
@@ -195,7 +195,7 @@ function save(ctx) {
195
195
  extraTablesToUpdate.push(junctionTable);
196
196
  }
197
197
  else {
198
- const fkTable = relationType === constants_1.RelationshipTypes.ONE_TO_MANY ? table : relatedTable;
198
+ const fkTable = relationType === types_1.RelationshipTypes.ONE_TO_MANY ? table : relatedTable;
199
199
  const foreignKey = generateLinkSchema(schema, table, relatedTable, relationType);
200
200
  fkTable.schema[foreignKey] = (0, utils_2.foreignKeyStructure)(foreignKey);
201
201
  if (fkTable.constrained == null) {
package/dist/api/index.js CHANGED
@@ -27,6 +27,7 @@ const compress = require("koa-compress");
27
27
  exports.router = new router_1.default();
28
28
  exports.router.get("/health", ctx => (ctx.status = 200));
29
29
  exports.router.get("/version", ctx => (ctx.body = package_json_1.default.version));
30
+ exports.router.use(backend_core_1.middleware.errorHandling);
30
31
  exports.router
31
32
  .use(compress({
32
33
  threshold: 2048,
@@ -60,27 +61,6 @@ exports.router
60
61
  // @ts-ignore
61
62
  .use(currentapp_1.default)
62
63
  .use(backend_core_1.auth.auditLog);
63
- // error handling middleware
64
- exports.router.use((ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
65
- try {
66
- yield next();
67
- }
68
- catch (err) {
69
- ctx.status = err.status || err.statusCode || 500;
70
- const error = backend_core_1.errors.getPublicError(err);
71
- ctx.body = {
72
- message: err.message,
73
- status: ctx.status,
74
- validationErrors: err.validation,
75
- error,
76
- };
77
- ctx.log.error(err);
78
- // unauthorised errors don't provide a useful trace
79
- if (!environment_1.default.isTest()) {
80
- console.trace(err);
81
- }
82
- }
83
- }));
84
64
  // authenticated routes
85
65
  for (let route of routes_1.mainRoutes) {
86
66
  exports.router.use(route.routes());
package/dist/app.js CHANGED
@@ -35,6 +35,12 @@ 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
+ if (process.env.DD_APM_ENABLED) {
39
+ require("./ddApm");
40
+ }
41
+ if (process.env.ELASTIC_APM_ENABLED) {
42
+ require("./elasticApm");
43
+ }
38
44
  // need to load environment first
39
45
  const environment_1 = __importDefault(require("./environment"));
40
46
  // enable APM if configured
@@ -99,7 +105,7 @@ server.on("close", () => __awaiter(void 0, void 0, void 0, function* () {
99
105
  console.log("Server Closed");
100
106
  yield automations.shutdown();
101
107
  yield redis.shutdown();
102
- yield backend_core_1.events.shutdown();
108
+ backend_core_1.events.shutdown();
103
109
  yield threads_1.Thread.shutdown();
104
110
  api.shutdown();
105
111
  if (!environment_1.default.isTest()) {
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_AUTOMATION_RECURRING_ERRORS = exports.ObjectStoreBuckets = exports.AutomationErrors = exports.BuildSchemaErrors = exports.InvalidColumns = exports.MetadataTypes = exports.BaseQueryVerbs = exports.OBJ_STORE_DIRECTORY = exports.AutoFieldDefaultNames = exports.AutoFieldSubTypes = exports.USERS_TABLE_SCHEMA = exports.SortDirection = exports.DatasourceAuthTypes = exports.DataSourceOperation = exports.AuthTypes = exports.FormulaTypes = exports.RelationshipTypes = exports.SwitchableTypes = exports.CanSwitchTypes = exports.FieldTypes = exports.NoEmptyFilterStrings = exports.FilterTypes = void 0;
3
+ exports.MAX_AUTOMATION_RECURRING_ERRORS = exports.ObjectStoreBuckets = exports.AutomationErrors = exports.BuildSchemaErrors = exports.InvalidColumns = exports.MetadataTypes = exports.BaseQueryVerbs = exports.OBJ_STORE_DIRECTORY = exports.AutoFieldDefaultNames = exports.AutoFieldSubTypes = exports.USERS_TABLE_SCHEMA = exports.SortDirection = exports.DatasourceAuthTypes = exports.DataSourceOperation = exports.AuthTypes = exports.FormulaTypes = exports.SwitchableTypes = exports.CanSwitchTypes = exports.NoEmptyFilterStrings = exports.FilterTypes = exports.RelationshipTypes = exports.FieldTypes = void 0;
4
4
  const backend_core_1 = require("@budibase/backend-core");
5
+ var types_1 = require("@budibase/types");
6
+ Object.defineProperty(exports, "FieldTypes", { enumerable: true, get: function () { return types_1.FieldType; } });
7
+ Object.defineProperty(exports, "RelationshipTypes", { enumerable: true, get: function () { return types_1.RelationshipTypes; } });
5
8
  var FilterTypes;
6
9
  (function (FilterTypes) {
7
10
  FilterTypes["STRING"] = "string";
@@ -23,23 +26,6 @@ exports.NoEmptyFilterStrings = [
23
26
  FilterTypes.CONTAINS,
24
27
  FilterTypes.NOT_CONTAINS,
25
28
  ];
26
- var FieldTypes;
27
- (function (FieldTypes) {
28
- FieldTypes["STRING"] = "string";
29
- FieldTypes["BARCODEQR"] = "barcodeqr";
30
- FieldTypes["LONGFORM"] = "longform";
31
- FieldTypes["OPTIONS"] = "options";
32
- FieldTypes["NUMBER"] = "number";
33
- FieldTypes["BOOLEAN"] = "boolean";
34
- FieldTypes["ARRAY"] = "array";
35
- FieldTypes["DATETIME"] = "datetime";
36
- FieldTypes["ATTACHMENT"] = "attachment";
37
- FieldTypes["LINK"] = "link";
38
- FieldTypes["FORMULA"] = "formula";
39
- FieldTypes["AUTO"] = "auto";
40
- FieldTypes["JSON"] = "json";
41
- FieldTypes["INTERNAL"] = "internal";
42
- })(FieldTypes = exports.FieldTypes || (exports.FieldTypes = {}));
43
29
  exports.CanSwitchTypes = [
44
30
  [exports.FieldTypes.JSON, exports.FieldTypes.ARRAY],
45
31
  [
@@ -51,12 +37,6 @@ exports.CanSwitchTypes = [
51
37
  [exports.FieldTypes.BOOLEAN, exports.FieldTypes.NUMBER],
52
38
  ];
53
39
  exports.SwitchableTypes = exports.CanSwitchTypes.reduce((prev, current) => prev ? prev.concat(current) : current);
54
- var RelationshipTypes;
55
- (function (RelationshipTypes) {
56
- RelationshipTypes["ONE_TO_MANY"] = "one-to-many";
57
- RelationshipTypes["MANY_TO_ONE"] = "many-to-one";
58
- RelationshipTypes["MANY_TO_MANY"] = "many-to-many";
59
- })(RelationshipTypes = exports.RelationshipTypes || (exports.RelationshipTypes = {}));
60
40
  var FormulaTypes;
61
41
  (function (FormulaTypes) {
62
42
  FormulaTypes["STATIC"] = "static";
@@ -13,6 +13,7 @@ const employeeImport_1 = require("./employeeImport");
13
13
  const jobsImport_1 = require("./jobsImport");
14
14
  const expensesImport_1 = require("./expensesImport");
15
15
  const backend_core_1 = require("@budibase/backend-core");
16
+ const types_1 = require("@budibase/types");
16
17
  exports.DEFAULT_JOBS_TABLE_ID = "ta_bb_jobs";
17
18
  exports.DEFAULT_INVENTORY_TABLE_ID = "ta_bb_inventory";
18
19
  exports.DEFAULT_EXPENSES_TABLE_ID = "ta_bb_expenses";
@@ -260,7 +261,7 @@ exports.DEFAULT_EMPLOYEE_TABLE_SCHEMA = {
260
261
  name: "Employee Level",
261
262
  sortable: false,
262
263
  }, "Badge Photo": {
263
- type: "attachment",
264
+ type: constants_1.FieldTypes.ATTACHMENT,
264
265
  constraints: {
265
266
  type: constants_1.FieldTypes.ARRAY,
266
267
  presence: false,
@@ -275,7 +276,7 @@ exports.DEFAULT_EMPLOYEE_TABLE_SCHEMA = {
275
276
  },
276
277
  fieldName: "Assigned",
277
278
  name: "Jobs",
278
- relationshipType: constants_1.RelationshipTypes.MANY_TO_MANY,
279
+ relationshipType: types_1.RelationshipTypes.MANY_TO_MANY,
279
280
  tableId: exports.DEFAULT_JOBS_TABLE_ID,
280
281
  }, "Start Date": {
281
282
  type: constants_1.FieldTypes.DATETIME,
@@ -419,10 +420,10 @@ exports.DEFAULT_JOBS_TABLE_SCHEMA = {
419
420
  type: constants_1.FieldTypes.LINK,
420
421
  tableId: exports.DEFAULT_EMPLOYEE_TABLE_ID,
421
422
  fieldName: "Jobs",
422
- relationshipType: constants_1.RelationshipTypes.MANY_TO_MANY,
423
+ relationshipType: types_1.RelationshipTypes.MANY_TO_MANY,
423
424
  // sortable: true,
424
425
  }, "Works End": {
425
- type: "datetime",
426
+ type: constants_1.FieldTypes.DATETIME,
426
427
  constraints: {
427
428
  type: "string",
428
429
  length: {},
@@ -435,7 +436,7 @@ exports.DEFAULT_JOBS_TABLE_SCHEMA = {
435
436
  name: "Works End",
436
437
  ignoreTimezones: true,
437
438
  }, "Updated Price": {
438
- type: "number",
439
+ type: constants_1.FieldTypes.NUMBER,
439
440
  constraints: {
440
441
  type: "number",
441
442
  presence: false,
@@ -18,6 +18,7 @@ const node_1 = __importDefault(require("@sentry/node"));
18
18
  const constants_1 = require("../../constants");
19
19
  const backend_core_1 = require("@budibase/backend-core");
20
20
  const LinkDocument_1 = __importDefault(require("./LinkDocument"));
21
+ const types_1 = require("@budibase/types");
21
22
  class LinkController {
22
23
  constructor({ tableId, row, table, oldTable }) {
23
24
  this._db = backend_core_1.context.getAppDB();
@@ -124,17 +125,17 @@ class LinkController {
124
125
  */
125
126
  handleRelationshipType(linkerField, linkedField) {
126
127
  if (!linkerField.relationshipType ||
127
- linkerField.relationshipType === constants_1.RelationshipTypes.MANY_TO_MANY) {
128
- linkedField.relationshipType = constants_1.RelationshipTypes.MANY_TO_MANY;
128
+ linkerField.relationshipType === types_1.RelationshipTypes.MANY_TO_MANY) {
129
+ linkedField.relationshipType = types_1.RelationshipTypes.MANY_TO_MANY;
129
130
  // make sure by default all are many to many (if not specified)
130
- linkerField.relationshipType = constants_1.RelationshipTypes.MANY_TO_MANY;
131
+ linkerField.relationshipType = types_1.RelationshipTypes.MANY_TO_MANY;
131
132
  }
132
- else if (linkerField.relationshipType === constants_1.RelationshipTypes.MANY_TO_ONE) {
133
+ else if (linkerField.relationshipType === types_1.RelationshipTypes.MANY_TO_ONE) {
133
134
  // Ensure that the other side of the relationship is locked to one record
134
- linkedField.relationshipType = constants_1.RelationshipTypes.ONE_TO_MANY;
135
+ linkedField.relationshipType = types_1.RelationshipTypes.ONE_TO_MANY;
135
136
  }
136
- else if (linkerField.relationshipType === constants_1.RelationshipTypes.ONE_TO_MANY) {
137
- linkedField.relationshipType = constants_1.RelationshipTypes.MANY_TO_ONE;
137
+ else if (linkerField.relationshipType === types_1.RelationshipTypes.ONE_TO_MANY) {
138
+ linkedField.relationshipType = types_1.RelationshipTypes.MANY_TO_ONE;
138
139
  }
139
140
  return { linkerField, linkedField };
140
141
  }
@@ -178,7 +179,7 @@ class LinkController {
178
179
  }
179
180
  // iterate through the link IDs in the row field, see if any don't exist already
180
181
  for (let linkId of rowField) {
181
- if ((linkedSchema === null || linkedSchema === void 0 ? void 0 : linkedSchema.relationshipType) === constants_1.RelationshipTypes.ONE_TO_MANY) {
182
+ if ((linkedSchema === null || linkedSchema === void 0 ? void 0 : linkedSchema.relationshipType) === types_1.RelationshipTypes.ONE_TO_MANY) {
182
183
  let links = (yield (0, linkUtils_1.getLinkDocuments)({
183
184
  tableId: field.tableId,
184
185
  rowId: linkId,
package/dist/ddApm.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const dd_trace_1 = __importDefault(require("dd-trace"));
7
+ // enable APM if configured
8
+ if (process.env.DD_APM_ENABLED) {
9
+ console.log("Starting dd-trace");
10
+ dd_trace_1.default.init();
11
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const elastic_apm_node_1 = __importDefault(require("elastic-apm-node"));
7
+ // enable APM if configured
8
+ if (process.env.ELASTIC_APM_ENABLED) {
9
+ console.log("Starting elastic-apm-node");
10
+ elastic_apm_node_1.default.start({
11
+ serviceName: process.env.SERVICE,
12
+ environment: process.env.BUDIBASE_ENVIRONMENT,
13
+ });
14
+ }
@@ -90,6 +90,9 @@ function parseFilters(filters) {
90
90
  function generateSelectStatement(json, knex) {
91
91
  var _a;
92
92
  const { resource, meta } = json;
93
+ if (!resource) {
94
+ return "*";
95
+ }
93
96
  const schema = (_a = meta === null || meta === void 0 ? void 0 : meta.table) === null || _a === void 0 ? void 0 : _a.schema;
94
97
  return resource.fields.map(field => {
95
98
  const fieldNames = field.split(/\./g);
@@ -379,7 +382,9 @@ class InternalBuilder {
379
382
  return query.insert(parsedBody);
380
383
  }
381
384
  else {
382
- return query.insert(parsedBody).returning("*");
385
+ return query
386
+ .insert(parsedBody)
387
+ .returning(generateSelectStatement(json, knex));
383
388
  }
384
389
  }
385
390
  bulkCreate(knex, json) {
@@ -458,7 +463,9 @@ class InternalBuilder {
458
463
  return query.update(parsedBody);
459
464
  }
460
465
  else {
461
- return query.update(parsedBody).returning("*");
466
+ return query
467
+ .update(parsedBody)
468
+ .returning(generateSelectStatement(json, knex));
462
469
  }
463
470
  }
464
471
  delete(knex, json, opts) {
@@ -473,7 +480,7 @@ class InternalBuilder {
473
480
  return query.delete();
474
481
  }
475
482
  else {
476
- return query.delete().returning("*");
483
+ return query.delete().returning(generateSelectStatement(json, knex));
477
484
  }
478
485
  }
479
486
  }
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "2.3.16",
4
+ "version": "2.3.18-alpha.0",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -14,7 +14,7 @@
14
14
  "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput",
15
15
  "debug": "yarn build && node --expose-gc --inspect=9222 dist/index.js",
16
16
  "postbuild": "copyfiles -u 1 src/**/*.svelte dist/ && copyfiles -u 1 src/**/*.hbs dist/ && copyfiles -u 1 src/**/*.json dist/",
17
- "test": "jest --coverage --maxWorkers=2",
17
+ "test": "jest --coverage --runInBand",
18
18
  "test:watch": "jest --watch",
19
19
  "predocker": "copyfiles -f ../client/dist/budibase-client.js ../client/manifest.json client",
20
20
  "build:docker": "yarn run predocker && docker build . -t app-service --label version=$BUDIBASE_RELEASE_VERSION",
@@ -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.3.16",
47
- "@budibase/client": "^2.3.16",
48
- "@budibase/pro": "2.3.16",
49
- "@budibase/string-templates": "^2.3.16",
50
- "@budibase/types": "^2.3.16",
46
+ "@budibase/backend-core": "2.3.18-alpha.0",
47
+ "@budibase/client": "2.3.18-alpha.0",
48
+ "@budibase/pro": "2.3.18-alpha.0",
49
+ "@budibase/string-templates": "2.3.18-alpha.0",
50
+ "@budibase/types": "2.3.18-alpha.0",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -64,6 +64,7 @@
64
64
  "chokidar": "3.5.3",
65
65
  "csvtojson": "2.0.10",
66
66
  "curlconverter": "3.21.0",
67
+ "dd-trace": "3.13.2",
67
68
  "dotenv": "8.2.0",
68
69
  "download": "8.0.0",
69
70
  "elastic-apm-node": "3.38.0",
@@ -125,6 +126,7 @@
125
126
  "@jest/test-sequencer": "24.9.0",
126
127
  "@swc/core": "^1.3.25",
127
128
  "@swc/jest": "^0.2.24",
129
+ "@trendyol/jest-testcontainers": "^2.1.1",
128
130
  "@types/apidoc": "0.50.0",
129
131
  "@types/bson": "4.2.0",
130
132
  "@types/global-agent": "2.1.1",
@@ -140,6 +142,7 @@
140
142
  "@types/pouchdb": "6.4.0",
141
143
  "@types/redis": "4.0.11",
142
144
  "@types/server-destroy": "1.0.1",
145
+ "@types/supertest": "2.0.12",
143
146
  "@types/tar": "6.1.3",
144
147
  "@typescript-eslint/parser": "5.45.0",
145
148
  "apidoc": "0.50.4",
@@ -151,13 +154,14 @@
151
154
  "is-wsl": "2.2.0",
152
155
  "jest": "28.1.1",
153
156
  "jest-openapi": "0.14.2",
157
+ "jest-serial-runner": "^1.2.1",
154
158
  "nodemon": "2.0.15",
155
159
  "openapi-types": "9.3.1",
156
160
  "openapi-typescript": "5.2.0",
157
161
  "path-to-regexp": "6.2.0",
158
162
  "prettier": "2.5.1",
159
163
  "rimraf": "3.0.2",
160
- "supertest": "4.0.2",
164
+ "supertest": "6.2.2",
161
165
  "swagger-jsdoc": "6.1.0",
162
166
  "timekeeper": "2.2.0",
163
167
  "ts-jest": "28.0.4",
@@ -45,12 +45,18 @@ function tarFilesToTmp(tmpDir, files) {
45
45
  */
46
46
  function exportDB(dbName, opts = {}) {
47
47
  return __awaiter(this, void 0, void 0, function* () {
48
+ const exportOpts = {
49
+ filter: opts === null || opts === void 0 ? void 0 : opts.filter,
50
+ batch_size: 1000,
51
+ batch_limit: 5,
52
+ style: "main_only",
53
+ };
48
54
  return backend_core_1.db.doWithDB(dbName, (db) => __awaiter(this, void 0, void 0, function* () {
49
55
  // Write the dump to file if required
50
56
  if (opts === null || opts === void 0 ? void 0 : opts.exportPath) {
51
57
  const path = opts === null || opts === void 0 ? void 0 : opts.exportPath;
52
58
  const writeStream = fs_1.default.createWriteStream(path);
53
- yield db.dump(writeStream, { filter: opts === null || opts === void 0 ? void 0 : opts.filter });
59
+ yield db.dump(writeStream, exportOpts);
54
60
  return path;
55
61
  }
56
62
  else {
@@ -60,7 +66,7 @@ function exportDB(dbName, opts = {}) {
60
66
  memStream.on("data", (chunk) => {
61
67
  appString += chunk.toString();
62
68
  });
63
- yield db.dump(memStream, { filter: opts === null || opts === void 0 ? void 0 : opts.filter });
69
+ yield db.dump(memStream, exportOpts);
64
70
  return appString;
65
71
  }
66
72
  }));
@@ -89,6 +89,9 @@ function removeSecrets(datasources) {
89
89
  const definitions = yield (0, integrations_1.getDefinitions)();
90
90
  for (let datasource of datasources) {
91
91
  const schema = definitions[datasource.source];
92
+ if (!schema) {
93
+ continue;
94
+ }
92
95
  if (datasource.config) {
93
96
  // strip secrets from response, so they don't show in the network request
94
97
  if (datasource.config.auth) {