@budibase/server 1.3.21 → 1.3.22-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.96c69636.js +1008 -0
  3. package/builder/assets/index.c167b5c3.css +6 -0
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +308 -338
  6. package/coverage/coverage-final.json +19 -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/datasource.js.html +73 -34
  13. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/index.html +27 -57
  15. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  16. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  25. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  43. package/coverage/lcov-report/api/index.html +1 -1
  44. package/coverage/lcov-report/api/index.js.html +13 -13
  45. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/index.html +1 -1
  56. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  67. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  70. package/coverage/lcov-report/api/routes/utils/validators.js.html +75 -12
  71. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  73. package/coverage/lcov-report/automations/actions.js.html +1 -1
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  76. package/coverage/lcov-report/automations/index.html +1 -1
  77. package/coverage/lcov-report/automations/index.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/index.html +1 -1
  85. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  104. package/coverage/lcov-report/constants/index.html +1 -1
  105. package/coverage/lcov-report/constants/index.js.html +1 -1
  106. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  107. package/coverage/lcov-report/constants/screens.js.html +1 -1
  108. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  109. package/coverage/lcov-report/db/index.html +14 -14
  110. package/coverage/lcov-report/db/index.js.html +1 -1
  111. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  115. package/coverage/lcov-report/db/newid.js.html +2 -2
  116. package/coverage/lcov-report/db/utils.js.html +30 -18
  117. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  118. package/coverage/lcov-report/events/index.html +1 -1
  119. package/coverage/lcov-report/events/index.js.html +1 -1
  120. package/coverage/lcov-report/events/utils.js.html +1 -1
  121. package/coverage/lcov-report/index.html +44 -44
  122. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  123. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  124. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  125. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  126. package/coverage/lcov-report/middleware/currentapp.js.html +46 -40
  127. package/coverage/lcov-report/middleware/index.html +15 -15
  128. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  129. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  130. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  131. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  132. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  133. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  134. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  135. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  136. package/coverage/lcov-report/utilities/global.js.html +16 -16
  137. package/coverage/lcov-report/utilities/index.html +15 -15
  138. package/coverage/lcov-report/utilities/index.js.html +24 -24
  139. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  140. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  141. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  142. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  143. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  144. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  146. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  147. package/coverage/lcov-report/utilities/security.js.html +2 -2
  148. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  149. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  150. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  152. package/coverage/lcov-report/utilities/users.js.html +1 -1
  153. package/coverage/lcov-report/utilities/workerRequests.js.html +32 -8
  154. package/coverage/lcov.info +521 -558
  155. package/dist/api/controllers/application.js +5 -5
  156. package/dist/api/controllers/auth.js +9 -0
  157. package/dist/api/controllers/component.js +19 -6
  158. package/dist/api/controllers/datasource.js +21 -8
  159. package/dist/api/controllers/deploy/index.js +1 -8
  160. package/dist/api/controllers/integration.js +4 -4
  161. package/dist/{migrations/functions/usageQuotas/syncDevelopers.js → api/controllers/plugin/file.js} +13 -13
  162. package/dist/api/controllers/plugin/github.js +69 -0
  163. package/dist/api/controllers/plugin/index.js +144 -0
  164. package/dist/api/controllers/plugin/npm.js +58 -0
  165. package/dist/api/controllers/plugin/uploaders.js +11 -0
  166. package/dist/{migrations/functions/usageQuotas/syncPublishedApps.js → api/controllers/plugin/url.js} +13 -15
  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 +62 -14
  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/index.js +1 -1
  174. package/dist/api/routes/application.js +3 -2
  175. package/dist/api/routes/index.js +2 -0
  176. package/dist/{migrations/functions/publishedAppsQuota.js → api/routes/plugin.js} +13 -21
  177. package/dist/api/routes/public/rows.js +1 -82
  178. package/dist/api/routes/public/tables.js +1 -1
  179. package/dist/api/routes/table.js +1 -1
  180. package/dist/api/routes/utils/validators.js +20 -2
  181. package/dist/app.js +16 -1
  182. package/dist/db/utils.js +3 -0
  183. package/dist/environment.js +1 -0
  184. package/dist/integrations/airtable.js +126 -129
  185. package/dist/integrations/arangodb.js +86 -89
  186. package/dist/integrations/base/query.js +2 -2
  187. package/dist/integrations/base/sqlTable.js +3 -1
  188. package/dist/integrations/couchdb.js +80 -83
  189. package/dist/integrations/dynamodb.js +161 -164
  190. package/dist/integrations/elasticsearch.js +135 -138
  191. package/dist/integrations/firebase.js +154 -157
  192. package/dist/integrations/googlesheets.js +323 -327
  193. package/dist/integrations/index.js +99 -51
  194. package/dist/integrations/microsoftSqlServer.js +240 -243
  195. package/dist/integrations/mongodb.js +239 -242
  196. package/dist/integrations/mysql.js +215 -219
  197. package/dist/integrations/oracle.js +318 -322
  198. package/dist/integrations/postgres.js +262 -265
  199. package/dist/integrations/redis.js +134 -139
  200. package/dist/integrations/rest.js +289 -292
  201. package/dist/integrations/s3.js +61 -64
  202. package/dist/integrations/snowflake.js +83 -86
  203. package/dist/middleware/currentapp.js +2 -0
  204. package/dist/migrations/functions/backfill/global.js +0 -3
  205. package/dist/migrations/index.js +0 -10
  206. package/dist/package.json +9 -6
  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 +105 -1
  211. package/dist/utilities/workerRequests.js +4 -0
  212. package/dist/watch.js +77 -0
  213. package/dist/websocket.js +22 -0
  214. package/package.json +10 -7
  215. package/scripts/dev/manage.js +4 -0
  216. package/scripts/localdomain.js +3 -1
  217. package/specs/openapi.json +115 -112
  218. package/specs/openapi.yaml +96 -94
  219. package/specs/resources/misc.js +116 -0
  220. package/specs/resources/query.js +1 -1
  221. package/src/api/controllers/application.ts +1 -2
  222. package/src/api/controllers/auth.js +11 -0
  223. package/src/api/controllers/component.ts +57 -0
  224. package/src/api/controllers/datasource.js +21 -8
  225. package/src/api/controllers/deploy/index.ts +1 -6
  226. package/src/api/controllers/integration.js +4 -4
  227. package/src/api/controllers/plugin/file.ts +15 -0
  228. package/src/api/controllers/plugin/github.ts +75 -0
  229. package/src/api/controllers/plugin/index.ts +134 -0
  230. package/src/api/controllers/plugin/npm.ts +56 -0
  231. package/src/api/controllers/plugin/uploaders.ts +4 -0
  232. package/src/api/controllers/plugin/url.ts +12 -0
  233. package/src/api/controllers/plugin/utils.ts +19 -0
  234. package/src/api/controllers/public/mapping/types.ts +8 -0
  235. package/src/api/controllers/row/external.js +1 -1
  236. package/src/api/controllers/screen.ts +122 -0
  237. package/src/api/controllers/static/index.ts +1 -1
  238. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  239. package/src/api/controllers/static/templates/preview.hbs +5 -1
  240. package/src/api/index.js +1 -1
  241. package/src/api/routes/application.ts +13 -2
  242. package/src/api/routes/index.ts +2 -0
  243. package/src/api/routes/plugin.ts +14 -0
  244. package/src/api/routes/public/rows.ts +1 -82
  245. package/src/api/routes/public/tables.ts +1 -1
  246. package/src/api/routes/table.js +1 -1
  247. package/src/api/routes/tests/query.spec.js +8 -25
  248. package/src/api/routes/tests/user.spec.js +0 -2
  249. package/src/api/routes/utils/validators.js +26 -5
  250. package/src/app.ts +25 -2
  251. package/src/db/utils.js +4 -0
  252. package/src/definitions/openapi.ts +56 -55
  253. package/src/environment.js +1 -0
  254. package/src/integrations/airtable.ts +116 -118
  255. package/src/integrations/arangodb.ts +87 -89
  256. package/src/integrations/base/query.ts +2 -2
  257. package/src/integrations/base/sqlTable.ts +3 -1
  258. package/src/integrations/couchdb.ts +83 -89
  259. package/src/integrations/dynamodb.ts +173 -175
  260. package/src/integrations/elasticsearch.ts +120 -122
  261. package/src/integrations/firebase.ts +157 -159
  262. package/src/integrations/googlesheets.ts +328 -338
  263. package/src/integrations/index.ts +64 -21
  264. package/src/integrations/microsoftSqlServer.ts +249 -251
  265. package/src/integrations/mongodb.ts +261 -258
  266. package/src/integrations/mysql.ts +229 -234
  267. package/src/integrations/oracle.ts +373 -380
  268. package/src/integrations/postgres.ts +264 -268
  269. package/src/integrations/redis.ts +128 -132
  270. package/src/integrations/rest.ts +324 -329
  271. package/src/integrations/s3.ts +68 -71
  272. package/src/integrations/snowflake.ts +80 -82
  273. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  274. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  275. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  276. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  277. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  278. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  279. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  280. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  281. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  282. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  283. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  284. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  285. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  286. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  287. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  288. package/src/middleware/currentapp.js +2 -0
  289. package/src/migrations/functions/backfill/global.ts +0 -3
  290. package/src/migrations/index.ts +0 -16
  291. package/src/module.d.ts +2 -0
  292. package/src/tests/utilities/TestConfiguration.js +1 -1
  293. package/src/threads/query.ts +2 -2
  294. package/src/utilities/fileSystem/index.js +123 -0
  295. package/src/utilities/workerRequests.js +8 -0
  296. package/src/watch.ts +38 -0
  297. package/src/websocket.ts +26 -0
  298. package/builder/assets/index.8d12d461.css +0 -6
  299. package/builder/assets/index.d354271c.js +0 -879
  300. package/builder/assets/vendor.5e1fe644.css +0 -1
  301. package/builder/assets/vendor.67dbd8fa.js +0 -248
  302. package/coverage/lcov-report/api/controllers/component.js.html +0 -199
  303. package/coverage/lcov-report/api/controllers/screen.js.html +0 -259
  304. package/dist/migrations/functions/developerQuota.js +0 -49
  305. package/src/api/controllers/component.js +0 -38
  306. package/src/api/controllers/screen.js +0 -58
  307. package/src/migrations/functions/developerQuota.ts +0 -15
  308. package/src/migrations/functions/publishedAppsQuota.ts +0 -13
  309. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +0 -19
  310. 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
  }