@budibase/server 1.3.14 → 1.3.15-alpha.2

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 (264) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.2884f3c4.js +995 -0
  3. package/builder/assets/{index.a70e216a.css → index.ecdac070.css} +2 -2
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +296 -254
  6. package/coverage/coverage-final.json +17 -17
  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 +82 -13
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +20 -20
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +30 -30
  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 +1 -1
  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 +1 -1
  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 +1 -1
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  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 +28 -28
  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 +533 -445
  157. package/dist/api/controllers/application.js +5 -4
  158. package/dist/api/controllers/component.js +18 -1
  159. package/dist/api/controllers/datasource.js +4 -4
  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 +192 -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/screen.js +52 -2
  169. package/dist/api/controllers/static/index.js +1 -0
  170. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  171. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  172. package/dist/api/routes/index.js +2 -0
  173. package/dist/api/routes/plugin.js +39 -0
  174. package/dist/app.js +11 -0
  175. package/dist/db/utils.js +10 -1
  176. package/dist/environment.js +1 -0
  177. package/dist/integrations/airtable.js +126 -129
  178. package/dist/integrations/arangodb.js +86 -89
  179. package/dist/integrations/base/query.js +2 -2
  180. package/dist/integrations/couchdb.js +80 -83
  181. package/dist/integrations/dynamodb.js +161 -164
  182. package/dist/integrations/elasticsearch.js +135 -138
  183. package/dist/integrations/firebase.js +154 -157
  184. package/dist/integrations/googlesheets.js +323 -327
  185. package/dist/integrations/index.js +93 -51
  186. package/dist/integrations/microsoftSqlServer.js +240 -243
  187. package/dist/integrations/mongodb.js +239 -242
  188. package/dist/integrations/mysql.js +215 -219
  189. package/dist/integrations/oracle.js +318 -322
  190. package/dist/integrations/postgres.js +262 -265
  191. package/dist/integrations/redis.js +134 -139
  192. package/dist/integrations/rest.js +289 -292
  193. package/dist/integrations/s3.js +61 -64
  194. package/dist/integrations/snowflake.js +83 -86
  195. package/dist/package.json +9 -6
  196. package/dist/threads/query.js +2 -2
  197. package/dist/tsconfig.build.tsbuildinfo +1 -1
  198. package/dist/utilities/fileSystem/index.js +110 -1
  199. package/dist/watch.js +77 -0
  200. package/dist/websocket.js +22 -0
  201. package/package.json +10 -7
  202. package/scripts/dev/manage.js +1 -0
  203. package/src/api/controllers/application.ts +1 -1
  204. package/src/api/controllers/component.js +25 -2
  205. package/src/api/controllers/datasource.js +4 -4
  206. package/src/api/controllers/integration.js +4 -4
  207. package/src/api/controllers/plugin/file.ts +15 -0
  208. package/src/api/controllers/plugin/github.ts +75 -0
  209. package/src/api/controllers/plugin/index.ts +206 -0
  210. package/src/api/controllers/plugin/npm.ts +56 -0
  211. package/src/api/controllers/plugin/uploaders.ts +4 -0
  212. package/src/api/controllers/plugin/url.ts +12 -0
  213. package/src/api/controllers/plugin/utils.ts +19 -0
  214. package/src/api/controllers/screen.js +66 -1
  215. package/src/api/controllers/static/index.ts +1 -0
  216. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  217. package/src/api/controllers/static/templates/preview.hbs +5 -1
  218. package/src/api/routes/index.ts +2 -0
  219. package/src/api/routes/plugin.ts +14 -0
  220. package/src/api/routes/tests/query.spec.js +8 -25
  221. package/src/app.ts +14 -0
  222. package/src/db/utils.js +12 -0
  223. package/src/environment.js +1 -0
  224. package/src/integrations/airtable.ts +116 -118
  225. package/src/integrations/arangodb.ts +87 -89
  226. package/src/integrations/base/query.ts +2 -2
  227. package/src/integrations/couchdb.ts +83 -89
  228. package/src/integrations/dynamodb.ts +173 -175
  229. package/src/integrations/elasticsearch.ts +120 -122
  230. package/src/integrations/firebase.ts +157 -159
  231. package/src/integrations/googlesheets.ts +328 -338
  232. package/src/integrations/index.ts +59 -21
  233. package/src/integrations/microsoftSqlServer.ts +249 -251
  234. package/src/integrations/mongodb.ts +261 -258
  235. package/src/integrations/mysql.ts +229 -234
  236. package/src/integrations/oracle.ts +373 -380
  237. package/src/integrations/postgres.ts +264 -268
  238. package/src/integrations/redis.ts +128 -132
  239. package/src/integrations/rest.ts +324 -329
  240. package/src/integrations/s3.ts +68 -71
  241. package/src/integrations/snowflake.ts +80 -82
  242. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  243. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  244. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  245. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  246. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  247. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  248. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  249. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  250. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  251. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  252. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  253. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  254. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  255. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  256. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  257. package/src/module.d.ts +2 -0
  258. package/src/threads/query.ts +2 -2
  259. package/src/utilities/fileSystem/index.js +129 -0
  260. package/src/watch.ts +38 -0
  261. package/src/websocket.ts +26 -0
  262. package/builder/assets/index.d8428ac8.js +0 -876
  263. package/builder/assets/vendor.5e1fe644.css +0 -1
  264. 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
+ })