@budibase/server 1.3.21 → 1.3.22-alpha.1

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 (310) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.96c69636.js +1008 -0
  3. package/builder/assets/index.c167b5c3.css +6 -0
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +308 -338
  6. package/coverage/coverage-final.json +19 -21
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +41 -8
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/datasource.js.html +73 -34
  13. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/index.html +27 -57
  15. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  16. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  25. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  43. package/coverage/lcov-report/api/index.html +1 -1
  44. package/coverage/lcov-report/api/index.js.html +13 -13
  45. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/index.html +1 -1
  56. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  67. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  70. package/coverage/lcov-report/api/routes/utils/validators.js.html +75 -12
  71. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  73. package/coverage/lcov-report/automations/actions.js.html +1 -1
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  76. package/coverage/lcov-report/automations/index.html +1 -1
  77. package/coverage/lcov-report/automations/index.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/index.html +1 -1
  85. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  104. package/coverage/lcov-report/constants/index.html +1 -1
  105. package/coverage/lcov-report/constants/index.js.html +1 -1
  106. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  107. package/coverage/lcov-report/constants/screens.js.html +1 -1
  108. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  109. package/coverage/lcov-report/db/index.html +14 -14
  110. package/coverage/lcov-report/db/index.js.html +1 -1
  111. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  115. package/coverage/lcov-report/db/newid.js.html +2 -2
  116. package/coverage/lcov-report/db/utils.js.html +30 -18
  117. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  118. package/coverage/lcov-report/events/index.html +1 -1
  119. package/coverage/lcov-report/events/index.js.html +1 -1
  120. package/coverage/lcov-report/events/utils.js.html +1 -1
  121. package/coverage/lcov-report/index.html +44 -44
  122. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  123. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  124. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  125. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  126. package/coverage/lcov-report/middleware/currentapp.js.html +46 -40
  127. package/coverage/lcov-report/middleware/index.html +15 -15
  128. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  129. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  130. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  131. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  132. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  133. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  134. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  135. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  136. package/coverage/lcov-report/utilities/global.js.html +16 -16
  137. package/coverage/lcov-report/utilities/index.html +15 -15
  138. package/coverage/lcov-report/utilities/index.js.html +24 -24
  139. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  140. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  141. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  142. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  143. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  144. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  146. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  147. package/coverage/lcov-report/utilities/security.js.html +2 -2
  148. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  149. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  150. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  152. package/coverage/lcov-report/utilities/users.js.html +1 -1
  153. package/coverage/lcov-report/utilities/workerRequests.js.html +32 -8
  154. package/coverage/lcov.info +521 -558
  155. package/dist/api/controllers/application.js +5 -5
  156. package/dist/api/controllers/auth.js +9 -0
  157. package/dist/api/controllers/component.js +19 -6
  158. package/dist/api/controllers/datasource.js +21 -8
  159. package/dist/api/controllers/deploy/index.js +1 -8
  160. package/dist/api/controllers/integration.js +4 -4
  161. package/dist/{migrations/functions/usageQuotas/syncDevelopers.js → api/controllers/plugin/file.js} +13 -13
  162. package/dist/api/controllers/plugin/github.js +69 -0
  163. package/dist/api/controllers/plugin/index.js +144 -0
  164. package/dist/api/controllers/plugin/npm.js +58 -0
  165. package/dist/api/controllers/plugin/uploaders.js +11 -0
  166. package/dist/{migrations/functions/usageQuotas/syncPublishedApps.js → api/controllers/plugin/url.js} +13 -15
  167. package/dist/api/controllers/plugin/utils.js +26 -0
  168. package/dist/api/controllers/row/external.js +1 -1
  169. package/dist/api/controllers/screen.js +62 -14
  170. package/dist/api/controllers/static/index.js +1 -0
  171. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  172. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  173. package/dist/api/index.js +1 -1
  174. package/dist/api/routes/application.js +3 -2
  175. package/dist/api/routes/index.js +2 -0
  176. package/dist/{migrations/functions/publishedAppsQuota.js → api/routes/plugin.js} +13 -21
  177. package/dist/api/routes/public/rows.js +1 -82
  178. package/dist/api/routes/public/tables.js +1 -1
  179. package/dist/api/routes/table.js +1 -1
  180. package/dist/api/routes/utils/validators.js +20 -2
  181. package/dist/app.js +16 -1
  182. package/dist/db/utils.js +3 -0
  183. package/dist/environment.js +1 -0
  184. package/dist/integrations/airtable.js +126 -129
  185. package/dist/integrations/arangodb.js +86 -89
  186. package/dist/integrations/base/query.js +2 -2
  187. package/dist/integrations/base/sqlTable.js +3 -1
  188. package/dist/integrations/couchdb.js +80 -83
  189. package/dist/integrations/dynamodb.js +161 -164
  190. package/dist/integrations/elasticsearch.js +135 -138
  191. package/dist/integrations/firebase.js +154 -157
  192. package/dist/integrations/googlesheets.js +323 -327
  193. package/dist/integrations/index.js +99 -51
  194. package/dist/integrations/microsoftSqlServer.js +240 -243
  195. package/dist/integrations/mongodb.js +239 -242
  196. package/dist/integrations/mysql.js +215 -219
  197. package/dist/integrations/oracle.js +318 -322
  198. package/dist/integrations/postgres.js +262 -265
  199. package/dist/integrations/redis.js +134 -139
  200. package/dist/integrations/rest.js +289 -292
  201. package/dist/integrations/s3.js +61 -64
  202. package/dist/integrations/snowflake.js +83 -86
  203. package/dist/middleware/currentapp.js +2 -0
  204. package/dist/migrations/functions/backfill/global.js +0 -3
  205. package/dist/migrations/index.js +0 -10
  206. package/dist/package.json +9 -6
  207. package/dist/tests/utilities/TestConfiguration.js +1 -1
  208. package/dist/threads/query.js +2 -2
  209. package/dist/tsconfig.build.tsbuildinfo +1 -1
  210. package/dist/utilities/fileSystem/index.js +105 -1
  211. package/dist/utilities/workerRequests.js +4 -0
  212. package/dist/watch.js +77 -0
  213. package/dist/websocket.js +22 -0
  214. package/package.json +10 -7
  215. package/scripts/dev/manage.js +4 -0
  216. package/scripts/localdomain.js +3 -1
  217. package/specs/openapi.json +115 -112
  218. package/specs/openapi.yaml +96 -94
  219. package/specs/resources/misc.js +116 -0
  220. package/specs/resources/query.js +1 -1
  221. package/src/api/controllers/application.ts +1 -2
  222. package/src/api/controllers/auth.js +11 -0
  223. package/src/api/controllers/component.ts +57 -0
  224. package/src/api/controllers/datasource.js +21 -8
  225. package/src/api/controllers/deploy/index.ts +1 -6
  226. package/src/api/controllers/integration.js +4 -4
  227. package/src/api/controllers/plugin/file.ts +15 -0
  228. package/src/api/controllers/plugin/github.ts +75 -0
  229. package/src/api/controllers/plugin/index.ts +134 -0
  230. package/src/api/controllers/plugin/npm.ts +56 -0
  231. package/src/api/controllers/plugin/uploaders.ts +4 -0
  232. package/src/api/controllers/plugin/url.ts +12 -0
  233. package/src/api/controllers/plugin/utils.ts +19 -0
  234. package/src/api/controllers/public/mapping/types.ts +8 -0
  235. package/src/api/controllers/row/external.js +1 -1
  236. package/src/api/controllers/screen.ts +122 -0
  237. package/src/api/controllers/static/index.ts +1 -1
  238. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  239. package/src/api/controllers/static/templates/preview.hbs +5 -1
  240. package/src/api/index.js +1 -1
  241. package/src/api/routes/application.ts +13 -2
  242. package/src/api/routes/index.ts +2 -0
  243. package/src/api/routes/plugin.ts +14 -0
  244. package/src/api/routes/public/rows.ts +1 -82
  245. package/src/api/routes/public/tables.ts +1 -1
  246. package/src/api/routes/table.js +1 -1
  247. package/src/api/routes/tests/query.spec.js +8 -25
  248. package/src/api/routes/tests/user.spec.js +0 -2
  249. package/src/api/routes/utils/validators.js +26 -5
  250. package/src/app.ts +25 -2
  251. package/src/db/utils.js +4 -0
  252. package/src/definitions/openapi.ts +56 -55
  253. package/src/environment.js +1 -0
  254. package/src/integrations/airtable.ts +116 -118
  255. package/src/integrations/arangodb.ts +87 -89
  256. package/src/integrations/base/query.ts +2 -2
  257. package/src/integrations/base/sqlTable.ts +3 -1
  258. package/src/integrations/couchdb.ts +83 -89
  259. package/src/integrations/dynamodb.ts +173 -175
  260. package/src/integrations/elasticsearch.ts +120 -122
  261. package/src/integrations/firebase.ts +157 -159
  262. package/src/integrations/googlesheets.ts +328 -338
  263. package/src/integrations/index.ts +64 -21
  264. package/src/integrations/microsoftSqlServer.ts +249 -251
  265. package/src/integrations/mongodb.ts +261 -258
  266. package/src/integrations/mysql.ts +229 -234
  267. package/src/integrations/oracle.ts +373 -380
  268. package/src/integrations/postgres.ts +264 -268
  269. package/src/integrations/redis.ts +128 -132
  270. package/src/integrations/rest.ts +324 -329
  271. package/src/integrations/s3.ts +68 -71
  272. package/src/integrations/snowflake.ts +80 -82
  273. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  274. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  275. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  276. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  277. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  278. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  279. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  280. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  281. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  282. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  283. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  284. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  285. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  286. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  287. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  288. package/src/middleware/currentapp.js +2 -0
  289. package/src/migrations/functions/backfill/global.ts +0 -3
  290. package/src/migrations/index.ts +0 -16
  291. package/src/module.d.ts +2 -0
  292. package/src/tests/utilities/TestConfiguration.js +1 -1
  293. package/src/threads/query.ts +2 -2
  294. package/src/utilities/fileSystem/index.js +123 -0
  295. package/src/utilities/workerRequests.js +8 -0
  296. package/src/watch.ts +38 -0
  297. package/src/websocket.ts +26 -0
  298. package/builder/assets/index.8d12d461.css +0 -6
  299. package/builder/assets/index.d354271c.js +0 -879
  300. package/builder/assets/vendor.5e1fe644.css +0 -1
  301. package/builder/assets/vendor.67dbd8fa.js +0 -248
  302. package/coverage/lcov-report/api/controllers/component.js.html +0 -199
  303. package/coverage/lcov-report/api/controllers/screen.js.html +0 -259
  304. package/dist/migrations/functions/developerQuota.js +0 -49
  305. package/src/api/controllers/component.js +0 -38
  306. package/src/api/controllers/screen.js +0 -58
  307. package/src/migrations/functions/developerQuota.ts +0 -15
  308. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  309. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  310. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +0 -21
