@budibase/server 1.3.20 → 1.3.21-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 (308) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.c9d3f9e8.js +1005 -0
  3. package/builder/assets/index.f1b70f52.css +6 -0
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +451 -390
  6. package/coverage/coverage-final.json +21 -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/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 +46 -46
  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 +13 -13
  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 +9 -9
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +75 -12
  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 +3 -3
  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 +46 -46
  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 +46 -40
  129. package/coverage/lcov-report/middleware/index.html +15 -15
  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 +15 -15
  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 +32 -8
  156. package/coverage/lcov.info +798 -672
  157. package/dist/api/controllers/application.js +5 -5
  158. package/dist/api/controllers/auth.js +9 -0
  159. package/dist/api/controllers/component.js +14 -1
  160. package/dist/api/controllers/datasource.js +21 -8
  161. package/dist/api/controllers/deploy/index.js +1 -8
  162. package/dist/api/controllers/integration.js +4 -4
  163. package/dist/{migrations/functions/usageQuotas/syncDevelopers.js → api/controllers/plugin/file.js} +13 -13
  164. package/dist/api/controllers/plugin/github.js +69 -0
  165. package/dist/api/controllers/plugin/index.js +200 -0
  166. package/dist/api/controllers/plugin/npm.js +58 -0
  167. package/dist/api/controllers/plugin/uploaders.js +11 -0
  168. package/dist/{migrations/functions/usageQuotas/syncPublishedApps.js → api/controllers/plugin/url.js} +13 -15
  169. package/dist/api/controllers/plugin/utils.js +26 -0
  170. package/dist/api/controllers/row/external.js +1 -1
  171. package/dist/api/controllers/screen.js +52 -2
  172. package/dist/api/controllers/static/index.js +1 -0
  173. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  174. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  175. package/dist/api/index.js +1 -1
  176. package/dist/api/routes/application.js +3 -2
  177. package/dist/api/routes/index.js +2 -0
  178. package/dist/{migrations/functions/publishedAppsQuota.js → api/routes/plugin.js} +13 -21
  179. package/dist/api/routes/public/rows.js +1 -82
  180. package/dist/api/routes/public/tables.js +1 -1
  181. package/dist/api/routes/table.js +1 -1
  182. package/dist/api/routes/utils/validators.js +20 -2
  183. package/dist/app.js +16 -1
  184. package/dist/db/utils.js +10 -1
  185. package/dist/environment.js +1 -0
  186. package/dist/integrations/airtable.js +126 -129
  187. package/dist/integrations/arangodb.js +86 -89
  188. package/dist/integrations/base/query.js +2 -2
  189. package/dist/integrations/base/sqlTable.js +3 -1
  190. package/dist/integrations/couchdb.js +80 -83
  191. package/dist/integrations/dynamodb.js +161 -164
  192. package/dist/integrations/elasticsearch.js +135 -138
  193. package/dist/integrations/firebase.js +154 -157
  194. package/dist/integrations/googlesheets.js +323 -327
  195. package/dist/integrations/index.js +99 -51
  196. package/dist/integrations/microsoftSqlServer.js +240 -243
  197. package/dist/integrations/mongodb.js +239 -242
  198. package/dist/integrations/mysql.js +215 -219
  199. package/dist/integrations/oracle.js +318 -322
  200. package/dist/integrations/postgres.js +262 -265
  201. package/dist/integrations/redis.js +134 -139
  202. package/dist/integrations/rest.js +289 -292
  203. package/dist/integrations/s3.js +61 -64
  204. package/dist/integrations/snowflake.js +83 -86
  205. package/dist/middleware/currentapp.js +2 -0
  206. package/dist/migrations/functions/backfill/global.js +0 -3
  207. package/dist/migrations/index.js +0 -10
  208. package/dist/package.json +9 -6
  209. package/dist/tests/utilities/TestConfiguration.js +1 -1
  210. package/dist/threads/query.js +2 -2
  211. package/dist/tsconfig.build.tsbuildinfo +1 -1
  212. package/dist/utilities/fileSystem/index.js +111 -1
  213. package/dist/utilities/workerRequests.js +4 -0
  214. package/dist/watch.js +77 -0
  215. package/dist/websocket.js +22 -0
  216. package/package.json +10 -7
  217. package/scripts/dev/manage.js +4 -0
  218. package/scripts/localdomain.js +3 -1
  219. package/specs/openapi.json +115 -112
  220. package/specs/openapi.yaml +96 -94
  221. package/specs/resources/misc.js +116 -0
  222. package/specs/resources/query.js +1 -1
  223. package/src/api/controllers/application.ts +1 -2
  224. package/src/api/controllers/auth.js +11 -0
  225. package/src/api/controllers/component.js +21 -2
  226. package/src/api/controllers/datasource.js +21 -8
  227. package/src/api/controllers/deploy/index.ts +1 -6
  228. package/src/api/controllers/integration.js +4 -4
  229. package/src/api/controllers/plugin/file.ts +15 -0
  230. package/src/api/controllers/plugin/github.ts +75 -0
  231. package/src/api/controllers/plugin/index.ts +215 -0
  232. package/src/api/controllers/plugin/npm.ts +56 -0
  233. package/src/api/controllers/plugin/uploaders.ts +4 -0
  234. package/src/api/controllers/plugin/url.ts +12 -0
  235. package/src/api/controllers/plugin/utils.ts +19 -0
  236. package/src/api/controllers/public/mapping/types.ts +8 -0
  237. package/src/api/controllers/row/external.js +1 -1
  238. package/src/api/controllers/screen.js +66 -1
  239. package/src/api/controllers/static/index.ts +1 -1
  240. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  241. package/src/api/controllers/static/templates/preview.hbs +5 -1
  242. package/src/api/index.js +1 -1
  243. package/src/api/routes/application.ts +13 -2
  244. package/src/api/routes/index.ts +2 -0
  245. package/src/api/routes/plugin.ts +14 -0
  246. package/src/api/routes/public/rows.ts +1 -82
  247. package/src/api/routes/public/tables.ts +1 -1
  248. package/src/api/routes/table.js +1 -1
  249. package/src/api/routes/tests/query.spec.js +8 -25
  250. package/src/api/routes/tests/user.spec.js +0 -2
  251. package/src/api/routes/utils/validators.js +26 -5
  252. package/src/app.ts +25 -2
  253. package/src/db/utils.js +12 -0
  254. package/src/definitions/openapi.ts +56 -55
  255. package/src/environment.js +1 -0
  256. package/src/integrations/airtable.ts +116 -118
  257. package/src/integrations/arangodb.ts +87 -89
  258. package/src/integrations/base/query.ts +2 -2
  259. package/src/integrations/base/sqlTable.ts +3 -1
  260. package/src/integrations/couchdb.ts +83 -89
  261. package/src/integrations/dynamodb.ts +173 -175
  262. package/src/integrations/elasticsearch.ts +120 -122
  263. package/src/integrations/firebase.ts +157 -159
  264. package/src/integrations/googlesheets.ts +328 -338
  265. package/src/integrations/index.ts +64 -21
  266. package/src/integrations/microsoftSqlServer.ts +249 -251
  267. package/src/integrations/mongodb.ts +261 -258
  268. package/src/integrations/mysql.ts +229 -234
  269. package/src/integrations/oracle.ts +373 -380
  270. package/src/integrations/postgres.ts +264 -268
  271. package/src/integrations/redis.ts +128 -132
  272. package/src/integrations/rest.ts +324 -329
  273. package/src/integrations/s3.ts +68 -71
  274. package/src/integrations/snowflake.ts +80 -82
  275. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  276. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  277. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  278. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  279. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  280. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  281. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  282. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  283. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  284. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  285. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  286. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  287. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  288. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  289. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  290. package/src/middleware/currentapp.js +2 -0
  291. package/src/migrations/functions/backfill/global.ts +0 -3
  292. package/src/migrations/index.ts +0 -16
  293. package/src/module.d.ts +2 -0
  294. package/src/tests/utilities/TestConfiguration.js +1 -1
  295. package/src/threads/query.ts +2 -2
  296. package/src/utilities/fileSystem/index.js +130 -0
  297. package/src/utilities/workerRequests.js +8 -0
  298. package/src/watch.ts +38 -0
  299. package/src/websocket.ts +26 -0
  300. package/builder/assets/index.79165a2a.js +0 -876
  301. package/builder/assets/index.fbe5f97c.css +0 -6
  302. package/builder/assets/vendor.5e1fe644.css +0 -1
  303. package/builder/assets/vendor.67dbd8fa.js +0 -248
  304. package/dist/migrations/functions/developerQuota.js +0 -49
  305. package/src/migrations/functions/developerQuota.ts +0 -15
  306. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  307. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  308. 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
+ })