@budibase/server 2.3.19 → 2.3.21-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 (528) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/__mocks__/node-fetch.ts +3 -0
  3. package/builder/assets/blankScreenPreview.72634dd1.png +0 -0
  4. package/builder/assets/{index.a3f8cb92.js → index.90fba548.js} +439 -426
  5. package/builder/assets/index.b24b9dea.css +6 -0
  6. package/builder/assets/listScreenPreview.599c0aae.png +0 -0
  7. package/builder/index.html +2 -2
  8. package/dist/api/controllers/automation.js +11 -2
  9. package/dist/api/controllers/cloud.js +2 -2
  10. package/dist/api/controllers/query/index.js +2 -0
  11. package/dist/api/controllers/row/ExternalRequest.js +50 -23
  12. package/dist/api/controllers/row/external.js +12 -1
  13. package/dist/api/controllers/row/internalSearch.js +6 -450
  14. package/dist/api/controllers/row/utils.js +1 -3
  15. package/dist/api/controllers/table/external.js +8 -8
  16. package/dist/api/index.js +1 -21
  17. package/dist/api/routes/automation.js +1 -1
  18. package/dist/api/routes/public/applications.js +7 -7
  19. package/dist/api/routes/public/queries.js +2 -2
  20. package/dist/api/routes/public/rows.js +5 -5
  21. package/dist/api/routes/public/tables.js +5 -5
  22. package/dist/api/routes/public/users.js +5 -5
  23. package/dist/app.js +9 -1
  24. package/dist/constants/index.js +4 -24
  25. package/dist/db/defaultData/datasource_bb_default.js +6 -5
  26. package/dist/db/index.js +25 -2
  27. package/dist/db/linkedRows/LinkController.js +9 -8
  28. package/dist/db/utils.js +2 -5
  29. package/dist/db/views/staticViews.js +2 -1
  30. package/dist/ddApm.js +11 -0
  31. package/dist/elasticApm.js +14 -0
  32. package/dist/integrations/base/sql.js +6 -3
  33. package/dist/integrations/googlesheets.js +17 -20
  34. package/dist/middleware/authorized.js +5 -3
  35. package/dist/middleware/builder.js +6 -3
  36. package/dist/migrations/functions/backfill/global/configs.js +10 -4
  37. package/dist/migrations/tests/helpers.js +1 -1
  38. package/dist/migrations/tests/structures.js +1 -1
  39. package/dist/package.json +14 -9
  40. package/dist/sdk/app/backups/constants.js +2 -1
  41. package/dist/sdk/app/backups/exports.js +20 -7
  42. package/dist/sdk/app/datasources/datasources.js +3 -0
  43. package/dist/sdk/app/rows/attachments.js +1 -1
  44. package/dist/startup.js +3 -0
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/dist/utilities/redis.js +2 -0
  47. package/dist/utilities/retry.js +30 -0
  48. package/jest-testcontainers-config.js +8 -0
  49. package/jest.config.ts +35 -22
  50. package/package.json +15 -10
  51. package/scripts/load/create-many-apps.js +24 -0
  52. package/scripts/load/create-many-rows.js +30 -0
  53. package/scripts/load/utils.js +66 -0
  54. package/scripts/test.sh +12 -0
  55. package/specs/{generate.js → generate.ts} +7 -9
  56. package/specs/openapi.json +30 -30
  57. package/specs/openapi.yaml +27 -27
  58. package/specs/{parameters.js → parameters.ts} +6 -6
  59. package/specs/resources/{application.js → application.ts} +4 -4
  60. package/specs/resources/{index.js → index.ts} +8 -8
  61. package/specs/resources/{misc.js → misc.ts} +3 -3
  62. package/specs/resources/{query.js → query.ts} +4 -4
  63. package/specs/resources/{row.js → row.ts} +3 -4
  64. package/specs/resources/{table.js → table.ts} +5 -5
  65. package/specs/resources/{user.js → user.ts} +3 -3
  66. package/specs/resources/utils/Resource.ts +39 -0
  67. package/specs/resources/utils/{index.js → index.ts} +1 -1
  68. package/specs/{security.js → security.ts} +1 -1
  69. package/src/api/controllers/automation.ts +13 -2
  70. package/src/api/controllers/cloud.ts +2 -2
  71. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  72. package/src/api/controllers/query/index.ts +2 -0
  73. package/src/api/controllers/row/ExternalRequest.ts +98 -27
  74. package/src/api/controllers/row/external.ts +13 -1
  75. package/src/api/controllers/row/internalSearch.ts +11 -524
  76. package/src/api/controllers/row/utils.ts +1 -2
  77. package/src/api/controllers/table/external.ts +3 -2
  78. package/src/api/index.ts +3 -22
  79. package/src/api/routes/automation.ts +1 -1
  80. package/src/api/routes/public/applications.ts +7 -8
  81. package/src/api/routes/public/queries.ts +2 -2
  82. package/src/api/routes/public/rows.ts +5 -5
  83. package/src/api/routes/public/tables.ts +5 -5
  84. package/src/api/routes/public/tests/{compare.spec.js → compare.spec.ts} +45 -26
  85. package/src/api/routes/public/tests/users.spec.js +1 -1
  86. package/src/api/routes/public/tests/utils.ts +25 -8
  87. package/src/api/routes/public/users.ts +5 -5
  88. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  89. package/src/api/routes/tests/analytics.spec.js +4 -1
  90. package/src/api/routes/tests/apikeys.spec.js +1 -1
  91. package/src/api/routes/tests/application.spec.ts +20 -6
  92. package/src/api/routes/tests/auth.spec.js +2 -2
  93. package/src/api/routes/tests/automation.spec.js +6 -2
  94. package/src/api/routes/tests/backup.spec.ts +4 -14
  95. package/src/api/routes/tests/cloud.spec.ts +20 -31
  96. package/src/api/routes/tests/component.spec.js +1 -1
  97. package/src/api/routes/tests/datasource.spec.ts +20 -3
  98. package/src/api/routes/tests/dev.spec.js +1 -1
  99. package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
  100. package/src/api/routes/tests/integration.spec.js +1 -1
  101. package/src/api/routes/tests/layout.spec.js +1 -1
  102. package/src/api/routes/tests/metadata.spec.js +1 -1
  103. package/src/api/routes/tests/misc.spec.js +1 -1
  104. package/src/api/routes/tests/permissions.spec.js +4 -1
  105. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
  106. package/src/api/routes/tests/role.spec.js +6 -1
  107. package/src/api/routes/tests/routing.spec.js +1 -1
  108. package/src/api/routes/tests/row.spec.js +11 -3
  109. package/src/api/routes/tests/screen.spec.js +1 -1
  110. package/src/api/routes/tests/static.spec.js +2 -13
  111. package/src/api/routes/tests/table.spec.js +1 -1
  112. package/src/api/routes/tests/templates.spec.js +1 -1
  113. package/src/api/routes/tests/user.spec.js +11 -12
  114. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -3
  115. package/src/api/routes/tests/utilities/index.ts +5 -3
  116. package/src/api/routes/tests/view.spec.js +4 -1
  117. package/src/api/routes/tests/webhook.spec.js +11 -2
  118. package/src/app.ts +12 -1
  119. package/src/automations/tests/automation.spec.js +4 -4
  120. package/src/automations/tests/bash.spec.js +1 -1
  121. package/src/automations/tests/discord.spec.js +1 -1
  122. package/src/automations/tests/executeQuery.spec.js +2 -3
  123. package/src/automations/tests/executeScript.spec.js +1 -1
  124. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  125. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  126. package/src/automations/tests/serverLog.spec.js +1 -1
  127. package/src/automations/tests/updateRow.spec.js +1 -1
  128. package/src/automations/tests/zapier.spec.js +1 -1
  129. package/src/constants/index.ts +1 -23
  130. package/src/db/defaultData/datasource_bb_default.ts +6 -10
  131. package/src/db/index.ts +2 -2
  132. package/src/db/linkedRows/LinkController.ts +2 -1
  133. package/src/db/tests/linkController.spec.js +4 -1
  134. package/src/db/tests/linkTests.spec.js +1 -1
  135. package/src/db/utils.ts +0 -4
  136. package/src/db/views/staticViews.ts +3 -3
  137. package/src/ddApm.ts +7 -0
  138. package/src/definitions/openapi.ts +449 -63
  139. package/src/elasticApm.ts +10 -0
  140. package/src/integration-test/postgres.spec.ts +1032 -0
  141. package/src/integrations/base/sql.ts +11 -5
  142. package/src/integrations/googlesheets.ts +21 -22
  143. package/src/integrations/oracle.ts +1 -1
  144. package/src/integrations/tests/couchdb.spec.ts +0 -2
  145. package/src/integrations/tests/googlesheets.spec.ts +122 -0
  146. package/src/middleware/authorized.ts +6 -4
  147. package/src/middleware/builder.ts +8 -3
  148. package/src/migrations/functions/backfill/global/configs.ts +15 -9
  149. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  150. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  151. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +4 -5
  152. package/src/migrations/tests/helpers.ts +2 -2
  153. package/src/migrations/tests/index.spec.ts +13 -20
  154. package/src/migrations/tests/structures.ts +1 -0
  155. package/src/sdk/app/backups/constants.ts +1 -0
  156. package/src/sdk/app/backups/exports.ts +32 -10
  157. package/src/sdk/app/datasources/datasources.ts +3 -0
  158. package/src/sdk/app/rows/attachments.ts +1 -1
  159. package/src/startup.ts +4 -1
  160. package/src/tests/jestEnv.ts +9 -11
  161. package/src/tests/jestSetup.ts +9 -7
  162. package/src/tests/logging.ts +34 -0
  163. package/src/tests/utilities/TestConfiguration.ts +187 -101
  164. package/src/tests/utilities/structures.ts +16 -4
  165. package/src/utilities/redis.ts +2 -0
  166. package/src/utilities/retry.ts +18 -0
  167. package/tsconfig.build.json +1 -0
  168. package/builder/assets/index.4488f38d.css +0 -6
  169. package/coverage/clover.xml +0 -11774
  170. package/coverage/coverage-final.json +0 -284
  171. package/coverage/lcov-report/base.css +0 -224
  172. package/coverage/lcov-report/block-navigation.js +0 -87
  173. package/coverage/lcov-report/favicon.png +0 -0
  174. package/coverage/lcov-report/index.html +0 -1031
  175. package/coverage/lcov-report/prettify.css +0 -1
  176. package/coverage/lcov-report/prettify.js +0 -2
  177. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  178. package/coverage/lcov-report/sorter.js +0 -196
  179. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
  180. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +0 -247
  181. package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -1987
  182. package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
  183. package/coverage/lcov-report/src/api/controllers/automation.ts.html +0 -940
  184. package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
  185. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +0 -442
  186. package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
  187. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +0 -1135
  188. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -262
  189. package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
  190. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -694
  191. package/coverage/lcov-report/src/api/controllers/dev.ts.html +0 -472
  192. package/coverage/lcov-report/src/api/controllers/index.html +0 -431
  193. package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
  194. package/coverage/lcov-report/src/api/controllers/layout.ts.html +0 -226
  195. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +0 -211
  196. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +0 -127
  197. package/coverage/lcov-report/src/api/controllers/permission.ts.html +0 -619
  198. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
  199. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
  200. package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
  201. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -499
  202. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
  203. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
  204. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
  205. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
  206. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -385
  207. package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
  208. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
  209. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
  210. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
  211. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
  212. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
  213. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
  214. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
  215. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
  216. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
  217. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
  218. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -325
  219. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
  220. package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
  221. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
  222. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
  223. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
  224. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
  225. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
  226. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
  227. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
  228. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
  229. package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
  230. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -1000
  231. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +0 -235
  232. package/coverage/lcov-report/src/api/controllers/role.ts.html +0 -397
  233. package/coverage/lcov-report/src/api/controllers/routing.ts.html +0 -370
  234. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2305
  235. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +0 -931
  236. package/coverage/lcov-report/src/api/controllers/row/index.html +0 -206
  237. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
  238. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +0 -1609
  239. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +0 -1678
  240. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +0 -595
  241. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +0 -556
  242. package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
  243. package/coverage/lcov-report/src/api/controllers/script.ts.html +0 -121
  244. package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
  245. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -679
  246. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +0 -649
  247. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +0 -1153
  248. package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
  249. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +0 -514
  250. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -658
  251. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1273
  252. package/coverage/lcov-report/src/api/controllers/templates.ts.html +0 -214
  253. package/coverage/lcov-report/src/api/controllers/user.ts.html +0 -634
  254. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +0 -214
  255. package/coverage/lcov-report/src/api/controllers/view/index.html +0 -161
  256. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +0 -661
  257. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +0 -580
  258. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +0 -694
  259. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -385
  260. package/coverage/lcov-report/src/api/index.html +0 -116
  261. package/coverage/lcov-report/src/api/index.ts.html +0 -352
  262. package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
  263. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
  264. package/coverage/lcov-report/src/api/routes/application.ts.html +0 -256
  265. package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
  266. package/coverage/lcov-report/src/api/routes/automation.ts.html +0 -346
  267. package/coverage/lcov-report/src/api/routes/backup.ts.html +0 -127
  268. package/coverage/lcov-report/src/api/routes/cloud.ts.html +0 -139
  269. package/coverage/lcov-report/src/api/routes/component.ts.html +0 -127
  270. package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
  271. package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -145
  272. package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
  273. package/coverage/lcov-report/src/api/routes/index.html +0 -551
  274. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -298
  275. package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
  276. package/coverage/lcov-report/src/api/routes/layout.ts.html +0 -133
  277. package/coverage/lcov-report/src/api/routes/metadata.ts.html +0 -199
  278. package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
  279. package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
  280. package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
  281. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -673
  282. package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
  283. package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
  284. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
  285. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -340
  286. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
  287. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
  288. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
  289. package/coverage/lcov-report/src/api/routes/public/tests/index.html +0 -116
  290. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +0 -169
  291. package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
  292. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
  293. package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
  294. package/coverage/lcov-report/src/api/routes/query.ts.html +0 -268
  295. package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
  296. package/coverage/lcov-report/src/api/routes/routing.ts.html +0 -127
  297. package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
  298. package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
  299. package/coverage/lcov-report/src/api/routes/script.ts.html +0 -115
  300. package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
  301. package/coverage/lcov-report/src/api/routes/table.ts.html +0 -595
  302. package/coverage/lcov-report/src/api/routes/templates.ts.html +0 -133
  303. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
  304. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
  305. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
  306. package/coverage/lcov-report/src/api/routes/user.ts.html +0 -238
  307. package/coverage/lcov-report/src/api/routes/utils/index.html +0 -116
  308. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +0 -805
  309. package/coverage/lcov-report/src/api/routes/view.ts.html +0 -187
  310. package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
  311. package/coverage/lcov-report/src/app.ts.html +0 -424
  312. package/coverage/lcov-report/src/automations/actions.ts.html +0 -316
  313. package/coverage/lcov-report/src/automations/automationUtils.ts.html +0 -562
  314. package/coverage/lcov-report/src/automations/bullboard.ts.html +0 -199
  315. package/coverage/lcov-report/src/automations/index.html +0 -191
  316. package/coverage/lcov-report/src/automations/index.ts.html +0 -163
  317. package/coverage/lcov-report/src/automations/logging/index.html +0 -116
  318. package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
  319. package/coverage/lcov-report/src/automations/steps/bash.ts.html +0 -319
  320. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
  321. package/coverage/lcov-report/src/automations/steps/delay.ts.html +0 -217
  322. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
  323. package/coverage/lcov-report/src/automations/steps/discord.ts.html +0 -397
  324. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +0 -370
  325. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +0 -325
  326. package/coverage/lcov-report/src/automations/steps/filter.ts.html +0 -394
  327. package/coverage/lcov-report/src/automations/steps/index.html +0 -371
  328. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +0 -409
  329. package/coverage/lcov-report/src/automations/steps/loop.ts.html +0 -241
  330. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +0 -499
  331. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +0 -664
  332. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +0 -355
  333. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +0 -256
  334. package/coverage/lcov-report/src/automations/steps/slack.ts.html +0 -340
  335. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +0 -439
  336. package/coverage/lcov-report/src/automations/steps/utils.ts.html +0 -223
  337. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +0 -403
  338. package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
  339. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
  340. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
  341. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +0 -193
  342. package/coverage/lcov-report/src/automations/triggerInfo/index.html +0 -206
  343. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
  344. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +0 -196
  345. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +0 -220
  346. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +0 -220
  347. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +0 -208
  348. package/coverage/lcov-report/src/automations/triggers.ts.html +0 -553
  349. package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
  350. package/coverage/lcov-report/src/constants/index.html +0 -146
  351. package/coverage/lcov-report/src/constants/index.ts.html +0 -697
  352. package/coverage/lcov-report/src/constants/layouts.ts.html +0 -526
  353. package/coverage/lcov-report/src/constants/screens.ts.html +0 -229
  354. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
  355. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
  356. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
  357. package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
  358. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
  359. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
  360. package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
  361. package/coverage/lcov-report/src/db/inMemoryView.ts.html +0 -250
  362. package/coverage/lcov-report/src/db/index.html +0 -176
  363. package/coverage/lcov-report/src/db/index.ts.html +0 -133
  364. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +0 -1417
  365. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
  366. package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
  367. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +0 -736
  368. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +0 -460
  369. package/coverage/lcov-report/src/db/newid.ts.html +0 -100
  370. package/coverage/lcov-report/src/db/utils.ts.html +0 -913
  371. package/coverage/lcov-report/src/definitions/automations.ts.html +0 -184
  372. package/coverage/lcov-report/src/definitions/index.html +0 -116
  373. package/coverage/lcov-report/src/environment.ts.html +0 -472
  374. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +0 -259
  375. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +0 -172
  376. package/coverage/lcov-report/src/events/index.html +0 -161
  377. package/coverage/lcov-report/src/events/index.ts.html +0 -100
  378. package/coverage/lcov-report/src/events/utils.ts.html +0 -319
  379. package/coverage/lcov-report/src/index.html +0 -191
  380. package/coverage/lcov-report/src/index.ts.html +0 -133
  381. package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
  382. package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
  383. package/coverage/lcov-report/src/integrations/base/index.html +0 -161
  384. package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -139
  385. package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -2017
  386. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
  387. package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
  388. package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -484
  389. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
  390. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -646
  391. package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
  392. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
  393. package/coverage/lcov-report/src/integrations/index.html +0 -371
  394. package/coverage/lcov-report/src/integrations/index.ts.html +0 -460
  395. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
  396. package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1999
  397. package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -979
  398. package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
  399. package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
  400. package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
  401. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -328
  402. package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
  403. package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1372
  404. package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
  405. package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
  406. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +0 -85
  407. package/coverage/lcov-report/src/integrations/tests/index.html +0 -116
  408. package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1036
  409. package/coverage/lcov-report/src/middleware/appInfo.ts.html +0 -145
  410. package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -472
  411. package/coverage/lcov-report/src/middleware/builder.ts.html +0 -361
  412. package/coverage/lcov-report/src/middleware/currentapp.ts.html +0 -508
  413. package/coverage/lcov-report/src/middleware/index.html +0 -236
  414. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +0 -205
  415. package/coverage/lcov-report/src/middleware/publicApi.ts.html +0 -148
  416. package/coverage/lcov-report/src/middleware/resourceId.ts.html +0 -283
  417. package/coverage/lcov-report/src/middleware/selfhost.ts.html +0 -121
  418. package/coverage/lcov-report/src/middleware/utils.ts.html +0 -112
  419. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -166
  420. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
  421. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
  422. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
  423. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
  424. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
  425. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
  426. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
  427. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
  428. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
  429. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -286
  430. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
  431. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
  432. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
  433. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
  434. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
  435. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
  436. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
  437. package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
  438. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
  439. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
  440. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
  441. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
  442. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
  443. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
  444. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
  445. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
  446. package/coverage/lcov-report/src/migrations/index.html +0 -116
  447. package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
  448. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
  449. package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
  450. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
  451. package/coverage/lcov-report/src/sdk/app/applications/index.html +0 -146
  452. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +0 -106
  453. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +0 -268
  454. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +0 -136
  455. package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
  456. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
  457. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
  458. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
  459. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
  460. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -640
  461. package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
  462. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
  463. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
  464. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +0 -562
  465. package/coverage/lcov-report/src/sdk/app/datasources/index.html +0 -131
  466. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +0 -100
  467. package/coverage/lcov-report/src/sdk/app/queries/index.html +0 -131
  468. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +0 -100
  469. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +0 -235
  470. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +0 -265
  471. package/coverage/lcov-report/src/sdk/app/rows/index.html +0 -146
  472. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +0 -106
  473. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +0 -139
  474. package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
  475. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -274
  476. package/coverage/lcov-report/src/sdk/index.html +0 -116
  477. package/coverage/lcov-report/src/sdk/index.ts.html +0 -151
  478. package/coverage/lcov-report/src/sdk/users/index.html +0 -131
  479. package/coverage/lcov-report/src/sdk/users/index.ts.html +0 -100
  480. package/coverage/lcov-report/src/sdk/users/utils.ts.html +0 -277
  481. package/coverage/lcov-report/src/sdk/utils/index.html +0 -116
  482. package/coverage/lcov-report/src/sdk/utils/index.ts.html +0 -133
  483. package/coverage/lcov-report/src/startup.ts.html +0 -484
  484. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -2032
  485. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
  486. package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
  487. package/coverage/lcov-report/src/tests/utilities/index.ts.html +0 -118
  488. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -856
  489. package/coverage/lcov-report/src/threads/automation.ts.html +0 -1555
  490. package/coverage/lcov-report/src/threads/index.html +0 -161
  491. package/coverage/lcov-report/src/threads/index.ts.html +0 -418
  492. package/coverage/lcov-report/src/threads/query.ts.html +0 -1000
  493. package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
  494. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +0 -94
  495. package/coverage/lcov-report/src/utilities/centralPath.ts.html +0 -151
  496. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  497. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
  498. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -601
  499. package/coverage/lcov-report/src/utilities/fileSystem/index.html +0 -206
  500. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -100
  501. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -277
  502. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
  503. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  504. package/coverage/lcov-report/src/utilities/global.ts.html +0 -499
  505. package/coverage/lcov-report/src/utilities/index.html +0 -251
  506. package/coverage/lcov-report/src/utilities/index.ts.html +0 -487
  507. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
  508. package/coverage/lcov-report/src/utilities/routing/index.html +0 -116
  509. package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
  510. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
  511. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +0 -922
  512. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
  513. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +0 -373
  514. package/coverage/lcov-report/src/utilities/schema.ts.html +0 -508
  515. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +0 -169
  516. package/coverage/lcov-report/src/utilities/security.ts.html +0 -280
  517. package/coverage/lcov-report/src/utilities/usageQuota/index.html +0 -131
  518. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +0 -325
  519. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +0 -139
  520. package/coverage/lcov-report/src/utilities/users.ts.html +0 -232
  521. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +0 -646
  522. package/coverage/lcov-report/src/watch.ts.html +0 -196
  523. package/coverage/lcov-report/src/websocket.ts.html +0 -163
  524. package/coverage/lcov.info +0 -21777
  525. package/dist/api/routes/public/tests/utils.js +0 -33
  526. package/dist/integrations/base/utils.js +0 -16
  527. package/specs/resources/utils/Resource.js +0 -26
  528. package/src/integrations/base/utils.ts +0 -12
