@budibase/server 2.2.12-alpha.43 → 2.2.12-alpha.45

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 (423) hide show
  1. package/__mocks__/node-fetch.ts +2 -0
  2. package/builder/assets/{index.68e5f22f.js → index.353f1284.js} +392 -386
  3. package/builder/assets/{index.80229ab4.css → index.f9c1cb26.css} +2 -2
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +1872 -1762
  6. package/coverage/coverage-final.json +83 -78
  7. package/coverage/lcov-report/index.html +141 -96
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +158 -137
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +1 -1
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +1 -1
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +99 -75
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +12 -12
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +69 -69
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +1 -1
  21. package/coverage/lcov-report/src/api/controllers/index.html +24 -24
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +1 -1
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +1 -1
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +14 -14
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +1 -1
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/index.html +7 -7
  59. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +70 -46
  60. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
  61. package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
  62. package/coverage/lcov-report/src/api/controllers/routing.ts.html +1 -1
  63. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +9 -9
  64. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +11 -14
  65. package/coverage/lcov-report/src/api/controllers/row/index.html +15 -15
  66. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +1 -1
  67. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +1 -1
  68. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
  69. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +1 -1
  70. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +4 -4
  71. package/coverage/lcov-report/src/api/controllers/screen.ts.html +1 -1
  72. package/coverage/lcov-report/src/api/controllers/script.ts.html +1 -1
  73. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  74. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +21 -24
  75. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +1 -1
  76. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +21 -15
  77. package/coverage/lcov-report/src/api/controllers/table/index.html +13 -13
  78. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +1 -1
  79. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +1 -1
  80. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1 -1
  81. package/coverage/lcov-report/src/api/controllers/templates.ts.html +1 -1
  82. package/coverage/lcov-report/src/api/controllers/user.ts.html +1 -1
  83. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +1 -1
  84. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +1 -1
  87. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +1 -1
  88. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +57 -51
  89. package/coverage/lcov-report/src/api/index.html +1 -1
  90. package/coverage/lcov-report/src/api/index.ts.html +7 -7
  91. package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
  92. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +1 -1
  93. package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
  94. package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
  95. package/coverage/lcov-report/src/api/routes/automation.ts.html +1 -1
  96. package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
  97. package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
  98. package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
  99. package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
  100. package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
  101. package/coverage/lcov-report/src/api/routes/dev.ts.html +1 -1
  102. package/coverage/lcov-report/src/api/routes/index.html +5 -5
  103. package/coverage/lcov-report/src/api/routes/index.ts.html +10 -4
  104. package/coverage/lcov-report/src/api/routes/integration.ts.html +1 -1
  105. package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
  106. package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
  107. package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
  108. package/coverage/lcov-report/src/api/routes/permission.ts.html +1 -1
  109. package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
  110. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +1 -1
  111. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/index.ts.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +1 -1
  115. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
  116. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
  117. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
  121. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/query.ts.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/row.ts.html +2 -2
  127. package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
  128. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
  130. package/coverage/lcov-report/src/api/routes/table.ts.html +1 -1
  131. package/coverage/lcov-report/src/api/routes/templates.ts.html +1 -1
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
  136. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
  139. package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
  140. package/coverage/lcov-report/src/app.ts.html +1 -1
  141. package/coverage/lcov-report/src/automations/actions.ts.html +1 -1
  142. package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
  143. package/coverage/lcov-report/src/automations/bullboard.ts.html +2 -2
  144. package/coverage/lcov-report/src/automations/index.html +15 -15
  145. package/coverage/lcov-report/src/automations/index.ts.html +1 -1
  146. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  147. package/coverage/lcov-report/src/automations/logging/index.ts.html +4 -4
  148. package/coverage/lcov-report/src/automations/steps/bash.ts.html +1 -1
  149. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
  150. package/coverage/lcov-report/src/automations/steps/delay.ts.html +1 -1
  151. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
  152. package/coverage/lcov-report/src/automations/steps/discord.ts.html +1 -1
  153. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
  154. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
  155. package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
  156. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
  158. package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
  159. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
  160. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
  161. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
  162. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
  163. package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
  164. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
  165. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  166. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
  170. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +2 -2
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
  176. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
  177. package/coverage/lcov-report/src/automations/triggers.ts.html +1 -1
  178. package/coverage/lcov-report/src/automations/utils.ts.html +21 -21
  179. package/coverage/lcov-report/src/constants/index.html +1 -1
  180. package/coverage/lcov-report/src/constants/index.ts.html +2 -2
  181. package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
  182. package/coverage/lcov-report/src/constants/screens.ts.html +1 -1
  183. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
  184. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
  185. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
  186. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  187. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
  188. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
  189. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  190. package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
  191. package/coverage/lcov-report/src/db/index.html +1 -1
  192. package/coverage/lcov-report/src/db/index.ts.html +1 -1
  193. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1 -1
  194. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
  195. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  196. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +1 -1
  197. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +1 -1
  198. package/coverage/lcov-report/src/db/newid.ts.html +3 -3
  199. package/coverage/lcov-report/src/db/utils.ts.html +17 -17
  200. package/coverage/lcov-report/src/definitions/automations.ts.html +5 -2
  201. package/coverage/lcov-report/src/definitions/datasource.ts.html +2 -2
  202. package/coverage/lcov-report/src/definitions/index.html +1 -1
  203. package/coverage/lcov-report/src/environment.ts.html +9 -9
  204. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
  205. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
  206. package/coverage/lcov-report/src/events/index.html +1 -1
  207. package/coverage/lcov-report/src/events/index.ts.html +1 -1
  208. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  209. package/coverage/lcov-report/src/index.html +7 -7
  210. package/coverage/lcov-report/src/index.ts.html +5 -5
  211. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  212. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  213. package/coverage/lcov-report/src/integrations/base/index.html +11 -11
  214. package/coverage/lcov-report/src/integrations/base/query.ts.html +13 -7
  215. package/coverage/lcov-report/src/integrations/base/sql.ts.html +12 -12
  216. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
  217. package/coverage/lcov-report/src/integrations/base/utils.ts.html +2 -2
  218. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  219. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +9 -9
  220. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  221. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  222. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  223. package/coverage/lcov-report/src/integrations/index.html +1 -1
  224. package/coverage/lcov-report/src/integrations/index.ts.html +37 -37
  225. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  226. package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
  227. package/coverage/lcov-report/src/integrations/mysql.ts.html +11 -11
  228. package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
  229. package/coverage/lcov-report/src/integrations/postgres.ts.html +10 -10
  230. package/coverage/lcov-report/src/integrations/queries/index.html +19 -19
  231. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +15 -150
  232. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  233. package/coverage/lcov-report/src/integrations/rest.ts.html +24 -24
  234. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  235. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  236. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  237. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  238. package/coverage/lcov-report/src/integrations/utils.ts.html +2 -2
  239. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  240. package/coverage/lcov-report/src/middleware/authorized.ts.html +19 -19
  241. package/coverage/lcov-report/src/middleware/builder.ts.html +13 -13
  242. package/coverage/lcov-report/src/middleware/currentapp.ts.html +33 -33
  243. package/coverage/lcov-report/src/middleware/index.html +1 -1
  244. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  245. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  246. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  247. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  248. package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
  249. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  263. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  265. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  268. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  274. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  275. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  276. package/coverage/lcov-report/src/migrations/index.html +1 -1
  277. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  279. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  280. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  281. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  282. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
  283. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +18 -18
  284. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +7 -7
  285. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
  288. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  289. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +1 -1
  290. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  292. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  293. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
  294. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +379 -0
  295. package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
  296. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
  297. package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
  298. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +100 -0
  299. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +235 -0
  300. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
  301. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  302. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
  303. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
  304. package/coverage/lcov-report/src/sdk/app/tables/index.html +11 -11
  305. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +18 -9
  306. package/coverage/lcov-report/src/sdk/index.html +5 -5
  307. package/coverage/lcov-report/src/sdk/index.ts.html +17 -5
  308. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  309. package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
  310. package/coverage/lcov-report/src/sdk/users/utils.ts.html +20 -20
  311. package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
  312. package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
  313. package/coverage/lcov-report/src/startup.ts.html +1 -1
  314. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +89 -80
  315. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +4 -4
  316. package/coverage/lcov-report/src/tests/utilities/index.html +5 -5
  317. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  318. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +4 -4
  319. package/coverage/lcov-report/src/threads/automation.ts.html +42 -24
  320. package/coverage/lcov-report/src/threads/index.html +28 -28
  321. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  322. package/coverage/lcov-report/src/threads/query.ts.html +68 -29
  323. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  324. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +2 -2
  325. package/coverage/lcov-report/src/utilities/centralPath.ts.html +11 -11
  326. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +8 -8
  327. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  328. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +18 -12
  329. package/coverage/lcov-report/src/utilities/fileSystem/index.html +17 -17
  330. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  331. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +5 -8
  332. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +3 -3
  334. package/coverage/lcov-report/src/utilities/global.ts.html +33 -33
  335. package/coverage/lcov-report/src/utilities/index.html +16 -16
  336. package/coverage/lcov-report/src/utilities/index.ts.html +12 -12
  337. package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  339. package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
  340. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  341. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +1 -1
  342. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +1 -1
  343. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +1 -1
  344. package/coverage/lcov-report/src/utilities/schema.ts.html +1 -1
  345. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
  346. package/coverage/lcov-report/src/utilities/security.ts.html +1 -1
  347. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  348. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +1 -1
  349. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  350. package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
  351. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +1 -1
  352. package/coverage/lcov-report/src/watch.ts.html +1 -1
  353. package/coverage/lcov-report/src/websocket.ts.html +3 -3
  354. package/coverage/lcov.info +2986 -2796
  355. package/dist/api/controllers/application.js +73 -74
  356. package/dist/api/controllers/datasource.js +24 -15
  357. package/dist/api/controllers/query/index.js +18 -11
  358. package/dist/api/controllers/row/ExternalRequest.js +5 -3
  359. package/dist/api/controllers/row/external.js +6 -5
  360. package/dist/api/controllers/row/utils.js +5 -2
  361. package/dist/api/controllers/static/index.js +38 -38
  362. package/dist/api/controllers/table/external.js +8 -5
  363. package/dist/api/controllers/webhook.js +45 -43
  364. package/dist/api/routes/index.js +2 -0
  365. package/dist/api/routes/row.js +2 -2
  366. package/dist/index.js +2 -2
  367. package/dist/integrations/base/query.js +7 -2
  368. package/dist/integrations/base/sqlTable.js +14 -14
  369. package/dist/integrations/dynamodb.js +8 -5
  370. package/dist/integrations/mysql.js +2 -2
  371. package/dist/integrations/queries/sql.js +73 -100
  372. package/dist/integrations/rest.js +14 -14
  373. package/dist/package.json +6 -6
  374. package/dist/sdk/app/datasources/datasources.js +113 -0
  375. package/dist/sdk/app/datasources/index.js +27 -0
  376. package/dist/sdk/app/queries/index.js +27 -0
  377. package/dist/sdk/app/queries/queries.js +60 -0
  378. package/dist/sdk/app/tables/index.js +6 -2
  379. package/dist/sdk/index.js +4 -0
  380. package/dist/sdk/utils/index.js +29 -0
  381. package/dist/threads/automation.js +9 -2
  382. package/dist/threads/query.js +27 -13
  383. package/dist/tsconfig.build.tsbuildinfo +1 -1
  384. package/dist/utilities/fileSystem/filesystem.js +36 -34
  385. package/dist/utilities/fileSystem/plugin.js +17 -14
  386. package/dist/utilities/fileSystem/template.js +7 -4
  387. package/package.json +7 -7
  388. package/scripts/dev/manage.js +1 -0
  389. package/src/api/controllers/application.ts +81 -74
  390. package/src/api/controllers/datasource.ts +33 -25
  391. package/src/api/controllers/query/index.ts +47 -39
  392. package/src/api/controllers/row/ExternalRequest.ts +2 -2
  393. package/src/api/controllers/row/external.ts +3 -4
  394. package/src/api/controllers/row/utils.ts +2 -2
  395. package/src/api/controllers/static/index.ts +17 -18
  396. package/src/api/controllers/table/external.ts +8 -6
  397. package/src/api/controllers/webhook.ts +48 -46
  398. package/src/api/routes/index.ts +2 -0
  399. package/src/api/routes/row.ts +1 -1
  400. package/src/api/routes/tests/datasource.spec.ts +35 -1
  401. package/src/definitions/automations.ts +1 -0
  402. package/src/index.ts +1 -1
  403. package/src/integrations/base/query.ts +3 -1
  404. package/src/integrations/base/sqlTable.ts +1 -1
  405. package/src/integrations/dynamodb.ts +3 -3
  406. package/src/integrations/mysql.ts +1 -1
  407. package/src/integrations/queries/sql.ts +5 -50
  408. package/src/integrations/rest.ts +8 -8
  409. package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +10 -6
  410. package/src/sdk/app/datasources/datasources.ts +98 -0
  411. package/src/sdk/app/datasources/index.ts +5 -0
  412. package/src/sdk/app/queries/index.ts +5 -0
  413. package/src/sdk/app/queries/queries.ts +50 -0
  414. package/src/sdk/app/tables/index.ts +6 -3
  415. package/src/sdk/index.ts +4 -0
  416. package/src/sdk/utils/index.ts +16 -0
  417. package/src/tests/utilities/TestConfiguration.ts +15 -12
  418. package/src/threads/automation.ts +9 -3
  419. package/src/threads/definitions.ts +3 -0
  420. package/src/threads/query.ts +28 -15
  421. package/src/utilities/fileSystem/filesystem.ts +6 -4
  422. package/src/utilities/fileSystem/plugin.ts +3 -4
  423. package/src/utilities/fileSystem/template.ts +2 -2
