@budibase/server 2.6.22 → 2.6.24-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/.dockerignore +7 -6
  2. package/Dockerfile +16 -8
  3. package/builder/assets/index.50121870.js +1869 -0
  4. package/builder/assets/index.a86e2071.css +6 -0
  5. package/builder/index.html +2 -2
  6. package/client/manifest.json +5229 -0
  7. package/dist/automation.js +32576 -0
  8. package/dist/automation.js.map +7 -0
  9. package/dist/index.js +45065 -13
  10. package/dist/index.js.map +7 -0
  11. package/dist/query.js +24462 -0
  12. package/dist/query.js.map +7 -0
  13. package/jest.config.ts +6 -3
  14. package/nodemon.json +8 -4
  15. package/package.json +35 -16
  16. package/pm2.config.js +1 -1
  17. package/scripts/build.js +48 -0
  18. package/src/api/controllers/application.ts +21 -22
  19. package/src/api/controllers/automation.ts +37 -9
  20. package/src/api/controllers/datasource.ts +114 -49
  21. package/src/api/controllers/deploy/index.ts +1 -0
  22. package/src/api/controllers/integration.ts +3 -3
  23. package/src/api/controllers/plugin/index.ts +1 -1
  24. package/src/api/controllers/row/external.ts +39 -15
  25. package/src/api/controllers/row/index.ts +18 -24
  26. package/src/api/controllers/row/internal.ts +1 -1
  27. package/src/api/controllers/row/staticFormula.ts +6 -1
  28. package/src/api/controllers/row/utils.ts +12 -0
  29. package/src/api/controllers/static/index.ts +3 -3
  30. package/src/api/controllers/table/index.ts +3 -0
  31. package/src/api/controllers/table/internal.ts +2 -6
  32. package/src/api/controllers/table/utils.ts +32 -1
  33. package/src/api/controllers/view/index.ts +5 -5
  34. package/src/api/controllers/webhook.ts +33 -9
  35. package/src/api/routes/application.ts +5 -0
  36. package/src/api/routes/automation.ts +0 -1
  37. package/src/api/routes/datasource.ts +10 -0
  38. package/src/api/routes/static.ts +3 -1
  39. package/src/api/routes/tests/{automation.spec.js → automation.spec.ts} +106 -31
  40. package/src/api/routes/tests/datasource.spec.ts +1 -1
  41. package/src/api/routes/tests/view.spec.js +4 -3
  42. package/src/api/routes/tests/{webhook.spec.js → webhook.spec.ts} +33 -11
  43. package/src/app.ts +0 -1
  44. package/src/automations/actions.ts +8 -0
  45. package/src/automations/logging/index.ts +21 -0
  46. package/src/automations/steps/bash.ts +4 -0
  47. package/src/automations/steps/collect.ts +58 -0
  48. package/src/automations/steps/createRow.ts +4 -0
  49. package/src/automations/steps/delay.ts +1 -0
  50. package/src/automations/steps/deleteRow.ts +4 -0
  51. package/src/automations/steps/discord.ts +4 -0
  52. package/src/automations/steps/executeQuery.ts +4 -0
  53. package/src/automations/steps/executeScript.ts +4 -0
  54. package/src/automations/steps/filter.ts +1 -0
  55. package/src/automations/steps/loop.ts +1 -0
  56. package/src/automations/steps/make.ts +22 -1
  57. package/src/automations/steps/openai.ts +106 -0
  58. package/src/automations/steps/outgoingWebhook.ts +4 -0
  59. package/src/automations/steps/queryRows.ts +4 -0
  60. package/src/automations/steps/sendSmtpEmail.ts +4 -0
  61. package/src/automations/steps/serverLog.ts +4 -0
  62. package/src/automations/steps/slack.ts +4 -0
  63. package/src/automations/steps/updateRow.ts +4 -0
  64. package/src/automations/steps/zapier.ts +22 -1
  65. package/src/automations/tests/make.spec.ts +54 -0
  66. package/src/automations/tests/openai.spec.ts +86 -0
  67. package/src/automations/tests/zapier.spec.ts +56 -0
  68. package/src/automations/triggers.ts +3 -2
  69. package/src/constants/index.ts +17 -16
  70. package/src/db/dynamoClient.ts +1 -1
  71. package/src/db/inMemoryView.ts +1 -0
  72. package/src/db/linkedRows/index.ts +5 -3
  73. package/src/environment.ts +3 -0
  74. package/src/integration-test/postgres.spec.ts +47 -5
  75. package/src/integrations/airtable.ts +33 -4
  76. package/src/integrations/arangodb.ts +20 -2
  77. package/src/integrations/base/sqlTable.ts +0 -1
  78. package/src/integrations/couchdb.ts +20 -4
  79. package/src/integrations/dynamodb.ts +36 -5
  80. package/src/integrations/elasticsearch.ts +18 -1
  81. package/src/integrations/firebase.ts +17 -0
  82. package/src/integrations/googlesheets.ts +66 -5
  83. package/src/integrations/index.ts +12 -7
  84. package/src/integrations/microsoftSqlServer.ts +33 -1
  85. package/src/integrations/mongodb.ts +18 -0
  86. package/src/integrations/mysql.ts +53 -26
  87. package/src/integrations/oracle.ts +38 -6
  88. package/src/integrations/postgres.ts +47 -12
  89. package/src/integrations/redis.ts +35 -4
  90. package/src/integrations/s3.ts +21 -3
  91. package/src/integrations/snowflake.ts +25 -1
  92. package/src/integrations/tests/googlesheets.spec.ts +41 -9
  93. package/src/middleware/builder.ts +26 -18
  94. package/src/migrations/functions/backfill/app/queries.ts +1 -1
  95. package/src/sdk/app/automations/index.ts +2 -0
  96. package/src/sdk/app/automations/utils.ts +7 -0
  97. package/src/sdk/app/datasources/datasources.ts +7 -1
  98. package/src/sdk/plugins/plugins.ts +1 -1
  99. package/src/startup.ts +2 -0
  100. package/src/tests/utilities/TestConfiguration.ts +4 -2
  101. package/src/tests/utilities/structures.ts +42 -0
  102. package/src/threads/automation.ts +91 -23
  103. package/src/threads/index.ts +9 -3
  104. package/src/threads/utils.ts +2 -0
  105. package/src/utilities/fileSystem/app.ts +14 -4
  106. package/src/utilities/fileSystem/clientLibrary.ts +8 -3
  107. package/src/utilities/fileSystem/filesystem.ts +3 -1
  108. package/src/utilities/redis.ts +25 -3
  109. package/src/utilities/rowProcessor/index.ts +4 -1
  110. package/src/utilities/rowProcessor/map.ts +1 -1
  111. package/src/websockets/builder.ts +95 -0
  112. package/src/websockets/client.ts +2 -2
  113. package/src/websockets/grid.ts +44 -44
  114. package/src/websockets/index.ts +13 -6
  115. package/src/websockets/websocket.ts +211 -7
  116. package/tsconfig.build.json +9 -1
  117. package/tsconfig.json +1 -14
  118. package/builder/assets/index.86c992bf.css +0 -6
  119. package/builder/assets/index.c16c35ca.js +0 -1794
  120. package/dist/api/controllers/analytics.js +0 -46
  121. package/dist/api/controllers/apikeys.js +0 -72
  122. package/dist/api/controllers/application.js +0 -574
  123. package/dist/api/controllers/auth.js +0 -80
  124. package/dist/api/controllers/automation.js +0 -303
  125. package/dist/api/controllers/backup.js +0 -37
  126. package/dist/api/controllers/component.js +0 -59
  127. package/dist/api/controllers/datasource.js +0 -306
  128. package/dist/api/controllers/deploy/Deployment.js +0 -53
  129. package/dist/api/controllers/deploy/index.js +0 -198
  130. package/dist/api/controllers/dev.js +0 -146
  131. package/dist/api/controllers/integration.js +0 -28
  132. package/dist/api/controllers/layout.js +0 -49
  133. package/dist/api/controllers/metadata.js +0 -63
  134. package/dist/api/controllers/migrations.js +0 -29
  135. package/dist/api/controllers/ops.js +0 -40
  136. package/dist/api/controllers/permission.js +0 -162
  137. package/dist/api/controllers/plugin/file.js +0 -24
  138. package/dist/api/controllers/plugin/github.js +0 -69
  139. package/dist/api/controllers/plugin/index.js +0 -112
  140. package/dist/api/controllers/plugin/npm.js +0 -58
  141. package/dist/api/controllers/plugin/uploaders.js +0 -11
  142. package/dist/api/controllers/plugin/url.js +0 -24
  143. package/dist/api/controllers/plugin/utils.js +0 -27
  144. package/dist/api/controllers/public/applications.js +0 -146
  145. package/dist/api/controllers/public/mapping/applications.js +0 -29
  146. package/dist/api/controllers/public/mapping/index.js +0 -11
  147. package/dist/api/controllers/public/mapping/queries.js +0 -36
  148. package/dist/api/controllers/public/mapping/rows.js +0 -24
  149. package/dist/api/controllers/public/mapping/tables.js +0 -23
  150. package/dist/api/controllers/public/mapping/types.js +0 -2
  151. package/dist/api/controllers/public/mapping/users.js +0 -29
  152. package/dist/api/controllers/public/metrics.js +0 -113
  153. package/dist/api/controllers/public/queries.js +0 -58
  154. package/dist/api/controllers/public/rows.js +0 -120
  155. package/dist/api/controllers/public/tables.js +0 -95
  156. package/dist/api/controllers/public/users.js +0 -93
  157. package/dist/api/controllers/public/utils.js +0 -56
  158. package/dist/api/controllers/query/import/index.js +0 -87
  159. package/dist/api/controllers/query/import/sources/base/index.js +0 -75
  160. package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
  161. package/dist/api/controllers/query/import/sources/curl.js +0 -99
  162. package/dist/api/controllers/query/import/sources/openapi2.js +0 -145
  163. package/dist/api/controllers/query/import/sources/openapi3.js +0 -177
  164. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  165. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  166. package/dist/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json +0 -253
  167. package/dist/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json +0 -1225
  168. package/dist/api/controllers/query/index.js +0 -299
  169. package/dist/api/controllers/query/validation.js +0 -53
  170. package/dist/api/controllers/role.js +0 -109
  171. package/dist/api/controllers/routing.js +0 -105
  172. package/dist/api/controllers/row/ExternalRequest.js +0 -683
  173. package/dist/api/controllers/row/external.js +0 -339
  174. package/dist/api/controllers/row/index.js +0 -203
  175. package/dist/api/controllers/row/internal.js +0 -509
  176. package/dist/api/controllers/row/internalSearch.js +0 -28
  177. package/dist/api/controllers/row/staticFormula.js +0 -165
  178. package/dist/api/controllers/row/utils.js +0 -183
  179. package/dist/api/controllers/screen.js +0 -110
  180. package/dist/api/controllers/script.js +0 -30
  181. package/dist/api/controllers/static/index.js +0 -268
  182. package/dist/api/controllers/table/bulkFormula.js +0 -173
  183. package/dist/api/controllers/table/external.js +0 -279
  184. package/dist/api/controllers/table/index.js +0 -179
  185. package/dist/api/controllers/table/internal.js +0 -197
  186. package/dist/api/controllers/table/utils.js +0 -379
  187. package/dist/api/controllers/templates.js +0 -56
  188. package/dist/api/controllers/user.js +0 -124
  189. package/dist/api/controllers/view/exporters.js +0 -46
  190. package/dist/api/controllers/view/index.js +0 -193
  191. package/dist/api/controllers/view/utils.js +0 -177
  192. package/dist/api/controllers/view/viewBuilder.js +0 -158
  193. package/dist/api/controllers/webhook.js +0 -134
  194. package/dist/api/index.js +0 -55
  195. package/dist/api/routes/analytics.js +0 -34
  196. package/dist/api/routes/apikeys.js +0 -37
  197. package/dist/api/routes/application.js +0 -48
  198. package/dist/api/routes/auth.js +0 -33
  199. package/dist/api/routes/automation.js +0 -50
  200. package/dist/api/routes/backup.js +0 -35
  201. package/dist/api/routes/component.js +0 -35
  202. package/dist/api/routes/datasource.js +0 -43
  203. package/dist/api/routes/deploy.js +0 -37
  204. package/dist/api/routes/dev.js +0 -49
  205. package/dist/api/routes/index.js +0 -75
  206. package/dist/api/routes/integration.js +0 -37
  207. package/dist/api/routes/layout.js +0 -37
  208. package/dist/api/routes/metadata.js +0 -40
  209. package/dist/api/routes/migrations.js +0 -36
  210. package/dist/api/routes/ops.js +0 -52
  211. package/dist/api/routes/permission.js +0 -44
  212. package/dist/api/routes/plugin.js +0 -39
  213. package/dist/api/routes/public/applications.js +0 -174
  214. package/dist/api/routes/public/index.js +0 -140
  215. package/dist/api/routes/public/metrics.js +0 -30
  216. package/dist/api/routes/public/middleware/mapper.js +0 -97
  217. package/dist/api/routes/public/queries.js +0 -72
  218. package/dist/api/routes/public/rows.js +0 -158
  219. package/dist/api/routes/public/tables.js +0 -152
  220. package/dist/api/routes/public/users.js +0 -135
  221. package/dist/api/routes/public/utils/Endpoint.js +0 -36
  222. package/dist/api/routes/query.js +0 -47
  223. package/dist/api/routes/role.js +0 -40
  224. package/dist/api/routes/routing.js +0 -39
  225. package/dist/api/routes/row.js +0 -239
  226. package/dist/api/routes/screen.js +0 -39
  227. package/dist/api/routes/script.js +0 -35
  228. package/dist/api/routes/static.js +0 -80
  229. package/dist/api/routes/table.js +0 -163
  230. package/dist/api/routes/templates.js +0 -37
  231. package/dist/api/routes/user.js +0 -43
  232. package/dist/api/routes/utils/validators.js +0 -238
  233. package/dist/api/routes/view.js +0 -42
  234. package/dist/api/routes/webhook.js +0 -43
  235. package/dist/app.js +0 -132
  236. package/dist/automations/actions.js +0 -137
  237. package/dist/automations/automationUtils.js +0 -173
  238. package/dist/automations/bullboard.js +0 -71
  239. package/dist/automations/index.js +0 -43
  240. package/dist/automations/logging/index.js +0 -53
  241. package/dist/automations/steps/bash.js +0 -111
  242. package/dist/automations/steps/createRow.js +0 -108
  243. package/dist/automations/steps/delay.js +0 -53
  244. package/dist/automations/steps/deleteRow.js +0 -96
  245. package/dist/automations/steps/discord.js +0 -116
  246. package/dist/automations/steps/executeQuery.js +0 -134
  247. package/dist/automations/steps/executeScript.js +0 -106
  248. package/dist/automations/steps/filter.js +0 -112
  249. package/dist/automations/steps/loop.js +0 -54
  250. package/dist/automations/steps/make.js +0 -120
  251. package/dist/automations/steps/outgoingWebhook.js +0 -166
  252. package/dist/automations/steps/queryRows.js +0 -220
  253. package/dist/automations/steps/sendSmtpEmail.js +0 -115
  254. package/dist/automations/steps/serverLog.js +0 -65
  255. package/dist/automations/steps/slack.js +0 -98
  256. package/dist/automations/steps/updateRow.js +0 -144
  257. package/dist/automations/steps/utils.js +0 -56
  258. package/dist/automations/steps/zapier.js +0 -117
  259. package/dist/automations/triggerInfo/app.js +0 -36
  260. package/dist/automations/triggerInfo/cron.js +0 -35
  261. package/dist/automations/triggerInfo/index.js +0 -40
  262. package/dist/automations/triggerInfo/rowDeleted.js +0 -36
  263. package/dist/automations/triggerInfo/rowSaved.js +0 -44
  264. package/dist/automations/triggerInfo/rowUpdated.js +0 -44
  265. package/dist/automations/triggerInfo/webhook.js +0 -40
  266. package/dist/automations/triggers.js +0 -181
  267. package/dist/automations/utils.js +0 -275
  268. package/dist/constants/definitions.js +0 -2
  269. package/dist/constants/index.js +0 -181
  270. package/dist/constants/layouts.js +0 -148
  271. package/dist/constants/screens.js +0 -51
  272. package/dist/db/defaultData/datasource_bb_default.js +0 -574
  273. package/dist/db/defaultData/employeeImport.js +0 -155
  274. package/dist/db/defaultData/expensesImport.js +0 -117
  275. package/dist/db/defaultData/inventoryImport.js +0 -109
  276. package/dist/db/defaultData/jobsImport.js +0 -152
  277. package/dist/db/dynamoClient.js +0 -124
  278. package/dist/db/inMemoryView.js +0 -62
  279. package/dist/db/index.js +0 -43
  280. package/dist/db/linkedRows/LinkController.js +0 -392
  281. package/dist/db/linkedRows/LinkDocument.js +0 -33
  282. package/dist/db/linkedRows/index.js +0 -206
  283. package/dist/db/linkedRows/linkUtils.js +0 -131
  284. package/dist/db/newid.js +0 -7
  285. package/dist/db/utils.js +0 -248
  286. package/dist/db/views/staticViews.js +0 -144
  287. package/dist/ddApm.js +0 -11
  288. package/dist/definitions/automations.js +0 -8
  289. package/dist/definitions/common.js +0 -2
  290. package/dist/definitions/datasource.js +0 -7
  291. package/dist/definitions/openapi.js +0 -6
  292. package/dist/environment.js +0 -109
  293. package/dist/events/AutomationEmitter.js +0 -53
  294. package/dist/events/BudibaseEmitter.js +0 -25
  295. package/dist/events/docUpdates/index.js +0 -17
  296. package/dist/events/docUpdates/processors.js +0 -18
  297. package/dist/events/docUpdates/syncUsers.js +0 -49
  298. package/dist/events/index.js +0 -11
  299. package/dist/events/utils.js +0 -43
  300. package/dist/integrations/airtable.js +0 -147
  301. package/dist/integrations/arangodb.js +0 -103
  302. package/dist/integrations/base/query.js +0 -32
  303. package/dist/integrations/base/sql.js +0 -600
  304. package/dist/integrations/base/sqlTable.js +0 -167
  305. package/dist/integrations/base/types.js +0 -2
  306. package/dist/integrations/couchdb.js +0 -125
  307. package/dist/integrations/dynamodb.js +0 -194
  308. package/dist/integrations/elasticsearch.js +0 -186
  309. package/dist/integrations/firebase.js +0 -174
  310. package/dist/integrations/googlesheets.js +0 -455
  311. package/dist/integrations/index.js +0 -135
  312. package/dist/integrations/microsoftSqlServer.js +0 -273
  313. package/dist/integrations/mongodb.js +0 -614
  314. package/dist/integrations/mysql.js +0 -256
  315. package/dist/integrations/oracle.js +0 -375
  316. package/dist/integrations/postgres.js +0 -300
  317. package/dist/integrations/queries/sql.js +0 -84
  318. package/dist/integrations/redis.js +0 -168
  319. package/dist/integrations/rest.js +0 -400
  320. package/dist/integrations/s3.js +0 -237
  321. package/dist/integrations/snowflake.js +0 -99
  322. package/dist/integrations/utils.js +0 -295
  323. package/dist/middleware/appInfo.js +0 -22
  324. package/dist/middleware/authorized.js +0 -112
  325. package/dist/middleware/builder.js +0 -93
  326. package/dist/middleware/currentapp.js +0 -103
  327. package/dist/middleware/joi-validator.js +0 -43
  328. package/dist/middleware/publicApi.js +0 -25
  329. package/dist/middleware/resourceId.js +0 -59
  330. package/dist/middleware/selfhost.js +0 -24
  331. package/dist/middleware/utils.js +0 -8
  332. package/dist/migrations/functions/appUrls.js +0 -42
  333. package/dist/migrations/functions/backfill/app/automations.js +0 -31
  334. package/dist/migrations/functions/backfill/app/datasources.js +0 -28
  335. package/dist/migrations/functions/backfill/app/layouts.js +0 -33
  336. package/dist/migrations/functions/backfill/app/queries.js +0 -50
  337. package/dist/migrations/functions/backfill/app/roles.js +0 -28
  338. package/dist/migrations/functions/backfill/app/screens.js +0 -28
  339. package/dist/migrations/functions/backfill/app/tables.js +0 -37
  340. package/dist/migrations/functions/backfill/app.js +0 -176
  341. package/dist/migrations/functions/backfill/global/configs.js +0 -67
  342. package/dist/migrations/functions/backfill/global/quotas.js +0 -60
  343. package/dist/migrations/functions/backfill/global/users.js +0 -50
  344. package/dist/migrations/functions/backfill/global.js +0 -205
  345. package/dist/migrations/functions/backfill/index.js +0 -32
  346. package/dist/migrations/functions/backfill/installation.js +0 -80
  347. package/dist/migrations/functions/syncQuotas.js +0 -52
  348. package/dist/migrations/functions/tableSettings.js +0 -130
  349. package/dist/migrations/functions/usageQuotas/index.js +0 -16
  350. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -24
  351. package/dist/migrations/functions/usageQuotas/syncPlugins.js +0 -23
  352. package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
  353. package/dist/migrations/functions/usageQuotas/syncUsers.js +0 -21
  354. package/dist/migrations/functions/userEmailViewCasing.js +0 -24
  355. package/dist/migrations/index.js +0 -111
  356. package/dist/migrations/tests/helpers.js +0 -72
  357. package/dist/migrations/tests/structures.js +0 -37
  358. package/dist/sdk/app/applications/index.js +0 -28
  359. package/dist/sdk/app/applications/sync.js +0 -164
  360. package/dist/sdk/app/applications/utils.js +0 -21
  361. package/dist/sdk/app/automations/index.js +0 -29
  362. package/dist/sdk/app/automations/webhook.js +0 -54
  363. package/dist/sdk/app/backups/constants.js +0 -6
  364. package/dist/sdk/app/backups/exports.js +0 -160
  365. package/dist/sdk/app/backups/imports.js +0 -170
  366. package/dist/sdk/app/backups/index.js +0 -29
  367. package/dist/sdk/app/backups/statistics.js +0 -73
  368. package/dist/sdk/app/datasources/datasources.js +0 -166
  369. package/dist/sdk/app/datasources/index.js +0 -27
  370. package/dist/sdk/app/queries/index.js +0 -27
  371. package/dist/sdk/app/queries/queries.js +0 -60
  372. package/dist/sdk/app/rows/attachments.js +0 -61
  373. package/dist/sdk/app/rows/index.js +0 -28
  374. package/dist/sdk/app/rows/rows.js +0 -30
  375. package/dist/sdk/app/tables/index.js +0 -65
  376. package/dist/sdk/index.js +0 -27
  377. package/dist/sdk/plugins/index.js +0 -27
  378. package/dist/sdk/plugins/plugins.js +0 -53
  379. package/dist/sdk/users/index.js +0 -27
  380. package/dist/sdk/users/utils.js +0 -94
  381. package/dist/sdk/utils/index.js +0 -29
  382. package/dist/startup.js +0 -158
  383. package/dist/threads/automation.js +0 -450
  384. package/dist/threads/definitions.js +0 -2
  385. package/dist/threads/index.js +0 -140
  386. package/dist/threads/query.js +0 -265
  387. package/dist/threads/utils.js +0 -120
  388. package/dist/tsconfig.build.tsbuildinfo +0 -1
  389. package/dist/utilities/appDirectoryTemplate/package.json +0 -10
  390. package/dist/utilities/budibaseDir.js +0 -5
  391. package/dist/utilities/centralPath.js +0 -27
  392. package/dist/utilities/csv.js +0 -33
  393. package/dist/utilities/fileSystem/app.js +0 -88
  394. package/dist/utilities/fileSystem/clientLibrary.js +0 -138
  395. package/dist/utilities/fileSystem/filesystem.js +0 -180
  396. package/dist/utilities/fileSystem/index.js +0 -21
  397. package/dist/utilities/fileSystem/plugin.js +0 -76
  398. package/dist/utilities/fileSystem/processor.js +0 -34
  399. package/dist/utilities/fileSystem/template.js +0 -47
  400. package/dist/utilities/global.js +0 -146
  401. package/dist/utilities/index.js +0 -143
  402. package/dist/utilities/redis.js +0 -117
  403. package/dist/utilities/retry.js +0 -30
  404. package/dist/utilities/routing/index.js +0 -39
  405. package/dist/utilities/rowProcessor/index.js +0 -282
  406. package/dist/utilities/rowProcessor/map.js +0 -116
  407. package/dist/utilities/rowProcessor/utils.js +0 -87
  408. package/dist/utilities/schema.js +0 -112
  409. package/dist/utilities/scriptRunner.js +0 -26
  410. package/dist/utilities/security.js +0 -57
  411. package/dist/utilities/statusCodes.js +0 -9
  412. package/dist/utilities/usageQuota/rows.js +0 -88
  413. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  414. package/dist/utilities/users.js +0 -57
  415. package/dist/utilities/workerRequests.js +0 -171
  416. package/dist/watch.js +0 -53
  417. package/dist/websockets/client.js +0 -14
  418. package/dist/websockets/grid.js +0 -60
  419. package/dist/websockets/index.js +0 -17
  420. package/dist/websockets/websocket.js +0 -78
  421. package/src/automations/tests/zapier.spec.js +0 -27
  422. /package/dist/{api/controllers/static/templates/BudibaseApp.svelte → BudibaseApp-Y5NZEDTC.svelte} +0 -0
  423. /package/dist/{api/controllers/static/templates/app.hbs → app.hbs} +0 -0
  424. /package/dist/{api/controllers/static/templates/preview.hbs → preview.hbs} +0 -0
