@budibase/server 2.3.18-alpha.9 → 2.3.18

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 (477) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/index.4488f38d.css +6 -0
  3. package/builder/assets/{index.956858d3.js → index.527a5fcb.js} +415 -422
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +11774 -0
  6. package/coverage/coverage-final.json +284 -0
  7. package/coverage/lcov-report/base.css +224 -0
  8. package/coverage/lcov-report/block-navigation.js +87 -0
  9. package/coverage/lcov-report/favicon.png +0 -0
  10. package/coverage/lcov-report/index.html +1031 -0
  11. package/coverage/lcov-report/prettify.css +1 -0
  12. package/coverage/lcov-report/prettify.js +2 -0
  13. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  14. package/coverage/lcov-report/sorter.js +196 -0
  15. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +190 -0
  16. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +247 -0
  17. package/coverage/lcov-report/src/api/controllers/application.ts.html +1987 -0
  18. package/coverage/lcov-report/src/api/controllers/auth.ts.html +301 -0
  19. package/coverage/lcov-report/src/api/controllers/automation.ts.html +940 -0
  20. package/coverage/lcov-report/src/api/controllers/backup.ts.html +148 -0
  21. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +442 -0
  22. package/coverage/lcov-report/src/api/controllers/component.ts.html +259 -0
  23. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +1135 -0
  24. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +262 -0
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.html +131 -0
  26. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +694 -0
  27. package/coverage/lcov-report/src/api/controllers/dev.ts.html +472 -0
  28. package/coverage/lcov-report/src/api/controllers/index.html +431 -0
  29. package/coverage/lcov-report/src/api/controllers/integration.ts.html +124 -0
  30. package/coverage/lcov-report/src/api/controllers/layout.ts.html +226 -0
  31. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +211 -0
  32. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +127 -0
  33. package/coverage/lcov-report/src/api/controllers/permission.ts.html +619 -0
  34. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +130 -0
  35. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +310 -0
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.html +206 -0
  37. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +499 -0
  38. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +253 -0
  39. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +97 -0
  40. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +121 -0
  41. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +136 -0
  42. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +385 -0
  43. package/coverage/lcov-report/src/api/controllers/public/index.html +191 -0
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +181 -0
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +191 -0
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +124 -0
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +202 -0
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +178 -0
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +163 -0
  50. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +181 -0
  51. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +145 -0
  52. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +328 -0
  53. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +253 -0
  54. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +325 -0
  55. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +220 -0
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.html +116 -0
  57. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +373 -0
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +131 -0
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +379 -0
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +157 -0
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +403 -0
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +146 -0
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +586 -0
  64. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +712 -0
  65. package/coverage/lcov-report/src/api/controllers/query/index.html +131 -0
  66. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +1000 -0
  67. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +235 -0
  68. package/coverage/lcov-report/src/api/controllers/role.ts.html +397 -0
  69. package/coverage/lcov-report/src/api/controllers/routing.ts.html +370 -0
  70. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +2305 -0
  71. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +931 -0
  72. package/coverage/lcov-report/src/api/controllers/row/index.html +206 -0
  73. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +541 -0
  74. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +1609 -0
  75. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1678 -0
  76. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +595 -0
  77. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +556 -0
  78. package/coverage/lcov-report/src/api/controllers/screen.ts.html +463 -0
  79. package/coverage/lcov-report/src/api/controllers/script.ts.html +121 -0
  80. package/coverage/lcov-report/src/api/controllers/static/index.html +116 -0
  81. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +679 -0
  82. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +649 -0
  83. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +1153 -0
  84. package/coverage/lcov-report/src/api/controllers/table/index.html +176 -0
  85. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +514 -0
  86. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +658 -0
  87. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1273 -0
  88. package/coverage/lcov-report/src/api/controllers/templates.ts.html +214 -0
  89. package/coverage/lcov-report/src/api/controllers/user.ts.html +634 -0
  90. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +214 -0
  91. package/coverage/lcov-report/src/api/controllers/view/index.html +161 -0
  92. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +661 -0
  93. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +580 -0
  94. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +694 -0
  95. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +385 -0
  96. package/coverage/lcov-report/src/api/index.html +116 -0
  97. package/coverage/lcov-report/src/api/index.ts.html +352 -0
  98. package/coverage/lcov-report/src/api/routes/analytics.ts.html +112 -0
  99. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +121 -0
  100. package/coverage/lcov-report/src/api/routes/application.ts.html +256 -0
  101. package/coverage/lcov-report/src/api/routes/auth.ts.html +109 -0
  102. package/coverage/lcov-report/src/api/routes/automation.ts.html +346 -0
  103. package/coverage/lcov-report/src/api/routes/backup.ts.html +127 -0
  104. package/coverage/lcov-report/src/api/routes/cloud.ts.html +139 -0
  105. package/coverage/lcov-report/src/api/routes/component.ts.html +127 -0
  106. package/coverage/lcov-report/src/api/routes/datasource.ts.html +265 -0
  107. package/coverage/lcov-report/src/api/routes/deploy.ts.html +145 -0
  108. package/coverage/lcov-report/src/api/routes/dev.ts.html +199 -0
  109. package/coverage/lcov-report/src/api/routes/index.html +551 -0
  110. package/coverage/lcov-report/src/api/routes/index.ts.html +298 -0
  111. package/coverage/lcov-report/src/api/routes/integration.ts.html +133 -0
  112. package/coverage/lcov-report/src/api/routes/layout.ts.html +133 -0
  113. package/coverage/lcov-report/src/api/routes/metadata.ts.html +199 -0
  114. package/coverage/lcov-report/src/api/routes/migrations.ts.html +127 -0
  115. package/coverage/lcov-report/src/api/routes/permission.ts.html +208 -0
  116. package/coverage/lcov-report/src/api/routes/plugin.ts.html +151 -0
  117. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +673 -0
  118. package/coverage/lcov-report/src/api/routes/public/index.html +191 -0
  119. package/coverage/lcov-report/src/api/routes/public/index.ts.html +493 -0
  120. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +116 -0
  121. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +340 -0
  122. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +313 -0
  123. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +598 -0
  124. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +586 -0
  125. package/coverage/lcov-report/src/api/routes/public/tests/index.html +116 -0
  126. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +169 -0
  127. package/coverage/lcov-report/src/api/routes/public/users.ts.html +511 -0
  128. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +238 -0
  129. package/coverage/lcov-report/src/api/routes/public/utils/index.html +116 -0
  130. package/coverage/lcov-report/src/api/routes/query.ts.html +268 -0
  131. package/coverage/lcov-report/src/api/routes/role.ts.html +157 -0
  132. package/coverage/lcov-report/src/api/routes/routing.ts.html +127 -0
  133. package/coverage/lcov-report/src/api/routes/row.ts.html +883 -0
  134. package/coverage/lcov-report/src/api/routes/screen.ts.html +154 -0
  135. package/coverage/lcov-report/src/api/routes/script.ts.html +115 -0
  136. package/coverage/lcov-report/src/api/routes/static.ts.html +280 -0
  137. package/coverage/lcov-report/src/api/routes/table.ts.html +595 -0
  138. package/coverage/lcov-report/src/api/routes/templates.ts.html +133 -0
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +550 -0
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +131 -0
  141. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +367 -0
  142. package/coverage/lcov-report/src/api/routes/user.ts.html +238 -0
  143. package/coverage/lcov-report/src/api/routes/utils/index.html +116 -0
  144. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +805 -0
  145. package/coverage/lcov-report/src/api/routes/view.ts.html +187 -0
  146. package/coverage/lcov-report/src/api/routes/webhook.ts.html +166 -0
  147. package/coverage/lcov-report/src/app.ts.html +424 -0
  148. package/coverage/lcov-report/src/automations/actions.ts.html +316 -0
  149. package/coverage/lcov-report/src/automations/automationUtils.ts.html +562 -0
  150. package/coverage/lcov-report/src/automations/bullboard.ts.html +199 -0
  151. package/coverage/lcov-report/src/automations/index.html +191 -0
  152. package/coverage/lcov-report/src/automations/index.ts.html +163 -0
  153. package/coverage/lcov-report/src/automations/logging/index.html +116 -0
  154. package/coverage/lcov-report/src/automations/logging/index.ts.html +199 -0
  155. package/coverage/lcov-report/src/automations/steps/bash.ts.html +319 -0
  156. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +382 -0
  157. package/coverage/lcov-report/src/automations/steps/delay.ts.html +217 -0
  158. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +349 -0
  159. package/coverage/lcov-report/src/automations/steps/discord.ts.html +397 -0
  160. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +370 -0
  161. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +325 -0
  162. package/coverage/lcov-report/src/automations/steps/filter.ts.html +394 -0
  163. package/coverage/lcov-report/src/automations/steps/index.html +371 -0
  164. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +409 -0
  165. package/coverage/lcov-report/src/automations/steps/loop.ts.html +241 -0
  166. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +499 -0
  167. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +664 -0
  168. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +355 -0
  169. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +256 -0
  170. package/coverage/lcov-report/src/automations/steps/slack.ts.html +340 -0
  171. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +439 -0
  172. package/coverage/lcov-report/src/automations/steps/utils.ts.html +223 -0
  173. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +403 -0
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.html +116 -0
  175. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +265 -0
  176. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +196 -0
  177. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +193 -0
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.html +206 -0
  179. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +130 -0
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +196 -0
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +220 -0
  182. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +220 -0
  183. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +208 -0
  184. package/coverage/lcov-report/src/automations/triggers.ts.html +553 -0
  185. package/coverage/lcov-report/src/automations/utils.ts.html +886 -0
  186. package/coverage/lcov-report/src/constants/index.html +146 -0
  187. package/coverage/lcov-report/src/constants/index.ts.html +697 -0
  188. package/coverage/lcov-report/src/constants/layouts.ts.html +526 -0
  189. package/coverage/lcov-report/src/constants/screens.ts.html +229 -0
  190. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +2059 -0
  191. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +541 -0
  192. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +427 -0
  193. package/coverage/lcov-report/src/db/defaultData/index.html +176 -0
  194. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +403 -0
  195. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +559 -0
  196. package/coverage/lcov-report/src/db/dynamoClient.ts.html +526 -0
  197. package/coverage/lcov-report/src/db/inMemoryView.ts.html +250 -0
  198. package/coverage/lcov-report/src/db/index.html +176 -0
  199. package/coverage/lcov-report/src/db/index.ts.html +133 -0
  200. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1417 -0
  201. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +265 -0
  202. package/coverage/lcov-report/src/db/linkedRows/index.html +161 -0
  203. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +736 -0
  204. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +460 -0
  205. package/coverage/lcov-report/src/db/newid.ts.html +100 -0
  206. package/coverage/lcov-report/src/db/utils.ts.html +913 -0
  207. package/coverage/lcov-report/src/definitions/automations.ts.html +184 -0
  208. package/coverage/lcov-report/src/definitions/index.html +116 -0
  209. package/coverage/lcov-report/src/environment.ts.html +472 -0
  210. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +259 -0
  211. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +172 -0
  212. package/coverage/lcov-report/src/events/index.html +161 -0
  213. package/coverage/lcov-report/src/events/index.ts.html +100 -0
  214. package/coverage/lcov-report/src/events/utils.ts.html +319 -0
  215. package/coverage/lcov-report/src/index.html +191 -0
  216. package/coverage/lcov-report/src/index.ts.html +133 -0
  217. package/coverage/lcov-report/src/integrations/airtable.ts.html +529 -0
  218. package/coverage/lcov-report/src/integrations/arangodb.ts.html +415 -0
  219. package/coverage/lcov-report/src/integrations/base/index.html +161 -0
  220. package/coverage/lcov-report/src/integrations/base/query.ts.html +139 -0
  221. package/coverage/lcov-report/src/integrations/base/sql.ts.html +2017 -0
  222. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +691 -0
  223. package/coverage/lcov-report/src/integrations/base/utils.ts.html +121 -0
  224. package/coverage/lcov-report/src/integrations/couchdb.ts.html +484 -0
  225. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +745 -0
  226. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +646 -0
  227. package/coverage/lcov-report/src/integrations/firebase.ts.html +646 -0
  228. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1315 -0
  229. package/coverage/lcov-report/src/integrations/index.html +371 -0
  230. package/coverage/lcov-report/src/integrations/index.ts.html +460 -0
  231. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1012 -0
  232. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1999 -0
  233. package/coverage/lcov-report/src/integrations/mysql.ts.html +979 -0
  234. package/coverage/lcov-report/src/integrations/oracle.ts.html +1387 -0
  235. package/coverage/lcov-report/src/integrations/postgres.ts.html +1087 -0
  236. package/coverage/lcov-report/src/integrations/queries/index.html +116 -0
  237. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +328 -0
  238. package/coverage/lcov-report/src/integrations/redis.ts.html +550 -0
  239. package/coverage/lcov-report/src/integrations/rest.ts.html +1372 -0
  240. package/coverage/lcov-report/src/integrations/s3.ts.html +862 -0
  241. package/coverage/lcov-report/src/integrations/snowflake.ts.html +376 -0
  242. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +85 -0
  243. package/coverage/lcov-report/src/integrations/tests/index.html +116 -0
  244. package/coverage/lcov-report/src/integrations/utils.ts.html +1036 -0
  245. package/coverage/lcov-report/src/middleware/appInfo.ts.html +145 -0
  246. package/coverage/lcov-report/src/middleware/authorized.ts.html +472 -0
  247. package/coverage/lcov-report/src/middleware/builder.ts.html +361 -0
  248. package/coverage/lcov-report/src/middleware/currentapp.ts.html +508 -0
  249. package/coverage/lcov-report/src/middleware/index.html +236 -0
  250. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +205 -0
  251. package/coverage/lcov-report/src/middleware/publicApi.ts.html +148 -0
  252. package/coverage/lcov-report/src/middleware/resourceId.ts.html +283 -0
  253. package/coverage/lcov-report/src/middleware/selfhost.ts.html +121 -0
  254. package/coverage/lcov-report/src/middleware/utils.ts.html +112 -0
  255. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +166 -0
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +163 -0
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +151 -0
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +206 -0
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +172 -0
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +226 -0
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +151 -0
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +151 -0
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +166 -0
  264. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +532 -0
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +286 -0
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +146 -0
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +265 -0
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +232 -0
  269. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +724 -0
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +161 -0
  271. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +106 -0
  272. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +235 -0
  273. package/coverage/lcov-report/src/migrations/functions/index.html +161 -0
  274. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +130 -0
  275. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +520 -0
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +161 -0
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +94 -0
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +127 -0
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +115 -0
  280. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +169 -0
  281. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +124 -0
  282. package/coverage/lcov-report/src/migrations/index.html +116 -0
  283. package/coverage/lcov-report/src/migrations/index.ts.html +430 -0
  284. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +205 -0
  285. package/coverage/lcov-report/src/migrations/tests/index.html +131 -0
  286. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +283 -0
  287. package/coverage/lcov-report/src/sdk/app/applications/index.html +146 -0
  288. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +106 -0
  289. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +268 -0
  290. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +136 -0
  291. package/coverage/lcov-report/src/sdk/app/automations/index.html +131 -0
  292. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +100 -0
  293. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +214 -0
  294. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +91 -0
  295. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +604 -0
  296. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +640 -0
  297. package/coverage/lcov-report/src/sdk/app/backups/index.html +176 -0
  298. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +112 -0
  299. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +292 -0
  300. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +562 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  302. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  304. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +100 -0
  305. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +235 -0
  306. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +265 -0
  307. package/coverage/lcov-report/src/sdk/app/rows/index.html +146 -0
  308. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +106 -0
  309. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +139 -0
  310. package/coverage/lcov-report/src/sdk/app/tables/index.html +116 -0
  311. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +274 -0
  312. package/coverage/lcov-report/src/sdk/index.html +116 -0
  313. package/coverage/lcov-report/src/sdk/index.ts.html +151 -0
  314. package/coverage/lcov-report/src/sdk/users/index.html +131 -0
  315. package/coverage/lcov-report/src/sdk/users/index.ts.html +100 -0
  316. package/coverage/lcov-report/src/sdk/users/utils.ts.html +277 -0
  317. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  318. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  319. package/coverage/lcov-report/src/startup.ts.html +484 -0
  320. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +2032 -0
  321. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +127 -0
  322. package/coverage/lcov-report/src/tests/utilities/index.html +161 -0
  323. package/coverage/lcov-report/src/tests/utilities/index.ts.html +118 -0
  324. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +856 -0
  325. package/coverage/lcov-report/src/threads/automation.ts.html +1555 -0
  326. package/coverage/lcov-report/src/threads/index.html +161 -0
  327. package/coverage/lcov-report/src/threads/index.ts.html +418 -0
  328. package/coverage/lcov-report/src/threads/query.ts.html +1000 -0
  329. package/coverage/lcov-report/src/threads/utils.ts.html +373 -0
  330. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +94 -0
  331. package/coverage/lcov-report/src/utilities/centralPath.ts.html +151 -0
  332. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
  333. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +547 -0
  334. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.html +206 -0
  336. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +100 -0
  337. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
  338. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +142 -0
  339. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
  340. package/coverage/lcov-report/src/utilities/global.ts.html +499 -0
  341. package/coverage/lcov-report/src/utilities/index.html +251 -0
  342. package/coverage/lcov-report/src/utilities/index.ts.html +487 -0
  343. package/coverage/lcov-report/src/utilities/redis.ts.html +343 -0
  344. package/coverage/lcov-report/src/utilities/routing/index.html +116 -0
  345. package/coverage/lcov-report/src/utilities/routing/index.ts.html +181 -0
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +146 -0
  347. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +922 -0
  348. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +373 -0
  349. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +373 -0
  350. package/coverage/lcov-report/src/utilities/schema.ts.html +508 -0
  351. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +169 -0
  352. package/coverage/lcov-report/src/utilities/security.ts.html +280 -0
  353. package/coverage/lcov-report/src/utilities/usageQuota/index.html +131 -0
  354. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +325 -0
  355. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +139 -0
  356. package/coverage/lcov-report/src/utilities/users.ts.html +232 -0
  357. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +646 -0
  358. package/coverage/lcov-report/src/watch.ts.html +196 -0
  359. package/coverage/lcov-report/src/websocket.ts.html +163 -0
  360. package/coverage/lcov.info +21777 -0
  361. package/dist/api/controllers/automation.js +2 -11
  362. package/dist/api/controllers/query/index.js +0 -2
  363. package/dist/api/controllers/row/ExternalRequest.js +2 -4
  364. package/dist/api/controllers/row/external.js +1 -12
  365. package/dist/api/controllers/table/external.js +8 -8
  366. package/dist/api/index.js +21 -1
  367. package/dist/api/routes/automation.js +1 -1
  368. package/dist/api/routes/public/tests/utils.js +33 -0
  369. package/dist/app.js +1 -7
  370. package/dist/constants/index.js +24 -4
  371. package/dist/db/defaultData/datasource_bb_default.js +5 -6
  372. package/dist/db/linkedRows/LinkController.js +8 -9
  373. package/dist/integrations/base/sql.js +3 -10
  374. package/dist/middleware/authorized.js +3 -5
  375. package/dist/middleware/builder.js +3 -6
  376. package/dist/package.json +8 -12
  377. package/dist/sdk/app/backups/exports.js +2 -8
  378. package/dist/sdk/app/datasources/datasources.js +0 -3
  379. package/dist/tsconfig.build.tsbuildinfo +1 -1
  380. package/dist/utilities/redis.js +0 -2
  381. package/jest.config.ts +22 -34
  382. package/package.json +9 -13
  383. package/specs/openapi.json +6 -6
  384. package/specs/openapi.yaml +3 -3
  385. package/specs/resources/query.js +1 -1
  386. package/specs/resources/table.js +1 -1
  387. package/src/api/controllers/automation.ts +2 -13
  388. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  389. package/src/api/controllers/query/index.ts +0 -2
  390. package/src/api/controllers/row/ExternalRequest.ts +2 -6
  391. package/src/api/controllers/row/external.ts +1 -13
  392. package/src/api/controllers/table/external.ts +2 -3
  393. package/src/api/index.ts +22 -3
  394. package/src/api/routes/automation.ts +1 -1
  395. package/src/api/routes/public/applications.ts +1 -0
  396. package/src/api/routes/public/tests/compare.spec.js +1 -1
  397. package/src/api/routes/public/tests/users.spec.js +1 -1
  398. package/src/api/routes/public/tests/utils.ts +8 -25
  399. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  400. package/src/api/routes/tests/analytics.spec.js +1 -4
  401. package/src/api/routes/tests/apikeys.spec.js +1 -1
  402. package/src/api/routes/tests/application.spec.ts +6 -20
  403. package/src/api/routes/tests/auth.spec.js +2 -2
  404. package/src/api/routes/tests/automation.spec.js +2 -6
  405. package/src/api/routes/tests/backup.spec.ts +14 -4
  406. package/src/api/routes/tests/{cloud.seq.spec.ts → cloud.spec.ts} +15 -11
  407. package/src/api/routes/tests/component.spec.js +1 -1
  408. package/src/api/routes/tests/datasource.spec.ts +3 -20
  409. package/src/api/routes/tests/dev.spec.js +1 -1
  410. package/src/api/routes/tests/integration.spec.js +1 -1
  411. package/src/api/routes/tests/layout.spec.js +1 -1
  412. package/src/api/routes/tests/metadata.spec.js +1 -1
  413. package/src/api/routes/tests/misc.spec.js +1 -1
  414. package/src/api/routes/tests/permissions.spec.js +1 -4
  415. package/src/api/routes/tests/{query.seq.spec.js → query.spec.js} +1 -22
  416. package/src/api/routes/tests/role.spec.js +1 -6
  417. package/src/api/routes/tests/routing.spec.js +1 -1
  418. package/src/api/routes/tests/row.spec.js +3 -11
  419. package/src/api/routes/tests/screen.spec.js +1 -1
  420. package/src/api/routes/tests/static.spec.js +13 -2
  421. package/src/api/routes/tests/table.spec.js +1 -1
  422. package/src/api/routes/tests/templates.spec.js +1 -1
  423. package/src/api/routes/tests/user.spec.js +12 -11
  424. package/src/api/routes/tests/utilities/TestFunctions.ts +2 -25
  425. package/src/api/routes/tests/utilities/index.ts +3 -5
  426. package/src/api/routes/tests/view.spec.js +1 -4
  427. package/src/api/routes/tests/webhook.spec.js +2 -11
  428. package/src/app.ts +1 -10
  429. package/src/automations/tests/automation.spec.js +4 -4
  430. package/src/automations/tests/bash.spec.js +1 -1
  431. package/src/automations/tests/discord.spec.js +1 -1
  432. package/src/automations/tests/executeQuery.spec.js +3 -2
  433. package/src/automations/tests/executeScript.spec.js +1 -1
  434. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  435. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  436. package/src/automations/tests/serverLog.spec.js +1 -1
  437. package/src/automations/tests/updateRow.spec.js +1 -1
  438. package/src/automations/tests/zapier.spec.js +1 -1
  439. package/src/constants/index.ts +23 -1
  440. package/src/db/defaultData/datasource_bb_default.ts +10 -6
  441. package/src/db/linkedRows/LinkController.ts +1 -2
  442. package/src/db/tests/linkController.spec.js +1 -4
  443. package/src/db/tests/linkTests.spec.js +1 -1
  444. package/src/integrations/base/sql.ts +5 -15
  445. package/src/integrations/oracle.ts +1 -1
  446. package/src/integrations/tests/couchdb.spec.ts +2 -0
  447. package/src/middleware/authorized.ts +4 -6
  448. package/src/middleware/builder.ts +3 -8
  449. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  450. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  451. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  452. package/src/migrations/tests/index.spec.ts +20 -13
  453. package/src/sdk/app/backups/exports.ts +2 -8
  454. package/src/sdk/app/datasources/datasources.ts +0 -3
  455. package/src/tests/jestEnv.ts +11 -8
  456. package/src/tests/jestSetup.ts +7 -9
  457. package/src/tests/utilities/TestConfiguration.ts +92 -166
  458. package/src/tests/utilities/structures.ts +2 -16
  459. package/src/utilities/redis.ts +0 -2
  460. package/tsconfig.build.json +0 -1
  461. package/builder/assets/blankScreenPreview.72634dd1.png +0 -0
  462. package/builder/assets/index.22724f34.css +0 -6
  463. package/builder/assets/listScreenPreview.599c0aae.png +0 -0
  464. package/dist/ddApm.js +0 -11
  465. package/dist/elasticApm.js +0 -14
  466. package/dist/utilities/retry.js +0 -30
  467. package/jest-testcontainers-config.js +0 -8
  468. package/scripts/load/create-many-apps.js +0 -24
  469. package/scripts/load/create-many-rows.js +0 -30
  470. package/scripts/load/utils.js +0 -66
  471. package/scripts/test.sh +0 -12
  472. package/src/api/routes/tests/environmentVariables.spec.ts +0 -144
  473. package/src/ddApm.ts +0 -7
  474. package/src/elasticApm.ts +0 -10
  475. package/src/integration-test/postgres.spec.ts +0 -762
  476. package/src/tests/logging.ts +0 -34
  477. package/src/utilities/retry.ts +0 -18
