@budibase/server 1.3.21-alpha.1 → 1.3.21

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.8d12d461.css +6 -0
  3. package/builder/assets/index.d354271c.js +879 -0
  4. package/builder/assets/vendor.5e1fe644.css +1 -0
  5. package/builder/assets/vendor.67dbd8fa.js +248 -0
  6. package/builder/index.html +4 -2
  7. package/coverage/clover.xml +390 -451
  8. package/coverage/coverage-final.json +21 -21
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +8 -41
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +11 -68
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +34 -73
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +46 -46
  18. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  28. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/screen.js.html +12 -207
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +13 -13
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  71. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +12 -75
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +1 -1
  78. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  79. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  80. package/coverage/lcov-report/automations/index.html +1 -1
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/index.html +1 -1
  89. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/constants/index.html +1 -1
  109. package/coverage/lcov-report/constants/index.js.html +1 -1
  110. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  111. package/coverage/lcov-report/constants/screens.js.html +1 -1
  112. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  113. package/coverage/lcov-report/db/index.html +18 -18
  114. package/coverage/lcov-report/db/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  119. package/coverage/lcov-report/db/newid.js.html +2 -2
  120. package/coverage/lcov-report/db/utils.js.html +20 -56
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  122. package/coverage/lcov-report/events/index.html +1 -1
  123. package/coverage/lcov-report/events/index.js.html +1 -1
  124. package/coverage/lcov-report/events/utils.js.html +1 -1
  125. package/coverage/lcov-report/index.html +46 -46
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  127. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  128. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  129. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  130. package/coverage/lcov-report/middleware/currentapp.js.html +40 -46
  131. package/coverage/lcov-report/middleware/index.html +15 -15
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  133. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  134. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  135. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  136. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  137. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  138. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  139. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  140. package/coverage/lcov-report/utilities/global.js.html +16 -16
  141. package/coverage/lcov-report/utilities/index.html +15 -15
  142. package/coverage/lcov-report/utilities/index.js.html +24 -24
  143. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  144. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  150. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  151. package/coverage/lcov-report/utilities/security.js.html +2 -2
  152. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  156. package/coverage/lcov-report/utilities/users.js.html +1 -1
  157. package/coverage/lcov-report/utilities/workerRequests.js.html +8 -32
  158. package/coverage/lcov.info +672 -798
  159. package/dist/api/controllers/application.js +5 -5
  160. package/dist/api/controllers/auth.js +0 -9
  161. package/dist/api/controllers/component.js +1 -14
  162. package/dist/api/controllers/datasource.js +8 -21
  163. package/dist/api/controllers/deploy/index.js +8 -1
  164. package/dist/api/controllers/integration.js +4 -4
  165. package/dist/api/controllers/row/external.js +1 -1
  166. package/dist/api/controllers/screen.js +2 -52
  167. package/dist/api/controllers/static/index.js +0 -1
  168. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  169. package/dist/api/controllers/static/templates/preview.hbs +1 -5
  170. package/dist/api/index.js +1 -1
  171. package/dist/api/routes/application.js +2 -3
  172. package/dist/api/routes/index.js +0 -2
  173. package/dist/api/routes/public/rows.js +82 -1
  174. package/dist/api/routes/public/tables.js +1 -1
  175. package/dist/api/routes/table.js +1 -1
  176. package/dist/api/routes/utils/validators.js +2 -20
  177. package/dist/app.js +1 -16
  178. package/dist/db/utils.js +1 -10
  179. package/dist/environment.js +0 -1
  180. package/dist/integrations/airtable.js +129 -126
  181. package/dist/integrations/arangodb.js +89 -86
  182. package/dist/integrations/base/query.js +2 -2
  183. package/dist/integrations/base/sqlTable.js +1 -3
  184. package/dist/integrations/couchdb.js +83 -80
  185. package/dist/integrations/dynamodb.js +164 -161
  186. package/dist/integrations/elasticsearch.js +138 -135
  187. package/dist/integrations/firebase.js +157 -154
  188. package/dist/integrations/googlesheets.js +327 -323
  189. package/dist/integrations/index.js +51 -99
  190. package/dist/integrations/microsoftSqlServer.js +243 -240
  191. package/dist/integrations/mongodb.js +242 -239
  192. package/dist/integrations/mysql.js +219 -215
  193. package/dist/integrations/oracle.js +322 -318
  194. package/dist/integrations/postgres.js +265 -262
  195. package/dist/integrations/redis.js +139 -134
  196. package/dist/integrations/rest.js +292 -289
  197. package/dist/integrations/s3.js +64 -61
  198. package/dist/integrations/snowflake.js +86 -83
  199. package/dist/middleware/currentapp.js +0 -2
  200. package/dist/migrations/functions/backfill/global.js +3 -0
  201. package/dist/migrations/functions/developerQuota.js +49 -0
  202. package/dist/{api/routes/plugin.js → migrations/functions/publishedAppsQuota.js} +21 -13
  203. package/dist/{api/controllers/plugin/url.js → migrations/functions/usageQuotas/syncDevelopers.js} +13 -13
  204. package/dist/{api/controllers/plugin/file.js → migrations/functions/usageQuotas/syncPublishedApps.js} +15 -13
  205. package/dist/migrations/index.js +10 -0
  206. package/dist/package.json +6 -9
  207. package/dist/tests/utilities/TestConfiguration.js +1 -1
  208. package/dist/threads/query.js +2 -2
  209. package/dist/tsconfig.build.tsbuildinfo +1 -1
  210. package/dist/utilities/fileSystem/index.js +1 -111
  211. package/dist/utilities/workerRequests.js +0 -4
  212. package/package.json +7 -10
  213. package/scripts/dev/manage.js +0 -4
  214. package/scripts/localdomain.js +1 -3
  215. package/specs/openapi.json +112 -115
  216. package/specs/openapi.yaml +94 -96
  217. package/specs/resources/misc.js +0 -116
  218. package/specs/resources/query.js +1 -1
  219. package/src/api/controllers/application.ts +2 -1
  220. package/src/api/controllers/auth.js +0 -11
  221. package/src/api/controllers/component.js +2 -21
  222. package/src/api/controllers/datasource.js +8 -21
  223. package/src/api/controllers/deploy/index.ts +6 -1
  224. package/src/api/controllers/integration.js +4 -4
  225. package/src/api/controllers/public/mapping/types.ts +0 -8
  226. package/src/api/controllers/row/external.js +1 -1
  227. package/src/api/controllers/screen.js +1 -66
  228. package/src/api/controllers/static/index.ts +1 -1
  229. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  230. package/src/api/controllers/static/templates/preview.hbs +1 -5
  231. package/src/api/index.js +1 -1
  232. package/src/api/routes/application.ts +2 -13
  233. package/src/api/routes/index.ts +0 -2
  234. package/src/api/routes/public/rows.ts +82 -1
  235. package/src/api/routes/public/tables.ts +1 -1
  236. package/src/api/routes/table.js +1 -1
  237. package/src/api/routes/tests/query.spec.js +25 -8
  238. package/src/api/routes/tests/user.spec.js +2 -0
  239. package/src/api/routes/utils/validators.js +5 -26
  240. package/src/app.ts +2 -25
  241. package/src/db/utils.js +0 -12
  242. package/src/definitions/openapi.ts +55 -56
  243. package/src/environment.js +0 -1
  244. package/src/integrations/airtable.ts +118 -116
  245. package/src/integrations/arangodb.ts +89 -87
  246. package/src/integrations/base/query.ts +2 -2
  247. package/src/integrations/base/sqlTable.ts +1 -3
  248. package/src/integrations/couchdb.ts +89 -83
  249. package/src/integrations/dynamodb.ts +175 -173
  250. package/src/integrations/elasticsearch.ts +122 -120
  251. package/src/integrations/firebase.ts +159 -157
  252. package/src/integrations/googlesheets.ts +338 -328
  253. package/src/integrations/index.ts +21 -64
  254. package/src/integrations/microsoftSqlServer.ts +251 -249
  255. package/src/integrations/mongodb.ts +258 -261
  256. package/src/integrations/mysql.ts +234 -229
  257. package/src/integrations/oracle.ts +380 -373
  258. package/src/integrations/postgres.ts +268 -264
  259. package/src/integrations/redis.ts +132 -128
  260. package/src/integrations/rest.ts +329 -324
  261. package/src/integrations/s3.ts +71 -68
  262. package/src/integrations/snowflake.ts +82 -80
  263. package/src/integrations/tests/{airtable.spec.ts → airtable.spec.js} +18 -21
  264. package/src/integrations/tests/{arangodb.spec.ts → arangodb.spec.js} +9 -12
  265. package/src/integrations/tests/{couchdb.spec.ts → couchdb.spec.js} +27 -33
  266. package/src/integrations/tests/{dynamodb.spec.ts → dynamodb.spec.js} +41 -45
  267. package/src/integrations/tests/{elasticsearch.spec.ts → elasticsearch.spec.js} +21 -22
  268. package/src/integrations/tests/{firebase.spec.ts → firebase.spec.js} +28 -33
  269. package/src/integrations/tests/{microsoftSqlServer.spec.ts → microsoftSqlServer.spec.js} +11 -12
  270. package/src/integrations/tests/{mongo.spec.ts → mongo.spec.js} +35 -46
  271. package/src/integrations/tests/{mysql.spec.ts → mysql.spec.js} +15 -17
  272. package/src/integrations/tests/{oracle.spec.ts → oracle.spec.js} +17 -19
  273. package/src/integrations/tests/{postgres.spec.ts → postgres.spec.js} +17 -19
  274. package/src/integrations/tests/{redis.spec.ts → redis.spec.js} +18 -27
  275. package/src/integrations/tests/{rest.spec.ts → rest.spec.js} +14 -22
  276. package/src/integrations/tests/{s3.spec.ts → s3.spec.js} +8 -10
  277. package/src/integrations/tests/{sql.spec.ts → sql.spec.js} +177 -228
  278. package/src/middleware/currentapp.js +0 -2
  279. package/src/migrations/functions/backfill/global.ts +3 -0
  280. package/src/migrations/functions/developerQuota.ts +15 -0
  281. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  282. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  283. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  284. package/src/migrations/index.ts +16 -0
  285. package/src/module.d.ts +0 -2
  286. package/src/tests/utilities/TestConfiguration.js +1 -1
  287. package/src/threads/query.ts +2 -2
  288. package/src/utilities/fileSystem/index.js +0 -130
  289. package/src/utilities/workerRequests.js +0 -8
  290. package/builder/assets/index.c9d3f9e8.js +0 -1005
  291. package/builder/assets/index.f1b70f52.css +0 -6
  292. package/dist/api/controllers/plugin/github.js +0 -69
  293. package/dist/api/controllers/plugin/index.js +0 -200
  294. package/dist/api/controllers/plugin/npm.js +0 -58
  295. package/dist/api/controllers/plugin/uploaders.js +0 -11
  296. package/dist/api/controllers/plugin/utils.js +0 -26
  297. package/dist/watch.js +0 -77
  298. package/dist/websocket.js +0 -22
  299. package/src/api/controllers/plugin/file.ts +0 -15
  300. package/src/api/controllers/plugin/github.ts +0 -75
  301. package/src/api/controllers/plugin/index.ts +0 -215
  302. package/src/api/controllers/plugin/npm.ts +0 -56
  303. package/src/api/controllers/plugin/uploaders.ts +0 -4
  304. package/src/api/controllers/plugin/url.ts +0 -12
  305. package/src/api/controllers/plugin/utils.ts +0 -19
  306. package/src/api/routes/plugin.ts +0 -14
  307. package/src/watch.ts +0 -38
  308. package/src/websocket.ts +0 -26
