@budibase/server 1.3.17 → 1.3.19-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/{index.a70e216a.css → index.3850883f.css} +2 -2
  3. package/builder/assets/index.fdade753.js +995 -0
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +409 -361
  6. package/coverage/coverage-final.json +18 -18
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/component.js.html +68 -11
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +73 -34
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +38 -38
  16. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  26. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/screen.js.html +207 -12
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  45. package/coverage/lcov-report/api/index.html +1 -1
  46. package/coverage/lcov-report/api/index.js.html +12 -12
  47. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/index.html +1 -1
  58. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  69. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/index.html +5 -5
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +9 -6
  73. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  75. package/coverage/lcov-report/automations/actions.js.html +1 -1
  76. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  77. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  78. package/coverage/lcov-report/automations/index.html +1 -1
  79. package/coverage/lcov-report/automations/index.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/index.html +1 -1
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  106. package/coverage/lcov-report/constants/index.html +1 -1
  107. package/coverage/lcov-report/constants/index.js.html +1 -1
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +1 -1
  110. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +18 -18
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  117. package/coverage/lcov-report/db/newid.js.html +2 -2
  118. package/coverage/lcov-report/db/utils.js.html +56 -20
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +1 -1
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +30 -30
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  127. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  128. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  129. package/coverage/lcov-report/middleware/index.html +1 -1
  130. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  131. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  132. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  135. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  136. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  137. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  138. package/coverage/lcov-report/utilities/global.js.html +16 -16
  139. package/coverage/lcov-report/utilities/index.html +1 -1
  140. package/coverage/lcov-report/utilities/index.js.html +24 -24
  141. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  142. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  143. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  146. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  148. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  149. package/coverage/lcov-report/utilities/security.js.html +2 -2
  150. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  152. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  154. package/coverage/lcov-report/utilities/users.js.html +1 -1
  155. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  156. package/coverage/lcov.info +725 -623
  157. package/dist/api/controllers/application.js +5 -4
  158. package/dist/api/controllers/component.js +14 -1
  159. package/dist/api/controllers/datasource.js +21 -8
  160. package/dist/api/controllers/integration.js +4 -4
  161. package/dist/api/controllers/plugin/file.js +24 -0
  162. package/dist/api/controllers/plugin/github.js +69 -0
  163. package/dist/api/controllers/plugin/index.js +197 -0
  164. package/dist/api/controllers/plugin/npm.js +58 -0
  165. package/dist/api/controllers/plugin/uploaders.js +11 -0
  166. package/dist/api/controllers/plugin/url.js +24 -0
  167. package/dist/api/controllers/plugin/utils.js +26 -0
  168. package/dist/api/controllers/row/external.js +1 -1
  169. package/dist/api/controllers/screen.js +52 -2
  170. package/dist/api/controllers/static/index.js +1 -0
  171. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  172. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  173. package/dist/api/routes/application.js +3 -2
  174. package/dist/api/routes/index.js +2 -0
  175. package/dist/api/routes/plugin.js +39 -0
  176. package/dist/api/routes/public/tables.js +1 -1
  177. package/dist/api/routes/table.js +1 -1
  178. package/dist/api/routes/utils/validators.js +2 -1
  179. package/dist/app.js +11 -0
  180. package/dist/db/utils.js +10 -1
  181. package/dist/environment.js +1 -0
  182. package/dist/integrations/airtable.js +126 -129
  183. package/dist/integrations/arangodb.js +86 -89
  184. package/dist/integrations/base/query.js +2 -2
  185. package/dist/integrations/base/sqlTable.js +3 -1
  186. package/dist/integrations/couchdb.js +80 -83
  187. package/dist/integrations/dynamodb.js +161 -164
  188. package/dist/integrations/elasticsearch.js +135 -138
  189. package/dist/integrations/firebase.js +154 -157
  190. package/dist/integrations/googlesheets.js +323 -327
  191. package/dist/integrations/index.js +99 -51
  192. package/dist/integrations/microsoftSqlServer.js +240 -243
  193. package/dist/integrations/mongodb.js +239 -242
  194. package/dist/integrations/mysql.js +215 -219
  195. package/dist/integrations/oracle.js +318 -322
  196. package/dist/integrations/postgres.js +262 -265
  197. package/dist/integrations/redis.js +134 -139
  198. package/dist/integrations/rest.js +289 -292
  199. package/dist/integrations/s3.js +61 -64
  200. package/dist/integrations/snowflake.js +83 -86
  201. package/dist/package.json +9 -6
  202. package/dist/tests/utilities/TestConfiguration.js +1 -1
  203. package/dist/threads/query.js +2 -2
  204. package/dist/tsconfig.build.tsbuildinfo +1 -1
  205. package/dist/utilities/fileSystem/index.js +110 -1
  206. package/dist/watch.js +77 -0
  207. package/dist/websocket.js +22 -0
  208. package/package.json +10 -7
  209. package/scripts/dev/manage.js +1 -0
  210. package/specs/openapi.json +3 -3
  211. package/specs/openapi.yaml +3 -3
  212. package/specs/resources/query.js +1 -1
  213. package/src/api/controllers/application.ts +1 -1
  214. package/src/api/controllers/component.js +21 -2
  215. package/src/api/controllers/datasource.js +21 -8
  216. package/src/api/controllers/integration.js +4 -4
  217. package/src/api/controllers/plugin/file.ts +15 -0
  218. package/src/api/controllers/plugin/github.ts +75 -0
  219. package/src/api/controllers/plugin/index.ts +212 -0
  220. package/src/api/controllers/plugin/npm.ts +56 -0
  221. package/src/api/controllers/plugin/uploaders.ts +4 -0
  222. package/src/api/controllers/plugin/url.ts +12 -0
  223. package/src/api/controllers/plugin/utils.ts +19 -0
  224. package/src/api/controllers/row/external.js +1 -1
  225. package/src/api/controllers/screen.js +66 -1
  226. package/src/api/controllers/static/index.ts +1 -0
  227. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  228. package/src/api/controllers/static/templates/preview.hbs +5 -1
  229. package/src/api/routes/application.ts +13 -2
  230. package/src/api/routes/index.ts +2 -0
  231. package/src/api/routes/plugin.ts +14 -0
  232. package/src/api/routes/public/tables.ts +1 -1
  233. package/src/api/routes/table.js +1 -1
  234. package/src/api/routes/tests/query.spec.js +8 -25
  235. package/src/api/routes/utils/validators.js +2 -1
  236. package/src/app.ts +14 -0
  237. package/src/db/utils.js +12 -0
  238. package/src/definitions/openapi.ts +3 -3
  239. package/src/environment.js +1 -0
  240. package/src/integrations/airtable.ts +116 -118
  241. package/src/integrations/arangodb.ts +87 -89
  242. package/src/integrations/base/query.ts +2 -2
  243. package/src/integrations/base/sqlTable.ts +3 -1
  244. package/src/integrations/couchdb.ts +83 -89
  245. package/src/integrations/dynamodb.ts +173 -175
  246. package/src/integrations/elasticsearch.ts +120 -122
  247. package/src/integrations/firebase.ts +157 -159
  248. package/src/integrations/googlesheets.ts +328 -338
  249. package/src/integrations/index.ts +64 -21
  250. package/src/integrations/microsoftSqlServer.ts +249 -251
  251. package/src/integrations/mongodb.ts +261 -258
  252. package/src/integrations/mysql.ts +229 -234
  253. package/src/integrations/oracle.ts +373 -380
  254. package/src/integrations/postgres.ts +264 -268
  255. package/src/integrations/redis.ts +128 -132
  256. package/src/integrations/rest.ts +324 -329
  257. package/src/integrations/s3.ts +68 -71
  258. package/src/integrations/snowflake.ts +80 -82
  259. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  260. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  261. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  262. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  263. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  264. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  265. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  266. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  267. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  268. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  269. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  270. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  271. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  272. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  273. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  274. package/src/module.d.ts +2 -0
  275. package/src/tests/utilities/TestConfiguration.js +1 -1
  276. package/src/threads/query.ts +2 -2
  277. package/src/utilities/fileSystem/index.js +129 -0
  278. package/src/watch.ts +38 -0
  279. package/src/websocket.ts +26 -0
  280. package/builder/assets/index.8f5f192a.js +0 -876
  281. package/builder/assets/vendor.5e1fe644.css +0 -1
  282. package/builder/assets/vendor.67dbd8fa.js +0 -248