@@ -85,13 +85,9 @@ function create(ctx) {
85
85
  automation.appId = ctx.appId;
86
86
  // call through to update if already exists
87
87
  if (automation._id && automation._rev) {
88
- yield update(ctx);
89
- return;
90
- }
91
- // Respect existing IDs if recreating a deleted automation
92
- if (!automation._id) {
93
- automation._id = (0, utils_1.generateAutomationID)();
88
+ return update(ctx);
94
89
  }
90
+ automation._id = (0, utils_1.generateAutomationID)();
95
91
  automation.type = "automation";
96
92
  automation = cleanAutomationInputs(automation);
97
93
  automation = yield (0, utils_2.checkForWebhooks)({
@@ -141,11 +137,6 @@ function update(ctx) {
141
137
  const db = backend_core_1.context.getAppDB();
142
138
  let automation = ctx.request.body;
143
139
  automation.appId = ctx.appId;
144
- // Call through to create if it doesn't exist
145
- if (!automation._id || !automation._rev) {
146
- yield create(ctx);
147
- return;
148
- }
149
140
  const oldAutomation = yield db.get(automation._id);
150
141
  automation = cleanAutomationInputs(automation);
151
142
  automation = yield (0, utils_2.checkForWebhooks)({
@@ -184,8 +184,6 @@ function preview(ctx) {
184
184
  schemaFields[key] = fieldType;
185
185
  }
186
186
  }
187
- // remove configuration before sending event
188
- delete datasource.config;
189
187
  yield backend_core_1.events.query.previewed(datasource, query);
190
188
  ctx.body = {
191
189
  rows,
@@ -439,7 +439,7 @@ class ExternalRequest {
439
439
  isOneSide(field)) {
440
440
  continue;
441
441
  }
442
- const isMany = field.relationshipType === types_1.RelationshipTypes.MANY_TO_MANY;
442
+ const isMany = field.relationshipType === constants_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,9 +609,7 @@ class ExternalRequest {
609
609
  },
610
610
  resource: {
611
611
  // have to specify the fields to avoid column overlap (for SQL)
612
- fields: isSql
613
- ? this.buildFields(table, config.includeSqlRelationships)
614
- : [],
612
+ fields: isSql ? this.buildFields(table) : [],
615
613
  },
616
614
  filters,
617
615
  sort,
@@ -86,7 +86,6 @@ 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,
90
89
  });
91
90
  });
92
91
  }
@@ -97,7 +96,6 @@ function save(ctx) {
97
96
  const tableId = ctx.params.tableId;
98
97
  return handleRequest(types_1.Operation.CREATE, tableId, {
99
98
  row: inputs,
100
- includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
101
99
  });
102
100
  });