@@ -5,216 +5,218 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- const AWS = require("aws-sdk")
9
- const { AWS_REGION } = require("../db/dynamoClient")
8
+ module DynamoModule {
9
+ const AWS = require("aws-sdk")
10
+ const { AWS_REGION } = require("../db/dynamoClient")
10
11
 
11
- interface DynamoDBConfig {
12
- region: string
13
- accessKeyId: string
14
- secretAccessKey: string
15
- endpoint?: string
16
- currentClockSkew?: boolean
17
- }
12
+ interface DynamoDBConfig {
13
+ region: string
14
+ accessKeyId: string
15
+ secretAccessKey: string
16
+ endpoint?: string
17
+ currentClockSkew?: boolean
18
+ }
18
19
 
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,
38
- },
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,
53
- },
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",
54
44
  },
55
45
  },
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,
46
+ query: {
47
+ create: {
48
+ type: QueryType.FIELDS,
49
+ customisable: true,
50
+ fields: {
51
+ table: {
52
+ type: DatasourceFieldType.STRING,
53
+ required: true,
54
+ },
67
55
  },
68
56
  },
69
- },
70
- scan: {
71
- type: QueryType.FIELDS,
72
- customisable: true,
73
- readable: true,
74
- fields: {
75
- table: {
76
- type: DatasourceFieldType.STRING,
77
- required: true,
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
+ },
78
69
  },
79
- index: {
80
- type: DatasourceFieldType.STRING,
70
+ },
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
+ },
81
83
  },
