@budibase/server 1.0.162 → 1.0.164

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 (164) hide show
  1. package/builder/assets/{index.54fa98bf.js → index.f0bffdb7.js} +1 -1
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  5. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/index.html +1 -1
  14. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  43. package/coverage/lcov-report/api/index.html +1 -1
  44. package/coverage/lcov-report/api/index.js.html +1 -1
  45. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/index.html +1 -1
  56. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  70. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  73. package/coverage/lcov-report/automations/actions.js.html +1 -1
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  76. package/coverage/lcov-report/automations/index.html +1 -1
  77. package/coverage/lcov-report/automations/index.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/index.html +1 -1
  85. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  104. package/coverage/lcov-report/constants/index.html +1 -1
  105. package/coverage/lcov-report/constants/index.js.html +1 -1
  106. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  107. package/coverage/lcov-report/constants/screens.js.html +1 -1
  108. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  109. package/coverage/lcov-report/db/index.html +1 -1
  110. package/coverage/lcov-report/db/index.js.html +1 -1
  111. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  115. package/coverage/lcov-report/db/newid.js.html +1 -1
  116. package/coverage/lcov-report/db/utils.js.html +1 -1
  117. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  118. package/coverage/lcov-report/events/index.html +1 -1
  119. package/coverage/lcov-report/events/index.js.html +1 -1
  120. package/coverage/lcov-report/events/utils.js.html +1 -1
  121. package/coverage/lcov-report/index.html +1 -1
  122. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  123. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  124. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  125. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  126. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  127. package/coverage/lcov-report/middleware/index.html +1 -1
  128. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  129. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  130. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  131. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  132. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  133. package/coverage/lcov-report/threads/automation.js.html +1 -1
  134. package/coverage/lcov-report/threads/index.html +1 -1
  135. package/coverage/lcov-report/threads/query.js.html +1 -1
  136. package/coverage/lcov-report/threads/utils.js.html +1 -1
  137. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  138. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  139. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  140. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  141. package/coverage/lcov-report/utilities/global.js.html +1 -1
  142. package/coverage/lcov-report/utilities/index.html +1 -1
  143. package/coverage/lcov-report/utilities/index.js.html +1 -1
  144. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  145. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  147. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  150. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  151. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  152. package/coverage/lcov-report/utilities/security.js.html +1 -1
  153. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  156. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  157. package/coverage/lcov-report/utilities/users.js.html +1 -1
  158. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  159. package/dist/integrations/mongodb.js +77 -13
  160. package/dist/package.json +6 -5
  161. package/dist/tsconfig.build.tsbuildinfo +1 -1
  162. package/package.json +7 -6
  163. package/src/integrations/mongodb.ts +112 -13
  164. package/src/integrations/tests/mongo.spec.js +34 -17
@@ -10,9 +10,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const datasource_1 = require("../definitions/datasource");
13
+ const mongodb_1 = require("mongodb");
13
14
  var MongoDBModule;
