@budibase/server 1.3.21-alpha.1 → 1.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.8d12d461.css +6 -0
  3. package/builder/assets/index.d354271c.js +879 -0
  4. package/builder/assets/vendor.5e1fe644.css +1 -0
  5. package/builder/assets/vendor.67dbd8fa.js +248 -0
  6. package/builder/index.html +4 -2
  7. package/coverage/clover.xml +390 -451
  8. package/coverage/coverage-final.json +21 -21
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +8 -41
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +11 -68
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +34 -73
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +46 -46
  18. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  28. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/screen.js.html +12 -207
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +13 -13
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  71. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +12 -75
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +1 -1
  78. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  79. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  80. package/coverage/lcov-report/automations/index.html +1 -1
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/index.html +1 -1
  89. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/constants/index.html +1 -1
  109. package/coverage/lcov-report/constants/index.js.html +1 -1
  110. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  111. package/coverage/lcov-report/constants/screens.js.html +1 -1
  112. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  113. package/coverage/lcov-report/db/index.html +18 -18
  114. package/coverage/lcov-report/db/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  119. package/coverage/lcov-report/db/newid.js.html +2 -2
  120. package/coverage/lcov-report/db/utils.js.html +20 -56
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  122. package/coverage/lcov-report/events/index.html +1 -1
  123. package/coverage/lcov-report/events/index.js.html +1 -1
  124. package/coverage/lcov-report/events/utils.js.html +1 -1
  125. package/coverage/lcov-report/index.html +46 -46
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  127. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  128. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  129. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  130. package/coverage/lcov-report/middleware/currentapp.js.html +40 -46
  131. package/coverage/lcov-report/middleware/index.html +15 -15
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  133. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  134. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  135. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  136. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  137. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  138. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  139. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  140. package/coverage/lcov-report/utilities/global.js.html +16 -16
  141. package/coverage/lcov-report/utilities/index.html +15 -15
  142. package/coverage/lcov-report/utilities/index.js.html +24 -24
  143. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  144. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  150. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  151. package/coverage/lcov-report/utilities/security.js.html +2 -2
  152. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  156. package/coverage/lcov-report/utilities/users.js.html +1 -1
  157. package/coverage/lcov-report/utilities/workerRequests.js.html +8 -32
  158. package/coverage/lcov.info +672 -798
  159. package/dist/api/controllers/application.js +5 -5
  160. package/dist/api/controllers/auth.js +0 -9
  161. package/dist/api/controllers/component.js +1 -14
  162. package/dist/api/controllers/datasource.js +8 -21
  163. package/dist/api/controllers/deploy/index.js +8 -1
  164. package/dist/api/controllers/integration.js +4 -4
  165. package/dist/api/controllers/row/external.js +1 -1
  166. package/dist/api/controllers/screen.js +2 -52
  167. package/dist/api/controllers/static/index.js +0 -1
  168. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  169. package/dist/api/controllers/static/templates/preview.hbs +1 -5
  170. package/dist/api/index.js +1 -1
  171. package/dist/api/routes/application.js +2 -3
  172. package/dist/api/routes/index.js +0 -2
  173. package/dist/api/routes/public/rows.js +82 -1
  174. package/dist/api/routes/public/tables.js +1 -1
  175. package/dist/api/routes/table.js +1 -1
  176. package/dist/api/routes/utils/validators.js +2 -20
  177. package/dist/app.js +1 -16
  178. package/dist/db/utils.js +1 -10
  179. package/dist/environment.js +0 -1
  180. package/dist/integrations/airtable.js +129 -126
  181. package/dist/integrations/arangodb.js +89 -86
  182. package/dist/integrations/base/query.js +2 -2
  183. package/dist/integrations/base/sqlTable.js +1 -3
  184. package/dist/integrations/couchdb.js +83 -80
  185. package/dist/integrations/dynamodb.js +164 -161
  186. package/dist/integrations/elasticsearch.js +138 -135
  187. package/dist/integrations/firebase.js +157 -154
  188. package/dist/integrations/googlesheets.js +327 -323
  189. package/dist/integrations/index.js +51 -99
  190. package/dist/integrations/microsoftSqlServer.js +243 -240
  191. package/dist/integrations/mongodb.js +242 -239
  192. package/dist/integrations/mysql.js +219 -215
  193. package/dist/integrations/oracle.js +322 -318
  194. package/dist/integrations/postgres.js +265 -262
  195. package/dist/integrations/redis.js +139 -134
  196. package/dist/integrations/rest.js +292 -289
  197. package/dist/integrations/s3.js +64 -61
  198. package/dist/integrations/snowflake.js +86 -83
  199. package/dist/middleware/currentapp.js +0 -2
  200. package/dist/migrations/functions/backfill/global.js +3 -0
  201. package/dist/migrations/functions/developerQuota.js +49 -0
  202. package/dist/{api/routes/plugin.js → migrations/functions/publishedAppsQuota.js} +21 -13
  203. package/dist/{api/controllers/plugin/url.js → migrations/functions/usageQuotas/syncDevelopers.js} +13 -13
  204. package/dist/{api/controllers/plugin/file.js → migrations/functions/usageQuotas/syncPublishedApps.js} +15 -13
  205. package/dist/migrations/index.js +10 -0
  206. package/dist/package.json +6 -9
  207. package/dist/tests/utilities/TestConfiguration.js +1 -1
  208. package/dist/threads/query.js +2 -2
  209. package/dist/tsconfig.build.tsbuildinfo +1 -1
  210. package/dist/utilities/fileSystem/index.js +1 -111
  211. package/dist/utilities/workerRequests.js +0 -4
  212. package/package.json +7 -10
  213. package/scripts/dev/manage.js +0 -4
  214. package/scripts/localdomain.js +1 -3
  215. package/specs/openapi.json +112 -115
  216. package/specs/openapi.yaml +94 -96
  217. package/specs/resources/misc.js +0 -116
  218. package/specs/resources/query.js +1 -1
  219. package/src/api/controllers/application.ts +2 -1
  220. package/src/api/controllers/auth.js +0 -11
  221. package/src/api/controllers/component.js +2 -21
  222. package/src/api/controllers/datasource.js +8 -21
  223. package/src/api/controllers/deploy/index.ts +6 -1
  224. package/src/api/controllers/integration.js +4 -4
  225. package/src/api/controllers/public/mapping/types.ts +0 -8
  226. package/src/api/controllers/row/external.js +1 -1
  227. package/src/api/controllers/screen.js +1 -66
  228. package/src/api/controllers/static/index.ts +1 -1
  229. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  230. package/src/api/controllers/static/templates/preview.hbs +1 -5
  231. package/src/api/index.js +1 -1
  232. package/src/api/routes/application.ts +2 -13
  233. package/src/api/routes/index.ts +0 -2
  234. package/src/api/routes/public/rows.ts +82 -1
  235. package/src/api/routes/public/tables.ts +1 -1
  236. package/src/api/routes/table.js +1 -1
  237. package/src/api/routes/tests/query.spec.js +25 -8
  238. package/src/api/routes/tests/user.spec.js +2 -0
  239. package/src/api/routes/utils/validators.js +5 -26
  240. package/src/app.ts +2 -25
  241. package/src/db/utils.js +0 -12
  242. package/src/definitions/openapi.ts +55 -56
  243. package/src/environment.js +0 -1
  244. package/src/integrations/airtable.ts +118 -116
  245. package/src/integrations/arangodb.ts +89 -87
  246. package/src/integrations/base/query.ts +2 -2
  247. package/src/integrations/base/sqlTable.ts +1 -3
  248. package/src/integrations/couchdb.ts +89 -83
  249. package/src/integrations/dynamodb.ts +175 -173
  250. package/src/integrations/elasticsearch.ts +122 -120
  251. package/src/integrations/firebase.ts +159 -157
  252. package/src/integrations/googlesheets.ts +338 -328
  253. package/src/integrations/index.ts +21 -64
  254. package/src/integrations/microsoftSqlServer.ts +251 -249
  255. package/src/integrations/mongodb.ts +258 -261
  256. package/src/integrations/mysql.ts +234 -229
  257. package/src/integrations/oracle.ts +380 -373
  258. package/src/integrations/postgres.ts +268 -264
  259. package/src/integrations/redis.ts +132 -128
  260. package/src/integrations/rest.ts +329 -324
  261. package/src/integrations/s3.ts +71 -68
  262. package/src/integrations/snowflake.ts +82 -80
  263. package/src/integrations/tests/{airtable.spec.ts → airtable.spec.js} +18 -21
  264. package/src/integrations/tests/{arangodb.spec.ts → arangodb.spec.js} +9 -12
  265. package/src/integrations/tests/{couchdb.spec.ts → couchdb.spec.js} +27 -33
  266. package/src/integrations/tests/{dynamodb.spec.ts → dynamodb.spec.js} +41 -45
  267. package/src/integrations/tests/{elasticsearch.spec.ts → elasticsearch.spec.js} +21 -22
  268. package/src/integrations/tests/{firebase.spec.ts → firebase.spec.js} +28 -33
  269. package/src/integrations/tests/{microsoftSqlServer.spec.ts → microsoftSqlServer.spec.js} +11 -12
  270. package/src/integrations/tests/{mongo.spec.ts → mongo.spec.js} +35 -46
  271. package/src/integrations/tests/{mysql.spec.ts → mysql.spec.js} +15 -17
  272. package/src/integrations/tests/{oracle.spec.ts → oracle.spec.js} +17 -19
  273. package/src/integrations/tests/{postgres.spec.ts → postgres.spec.js} +17 -19
  274. package/src/integrations/tests/{redis.spec.ts → redis.spec.js} +18 -27
  275. package/src/integrations/tests/{rest.spec.ts → rest.spec.js} +14 -22
  276. package/src/integrations/tests/{s3.spec.ts → s3.spec.js} +8 -10
  277. package/src/integrations/tests/{sql.spec.ts → sql.spec.js} +177 -228
  278. package/src/middleware/currentapp.js +0 -2
  279. package/src/migrations/functions/backfill/global.ts +3 -0
  280. package/src/migrations/functions/developerQuota.ts +15 -0
  281. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  282. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  283. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  284. package/src/migrations/index.ts +16 -0
  285. package/src/module.d.ts +0 -2
  286. package/src/tests/utilities/TestConfiguration.js +1 -1
  287. package/src/threads/query.ts +2 -2
  288. package/src/utilities/fileSystem/index.js +0 -130
  289. package/src/utilities/workerRequests.js +0 -8
  290. package/builder/assets/index.c9d3f9e8.js +0 -1005
  291. package/builder/assets/index.f1b70f52.css +0 -6
  292. package/dist/api/controllers/plugin/github.js +0 -69
  293. package/dist/api/controllers/plugin/index.js +0 -200
  294. package/dist/api/controllers/plugin/npm.js +0 -58
  295. package/dist/api/controllers/plugin/uploaders.js +0 -11
  296. package/dist/api/controllers/plugin/utils.js +0 -26
  297. package/dist/watch.js +0 -77
  298. package/dist/websocket.js +0 -22
  299. package/src/api/controllers/plugin/file.ts +0 -15
  300. package/src/api/controllers/plugin/github.ts +0 -75
  301. package/src/api/controllers/plugin/index.ts +0 -215
  302. package/src/api/controllers/plugin/npm.ts +0 -56
  303. package/src/api/controllers/plugin/uploaders.ts +0 -4
  304. package/src/api/controllers/plugin/url.ts +0 -12
  305. package/src/api/controllers/plugin/utils.ts +0 -19
  306. package/src/api/routes/plugin.ts +0 -14
  307. package/src/watch.ts +0 -38
  308. package/src/websocket.ts +0 -26
