@budibase/server 2.2.12-alpha.7 → 2.2.12-alpha.71

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 (484) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/node-fetch.ts +2 -0
  3. package/builder/assets/{bb-emblem.4e4717da.svg → bb-emblem.05f7ae7a.svg} +1 -1
  4. package/builder/assets/bg.29e85dd5.png +0 -0
  5. package/builder/assets/bulgaria.bd68393d.png +0 -0
  6. package/builder/assets/covanta.72c46c1e.png +0 -0
  7. package/builder/assets/index.4389672b.js +1798 -0
  8. package/builder/assets/index.80bd6b61.css +6 -0
  9. package/builder/assets/schnellecke.cf1837a8.png +0 -0
  10. package/builder/index.html +3 -3
  11. package/coverage/clover.xml +5113 -4924
  12. package/coverage/coverage-final.json +268 -264
  13. package/coverage/lcov-report/index.html +202 -157
  14. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
  15. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/application.ts.html +185 -164
  17. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  18. package/coverage/lcov-report/src/api/controllers/automation.ts.html +24 -24
  19. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  20. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +15 -15
  21. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  22. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +112 -88
  23. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  24. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +80 -80
  26. package/coverage/lcov-report/src/api/controllers/dev.ts.html +17 -17
  27. package/coverage/lcov-report/src/api/controllers/index.html +36 -36
  28. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
  30. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  31. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  32. package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
  33. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  34. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  35. package/coverage/lcov-report/src/api/controllers/plugin/index.html +19 -19
  36. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +29 -29
  37. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  38. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  39. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  40. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  41. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
  42. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  46. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  47. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  48. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  49. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  50. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
  51. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
  52. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
  53. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
  54. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
  55. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
  59. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  60. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
  61. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  62. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
  63. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
  64. package/coverage/lcov-report/src/api/controllers/query/index.html +7 -7
  65. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +89 -65
  66. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  67. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  68. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  69. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +36 -18
  70. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +60 -30
  71. package/coverage/lcov-report/src/api/controllers/row/index.html +40 -40
  72. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +34 -34
  73. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +142 -70
  74. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +120 -120
  75. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
  76. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +152 -38
  77. package/coverage/lcov-report/src/api/controllers/screen.ts.html +7 -7
  78. package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
  79. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  80. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +39 -42
  81. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +52 -52
  82. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +43 -37
  83. package/coverage/lcov-report/src/api/controllers/table/index.html +34 -34
  84. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +155 -68
  85. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +47 -47
  86. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +66 -69
  87. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  88. package/coverage/lcov-report/src/api/controllers/user.ts.html +99 -75
  89. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +62 -17
  90. package/coverage/lcov-report/src/api/controllers/view/index.html +29 -29
  91. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +53 -92
  92. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
  93. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +6 -6
  94. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +69 -63
  95. package/coverage/lcov-report/src/api/index.html +1 -1
  96. package/coverage/lcov-report/src/api/index.ts.html +27 -27
  97. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  98. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
  100. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  101. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  102. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  103. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  104. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  106. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  107. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  108. package/coverage/lcov-report/src/api/routes/index.html +5 -5
  109. package/coverage/lcov-report/src/api/routes/index.ts.html +42 -36
  110. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  111. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  112. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  113. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  114. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  115. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  116. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +14 -14
  117. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  119. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
  121. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  122. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  123. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  124. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  127. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  128. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  130. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  131. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  132. package/coverage/lcov-report/src/api/routes/row.ts.html +12 -12
  133. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  134. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  136. package/coverage/lcov-report/src/api/routes/table.ts.html +26 -95
  137. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  138. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  139. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  140. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +1 -1
  141. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  142. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  143. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +43 -43
  144. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  145. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  146. package/coverage/lcov-report/src/app.ts.html +13 -7
  147. package/coverage/lcov-report/src/automations/actions.ts.html +27 -27
  148. package/coverage/lcov-report/src/automations/automationUtils.ts.html +59 -59
  149. package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
  150. package/coverage/lcov-report/src/automations/index.html +30 -30
  151. package/coverage/lcov-report/src/automations/index.ts.html +10 -10
  152. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  153. package/coverage/lcov-report/src/automations/logging/index.ts.html +7 -7
  154. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  155. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  156. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  157. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  158. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  159. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  160. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  161. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  162. package/coverage/lcov-report/src/automations/steps/index.html +15 -15
  163. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  164. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  165. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
  166. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +38 -38
  167. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  168. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +7 -7
  169. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  170. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  171. package/coverage/lcov-report/src/automations/steps/utils.ts.html +10 -10
  172. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  173. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  174. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +13 -13
  175. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  178. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  179. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  180. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  181. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  182. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  183. package/coverage/lcov-report/src/automations/triggers.ts.html +52 -37
  184. package/coverage/lcov-report/src/automations/utils.ts.html +52 -52
  185. package/coverage/lcov-report/src/constants/index.html +1 -1
  186. package/coverage/lcov-report/src/constants/index.ts.html +2 -2
  187. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  188. package/coverage/lcov-report/src/constants/screens.ts.html +3 -3
  189. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +22 -22
  190. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  191. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  192. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  193. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  194. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  195. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  196. package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
  197. package/coverage/lcov-report/src/db/index.html +1 -1
  198. package/coverage/lcov-report/src/db/index.ts.html +9 -9
  199. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +18 -18
  200. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  201. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  202. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +27 -27
  203. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +13 -13
  204. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  205. package/coverage/lcov-report/src/db/utils.ts.html +40 -40
  206. package/coverage/lcov-report/src/definitions/automations.ts.html +6 -3
  207. package/coverage/lcov-report/src/definitions/index.html +5 -20
  208. package/coverage/lcov-report/src/environment.ts.html +10 -10
  209. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +8 -8
  210. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
  211. package/coverage/lcov-report/src/events/index.html +1 -1
  212. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  213. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  214. package/coverage/lcov-report/src/index.html +13 -13
  215. package/coverage/lcov-report/src/index.ts.html +5 -5
  216. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  217. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/base/index.html +11 -11
  219. package/coverage/lcov-report/src/integrations/base/query.ts.html +14 -8
  220. package/coverage/lcov-report/src/integrations/base/sql.ts.html +12 -12
  221. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  222. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  223. package/coverage/lcov-report/src/integrations/couchdb.ts.html +110 -32
  224. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +9 -9
  225. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +26 -14
  226. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  227. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  228. package/coverage/lcov-report/src/integrations/index.html +47 -47
  229. package/coverage/lcov-report/src/integrations/index.ts.html +49 -49
  230. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  231. package/coverage/lcov-report/src/integrations/mongodb.ts.html +417 -285
  232. package/coverage/lcov-report/src/integrations/mysql.ts.html +11 -11
  233. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  234. package/coverage/lcov-report/src/integrations/postgres.ts.html +10 -10
  235. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  236. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +15 -150
  237. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  238. package/coverage/lcov-report/src/integrations/rest.ts.html +36 -45
  239. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  240. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  241. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  242. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  243. package/coverage/lcov-report/src/integrations/utils.ts.html +18 -18
  244. package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
  245. package/coverage/lcov-report/src/middleware/authorized.ts.html +27 -27
  246. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  247. package/coverage/lcov-report/src/middleware/currentapp.ts.html +45 -42
  248. package/coverage/lcov-report/src/middleware/index.html +1 -1
  249. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  250. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  251. package/coverage/lcov-report/src/middleware/resourceId.ts.html +21 -21
  252. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  253. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  254. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  259. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  260. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  261. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  262. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  263. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  264. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  265. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  267. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  268. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  269. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  271. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  272. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  273. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  274. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  275. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  277. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  278. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  279. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  280. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  281. package/coverage/lcov-report/src/migrations/index.html +1 -1
  282. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  283. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  284. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  285. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  288. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
  289. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  290. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  292. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +3 -3
  293. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  294. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
  295. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
  296. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  298. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  299. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +493 -0
  300. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  301. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  302. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  303. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +100 -0
  304. package/coverage/lcov-report/src/{definitions/datasource.ts.html → sdk/app/queries/queries.ts.html} +82 -82
  305. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  306. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  307. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  308. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  309. package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
  310. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +27 -18
  311. package/coverage/lcov-report/src/sdk/index.html +5 -5
  312. package/coverage/lcov-report/src/sdk/index.ts.html +23 -11
  313. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  314. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  315. package/coverage/lcov-report/src/sdk/users/utils.ts.html +28 -28
  316. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  317. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  318. package/coverage/lcov-report/src/startup.ts.html +34 -34
  319. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +134 -125
  320. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  321. package/coverage/lcov-report/src/tests/utilities/index.html +21 -21
  322. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  323. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +213 -24
  324. package/coverage/lcov-report/src/threads/automation.ts.html +216 -186
  325. package/coverage/lcov-report/src/threads/index.html +30 -30
  326. package/coverage/lcov-report/src/threads/index.ts.html +24 -24
  327. package/coverage/lcov-report/src/threads/query.ts.html +68 -29
  328. package/coverage/lcov-report/src/threads/utils.ts.html +9 -9
  329. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
  330. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  331. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +9 -9
  332. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +27 -21
  334. package/coverage/lcov-report/src/utilities/fileSystem/index.html +21 -21
  335. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  336. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +5 -8
  337. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +3 -3
  339. package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
  340. package/coverage/lcov-report/src/utilities/index.html +39 -39
  341. package/coverage/lcov-report/src/utilities/index.ts.html +12 -12
  342. package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
  343. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  344. package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
  345. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  346. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +50 -50
  347. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  348. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +14 -14
  349. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
  350. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  351. package/coverage/lcov-report/src/utilities/security.ts.html +4 -4
  352. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  353. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +4 -4
  354. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  355. package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
  356. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +38 -11
  357. package/coverage/lcov-report/src/watch.ts.html +7 -7
  358. package/coverage/lcov-report/src/websocket.ts.html +3 -3
  359. package/coverage/lcov.info +7892 -7532
  360. package/dist/api/controllers/application.js +73 -74
  361. package/dist/api/controllers/cloud.js +1 -1
  362. package/dist/api/controllers/datasource.js +24 -15
  363. package/dist/api/controllers/query/index.js +18 -11
  364. package/dist/api/controllers/row/ExternalRequest.js +12 -3
  365. package/dist/api/controllers/row/external.js +20 -13
  366. package/dist/api/controllers/row/internal.js +40 -15
  367. package/dist/api/controllers/row/utils.js +35 -3
  368. package/dist/api/controllers/static/index.js +38 -38
  369. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  370. package/dist/api/controllers/table/external.js +16 -35
  371. package/dist/api/controllers/table/index.js +44 -15
  372. package/dist/api/controllers/table/internal.js +4 -4
  373. package/dist/api/controllers/table/utils.js +9 -9
  374. package/dist/api/controllers/user.js +14 -6
  375. package/dist/api/controllers/view/exporters.js +22 -6
  376. package/dist/api/controllers/view/index.js +20 -56
  377. package/dist/api/controllers/webhook.js +45 -43
  378. package/dist/api/routes/index.js +2 -0
  379. package/dist/api/routes/row.js +2 -2
  380. package/dist/api/routes/table.js +6 -37
  381. package/dist/api/routes/utils/validators.js +1 -1
  382. package/dist/app.js +1 -0
  383. package/dist/automations/triggers.js +1 -0
  384. package/dist/definitions/datasource.js +0 -6
  385. package/dist/index.js +2 -2
  386. package/dist/integrations/base/query.js +7 -2
  387. package/dist/integrations/base/sqlTable.js +14 -14
  388. package/dist/integrations/couchdb.js +34 -8
  389. package/dist/integrations/dynamodb.js +8 -5
  390. package/dist/integrations/elasticsearch.js +7 -3
  391. package/dist/integrations/index.js +5 -5
  392. package/dist/integrations/mongodb.js +311 -271
  393. package/dist/integrations/mysql.js +2 -2
  394. package/dist/integrations/queries/sql.js +73 -100
  395. package/dist/integrations/rest.js +16 -18
  396. package/dist/middleware/currentapp.js +4 -2
  397. package/dist/package.json +7 -7
  398. package/dist/sdk/app/datasources/datasources.js +147 -0
  399. package/dist/sdk/app/datasources/index.js +27 -0
  400. package/dist/sdk/app/queries/index.js +27 -0
  401. package/dist/sdk/app/queries/queries.js +60 -0
  402. package/dist/sdk/app/tables/index.js +6 -2
  403. package/dist/sdk/index.js +4 -0
  404. package/dist/sdk/utils/index.js +29 -0
  405. package/dist/threads/automation.js +18 -7
  406. package/dist/threads/query.js +27 -13
  407. package/dist/tsconfig.build.tsbuildinfo +1 -1
  408. package/dist/utilities/fileSystem/filesystem.js +36 -34
  409. package/dist/utilities/fileSystem/plugin.js +17 -14
  410. package/dist/utilities/fileSystem/template.js +7 -4
  411. package/dist/utilities/schema.js +108 -0
  412. package/dist/utilities/workerRequests.js +2 -0
  413. package/package.json +8 -8
  414. package/scripts/dev/manage.js +3 -2
  415. package/src/api/controllers/application.ts +81 -74
  416. package/src/api/controllers/cloud.ts +1 -1
  417. package/src/api/controllers/datasource.ts +33 -25
  418. package/src/api/controllers/query/index.ts +47 -39
  419. package/src/api/controllers/row/ExternalRequest.ts +8 -2
  420. package/src/api/controllers/row/external.ts +24 -14
  421. package/src/api/controllers/row/internal.ts +42 -18
  422. package/src/api/controllers/row/utils.ts +40 -2
  423. package/src/api/controllers/static/index.ts +17 -18
  424. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -1
  425. package/src/api/controllers/table/external.ts +18 -16
  426. package/src/api/controllers/table/index.ts +46 -17
  427. package/src/api/controllers/table/internal.ts +4 -4
  428. package/src/api/controllers/table/utils.ts +12 -13
  429. package/src/api/controllers/user.ts +21 -13
  430. package/src/api/controllers/view/exporters.ts +20 -5
  431. package/src/api/controllers/view/index.ts +22 -35
  432. package/src/api/controllers/webhook.ts +48 -46
  433. package/src/api/routes/index.ts +2 -0
  434. package/src/api/routes/row.ts +1 -1
  435. package/src/api/routes/table.ts +15 -38
  436. package/src/api/routes/tests/datasource.spec.ts +35 -1
  437. package/src/api/routes/tests/misc.spec.js +4 -10
  438. package/src/api/routes/tests/table.spec.js +8 -30
  439. package/src/api/routes/tests/user.spec.js +20 -1
  440. package/src/api/routes/utils/validators.ts +1 -1
  441. package/src/app.ts +3 -1
  442. package/src/automations/tests/loop.spec.ts +45 -0
  443. package/src/automations/triggers.ts +6 -1
  444. package/src/definitions/automations.ts +1 -0
  445. package/src/definitions/datasource.ts +0 -41
  446. package/src/index.ts +1 -1
  447. package/src/integrations/base/query.ts +3 -1
  448. package/src/integrations/base/sqlTable.ts +1 -1
  449. package/src/integrations/couchdb.ts +40 -14
  450. package/src/integrations/dynamodb.ts +3 -3
  451. package/src/integrations/elasticsearch.ts +8 -4
  452. package/src/integrations/index.ts +4 -4
  453. package/src/integrations/mongodb.ts +315 -271
  454. package/src/integrations/mysql.ts +1 -1
  455. package/src/integrations/queries/sql.ts +5 -50
  456. package/src/integrations/rest.ts +16 -19
  457. package/src/integrations/tests/couchdb.spec.ts +33 -21
  458. package/src/integrations/tests/rest.spec.ts +4 -2
  459. package/src/middleware/currentapp.ts +3 -2
  460. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  461. package/src/sdk/app/datasources/datasources.ts +136 -0
  462. package/src/sdk/app/datasources/index.ts +5 -0
  463. package/src/sdk/app/queries/index.ts +5 -0
  464. package/src/sdk/app/queries/queries.ts +50 -0
  465. package/src/sdk/app/tables/index.ts +6 -3
  466. package/src/sdk/index.ts +4 -0
  467. package/src/sdk/utils/index.ts +16 -0
  468. package/src/tests/utilities/TestConfiguration.ts +15 -12
  469. package/src/tests/utilities/structures.ts +65 -2
  470. package/src/threads/automation.ts +18 -8
  471. package/src/threads/definitions.ts +3 -0
  472. package/src/threads/query.ts +28 -15
  473. package/src/utilities/fileSystem/filesystem.ts +6 -4
  474. package/src/utilities/fileSystem/plugin.ts +3 -4
  475. package/src/utilities/fileSystem/template.ts +2 -2
  476. package/src/utilities/schema.ts +141 -0
  477. package/src/utilities/workerRequests.ts +10 -1
  478. package/tsconfig.json +2 -1
  479. package/builder/assets/index.e386f2c1.js +0 -1023
  480. package/builder/assets/index.fa480d5b.css +0 -6
  481. package/dist/utilities/csvParser.js +0 -152
  482. package/src/utilities/csvParser.ts +0 -161
  483. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  484. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -1,111 +1,84 @@
