@budibase/server 1.3.14 → 1.3.15-alpha.2

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 (264) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.2884f3c4.js +995 -0
  3. package/builder/assets/{index.a70e216a.css → index.ecdac070.css} +2 -2
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +296 -254
  6. package/coverage/coverage-final.json +17 -17
  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 +82 -13
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +20 -20
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +30 -30
  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 +1 -1
  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 +1 -1
  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 +1 -1
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  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 +28 -28
  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 +533 -445
  157. package/dist/api/controllers/application.js +5 -4
  158. package/dist/api/controllers/component.js +18 -1
  159. package/dist/api/controllers/datasource.js +4 -4
  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 +192 -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/screen.js +52 -2
  169. package/dist/api/controllers/static/index.js +1 -0
  170. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  171. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  172. package/dist/api/routes/index.js +2 -0
  173. package/dist/api/routes/plugin.js +39 -0
  174. package/dist/app.js +11 -0
  175. package/dist/db/utils.js +10 -1
  176. package/dist/environment.js +1 -0
  177. package/dist/integrations/airtable.js +126 -129
  178. package/dist/integrations/arangodb.js +86 -89
  179. package/dist/integrations/base/query.js +2 -2
  180. package/dist/integrations/couchdb.js +80 -83
  181. package/dist/integrations/dynamodb.js +161 -164
  182. package/dist/integrations/elasticsearch.js +135 -138
  183. package/dist/integrations/firebase.js +154 -157
  184. package/dist/integrations/googlesheets.js +323 -327
  185. package/dist/integrations/index.js +93 -51
  186. package/dist/integrations/microsoftSqlServer.js +240 -243
  187. package/dist/integrations/mongodb.js +239 -242
  188. package/dist/integrations/mysql.js +215 -219
  189. package/dist/integrations/oracle.js +318 -322
  190. package/dist/integrations/postgres.js +262 -265
  191. package/dist/integrations/redis.js +134 -139
  192. package/dist/integrations/rest.js +289 -292
  193. package/dist/integrations/s3.js +61 -64
  194. package/dist/integrations/snowflake.js +83 -86
  195. package/dist/package.json +9 -6
  196. package/dist/threads/query.js +2 -2
  197. package/dist/tsconfig.build.tsbuildinfo +1 -1
  198. package/dist/utilities/fileSystem/index.js +110 -1
  199. package/dist/watch.js +77 -0
  200. package/dist/websocket.js +22 -0
  201. package/package.json +10 -7
  202. package/scripts/dev/manage.js +1 -0
  203. package/src/api/controllers/application.ts +1 -1
  204. package/src/api/controllers/component.js +25 -2
  205. package/src/api/controllers/datasource.js +4 -4
  206. package/src/api/controllers/integration.js +4 -4
  207. package/src/api/controllers/plugin/file.ts +15 -0
  208. package/src/api/controllers/plugin/github.ts +75 -0
  209. package/src/api/controllers/plugin/index.ts +206 -0
  210. package/src/api/controllers/plugin/npm.ts +56 -0
  211. package/src/api/controllers/plugin/uploaders.ts +4 -0
  212. package/src/api/controllers/plugin/url.ts +12 -0
  213. package/src/api/controllers/plugin/utils.ts +19 -0
  214. package/src/api/controllers/screen.js +66 -1
  215. package/src/api/controllers/static/index.ts +1 -0
  216. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  217. package/src/api/controllers/static/templates/preview.hbs +5 -1
  218. package/src/api/routes/index.ts +2 -0
  219. package/src/api/routes/plugin.ts +14 -0
  220. package/src/api/routes/tests/query.spec.js +8 -25
  221. package/src/app.ts +14 -0
  222. package/src/db/utils.js +12 -0
  223. package/src/environment.js +1 -0
  224. package/src/integrations/airtable.ts +116 -118
  225. package/src/integrations/arangodb.ts +87 -89
  226. package/src/integrations/base/query.ts +2 -2
  227. package/src/integrations/couchdb.ts +83 -89
  228. package/src/integrations/dynamodb.ts +173 -175
  229. package/src/integrations/elasticsearch.ts +120 -122
  230. package/src/integrations/firebase.ts +157 -159
  231. package/src/integrations/googlesheets.ts +328 -338
  232. package/src/integrations/index.ts +59 -21
  233. package/src/integrations/microsoftSqlServer.ts +249 -251
  234. package/src/integrations/mongodb.ts +261 -258
  235. package/src/integrations/mysql.ts +229 -234
  236. package/src/integrations/oracle.ts +373 -380
  237. package/src/integrations/postgres.ts +264 -268
  238. package/src/integrations/redis.ts +128 -132
  239. package/src/integrations/rest.ts +324 -329
  240. package/src/integrations/s3.ts +68 -71
  241. package/src/integrations/snowflake.ts +80 -82
  242. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  243. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  244. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  245. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  246. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  247. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  248. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  249. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  250. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  251. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  252. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  253. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  254. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  255. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  256. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  257. package/src/module.d.ts +2 -0
  258. package/src/threads/query.ts +2 -2
  259. package/src/utilities/fileSystem/index.js +129 -0
  260. package/src/watch.ts +38 -0
  261. package/src/websocket.ts +26 -0
  262. package/builder/assets/index.d8428ac8.js +0 -876
  263. package/builder/assets/vendor.5e1fe644.css +0 -1
  264. package/builder/assets/vendor.67dbd8fa.js +0 -248