103
101
  }
@@ -115,9 +113,7 @@ exports.fetchView = fetchView;
115
113
  function fetch(ctx) {
116
114
  return __awaiter(this, void 0, void 0, function* () {
117
115
  const tableId = ctx.params.tableId;
118
- return handleRequest(types_1.Operation.READ, tableId, {
119
- includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
120
- });
116
+ return handleRequest(types_1.Operation.READ, tableId);
121
117
  });
122
118
  }
123
119
  exports.fetch = fetch;
@@ -127,7 +123,6 @@ function find(ctx) {
127
123
  const tableId = ctx.params.tableId;
128
124
  const response = (yield handleRequest(types_1.Operation.READ, tableId, {
129
125
  id: (0, utils_1.breakRowIdField)(id),
130
- includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
131
126
  }));
132
127
  return response ? response[0] : response;
133
128
  });
@@ -139,7 +134,6 @@ function destroy(ctx) {
139
134
  const id = ctx.request.body._id;
140
135
  const { row } = (yield handleRequest(types_1.Operation.DELETE, tableId, {
141
136
  id: (0, utils_1.breakRowIdField)(id),
142
- includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
143
137
  }));
144
138
  return { response: { ok: true }, row };
145
139
  });
@@ -153,7 +147,6 @@ function bulkDestroy(ctx) {
153
147
  for (let row of rows) {
154
148
  promises.push(handleRequest(types_1.Operation.DELETE, tableId, {
155
149
  id: (0, utils_1.breakRowIdField)(row._id),
156
- includeSqlRelationships: types_1.IncludeRelationship.EXCLUDE,
157
150
  }));
158
151
  }
159
152
  const responses = (yield Promise.all(promises));
@@ -196,7 +189,6 @@ function search(ctx) {
196
189
  filters: query,
197
190
  sort,
198
191
  paginate: paginateObj,
199
- includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
200
192
  }));