@@ -1,86 +1,83 @@
1
1
  import { Integration, QueryType, IntegrationBase } from "@budibase/types"
2
+ const AWS = require("aws-sdk")
2
3
 
3
- module S3Module {
4
- const AWS = require("aws-sdk")
5
-
6
- interface S3Config {
7
- region: string
8
- accessKeyId: string
9
- secretAccessKey: string
10
- s3ForcePathStyle: boolean
11
- endpoint?: string
12
- }
4
+ interface S3Config {
5
+ region: string
6
+ accessKeyId: string
7
+ secretAccessKey: string
8
+ s3ForcePathStyle: boolean
9
+ endpoint?: string
10
+ }
13
11
 
14
- const SCHEMA: Integration = {
15
- docs: "https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html",
16
- description:
17
- "Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance.",
18
- friendlyName: "Amazon S3",
19
- type: "Object store",
20
- datasource: {
21
- region: {
22
- type: "string",
23
- required: false,
24
- default: "us-east-1",
25
- },
26
- accessKeyId: {
27
- type: "password",
28
- required: true,
29
- },
30
- secretAccessKey: {
31
- type: "password",
32
- required: true,
33
- },
34
- endpoint: {
35
- type: "string",
36
- required: false,
37
- },
38
- signatureVersion: {
39
- type: "string",
40
- required: false,
41
- default: "v4",
42
- },
12
+ const SCHEMA: Integration = {
13
+ docs: "https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html",
14
+ description:
15
+ "Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance.",
16
+ friendlyName: "Amazon S3",
17
+ type: "Object store",
18
+ datasource: {
19
+ region: {
20
+ type: "string",
21
+ required: false,
22
+ default: "us-east-1",
23
+ },
24
+ accessKeyId: {
25
+ type: "password",
26
+ required: true,
43
27
  },
44
- query: {
45
- read: {
46
- type: QueryType.FIELDS,
47
- fields: {
48
- bucket: {
49
- type: "string",
50
- required: true,
51
- },
28
+ secretAccessKey: {
29
+ type: "password",
30
+ required: true,
31
+ },
32
+ endpoint: {
33
+ type: "string",
34
+ required: false,
35
+ },
36
+ signatureVersion: {
37
+ type: "string",
38
+ required: false,
39
+ default: "v4",
40
+ },
41
+ },
42
+ query: {
43
+ read: {
44
+ type: QueryType.FIELDS,
45
+ fields: {
46
+ bucket: {
47
+ type: "string",
48
+ required: true,
52
49
  },
53
50
  },
54
51
  },
55
- }
56
-
57
- class S3Integration implements IntegrationBase {
58
- private readonly config: S3Config
59
- private client: any
52
+ },
53
+ }
60
54
 
61
- constructor(config: S3Config) {
62
- this.config = config
63
- if (this.config.endpoint) {
64
- this.config.s3ForcePathStyle = true
65
- } else {
66
- delete this.config.endpoint
67
- }
55
+ class S3Integration implements IntegrationBase {
56
+ private readonly config: S3Config
57
+ private client: any
68
58
 
69
- this.client = new AWS.S3(this.config)
59
+ constructor(config: S3Config) {
60
+ this.config = config
61
+ if (this.config.endpoint) {
62
+ this.config.s3ForcePathStyle = true
63
+ } else {
64
+ delete this.config.endpoint
70
65
  }
71
66
 
72
- async read(query: { bucket: string }) {
73
- const response = await this.client
74
- .listObjects({
75
- Bucket: query.bucket,
76
- })
77
- .promise()
78
- return response.Contents
79
- }
67
+ this.client = new AWS.S3(this.config)
80
68
  }
81
69
 
82
- module.exports = {
83
- schema: SCHEMA,
84
- integration: S3Integration,
70
+ async read(query: { bucket: string }) {
71
+ const response = await this.client
72
+ .listObjects({
73
+ Bucket: query.bucket,
74
+ })
75
+ .promise()
76
+ return response.Contents
85
77
  }
86
78
  }
79
+
80
+ export default {
81
+ schema: SCHEMA,
82
+ integration: S3Integration,
83
+ }
@@ -1,99 +1,97 @@
1
1
  import { Integration, QueryType, SqlQuery } from "@budibase/types"
2
2
  import { Snowflake } from "snowflake-promise"
3
3
 
4
- module SnowflakeModule {
5
- interface SnowflakeConfig {
6
- account: string
7
- username: string
8
- password: string
9
- warehouse: string
10
- database: string
11
- schema: string
12
- }
4
+ interface SnowflakeConfig {
5
+ account: string
6
+ username: string
7
+ password: string
8
+ warehouse: string
9
+ database: string
10
+ schema: string
11
+ }
13
12
 
14
- const SCHEMA: Integration = {
15
- docs: "https://developers.snowflake.com/",
16
- description:
17
- "Snowflake is a solution for data warehousing, data lakes, data engineering, data science, data application development, and securely sharing and consuming shared data.",
18
- friendlyName: "Snowflake",
19
- type: "Relational",
20
- datasource: {
21
- account: {
22
- type: "string",
23
- required: true,
24
- },
25
- username: {
26
- type: "string",
27
- required: true,
28
- },
29
- password: {
30
- type: "password",
31
- required: true,
32
- },
33
- warehouse: {
34
- type: "string",
35
- required: true,
36
- },
37
- database: {
38
- type: "string",
39
- required: true,
40
- },
41
- schema: {
42
- type: "string",
43
- required: true,
44
- },
13
+ const SCHEMA: Integration = {
14
+ docs: "https://developers.snowflake.com/",
15
+ description:
16
+ "Snowflake is a solution for data warehousing, data lakes, data engineering, data science, data application development, and securely sharing and consuming shared data.",
17
+ friendlyName: "Snowflake",
18
+ type: "Relational",
19
+ datasource: {
20
+ account: {
21
+ type: "string",
22
+ required: true,
45
23
  },
46
- query: {
47
- create: {
48
- type: QueryType.SQL,
49
- },
50
- read: {
51
- type: QueryType.SQL,
52
- },
53
- update: {
54
- type: QueryType.SQL,
55
- },
56
- delete: {
57
- type: QueryType.SQL,
58
- },
24
+ username: {
25
+ type: "string",
26
+ required: true,
59
27
  },
60
- }
61
-
62
- class SnowflakeIntegration {
63
- private client: Snowflake
28
+ password: {
29
+ type: "password",
30
+ required: true,
31
+ },
32
+ warehouse: {
33
+ type: "string",
34
+ required: true,
35
+ },
36
+ database: {
37
+ type: "string",
38
+ required: true,
39
+ },
40
+ schema: {
41
+ type: "string",
42
+ required: true,
43
+ },
44
+ },
45
+ query: {
46
+ create: {
47
+ type: QueryType.SQL,
48
+ },
49
+ read: {
50
+ type: QueryType.SQL,
51
+ },
52
+ update: {
53
+ type: QueryType.SQL,
54
+ },
55
+ delete: {
56
+ type: QueryType.SQL,
57
+ },
58
+ },
59
+ }
64
60
 
65
- constructor(config: SnowflakeConfig) {
66
- this.client = new Snowflake(config)
67
- }
61
+ class SnowflakeIntegration {
62
+ private client: Snowflake
68
63
 
69
- async internalQuery(query: SqlQuery) {
70
- await this.client.connect()
71
- try {
72
- return await this.client.execute(query.sql)
73
- } catch (err: any) {
74
- throw err?.message.split(":")[1] || err?.message
75
- }
76
- }
64
+ constructor(config: SnowflakeConfig) {
65
+ this.client = new Snowflake(config)
66
+ }
77
67
 
78
- async create(query: SqlQuery) {
79
- return this.internalQuery(query)
68
+ async internalQuery(query: SqlQuery) {
69
+ await this.client.connect()
70
+ try {
71
+ return await this.client.execute(query.sql)
72
+ } catch (err: any) {
73
+ throw err?.message.split(":")[1] || err?.message
80
74
  }
75
+ }
81
76
 
82
- async read(query: SqlQuery) {
83
- return this.internalQuery(query)
84
- }
77
+ async create(query: SqlQuery) {
78
+ return this.internalQuery(query)
79
+ }
85
80
 
86
- async update(query: SqlQuery) {
87
- return this.internalQuery(query)
88
- }
81
+ async read(query: SqlQuery) {
82
+ return this.internalQuery(query)
83
+ }
89
84
 
90
- async delete(query: SqlQuery) {
91
- return this.internalQuery(query)
92
- }
85
+ async update(query: SqlQuery) {
86
+ return this.internalQuery(query)
93
87
  }
94
88
 
95
- module.exports = {
96
- schema: SCHEMA,
97
- integration: SnowflakeIntegration,
89
+ async delete(query: SqlQuery) {
90
+ return this.internalQuery(query)
98
91
  }
99
92
  }
93
+
94
+ export default {
95
+ schema: SCHEMA,
96
+ integration: SnowflakeIntegration,
97
+ }
@@ -1,10 +1,12 @@
1
- const Airtable = require("airtable")
2
- const AirtableIntegration = require("../airtable")
1
+ import { default as AirtableIntegration } from "../airtable"
3
2
  jest.mock("airtable")
4
3
 
5
4
  class TestConfiguration {
6
- constructor(config = {}) {
7
- this.integration = new AirtableIntegration.integration(config)
5
+ integration: any
6
+ client: any
7
+
8
+ constructor(config: any = {}) {
9
+ this.integration = new AirtableIntegration.integration(config)
8
10
  this.client = {
9
11
  create: jest.fn(),
10
12
  select: jest.fn(() => ({
@@ -13,12 +15,12 @@ class TestConfiguration {
13
15
  update: jest.fn(),
14
16
  destroy: jest.fn(),
15
17
  }
16
- this.integration.client = () => this.client
18
+ this.integration.client = () => this.client
17
19
  }
18
20
  }
19
21
 
20
22
  describe("Airtable Integration", () => {
21
- let config
23
+ let config: any
22
24
 
23
25
  beforeEach(() => {
24
26
  config = new TestConfiguration()
@@ -27,22 +29,23 @@ describe("Airtable Integration", () => {
27
29
  it("calls the create method with the correct params", async () => {
28
30
  const response = await config.integration.create({
29
31
  table: "test",
30
- json: {}
32
+ json: {},
31
33
  })
32
34
  expect(config.client.create).toHaveBeenCalledWith([
33
35
  {
34
- fields: {}
35
- }
36
+ fields: {},
37
+ },
36
38
  ])
37
39
  })
38
40
 
39
41
  it("calls the read method with the correct params", async () => {
40
42
  const response = await config.integration.read({
41
43
  table: "test",
42
- view: "Grid view"
44
+ view: "Grid view",
43
45
  })
44
46
  expect(config.client.select).toHaveBeenCalledWith({
45
- maxRecords: 10, view: "Grid view"
47
+ maxRecords: 10,
48
+ view: "Grid view",
46
49
  })
47
50
  })
48
51
 
@@ -51,22 +54,22 @@ describe("Airtable Integration", () => {
51
54
  table: "table",
52
55
  id: "123",
53
56
  json: {
54
- name: "test"
55
- }
57
+ name: "test",
58
+ },
56
59
  })
57
60
  expect(config.client.update).toHaveBeenCalledWith([
58
61
  {
59
62
  id: "123",
60
- fields: { name: "test" }
61
- }
63
+ fields: { name: "test" },
64
+ },
62
65
  ])
63
66
  })
64
67
 
65
68
  it("calls the delete method with the correct params", async () => {
66
- const ids = [1,2,3,4]
69
+ const ids = [1, 2, 3, 4]
67
70
  const response = await config.integration.delete({
68
- ids
71
+ ids,
69
72
  })
70
73
  expect(config.client.destroy).toHaveBeenCalledWith(ids)
71
74
  })
72
- })
75
+ })
@@ -1,15 +1,16 @@
1
- const arangodb = require("arangojs")
2
- const ArangoDBIntegration = require("../arangodb")
1
+ import { default as ArangoDBIntegration } from "../arangodb"
3
2
  jest.mock("arangojs")
4
3
 
5
4
  class TestConfiguration {
6
- constructor(config = {}) {
7
- this.integration = new ArangoDBIntegration.integration(config)
5
+ integration: any
6
+
7
+ constructor(config: any = {}) {
8
+ this.integration = new ArangoDBIntegration.integration(config)
8
9
  }
9
10
  }
10
11
 
11
12
  describe("ArangoDB Integration", () => {
12
- let config
13
+ let config: any
13
14
  let indexName = "Users"
14
15
 
15
16
  beforeEach(() => {
@@ -18,18 +19,20 @@ describe("ArangoDB Integration", () => {
18
19
 
19
20
  it("calls the create method with the correct params", async () => {
20
21
  const body = {
21
- json: "Hello"
22
+ json: "Hello",
22
23
  }
23
24
 
24
25
  const response = await config.integration.create(body)
25
- expect(config.integration.client.query).toHaveBeenCalledWith(`INSERT Hello INTO collection RETURN NEW`)
26
+ expect(config.integration.client.query).toHaveBeenCalledWith(
27
+ `INSERT Hello INTO collection RETURN NEW`
28
+ )
26
29
  })
27
30
 
28
31
  it("calls the read method with the correct params", async () => {
29
32
  const query = {
30
- json: `test`,
33
+ sql: `test`,
31
34
  }
32
35
  const response = await config.integration.read(query)
33
36
  expect(config.integration.client.query).toHaveBeenCalledWith(query.sql)
34
37
  })
35
- })
38
+ })
@@ -1,23 +1,29 @@
1
- jest.mock("pouchdb", () => function CouchDBMock() {
2
- this.post = jest.fn()
3
- this.allDocs = jest.fn(() => ({ rows: [] }))
4
- this.put = jest.fn()
5
- this.get = jest.fn()
6
- this.remove = jest.fn()
7
- this.plugin = jest.fn()
8
- this.close = jest.fn()
9
- })
1
+ jest.mock(
2
+ "pouchdb",
3
+ () =>
4
+ function CouchDBMock(this: any) {
5
+ this.post = jest.fn()
6
+ this.allDocs = jest.fn(() => ({ rows: [] }))
7
+ this.put = jest.fn()
8
+ this.get = jest.fn()
9
+ this.remove = jest.fn()
10
+ this.plugin = jest.fn()
11
+ this.close = jest.fn()
12
+ }
13
+ )
10
14
 
11
- const CouchDBIntegration = require("../couchdb")
15
+ import { default as CouchDBIntegration } from "../couchdb"
12
16
 
13
17
  class TestConfiguration {
14
- constructor(config = {}) {
15
- this.integration = new CouchDBIntegration.integration(config)
18
+ integration: any
19
+
20
+ constructor(config: any = {}) {
21
+ this.integration = new CouchDBIntegration.integration(config)
16
22
  }
17
23
  }
18
24
 
19
25
  describe("CouchDB Integration", () => {
20
- let config
26
+ let config: any
21
27
 
22
28
  beforeEach(() => {
23
29
  config = new TestConfiguration()
@@ -25,37 +31,37 @@ describe("CouchDB Integration", () => {
25
31
 
26
32
  it("calls the create method with the correct params", async () => {
27
33
  const doc = {
28
- test: 1
29
- }
30
- const response = await config.integration.create({
31
- json: doc
34
+ test: 1,
35
+ }
36
+ const response = await config.integration.create({
37
+ json: doc,
32
38
  })
33
39
  expect(config.integration.client.post).toHaveBeenCalledWith(doc)
34
40
  })
35
41
 
36
42
  it("calls the read method with the correct params", async () => {
37
43
  const doc = {
38
- name: "search"
39
- }
44
+ name: "search",
45
+ }
40
46
 
41
- const response = await config.integration.read({
42
- json: doc
47
+ const response = await config.integration.read({
48
+ json: doc,
43
49
  })
44
50
 
45
51
  expect(config.integration.client.allDocs).toHaveBeenCalledWith({
46
52
  include_docs: true,
47
- name: "search"
53
+ name: "search",
48
54
  })
49
55
  })
50
56
 
51
57
  it("calls the update method with the correct params", async () => {
52
58
  const doc = {
53
59
  _id: "1234",
54
- name: "search"
55
- }
60
+ name: "search",
61
+ }
56
62
 
57
- const response = await config.integration.update({
58
- json: doc
63
+ const response = await config.integration.update({
64
+ json: doc,
59
65
  })
60
66
 
61
67
  expect(config.integration.client.put).toHaveBeenCalledWith(doc)
@@ -67,4 +73,4 @@ describe("CouchDB Integration", () => {
67
73
  expect(config.integration.client.get).toHaveBeenCalledWith(id)
68
74
  expect(config.integration.client.remove).toHaveBeenCalled()
69
75
  })
70
- })
76
+ })