@@ -71,6 +71,7 @@ const environment = {
71
71
  BB_ADMIN_USER_EMAIL: process.env.BB_ADMIN_USER_EMAIL,
72
72
  BB_ADMIN_USER_PASSWORD: process.env.BB_ADMIN_USER_PASSWORD,
73
73
  PLUGINS_DIR: process.env.PLUGINS_DIR || "/plugins",
74
+ OPENAI_API_KEY: process.env.OPENAI_API_KEY,
74
75
  // flags
75
76
  ALLOW_DEV_AUTOMATIONS: process.env.ALLOW_DEV_AUTOMATIONS,
76
77
  DISABLE_THREADING: process.env.DISABLE_THREADING,
@@ -79,6 +80,7 @@ const environment = {
79
80
  ENABLE_ANALYTICS: process.env.ENABLE_ANALYTICS,
80
81
  SELF_HOSTED: process.env.SELF_HOSTED,
81
82
  HTTP_MB_LIMIT: process.env.HTTP_MB_LIMIT,
83
+ FORKED_PROCESS_NAME: process.env.FORKED_PROCESS_NAME || "main",
82
84
  // old
83
85
  CLIENT_ID: process.env.CLIENT_ID,
84
86
  _set(key: string, value: any) {
@@ -96,6 +98,7 @@ const environment = {
96
98
  isInThread: () => {
97
99
  return process.env.FORKED_PROCESS
98
100
  },
101
+ TOP_LEVEL_PATH: process.env.TOP_LEVEL_PATH,
99
102
  }
100
103
 
101
104
  // threading can cause memory issues with node-ts in development
@@ -19,15 +19,15 @@ import _ from "lodash"
19
19
  import { generator } from "@budibase/backend-core/tests"
20
20
  import { utils } from "@budibase/backend-core"
21
21
  import { GenericContainer } from "testcontainers"
22
- import { generateRowIdField } from "../integrations/utils"
23
22
 
24
23
  const config = setup.getConfig()!
25
24
 
26
25
  jest.setTimeout(30000)
27
26
 
28
27
  jest.unmock("pg")
28
+ jest.mock("../websockets")
29
29
 
30
- describe("row api - postgres", () => {
30
+ describe("postgres integrations", () => {
31
31
  let makeRequest: MakeRequestResponse,
32
32
  postgresDatasource: Datasource,
33
33
  primaryPostgresTable: Table,
@@ -53,8 +53,8 @@ describe("row api - postgres", () => {
53
53
  makeRequest = generateMakeRequest(apiKey, true)
54
54
  })
55
55
 
56
- beforeEach(async () => {
57
- postgresDatasource = await config.createDatasource({
56
+ function pgDatasourceConfig() {
57
+ return {
58
58
  datasource: {
59
59
  type: "datasource",
60
60
  source: SourceName.POSTGRES,
@@ -71,7 +71,11 @@ describe("row api - postgres", () => {
71
71
  ca: false,
72
72
  },
73
73
  },
74
- })
74
+ }
75
+ }
76
+
77
+ beforeEach(async () => {
78
+ postgresDatasource = await config.createDatasource(pgDatasourceConfig())
75
79
 
76
80
  async function createAuxTable(prefix: string) {
77
81
  return await config.createTable({
@@ -1025,4 +1029,42 @@ describe("row api - postgres", () => {
1025
1029
  })
1026
1030
  })
1027
1031
  })
1032
+
1033
+ describe("POST /api/datasources/verify", () => {
1034
+ it("should be able to verify the connection", async () => {
1035
+ const config = pgDatasourceConfig()
1036
+ const response = await makeRequest(
1037
+ "post",
1038
+ "/api/datasources/verify",
1039
+ config
1040
+ )
1041
+ expect(response.status).toBe(200)
1042
+ expect(response.body.connected).toBe(true)
1043
+ })
1044
+
1045
+ it("should state an invalid datasource cannot connect", async () => {
1046
+ const config = pgDatasourceConfig()
1047
+ config.datasource.config.password = "wrongpassword"
1048
+ const response = await makeRequest(
1049
+ "post",
1050
+ "/api/datasources/verify",
1051
+ config
1052
+ )
1053
+ expect(response.status).toBe(200)
1054
+ expect(response.body.connected).toBe(false)
1055
+ expect(response.body.error).toBeDefined()
1056
+ })
1057
+ })
1058
+
1059
+ describe("POST /api/datasources/info", () => {
1060
+ it("should fetch information about postgres datasource", async () => {
1061
+ const primaryName = primaryPostgresTable.name
1062
+ const response = await makeRequest("post", "/api/datasources/info", {
1063
+ datasource: postgresDatasource,
1064
+ })
1065
+ expect(response.status).toBe(200)
1066
+ expect(response.body.tableNames).toBeDefined()
1067
+ expect(response.body.tableNames.indexOf(primaryName)).not.toBe(-1)
1068
+ })
1069
+ })
1028
1070
  })
@@ -1,11 +1,13 @@
1
1
  import {
2
- Integration,
2
+ ConnectionInfo,
3
+ DatasourceFeature,
3
4
  DatasourceFieldType,
4
- QueryType,
5
+ Integration,
5
6
  IntegrationBase,
7
+ QueryType,
6
8
  } from "@budibase/types"
7
9
 
8
- const Airtable = require("airtable")
10
+ import Airtable from "airtable"
9
11
 
10
12
  interface AirtableConfig {
11
13
  apiKey: string
@@ -18,6 +20,9 @@ const SCHEMA: Integration = {
18
20
  "Airtable is a spreadsheet-database hybrid, with the features of a database but applied to a spreadsheet.",
19
21
  friendlyName: "Airtable",
20
22
  type: "Spreadsheet",
23
+ features: {
24
+ [DatasourceFeature.CONNECTION_CHECKING]: true,
25
+ },
21
26
  datasource: {
22
27
  apiKey: {
23
28
  type: DatasourceFieldType.PASSWORD,
@@ -81,13 +86,37 @@ const SCHEMA: Integration = {
81
86
 
82
87
  class AirtableIntegration implements IntegrationBase {
83
88
  private config: AirtableConfig
84
- private client: any
89
+ private client
85
90
 
86
91
  constructor(config: AirtableConfig) {
87
92
  this.config = config
88
93
  this.client = new Airtable(config).base(config.base)
89
94
  }
90
95
 
96
+ async testConnection(): Promise<ConnectionInfo> {
97
+ const mockTable = Date.now().toString()
98
+ try {
99
+ await this.client.makeRequest({
100
+ path: `/${mockTable}`,
101
+ })
102
+
103
+ return { connected: true }
104
+ } catch (e: any) {
105
+ if (
106
+ e.message ===
107
+ `Could not find table ${mockTable} in application ${this.config.base}`
108
+ ) {
109
+ // The request managed to check the application, so the credentials are valid
110
+ return { connected: true }
111
+ }
112
+
113
+ return {
114
+ connected: false,
115
+ error: e.message as string,
116
+ }
117
+ }
118
+ }
119
+
91
120
  async create(query: { table: any; json: any }) {
92
121
  const { table, json } = query
93
122
 
@@ -3,9 +3,11 @@ import {
3
3
  DatasourceFieldType,
4
4
  QueryType,
5
5
  IntegrationBase,
6
+ DatasourceFeature,
7
+ ConnectionInfo,
6
8
  } from "@budibase/types"
7
9
 
8
- const { Database, aql } = require("arangojs")
10
+ import { Database, aql } from "arangojs"
9
11
 
10
12
  interface ArangodbConfig {
11
13
  url: string
@@ -21,6 +23,9 @@ const SCHEMA: Integration = {
21
23
  type: "Non-relational",
22
24
  description:
23
25
  "ArangoDB is a scalable open-source multi-model database natively supporting graph, document and search. All supported data models & access patterns can be combined in queries allowing for maximal flexibility. ",
26
+ features: {
27
+ [DatasourceFeature.CONNECTION_CHECKING]: true,
28
+ },
24
29
  datasource: {
25
30
  url: {
26
31
  type: DatasourceFieldType.STRING,
@@ -58,7 +63,7 @@ const SCHEMA: Integration = {
58
63
 
59
64
  class ArangoDBIntegration implements IntegrationBase {
60
65
  private config: ArangodbConfig
61
- private client: any
66
+ private client
62
67
 
63
68
  constructor(config: ArangodbConfig) {
64
69
  const newConfig = {
@@ -74,6 +79,19 @@ class ArangoDBIntegration implements IntegrationBase {
74
79
  this.client = new Database(newConfig)
75
80
  }
76
81
 
82
+ async testConnection() {
83
+ const response: ConnectionInfo = {
84
+ connected: false,
85
+ }
86
+ try {
87
+ await this.client.get()
88
+ response.connected = true
89
+ } catch (e: any) {
90
+ response.error = e.message as string
91
+ }
92
+ return response
93
+ }
94
+
77
95
  async read(query: { sql: any }) {
78
96
  try {
79
97
  const result = await this.client.query(query.sql)
@@ -206,4 +206,3 @@ class SqlTableQueryBuilder {
206
206
  }
207
207
 
208
208
  export default SqlTableQueryBuilder
209
- module.exports = SqlTableQueryBuilder
@@ -1,4 +1,6 @@
1
1
  import {
2
+ ConnectionInfo,
3
+ DatasourceFeature,
2
4
  DatasourceFieldType,
3
5
  Document,
4
6
  Integration,
@@ -18,6 +20,9 @@ const SCHEMA: Integration = {
18
20
  type: "Non-relational",
19
21
  description:
20
22
  "Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
23
+ features: {
24
+ [DatasourceFeature.CONNECTION_CHECKING]: true,
25
+ },
21
26
  datasource: {
22
27
  url: {
23
28
  type: DatasourceFieldType.STRING,
@@ -61,21 +66,32 @@ const SCHEMA: Integration = {
61
66
  }
62
67
 
63
68
  class CouchDBIntegration implements IntegrationBase {
64
- private config: CouchDBConfig
65
- private readonly client: any
69
+ private readonly client: dbCore.DatabaseImpl
66
70
 
67
71
  constructor(config: CouchDBConfig) {
68
- this.config = config
69
72
  this.client = dbCore.DatabaseWithConnection(config.database, config.url)
70
73
  }
71
74
 
75
+ async testConnection() {
76
+ const response: ConnectionInfo = {
77
+ connected: false,
78
+ }
79
+ try {
80
+ const result = await this.query("exists", "validation error", {})
81
+ response.connected = result === true
82
+ } catch (e: any) {
83
+ response.error = e.message as string
84
+ }
85
+ return response
86
+ }
87
+
72
88
  async query(
73
89
  command: string,
74
90
  errorMsg: string,
75
91
  query: { json?: object; id?: string }
76
92
  ) {
77
93
  try {
78
- return await this.client[command](query.id || query.json)
94
+ return await (this.client as any)[command](query.id || query.json)
79
95
  } catch (err) {
80
96
  console.error(errorMsg, err)
81
97
  throw err
@@ -3,10 +3,13 @@ import {
3
3
  DatasourceFieldType,
4
4
  QueryType,
5
5
  IntegrationBase,
6
+ DatasourceFeature,
7
+ ConnectionInfo,
6
8
  } from "@budibase/types"
7
9
 
8
10
  import AWS from "aws-sdk"
9
11
  import { AWS_REGION } from "../db/dynamoClient"
12
+ import { DocumentClient } from "aws-sdk/clients/dynamodb"
10
13
 
11
14
  interface DynamoDBConfig {
12
15
  region: string
@@ -22,6 +25,9 @@ const SCHEMA: Integration = {
22
25
  "Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.",
23
26
  friendlyName: "DynamoDB",
24
27
  type: "Non-relational",
28
+ features: {
29
+ [DatasourceFeature.CONNECTION_CHECKING]: true,
30
+ },
25
31
  datasource: {
26
32
  region: {
27
33
  type: DatasourceFieldType.STRING,
@@ -128,7 +134,7 @@ const SCHEMA: Integration = {
128
134
 
129
135
  class DynamoDBIntegration implements IntegrationBase {
130
136
  private config: DynamoDBConfig
131
- private client: any
137
+ private client
132
138
 
133
139
  constructor(config: DynamoDBConfig) {
134
140
  this.config = config
@@ -148,7 +154,23 @@ class DynamoDBIntegration implements IntegrationBase {
148
154
  this.client = new AWS.DynamoDB.DocumentClient(this.config)
149
155
  }
150
156
 
151
- async create(query: { table: string; json: object }) {
157
+ async testConnection() {
158
+ const response: ConnectionInfo = {
159
+ connected: false,
160
+ }
161
+ try {
162
+ const scanRes = await new AWS.DynamoDB(this.config).listTables().promise()
163
+ response.connected = !!scanRes.$response
164
+ } catch (e: any) {
165
+ response.error = e.message as string
166
+ }
167
+ return response
168
+ }
169
+
170
+ async create(query: {
171
+ table: string
172
+ json: Omit<DocumentClient.PutItemInput, "TableName">
173
+ }) {
152
174
  const params = {
153
175
  TableName: query.table,
154
176
  ...query.json,
@@ -189,7 +211,10 @@ class DynamoDBIntegration implements IntegrationBase {
189
211
  return new AWS.DynamoDB(this.config).describeTable(params).promise()
190
212
  }
191
213
 
192
- async get(query: { table: string; json: object }) {
214
+ async get(query: {
215
+ table: string
216
+ json: Omit<DocumentClient.GetItemInput, "TableName">
217
+ }) {
193
218
  const params = {
194
219
  TableName: query.table,
195
220
  ...query.json,
@@ -197,7 +222,10 @@ class DynamoDBIntegration implements IntegrationBase {
197
222
  return this.client.get(params).promise()
198
223
  }
199
224
 
200
- async update(query: { table: string; json: object }) {
225
+ async update(query: {
226
+ table: string
227
+ json: Omit<DocumentClient.UpdateItemInput, "TableName">
228
+ }) {
201
229
  const params = {
202
230
  TableName: query.table,
203
231
  ...query.json,
@@ -205,7 +233,10 @@ class DynamoDBIntegration implements IntegrationBase {
205
233
  return this.client.update(params).promise()
206
234
  }
207
235
 
208
- async delete(query: { table: string; json: object }) {
236
+ async delete(query: {
237
+ table: string
238
+ json: Omit<DocumentClient.DeleteItemInput, "TableName">
239
+ }) {
209
240
  const params = {
210
241
  TableName: query.table,
211
242
  ...query.json,
@@ -3,6 +3,8 @@ import {
3
3
  DatasourceFieldType,
4
4
  QueryType,
5
5
  IntegrationBase,
6
+ DatasourceFeature,
7
+ ConnectionInfo,
6
8
  } from "@budibase/types"
7
9
 
8
10
  import { Client, ClientOptions } from "@elastic/elasticsearch"
@@ -20,6 +22,9 @@ const SCHEMA: Integration = {
20
22
  "Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.",
21
23
  friendlyName: "ElasticSearch",
22
24
  type: "Non-relational",
25
+ features: {
26
+ [DatasourceFeature.CONNECTION_CHECKING]: true,
27
+ },
23
28
  datasource: {
24
29
  url: {
25
30
  type: DatasourceFieldType.STRING,
@@ -95,7 +100,7 @@ const SCHEMA: Integration = {
95
100
 
96
101
  class ElasticSearchIntegration implements IntegrationBase {
97
102
  private config: ElasticsearchConfig
98
- private client: any
103
+ private client
99
104
 
100
105
  constructor(config: ElasticsearchConfig) {
101
106
  this.config = config
@@ -114,6 +119,18 @@ class ElasticSearchIntegration implements IntegrationBase {
114
119
  this.client = new Client(clientConfig)
115
120
  }
116
121
 
122
+ async testConnection(): Promise<ConnectionInfo> {
123
+ try {
124
+ await this.client.info()
125
+ return { connected: true }
126
+ } catch (e: any) {
127
+ return {
128
+ connected: false,
129
+ error: e.message as string,
130
+ }
131
+ }
132
+ }
133
+
117
134
  async create(query: { index: string; json: object }) {
118
135
  const { index, json } = query
119
136
 
@@ -3,6 +3,8 @@ import {
3
3
  Integration,
4
4
  QueryType,
5
5
  IntegrationBase,
6
+ DatasourceFeature,
7
+ ConnectionInfo,
6
8
  } from "@budibase/types"
7
9
  import { Firestore, WhereFilterOp } from "@google-cloud/firestore"
8
10
 
@@ -18,6 +20,9 @@ const SCHEMA: Integration = {
18
20
  type: "Non-relational",
19
21
  description:
20
22
  "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
23
+ features: {
24
+ [DatasourceFeature.CONNECTION_CHECKING]: true,
25
+ },
21
26
  datasource: {
22
27
  email: {
23
28
  type: DatasourceFieldType.STRING,
@@ -99,6 +104,18 @@ class FirebaseIntegration implements IntegrationBase {
99
104
  })
100
105
  }
101
106
 
107
+ async testConnection(): Promise<ConnectionInfo> {
108
+ try {
109
+ await this.client.listCollections()
110
+ return { connected: true }
111
+ } catch (e: any) {
112
+ return {
113
+ connected: false,
114
+ error: e.message as string,
115
+ }
116
+ }
117
+ }
118
+
102
119
  async create(query: { json: object; extra: { [key: string]: string } }) {
103
120
  try {
104
121
  const documentReference = this.client
@@ -1,4 +1,6 @@
1
1
  import {
2
+ ConnectionInfo,
3
+ DatasourceFeature,
2
4
  DatasourceFieldType,
3
5
  DatasourcePlus,
4
6
  FieldType,
@@ -15,7 +17,7 @@ import {
15
17
  } from "@budibase/types"
16
18
  import { OAuth2Client } from "google-auth-library"
17
19
  import { buildExternalTableId, finaliseExternalTables } from "./utils"
18
- import { GoogleSpreadsheet } from "google-spreadsheet"
20
+ import { GoogleSpreadsheet, GoogleSpreadsheetRow } from "google-spreadsheet"
19
21
  import fetch from "node-fetch"
20
22
  import { configs, HTTPError } from "@budibase/backend-core"
21
23
  import { dataFilters } from "@budibase/shared-core"
@@ -61,9 +63,13 @@ const SCHEMA: Integration = {
61
63
  relationships: false,
62
64
  docs: "https://developers.google.com/sheets/api/quickstart/nodejs",
63
65
  description:
64
- "Create and collaborate on online spreadsheets in real-time and from any device. ",
66
+ "Create and collaborate on online spreadsheets in real-time and from any device.",
65
67
  friendlyName: "Google Sheets",
66
68
  type: "Spreadsheet",
69
+ features: {
70
+ [DatasourceFeature.CONNECTION_CHECKING]: true,
71
+ [DatasourceFeature.FETCH_TABLE_NAMES]: true,
72
+ },
67
73
  datasource: {
68
74
  spreadsheetId: {
69
75
  display: "Google Sheet URL",
@@ -139,6 +145,18 @@ class GoogleSheetsIntegration implements DatasourcePlus {
139
145
  this.client = new GoogleSpreadsheet(spreadsheetId)
140
146
  }
141
147
 
148
+ async testConnection(): Promise<ConnectionInfo> {
149
+ try {
150
+ await this.connect()
151
+ return { connected: true }
152
+ } catch (e: any) {
153
+ return {
154
+ connected: false,
155
+ error: e.message as string,
156
+ }
157
+ }
158
+ }
159
+
142
160
  getBindingIdentifier() {
143
161
  return ""
144
162
  }
@@ -224,6 +242,12 @@ class GoogleSheetsIntegration implements DatasourcePlus {
224
242
  }
225
243
  }
226
244
 
245
+ async getTableNames(): Promise<string[]> {
246
+ await this.connect()
247
+ const sheets = this.client.sheetsByIndex
248
+ return sheets.map(s => s.title)
249
+ }
250
+
227
251
  getTableSchema(title: string, headerValues: string[], id?: string) {
228
252
  // base table
229
253
  const table: Table = {
@@ -433,9 +457,41 @@ class GoogleSheetsIntegration implements DatasourcePlus {
433
457
  }) {
434
458
  try {
435
459
  await this.connect()
460
+ const hasFilters = dataFilters.hasFilters(query.filters)
461
+ const limit = query.paginate?.limit || 100
462
+ const page: number =
463
+ typeof query.paginate?.page === "number"
464
+ ? query.paginate.page
465
+ : parseInt(query.paginate?.page || "1")
466
+ const offset = (page - 1) * limit
436
467
  const sheet = this.client.sheetsByTitle[query.sheet]
437
- const rows = await sheet.getRows()
438
- const filtered = dataFilters.runLuceneQuery(rows, query.filters)
468
+ let rows: GoogleSpreadsheetRow[] = []
469
+ if (query.paginate && !hasFilters) {
470
+ rows = await sheet.getRows({
471
+ limit,
472
+ offset,
473
+ })
474
+ } else {
475
+ rows = await sheet.getRows()
476
+ }
477
+ // this is a special case - need to handle the _id, it doesn't exist
478
+ // we cannot edit the returned structure from google, it does not have
479
+ // setter functions and is immutable, easier to update the filters
480
+ // to look for the _rowNumber property rather than rowNumber
481
+ if (query.filters?.equal) {
482
+ const idFilterKeys = Object.keys(query.filters.equal).filter(filter =>
483
+ filter.includes(GOOGLE_SHEETS_PRIMARY_KEY)
484
+ )
485
+ for (let idFilterKey of idFilterKeys) {
486
+ const id = query.filters.equal[idFilterKey]
487
+ delete query.filters.equal[idFilterKey]
488
+ query.filters.equal[`_${GOOGLE_SHEETS_PRIMARY_KEY}`] = id
489
+ }
490
+ }
491
+ let filtered = dataFilters.runLuceneQuery(rows, query.filters)
492
+ if (hasFilters && query.paginate) {
493
+ filtered = filtered.slice(offset, offset + limit)
494
+ }
439
495
  const headerValues = sheet.headerValues
440
496
  let response = []
441
497
  for (let row of filtered) {
@@ -498,7 +554,12 @@ class GoogleSheetsIntegration implements DatasourcePlus {
498
554
  const row = rows[query.rowIndex]
499
555
  if (row) {
500
556
  await row.delete()
501
- return [{ deleted: query.rowIndex }]
557
+ return [
558
+ {
559
+ deleted: query.rowIndex,
560
+ [GOOGLE_SHEETS_PRIMARY_KEY]: query.rowIndex,
561
+ },
562
+ ]
502
563
  } else {
503
564
  throw new Error("Row does not exist.")
504
565
  }
@@ -20,7 +20,7 @@ import env from "../environment"
20
20
  import { cloneDeep } from "lodash"
21
21
  import sdk from "../sdk"
22
22
 
23
- const DEFINITIONS: { [key: string]: Integration } = {
23
+ const DEFINITIONS: Record<SourceName, Integration | undefined> = {
24
24
  [SourceName.POSTGRES]: postgres.schema,
25
25
  [SourceName.DYNAMODB]: dynamodb.schema,
26
26
  [SourceName.MONGODB]: mongodb.schema,
@@ -36,9 +36,10 @@ const DEFINITIONS: { [key: string]: Integration } = {
36
36
  [SourceName.GOOGLE_SHEETS]: googlesheets.schema,
37
37
  [SourceName.REDIS]: redis.schema,
38
38
  [SourceName.SNOWFLAKE]: snowflake.schema,
39
+ [SourceName.ORACLE]: undefined,
39
40
  }
40
41
 
41
- const INTEGRATIONS: { [key: string]: any } = {
42
+ const INTEGRATIONS: Record<SourceName, any> = {
42
43
  [SourceName.POSTGRES]: postgres.integration,
43
44
  [SourceName.DYNAMODB]: dynamodb.integration,
44
45
  [SourceName.MONGODB]: mongodb.integration,
@@ -55,6 +56,7 @@ const INTEGRATIONS: { [key: string]: any } = {
55
56
  [SourceName.REDIS]: redis.integration,
56
57
  [SourceName.FIRESTORE]: firebase.integration,
57
58
  [SourceName.SNOWFLAKE]: snowflake.integration,
59
+ [SourceName.ORACLE]: undefined,
58
60
  }
59
61
 
60
62
  // optionally add oracle integration if the oracle binary can be installed
@@ -67,10 +69,13 @@ if (
67
69
  INTEGRATIONS[SourceName.ORACLE] = oracle.integration
68
70
  }
69
71
 
70
- export async function getDefinition(source: SourceName): Promise<Integration> {
72
+ export async function getDefinition(
73
+ source: SourceName
74
+ ): Promise<Integration | undefined> {
71
75
  // check if its integrated, faster
72
- if (DEFINITIONS[source]) {
73
- return DEFINITIONS[source]
76
+ const definition = DEFINITIONS[source]
77
+ if (definition) {
78
+ return definition
74
79
  }
75
80
  const allDefinitions = await getDefinitions()
76
81
  return allDefinitions[source]
@@ -98,7 +103,7 @@ export async function getDefinitions() {
98
103
  }
99
104
  }
100
105
 
101
- export async function getIntegration(integration: string) {
106
+ export async function getIntegration(integration: SourceName) {
102
107
  if (INTEGRATIONS[integration]) {
103
108
  return INTEGRATIONS[integration]
104
109
  }
@@ -107,7 +112,7 @@ export async function getIntegration(integration: string) {
107
112
  for (let plugin of plugins) {
108
113
  if (plugin.name === integration) {
109
114
  // need to use commonJS require due to its dynamic runtime nature
110
- const retrieved: any = await getDatasourcePlugin(plugin)
115
+ const retrieved = await getDatasourcePlugin(plugin)
111
116
  if (retrieved.integration) {
112
117
  return retrieved.integration
113
118
  } else {