201
193
  let hasNextPage = false;
202
194
  if (paginate && rows.length === limit) {
@@ -207,7 +199,6 @@ function search(ctx) {
207
199
  limit: 1,
208
200
  page: bookmark * limit + 1,
209
201
  },
210
- includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
211
202
  }));
212
203
  hasNextPage = nextRows.length > 0;
213
204
  }
@@ -296,7 +287,6 @@ function fetchEnrichedRow(ctx) {
296
287
  const response = (yield handleRequest(types_1.Operation.READ, tableId, {
297
288
  id,
298
289
  datasource,
299
- includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
300
290
  }));
301
291
  const table = tables[tableName];
302
292
  const row = response[0];
@@ -322,7 +312,6 @@ function fetchEnrichedRow(ctx) {
322
312
  [primaryLink]: linkedIds,
323
313
  },
324
314
  },
325
- includeSqlRelationships: types_1.IncludeRelationship.INCLUDE,
326
315
  });
327
316
  }
328
317
  return row;
@@ -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 === types_1.RelationshipTypes.MANY_TO_MANY) {
79
- return types_1.RelationshipTypes.MANY_TO_MANY;
78
+ if (type === constants_1.RelationshipTypes.MANY_TO_MANY) {
79
+ return constants_1.RelationshipTypes.MANY_TO_MANY;
80
80
  }
81
- return type === types_1.RelationshipTypes.ONE_TO_MANY
82
- ? types_1.RelationshipTypes.MANY_TO_ONE
83
- : types_1.RelationshipTypes.ONE_TO_MANY;
81
+ return type === constants_1.RelationshipTypes.ONE_TO_MANY
82
+ ? constants_1.RelationshipTypes.MANY_TO_ONE
83
+ : constants_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 === types_1.RelationshipTypes.ONE_TO_MANY;
119
+ const isOneSide = type === constants_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 === types_1.RelationshipTypes.MANY_TO_MANY) {
189
+ if (relationType === constants_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 === types_1.RelationshipTypes.ONE_TO_MANY ? table : relatedTable;
198
+ const fkTable = relationType === constants_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,7 +27,6 @@ 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);
31
30
  exports.router
32
31
  .use(compress({
33
32
  threshold: 2048,
@@ -61,6 +60,27 @@ exports.router
61
60
  // @ts-ignore
62
61
  .use(currentapp_1.default)
63
62
  .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
+ }));
64
84
  // authenticated routes
65
85
  for (let route of routes_1.mainRoutes) {
66
86
  exports.router.use(route.routes());
@@ -40,7 +40,7 @@ router
40
40
  .get("/api/automations/definitions/list", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.getDefinitionList)
41
41
  .get("/api/automations", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.fetch)
42
42
  .get("/api/automations/:id", (0, resourceId_1.paramResource)("id"), (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.find)
43
- .put("/api/automations", (0, resourceId_1.bodyResource)("_id"), (0, authorized_1.default)(backend_core_1.permissions.BUILDER), (0, validators_1.automationValidator)(false), controller.update)
43
+ .put("/api/automations", (0, resourceId_1.bodyResource)("_id"), (0, authorized_1.default)(backend_core_1.permissions.BUILDER), (0, validators_1.automationValidator)(true), controller.update)
44
44
  .post("/api/automations", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), (0, validators_1.automationValidator)(false), controller.create)
45
45
  .post("/api/automations/logs/search", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.logSearch)
46
46
  .delete("/api/automations/logs", (0, authorized_1.default)(backend_core_1.permissions.BUILDER), controller.clearLogError)
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.generateMakeRequest = void 0;
13
+ const utilities_1 = require("../../../../utilities");
14
+ function generateMakeRequest(apiKey, setup) {
15
+ const request = setup.getRequest();
16
+ const config = setup.getConfig();
17
+ return (method, endpoint, body, intAppId = config.getAppId()) => __awaiter(this, void 0, void 0, function* () {
18
+ const extraHeaders = {
19
+ "x-budibase-api-key": apiKey,
20
+ };
21
+ if (intAppId) {
22
+ extraHeaders["x-budibase-app-id"] = intAppId;
23
+ }
24
+ const req = request[method]((0, utilities_1.checkSlashesInUrl)(`/api/public/v1/${endpoint}`)).set(config.defaultHeaders(extraHeaders));
25
+ if (body) {
26
+ req.send(body);
27
+ }
28
+ const res = yield req;
29
+ expect(res.body).toBeDefined();
30
+ return res;
31
+ });
32
+ }
33
+ exports.generateMakeRequest = generateMakeRequest;
package/dist/app.js CHANGED
@@ -35,12 +35,6 @@ 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
- }
44
38
  // need to load environment first
45
39
  const environment_1 = __importDefault(require("./environment"));
46
40
  // enable APM if configured
@@ -105,7 +99,7 @@ server.on("close", () => __awaiter(void 0, void 0, void 0, function* () {
105
99
  console.log("Server Closed");
106
100
  yield automations.shutdown();
107
101
  yield redis.shutdown();
108
- backend_core_1.events.shutdown();
102
+ yield backend_core_1.events.shutdown();
109
103
  yield threads_1.Thread.shutdown();
110
104
  api.shutdown();
111
105
  if (!environment_1.default.isTest()) {
@@ -1,10 +1,7 @@
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.SwitchableTypes = exports.CanSwitchTypes = exports.NoEmptyFilterStrings = exports.FilterTypes = exports.RelationshipTypes = exports.FieldTypes = 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.RelationshipTypes = exports.SwitchableTypes = exports.CanSwitchTypes = exports.FieldTypes = exports.NoEmptyFilterStrings = exports.FilterTypes = 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; } });
8
5
  var FilterTypes;
9
6
  (function (FilterTypes) {
10
7
  FilterTypes["STRING"] = "string";
@@ -26,6 +23,23 @@ exports.NoEmptyFilterStrings = [
26
23
  FilterTypes.CONTAINS,
27
24
  FilterTypes.NOT_CONTAINS,
28
25
  ];
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 = {}));
29
43
  exports.CanSwitchTypes = [
30
44
  [exports.FieldTypes.JSON, exports.FieldTypes.ARRAY],
31
45
  [
@@ -37,6 +51,12 @@ exports.CanSwitchTypes = [
37
51
  [exports.FieldTypes.BOOLEAN, exports.FieldTypes.NUMBER],
38
52
  ];
39
53
  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 = {}));
40
60
  var FormulaTypes;
41
61
  (function (FormulaTypes) {
42
62
  FormulaTypes["STATIC"] = "static";
@@ -13,7 +13,6 @@ 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");
17
16
  exports.DEFAULT_JOBS_TABLE_ID = "ta_bb_jobs";
18
17
  exports.DEFAULT_INVENTORY_TABLE_ID = "ta_bb_inventory";
19
18
  exports.DEFAULT_EXPENSES_TABLE_ID = "ta_bb_expenses";
@@ -261,7 +260,7 @@ exports.DEFAULT_EMPLOYEE_TABLE_SCHEMA = {
261
260
  name: "Employee Level",
262
261
  sortable: false,
263
262
  }, "Badge Photo": {
264
- type: constants_1.FieldTypes.ATTACHMENT,
263
+ type: "attachment",
265
264
  constraints: {
266
265
  type: constants_1.FieldTypes.ARRAY,
267
266
  presence: false,
@@ -276,7 +275,7 @@ exports.DEFAULT_EMPLOYEE_TABLE_SCHEMA = {
276
275
  },
277
276
  fieldName: "Assigned",
278
277
  name: "Jobs",
279
- relationshipType: types_1.RelationshipTypes.MANY_TO_MANY,
278
+ relationshipType: constants_1.RelationshipTypes.MANY_TO_MANY,
280
279
  tableId: exports.DEFAULT_JOBS_TABLE_ID,
281
280
  }, "Start Date": {
282
281
  type: constants_1.FieldTypes.DATETIME,
@@ -420,10 +419,10 @@ exports.DEFAULT_JOBS_TABLE_SCHEMA = {
420
419
  type: constants_1.FieldTypes.LINK,
421
420
  tableId: exports.DEFAULT_EMPLOYEE_TABLE_ID,
422
421
  fieldName: "Jobs",
423
- relationshipType: types_1.RelationshipTypes.MANY_TO_MANY,
422
+ relationshipType: constants_1.RelationshipTypes.MANY_TO_MANY,
424
423
  // sortable: true,
425
424
  }, "Works End": {
426
- type: constants_1.FieldTypes.DATETIME,
425
+ type: "datetime",
427
426
  constraints: {
428
427
  type: "string",
429
428
  length: {},
@@ -436,7 +435,7 @@ exports.DEFAULT_JOBS_TABLE_SCHEMA = {
436
435
  name: "Works End",
437
436
  ignoreTimezones: true,
438
437
  }, "Updated Price": {
439
- type: constants_1.FieldTypes.NUMBER,
438
+ type: "number",
440
439
  constraints: {
441
440
  type: "number",
442
441
  presence: false,
@@ -18,7 +18,6 @@ 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");
22
21
  class LinkController {
23
22
  constructor({ tableId, row, table, oldTable }) {
24
23
  this._db = backend_core_1.context.getAppDB();
@@ -125,17 +124,17 @@ class LinkController {
125
124
  */
126
125
  handleRelationshipType(linkerField, linkedField) {
127
126
  if (!linkerField.relationshipType ||
128
- linkerField.relationshipType === types_1.RelationshipTypes.MANY_TO_MANY) {
129
- linkedField.relationshipType = types_1.RelationshipTypes.MANY_TO_MANY;
127
+ linkerField.relationshipType === constants_1.RelationshipTypes.MANY_TO_MANY) {
128
+ linkedField.relationshipType = constants_1.RelationshipTypes.MANY_TO_MANY;
130
129
  // make sure by default all are many to many (if not specified)
131
- linkerField.relationshipType = types_1.RelationshipTypes.MANY_TO_MANY;
130
+ linkerField.relationshipType = constants_1.RelationshipTypes.MANY_TO_MANY;
132
131
  }
133
- else if (linkerField.relationshipType === types_1.RelationshipTypes.MANY_TO_ONE) {
132
+ else if (linkerField.relationshipType === constants_1.RelationshipTypes.MANY_TO_ONE) {
134
133
  // Ensure that the other side of the relationship is locked to one record
135
- linkedField.relationshipType = types_1.RelationshipTypes.ONE_TO_MANY;
134
+ linkedField.relationshipType = constants_1.RelationshipTypes.ONE_TO_MANY;
136
135
  }
137
- else if (linkerField.relationshipType === types_1.RelationshipTypes.ONE_TO_MANY) {
138
- linkedField.relationshipType = types_1.RelationshipTypes.MANY_TO_ONE;
136
+ else if (linkerField.relationshipType === constants_1.RelationshipTypes.ONE_TO_MANY) {
137
+ linkedField.relationshipType = constants_1.RelationshipTypes.MANY_TO_ONE;
139
138
  }
140
139
  return { linkerField, linkedField };
141
140
  }
@@ -179,7 +178,7 @@ class LinkController {
179
178
  }
180
179
  // iterate through the link IDs in the row field, see if any don't exist already
181
180
  for (let linkId of rowField) {
182
- if ((linkedSchema === null || linkedSchema === void 0 ? void 0 : linkedSchema.relationshipType) === types_1.RelationshipTypes.ONE_TO_MANY) {
181
+ if ((linkedSchema === null || linkedSchema === void 0 ? void 0 : linkedSchema.relationshipType) === constants_1.RelationshipTypes.ONE_TO_MANY) {
183
182
  let links = (yield (0, linkUtils_1.getLinkDocuments)({
184
183
  tableId: field.tableId,
185
184
  rowId: linkId,
@@ -90,9 +90,6 @@ 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
- }
96
93
  const schema = (_a = meta === null || meta === void 0 ? void 0 : meta.table) === null || _a === void 0 ? void 0 : _a.schema;
97
94
  return resource.fields.map(field => {
98
95
  const fieldNames = field.split(/\./g);
@@ -382,9 +379,7 @@ class InternalBuilder {
382
379
  return query.insert(parsedBody);
383
380
  }
384
381
  else {
385
- return query
386
- .insert(parsedBody)
387
- .returning(generateSelectStatement(json, knex));
382
+ return query.insert(parsedBody).returning("*");
388
383
  }
389
384
  }
390
385
  bulkCreate(knex, json) {
@@ -463,9 +458,7 @@ class InternalBuilder {
463
458
  return query.update(parsedBody);
464
459
  }
465
460
  else {
466
- return query
467
- .update(parsedBody)
468
- .returning(generateSelectStatement(json, knex));
461
+ return query.update(parsedBody).returning("*");
469
462
  }
470
463
  }
471
464
  delete(knex, json, opts) {
@@ -480,7 +473,7 @@ class InternalBuilder {
480
473
  return query.delete();
481
474
  }
482
475
  else {
483
- return query.delete().returning(generateSelectStatement(json, knex));
476
+ return query.delete().returning("*");
484
477
  }
485
478
  }
486
479
  }
@@ -66,6 +66,9 @@ exports.default = (permType, permLevel = null, opts = { schema: false }) => (ctx
66
66
  if (!ctx.user) {
67
67
  return ctx.throw(403, "No user info found");
68
68
  }
69
+ // check general builder stuff, this middleware is a good way
70
+ // to find API endpoints which are builder focused
71
+ yield (0, builder_1.default)(ctx, permType);
69
72
  // get the resource roles
70
73
  let resourceRoles = [];
71
74
  let otherLevelRoles = [];
@@ -89,11 +92,6 @@ exports.default = (permType, permLevel = null, opts = { schema: false }) => (ctx
89
92
  if (!ctx.isAuthenticated) {
90
93
  return ctx.throw(403, "Session not authenticated");
91
94
  }
92
- // check general builder stuff, this middleware is a good way
93
- // to find API endpoints which are builder focused
94
- if (permType === backend_core_1.permissions.PermissionType.BUILDER) {
95
- yield (0, builder_1.default)(ctx);
96
- }
97
95
  try {
98
96
  // check authorized
99
97
  yield checkAuthorized(ctx, resourceRoles, permType, permLevel);
@@ -61,17 +61,14 @@ function updateAppUpdatedAt(ctx) {
61
61
  }));
62
62
  });
63
63
  }
64
- function builder(ctx) {
64
+ function builder(ctx, permType) {
65
65
  return __awaiter(this, void 0, void 0, function* () {
66
66
  const appId = ctx.appId;
67
67
  // this only functions within an app context
68
68
  if (!appId) {
69
69
  return;
70
70
  }
71
- // check authenticated
72
- if (!ctx.isAuthenticated) {
73
- return ctx.throw(403, "Session not authenticated");
74
- }
71
+ const isBuilderApi = permType === backend_core_1.permissions.PermissionType.BUILDER;
75
72
  const referer = ctx.headers["referer"];
76
73
  const overviewPath = "/builder/portal/overview/";
77
74
  const overviewContext = !referer ? false : referer.includes(overviewPath);
@@ -81,7 +78,7 @@ function builder(ctx) {
81
78
  const hasAppId = !referer ? false : referer.includes(appId);
82
79
  const editingApp = referer ? hasAppId : false;
83
80
  // check this is a builder call and editing
84
- if (!editingApp) {
81
+ if (!isBuilderApi || !editingApp) {
85
82
  return;
86
83
  }
87
84
  // check locks
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.18-alpha.8",
4
+ "version": "2.3.17",
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": "bash scripts/test.sh",
17
+ "test": "jest --coverage --maxWorkers=2",
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.18-alpha.8",
47
- "@budibase/client": "2.3.18-alpha.8",
48
- "@budibase/pro": "2.3.18-alpha.8",
49
- "@budibase/string-templates": "2.3.18-alpha.8",
50
- "@budibase/types": "2.3.18-alpha.8",
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,7 +64,6 @@
64
64
  "chokidar": "3.5.3",
65
65
  "csvtojson": "2.0.10",
66
66
  "curlconverter": "3.21.0",
67
- "dd-trace": "3.13.2",
68
67
  "dotenv": "8.2.0",
69
68
  "download": "8.0.0",
70
69
  "elastic-apm-node": "3.38.0",
@@ -126,7 +125,6 @@
126
125
  "@jest/test-sequencer": "24.9.0",
127
126
  "@swc/core": "^1.3.25",
128
127
  "@swc/jest": "^0.2.24",
129
- "@trendyol/jest-testcontainers": "^2.1.1",
130
128
  "@types/apidoc": "0.50.0",
131
129
  "@types/bson": "4.2.0",
132
130
  "@types/global-agent": "2.1.1",
@@ -142,7 +140,6 @@
142
140
  "@types/pouchdb": "6.4.0",
143
141
  "@types/redis": "4.0.11",
144
142
  "@types/server-destroy": "1.0.1",
145
- "@types/supertest": "2.0.12",
146
143
  "@types/tar": "6.1.3",
147
144
  "@typescript-eslint/parser": "5.45.0",
148
145
  "apidoc": "0.50.4",
@@ -154,14 +151,13 @@
154
151
  "is-wsl": "2.2.0",
155
152
  "jest": "28.1.1",
156
153
  "jest-openapi": "0.14.2",
157
- "jest-serial-runner": "^1.2.1",
158
154
  "nodemon": "2.0.15",
159
155
  "openapi-types": "9.3.1",
160
156
  "openapi-typescript": "5.2.0",
161
157
  "path-to-regexp": "6.2.0",
162
158
  "prettier": "2.5.1",
163
159
  "rimraf": "3.0.2",
164
- "supertest": "6.2.2",
160
+ "supertest": "4.0.2",
165
161
  "swagger-jsdoc": "6.1.0",
166
162
  "timekeeper": "2.2.0",
167
163
  "ts-jest": "28.0.4",
@@ -45,18 +45,12 @@ 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
- };
54
48
  return backend_core_1.db.doWithDB(dbName, (db) => __awaiter(this, void 0, void 0, function* () {
55
49
  // Write the dump to file if required
56
50
  if (opts === null || opts === void 0 ? void 0 : opts.exportPath) {
57
51
  const path = opts === null || opts === void 0 ? void 0 : opts.exportPath;
58
52
  const writeStream = fs_1.default.createWriteStream(path);
59
- yield db.dump(writeStream, exportOpts);
53
+ yield db.dump(writeStream, { filter: opts === null || opts === void 0 ? void 0 : opts.filter });
60
54
  return path;
61
55
  }
62
56
  else {
@@ -66,7 +60,7 @@ function exportDB(dbName, opts = {}) {
66
60
  memStream.on("data", (chunk) => {
67
61
  appString += chunk.toString();
68
62
  });
69
- yield db.dump(memStream, exportOpts);
63
+ yield db.dump(memStream, { filter: opts === null || opts === void 0 ? void 0 : opts.filter });
70
64
  return appString;
71
65
  }
72
66
  }));
@@ -89,9 +89,6 @@ 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
- }
95
92
  if (datasource.config) {
96
93
  // strip secrets from response, so they don't show in the network request
97
94
  if (datasource.config.auth) {