@@ -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;
@@ -40,11 +40,11 @@ const datasource_1 = require("../definitions/datasource");
40
40
  const lodash_1 = require("lodash");
41
41
  const https = __importStar(require("https"));
42
42
  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");
43
+ const node_fetch_1 = __importDefault(require("node-fetch"));
44
+ const utilities_1 = require("../utilities");
45
+ const perf_hooks_1 = require("perf_hooks");
46
+ const form_data_1 = __importDefault(require("form-data"));
47
+ const url_1 = require("url");
48
48
  const BodyTypes = {
49
49
  NONE: "none",
50
50
  FORM_DATA: "form",
@@ -138,7 +138,7 @@ const SCHEMA = {
138
138
  class RestIntegration {
139
139
  constructor(config) {
140
140
  this.headers = {};
141
- this.startTimeMs = performance.now();
141
+ this.startTimeMs = perf_hooks_1.performance.now();
142
142
  this.config = config;
143
143
  }
144
144
  parseResponse(response, pagination) {
@@ -174,8 +174,8 @@ class RestIntegration {
174
174
  catch (err) {
175
175
  throw "Failed to parse response body.";
176
176
  }
177
- const size = formatBytes(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
178
- const time = `${Math.round(performance.now() - this.startTimeMs)}ms`;
177
+ const size = (0, utilities_1.formatBytes)(response.headers.get("content-length") || Buffer.byteLength(raw, "utf8"));
178
+ const time = `${Math.round(perf_hooks_1.performance.now() - this.startTimeMs)}ms`;
179
179
  headers = response.headers.raw();
180
180
  for (let [key, value] of Object.entries(headers)) {
181
181
  headers[key] = Array.isArray(value) ? value[0] : value;
@@ -206,14 +206,14 @@ class RestIntegration {
206
206
  // Add pagination params to query string if required
207
207
  if ((pagination === null || pagination === void 0 ? void 0 : pagination.location) === "query" && paginationValues) {
208
208
  const { pageParam, sizeParam } = pagination;
209
- const params = new URLSearchParams();
209
+ const params = new url_1.URLSearchParams();
210
210
  // Append page number or cursor param if configured
211
211
  if (pageParam && paginationValues.page != null) {
212
212
  params.append(pageParam, paginationValues.page);
213
213
  }
214
214
  // Append page size param if configured
215
215
  if (sizeParam && paginationValues.limit != null) {
216
- params.append(sizeParam, paginationValues.limit);
216
+ params.append(sizeParam, String(paginationValues.limit));
217
217
  }
218
218
  // Prepend query string with pagination params
219
219
  let paginationString = params.toString();
@@ -269,7 +269,7 @@ class RestIntegration {
269
269
  input.body = string;
270
270
  break;
271
271
  case BodyTypes.ENCODED:
272
- const params = new URLSearchParams();
272
+ const params = new url_1.URLSearchParams();
273
273
  for (let [key, value] of Object.entries(object)) {
274
274
  params.append(key, value);
275
275
  }
@@ -279,7 +279,7 @@ class RestIntegration {
279
279
  input.body = params;
280
280
  break;
281
281
  case BodyTypes.FORM_DATA:
282
- const form = new FormData();
282
+ const form = new form_data_1.default();
283
283
  for (let [key, value] of Object.entries(object)) {
284
284
  form.append(key, value);
285
285
  }
@@ -355,9 +355,9 @@ class RestIntegration {
355
355
  // https://github.com/nodejs/node/issues/43798
356
356
  input.extraHttpOptions = { insecureHTTPParser: true };
357
357
  }
358
- this.startTimeMs = performance.now();
358
+ this.startTimeMs = perf_hooks_1.performance.now();
359
359
  const url = this.getUrl(path, queryString, pagination, paginationValues);
360
- const response = yield fetch(url, input);
360
+ const response = yield (0, node_fetch_1.default)(url, input);
361
361
  return yield this.parseResponse(response, pagination);
362
362
  });
363
363
  }
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.42",
4
+ "version": "2.2.12-alpha.44",
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.42",
47
- "@budibase/client": "2.2.12-alpha.42",
48
- "@budibase/pro": "2.2.12-alpha.42",
49
- "@budibase/string-templates": "2.2.12-alpha.42",
50
- "@budibase/types": "2.2.12-alpha.42",
46
+ "@budibase/backend-core": "2.2.12-alpha.44",
47
+ "@budibase/client": "2.2.12-alpha.44",
48
+ "@budibase/pro": "2.2.12-alpha.44",
49
+ "@budibase/string-templates": "2.2.12-alpha.44",
50
+ "@budibase/types": "2.2.12-alpha.44",
51
51
  "@bull-board/api": "3.7.0",
52
52
  "@bull-board/koa": "3.9.4",
53
53
  "@elastic/elasticsearch": "7.10.0",
@@ -0,0 +1,113 @@
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
+ const USER_PREFIX = "user";
21
+ function enrichDatasourceWithValues(datasource) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const cloned = (0, fp_1.cloneDeep)(datasource);
24
+ const env = yield (0, utils_1.getEnvironmentVariables)();
25
+ const processed = (0, string_templates_1.processObjectSync)(cloned, { env }, { onlyFound: true });
26
+ return {
27
+ datasource: processed,
28
+ envVars: env,
29
+ };
30
+ });
31
+ }
32
+ function enrich(datasource) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const { datasource: response } = yield enrichDatasourceWithValues(datasource);
35
+ return response;
36
+ });
37
+ }
38
+ exports.enrich = enrich;
39
+ function get(datasourceId, opts) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const appDb = backend_core_1.context.getAppDB();
42
+ const datasource = yield appDb.get(datasourceId);
43
+ if (opts === null || opts === void 0 ? void 0 : opts.enriched) {
44
+ return (yield enrichDatasourceWithValues(datasource)).datasource;
45
+ }
46
+ else {
47
+ return datasource;
48
+ }
49
+ });
50
+ }
51
+ exports.get = get;
52
+ function getWithEnvVars(datasourceId) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ const appDb = backend_core_1.context.getAppDB();
55
+ const datasource = yield appDb.get(datasourceId);
56
+ return enrichDatasourceWithValues(datasource);
57
+ });
58
+ }
59
+ exports.getWithEnvVars = getWithEnvVars;
60
+ function removeSecrets(datasources) {
61
+ var _a, _b;
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const definitions = yield (0, integrations_1.getDefinitions)();
64
+ for (let datasource of datasources) {
65
+ const schema = definitions[datasource.source];
66
+ if (datasource.config) {
67
+ // strip secrets from response, so they don't show in the network request
68
+ if (datasource.config.auth) {
69
+ delete datasource.config.auth;
70
+ }
71
+ // remove passwords
72
+ for (let key of Object.keys(datasource.config)) {
73
+ if (typeof datasource.config[key] !== "string") {
74
+ continue;
75
+ }
76
+ const blocks = (0, string_templates_1.findHBSBlocks)(datasource.config[key]);
77
+ const usesEnvVars = blocks.find(block => block.includes(ENV_VAR_PREFIX)) != null;
78
+ if (!usesEnvVars &&
79
+ ((_b = (_a = schema.datasource) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.type) === types_1.DatasourceFieldType.PASSWORD) {
80
+ datasource.config[key] = types_1.PASSWORD_REPLACEMENT;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ return datasources;
86
+ });
87
+ }
88
+ exports.removeSecrets = removeSecrets;
89
+ function removeSecretSingle(datasource) {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ return (yield removeSecrets([datasource]))[0];
92
+ });
93
+ }
94
+ exports.removeSecretSingle = removeSecretSingle;
95
+ function mergeConfigs(update, old) {
96
+ var _a, _b;
97
+ if (!update.config) {
98
+ return update;
99
+ }
100
+ for (let [key, value] of Object.entries(update.config)) {
101
+ if (value !== types_1.PASSWORD_REPLACEMENT) {
102
+ continue;
103
+ }
104
+ if ((_a = old.config) === null || _a === void 0 ? void 0 : _a[key]) {
105
+ update.config[key] = (_b = old.config) === null || _b === void 0 ? void 0 : _b[key];
106
+ }
107
+ else {
108
+ delete update.config[key];
109
+ }
110
+ }
111
+ return update;
112
+ }
113
+ 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
  }
