@budibase/server 1.3.20 → 1.3.21-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 (308) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.75653b72.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
@@ -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
+ }
@@ -5,151 +5,149 @@ import {
5
5
  IntegrationBase,
6
6
  } from "@budibase/types"
7
7
 
8
- module ElasticsearchModule {
9
- const { Client } = require("@elastic/elasticsearch")
8
+ const { Client } = require("@elastic/elasticsearch")
10
9
 
11
- interface ElasticsearchConfig {
12
- url: string
13
- }
10
+ interface ElasticsearchConfig {
11
+ url: string
12
+ }
14
13
 
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",
26
- },
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",
27
25
  },
28
- query: {
29
- create: {
30
- type: QueryType.FIELDS,
31
- customisable: true,
32
- fields: {
33
- index: {
34
- type: DatasourceFieldType.STRING,
35
- required: true,
36
- },
26
+ },
27
+ query: {
28
+ create: {
29
+ type: QueryType.FIELDS,
30
+ customisable: true,
31
+ fields: {
32
+ index: {
33
+ type: DatasourceFieldType.STRING,
34
+ required: true,
37
35
  },
38
36
  },
39
- read: {
40
- type: QueryType.FIELDS,
41
- customisable: true,
42
- fields: {
43
- index: {
44
- type: DatasourceFieldType.STRING,
45
- required: true,
46
- },
37
+ },
38
+ read: {
39
+ type: QueryType.FIELDS,
40
+ customisable: true,
41
+ fields: {
42
+ index: {
43
+ type: DatasourceFieldType.STRING,
44
+ required: true,
47
45
  },
48
46
  },
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
- },
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,
61
59
  },
62
60
  },
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
- },
61
+ },
62
+ delete: {
63
+ type: QueryType.FIELDS,
64
+ fields: {
65
+ index: {
66
+ type: DatasourceFieldType.STRING,
67
+ required: true,
68
+ },
69
+ id: {
70
+ type: DatasourceFieldType.STRING,
71
+ required: true,
74
72
  },
75
73
  },
76
74
  },
77
- }
75
+ },
76
+ }
78
77
 
79
- class ElasticSearchIntegration implements IntegrationBase {
80
- private config: ElasticsearchConfig
81
- private client: any
78
+ class ElasticSearchIntegration implements IntegrationBase {
79
+ private config: ElasticsearchConfig
80
+ private client: any
82
81
 
83
- constructor(config: ElasticsearchConfig) {
84
- this.config = config
85
- this.client = new Client({ node: config.url })
86
- }
82
+ constructor(config: ElasticsearchConfig) {
83
+ this.config = config
84
+ this.client = new Client({ node: config.url })
85
+ }
87
86
 
88
- async create(query: { index: string; json: object }) {
89
- const { index, json } = query
87
+ async create(query: { index: string; json: object }) {
88
+ const { index, json } = query
90
89
 
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
- }
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()
103
101
  }
102
+ }
104
103
 
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
- }
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()
119
117
  }
118
+ }
120
119
 
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
- }
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()
136
134
  }
135
+ }
137
136
 
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
- }
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()
148
146
  }
149
147
  }
148
+ }
150
149
 
151
- module.exports = {
152
- schema: SCHEMA,
153
- integration: ElasticSearchIntegration,
154
- }
150
+ export default {
151
+ schema: SCHEMA,
152
+ integration: ElasticSearchIntegration,
155
153
  }