@@ -10,152 +10,149 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const types_1 = require("@budibase/types");
13
- var ElasticsearchModule;
14
- (function (ElasticsearchModule) {
15
- const { Client } = require("@elastic/elasticsearch");
16
- const SCHEMA = {
17
- docs: "https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html",
18
- description: "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: types_1.DatasourceFieldType.STRING,
24
- required: true,
25
- default: "http://localhost:9200",
26
- },
13
+ const { Client } = require("@elastic/elasticsearch");
14
+ const SCHEMA = {
15
+ docs: "https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html",
16
+ description: "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.",
17
+ friendlyName: "ElasticSearch",
18
+ type: "Non-relational",
19
+ datasource: {
20
+ url: {
21
+ type: types_1.DatasourceFieldType.STRING,
22
+ required: true,
23
+ default: "http://localhost:9200",
27
24
  },
28
- query: {
29
- create: {
30
- type: types_1.QueryType.FIELDS,
31
- customisable: true,
32
- fields: {
33
- index: {
34
- type: types_1.DatasourceFieldType.STRING,
35
- required: true,
36
- },
25
+ },
26
+ query: {
27
+ create: {
28
+ type: types_1.QueryType.FIELDS,
29
+ customisable: true,
30
+ fields: {
31
+ index: {
32
+ type: types_1.DatasourceFieldType.STRING,
33
+ required: true,
37
34
  },
38
35
  },
39
- read: {
40
- type: types_1.QueryType.FIELDS,
41
- customisable: true,
42
- fields: {
43
- index: {
44
- type: types_1.DatasourceFieldType.STRING,
45
- required: true,
46
- },
36
+ },
37
+ read: {
38
+ type: types_1.QueryType.FIELDS,
39
+ customisable: true,
40
+ fields: {
41
+ index: {
42
+ type: types_1.DatasourceFieldType.STRING,
43
+ required: true,
47
44
  },
48
45
  },
49
- update: {
50
- type: types_1.QueryType.FIELDS,
51
- customisable: true,
52
- fields: {
53
- id: {
54
- type: types_1.DatasourceFieldType.STRING,
55
- required: true,
56
- },
57
- index: {
58
- type: types_1.DatasourceFieldType.STRING,
59
- required: true,
60
- },
46
+ },
47
+ update: {
48
+ type: types_1.QueryType.FIELDS,
49
+ customisable: true,
50
+ fields: {
51
+ id: {
52
+ type: types_1.DatasourceFieldType.STRING,
53
+ required: true,
54
+ },
55
+ index: {
56
+ type: types_1.DatasourceFieldType.STRING,
57
+ required: true,
61
58
  },
62
59
  },
63
- delete: {
64
- type: types_1.QueryType.FIELDS,
65
- fields: {
66
- index: {
67
- type: types_1.DatasourceFieldType.STRING,
68
- required: true,
69
- },
70
- id: {
71
- type: types_1.DatasourceFieldType.STRING,
72
- required: true,
73
- },
60
+ },
61
+ delete: {
62
+ type: types_1.QueryType.FIELDS,
63
+ fields: {
64
+ index: {
65
+ type: types_1.DatasourceFieldType.STRING,
66
+ required: true,
67
+ },
68
+ id: {
69
+ type: types_1.DatasourceFieldType.STRING,
70
+ required: true,
74
71
  },
75
72
  },
76
73
  },
77
- };
78
- class ElasticSearchIntegration {
79
- constructor(config) {
80
- this.config = config;
81
- this.client = new Client({ node: config.url });
82
- }
83
- create(query) {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- const { index, json } = query;
86
- try {
87
- const result = yield this.client.index({
88
- index,
89
- body: json,
90
- });
91
- return result.body;
92
- }
93
- catch (err) {
94
- console.error("Error writing to elasticsearch", err);
95
- throw err;
96
- }
97
- finally {
98
- yield this.client.close();
99
- }
100
- });
101
- }
102
- read(query) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- const { index, json } = query;
105
- try {
106
- const result = yield this.client.search({
107
- index: index,
108
- body: json,
109
- });
110
- return result.body.hits.hits.map(({ _source }) => _source);
111
- }
112
- catch (err) {
113
- console.error("Error querying elasticsearch", err);
114
- throw err;
115
- }
116
- finally {
117
- yield this.client.close();
118
- }
119
- });
120
- }
121
- update(query) {
122
- return __awaiter(this, void 0, void 0, function* () {
123
- const { id, index, json } = query;
124
- try {
125
- const result = yield this.client.update({
126
- id,
127
- index,
128
- body: json,
129
- });
130
- return result.body;
131
- }
132
- catch (err) {
133
- console.error("Error querying elasticsearch", err);
134
- throw err;
135
- }
136
- finally {
137
- yield this.client.close();
138
- }
139
- });
140
- }
141
- delete(query) {
142
- return __awaiter(this, void 0, void 0, function* () {
143
- try {
144
- const result = yield this.client.delete(query);
145
- return result.body;
146
- }
147
- catch (err) {
148
- console.error("Error deleting from elasticsearch", err);
149
- throw err;
150
- }
151
- finally {
152
- yield this.client.close();
153
- }
154
- });
155
- }
74
+ },
75
+ };
76
+ class ElasticSearchIntegration {
77
+ constructor(config) {
78
+ this.config = config;
79
+ this.client = new Client({ node: config.url });
80
+ }
81
+ create(query) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ const { index, json } = query;
84
+ try {
85
+ const result = yield this.client.index({
86
+ index,
87
+ body: json,
88
+ });
89
+ return result.body;
90
+ }
91
+ catch (err) {
92
+ console.error("Error writing to elasticsearch", err);
93
+ throw err;
94
+ }
95
+ finally {
96
+ yield this.client.close();
97
+ }
98
+ });
99
+ }
100
+ read(query) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ const { index, json } = query;
103
+ try {
104
+ const result = yield this.client.search({
105
+ index: index,
106
+ body: json,
107
+ });
108
+ return result.body.hits.hits.map(({ _source }) => _source);
109
+ }
110
+ catch (err) {
111
+ console.error("Error querying elasticsearch", err);
112
+ throw err;
113
+ }
114
+ finally {
115
+ yield this.client.close();
116
+ }
117
+ });
156
118
  }
157
- module.exports = {
158
- schema: SCHEMA,
159
- integration: ElasticSearchIntegration,
160
- };
161
- })(ElasticsearchModule || (ElasticsearchModule = {}));
119
+ update(query) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const { id, index, json } = query;
122
+ try {
123
+ const result = yield this.client.update({
124
+ id,
125
+ index,
126
+ body: json,
127
+ });
128
+ return result.body;
129
+ }
130
+ catch (err) {
131
+ console.error("Error querying elasticsearch", err);
132
+ throw err;
133
+ }
134
+ finally {
135
+ yield this.client.close();
136
+ }
137
+ });
138
+ }
139
+ delete(query) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ try {
142
+ const result = yield this.client.delete(query);
143
+ return result.body;
144
+ }
145
+ catch (err) {
146
+ console.error("Error deleting from elasticsearch", err);
147
+ throw err;
148
+ }
149
+ finally {
150
+ yield this.client.close();
151
+ }
152
+ });
153
+ }
154
+ }
155
+ exports.default = {
156
+ schema: SCHEMA,
157
+ integration: ElasticSearchIntegration,
158
+ };
@@ -11,167 +11,164 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const types_1 = require("@budibase/types");
13
13
  const firestore_1 = require("@google-cloud/firestore");