14
15
  (function (MongoDBModule) {
15
- const { MongoClient } = require("mongodb");
16
16
  const SCHEMA = {
17
17
  docs: "https://github.com/mongodb/node-mongodb-native",
18
18
  friendlyName: "MongoDB",
@@ -64,27 +64,79 @@ var MongoDBModule;
64
64
  class MongoIntegration {
65
65
  constructor(config) {
66
66
  this.config = config;
67
- this.client = new MongoClient(config.connectionString);
67
+ this.client = new mongodb_1.MongoClient(config.connectionString);
68
68
  }
69
69
  connect() {
70
70
  return __awaiter(this, void 0, void 0, function* () {
71
71
  return this.client.connect();
72
72
  });
73
73
  }
74
+ createObjectIds(json) {
75
+ const self = this;
76
+ function interpolateObjectIds(json) {
77
+ var _a;
78
+ for (let field of Object.keys(json)) {
79
+ if (json[field] instanceof Object) {
80
+ json[field] = self.createObjectIds(json[field]);
81
+ }
82
+ if (field === "_id" && typeof json[field] === "string") {
83
+ const id = (_a = json["_id"].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)) === null || _a === void 0 ? void 0 : _a[0];
84
+ if (id) {
85
+ json["_id"] = mongodb_1.ObjectID.createFromHexString(id);
86
+ }
87
+ }
88
+ }
89
+ return json;
90
+ }
91
+ if (Array.isArray(json)) {
92
+ for (let i = 0; i < json.length; i++) {
93
+ json[i] = interpolateObjectIds(json[i]);
94
+ }
95
+ return json;
96
+ }
97
+ return interpolateObjectIds(json);
98
+ }
99
+ parseQueryParams(params, mode) {
100
+ let queryParams = params.split(/(?<=(},)).*{/g);
101
+ let group1 = queryParams[0];
102
+ let group2 = queryParams[2];
103
+ let group3 = queryParams[4];
104
+ if (group1) {
105
+ group1 = JSON.parse(group1.replace(/,+$/, ""));
106
+ }
107
+ if (group2) {
108
+ group2 = JSON.parse("{" + group2.replace(/,+$/, ""));
109
+ }
110
+ if (group3) {
111
+ group3 = JSON.parse("{" + group3.replace(/,+$/, ""));
112
+ }
113
+ if (mode === "update") {
114
+ return {
115
+ filter: group1,
116
+ update: group2,
117
+ options: group3 !== null && group3 !== void 0 ? group3 : {},
118
+ };
119
+ }
120
+ return {
121
+ filter: group1,
122
+ options: group2 !== null && group2 !== void 0 ? group2 : {},
123
+ };
124
+ }
74
125
  create(query) {
75
126
  return __awaiter(this, void 0, void 0, function* () {
76
127
  try {
77
128
  yield this.connect();
78
129
  const db = this.client.db(this.config.db);
79
130
  const collection = db.collection(query.extra.collection);
131
+ let json = this.createObjectIds(query.json);
80
132
  // For mongodb we add an extra actionType to specify
81
133
  // which method we want to call on the collection
82
134
  switch (query.extra.actionTypes) {
83
135
  case "insertOne": {
84
- return yield collection.insertOne(query.json);
136
+ return yield collection.insertOne(json);
85
137
  }
86
138
  case "insertMany": {
87
- return yield collection.insertOne(query.json).toArray();
139
+ return yield collection.insertMany(json);
88
140
  }
89
141
  default: {
90
142
  throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for create`);
@@ -106,21 +158,23 @@ var MongoDBModule;
106
158
  yield this.connect();
107
159
  const db = this.client.db(this.config.db);
108
160
  const collection = db.collection(query.extra.collection);
161
+ let json = this.createObjectIds(query.json);
109
162
  switch (query.extra.actionTypes) {
110
163
  case "find": {
111
- return yield collection.find(query.json).toArray();
164
+ return yield collection.find(json).toArray();
112
165
  }
113
166
  case "findOne": {
114
- return yield collection.findOne(query.json);
167
+ return yield collection.findOne(json);
115
168
  }
116
169
  case "findOneAndUpdate": {
117
- return yield collection.findOneAndUpdate(query.json);
170
+ let findAndUpdateJson = json;
171
+ return yield collection.findOneAndUpdate(findAndUpdateJson.filter, findAndUpdateJson.update, findAndUpdateJson.options);
118
172
  }
119
173
  case "count": {
120
- return yield collection.countDocuments(query.json);
174
+ return yield collection.countDocuments(json);
121
175
  }
122
176
  case "distinct": {
123
- return yield collection.distinct(query.json);
177
+ return yield collection.distinct(json);
124
178
  }
125
179
  default: {
126
180
  throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for read`);
@@ -142,12 +196,17 @@ var MongoDBModule;
142
196
  yield this.connect();
143
197
  const db = this.client.db(this.config.db);
144
198
  const collection = db.collection(query.extra.collection);
199
+ let queryJson = query.json;
200
+ if (typeof queryJson === "string") {
201
+ queryJson = this.parseQueryParams(queryJson, "update");
202
+ }
203
+ let json = this.createObjectIds(queryJson);
145
204
  switch (query.extra.actionTypes) {
146
205
  case "updateOne": {
147
- return yield collection.updateOne(query.json);
206
+ return yield collection.updateOne(json.filter, json.update, json.options);
148
207
  }
149
208
  case "updateMany": {
150
- return yield collection.updateMany(query.json).toArray();
209
+ return yield collection.updateMany(json.filter, json.update, json.options);
151
210
  }
152
211
  default: {
153
212
  throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for update`);
@@ -169,12 +228,17 @@ var MongoDBModule;
169
228
  yield this.connect();
170
229
  const db = this.client.db(this.config.db);
171
230
  const collection = db.collection(query.extra.collection);
231
+ let queryJson = query.json;
232
+ if (typeof queryJson === "string") {
233
+ queryJson = this.parseQueryParams(queryJson, "delete");
234
+ }
235
+ let json = this.createObjectIds(queryJson);
172
236
  switch (query.extra.actionTypes) {
173
237
  case "deleteOne": {
174
- return yield collection.deleteOne(query.json);
238
+ return yield collection.deleteOne(json.filter, json.options);
175
239
  }
176
240
  case "deleteMany": {
177
- return yield collection.deleteMany(query.json).toArray();
241
+ return yield collection.deleteMany(json.filter, json.options);
178
242
  }
179
243
  default: {
180
244
  throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for delete`);
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.0.161",
4
+ "version": "1.0.163",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -69,10 +69,10 @@
69
69
  "license": "GPL-3.0",
70
70
  "dependencies": {
71
71
  "@apidevtools/swagger-parser": "^10.0.3",
72
- "@budibase/backend-core": "^1.0.161",
73
- "@budibase/client": "^1.0.161",
74
- "@budibase/pro": "1.0.161",
75
- "@budibase/string-templates": "^1.0.161",
72
+ "@budibase/backend-core": "^1.0.163",
73
+ "@budibase/client": "^1.0.163",
74
+ "@budibase/pro": "1.0.163",
75
+ "@budibase/string-templates": "^1.0.163",
76
76
  "@bull-board/api": "^3.7.0",
77
77
  "@bull-board/koa": "^3.7.0",
78
78
  "@elastic/elasticsearch": "7.10.0",
@@ -155,6 +155,7 @@
155
155
  "@types/node": "^15.12.4",
156
156
  "@types/oracledb": "^5.2.1",
157
157
  "@types/redis": "^4.0.11",
158
+ "@types/mongodb": "3.6.3",
158
159
  "@typescript-eslint/parser": "5.12.0",
159
160
  "apidoc": "^0.50.2",
160
161
  "babel-jest": "^27.0.2",