@budibase/server 1.3.17 → 1.3.19-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 (282) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/{index.a70e216a.css → index.3850883f.css} +2 -2
  3. package/builder/assets/index.fdade753.js +995 -0
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +409 -361
  6. package/coverage/coverage-final.json +18 -18
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  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/component.js.html +68 -11
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +73 -34
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +38 -38
  16. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  26. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/screen.js.html +207 -12
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  45. package/coverage/lcov-report/api/index.html +1 -1
  46. package/coverage/lcov-report/api/index.js.html +12 -12
  47. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/index.html +1 -1
  58. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  69. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/index.html +5 -5
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +9 -6
  73. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  75. package/coverage/lcov-report/automations/actions.js.html +1 -1
  76. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  77. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  78. package/coverage/lcov-report/automations/index.html +1 -1
  79. package/coverage/lcov-report/automations/index.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/index.html +1 -1
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  106. package/coverage/lcov-report/constants/index.html +1 -1
  107. package/coverage/lcov-report/constants/index.js.html +1 -1
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +1 -1
  110. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +18 -18
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  117. package/coverage/lcov-report/db/newid.js.html +2 -2
  118. package/coverage/lcov-report/db/utils.js.html +56 -20
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +1 -1
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +30 -30
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  127. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  128. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  129. package/coverage/lcov-report/middleware/index.html +1 -1
  130. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  131. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  132. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  135. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  136. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  137. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  138. package/coverage/lcov-report/utilities/global.js.html +16 -16
  139. package/coverage/lcov-report/utilities/index.html +1 -1
  140. package/coverage/lcov-report/utilities/index.js.html +24 -24
  141. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  142. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  143. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  146. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  148. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  149. package/coverage/lcov-report/utilities/security.js.html +2 -2
  150. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  152. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  154. package/coverage/lcov-report/utilities/users.js.html +1 -1
  155. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  156. package/coverage/lcov.info +725 -623
  157. package/dist/api/controllers/application.js +5 -4
  158. package/dist/api/controllers/component.js +14 -1
  159. package/dist/api/controllers/datasource.js +21 -8
  160. package/dist/api/controllers/integration.js +4 -4
  161. package/dist/api/controllers/plugin/file.js +24 -0
  162. package/dist/api/controllers/plugin/github.js +69 -0
  163. package/dist/api/controllers/plugin/index.js +197 -0
  164. package/dist/api/controllers/plugin/npm.js +58 -0
  165. package/dist/api/controllers/plugin/uploaders.js +11 -0
  166. package/dist/api/controllers/plugin/url.js +24 -0
  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 +52 -2
  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/routes/application.js +3 -2
  174. package/dist/api/routes/index.js +2 -0
  175. package/dist/api/routes/plugin.js +39 -0
  176. package/dist/api/routes/public/tables.js +1 -1
  177. package/dist/api/routes/table.js +1 -1
  178. package/dist/api/routes/utils/validators.js +2 -1
  179. package/dist/app.js +11 -0
  180. package/dist/db/utils.js +10 -1
  181. package/dist/environment.js +1 -0
  182. package/dist/integrations/airtable.js +126 -129
  183. package/dist/integrations/arangodb.js +86 -89
  184. package/dist/integrations/base/query.js +2 -2
  185. package/dist/integrations/base/sqlTable.js +3 -1
  186. package/dist/integrations/couchdb.js +80 -83
  187. package/dist/integrations/dynamodb.js +161 -164
  188. package/dist/integrations/elasticsearch.js +135 -138
  189. package/dist/integrations/firebase.js +154 -157
  190. package/dist/integrations/googlesheets.js +323 -327
  191. package/dist/integrations/index.js +99 -51
  192. package/dist/integrations/microsoftSqlServer.js +240 -243
  193. package/dist/integrations/mongodb.js +239 -242
  194. package/dist/integrations/mysql.js +215 -219
  195. package/dist/integrations/oracle.js +318 -322
  196. package/dist/integrations/postgres.js +262 -265
  197. package/dist/integrations/redis.js +134 -139
  198. package/dist/integrations/rest.js +289 -292
  199. package/dist/integrations/s3.js +61 -64
  200. package/dist/integrations/snowflake.js +83 -86
  201. package/dist/package.json +9 -6
  202. package/dist/tests/utilities/TestConfiguration.js +1 -1
  203. package/dist/threads/query.js +2 -2
  204. package/dist/tsconfig.build.tsbuildinfo +1 -1
  205. package/dist/utilities/fileSystem/index.js +110 -1
  206. package/dist/watch.js +77 -0
  207. package/dist/websocket.js +22 -0
  208. package/package.json +10 -7
  209. package/scripts/dev/manage.js +1 -0
  210. package/specs/openapi.json +3 -3
  211. package/specs/openapi.yaml +3 -3
  212. package/specs/resources/query.js +1 -1
  213. package/src/api/controllers/application.ts +1 -1
  214. package/src/api/controllers/component.js +21 -2
  215. package/src/api/controllers/datasource.js +21 -8
  216. package/src/api/controllers/integration.js +4 -4
  217. package/src/api/controllers/plugin/file.ts +15 -0
  218. package/src/api/controllers/plugin/github.ts +75 -0
  219. package/src/api/controllers/plugin/index.ts +212 -0
  220. package/src/api/controllers/plugin/npm.ts +56 -0
  221. package/src/api/controllers/plugin/uploaders.ts +4 -0
  222. package/src/api/controllers/plugin/url.ts +12 -0
  223. package/src/api/controllers/plugin/utils.ts +19 -0
  224. package/src/api/controllers/row/external.js +1 -1
  225. package/src/api/controllers/screen.js +66 -1
  226. package/src/api/controllers/static/index.ts +1 -0
  227. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  228. package/src/api/controllers/static/templates/preview.hbs +5 -1
  229. package/src/api/routes/application.ts +13 -2
  230. package/src/api/routes/index.ts +2 -0
  231. package/src/api/routes/plugin.ts +14 -0
  232. package/src/api/routes/public/tables.ts +1 -1
  233. package/src/api/routes/table.js +1 -1
  234. package/src/api/routes/tests/query.spec.js +8 -25
  235. package/src/api/routes/utils/validators.js +2 -1
  236. package/src/app.ts +14 -0
  237. package/src/db/utils.js +12 -0
  238. package/src/definitions/openapi.ts +3 -3
  239. package/src/environment.js +1 -0
  240. package/src/integrations/airtable.ts +116 -118
  241. package/src/integrations/arangodb.ts +87 -89
  242. package/src/integrations/base/query.ts +2 -2
  243. package/src/integrations/base/sqlTable.ts +3 -1
  244. package/src/integrations/couchdb.ts +83 -89
  245. package/src/integrations/dynamodb.ts +173 -175
  246. package/src/integrations/elasticsearch.ts +120 -122
  247. package/src/integrations/firebase.ts +157 -159
  248. package/src/integrations/googlesheets.ts +328 -338
  249. package/src/integrations/index.ts +64 -21
  250. package/src/integrations/microsoftSqlServer.ts +249 -251
  251. package/src/integrations/mongodb.ts +261 -258
  252. package/src/integrations/mysql.ts +229 -234
  253. package/src/integrations/oracle.ts +373 -380
  254. package/src/integrations/postgres.ts +264 -268
  255. package/src/integrations/redis.ts +128 -132
  256. package/src/integrations/rest.ts +324 -329
  257. package/src/integrations/s3.ts +68 -71
  258. package/src/integrations/snowflake.ts +80 -82
  259. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  260. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  261. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  262. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  263. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  264. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  265. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  266. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  267. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  268. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  269. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  270. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  271. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  272. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  273. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  274. package/src/module.d.ts +2 -0
  275. package/src/tests/utilities/TestConfiguration.js +1 -1
  276. package/src/threads/query.ts +2 -2
  277. package/src/utilities/fileSystem/index.js +129 -0
  278. package/src/watch.ts +38 -0
  279. package/src/websocket.ts +26 -0
  280. package/builder/assets/index.8f5f192a.js +0 -876
  281. package/builder/assets/vendor.5e1fe644.css +0 -1
  282. package/builder/assets/vendor.67dbd8fa.js +0 -248
@@ -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
+ })