82
84
  },
83
- },
84
- describe: {
85
- type: QueryType.FIELDS,
86
- customisable: true,
87
- readable: true,
88
- fields: {
89
- table: {
90
- type: DatasourceFieldType.STRING,
91
- required: true,
85
+ describe: {
86
+ type: QueryType.FIELDS,
87
+ customisable: true,
88
+ readable: true,
89
+ fields: {
90
+ table: {
91
+ type: DatasourceFieldType.STRING,
92
+ required: true,
93
+ },
92
94
  },
93
95
  },
94
- },
95
- get: {
96
- type: QueryType.FIELDS,
97
- customisable: true,
98
- readable: true,
99
- fields: {
100
- table: {
101
- type: DatasourceFieldType.STRING,
102
- required: true,
96
+ get: {
97
+ type: QueryType.FIELDS,
98
+ customisable: true,
99
+ readable: true,
100
+ fields: {
101
+ table: {
102
+ type: DatasourceFieldType.STRING,
103
+ required: true,
104
+ },
103
105
  },
104
106
  },
105
- },
106
- update: {
107
- type: QueryType.FIELDS,
108
- customisable: true,
109
- fields: {
110
- table: {
111
- type: DatasourceFieldType.STRING,
112
- required: true,
107
+ update: {
108
+ type: QueryType.FIELDS,
109
+ customisable: true,
110
+ fields: {
111
+ table: {
112
+ type: DatasourceFieldType.STRING,
113
+ required: true,
114
+ },
113
115
  },
114
116
  },
115
- },
116
- delete: {
117
- type: QueryType.FIELDS,
118
- customisable: true,
119
- fields: {
120
- table: {
121
- type: DatasourceFieldType.STRING,
122
- required: true,
117
+ delete: {
118
+ type: QueryType.FIELDS,
119
+ customisable: true,
120
+ fields: {
121
+ table: {
122
+ type: DatasourceFieldType.STRING,
123
+ required: true,
124
+ },
123
125
  },
124
126
  },
125
127
  },
126
- },
127
- }
128
+ }
128
129
 
129
- class DynamoDBIntegration implements IntegrationBase {
130
- private config: DynamoDBConfig
131
- private client: any
130
+ class DynamoDBIntegration implements IntegrationBase {
131
+ private config: DynamoDBConfig
132
+ private client: any
132
133
 
133
- constructor(config: DynamoDBConfig) {
134
- this.config = config
134
+ constructor(config: DynamoDBConfig) {
135
+ this.config = config
135
136
 
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 = {}
140
- }
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
+ }
141
142
 
142
- this.config = {
143
- ...this.config,
144
- currentClockSkew: true,
145
- region: config.region || AWS_REGION,
146
- endpoint: config.endpoint || undefined,
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)
147
150
  }
148
- this.client = new AWS.DynamoDB.DocumentClient(this.config)
149
- }
150
151
 
151
- async create(query: { table: string; json: object }) {
152
- const params = {
153
- TableName: query.table,
154
- ...query.json,
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()
155
158
  }
156
- return this.client.put(params).promise()
157
- }
158
159
 
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,
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
164
171
  }
165
- const response = await this.client.query(params).promise()
166
- if (response.Items) {
167
- return response.Items
168
- }
169
- return response
170
- }
171
172
 
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,
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
177
184
  }
178
- const response = await this.client.scan(params).promise()
179
- if (response.Items) {
180
- return response.Items
181
- }
182
- return response
183
- }
184
185
 
185
- async describe(query: { table: string }) {
186
- const params = {
187
- TableName: query.table,
186
+ async describe(query: { table: string }) {
187
+ const params = {
188
+ TableName: query.table,
189
+ }
190
+ return new AWS.DynamoDB(this.config).describeTable(params).promise()
188
191
  }
189
- return new AWS.DynamoDB(this.config).describeTable(params).promise()
190
- }
191
192
 
192
- async get(query: { table: string; json: object }) {
193
- const params = {
194
- TableName: query.table,
195
- ...query.json,
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()
196
199
  }
197
- return this.client.get(params).promise()
198
- }
199
200
 
200
- async update(query: { table: string; json: object }) {
201
- const params = {
202
- TableName: query.table,
203
- ...query.json,
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()
204
207
  }
205
- return this.client.update(params).promise()
206
- }
207
208
 
208
- async delete(query: { table: string; json: object }) {
209
- const params = {
210
- TableName: query.table,
211
- ...query.json,
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()
212
215
  }
213
- return this.client.delete(params).promise()
214
216
  }
215
- }
216
217
 
217
- export default {
218
- schema: SCHEMA,
219
- integration: DynamoDBIntegration,
218
+ module.exports = {
219
+ schema: SCHEMA,
220
+ integration: DynamoDBIntegration,
221
+ }
220
222
  }
@@ -5,149 +5,151 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- const { Client } = require("@elastic/elasticsearch")
8
+ module ElasticsearchModule {
9
+ const { Client } = require("@elastic/elasticsearch")
9
10
 
10
- interface ElasticsearchConfig {
11
- url: string
12
- }
11
+ interface ElasticsearchConfig {
12
+ url: string
13
+ }
13
14
 
14
- const SCHEMA: Integration = {
15
- docs: "https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html",
16
- description:
17
- "Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.",
18
- friendlyName: "ElasticSearch",
19
- type: "Non-relational",
20
- datasource: {
21
- url: {
22
- type: DatasourceFieldType.STRING,
23
- required: true,
24
- default: "http://localhost:9200",
25
- },
26
- },
27
- query: {
28
- create: {
29
- type: QueryType.FIELDS,
30
- customisable: true,
31
- fields: {
32
- index: {
33
- type: DatasourceFieldType.STRING,
34
- required: true,
35
- },
15
+ const SCHEMA: Integration = {
16
+ docs: "https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html",
17
+ description:
18
+ "Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.",
19
+ friendlyName: "ElasticSearch",
20
+ type: "Non-relational",
21
+ datasource: {
22
+ url: {
23
+ type: DatasourceFieldType.STRING,
24
+ required: true,
25
+ default: "http://localhost:9200",
36
26
  },
37
27
  },
38
- read: {
39
- type: QueryType.FIELDS,
40
- customisable: true,
41
- fields: {
42
- index: {
43
- type: DatasourceFieldType.STRING,
44
- required: true,
28
+ query: {
29
+ create: {
30
+ type: QueryType.FIELDS,
31
+ customisable: true,
32
+ fields: {
33
+ index: {
34
+ type: DatasourceFieldType.STRING,
35
+ required: true,
36
+ },
45
37
  },
46
38
  },
47
- },
48
- update: {
49
- type: QueryType.FIELDS,
50
- customisable: true,
51
- fields: {
52
- id: {
53
- type: DatasourceFieldType.STRING,
54
- required: true,
55
- },
56
- index: {
57
- type: DatasourceFieldType.STRING,
58
- required: true,
39
+ read: {
40
+ type: QueryType.FIELDS,
41
+ customisable: true,
42
+ fields: {
43
+ index: {
44
+ type: DatasourceFieldType.STRING,
45
+ required: true,
46
+ },
59
47
  },
60
48
  },
61
- },
62
- delete: {
63
- type: QueryType.FIELDS,
64
- fields: {
65
- index: {
66
- type: DatasourceFieldType.STRING,
67
- required: true,
49
+ update: {
50
+ type: QueryType.FIELDS,
51
+ customisable: true,
52
+ fields: {
53
+ id: {
54
+ type: DatasourceFieldType.STRING,
55
+ required: true,
56
+ },
57
+ index: {
58
+ type: DatasourceFieldType.STRING,
59
+ required: true,
60
+ },
68
61
  },
69
- id: {
70
- type: DatasourceFieldType.STRING,
71
- required: true,
62
+ },
63
+ delete: {
64
+ type: QueryType.FIELDS,
65
+ fields: {
66
+ index: {
67
+ type: DatasourceFieldType.STRING,
68
+ required: true,
69
+ },
70
+ id: {
71
+ type: DatasourceFieldType.STRING,
72
+ required: true,
73
+ },
72
74
  },
73
75
  },
74
76
  },
75
- },
76
- }
77
+ }
77
78
 
78
- class ElasticSearchIntegration implements IntegrationBase {
79
- private config: ElasticsearchConfig
80
- private client: any
79
+ class ElasticSearchIntegration implements IntegrationBase {
80
+ private config: ElasticsearchConfig
81
+ private client: any
81
82
 
82
- constructor(config: ElasticsearchConfig) {
83
- this.config = config
84
- this.client = new Client({ node: config.url })
85
- }
83
+ constructor(config: ElasticsearchConfig) {
84
+ this.config = config
85
+ this.client = new Client({ node: config.url })
86
+ }
86
87
 
87
- async create(query: { index: string; json: object }) {
88
- const { index, json } = query
88
+ async create(query: { index: string; json: object }) {
89
+ const { index, json } = query
89
90
 
90
- try {
91
- const result = await this.client.index({
92
- index,
93
- body: json,
94
- })
95
- return result.body
96
- } catch (err) {
97
- console.error("Error writing to elasticsearch", err)
98
- throw err
99
- } finally {
100
- await this.client.close()
91
+ try {
92
+ const result = await this.client.index({
93
+ index,
94
+ body: json,
95
+ })
96
+ return result.body
97
+ } catch (err) {
98
+ console.error("Error writing to elasticsearch", err)
99
+ throw err
100
+ } finally {
101
+ await this.client.close()
102
+ }
101
103
  }
102
- }
103
104
 
104
- async read(query: { index: string; json: object }) {
105
- const { index, json } = query
106
- try {
107
- const result = await this.client.search({
108
- index: index,
109
- body: json,
110
- })
111
- return result.body.hits.hits.map(({ _source }: any) => _source)
112
- } catch (err) {
113
- console.error("Error querying elasticsearch", err)
114
- throw err
115
- } finally {
116
- await this.client.close()
105
+ async read(query: { index: string; json: object }) {
106
+ const { index, json } = query
107
+ try {
108
+ const result = await this.client.search({
109
+ index: index,
110
+ body: json,
111
+ })
112
+ return result.body.hits.hits.map(({ _source }: any) => _source)
113
+ } catch (err) {
114
+ console.error("Error querying elasticsearch", err)
115
+ throw err
116
+ } finally {
117
+ await this.client.close()
118
+ }
117
119
  }
118
- }
119
120
 
120
- async update(query: { id: string; index: string; json: object }) {
121
- const { id, index, json } = query
122
- try {
123
- const result = await this.client.update({
124
- id,
125
- index,
126
- body: json,
127
- })
128
- return result.body
129
- } catch (err) {
130
- console.error("Error querying elasticsearch", err)
131
- throw err
132
- } finally {
133
- await this.client.close()
121
+ async update(query: { id: string; index: string; json: object }) {
122
+ const { id, index, json } = query
123
+ try {
124
+ const result = await this.client.update({
125
+ id,
126
+ index,
127
+ body: json,
128
+ })
129
+ return result.body
130
+ } catch (err) {
131
+ console.error("Error querying elasticsearch", err)
132
+ throw err
133
+ } finally {
134
+ await this.client.close()
135
+ }
134
136
  }
135
- }
136
137
 
137
- async delete(query: object) {
138
- try {
139
- const result = await this.client.delete(query)
140
- return result.body
141
- } catch (err) {
142
- console.error("Error deleting from elasticsearch", err)
143
- throw err
144
- } finally {
145
- await this.client.close()
138
+ async delete(query: object) {
139
+ try {
140
+ const result = await this.client.delete(query)
141
+ return result.body
142
+ } catch (err) {
143
+ console.error("Error deleting from elasticsearch", err)
144
+ throw err
145
+ } finally {
146
+ await this.client.close()
147
+ }
146
148
  }
147
149
  }
148
- }
149
150
 
150
- export default {
151
- schema: SCHEMA,
152
- integration: ElasticSearchIntegration,
151
+ module.exports = {
152
+ schema: SCHEMA,
153
+ integration: ElasticSearchIntegration,
154
+ }
153
155
  }