@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
@@ -5,109 +5,103 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- module CouchDBModule {
9
- const PouchDB = require("pouchdb")
8
+ const PouchDB = require("pouchdb")
10
9
 
11
- interface CouchDBConfig {
12
- url: string
13
- database: string
14
- }
10
+ interface CouchDBConfig {
11
+ url: string
12
+ database: string
13
+ }
15
14
 
16
- const SCHEMA: Integration = {
17
- docs: "https://docs.couchdb.org/en/stable/",
18
- friendlyName: "CouchDB",
19
- type: "Non-relational",
20
- description:
21
- "Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
22
- datasource: {
23
- url: {
24
- type: DatasourceFieldType.STRING,
25
- required: true,
26
- default: "http://localhost:5984",
27
- },
28
- database: {
29
- type: DatasourceFieldType.STRING,
30
- required: true,
31
- },
15
+ const SCHEMA: Integration = {
16
+ docs: "https://docs.couchdb.org/en/stable/",
17
+ friendlyName: "CouchDB",
18
+ type: "Non-relational",
19
+ description:
20
+ "Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.",
21
+ datasource: {
22
+ url: {
23
+ type: DatasourceFieldType.STRING,
24
+ required: true,
25
+ default: "http://localhost:5984",
32
26
  },
33
- query: {
34
- create: {
35
- type: QueryType.JSON,
36
- },
37
- read: {
38
- type: QueryType.JSON,
39
- },
40
- update: {
41
- type: QueryType.JSON,
42
- },
43
- delete: {
44
- type: QueryType.FIELDS,
45
- fields: {
46
- id: {
47
- type: DatasourceFieldType.STRING,
48
- required: true,
49
- },
27
+ database: {
28
+ type: DatasourceFieldType.STRING,
29
+ required: true,
30
+ },
31
+ },
32
+ query: {
33
+ create: {
34
+ type: QueryType.JSON,
35
+ },
36
+ read: {
37
+ type: QueryType.JSON,
38
+ },
39
+ update: {
40
+ type: QueryType.JSON,
41
+ },
42
+ delete: {
43
+ type: QueryType.FIELDS,
44
+ fields: {
45
+ id: {
46
+ type: DatasourceFieldType.STRING,
47
+ required: true,
50
48
  },
51
49
  },
52
50
  },
53
- }
51
+ },
52
+ }
54
53
 
55
- class CouchDBIntegration implements IntegrationBase {
56
- private config: CouchDBConfig
57
- private readonly client: any
54
+ class CouchDBIntegration implements IntegrationBase {
55
+ private config: CouchDBConfig
56
+ private readonly client: any
58
57
 
59
- constructor(config: CouchDBConfig) {
60
- this.config = config
61
- this.client = new PouchDB(`${config.url}/${config.database}`)
62
- }
63
-
64
- async query(
65
- command: string,
66
- errorMsg: string,
67
- query: { json?: object; id?: string }
68
- ) {
69
- try {
70
- const response = await this.client[command](query.id || query.json)
71
- await this.client.close()
72
- return response
73
- } catch (err) {
74
- console.error(errorMsg, err)
75
- throw err
76
- }
77
- }
58
+ constructor(config: CouchDBConfig) {
59
+ this.config = config
60
+ this.client = new PouchDB(`${config.url}/${config.database}`)
61
+ }
78
62
 
79
- async create(query: { json: object }) {
80
- return this.query("post", "Error writing to couchDB", query)
63
+ async query(
64
+ command: string,
65
+ errorMsg: string,
66
+ query: { json?: object; id?: string }
67
+ ) {
68
+ try {
69
+ const response = await this.client[command](query.id || query.json)
70
+ await this.client.close()
71
+ return response
72
+ } catch (err) {
73
+ console.error(errorMsg, err)
74
+ throw err
81
75
  }
76
+ }
82
77
 
83
- async read(query: { json: object }) {
84
- const result = await this.query("allDocs", "Error querying couchDB", {
85
- json: {
86
- include_docs: true,
87
- ...query.json,
88
- },
89
- })
90
- return result.rows.map((row: { doc: object }) => row.doc)
91
- }
78
+ async create(query: { json: object }) {
79
+ return this.query("post", "Error writing to couchDB", query)
80
+ }
92
81
 
93
- async update(query: { json: object }) {
94
- return this.query("put", "Error updating couchDB document", query)
95
- }
82
+ async read(query: { json: object }) {
83
+ const result = await this.query("allDocs", "Error querying couchDB", {
84
+ json: {
85
+ include_docs: true,
86
+ ...query.json,
87
+ },
88
+ })
89
+ return result.rows.map((row: { doc: object }) => row.doc)
90
+ }
96
91
 
97
- async delete(query: { id: string }) {
98
- const doc = await this.query(
99
- "get",
100
- "Cannot find doc to be deleted",
101
- query
102
- )
103
- return this.query("remove", "Error deleting couchDB document", {
104
- json: doc,
105
- })
106
- }
92
+ async update(query: { json: object }) {
93
+ return this.query("put", "Error updating couchDB document", query)
107
94
  }
108
95
 
109
- module.exports = {
110
- schema: SCHEMA,
111
- integration: CouchDBIntegration,
96
+ async delete(query: { id: string }) {
97
+ const doc = await this.query("get", "Cannot find doc to be deleted", query)
98
+ return this.query("remove", "Error deleting couchDB document", {
99
+ json: doc,
100
+ })
112
101
  }
113
102
  }
103
+
104
+ export default {
105
+ schema: SCHEMA,
106
+ integration: CouchDBIntegration,
107
+ }
@@ -5,218 +5,216 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- module DynamoModule {
9
- const AWS = require("aws-sdk")
10
- const { AWS_REGION } = require("../db/dynamoClient")
8
+ const AWS = require("aws-sdk")
9
+ const { AWS_REGION } = require("../db/dynamoClient")
11
10
 
12
- interface DynamoDBConfig {
13
- region: string
14
- accessKeyId: string
15
- secretAccessKey: string
16
- endpoint?: string
17
- currentClockSkew?: boolean
18
- }
11
+ interface DynamoDBConfig {
12
+ region: string
13
+ accessKeyId: string
14
+ secretAccessKey: string
15
+ endpoint?: string
16
+ currentClockSkew?: boolean
17
+ }
19
18
 
20
- const SCHEMA: Integration = {
21
- docs: "https://github.com/dabit3/dynamodb-documentclient-cheat-sheet",
22
- description:
23
- "Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.",
24
- friendlyName: "DynamoDB",
25
- type: "Non-relational",
26
- datasource: {
27
- region: {
28
- type: DatasourceFieldType.STRING,
29
- required: true,
30
- default: "us-east-1",
31
- },
32
- accessKeyId: {
33
- type: DatasourceFieldType.PASSWORD,
34
- required: true,
35
- },
36
- secretAccessKey: {
37
- type: DatasourceFieldType.PASSWORD,
38
- required: true,
39
- },
40
- endpoint: {
41
- type: DatasourceFieldType.STRING,
42
- required: false,
43
- default: "https://dynamodb.us-east-1.amazonaws.com",
44
- },
19
+ const SCHEMA: Integration = {
20
+ docs: "https://github.com/dabit3/dynamodb-documentclient-cheat-sheet",
21
+ description:
22
+ "Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.",
23
+ friendlyName: "DynamoDB",
24
+ type: "Non-relational",
25
+ datasource: {
26
+ region: {
27
+ type: DatasourceFieldType.STRING,
28
+ required: true,
29
+ default: "us-east-1",
30
+ },
31
+ accessKeyId: {
32
+ type: DatasourceFieldType.PASSWORD,
33
+ required: true,
34
+ },
35
+ secretAccessKey: {
36
+ type: DatasourceFieldType.PASSWORD,
37
+ required: true,
45
38
  },
46
- query: {
47
- create: {
48
- type: QueryType.FIELDS,
49
- customisable: true,
50
- fields: {
51
- table: {
52
- type: DatasourceFieldType.STRING,
53
- required: true,
54
- },
39
+ endpoint: {
40
+ type: DatasourceFieldType.STRING,
41
+ required: false,
42
+ default: "https://dynamodb.us-east-1.amazonaws.com",
43
+ },
44
+ },
45
+ query: {
46
+ create: {
47
+ type: QueryType.FIELDS,
48
+ customisable: true,
49
+ fields: {
50
+ table: {
51
+ type: DatasourceFieldType.STRING,
52
+ required: true,
55
53
  },
56
54
  },
57
- read: {
58
- type: QueryType.FIELDS,
59
- customisable: true,
60
- readable: true,
61
- fields: {
62
- table: {
63
- type: DatasourceFieldType.STRING,
64
- required: true,
65
- },
66
- index: {
67
- type: DatasourceFieldType.STRING,
68
- },
55
+ },
56
+ read: {
57
+ type: QueryType.FIELDS,
58
+ customisable: true,
59
+ readable: true,
60
+ fields: {
61
+ table: {
62
+ type: DatasourceFieldType.STRING,
63
+ required: true,
64
+ },
65
+ index: {
66
+ type: DatasourceFieldType.STRING,
69
67
  },
70
68
  },
71
- scan: {
72
- type: QueryType.FIELDS,
73
- customisable: true,
74
- readable: true,
75
- fields: {
76
- table: {
77
- type: DatasourceFieldType.STRING,
78
- required: true,
79
- },
80
- index: {
81
- type: DatasourceFieldType.STRING,
82
- },
69
+ },
70
+ scan: {
71
+ type: QueryType.FIELDS,
72
+ customisable: true,
73
+ readable: true,
74
+ fields: {
75
+ table: {
76
+ type: DatasourceFieldType.STRING,
77
+ required: true,
78
+ },
79
+ index: {
80
+ type: DatasourceFieldType.STRING,
83
81
  },
84
82
  },
85
- describe: {
86
- type: QueryType.FIELDS,
87
- customisable: true,
88
- readable: true,
89
- fields: {
90
- table: {
91
- type: DatasourceFieldType.STRING,
92
- required: true,
93
- },
83
+ },
84
+ describe: {
85
+ type: QueryType.FIELDS,
86
+ customisable: true,
87
+ readable: true,
88
+ fields: {
89
+ table: {
90
+ type: DatasourceFieldType.STRING,
91
+ required: true,
94
92
  },
95
93
  },
96
- get: {
97
- type: QueryType.FIELDS,
98
- customisable: true,
99
- readable: true,
100
- fields: {
101
- table: {
102
- type: DatasourceFieldType.STRING,
103
- required: true,
104
- },
94
+ },
95
+ get: {
96
+ type: QueryType.FIELDS,
97
+ customisable: true,
98
+ readable: true,
99
+ fields: {
100
+ table: {
101
+ type: DatasourceFieldType.STRING,
102
+ required: true,
105
103
  },
106
104
  },
107
- update: {
108
- type: QueryType.FIELDS,
109
- customisable: true,
110
- fields: {
111
- table: {
112
- type: DatasourceFieldType.STRING,
113
- required: true,
114
- },
105
+ },
106
+ update: {
107
+ type: QueryType.FIELDS,
108
+ customisable: true,
109
+ fields: {
110
+ table: {
111
+ type: DatasourceFieldType.STRING,
112
+ required: true,
115
113
  },
116
114
  },
117
- delete: {
118
- type: QueryType.FIELDS,
119
- customisable: true,
120
- fields: {
121
- table: {
122
- type: DatasourceFieldType.STRING,
123
- required: true,
124
- },
115
+ },
116
+ delete: {
117
+ type: QueryType.FIELDS,
118
+ customisable: true,
119
+ fields: {
120
+ table: {
121
+ type: DatasourceFieldType.STRING,
122
+ required: true,
125
123
  },
126
124
  },
127
125
  },
128
- }
129
-
130
- class DynamoDBIntegration implements IntegrationBase {
131
- private config: DynamoDBConfig
132
- private client: any
126
+ },
127
+ }
133
128
 
134
- constructor(config: DynamoDBConfig) {
135
- this.config = config
129
+ class DynamoDBIntegration implements IntegrationBase {
130
+ private config: DynamoDBConfig
131
+ private client: any
136
132
 
137
- // User is using a local dynamoDB endpoint, don't auth with remote
138
- if (this.config?.endpoint?.includes("localhost")) {
139
- // @ts-ignore
140
- this.config = {}
141
- }
133
+ constructor(config: DynamoDBConfig) {
134
+ this.config = config
142
135
 
143
- this.config = {
144
- ...this.config,
145
- currentClockSkew: true,
146
- region: config.region || AWS_REGION,
147
- endpoint: config.endpoint || undefined,
148
- }
149
- this.client = new AWS.DynamoDB.DocumentClient(this.config)
136
+ // User is using a local dynamoDB endpoint, don't auth with remote
137
+ if (this.config?.endpoint?.includes("localhost")) {
138
+ // @ts-ignore
139
+ this.config = {}
150
140
  }
151
141
 
152
- async create(query: { table: string; json: object }) {
153
- const params = {
154
- TableName: query.table,
155
- ...query.json,
156
- }
157
- return this.client.put(params).promise()
142
+ this.config = {
143
+ ...this.config,
144
+ currentClockSkew: true,
145
+ region: config.region || AWS_REGION,
146
+ endpoint: config.endpoint || undefined,
158
147
  }
148
+ this.client = new AWS.DynamoDB.DocumentClient(this.config)
149
+ }
159
150
 
160
- async read(query: { table: string; json: object; index: null | string }) {
161
- const params = {
162
- TableName: query.table,
163
- IndexName: query.index ? query.index : undefined,
164
- ...query.json,
165
- }
166
- const response = await this.client.query(params).promise()
167
- if (response.Items) {
168
- return response.Items
169
- }
170
- return response
151
+ async create(query: { table: string; json: object }) {
152
+ const params = {
153
+ TableName: query.table,
154
+ ...query.json,
171
155
  }
156
+ return this.client.put(params).promise()
157
+ }
172
158
 
173
- async scan(query: { table: string; json: object; index: null | string }) {
174
- const params = {
175
- TableName: query.table,
176
- IndexName: query.index ? query.index : undefined,
177
- ...query.json,
178
- }
179
- const response = await this.client.scan(params).promise()
180
- if (response.Items) {
181
- return response.Items
182
- }
183
- return response
159
+ async read(query: { table: string; json: object; index: null | string }) {
160
+ const params = {
161
+ TableName: query.table,
162
+ IndexName: query.index ? query.index : undefined,
163
+ ...query.json,
184
164
  }
165
+ const response = await this.client.query(params).promise()
166
+ if (response.Items) {
167
+ return response.Items
168
+ }
169
+ return response
170
+ }
185
171
 
186
- async describe(query: { table: string }) {
187
- const params = {
188
- TableName: query.table,
189
- }
190
- return new AWS.DynamoDB(this.config).describeTable(params).promise()
172
+ async scan(query: { table: string; json: object; index: null | string }) {
173
+ const params = {
174
+ TableName: query.table,
175
+ IndexName: query.index ? query.index : undefined,
176
+ ...query.json,
191
177
  }
178
+ const response = await this.client.scan(params).promise()
179
+ if (response.Items) {
180
+ return response.Items
181
+ }
182
+ return response
183
+ }
192
184
 
193
- async get(query: { table: string; json: object }) {
194
- const params = {
195
- TableName: query.table,
196
- ...query.json,
197
- }
198
- return this.client.get(params).promise()
185
+ async describe(query: { table: string }) {
186
+ const params = {
187
+ TableName: query.table,
199
188
  }
189
+ return new AWS.DynamoDB(this.config).describeTable(params).promise()
190
+ }
200
191
 
201
- async update(query: { table: string; json: object }) {
202
- const params = {
203
- TableName: query.table,
204
- ...query.json,
205
- }
206
- return this.client.update(params).promise()
192
+ async get(query: { table: string; json: object }) {
193
+ const params = {
194
+ TableName: query.table,
195
+ ...query.json,
207
196
  }
197
+ return this.client.get(params).promise()
198
+ }
208
199
 
209
- async delete(query: { table: string; json: object }) {
210
- const params = {
211
- TableName: query.table,
212
- ...query.json,
213
- }
214
- return this.client.delete(params).promise()
200
+ async update(query: { table: string; json: object }) {
201
+ const params = {
202
+ TableName: query.table,
203
+ ...query.json,
215
204
  }
205
+ return this.client.update(params).promise()
216
206
  }
217
207
 
218
- module.exports = {
219
- schema: SCHEMA,
220
- integration: DynamoDBIntegration,
208
+ async delete(query: { table: string; json: object }) {
209
+ const params = {
210
+ TableName: query.table,
211
+ ...query.json,
212
+ }
213
+ return this.client.delete(params).promise()
221
214
  }
222
215
  }
216
+
217
+ export default {
218
+ schema: SCHEMA,
219
+ integration: DynamoDBIntegration,
220
+ }