1
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.interpolateSQL = exports.enrichQueryFields = void 0;
15
+ exports.interpolateSQL = void 0;
4
16
  const string_templates_1 = require("@budibase/string-templates");
17
+ const sdk_1 = __importDefault(require("../../sdk"));
5
18
  const CONST_CHAR_REGEX = new RegExp("'[^']*'", "g");
6
- function enrichQueryFields(fields, parameters = {}) {
7
- const enrichedQuery = Array.isArray(fields) ? [] : {};
8
- if (!fields || !parameters) {
9
- return enrichedQuery;
10
- }
11
- // enrich the fields with dynamic parameters
12
- for (let key of Object.keys(fields)) {
13
- if (fields[key] == null) {
14
- continue;
15
- }
16
- if (typeof fields[key] === "object") {
17
- // enrich nested fields object
18
- enrichedQuery[key] = enrichQueryFields(fields[key], parameters);
19
- }
20
- else if (typeof fields[key] === "string") {
21
- // enrich string value as normal
22
- enrichedQuery[key] = (0, string_templates_1.processStringSync)(fields[key], parameters, {
23
- noEscaping: true,
24
- noHelpers: true,
25
- escapeNewlines: true,
26
- });
27
- }
28
- else {
29
- enrichedQuery[key] = fields[key];
30
- }
31
- }
32
- if (enrichedQuery.json ||
33
- enrichedQuery.customData ||
34
- enrichedQuery.requestBody) {
35
- try {
36
- enrichedQuery.json = JSON.parse(enrichedQuery.json ||
37
- enrichedQuery.customData ||
38
- enrichedQuery.requestBody);
39
- }
40
- catch (err) {
41
- // no json found, ignore
42
- }
43
- delete enrichedQuery.customData;
44
- }
45
- return enrichedQuery;
46
- }
47
- exports.enrichQueryFields = enrichQueryFields;
48
19
  function interpolateSQL(fields, parameters, integration) {
49
- let sql = fields.sql;
50
- if (!sql || typeof sql !== "string") {
51
- return fields;
52
- }
53
- const bindings = (0, string_templates_1.findHBSBlocks)(sql);
54
- let variables = [], arrays = [];
55
- for (let binding of bindings) {
56
- // look for array/list operations in the SQL statement, which will need handled later
57
- const listRegexMatch = sql.match(new RegExp(`(in|IN|In|iN)( )+[(]?${binding}[)]?`));
58
- // check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
59
- // start by finding all the instances of const character strings
60
- const charConstMatch = sql.match(CONST_CHAR_REGEX) || [];
61
- // now look within them to see if a binding is used
62
- const charConstBindingMatch = charConstMatch.find((string) => string.match(new RegExp(`'[^']*${binding}[^']*'`)));
63
- if (charConstBindingMatch) {
64
- let [part1, part2] = charConstBindingMatch.split(binding);
65
- part1 = `'${part1.substring(1)}'`;
66
- part2 = `'${part2.substring(0, part2.length - 1)}'`;
67
- sql = sql.replace(charConstBindingMatch, integration.getStringConcat([
68
- part1,
69
- integration.getBindingIdentifier(),
70
- part2,
71
- ]));
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ let sql = fields.sql;
22
+ if (!sql || typeof sql !== "string") {
23
+ return fields;
72
24
  }
73
- // generate SQL parameterised array
74
- else if (listRegexMatch) {
75
- arrays.push(binding);
76
- // determine the length of the array
77
- const value = enrichQueryFields([binding], parameters)[0]
78
- .split(",")
79
- .map((val) => val.trim());
80
- // build a string like ($1, $2, $3)
81
- let replacement = `${Array.apply(null, Array(value.length))
82
- .map(() => integration.getBindingIdentifier())
83
- .join(",")}`;
84
- // check if parentheses are needed
85
- if (!listRegexMatch[0].includes(`(${binding})`)) {
86
- replacement = `(${replacement})`;
25
+ const bindings = (0, string_templates_1.findHBSBlocks)(sql);
26
+ let variables = [], arrays = [];
27
+ for (let binding of bindings) {
28
+ // look for array/list operations in the SQL statement, which will need handled later
29
+ const listRegexMatch = sql.match(new RegExp(`(in|IN|In|iN)( )+[(]?${binding}[)]?`));
30
+ // check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
31
+ // start by finding all the instances of const character strings
32
+ const charConstMatch = sql.match(CONST_CHAR_REGEX) || [];
33
+ // now look within them to see if a binding is used
34
+ const charConstBindingMatch = charConstMatch.find((string) => string.match(new RegExp(`'[^']*${binding}[^']*'`)));
35
+ if (charConstBindingMatch) {
36
+ let [part1, part2] = charConstBindingMatch.split(binding);
37
+ part1 = `'${part1.substring(1)}'`;
38
+ part2 = `'${part2.substring(0, part2.length - 1)}'`;
39
+ sql = sql.replace(charConstBindingMatch, integration.getStringConcat([
40
+ part1,
41
+ integration.getBindingIdentifier(),
42
+ part2,
43
+ ]));
87
44
  }
88
- sql = sql.replace(binding, replacement);
89
- }
90
- else {
91
- sql = sql.replace(binding, integration.getBindingIdentifier());
92
- }
93
- variables.push(binding);
94
- }
95
- // replicate the knex structure
96
- fields.sql = sql;
97
- fields.bindings = enrichQueryFields(variables, parameters);
98
- // check for arrays in the data
99
- let updated = [];
100
- for (let i = 0; i < variables.length; i++) {
101
- if (arrays.includes(variables[i])) {
102
- updated = updated.concat(fields.bindings[i].split(",").map((val) => val.trim()));
45
+ // generate SQL parameterised array
46
+ else if (listRegexMatch) {
47
+ arrays.push(binding);
48
+ // determine the length of the array
49
+ const value = (yield sdk_1.default.queries.enrichContext([binding], parameters))[0]
50
+ .split(",")
51
+ .map((val) => val.trim());
52
+ // build a string like ($1, $2, $3)
53
+ let replacement = `${Array.apply(null, Array(value.length))
54
+ .map(() => integration.getBindingIdentifier())
55
+ .join(",")}`;
56
+ // check if parentheses are needed
57
+ if (!listRegexMatch[0].includes(`(${binding})`)) {
58
+ replacement = `(${replacement})`;
59
+ }
60
+ sql = sql.replace(binding, replacement);
61
+ }
62
+ else {
63
+ sql = sql.replace(binding, integration.getBindingIdentifier());
64
+ }
65
+ variables.push(binding);
103
66
  }
104
- else {
105
- updated.push(fields.bindings[i]);
67
+ // replicate the knex structure
68
+ fields.sql = sql;
69
+ fields.bindings = yield sdk_1.default.queries.enrichContext(variables, parameters);
70
+ // check for arrays in the data
71
+ let updated = [];
72
+ for (let i = 0; i < variables.length; i++) {
73
+ if (arrays.includes(variables[i])) {
74
+ updated = updated.concat(fields.bindings[i].split(",").map((val) => val.trim()));
75
+ }
76
+ else {
77
+ updated.push(fields.bindings[i]);
78
+ }
106
79
  }
107
- }
108
- fields.bindings = updated;
109
- return fields;
80
+ fields.bindings = updated;
81
+ return fields;
82
+ });
110
83
  }
111
84
  exports.interpolateSQL = interpolateSQL;
@@ -36,15 +36,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  const types_1 = require("@budibase/types");
39
- const datasource_1 = require("../definitions/datasource");
40
39
  const lodash_1 = require("lodash");
41
40
  const https = __importStar(require("https"));
42
41
  const querystring_1 = __importDefault(require("querystring"));
43
- const fetch = require("node-fetch");
44
- const { formatBytes } = require("../utilities");
45
- const { performance } = require("perf_hooks");
46
- const FormData = require("form-data");
47
- const { URLSearchParams } = require("url");
42
+ const node_fetch_1 = __importDefault(require("node-fetch"));
43
+ const utilities_1 = require("../utilities");
44
+ const perf_hooks_1 = require("perf_hooks");
45
+ const form_data_1 = __importDefault(require("form-data"));
46
+ const url_1 = require("url");
48
47
  const BodyTypes = {
49
48
  NONE: "none",
50
49
  FORM_DATA: "form",
@@ -138,7 +137,7 @@ const SCHEMA = {
138
137
  class RestIntegration {
139
138
  constructor(config) {
140
139
  this.headers = {};
141
- this.startTimeMs = performance.now();
140
+ this.startTimeMs = perf_hooks_1.performance.now();
142
141
  this.config = config;
143
142
  }
144
143
  parseResponse(response, pagination) {
@@ -174,8 +173,8 @@ class RestIntegration {
174
173
  catch (err) {
175
174
  throw "Failed to parse response body.";
176
175
  }
177
- const size = formatBytes(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
178
- const time = `${Math.round(performance.now() - this.startTimeMs)}ms`;
176
+ const size = (0, utilities_1.formatBytes)(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
177
+ const time = `${Math.round(perf_hooks_1.performance.now() - this.startTimeMs)}ms`;
179
178
  headers = response.headers.raw();
180
179
  for (let [key, value] of Object.entries(headers)) {
181
180
  headers[key] = Array.isArray(value) ? value[0] : value;
@@ -206,14 +205,14 @@ class RestIntegration {
206
205
  // Add pagination params to query string if required
207
206
  if ((pagination === null || pagination === void 0 ? void 0 : pagination.location) === "query" && paginationValues) {
208
207
  const { pageParam, sizeParam } = pagination;
209
- const params = new URLSearchParams();
208
+ const params = new url_1.URLSearchParams();
210
209
  // Append page number or cursor param if configured
211
210
  if (pageParam && paginationValues.page != null) {
212
211
  params.append(pageParam, paginationValues.page);
213
212
  }
214
213
  // Append page size param if configured
215
214
  if (sizeParam && paginationValues.limit != null) {
216
- params.append(sizeParam, paginationValues.limit);
215
+ params.append(sizeParam, String(paginationValues.limit));
217
216
  }
218
217
  // Prepend query string with pagination params
219
218
  let paginationString = params.toString();
@@ -269,7 +268,7 @@ class RestIntegration {
269
268
  input.body = string;
270
269
  break;
271
270
  case BodyTypes.ENCODED:
272
- const params = new URLSearchParams();
271
+ const params = new url_1.URLSearchParams();
273
272
  for (let [key, value] of Object.entries(object)) {
274
273
  params.append(key, value);
275
274
  }
@@ -279,7 +278,7 @@ class RestIntegration {
279
278
  input.body = params;
280
279
  break;
281
280
  case BodyTypes.FORM_DATA:
282
- const form = new FormData();
281
+ const form = new form_data_1.default();
283
282
  for (let [key, value] of Object.entries(object)) {
284
283
  form.append(key, value);
285
284
  }
@@ -318,11 +317,11 @@ class RestIntegration {
318
317
  if (authConfig) {
319
318
  let config;
320
319
  switch (authConfig.type) {
321
- case datasource_1.AuthType.BASIC:
320
+ case types_1.RestAuthType.BASIC:
322
321
  config = authConfig.config;
323
322
  headers.Authorization = `Basic ${Buffer.from(`${config.username}:${config.password}`).toString("base64")}`;
324
323
  break;
325
- case datasource_1.AuthType.BEARER:
324
+ case types_1.RestAuthType.BEARER:
326
325
  config = authConfig.config;
327
326
  headers.Authorization = `Bearer ${config.token}`;
328
327
  break;
@@ -355,9 +354,9 @@ class RestIntegration {
355
354
  // https://github.com/nodejs/node/issues/43798
356
355
  input.extraHttpOptions = { insecureHTTPParser: true };
357
356
  }
358
- this.startTimeMs = performance.now();
357
+ this.startTimeMs = perf_hooks_1.performance.now();
359
358
  const url = this.getUrl(path, queryString, pagination, paginationValues);
360
- const response = yield fetch(url, input);
359
+ const response = yield (0, node_fetch_1.default)(url, input);
361
360
  return yield this.parseResponse(response, pagination);
362
361
  });
363
362
  }
@@ -390,5 +389,4 @@ class RestIntegration {
390
389
  exports.default = {
391
390
  schema: SCHEMA,
392
391
  integration: RestIntegration,
393
- AuthType: datasource_1.AuthType,
394
392
  };
@@ -18,6 +18,7 @@ const global_1 = require("../utilities/global");
18
18
  const environment_1 = __importDefault(require("../environment"));
19
19
  const utils_2 = require("./utils");
20
20
  exports.default = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
21
+ var _a;
21
22
  // try to get the appID from the request
22
23
  let requestAppId = yield backend_core_1.utils.getAppIdFromCtx(ctx);
23
24
  // get app cookie if it exists
@@ -52,7 +53,7 @@ exports.default = (ctx, next) => __awaiter(void 0, void 0, void 0, function* ()
52
53
  }
53
54
  }
54
55
  let appId, roleId = backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC;
55
- if (!ctx.user) {
56
+ if (!((_a = ctx.user) === null || _a === void 0 ? void 0 : _a._id)) {
56
57
  // not logged in, try to set a cookie for public apps
57
58
  appId = requestAppId;
58
59
  }
@@ -88,11 +89,12 @@ exports.default = (ctx, next) => __awaiter(void 0, void 0, void 0, function* ()
88
89
  return next();
89
90
  }
90
91
  return backend_core_1.context.doInAppContext(appId, () => __awaiter(void 0, void 0, void 0, function* () {
92
+ var _b;
91
93
  let skipCookie = false;
92
94
  // if the user not in the right tenant then make sure they have no permissions
93
95
  // need to judge this only based on the request app ID,
94
96
  if (environment_1.default.MULTI_TENANCY &&
95
- ctx.user &&
97
+ ((_b = ctx.user) === null || _b === void 0 ? void 0 : _b._id) &&
96
98
  requestAppId &&
97
99
  !backend_core_1.tenancy.isUserInAppTenant(requestAppId, ctx.user)) {
98
100
  // don't error, simply remove the users rights (they are a public user)
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.2.12-alpha.6",
4
+ "version": "2.2.12-alpha.70",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -43,11 +43,11 @@
43
43
  "license": "GPL-3.0",
44
44
  "dependencies": {
45
45
  "@apidevtools/swagger-parser": "10.0.3",
46
- "@budibase/backend-core": "2.2.12-alpha.6",
47
- "@budibase/client": "2.2.12-alpha.6",
48
- "@budibase/pro": "2.2.12-alpha.6",
49
- "@budibase/string-templates": "2.2.12-alpha.6",
50
- "@budibase/types": "2.2.12-alpha.6",
46
+ "@budibase/backend-core": "2.2.12-alpha.70",
47
+ "@budibase/client": "2.2.12-alpha.70",
48
+ "@budibase/pro": "2.2.12-alpha.70",
49
+ "@budibase/string-templates": "2.2.12-alpha.70",
50
+ "@budibase/types": "2.2.12-alpha.70",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -77,7 +77,7 @@
77
77
  "joi": "17.6.0",
78
78
  "js-yaml": "4.1.0",
79
79
  "jsonschema": "1.4.0",
80
- "knex": "0.95.15",
80
+ "knex": "2.4.0",
81
81
  "koa": "2.13.4",
82
82
  "koa-body": "4.2.0",
83
83
  "koa-compress": "4.0.1",
@@ -0,0 +1,147 @@
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.mergeConfigs = exports.removeSecretSingle = exports.removeSecrets = exports.getWithEnvVars = exports.get = exports.enrich = void 0;
13
+ const backend_core_1 = require("@budibase/backend-core");
14
+ const string_templates_1 = require("@budibase/string-templates");
15
+ const types_1 = require("@budibase/types");
16
+ const fp_1 = require("lodash/fp");
17
+ const utils_1 = require("../../utils");
18
+ const integrations_1 = require("../../../integrations");
19
+ const ENV_VAR_PREFIX = "env.";
20
+ function enrichDatasourceWithValues(datasource) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const cloned = (0, fp_1.cloneDeep)(datasource);
23
+ const env = yield (0, utils_1.getEnvironmentVariables)();
24
+ const processed = (0, string_templates_1.processObjectSync)(cloned, { env }, { onlyFound: true });
25
+ return {
26
+ datasource: processed,
27
+ envVars: env,
28
+ };
29
+ });
30
+ }
31
+ function enrich(datasource) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ const { datasource: response } = yield enrichDatasourceWithValues(datasource);
34
+ return response;
35
+ });
36
+ }
37
+ exports.enrich = enrich;
38
+ function get(datasourceId, opts) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const appDb = backend_core_1.context.getAppDB();
41
+ const datasource = yield appDb.get(datasourceId);
42
+ if (opts === null || opts === void 0 ? void 0 : opts.enriched) {
43
+ return (yield enrichDatasourceWithValues(datasource)).datasource;
44
+ }
45
+ else {
46
+ return datasource;
47
+ }
48
+ });
49
+ }
50
+ exports.get = get;
51
+ function getWithEnvVars(datasourceId) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const appDb = backend_core_1.context.getAppDB();
54
+ const datasource = yield appDb.get(datasourceId);
55
+ return enrichDatasourceWithValues(datasource);
56
+ });
57
+ }
58
+ exports.getWithEnvVars = getWithEnvVars;
59
+ function hasAuthConfigs(datasource) {
60
+ var _a;
61
+ return datasource.source === types_1.SourceName.REST && ((_a = datasource.config) === null || _a === void 0 ? void 0 : _a.authConfigs);
62
+ }
63
+ function useEnvVars(str) {
64
+ if (typeof str !== "string") {
65
+ return false;
66
+ }
67
+ const blocks = (0, string_templates_1.findHBSBlocks)(str);
68
+ return blocks.find(block => block.includes(ENV_VAR_PREFIX)) != null;
69
+ }
70
+ function removeSecrets(datasources) {
71
+ var _a, _b;
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const definitions = yield (0, integrations_1.getDefinitions)();
74
+ for (let datasource of datasources) {
75
+ const schema = definitions[datasource.source];
76
+ if (datasource.config) {
77
+ // strip secrets from response, so they don't show in the network request
78
+ if (datasource.config.auth) {
79
+ delete datasource.config.auth;
80
+ }
81
+ // specific to REST datasources, contains passwords
82
+ if (hasAuthConfigs(datasource)) {
83
+ const configs = datasource.config.authConfigs;
84
+ for (let config of configs) {
85
+ if (config.type !== types_1.RestAuthType.BASIC) {
86
+ continue;
87
+ }
88
+ const basic = config.config;
89
+ if (!useEnvVars(basic.password)) {
90
+ basic.password = types_1.PASSWORD_REPLACEMENT;
91
+ }
92
+ }
93
+ }
94
+ // remove general passwords
95
+ for (let key of Object.keys(datasource.config)) {
96
+ if (((_b = (_a = schema.datasource) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.type) === types_1.DatasourceFieldType.PASSWORD &&
97
+ !useEnvVars(datasource.config[key])) {
98
+ datasource.config[key] = types_1.PASSWORD_REPLACEMENT;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ return datasources;
104
+ });
105
+ }
106
+ exports.removeSecrets = removeSecrets;
107
+ function removeSecretSingle(datasource) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ return (yield removeSecrets([datasource]))[0];
110
+ });
111
+ }
112
+ exports.removeSecretSingle = removeSecretSingle;
113
+ function mergeConfigs(update, old) {
114
+ var _a, _b, _c, _d;
115
+ if (!update.config) {
116
+ return update;
117
+ }
118
+ // specific to REST datasources, fix the auth configs again if required
119
+ if (hasAuthConfigs(update)) {
120
+ const configs = update.config.authConfigs;
121
+ const oldConfigs = (_a = old.config) === null || _a === void 0 ? void 0 : _a.authConfigs;
122
+ for (let config of configs) {
123
+ if (config.type !== types_1.RestAuthType.BASIC) {
124
+ continue;
125
+ }
126
+ const basic = config.config;
127
+ const oldBasic = (_b = oldConfigs.find(old => old.name === config.name)) === null || _b === void 0 ? void 0 : _b.config;
128
+ if (basic.password === types_1.PASSWORD_REPLACEMENT) {
129
+ basic.password = oldBasic.password;
130
+ }
131
+ }
132
+ }
133
+ // update back to actual passwords for everything else
134
+ for (let [key, value] of Object.entries(update.config)) {
135
+ if (value !== types_1.PASSWORD_REPLACEMENT) {
136
+ continue;
137
+ }
138
+ if ((_c = old.config) === null || _c === void 0 ? void 0 : _c[key]) {
139
+ update.config[key] = (_d = old.config) === null || _d === void 0 ? void 0 : _d[key];
140
+ }
141
+ else {
142
+ delete update.config[key];
143
+ }
144
+ }
145
+ return update;
146
+ }
147
+ exports.mergeConfigs = mergeConfigs;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const datasources = __importStar(require("./datasources"));
27
+ exports.default = Object.assign({}, datasources);
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const queries = __importStar(require("./queries"));
27
+ exports.default = Object.assign({}, queries);
@@ -0,0 +1,60 @@
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.enrichContext = void 0;
13
+ const utils_1 = require("../../utils");
14
+ const string_templates_1 = require("@budibase/string-templates");
15
+ function enrichContext(fields, inputs = {}) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const enrichedQuery = Array.isArray(fields) ? [] : {};
18
+ if (!fields || !inputs) {
19
+ return enrichedQuery;
20
+ }
21
+ const env = yield (0, utils_1.getEnvironmentVariables)();
22
+ const parameters = Object.assign(Object.assign({}, inputs), { env });
23
+ // enrich the fields with dynamic parameters
24
+ for (let key of Object.keys(fields)) {
25
+ if (fields[key] == null) {
26
+ continue;
27
+ }
28
+ if (typeof fields[key] === "object") {
29
+ // enrich nested fields object
30
+ enrichedQuery[key] = yield enrichContext(fields[key], parameters);
31
+ }
32
+ else if (typeof fields[key] === "string") {
33
+ // enrich string value as normal
34
+ enrichedQuery[key] = (0, string_templates_1.processStringSync)(fields[key], parameters, {
35
+ noEscaping: true,
36
+ noHelpers: true,
37
+ escapeNewlines: true,
38
+ });
39
+ }
40
+ else {
41
+ enrichedQuery[key] = fields[key];
42
+ }
43
+ }
44
+ if (enrichedQuery.json ||
45
+ enrichedQuery.customData ||
46
+ enrichedQuery.requestBody) {
47
+ try {
48
+ enrichedQuery.json = JSON.parse(enrichedQuery.json ||
49
+ enrichedQuery.customData ||
50
+ enrichedQuery.requestBody);
51
+ }
52
+ catch (err) {
53
+ // no json found, ignore
54
+ }
55
+ delete enrichedQuery.customData;
56
+ }
57
+ return enrichedQuery;
58
+ });
59
+ }
60
+ exports.enrichContext = enrichContext;
@@ -8,10 +8,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  const backend_core_1 = require("@budibase/backend-core");
13
16
  const utils_1 = require("../../../db/utils");
14
17
  const utils_2 = require("../../../integrations/utils");
18
+ const datasources_1 = __importDefault(require("../datasources"));
15
19
  function getAllInternalTables(db) {
16
20
  return __awaiter(this, void 0, void 0, function* () {
17
21
  if (!db) {
@@ -26,7 +30,7 @@ function getAllInternalTables(db) {
26
30
  function getAllExternalTables(datasourceId) {
27
31
  return __awaiter(this, void 0, void 0, function* () {
28
32
  const db = backend_core_1.context.getAppDB();
29
- const datasource = yield db.get(datasourceId);
33
+ const datasource = yield datasources_1.default.get(datasourceId, { enriched: true });
30
34
  if (!datasource || !datasource.entities) {
31
35
  throw "Datasource is not configured fully.";
32
36
  }
@@ -44,7 +48,7 @@ function getTable(tableId) {
44
48
  const db = backend_core_1.context.getAppDB();
45
49
  if ((0, utils_2.isExternalTable)(tableId)) {
46
50
  let { datasourceId, tableName } = (0, utils_2.breakExternalTableId)(tableId);
47
- const datasource = yield db.get(datasourceId);
51
+ const datasource = yield datasources_1.default.get(datasourceId);
48
52
  const table = yield getExternalTable(datasourceId, tableName);
49
53
  return Object.assign(Object.assign({}, table), { sql: (0, utils_2.isSQL)(datasource) });
50
54
  }