@@ -36,6 +36,8 @@ function shutdown() {
36
36
  yield debounceClient.finish();
37
37
  if (flagClient)
38
38
  yield flagClient.finish();
39
+ // shutdown core clients
40
+ yield backend_core_1.redis.clients.shutdown();
39
41
  console.log("Redis shutdown");
40
42
  });
41
43
  }
@@ -0,0 +1,30 @@
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.retry = void 0;
13
+ function retry(fn, maxTry = 5, retryCount = 1) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const currRetry = typeof retryCount === "number" ? retryCount : 1;
16
+ try {
17
+ const result = yield fn();
18
+ return result;
19
+ }
20
+ catch (e) {
21
+ console.log(`Retry ${currRetry} failed.`);
22
+ if (currRetry > maxTry) {
23
+ console.log(`All ${maxTry} retry attempts exhausted`);
24
+ throw e;
25
+ }
26
+ return retry(fn, maxTry, currRetry + 1);
27
+ }
28
+ });
29
+ }
30
+ exports.retry = retry;
@@ -0,0 +1,8 @@
1
+ const { join } = require("path")
2
+ require("dotenv").config({
3
+ path: join(__dirname, "..", "..", "hosting", ".env"),
4
+ })
5
+
6
+ const jestTestcontainersConfigGenerator = require("../../jestTestcontainersConfigGenerator")
7
+
8
+ module.exports = jestTestcontainersConfigGenerator()
package/jest.config.ts CHANGED
@@ -1,36 +1,49 @@
1
1
  import { Config } from "@jest/types"