@@ -11,274 +11,277 @@ 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 mongodb_1 = require("mongodb");
14
- const SCHEMA = {
15
- docs: "https://github.com/mongodb/node-mongodb-native",
16
- friendlyName: "MongoDB",
17
- type: "Non-relational",
18
- description: "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.",
19
- datasource: {
20
- connectionString: {
21
- type: types_1.DatasourceFieldType.STRING,
22
- required: true,
23
- default: "mongodb://localhost:27017",
24
- },
25
- db: {
26
- type: types_1.DatasourceFieldType.STRING,
27
- required: true,
28
- },
29
- },
30
- query: {
31
- create: {
32
- type: types_1.QueryType.JSON,
33
- },
34
- read: {
35
- type: types_1.QueryType.JSON,
36
- },
37
- update: {
38
- type: types_1.QueryType.JSON,
39
- },
40
- delete: {
41
- type: types_1.QueryType.JSON,
14
+ var MongoDBModule;
15
+ (function (MongoDBModule) {
16
+ const SCHEMA = {
17
+ docs: "https://github.com/mongodb/node-mongodb-native",
18
+ friendlyName: "MongoDB",
19
+ type: "Non-relational",
20
+ description: "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.",
21
+ datasource: {
22
+ connectionString: {
23
+ type: types_1.DatasourceFieldType.STRING,
24
+ required: true,
25
+ default: "mongodb://localhost:27017",
26
+ },
27
+ db: {
28
+ type: types_1.DatasourceFieldType.STRING,
29
+ required: true,
30
+ },
42
31
  },
43
- },
44
- extra: {
45
- collection: {
46
- displayName: "Collection",
47
- type: types_1.DatasourceFieldType.STRING,
48
- required: true,
32
+ query: {
33
+ create: {
34
+ type: types_1.QueryType.JSON,
35
+ },
36
+ read: {
37
+ type: types_1.QueryType.JSON,
38
+ },
39
+ update: {
40
+ type: types_1.QueryType.JSON,
41
+ },
42
+ delete: {
43
+ type: types_1.QueryType.JSON,
44
+ },
49
45
  },
50
- actionTypes: {
51
- displayName: "Action Types",
52
- type: types_1.DatasourceFieldType.LIST,
53
- required: true,
54
- data: {
55
- read: ["find", "findOne", "findOneAndUpdate", "count", "distinct"],
56
- create: ["insertOne", "insertMany"],
57
- update: ["updateOne", "updateMany"],
58
- delete: ["deleteOne", "deleteMany"],
46
+ extra: {
47
+ collection: {
48
+ displayName: "Collection",
49
+ type: types_1.DatasourceFieldType.STRING,
50
+ required: true,
51
+ },
52
+ actionTypes: {
53
+ displayName: "Action Types",
54
+ type: types_1.DatasourceFieldType.LIST,
55
+ required: true,
56
+ data: {
57
+ read: ["find", "findOne", "findOneAndUpdate", "count", "distinct"],
58
+ create: ["insertOne", "insertMany"],
59
+ update: ["updateOne", "updateMany"],
60
+ delete: ["deleteOne", "deleteMany"],
61
+ },
59
62
  },
60
63
  },
61
- },
62
- };
63
- class MongoIntegration {
64
- constructor(config) {
65
- this.config = config;
66
- this.client = new mongodb_1.MongoClient(config.connectionString);
67
- }
68
- connect() {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- return this.client.connect();
71
- });
72
- }
73
- createObjectIds(json) {
74
- const self = this;
75
- function interpolateObjectIds(json) {
76
- var _a;
77
- for (let field of Object.keys(json)) {
78
- if (json[field] instanceof Object) {
79
- json[field] = self.createObjectIds(json[field]);
80
- }
81
- if (typeof json[field] === "string" &&
82
- json[field].toLowerCase().startsWith("objectid")) {
83
- const id = (_a = json[field].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)) === null || _a === void 0 ? void 0 : _a[0];
84
- if (id) {
85
- json[field] = mongodb_1.ObjectID.createFromHexString(id);
64
+ };
65
+ class MongoIntegration {
66
+ constructor(config) {
67
+ this.config = config;
68
+ this.client = new mongodb_1.MongoClient(config.connectionString);
69
+ }
70
+ connect() {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ return this.client.connect();
73
+ });
74
+ }
75
+ createObjectIds(json) {
76
+ const self = this;
77
+ function interpolateObjectIds(json) {
78
+ var _a;
79
+ for (let field of Object.keys(json)) {
80
+ if (json[field] instanceof Object) {
81
+ json[field] = self.createObjectIds(json[field]);
82
+ }
83
+ if (typeof json[field] === "string" &&
84
+ json[field].toLowerCase().startsWith("objectid")) {
85
+ const id = (_a = json[field].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)) === null || _a === void 0 ? void 0 : _a[0];
86
+ if (id) {
87
+ json[field] = mongodb_1.ObjectID.createFromHexString(id);
88
+ }
86
89
  }
87
90
  }
91
+ return json;
88
92
  }
89
- return json;
90
- }
91
- if (Array.isArray(json)) {
92
- for (let i = 0; i < json.length; i++) {
93
- json[i] = interpolateObjectIds(json[i]);
93
+ if (Array.isArray(json)) {
94
+ for (let i = 0; i < json.length; i++) {
95
+ json[i] = interpolateObjectIds(json[i]);
96
+ }
97
+ return json;
94
98
  }
95
- return json;
99
+ return interpolateObjectIds(json);
96
100
  }
97
- return interpolateObjectIds(json);
98
- }
99
- parseQueryParams(params, mode) {
100
- var _a, _b, _c;
101
- let queryParams = [];
102
- let openCount = 0;
103
- let inQuotes = false;
104
- let i = 0;
105
- let startIndex = 0;
106
- for (let c of params) {
107
- if (c === '"' && i > 0 && params[i - 1] !== "\\") {
108
- inQuotes = !inQuotes;
109
- }
110
- if (c === "{" && !inQuotes) {
111
- openCount++;
112
- if (openCount === 1) {
113
- startIndex = i;
101
+ parseQueryParams(params, mode) {
102
+ var _a, _b, _c;
103
+ let queryParams = [];
104
+ let openCount = 0;
105
+ let inQuotes = false;
106
+ let i = 0;
107
+ let startIndex = 0;
108
+ for (let c of params) {
109
+ if (c === '"' && i > 0 && params[i - 1] !== "\\") {
110
+ inQuotes = !inQuotes;
114
111
  }
115
- }
116
- else if (c === "}" && !inQuotes) {
117
- if (openCount === 1) {
118
- queryParams.push(JSON.parse(params.substring(startIndex, i + 1)));
112
+ if (c === "{" && !inQuotes) {
113
+ openCount++;
114
+ if (openCount === 1) {
115
+ startIndex = i;
116
+ }
117
+ }
118
+ else if (c === "}" && !inQuotes) {
119
+ if (openCount === 1) {
120
+ queryParams.push(JSON.parse(params.substring(startIndex, i + 1)));
121
+ }
122
+ openCount--;
119
123
  }
120
- openCount--;
124
+ i++;
125
+ }
126
+ let group1 = (_a = queryParams[0]) !== null && _a !== void 0 ? _a : {};
127
+ let group2 = (_b = queryParams[1]) !== null && _b !== void 0 ? _b : {};
128
+ let group3 = (_c = queryParams[2]) !== null && _c !== void 0 ? _c : {};
129
+ if (mode === "update") {
130
+ return {
131
+ filter: group1,
132
+ update: group2,
133
+ options: group3,
134
+ };
121
135
  }
122
- i++;
123
- }
124
- let group1 = (_a = queryParams[0]) !== null && _a !== void 0 ? _a : {};
125
- let group2 = (_b = queryParams[1]) !== null && _b !== void 0 ? _b : {};
126
- let group3 = (_c = queryParams[2]) !== null && _c !== void 0 ? _c : {};
127
- if (mode === "update") {
128
136
  return {
129
137
  filter: group1,
130
- update: group2,
131
- options: group3,
138
+ options: group2,
132
139
  };
133
140
  }
134
- return {
135
- filter: group1,
136
- options: group2,
137
- };
138
- }
139
- create(query) {
140
- return __awaiter(this, void 0, void 0, function* () {
141
- try {
142
- yield this.connect();
143
- const db = this.client.db(this.config.db);
144
- const collection = db.collection(query.extra.collection);
145
- let json = this.createObjectIds(query.json);
146
- // For mongodb we add an extra actionType to specify
147
- // which method we want to call on the collection
148
- switch (query.extra.actionTypes) {
149
- case "insertOne": {
150
- return yield collection.insertOne(json);
151
- }
152
- case "insertMany": {
153
- return yield collection.insertMany(json);
154
- }
155
- default: {
156
- throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for create`);
141
+ create(query) {
142
+ return __awaiter(this, void 0, void 0, function* () {
143
+ try {
144
+ yield this.connect();
145
+ const db = this.client.db(this.config.db);
146
+ const collection = db.collection(query.extra.collection);
147
+ let json = this.createObjectIds(query.json);
148
+ // For mongodb we add an extra actionType to specify
149
+ // which method we want to call on the collection
150
+ switch (query.extra.actionTypes) {
151
+ case "insertOne": {
152
+ return yield collection.insertOne(json);
153
+ }
154
+ case "insertMany": {
155
+ return yield collection.insertMany(json);
156
+ }
157
+ default: {
158
+ throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for create`);
159
+ }
157
160
  }
158
161
  }
159
- }
160
- catch (err) {
161
- console.error("Error writing to mongodb", err);
162
- throw err;
163
- }
164
- finally {
165
- yield this.client.close();
166
- }
167
- });
168
- }
169
- read(query) {
170
- return __awaiter(this, void 0, void 0, function* () {
171
- try {
172
- yield this.connect();
173
- const db = this.client.db(this.config.db);
174
- const collection = db.collection(query.extra.collection);
175
- let json = this.createObjectIds(query.json);
176
- switch (query.extra.actionTypes) {
177
- case "find": {
178
- return yield collection.find(json).toArray();
179
- }
180
- case "findOne": {
181
- return yield collection.findOne(json);
182
- }
183
- case "findOneAndUpdate": {
184
- if (typeof query.json === "string") {
185
- json = this.parseQueryParams(query.json, "update");
162
+ catch (err) {
163
+ console.error("Error writing to mongodb", err);
164
+ throw err;
165
+ }
166
+ finally {
167
+ yield this.client.close();
168
+ }
169
+ });
170
+ }
171
+ read(query) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ try {
174
+ yield this.connect();
175
+ const db = this.client.db(this.config.db);
176
+ const collection = db.collection(query.extra.collection);
177
+ let json = this.createObjectIds(query.json);
178
+ switch (query.extra.actionTypes) {
179
+ case "find": {
180
+ return yield collection.find(json).toArray();
181
+ }
182
+ case "findOne": {
183
+ return yield collection.findOne(json);
184
+ }
185
+ case "findOneAndUpdate": {
186
+ if (typeof query.json === "string") {
187
+ json = this.parseQueryParams(query.json, "update");
188
+ }
189
+ let findAndUpdateJson = this.createObjectIds(json);
190
+ return yield collection.findOneAndUpdate(findAndUpdateJson.filter, findAndUpdateJson.update, findAndUpdateJson.options);
191
+ }
192
+ case "count": {
193
+ return yield collection.countDocuments(json);
194
+ }
195
+ case "distinct": {
196
+ return yield collection.distinct(json);
197
+ }
198
+ default: {
199
+ throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for read`);
186
200
  }
187
- let findAndUpdateJson = this.createObjectIds(json);
188
- return yield collection.findOneAndUpdate(findAndUpdateJson.filter, findAndUpdateJson.update, findAndUpdateJson.options);
189
- }
190
- case "count": {
191
- return yield collection.countDocuments(json);
192
- }
193
- case "distinct": {
194
- return yield collection.distinct(json);
195
- }
196
- default: {
197
- throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for read`);
198
201
  }
199
202
  }
200
- }
201
- catch (err) {
202
- console.error("Error querying mongodb", err);
203
- throw err;
204
- }
205
- finally {
206
- yield this.client.close();
207
- }
208
- });
209
- }
210
- update(query) {
211
- return __awaiter(this, void 0, void 0, function* () {
212
- try {
213
- yield this.connect();
214
- const db = this.client.db(this.config.db);
215
- const collection = db.collection(query.extra.collection);
216
- let queryJson = query.json;
217
- if (typeof queryJson === "string") {
218
- queryJson = this.parseQueryParams(queryJson, "update");
203
+ catch (err) {
204
+ console.error("Error querying mongodb", err);
205
+ throw err;
219
206
  }
220
- let json = this.createObjectIds(queryJson);
221
- switch (query.extra.actionTypes) {
222
- case "updateOne": {
223
- return yield collection.updateOne(json.filter, json.update, json.options);
224
- }
225
- case "updateMany": {
226
- return yield collection.updateMany(json.filter, json.update, json.options);
207
+ finally {
208
+ yield this.client.close();
209
+ }
210
+ });
211
+ }
212
+ update(query) {
213
+ return __awaiter(this, void 0, void 0, function* () {
214
+ try {
215
+ yield this.connect();
216
+ const db = this.client.db(this.config.db);
217
+ const collection = db.collection(query.extra.collection);
218
+ let queryJson = query.json;
219
+ if (typeof queryJson === "string") {
220
+ queryJson = this.parseQueryParams(queryJson, "update");
227
221
  }
228
- default: {
229
- throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for update`);
222
+ let json = this.createObjectIds(queryJson);
223
+ switch (query.extra.actionTypes) {
224
+ case "updateOne": {
225
+ return yield collection.updateOne(json.filter, json.update, json.options);
226
+ }
227
+ case "updateMany": {
228
+ return yield collection.updateMany(json.filter, json.update, json.options);
229
+ }
230
+ default: {
231
+ throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for update`);
232
+ }
230
233
  }
231
234
  }
232
- }
233
- catch (err) {
234
- console.error("Error writing to mongodb", err);
235
- throw err;
236
- }
237
- finally {
238
- yield this.client.close();
239
- }
240
- });
241
- }
242
- delete(query) {
243
- return __awaiter(this, void 0, void 0, function* () {
244
- try {
245
- yield this.connect();
246
- const db = this.client.db(this.config.db);
247
- const collection = db.collection(query.extra.collection);
248
- let queryJson = query.json;
249
- if (typeof queryJson === "string") {
250
- queryJson = this.parseQueryParams(queryJson, "delete");
235
+ catch (err) {
236
+ console.error("Error writing to mongodb", err);
237
+ throw err;
251
238
  }
252
- let json = this.createObjectIds(queryJson);
253
- if (!json.options) {
254
- json = {
255
- filter: json,
256
- options: {},
257
- };
239
+ finally {
240
+ yield this.client.close();
258
241
  }
259
- switch (query.extra.actionTypes) {
260
- case "deleteOne": {
261
- return yield collection.deleteOne(json.filter, json.options);
242
+ });
243
+ }
244
+ delete(query) {
245
+ return __awaiter(this, void 0, void 0, function* () {
246
+ try {
247
+ yield this.connect();
248
+ const db = this.client.db(this.config.db);
249
+ const collection = db.collection(query.extra.collection);
250
+ let queryJson = query.json;
251
+ if (typeof queryJson === "string") {
252
+ queryJson = this.parseQueryParams(queryJson, "delete");
262
253
  }
263
- case "deleteMany": {
264
- return yield collection.deleteMany(json.filter, json.options);
254
+ let json = this.createObjectIds(queryJson);
255
+ if (!json.options) {
256
+ json = {
257
+ filter: json,
258
+ options: {},
259
+ };
265
260
  }
266
- default: {
267
- throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for delete`);
261
+ switch (query.extra.actionTypes) {
262
+ case "deleteOne": {
263
+ return yield collection.deleteOne(json.filter, json.options);
264
+ }
265
+ case "deleteMany": {
266
+ return yield collection.deleteMany(json.filter, json.options);
267
+ }
268
+ default: {
269
+ throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for delete`);
270
+ }
268
271
  }
269
272
  }
270
- }
271
- catch (err) {
272
- console.error("Error writing to mongodb", err);
273
- throw err;
274
- }
275
- finally {
276
- yield this.client.close();
277
- }
278
- });
273
+ catch (err) {
274
+ console.error("Error writing to mongodb", err);
275
+ throw err;
276
+ }
277
+ finally {
278
+ yield this.client.close();
279
+ }
280
+ });
281
+ }
279
282
  }
280
- }
281
- exports.default = {
282
- schema: SCHEMA,
283
- integration: MongoIntegration,
284
- };
283
+ module.exports = {
284
+ schema: SCHEMA,
285
+ integration: MongoIntegration,
286
+ };
287
+ })(MongoDBModule || (MongoDBModule = {}));