@budibase/server 1.2.26 → 1.2.28-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/__mocks__/mongodb.ts +4 -0
  2. package/__mocks__/node-fetch.ts +8 -1
  3. package/builder/assets/index.134b1c62.js +977 -0
  4. package/builder/assets/{index.08dd0c5e.css → index.f1c7e247.css} +1 -1
  5. package/builder/index.html +2 -2
  6. package/coverage/clover.xml +385 -380
  7. package/coverage/coverage-final.json +9 -9
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/index.html +1 -1
  17. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +25 -25
  28. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +209 -191
  30. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +27 -18
  32. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +2 -2
  36. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  40. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  46. package/coverage/lcov-report/api/index.html +1 -1
  47. package/coverage/lcov-report/api/index.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/index.html +1 -1
  59. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  76. package/coverage/lcov-report/automations/actions.js.html +1 -1
  77. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  78. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  79. package/coverage/lcov-report/automations/index.html +1 -1
  80. package/coverage/lcov-report/automations/index.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/index.html +1 -1
  88. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  107. package/coverage/lcov-report/constants/index.html +1 -1
  108. package/coverage/lcov-report/constants/index.js.html +30 -30
  109. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  110. package/coverage/lcov-report/constants/screens.js.html +1 -1
  111. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  112. package/coverage/lcov-report/db/index.html +1 -1
  113. package/coverage/lcov-report/db/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  118. package/coverage/lcov-report/db/newid.js.html +3 -3
  119. package/coverage/lcov-report/db/utils.js.html +61 -61
  120. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  121. package/coverage/lcov-report/events/index.html +1 -1
  122. package/coverage/lcov-report/events/index.js.html +1 -1
  123. package/coverage/lcov-report/events/utils.js.html +1 -1
  124. package/coverage/lcov-report/index.html +19 -19
  125. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  126. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  127. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  128. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  129. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  130. package/coverage/lcov-report/middleware/index.html +1 -1
  131. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  132. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  133. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  134. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  135. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  136. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  137. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  138. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  139. package/coverage/lcov-report/utilities/global.js.html +16 -16
  140. package/coverage/lcov-report/utilities/index.html +1 -1
  141. package/coverage/lcov-report/utilities/index.js.html +23 -23
  142. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  143. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  146. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  149. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  150. package/coverage/lcov-report/utilities/security.js.html +1 -1
  151. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  152. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  155. package/coverage/lcov-report/utilities/users.js.html +7 -7
  156. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  157. package/coverage/lcov.info +598 -593
  158. package/dist/api/controllers/row/internalSearch.js +5 -0
  159. package/dist/api/controllers/row/utils.js +3 -1
  160. package/dist/api/controllers/table/external.js +1 -1
  161. package/dist/automations/logging/index.js +3 -0
  162. package/dist/integrations/base/query.js +27 -0
  163. package/dist/integrations/base/sql.js +5 -4
  164. package/dist/integrations/base/utils.js +13 -27
  165. package/dist/integrations/microsoftSqlServer.js +5 -2
  166. package/dist/integrations/mongodb.js +35 -8
  167. package/dist/integrations/mysql.js +2 -2
  168. package/dist/integrations/postgres.js +5 -2
  169. package/dist/package.json +7 -7
  170. package/dist/tsconfig.build.tsbuildinfo +1 -1
  171. package/package.json +8 -8
  172. package/src/api/controllers/row/internalSearch.js +6 -0
  173. package/src/api/controllers/row/utils.js +4 -1
  174. package/src/api/controllers/table/external.js +1 -1
  175. package/src/api/routes/tests/internalSearch.spec.js +157 -0
  176. package/src/automations/logging/index.ts +3 -0
  177. package/src/integrations/base/query.ts +17 -0
  178. package/src/integrations/base/sql.ts +5 -4
  179. package/src/integrations/base/utils.ts +9 -19
  180. package/src/integrations/microsoftSqlServer.ts +3 -2
  181. package/src/integrations/mongodb.ts +35 -8
  182. package/src/integrations/mysql.ts +1 -1
  183. package/src/integrations/postgres.ts +2 -1
  184. package/src/integrations/queries/sql.ts +0 -1
  185. package/src/integrations/tests/mongo.spec.js +218 -0
  186. package/src/integrations/tests/sql.spec.js +1 -1
  187. package/builder/assets/index.a014d6b5.js +0 -975
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  const { SearchIndexes } = require("../../../db/utils");
12
+ const { removeKeyNumbering } = require("./utils");
12
13
  const fetch = require("node-fetch");