2
+
2
3
  import * as fs from "fs"
4
+ const preset = require("ts-jest/jest-preset")
3
5
 
4
- const config: Config.InitialOptions = {
5
- testEnvironment: "node",
6
+ const baseConfig: Config.InitialProjectOptions = {
7
+ ...preset,
8
+ preset: "@trendyol/jest-testcontainers",
6
9
  setupFiles: ["./src/tests/jestEnv.ts"],
7
10
  setupFilesAfterEnv: ["./src/tests/jestSetup.ts"],
8
- collectCoverageFrom: [
9
- "src/**/*.{js,ts}",
10
- // The use of coverage with couchdb view functions breaks tests
11
- "!src/db/views/staticViews.*",
12
- ],
13
- coverageReporters: ["lcov", "json", "clover"],
14
11
  transform: {
15
12
  "^.+\\.ts?$": "@swc/jest",
16
13
  },
17
- }
18
-
19
- if (!process.env.CI) {
20
- // use sources when not in CI
21
- config.moduleNameMapper = {
14
+ moduleNameMapper: {
22
15
  "@budibase/backend-core/(.*)": "<rootDir>/../backend-core/$1",
23
16
  "@budibase/backend-core": "<rootDir>/../backend-core/src",
24
17
  "@budibase/types": "<rootDir>/../types/src",
25
- "^axios.*$": "<rootDir>/node_modules/axios/lib/axios.js",
26
- }
27
- // add pro sources if they exist
28
- if (fs.existsSync("../../../budibase-pro")) {
29
- config.moduleNameMapper["@budibase/pro"] =
30
- "<rootDir>/../../../budibase-pro/packages/pro/src"
31
- }
32
- } else {
33
- console.log("Running tests with compiled dependency sources")
18
+ },
19
+ }
20
+
21
+ // add pro sources if they exist
22
+ if (fs.existsSync("../../../budibase-pro")) {
23
+ baseConfig.moduleNameMapper["@budibase/pro"] =
24
+ "<rootDir>/../../../budibase-pro/packages/pro/src"
25
+ }
26
+
27
+ const config: Config.InitialOptions = {
28
+ projects: [
29
+ {
30
+ ...baseConfig,
31
+ displayName: "sequential test",
32
+ testMatch: ["<rootDir>/**/*.seq.spec.[jt]s"],
33
+ runner: "jest-serial-runner",
34
+ },
35
+ {
36
+ ...baseConfig,
37
+ testMatch: ["<rootDir>/**/!(*.seq).spec.[jt]s"],
38
+ },
39
+ ],
40
+ collectCoverageFrom: [
41
+ "src/**/*.{js,ts}",
42
+ "../backend-core/src/**/*.{js,ts}",
43
+ // The use of coverage with couchdb view functions breaks tests
44
+ "!src/db/views/staticViews.*",
45
+ ],
46
+ coverageReporters: ["lcov", "json", "clover"],
34
47
  }
35
48
 
36
49
  export default config
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "2.3.19",
4
+ "version": "2.3.21-alpha.0",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -14,7 +14,7 @@
14
14
  "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput",
15
15
  "debug": "yarn build && node --expose-gc --inspect=9222 dist/index.js",
16
16
  "postbuild": "copyfiles -u 1 src/**/*.svelte dist/ && copyfiles -u 1 src/**/*.hbs dist/ && copyfiles -u 1 src/**/*.json dist/",
17
- "test": "jest --coverage --maxWorkers=2",
17
+ "test": "bash scripts/test.sh",
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",
@@ -25,7 +25,7 @@
25
25
  "dev:stack:down": "node scripts/dev/manage.js down",
26
26
  "dev:stack:nuke": "node scripts/dev/manage.js nuke",
27
27
  "dev:builder": "yarn run dev:stack:up && nodemon",
28
- "specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts",
28
+ "specs": "ts-node specs/generate.ts && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts",
29
29
  "initialise": "node scripts/initialise.js",
30
30
  "env:multi:enable": "node scripts/multiTenancy.js enable",
31
31
  "env:multi:disable": "node scripts/multiTenancy.js disable",
@@ -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.19",
47
- "@budibase/client": "^2.3.19",
48
- "@budibase/pro": "2.3.18",
49
- "@budibase/string-templates": "^2.3.19",
50
- "@budibase/types": "^2.3.19",
46
+ "@budibase/backend-core": "2.3.21-alpha.0",
47
+ "@budibase/client": "2.3.21-alpha.0",
48
+ "@budibase/pro": "2.3.20",
49
+ "@budibase/string-templates": "2.3.21-alpha.0",
50
+ "@budibase/types": "2.3.21-alpha.0",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -64,6 +64,7 @@
64
64
  "chokidar": "3.5.3",
65
65
  "csvtojson": "2.0.10",
66
66
  "curlconverter": "3.21.0",
67
+ "dd-trace": "3.13.2",
67
68
  "dotenv": "8.2.0",
68
69
  "download": "8.0.0",
69
70
  "elastic-apm-node": "3.38.0",
@@ -86,6 +87,7 @@
86
87
  "koa-send": "5.0.0",
87
88
  "koa-session": "5.12.0",
88
89
  "koa-static": "5.0.0",
90
+ "koa-useragent": "^4.1.0",
89
91
  "koa2-ratelimit": "1.1.1",
90
92
  "lodash": "4.17.21",
91
93
  "memorystream": "0.3.1",
@@ -125,6 +127,7 @@
125
127
  "@jest/test-sequencer": "24.9.0",
126
128
  "@swc/core": "^1.3.25",
127
129
  "@swc/jest": "^0.2.24",
130
+ "@trendyol/jest-testcontainers": "^2.1.1",
128
131
  "@types/apidoc": "0.50.0",
129
132
  "@types/bson": "4.2.0",
130
133
  "@types/global-agent": "2.1.1",
@@ -140,6 +143,7 @@
140
143
  "@types/pouchdb": "6.4.0",
141
144
  "@types/redis": "4.0.11",
142
145
  "@types/server-destroy": "1.0.1",
146
+ "@types/supertest": "2.0.12",
143
147
  "@types/tar": "6.1.3",
144
148
  "@typescript-eslint/parser": "5.45.0",
145
149
  "apidoc": "0.50.4",
@@ -151,13 +155,14 @@
151
155
  "is-wsl": "2.2.0",
152
156
  "jest": "28.1.1",
153
157
  "jest-openapi": "0.14.2",
158
+ "jest-serial-runner": "^1.2.1",
154
159
  "nodemon": "2.0.15",
155
160
  "openapi-types": "9.3.1",
156
161
  "openapi-typescript": "5.2.0",
157
162
  "path-to-regexp": "6.2.0",
158
163
  "prettier": "2.5.1",
159
164
  "rimraf": "3.0.2",
160
- "supertest": "4.0.2",
165
+ "supertest": "6.2.2",
161
166
  "swagger-jsdoc": "6.1.0",
162
167
  "timekeeper": "2.2.0",
163
168
  "ts-jest": "28.0.4",
@@ -169,5 +174,5 @@
169
174
  "optionalDependencies": {
170
175
  "oracledb": "5.3.0"
171
176
  },
172
- "gitHead": "dfb412df1e5ae11e6d0772a83d4add7c4ee7d1d2"
177
+ "gitHead": "e07c36dd8ca5d1fcfcf18961457dc539016535ca"
173
178
  }