package/dist/sdk/index.js CHANGED
@@ -7,6 +7,8 @@ const backups_1 = __importDefault(require("./app/backups"));
7
7
  const tables_1 = __importDefault(require("./app/tables"));
8
8
  const automations_1 = __importDefault(require("./app/automations"));
9
9
  const applications_1 = __importDefault(require("./app/applications"));
10
+ const datasources_1 = __importDefault(require("./app/datasources"));
11
+ const queries_1 = __importDefault(require("./app/queries"));
10
12
  const rows_1 = __importDefault(require("./app/rows"));
11
13
  const users_1 = __importDefault(require("./users"));
12
14
  const sdk = {
@@ -16,6 +18,8 @@ const sdk = {
16
18
  applications: applications_1.default,
17
19
  rows: rows_1.default,
18
20
  users: users_1.default,
21
+ datasources: datasources_1.default,
22
+ queries: queries_1.default,
19
23
  };
20
24
  // default export for TS
21
25
  exports.default = sdk;
@@ -0,0 +1,29 @@
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.getEnvironmentVariables = void 0;
13
+ const pro_1 = require("@budibase/pro");
14
+ const backend_core_1 = require("@budibase/backend-core");
15
+ const types_1 = require("@budibase/types");
16
+ function getEnvironmentVariables() {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ let envVars = backend_core_1.context.getEnvironmentVariables();
19
+ if (!envVars) {
20
+ const appId = backend_core_1.context.getAppId();
21
+ const appEnv = backend_core_1.db.isDevAppID(appId)
22
+ ? types_1.AppEnvironment.DEVELOPMENT
23
+ : types_1.AppEnvironment.PRODUCTION;
24
+ envVars = yield pro_1.environmentVariables.fetchValues(appEnv);
25
+ }
26
+ return envVars;
27
+ });
28
+ }
29
+ exports.getEnvironmentVariables = getEnvironmentVariables;
@@ -50,6 +50,7 @@ const types_1 = require("@budibase/types");
50
50
  const backend_core_1 = require("@budibase/backend-core");