@@ -5,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
  }
@@ -6,184 +6,182 @@ import {
6
6
  } from "@budibase/types"
7
7
  import { Firestore, WhereFilterOp } from "@google-cloud/firestore"
8
8
 
9
- module Firebase {
10
- interface FirebaseConfig {
11
- email: string
12
- privateKey: string
13
- projectId: string
14
- }
9
+ interface FirebaseConfig {
10
+ email: string
11
+ privateKey: string
12
+ projectId: string
13
+ }
15
14
 
16
- const SCHEMA: Integration = {
17
- docs: "https://firebase.google.com/docs/firestore/quickstart",
18
- friendlyName: "Firestore",
19
- type: "Non-relational",
20
- description:
21
- "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
22
- datasource: {
23
- email: {
24
- type: DatasourceFieldType.STRING,
25
- required: true,
26
- },
27
- privateKey: {
28
- type: DatasourceFieldType.STRING,
29
- required: true,
30
- },
31
- projectId: {
32
- type: DatasourceFieldType.STRING,
33
- required: true,
34
- },
15
+ const SCHEMA: Integration = {
16
+ docs: "https://firebase.google.com/docs/firestore/quickstart",
17
+ friendlyName: "Firestore",
18
+ type: "Non-relational",
19
+ description:
20
+ "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
21
+ datasource: {
22
+ email: {
23
+ type: DatasourceFieldType.STRING,
24
+ required: true,
35
25
  },
36
- query: {
37
- create: {
38
- type: QueryType.JSON,
39
- },
40
- read: {
41
- type: QueryType.JSON,
42
- },
43
- update: {
44
- type: QueryType.JSON,
45
- },
46
- delete: {
47
- type: QueryType.JSON,
48
- },
26
+ privateKey: {
27
+ type: DatasourceFieldType.STRING,
28
+ required: true,
49
29
  },
50
- extra: {
51
- collection: {
52
- displayName: "Collection",
53
- type: DatasourceFieldType.STRING,
54
- required: true,
55
- },
56
- filterField: {
57
- displayName: "Filter field",
58
- type: DatasourceFieldType.STRING,
59
- required: false,
60
- },
61
- filter: {
62
- displayName: "Filter comparison",
63
- type: DatasourceFieldType.LIST,
64
- required: false,
65
- data: {
66
- read: [
67
- "==",
68
- "<",
69
- "<=",
70
- "!=",
71
- ">=",
72
- ">",
73
- "array-contains",
74
- "in",
75
- "not-in",
76
- "array-contains-any",
77
- ],
78
- },
79
- },
80
- filterValue: {
81
- displayName: "Filter value",
82
- type: DatasourceFieldType.STRING,
83
- required: false,
30
+ projectId: {
31
+ type: DatasourceFieldType.STRING,
32
+ required: true,
33
+ },
34
+ },
35
+ query: {
36
+ create: {
37
+ type: QueryType.JSON,
38
+ },
39
+ read: {
40
+ type: QueryType.JSON,
41
+ },
42
+ update: {
43
+ type: QueryType.JSON,
44
+ },
45
+ delete: {
46
+ type: QueryType.JSON,
47
+ },
48
+ },
49
+ extra: {
50
+ collection: {
51
+ displayName: "Collection",
52
+ type: DatasourceFieldType.STRING,
53
+ required: true,
54
+ },
55
+ filterField: {
56
+ displayName: "Filter field",
57
+ type: DatasourceFieldType.STRING,
58
+ required: false,
59
+ },
60
+ filter: {
61
+ displayName: "Filter comparison",
62
+ type: DatasourceFieldType.LIST,
63
+ required: false,
64
+ data: {
65
+ read: [
66
+ "==",
67
+ "<",
68
+ "<=",
69
+ "!=",
70
+ ">=",
71
+ ">",
72
+ "array-contains",
73
+ "in",
74
+ "not-in",
75
+ "array-contains-any",
76
+ ],
84
77
  },
85
78
  },
86
- }
79
+ filterValue: {
80
+ displayName: "Filter value",
81
+ type: DatasourceFieldType.STRING,
82
+ required: false,
83
+ },
84
+ },
85
+ }
87
86
 
88
- class FirebaseIntegration implements IntegrationBase {
89
- private config: FirebaseConfig
90
- private client: Firestore
87
+ class FirebaseIntegration implements IntegrationBase {
88
+ private config: FirebaseConfig
89
+ private client: Firestore
91
90
 
92
- constructor(config: FirebaseConfig) {
93
- this.config = config
94
- this.client = new Firestore({
95
- projectId: config.projectId,
96
- credentials: {
97
- client_email: config.email,
98
- private_key: config.privateKey?.replace(/\\n/g, "\n"),
99
- },
100
- })
101
- }
91
+ constructor(config: FirebaseConfig) {
92
+ this.config = config
93
+ this.client = new Firestore({
94
+ projectId: config.projectId,
95
+ credentials: {
96
+ client_email: config.email,
97
+ private_key: config.privateKey?.replace(/\\n/g, "\n"),
98
+ },
99
+ })
100
+ }
102
101
 
103
- async create(query: { json: object; extra: { [key: string]: string } }) {
104
- try {
105
- const documentReference = this.client
106
- .collection(query.extra.collection)
107
- .doc()
108
- await documentReference.set({ ...query.json, id: documentReference.id })
109
- const snapshot = await documentReference.get()
110
- return snapshot.data()
111
- } catch (err) {
112
- console.error("Error writing to Firestore", err)
113
- throw err
114
- }
102
+ async create(query: { json: object; extra: { [key: string]: string } }) {
103
+ try {
104
+ const documentReference = this.client
105
+ .collection(query.extra.collection)
106
+ .doc()
107
+ await documentReference.set({ ...query.json, id: documentReference.id })
108
+ const snapshot = await documentReference.get()
109
+ return snapshot.data()
110
+ } catch (err) {
111
+ console.error("Error writing to Firestore", err)
112
+ throw err
115
113
  }
114
+ }
116
115
 
117
- async read(query: { json: object; extra: { [key: string]: string } }) {
118
- try {
119
- let snapshot
120
- const collectionRef = this.client.collection(query.extra.collection)
121
- if (
122
- query.extra.filterField &&
123
- query.extra.filter &&
124
- query.extra.filterValue
125
- ) {
126
- snapshot = await collectionRef
127
- .where(
128
- query.extra.filterField,
129
- query.extra.filter as WhereFilterOp,
130
- query.extra.filterValue
131
- )
132
- .get()
133
- } else {
134
- snapshot = await collectionRef.get()
135
- }
136
- const result: any[] = []
137
- snapshot.forEach(doc => result.push(doc.data()))
138
-
139
- return result
140
- } catch (err) {
141
- console.error("Error querying Firestore", err)
142
- throw err
116
+ async read(query: { json: object; extra: { [key: string]: string } }) {
117
+ try {
118
+ let snapshot
119
+ const collectionRef = this.client.collection(query.extra.collection)
120
+ if (
121
+ query.extra.filterField &&
122
+ query.extra.filter &&
123
+ query.extra.filterValue
124
+ ) {
125
+ snapshot = await collectionRef
126
+ .where(
127
+ query.extra.filterField,
128
+ query.extra.filter as WhereFilterOp,
129
+ query.extra.filterValue
130
+ )
131
+ .get()
132
+ } else {
133
+ snapshot = await collectionRef.get()
143
134
  }
144
- }
145
-
146
- async update(query: {
147
- json: Record<string, any>
148
- extra: { [key: string]: string }
149
- }) {
150
- try {
151
- await this.client
152
- .collection(query.extra.collection)
153
- .doc(query.json.id)
154
- .update(query.json)
135
+ const result: any[] = []
136
+ snapshot.forEach(doc => result.push(doc.data()))
155
137
 
156
- return (
157
- await this.client
158
- .collection(query.extra.collection)
159
- .doc(query.json.id)
160
- .get()
161
- ).data()
162
- } catch (err) {
163
- console.error("Error writing to Firestore", err)
164
- throw err
165
- }
138
+ return result
139
+ } catch (err) {
140
+ console.error("Error querying Firestore", err)
141
+ throw err
166
142
  }
143
+ }
167
144
 
168
- async delete(query: {
169
- json: { id: string }
170
- extra: { [key: string]: string }
171
- }) {
172
- try {
145
+ async update(query: {
146
+ json: Record<string, any>
147
+ extra: { [key: string]: string }
148
+ }) {
149
+ try {
150
+ await this.client
151
+ .collection(query.extra.collection)
152
+ .doc(query.json.id)
153
+ .update(query.json)
154
+
155
+ return (
173
156
  await this.client
174
157
  .collection(query.extra.collection)
175
158
  .doc(query.json.id)
176
- .delete()
177
- return true
178
- } catch (err) {
179
- console.error("Error deleting from Firestore", err)
180
- throw err
181
- }
159
+ .get()
160
+ ).data()
161
+ } catch (err) {
162
+ console.error("Error writing to Firestore", err)
163
+ throw err
182
164
  }
183
165
  }
184
166
 
185
- module.exports = {
186
- schema: SCHEMA,
187
- integration: FirebaseIntegration,
167
+ async delete(query: {
168
+ json: { id: string }
169
+ extra: { [key: string]: string }
170
+ }) {
171
+ try {
172
+ await this.client
173
+ .collection(query.extra.collection)
174
+ .doc(query.json.id)
175
+ .delete()
176
+ return true
177
+ } catch (err) {
178
+ console.error("Error deleting from Firestore", err)
179
+ throw err
180
+ }
188
181
  }
189
182
  }
183
+
184
+ export default {
185
+ schema: SCHEMA,
186
+ integration: FirebaseIntegration,
187
+ }