@@ -0,0 +1,24 @@
1
+ #!/bin/node
2
+ const { createApp } = require("./utils")
3
+
4
+ const APP_COUNT = 100
5
+
6
+ if (!process.argv[2]) {
7
+ console.error("Please specify an API key as script argument.")
8
+ process.exit(-1)
9
+ }
10
+
11
+ async function run() {
12
+ for (let i = 0; i < APP_COUNT; i++) {
13
+ const app = await createApp(process.argv[2])
14
+ console.log(`App created: ${app._id}`)
15
+ }
16
+ }
17
+
18
+ run()
19
+ .then(() => {
20
+ console.log(`Finished creating ${APP_COUNT} apps.`)
21
+ })
22
+ .catch(err => {
23
+ console.error(err)
24
+ })
@@ -0,0 +1,30 @@
1
+ #!/bin/node
2
+ const { createApp, getTable, createRow } = require("./utils")
3
+
4
+ const ROW_COUNT = 1000
5
+
6
+ if (!process.argv[2]) {
7
+ console.error("Please specify an API key as script argument.")
8
+ process.exit(-1)
9
+ }
10
+
11
+ async function run() {
12
+ const apiKey = process.argv[2]
13
+ const app = await createApp(apiKey)
14
+ console.log(`App created: ${app._id}`)
15
+ const table = await getTable(apiKey, app._id)
16
+ console.log(`Table found: ${table.name}`)
17
+ const promises = []
18
+ for (let i = 0; i < ROW_COUNT; i++) {
19
+ promises.push(await createRow(apiKey, app._id, table))
20
+ }
21
+ await Promise.all(promises)
22
+ }
23
+
24
+ run()
25
+ .then(() => {
26
+ console.log(`Finished creating ${ROW_COUNT} rows.`)
27
+ })
28
+ .catch(err => {
29
+ console.error(err)
30
+ })
@@ -0,0 +1,66 @@
1
+ const fetch = require("node-fetch")
2
+ const uuid = require("uuid/v4")
3
+
4
+ const URL_APP = "http://localhost:10000/api/public/v1/applications"
5
+ const URL_TABLE = "http://localhost:10000/api/public/v1/tables/search"
6
+
7
+ async function request(apiKey, url, method, body, appId = undefined) {
8
+ const headers = {
9
+ "x-budibase-api-key": apiKey,
10
+ "Content-Type": "application/json",
11
+ }
12
+ if (appId) {
13
+ headers["x-budibase-app-id"] = appId
14
+ }
15
+ const res = await fetch(url, {
16
+ method,
17
+ headers,
18
+ body: JSON.stringify(body),
19
+ })
20
+ if (res.status !== 200) {
21
+ throw new Error(await res.text())
22
+ }
23
+ return res
24
+ }
25
+
26
+ exports.createApp = async apiKey => {
27
+ const name = uuid().replace(/-/g, "")
28
+ const body = {
29
+ name,
30
+ url: `/${name}`,
31
+ useTemplate: "true",
32
+ templateKey: "app/school-admin-panel",
33
+ templateName: "School Admin Panel",
34
+ }
35
+ const res = await request(apiKey, URL_APP, "POST", body)
36
+ const json = await res.json()
37
+ return json.data
38
+ }
39
+
40
+ exports.getTable = async (apiKey, appId) => {
41
+ const res = await request(apiKey, URL_TABLE, "POST", {}, appId)
42
+ const json = await res.json()
43
+ return json.data[0]
44
+ }
45
+
46
+ exports.createRow = async (apiKey, appId, table) => {
47
+ const body = {}
48
+ for (let [key, schema] of Object.entries(table.schema)) {
49
+ let fake
50
+ switch (schema.type) {
51
+ default:
52
+ case "string":
53
+ fake = schema.constraints.inclusion
54
+ ? schema.constraints.inclusion[0]
55
+ : "a"
56
+ break
57
+ case "number":
58
+ fake = 1
59
+ break
60
+ }
61
+ body[key] = fake
62
+ }
63
+ const url = `http://localhost:10000/api/public/v1/tables/${table._id}/rows`
64
+ const res = await request(apiKey, url, "POST", body, appId)
65
+ return (await res.json()).data
66
+ }
@@ -0,0 +1,12 @@
1
+ #!/bin/bash
2
+
3
+ if [[ -n $CI ]]
4
+ then
5
+ # --runInBand performs better in ci where resources are limited
6
+ echo "jest --coverage --runInBand"
7
+ jest --coverage --runInBand
8
+ else
9
+ # --maxWorkers performs better in development
10
+ echo "jest --coverage --maxWorkers=2"
11
+ jest --coverage --maxWorkers=2
12
+ fi
@@ -1,9 +1,9 @@
1
+ import { join } from "path"
2
+ import { writeFileSync } from "fs"
3
+ import { examples, schemas } from "./resources"
4
+ import * as parameters from "./parameters"
5
+ import * as security from "./security"
1
6
  const swaggerJsdoc = require("swagger-jsdoc")