51
51
  const string_templates_1 = require("@budibase/string-templates");
52
52
  const fp_1 = require("lodash/fp");
53
+ const sdkUtils = __importStar(require("../sdk/utils"));
53
54
  const environment_1 = __importDefault(require("../environment"));
54
55
  const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId;
55
56
  const LOOP_STEP_ID = actions.ACTION_DEFINITIONS.LOOP.stepId;
@@ -214,6 +215,8 @@ class Orchestrator {
214
215
  execute() {
215
216
  var _a;
216
217
  return __awaiter(this, void 0, void 0, function* () {
218
+ // this will retrieve from context created at start of thread
219
+ this._context.env = yield sdkUtils.getEnvironmentVariables();
217
220
  let automation = this._automation;
218
221
  let stopped = false;
219
222
  let loopStep = undefined;
@@ -424,8 +427,12 @@ const removeStalled = (job) => __awaiter(void 0, void 0, void 0, function* () {
424
427
  throw new Error("Unable to execute, event doesn't contain app ID.");
425
428
  }
426
429
  yield backend_core_1.context.doInAppContext(appId, () => __awaiter(void 0, void 0, void 0, function* () {
427
- const automationOrchestrator = new Orchestrator(job);
428
- yield automationOrchestrator.stopCron("stalled");
430
+ const envVars = yield sdkUtils.getEnvironmentVariables();
431
+ // put into automation thread for whole context
432
+ yield backend_core_1.context.doInEnvironmentContext(envVars, () => __awaiter(void 0, void 0, void 0, function* () {
433
+ const automationOrchestrator = new Orchestrator(job);
434
+ yield automationOrchestrator.stopCron("stalled");
435
+ }));
429
436
  }));
430
437
  });
431
438
  exports.removeStalled = removeStalled;