13
14
  const { getCouchInfo } = require("@budibase/backend-core/db");
14
15
  const { getAppId } = require("@budibase/backend-core/context");
@@ -169,6 +170,8 @@ class QueryBuilder {
169
170
  };
170
171
  function build(structure, queryFn) {
171
172
  for (let [key, value] of Object.entries(structure)) {
173
+ // check for new format - remove numbering if needed
174
+ key = removeKeyNumbering(key);
172
175
  key = builder.preprocess(key.replace(/ /g, "_"), {
173
176
  escape: true,
174
177
  });
@@ -280,6 +283,8 @@ class QueryBuilder {
280
283
  });
281
284
  }
282
285
  }
286
+ // exported for unit testing
287
+ exports.QueryBuilder = QueryBuilder;
283
288
  /**
284
289
  * Executes a lucene search query.
285
290
  * @param url The query URL
@@ -13,8 +13,9 @@ const { cloneDeep } = require("lodash/fp");
13
13
  const { InternalTables } = require("../../../db/utils");
14
14
  const userController = require("../user");
15
15
  const { FieldTypes } = require("../../../constants");
16
- const { makeExternalQuery } = require("../../../integrations/base/utils");
17
16
  const { getAppDB } = require("@budibase/backend-core/context");
17
+ const { makeExternalQuery } = require("../../../integrations/base/query");
18
+ const { removeKeyNumbering } = require("../../../integrations/base/utils");
18
19
  validateJs.extend(validateJs.validators.datetime, {
19
20
  parse: function (value) {
20
21
  return new Date(value).getTime();
@@ -24,6 +25,7 @@ validateJs.extend(validateJs.validators.datetime, {
24
25
  return new Date(value).toISOString();
25
26
  },
26
27
  });
28
+ exports.removeKeyNumbering = removeKeyNumbering;
27
29
  exports.getDatasourceAndQuery = (json) => __awaiter(void 0, void 0, void 0, function* () {
28
30
  const datasourceId = json.endpoint.datasourceId;
29
31
  const db = getAppDB();
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  const { buildExternalTableId, breakExternalTableId, } = require("../../../integrations/utils");
12
12
  const { getTable, generateForeignKey, generateJunctionTableName, foreignKeyStructure, hasTypeChanged, } = require("./utils");
13
13
  const { DataSourceOperation, FieldTypes, RelationshipTypes, } = require("../../../constants");
14
- const { makeExternalQuery } = require("../../../integrations/base/utils");
14
+ const { makeExternalQuery } = require("../../../integrations/base/query");
15
15
  const { cloneDeep } = require("lodash/fp");
16
16
  const csvParser = require("../../../utilities/csvParser");
17
17
  const { handleRequest } = require("../row/external");
@@ -56,6 +56,9 @@ function checkAppMetadata(apps) {
56
56
  for (let [key, errors] of Object.entries(metadata.automationErrors)) {
57
57
  const updated = [];
58
58
  for (let error of errors) {
59
+ if (!error) {
60
+ continue;
61
+ }
59
62
  const startDate = error.split(backend_core_1.db.SEPARATOR)[2];
60
63
  if (startDate > maxStartDate) {
61
64
  updated.push(error);
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.makeExternalQuery = void 0;
13
+ const { integrations } = require("../index");
14
+ function makeExternalQuery(datasource, json) {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const Integration = integrations[datasource.source];
17
+ // query is the opinionated function
18
+ if (Integration.prototype.query) {
19
+ const integration = new Integration(datasource.config);
20
+ return integration.query(json);
21
+ }
22
+ else {
23
+ throw "Datasource does not support query.";
24
+ }
25
+ });
26
+ }
27
+ exports.makeExternalQuery = makeExternalQuery;
@@ -17,6 +17,7 @@ const datasource_1 = require("../../definitions/datasource");
17
17
  const utils_1 = require("../utils");
18
18
  const sqlTable_1 = __importDefault(require("./sqlTable"));
19
19
  const environment_1 = __importDefault(require("../../environment"));
20
+ const utils_2 = require("./utils");
20
21
  const envLimit = environment_1.default.SQL_MAX_ROWS
21
22
  ? parseInt(environment_1.default.SQL_MAX_ROWS)
22
23
  : null;
@@ -116,12 +117,13 @@ class InternalBuilder {
116
117
  addFilters(query, filters, opts) {
117
118
  function iterate(structure, fn) {
118
119
  for (let [key, value] of Object.entries(structure)) {
119
- const isRelationshipField = key.includes(".");
120
+ const updatedKey = (0, utils_2.removeKeyNumbering)(key);
121
+ const isRelationshipField = updatedKey.includes(".");
120
122
  if (!opts.relationship && !isRelationshipField) {
121
- fn(`${opts.tableName}.${key}`, value);
123
+ fn(`${opts.tableName}.${updatedKey}`, value);
122
124
  }
123
125
  if (opts.relationship && isRelationshipField) {
124
- fn(key, value);
126
+ fn(updatedKey, value);
125
127
  }
126
128
  }
127
129
  }
@@ -548,4 +550,3 @@ class SqlQueryBuilder extends sqlTable_1.default {
548
550
  }
549
551
  }
550
552
  exports.default = SqlQueryBuilder;
551
- module.exports = SqlQueryBuilder;
@@ -1,30 +1,16 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
- var DatasourceUtils;
13
- (function (DatasourceUtils) {
14
- const { integrations } = require("../index");
15
- function makeExternalQuery(datasource, json) {
16
- return __awaiter(this, void 0, void 0, function* () {
17
- const Integration = integrations[datasource.source];
18
- // query is the opinionated function
19
- if (Integration.prototype.query) {
20
- const integration = new Integration(datasource.config);
21
- return integration.query(json);
22
- }
23
- else {
24
- throw "Datasource does not support query.";
25
- }
26
- });
3
+ exports.removeKeyNumbering = void 0;
4
+ const QUERY_START_REGEX = /\d[0-9]*:/g;
5
+ function removeKeyNumbering(key) {
6
+ if (typeof key === "string" && key.match(QUERY_START_REGEX) != null) {
7
+ const parts = key.split(":");
8
+ // remove the number
9
+ parts.shift();
10
+ return parts.join(":");
27
11
  }
28
- DatasourceUtils.makeExternalQuery = makeExternalQuery;
29
- module.exports.makeExternalQuery = makeExternalQuery;
30
- })(DatasourceUtils || (DatasourceUtils = {}));
12
+ else {
13
+ return key;
14
+ }
15
+ }
16
+ exports.removeKeyNumbering = removeKeyNumbering;
@@ -8,13 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  const datasource_1 = require("../definitions/datasource");
13
16
  const utils_1 = require("./utils");
17
+ const sql_1 = __importDefault(require("./base/sql"));
14
18
  var MSSQLModule;
15
19
  (function (MSSQLModule) {
16
20
  const sqlServer = require("mssql");
17
- const Sql = require("./base/sql");
18
21
  const DEFAULT_SCHEMA = "dbo";
19
22
  const SCHEMA = {
20
23
  docs: "https://github.com/tediousjs/node-mssql",
@@ -69,7 +72,7 @@ var MSSQLModule;
69
72
  },
70
73
  },
71
74
  };
72
- class SqlServerIntegration extends Sql {
75
+ class SqlServerIntegration extends sql_1.default {
73
76
  constructor(config) {
74
77
  super(utils_1.SqlClients.MS_SQL);
75
78
  this.index = 0;
@@ -80,10 +80,11 @@ var MongoDBModule;
80
80
  if (json[field] instanceof Object) {
81
81
  json[field] = self.createObjectIds(json[field]);
82
82
  }
83
- if (field === "_id" && typeof json[field] === "string") {
84
- const id = (_a = json["_id"].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)) === null || _a === void 0 ? void 0 : _a[0];
83
+ if ((field === "_id" || (field === null || field === void 0 ? void 0 : field.startsWith("$"))) &&
84
+ typeof json[field] === "string") {
85
+ const id = (_a = json[field].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)) === null || _a === void 0 ? void 0 : _a[0];
85
86
  if (id) {
86
- json["_id"] = mongodb_1.ObjectID.createFromHexString(id);
87
+ json[field] = mongodb_1.ObjectID.createFromHexString(id);
87
88
  }
88
89
  }
89
90
  }
@@ -98,10 +99,33 @@ var MongoDBModule;
98
99
  return interpolateObjectIds(json);
99
100
  }
100
101
  parseQueryParams(params, mode) {
101
- let queryParams = params.split(/(?<=}),[\n\s]*(?={)/g);
102
- let group1 = queryParams[0] ? JSON.parse(queryParams[0]) : {};
103
- let group2 = queryParams[1] ? JSON.parse(queryParams[1]) : {};
104
- let group3 = queryParams[2] ? JSON.parse(queryParams[2]) : {};
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;
111
+ }
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--;
123
+ }
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 : {};
105
129
  if (mode === "update") {
106
130
  return {
107
131
  filter: group1,
@@ -159,7 +183,10 @@ var MongoDBModule;
159
183
  return yield collection.findOne(json);
160
184
  }
161
185
  case "findOneAndUpdate": {
162
- let findAndUpdateJson = json;
186
+ if (typeof query.json === "string") {
187
+ json = this.parseQueryParams(query.json, "update");
188
+ }
189
+ let findAndUpdateJson = this.createObjectIds(json);
163
190
  return yield collection.findOneAndUpdate(findAndUpdateJson.filter, findAndUpdateJson.update, findAndUpdateJson.options);
164
191
  }
165
192
  case "count": {
@@ -16,10 +16,10 @@ const datasource_1 = require("../definitions/datasource");
16
16
  const utils_1 = require("./utils");
17
17
  const dayjs_1 = __importDefault(require("dayjs"));
18
18
  const { NUMBER_REGEX } = require("../utilities");
19
+ const sql_1 = __importDefault(require("./base/sql"));
19
20
  var MySQLModule;
20
21
  (function (MySQLModule) {
21
22
  const mysql = require("mysql2/promise");
22
- const Sql = require("./base/sql");
23
23
  const SCHEMA = {
24
24
  docs: "https://github.com/sidorares/node-mysql2",
25
25
  plus: true,
@@ -96,7 +96,7 @@ var MySQLModule;
96
96
  }
97
97
  return bindings;
98
98
  }
99
- class MySQLIntegration extends Sql {
99
+ class MySQLIntegration extends sql_1.default {
100
100
  constructor(config) {
101
101
  super(utils_1.SqlClients.MY_SQL);
102
102
  this.tables = {};
@@ -8,13 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  const datasource_1 = require("../definitions/datasource");
13
16
  const utils_1 = require("./utils");
17
+ const sql_1 = __importDefault(require("./base/sql"));
14
18
  var PostgresModule;
15
19
  (function (PostgresModule) {
16
20
  const { Client, types } = require("pg");
17
- const Sql = require("./base/sql");
18
21
  const { escapeDangerousCharacters } = require("../utilities");
19
22
  // Return "date" and "timestamp" types as plain strings.
20
23
  // This lets us reference the original stored timezone.
@@ -93,7 +96,7 @@ var PostgresModule;
93
96
  },
94
97
  },
95
98
  };
96
- class PostgresIntegration extends Sql {
99
+ class PostgresIntegration extends sql_1.default {
97
100
  constructor(config) {
98
101
  super(utils_1.SqlClients.POSTGRES);
99
102
  this.index = 1;
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.2.25",
4
+ "version": "1.2.28-alpha.0",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -77,11 +77,11 @@
77
77
  "license": "GPL-3.0",
78
78
  "dependencies": {
79
79
  "@apidevtools/swagger-parser": "10.0.3",
80
- "@budibase/backend-core": "^1.2.25",
81
- "@budibase/client": "^1.2.25",
82
- "@budibase/pro": "1.2.25",
83
- "@budibase/string-templates": "^1.2.25",
84
- "@budibase/types": "^1.2.25",
80
+ "@budibase/backend-core": "1.2.28-alpha.0",
81
+ "@budibase/client": "1.2.28-alpha.0",
82
+ "@budibase/pro": "1.2.28-alpha.0",
83
+ "@budibase/string-templates": "1.2.28-alpha.0",
84
+ "@budibase/types": "1.2.28-alpha.0",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",
@@ -106,7 +106,7 @@
106
106
  "google-auth-library": "7.12.0",
107
107
  "google-spreadsheet": "3.2.0",
108
108
  "jimp": "0.16.1",
109
- "joi": "17.2.1",
109
+ "joi": "17.6.0",
110
110
  "js-yaml": "4.1.0",
111
111
  "jsonschema": "1.4.0",
112
112
  "knex": "0.95.15",