@budibase/server 2.3.17 → 2.3.18-alpha.0

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 (463) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.4488f38d.css → index.7e76c039.css} +1 -1
  3. package/builder/assets/{index.06e34d35.js → index.e7d5703a.js} +361 -361
  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 +11 -7
  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/retry.js +30 -0
  23. package/jest-testcontainers-config.js +8 -0
  24. package/jest.config.ts +28 -11
  25. package/package.json +12 -8
  26. package/scripts/load/create-many-apps.js +24 -0
  27. package/scripts/load/create-many-rows.js +30 -0
  28. package/scripts/load/utils.js +66 -0
  29. package/specs/openapi.json +6 -6
  30. package/specs/openapi.yaml +3 -3
  31. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  32. package/src/api/controllers/query/index.ts +2 -0
  33. package/src/api/controllers/row/ExternalRequest.ts +6 -2
  34. package/src/api/controllers/row/external.ts +13 -1
  35. package/src/api/controllers/row/staticFormula.ts +7 -1
  36. package/src/api/controllers/table/external.ts +3 -2
  37. package/src/api/index.ts +3 -22
  38. package/src/api/routes/public/applications.ts +0 -1
  39. package/src/api/routes/public/tests/compare.spec.js +1 -1
  40. package/src/api/routes/public/tests/users.spec.js +1 -1
  41. package/src/api/routes/public/tests/utils.ts +25 -8
  42. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  43. package/src/api/routes/tests/analytics.spec.js +4 -1
  44. package/src/api/routes/tests/apikeys.spec.js +1 -1
  45. package/src/api/routes/tests/application.spec.ts +20 -6
  46. package/src/api/routes/tests/auth.spec.js +2 -2
  47. package/src/api/routes/tests/automation.spec.js +6 -2
  48. package/src/api/routes/tests/backup.spec.ts +4 -14
  49. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +11 -15
  50. package/src/api/routes/tests/component.spec.js +1 -1
  51. package/src/api/routes/tests/datasource.spec.ts +20 -3
  52. package/src/api/routes/tests/dev.spec.js +1 -1
  53. package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
  54. package/src/api/routes/tests/integration.spec.js +1 -1
  55. package/src/api/routes/tests/layout.spec.js +1 -1
  56. package/src/api/routes/tests/metadata.spec.js +1 -1
  57. package/src/api/routes/tests/misc.spec.js +1 -1
  58. package/src/api/routes/tests/permissions.spec.js +4 -1
  59. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
  60. package/src/api/routes/tests/role.spec.js +6 -1
  61. package/src/api/routes/tests/routing.spec.js +1 -1
  62. package/src/api/routes/tests/row.spec.js +11 -3
  63. package/src/api/routes/tests/screen.spec.js +1 -1
  64. package/src/api/routes/tests/static.spec.js +2 -1
  65. package/src/api/routes/tests/table.spec.js +1 -1
  66. package/src/api/routes/tests/templates.spec.js +1 -1
  67. package/src/api/routes/tests/user.spec.js +12 -12
  68. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  69. package/src/api/routes/tests/utilities/index.ts +5 -3
  70. package/src/api/routes/tests/view.spec.js +4 -1
  71. package/src/api/routes/tests/webhook.spec.js +11 -2
  72. package/src/app.ts +10 -1
  73. package/src/automations/tests/automation.spec.js +4 -4
  74. package/src/automations/tests/bash.spec.js +1 -1
  75. package/src/automations/tests/discord.spec.js +1 -1
  76. package/src/automations/tests/executeQuery.spec.js +2 -3
  77. package/src/automations/tests/executeScript.spec.js +1 -1
  78. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  79. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  80. package/src/automations/tests/serverLog.spec.js +1 -1
  81. package/src/automations/tests/updateRow.spec.js +1 -1
  82. package/src/automations/tests/zapier.spec.js +1 -1
  83. package/src/constants/index.ts +1 -23
  84. package/src/db/defaultData/datasource_bb_default.ts +6 -10
  85. package/src/db/linkedRows/LinkController.ts +2 -1
  86. package/src/db/tests/linkController.spec.js +4 -1
  87. package/src/db/tests/linkTests.spec.js +1 -1
  88. package/src/ddApm.ts +7 -0
  89. package/src/elasticApm.ts +10 -0
  90. package/src/integration-test/postgres.spec.ts +762 -0
  91. package/src/integrations/base/sql.ts +15 -5
  92. package/src/integrations/oracle.ts +1 -1
  93. package/src/integrations/tests/couchdb.spec.ts +0 -2
  94. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  95. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  96. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  97. package/src/migrations/tests/index.spec.ts +13 -20
  98. package/src/sdk/app/backups/exports.ts +8 -2
  99. package/src/sdk/app/datasources/datasources.ts +3 -0
  100. package/src/tests/jestEnv.ts +8 -11
  101. package/src/tests/jestSetup.ts +9 -7
  102. package/src/tests/logging.ts +34 -0
  103. package/src/tests/utilities/TestConfiguration.ts +166 -92
  104. package/src/tests/utilities/structures.ts +16 -2
  105. package/src/utilities/retry.ts +18 -0
  106. package/tsconfig.build.json +1 -0
  107. package/coverage/clover.xml +0 -11771
  108. package/coverage/coverage-final.json +0 -284
  109. package/coverage/lcov-report/base.css +0 -224
  110. package/coverage/lcov-report/block-navigation.js +0 -87
  111. package/coverage/lcov-report/favicon.png +0 -0
  112. package/coverage/lcov-report/index.html +0 -1031
  113. package/coverage/lcov-report/prettify.css +0 -1
  114. package/coverage/lcov-report/prettify.js +0 -2
  115. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  116. package/coverage/lcov-report/sorter.js +0 -196
  117. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
  118. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +0 -247
  119. package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -1987
  120. package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
  121. package/coverage/lcov-report/src/api/controllers/automation.ts.html +0 -940
  122. package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
  123. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +0 -442
  124. package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
  125. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +0 -1135
  126. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -262
  127. package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
  128. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -694
  129. package/coverage/lcov-report/src/api/controllers/dev.ts.html +0 -472
  130. package/coverage/lcov-report/src/api/controllers/index.html +0 -431
  131. package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
  132. package/coverage/lcov-report/src/api/controllers/layout.ts.html +0 -226
  133. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +0 -211
  134. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +0 -127
  135. package/coverage/lcov-report/src/api/controllers/permission.ts.html +0 -619
  136. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
  137. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
  138. package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
  139. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -499
  140. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
  141. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
  142. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
  143. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
  144. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -385
  145. package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
  146. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
  147. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
  148. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
  149. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
  150. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
  151. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
  152. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
  153. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
  154. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
  155. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
  156. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -325
  157. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
  158. package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
  159. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
  160. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
  161. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
  162. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
  163. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
  164. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
  165. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
  166. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
  167. package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
  168. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -1000
  169. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +0 -235
  170. package/coverage/lcov-report/src/api/controllers/role.ts.html +0 -397
  171. package/coverage/lcov-report/src/api/controllers/routing.ts.html +0 -370
  172. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2305
  173. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +0 -931
  174. package/coverage/lcov-report/src/api/controllers/row/index.html +0 -206
  175. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
  176. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +0 -1609
  177. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +0 -1678
  178. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +0 -577
  179. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +0 -556
  180. package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
  181. package/coverage/lcov-report/src/api/controllers/script.ts.html +0 -121
  182. package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
  183. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -679
  184. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +0 -649
  185. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +0 -1153
  186. package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
  187. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +0 -514
  188. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -658
  189. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1273
  190. package/coverage/lcov-report/src/api/controllers/templates.ts.html +0 -214
  191. package/coverage/lcov-report/src/api/controllers/user.ts.html +0 -634
  192. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +0 -214
  193. package/coverage/lcov-report/src/api/controllers/view/index.html +0 -161
  194. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +0 -661
  195. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +0 -580
  196. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +0 -694
  197. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -385
  198. package/coverage/lcov-report/src/api/index.html +0 -116
  199. package/coverage/lcov-report/src/api/index.ts.html +0 -352
  200. package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
  201. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
  202. package/coverage/lcov-report/src/api/routes/application.ts.html +0 -256
  203. package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
  204. package/coverage/lcov-report/src/api/routes/automation.ts.html +0 -346
  205. package/coverage/lcov-report/src/api/routes/backup.ts.html +0 -127
  206. package/coverage/lcov-report/src/api/routes/cloud.ts.html +0 -139
  207. package/coverage/lcov-report/src/api/routes/component.ts.html +0 -127
  208. package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
  209. package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -145
  210. package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
  211. package/coverage/lcov-report/src/api/routes/index.html +0 -551
  212. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -298
  213. package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
  214. package/coverage/lcov-report/src/api/routes/layout.ts.html +0 -133
  215. package/coverage/lcov-report/src/api/routes/metadata.ts.html +0 -199
  216. package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
  217. package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
  218. package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
  219. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -673
  220. package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
  221. package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
  222. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
  223. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -340
  224. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
  225. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
  226. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
  227. package/coverage/lcov-report/src/api/routes/public/tests/index.html +0 -116
  228. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +0 -169
  229. package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
  230. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
  231. package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
  232. package/coverage/lcov-report/src/api/routes/query.ts.html +0 -268
  233. package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
  234. package/coverage/lcov-report/src/api/routes/routing.ts.html +0 -127
  235. package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
  236. package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
  237. package/coverage/lcov-report/src/api/routes/script.ts.html +0 -115
  238. package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
  239. package/coverage/lcov-report/src/api/routes/table.ts.html +0 -595
  240. package/coverage/lcov-report/src/api/routes/templates.ts.html +0 -133
  241. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
  242. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
  243. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
  244. package/coverage/lcov-report/src/api/routes/user.ts.html +0 -238
  245. package/coverage/lcov-report/src/api/routes/utils/index.html +0 -116
  246. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +0 -805
  247. package/coverage/lcov-report/src/api/routes/view.ts.html +0 -187
  248. package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
  249. package/coverage/lcov-report/src/app.ts.html +0 -424
  250. package/coverage/lcov-report/src/automations/actions.ts.html +0 -316
  251. package/coverage/lcov-report/src/automations/automationUtils.ts.html +0 -562
  252. package/coverage/lcov-report/src/automations/bullboard.ts.html +0 -199
  253. package/coverage/lcov-report/src/automations/index.html +0 -191
  254. package/coverage/lcov-report/src/automations/index.ts.html +0 -163
  255. package/coverage/lcov-report/src/automations/logging/index.html +0 -116
  256. package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
  257. package/coverage/lcov-report/src/automations/steps/bash.ts.html +0 -319
  258. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
  259. package/coverage/lcov-report/src/automations/steps/delay.ts.html +0 -217
  260. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
  261. package/coverage/lcov-report/src/automations/steps/discord.ts.html +0 -397
  262. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +0 -370
  263. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +0 -325
  264. package/coverage/lcov-report/src/automations/steps/filter.ts.html +0 -394
  265. package/coverage/lcov-report/src/automations/steps/index.html +0 -371
  266. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +0 -409
  267. package/coverage/lcov-report/src/automations/steps/loop.ts.html +0 -241
  268. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +0 -499
  269. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +0 -664
  270. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +0 -355
  271. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +0 -256
  272. package/coverage/lcov-report/src/automations/steps/slack.ts.html +0 -340
  273. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +0 -439
  274. package/coverage/lcov-report/src/automations/steps/utils.ts.html +0 -223
  275. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +0 -403
  276. package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
  277. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
  278. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
  279. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +0 -193
  280. package/coverage/lcov-report/src/automations/triggerInfo/index.html +0 -206
  281. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
  282. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +0 -196
  283. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +0 -220
  284. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +0 -220
  285. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +0 -208
  286. package/coverage/lcov-report/src/automations/triggers.ts.html +0 -553
  287. package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
  288. package/coverage/lcov-report/src/constants/index.html +0 -146
  289. package/coverage/lcov-report/src/constants/index.ts.html +0 -697
  290. package/coverage/lcov-report/src/constants/layouts.ts.html +0 -526
  291. package/coverage/lcov-report/src/constants/screens.ts.html +0 -229
  292. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
  293. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
  294. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
  295. package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
  296. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
  297. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
  298. package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
  299. package/coverage/lcov-report/src/db/inMemoryView.ts.html +0 -250
  300. package/coverage/lcov-report/src/db/index.html +0 -176
  301. package/coverage/lcov-report/src/db/index.ts.html +0 -133
  302. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +0 -1417
  303. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
  304. package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
  305. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +0 -736
  306. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +0 -460
  307. package/coverage/lcov-report/src/db/newid.ts.html +0 -100
  308. package/coverage/lcov-report/src/db/utils.ts.html +0 -913
  309. package/coverage/lcov-report/src/definitions/automations.ts.html +0 -184
  310. package/coverage/lcov-report/src/definitions/index.html +0 -116
  311. package/coverage/lcov-report/src/environment.ts.html +0 -472
  312. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +0 -259
  313. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +0 -172
  314. package/coverage/lcov-report/src/events/index.html +0 -161
  315. package/coverage/lcov-report/src/events/index.ts.html +0 -100
  316. package/coverage/lcov-report/src/events/utils.ts.html +0 -319
  317. package/coverage/lcov-report/src/index.html +0 -191
  318. package/coverage/lcov-report/src/index.ts.html +0 -133
  319. package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
  320. package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
  321. package/coverage/lcov-report/src/integrations/base/index.html +0 -161
  322. package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -139
  323. package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -2017
  324. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
  325. package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
  326. package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -484
  327. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
  328. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -646
  329. package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
  330. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
  331. package/coverage/lcov-report/src/integrations/index.html +0 -371
  332. package/coverage/lcov-report/src/integrations/index.ts.html +0 -460
  333. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
  334. package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1999
  335. package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -979
  336. package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
  337. package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
  338. package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
  339. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -328
  340. package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
  341. package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1372
  342. package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
  343. package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
  344. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +0 -85
  345. package/coverage/lcov-report/src/integrations/tests/index.html +0 -116
  346. package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1036
  347. package/coverage/lcov-report/src/middleware/appInfo.ts.html +0 -145
  348. package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -472
  349. package/coverage/lcov-report/src/middleware/builder.ts.html +0 -361
  350. package/coverage/lcov-report/src/middleware/currentapp.ts.html +0 -508
  351. package/coverage/lcov-report/src/middleware/index.html +0 -236
  352. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +0 -205
  353. package/coverage/lcov-report/src/middleware/publicApi.ts.html +0 -148
  354. package/coverage/lcov-report/src/middleware/resourceId.ts.html +0 -283
  355. package/coverage/lcov-report/src/middleware/selfhost.ts.html +0 -121
  356. package/coverage/lcov-report/src/middleware/utils.ts.html +0 -112
  357. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -166
  358. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
  359. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
  360. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
  361. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
  362. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
  363. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
  364. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
  365. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
  366. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
  367. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -286
  368. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
  369. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
  370. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
  371. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
  372. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
  373. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
  374. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
  375. package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
  376. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
  377. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
  378. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
  379. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
  380. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
  381. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
  382. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
  383. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
  384. package/coverage/lcov-report/src/migrations/index.html +0 -116
  385. package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
  386. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
  387. package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
  388. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
  389. package/coverage/lcov-report/src/sdk/app/applications/index.html +0 -146
  390. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +0 -106
  391. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +0 -268
  392. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +0 -136
  393. package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
  394. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
  395. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
  396. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
  397. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
  398. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -640
  399. package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
  400. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
  401. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
  402. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +0 -562
  403. package/coverage/lcov-report/src/sdk/app/datasources/index.html +0 -131
  404. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +0 -100
  405. package/coverage/lcov-report/src/sdk/app/queries/index.html +0 -131
  406. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +0 -100
  407. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +0 -235
  408. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +0 -265
  409. package/coverage/lcov-report/src/sdk/app/rows/index.html +0 -146
  410. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +0 -106
  411. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +0 -139
  412. package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
  413. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -274
  414. package/coverage/lcov-report/src/sdk/index.html +0 -116
  415. package/coverage/lcov-report/src/sdk/index.ts.html +0 -151
  416. package/coverage/lcov-report/src/sdk/users/index.html +0 -131
  417. package/coverage/lcov-report/src/sdk/users/index.ts.html +0 -100
  418. package/coverage/lcov-report/src/sdk/users/utils.ts.html +0 -277
  419. package/coverage/lcov-report/src/sdk/utils/index.html +0 -116
  420. package/coverage/lcov-report/src/sdk/utils/index.ts.html +0 -133
  421. package/coverage/lcov-report/src/startup.ts.html +0 -484
  422. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -2032
  423. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
  424. package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
  425. package/coverage/lcov-report/src/tests/utilities/index.ts.html +0 -118
  426. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -856
  427. package/coverage/lcov-report/src/threads/automation.ts.html +0 -1555
  428. package/coverage/lcov-report/src/threads/index.html +0 -161
  429. package/coverage/lcov-report/src/threads/index.ts.html +0 -418
  430. package/coverage/lcov-report/src/threads/query.ts.html +0 -1000
  431. package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
  432. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +0 -94
  433. package/coverage/lcov-report/src/utilities/centralPath.ts.html +0 -151
  434. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  435. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
  436. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -601
  437. package/coverage/lcov-report/src/utilities/fileSystem/index.html +0 -206
  438. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -100
  439. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -277
  440. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
  441. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  442. package/coverage/lcov-report/src/utilities/global.ts.html +0 -499
  443. package/coverage/lcov-report/src/utilities/index.html +0 -251
  444. package/coverage/lcov-report/src/utilities/index.ts.html +0 -487
  445. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
  446. package/coverage/lcov-report/src/utilities/routing/index.html +0 -116
  447. package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
  448. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
  449. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +0 -922
  450. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
  451. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +0 -373
  452. package/coverage/lcov-report/src/utilities/schema.ts.html +0 -508
  453. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +0 -169
  454. package/coverage/lcov-report/src/utilities/security.ts.html +0 -280
  455. package/coverage/lcov-report/src/utilities/usageQuota/index.html +0 -131
  456. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +0 -325
  457. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +0 -139
  458. package/coverage/lcov-report/src/utilities/users.ts.html +0 -232
  459. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +0 -646
  460. package/coverage/lcov-report/src/watch.ts.html +0 -196
  461. package/coverage/lcov-report/src/websocket.ts.html +0 -163
  462. package/coverage/lcov.info +0 -21770
  463. 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.e7d5703a.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.17",
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.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.17",
47
+ "@budibase/client": "^2.3.17",
48
+ "@budibase/pro": "2.3.17",
49
+ "@budibase/string-templates": "^2.3.17",
50
+ "@budibase/types": "^2.3.17",
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) {