14
- var Firebase;
15
- (function (Firebase) {
16
- const SCHEMA = {
17
- docs: "https://firebase.google.com/docs/firestore/quickstart",
18
- friendlyName: "Firestore",
19
- type: "Non-relational",
20
- description: "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
21
- datasource: {
22
- email: {
23
- type: types_1.DatasourceFieldType.STRING,
24
- required: true,
25
- },
26
- privateKey: {
27
- type: types_1.DatasourceFieldType.STRING,
28
- required: true,
29
- },
30
- projectId: {
31
- type: types_1.DatasourceFieldType.STRING,
32
- required: true,
33
- },
14
+ const SCHEMA = {
15
+ docs: "https://firebase.google.com/docs/firestore/quickstart",
16
+ friendlyName: "Firestore",
17
+ type: "Non-relational",
18
+ description: "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
19
+ datasource: {
20
+ email: {
21
+ type: types_1.DatasourceFieldType.STRING,
22
+ required: true,
34
23
  },
35
- query: {
36
- create: {
37
- type: types_1.QueryType.JSON,
38
- },
39
- read: {
40
- type: types_1.QueryType.JSON,
41
- },
42
- update: {
43
- type: types_1.QueryType.JSON,
44
- },
45
- delete: {
46
- type: types_1.QueryType.JSON,
47
- },
24
+ privateKey: {
25
+ type: types_1.DatasourceFieldType.STRING,
26
+ required: true,
48
27
  },
49
- extra: {
50
- collection: {
51
- displayName: "Collection",
52
- type: types_1.DatasourceFieldType.STRING,
53
- required: true,
54
- },
55
- filterField: {
56
- displayName: "Filter field",
57
- type: types_1.DatasourceFieldType.STRING,
58
- required: false,
59
- },
60
- filter: {
61
- displayName: "Filter comparison",
62
- type: types_1.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
- ],
77
- },
78
- },
79
- filterValue: {
80
- displayName: "Filter value",
81
- type: types_1.DatasourceFieldType.STRING,
82
- required: false,
28
+ projectId: {
29
+ type: types_1.DatasourceFieldType.STRING,
30
+ required: true,
31
+ },
32
+ },
33
+ query: {
34
+ create: {
35
+ type: types_1.QueryType.JSON,
36
+ },
37
+ read: {
38
+ type: types_1.QueryType.JSON,
39
+ },
40
+ update: {
41
+ type: types_1.QueryType.JSON,
42
+ },
43
+ delete: {
44
+ type: types_1.QueryType.JSON,
45
+ },
46
+ },
47
+ extra: {
48
+ collection: {
49
+ displayName: "Collection",
50
+ type: types_1.DatasourceFieldType.STRING,
51
+ required: true,
52
+ },
53
+ filterField: {
54
+ displayName: "Filter field",
55
+ type: types_1.DatasourceFieldType.STRING,
56
+ required: false,
57
+ },
58
+ filter: {
59
+ displayName: "Filter comparison",
60
+ type: types_1.DatasourceFieldType.LIST,
61
+ required: false,
62
+ data: {
63
+ read: [
64
+ "==",
65
+ "<",
66
+ "<=",
67
+ "!=",
68
+ ">=",
69
+ ">",
70
+ "array-contains",
71
+ "in",
72
+ "not-in",
73
+ "array-contains-any",
74
+ ],
83
75
  },
84
76
  },
85
- };
86
- class FirebaseIntegration {
87
- constructor(config) {
88
- var _a;
89
- this.config = config;
90
- this.client = new firestore_1.Firestore({
91
- projectId: config.projectId,
92
- credentials: {
93
- client_email: config.email,
94
- private_key: (_a = config.privateKey) === null || _a === void 0 ? void 0 : _a.replace(/\\n/g, "\n"),
95
- },
96
- });
97
- }
98
- create(query) {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- try {
101
- const documentReference = this.client
102
- .collection(query.extra.collection)
103
- .doc();
104
- yield documentReference.set(Object.assign(Object.assign({}, query.json), { id: documentReference.id }));
105
- const snapshot = yield documentReference.get();
106
- return snapshot.data();
107
- }
108
- catch (err) {
109
- console.error("Error writing to Firestore", err);
110
- throw err;
111
- }
112
- });
113
- }
114
- read(query) {
115
- return __awaiter(this, void 0, void 0, function* () {
116
- try {
117
- let snapshot;
118
- const collectionRef = this.client.collection(query.extra.collection);
119
- if (query.extra.filterField &&
120
- query.extra.filter &&
121
- query.extra.filterValue) {
122
- snapshot = yield collectionRef
123
- .where(query.extra.filterField, query.extra.filter, query.extra.filterValue)
124
- .get();
125
- }
126
- else {
127
- snapshot = yield collectionRef.get();
128
- }
129
- const result = [];
130
- snapshot.forEach(doc => result.push(doc.data()));
131
- return result;
132
- }
133
- catch (err) {
134
- console.error("Error querying Firestore", err);
135
- throw err;
136
- }
137
- });
138
- }
139
- update(query) {
140
- return __awaiter(this, void 0, void 0, function* () {
141
- try {
142
- yield this.client
143
- .collection(query.extra.collection)
144
- .doc(query.json.id)
145
- .update(query.json);
146
- return (yield this.client
147
- .collection(query.extra.collection)
148
- .doc(query.json.id)
149
- .get()).data();
150
- }
151
- catch (err) {
152
- console.error("Error writing to Firestore", err);
153
- throw err;
154
- }
155
- });
156
- }
157
- delete(query) {
158
- return __awaiter(this, void 0, void 0, function* () {
159
- try {
160
- yield this.client
161
- .collection(query.extra.collection)
162
- .doc(query.json.id)
163
- .delete();
164
- return true;
77
+ filterValue: {
78
+ displayName: "Filter value",
79
+ type: types_1.DatasourceFieldType.STRING,
80
+ required: false,
81
+ },
82
+ },
83
+ };
84
+ class FirebaseIntegration {
85
+ constructor(config) {
86
+ var _a;
87
+ this.config = config;
88
+ this.client = new firestore_1.Firestore({
89
+ projectId: config.projectId,
90
+ credentials: {
91
+ client_email: config.email,
92
+ private_key: (_a = config.privateKey) === null || _a === void 0 ? void 0 : _a.replace(/\\n/g, "\n"),
93
+ },
94
+ });
95
+ }
96
+ create(query) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ try {
99
+ const documentReference = this.client
100
+ .collection(query.extra.collection)
101
+ .doc();
102
+ yield documentReference.set(Object.assign(Object.assign({}, query.json), { id: documentReference.id }));
103
+ const snapshot = yield documentReference.get();
104
+ return snapshot.data();
105
+ }
106
+ catch (err) {
107
+ console.error("Error writing to Firestore", err);
108
+ throw err;
109
+ }
110
+ });
111
+ }
112
+ read(query) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ try {
115
+ let snapshot;
116
+ const collectionRef = this.client.collection(query.extra.collection);
117
+ if (query.extra.filterField &&
118
+ query.extra.filter &&
119
+ query.extra.filterValue) {
120
+ snapshot = yield collectionRef
121
+ .where(query.extra.filterField, query.extra.filter, query.extra.filterValue)
122
+ .get();
165
123
  }
166
- catch (err) {
167
- console.error("Error deleting from Firestore", err);
168
- throw err;
124
+ else {
125
+ snapshot = yield collectionRef.get();
169
126
  }
170
- });
171
- }
127
+ const result = [];
128
+ snapshot.forEach(doc => result.push(doc.data()));
129
+ return result;
130
+ }
131
+ catch (err) {
132
+ console.error("Error querying Firestore", err);
133
+ throw err;
134
+ }
135
+ });
172
136
  }
173
- module.exports = {
174
- schema: SCHEMA,
175
- integration: FirebaseIntegration,
176
- };
177
- })(Firebase || (Firebase = {}));
137
+ update(query) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ try {
140
+ yield this.client
141
+ .collection(query.extra.collection)
142
+ .doc(query.json.id)
143
+ .update(query.json);
144
+ return (yield this.client
145
+ .collection(query.extra.collection)
146
+ .doc(query.json.id)
147
+ .get()).data();
148
+ }
149
+ catch (err) {
150
+ console.error("Error writing to Firestore", err);
151
+ throw err;
152
+ }
153
+ });
154
+ }
155
+ delete(query) {
156
+ return __awaiter(this, void 0, void 0, function* () {
157
+ try {
158
+ yield this.client
159
+ .collection(query.extra.collection)
160
+ .doc(query.json.id)
161
+ .delete();
162
+ return true;
163
+ }
164
+ catch (err) {
165
+ console.error("Error deleting from Firestore", err);
166
+ throw err;
167
+ }
168
+ });
169
+ }
170
+ }
171
+ exports.default = {
172
+ schema: SCHEMA,
173
+ integration: FirebaseIntegration,
174
+ };