2
- const { join } = require("path")
3
- const { writeFileSync } = require("fs")
4
- const { examples, schemas } = require("./resources")
5
- const parameters = require("./parameters")
6
- const security = require("./security")
7
7
 
8
8
  const VARIABLES = {}
9
9
 
@@ -60,7 +60,7 @@ const options = {
60
60
  apis: [join(__dirname, "..", "src", "api", "routes", "public", "*.ts")],
61
61
  }
62
62
 
63
- function writeFile(output, filename) {
63
+ function writeFile(output: any, filename: string) {
64
64
  try {
65
65
  const path = join(__dirname, filename)
66
66
  let spec = output
@@ -79,7 +79,7 @@ function writeFile(output, filename) {
79
79
  }
80
80
  }
81
81
 
82
- function run() {
82
+ export function run() {
83
83
  const outputJSON = swaggerJsdoc(options)
84
84
  options.format = ".yaml"
85
85
  const outputYAML = swaggerJsdoc(options)
@@ -90,5 +90,3 @@ function run() {
90
90
  if (require.main === module) {
91
91
  run()
92
92
  }
93
-
94
- module.exports = run
@@ -817,7 +817,6 @@
817
817
  "type": "string",
818
818
  "enum": [
819
819
  "string",
820
- "barcodeqr",
821
820
  "longform",
822
821
  "options",
823
822
  "number",
@@ -829,7 +828,8 @@
829
828
  "formula",
830
829
  "auto",
831
830
  "json",
832
- "internal"
831
+ "internal",
832
+ "barcodeqr"
833
833
  ],
834
834
  "description": "Defines the type of the column, most explain themselves, a link column is a relationship."
835
835
  },
@@ -1021,7 +1021,6 @@
1021
1021
  "type": "string",
1022
1022
  "enum": [
1023
1023
  "string",
1024
- "barcodeqr",
1025
1024
  "longform",
1026
1025
  "options",
1027
1026
  "number",
@@ -1033,7 +1032,8 @@
1033
1032
  "formula",
1034
1033
  "auto",
1035
1034
  "json",
1036
- "internal"
1035
+ "internal",
1036
+ "barcodeqr"
1037
1037
  ],
1038
1038
  "description": "Defines the type of the column, most explain themselves, a link column is a relationship."
1039
1039
  },
@@ -1236,7 +1236,6 @@
1236
1236
  "type": "string",
1237
1237
  "enum": [
1238
1238
  "string",
1239
- "barcodeqr",
1240
1239
  "longform",
1241
1240
  "options",
1242
1241
  "number",
@@ -1248,7 +1247,8 @@
1248
1247
  "formula",
1249
1248
  "auto",
1250
1249
  "json",
1251
- "internal"
1250
+ "internal",
1251
+ "barcodeqr"
1252
1252
  ],
1253
1253
  "description": "Defines the type of the column, most explain themselves, a link column is a relationship."
1254
1254
  },
@@ -1829,7 +1829,7 @@
1829
1829
  "paths": {
1830
1830
  "/applications": {
1831
1831
  "post": {
1832
- "operationId": "create",
1832
+ "operationId": "appCreate",
1833
1833
  "summary": "Create an application",
1834
1834
  "tags": [
1835
1835
  "applications"
@@ -1870,7 +1870,7 @@
1870
1870
  },
1871
1871
  "/applications/{appId}": {
1872
1872
  "put": {
1873
- "operationId": "update",
1873
+ "operationId": "appUpdate",
1874
1874
  "summary": "Update an application",
1875
1875
  "tags": [
1876
1876
  "applications"
@@ -1909,7 +1909,7 @@
1909
1909
  }
1910
1910
  },
1911
1911
  "delete": {
1912
- "operationId": "destroy",
1912
+ "operationId": "appDestroy",
1913
1913
  "summary": "Delete an application",
1914
1914
  "tags": [
1915
1915
  "applications"
@@ -1938,7 +1938,7 @@
1938
1938
  }
1939
1939
  },
1940
1940
  "get": {
1941
- "operationId": "getById",
1941
+ "operationId": "appGetById",
1942
1942
  "summary": "Retrieve an application",
1943
1943
  "tags": [
1944
1944
  "applications"
@@ -1969,7 +1969,7 @@
1969
1969
  },
1970
1970
  "/applications/{appId}/unpublish": {
1971
1971
  "post": {
1972
- "operationId": "unpublish",
1972
+ "operationId": "appUnpublish",
1973
1973
  "summary": "Unpublish an application",
1974
1974
  "tags": [
1975
1975
  "applications"
@@ -1988,7 +1988,7 @@
1988
1988
  },
1989
1989
  "/applications/{appId}/publish": {
1990
1990
  "post": {
1991
- "operationId": "publish",
1991
+ "operationId": "appPublish",
1992
1992
  "summary": "Unpublish an application",
1993
1993
  "tags": [
1994
1994
  "applications"
@@ -2019,7 +2019,7 @@
2019
2019
  },
2020
2020
  "/applications/search": {
2021
2021
  "post": {
2022
- "operationId": "search",
2022
+ "operationId": "appSearch",
2023
2023
  "summary": "Search for applications",
2024
2024
  "description": "Based on application properties (currently only name) search for applications.",
2025
2025
  "tags": [
@@ -2056,7 +2056,7 @@
2056
2056
  },
2057
2057
  "/queries/{queryId}": {
2058
2058
  "post": {
2059
- "operationId": "execute",
2059
+ "operationId": "queryExecute",
2060
2060
  "summary": "Execute a query",
2061
2061
  "description": "Queries which have been created within a Budibase app can be executed using this,",
2062
2062
  "tags": [
@@ -2104,7 +2104,7 @@
2104
2104
  },
2105
2105
  "/queries/search": {
2106
2106
  "post": {
2107
- "operationId": "search",
2107
+ "operationId": "querySearch",
2108
2108
  "summary": "Search for queries",
2109
2109
  "description": "Based on query properties (currently only name) search for queries.",
2110
2110
  "tags": [
@@ -2146,7 +2146,7 @@
2146
2146
  },
2147
2147
  "/tables/{tableId}/rows": {
2148
2148
  "post": {
2149
- "operationId": "create",
2149
+ "operationId": "rowCreate",
2150
2150
  "summary": "Create a row",
2151
2151
  "description": "Creates a row within the specified table.",
2152
2152
  "tags": [
@@ -2196,7 +2196,7 @@
2196
2196
  },
2197
2197
  "/tables/{tableId}/rows/{rowId}": {
2198
2198
  "put": {
2199
- "operationId": "update",
2199
+ "operationId": "rowUpdate",
2200
2200
  "summary": "Update a row",
2201
2201
  "description": "Updates a row within the specified table.",
2202
2202
  "tags": [
@@ -2247,7 +2247,7 @@
2247
2247
  }
2248
2248
  },
2249
2249
  "delete": {
2250
- "operationId": "destroy",
2250
+ "operationId": "rowDestroy",
2251
2251
  "summary": "Delete a row",
2252
2252
  "description": "Deletes a row within the specified table.",
2253
2253
  "tags": [
@@ -2283,7 +2283,7 @@
2283
2283
  }
2284
2284
  },
2285
2285
  "get": {
2286
- "operationId": "getById",
2286
+ "operationId": "rowGetById",
2287
2287
  "summary": "Retrieve a row",
2288
2288
  "description": "This gets a single row, it will be enriched with the full related rows, rather than the squashed \"primaryDisplay\" format returned by the search endpoint.",
2289
2289
  "tags": [
@@ -2321,7 +2321,7 @@
2321
2321
  },
2322
2322
  "/tables/{tableId}/rows/search": {
2323
2323
  "post": {
2324
- "operationId": "search",
2324
+ "operationId": "rowSearch",
2325
2325
  "summary": "Search for rows",
2326
2326
  "tags": [
2327
2327
  "rows"
@@ -2365,7 +2365,7 @@
2365
2365
  },
2366
2366
  "/tables": {
2367
2367
  "post": {
2368
- "operationId": "create",
2368
+ "operationId": "tableCreate",
2369
2369
  "summary": "Create a table",
2370
2370
  "description": "Create a table, this could be internal or external.",
2371
2371
  "tags": [
@@ -2411,7 +2411,7 @@
2411
2411
  },
2412
2412
  "/tables/{tableId}": {
2413
2413
  "put": {
2414
- "operationId": "update",
2414
+ "operationId": "tableUpdate",
2415
2415
  "summary": "Update a table",
2416
2416
  "description": "Update a table, this could be internal or external.",
2417
2417
  "tags": [
@@ -2458,7 +2458,7 @@
2458
2458
  }
2459
2459
  },
2460
2460
  "delete": {
2461
- "operationId": "destroy",
2461
+ "operationId": "tableDestroy",
2462
2462
  "summary": "Delete a table",
2463
2463
  "description": "Delete a table, this could be internal or external.",
2464
2464
  "tags": [
@@ -2491,7 +2491,7 @@
2491
2491
  }
2492
2492
  },
2493
2493
  "get": {
2494
- "operationId": "getById",
2494
+ "operationId": "tableGetById",
2495
2495
  "summary": "Retrieve a table",
2496
2496
  "description": "Lookup a table, this could be internal or external.",
2497
2497
  "tags": [
@@ -2526,7 +2526,7 @@
2526
2526
  },
2527
2527
  "/tables/search": {
2528
2528
  "post": {
2529
- "operationId": "search",
2529
+ "operationId": "tableSearch",
2530
2530
  "summary": "Search for tables",
2531
2531
  "description": "Based on table properties (currently only name) search for tables. This could be an internal or an external table.",
2532
2532
  "tags": [
@@ -2568,7 +2568,7 @@
2568
2568
  },
2569
2569
  "/users": {
2570
2570
  "post": {
2571
- "operationId": "create",
2571
+ "operationId": "userCreate",
2572
2572
  "summary": "Create a user",
2573
2573
  "tags": [
2574
2574
  "users"
@@ -2604,7 +2604,7 @@
2604
2604
  },
2605
2605
  "/users/{userId}": {
2606
2606
  "put": {
2607
- "operationId": "update",
2607
+ "operationId": "userUpdate",
2608
2608
  "summary": "Update a user",
2609
2609
  "tags": [
2610
2610
  "users"
@@ -2643,7 +2643,7 @@
2643
2643
  }
2644
2644
  },
2645
2645
  "delete": {
2646
- "operationId": "destroy",
2646
+ "operationId": "userDestroy",
2647
2647
  "summary": "Delete a user",
2648
2648
  "tags": [
2649
2649
  "users"
@@ -2672,7 +2672,7 @@
2672
2672
  }
2673
2673
  },
2674
2674
  "get": {
2675
- "operationId": "getById",
2675
+ "operationId": "userGetById",
2676
2676
  "summary": "Retrieve a user",
2677
2677
  "tags": [
2678
2678
  "users"
@@ -2703,7 +2703,7 @@
2703
2703
  },
2704
2704
  "/users/search": {
2705
2705
  "post": {
2706
- "operationId": "search",
2706
+ "operationId": "userSearch",
2707
2707
  "summary": "Search for users",
2708
2708
  "description": "Based on user properties (currently only name) search for users.",
2709
2709
  "tags": [