@budibase/server 0.9.169-alpha.0 → 0.9.169-alpha.4

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 (173) hide show
  1. package/builder/assets/{index.bcacf476.css → index.0ea76a5c.css} +2 -2
  2. package/builder/assets/{index.cb5f4e3c.js → index.45b6b02b.js} +34 -34
  3. package/builder/assets/{vendor.bca5cd21.js → vendor.2053eff2.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +12 -12
  6. package/coverage/coverage-final.json +2 -2
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +6 -9
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/index.html +5 -5
  19. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +7 -4
  23. package/coverage/lcov-report/api/controllers/query.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 +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.js.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/utils.js.html +1 -1
  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/index.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/utils.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 +1 -1
  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/application.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/hosting.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/metadata.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/row.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  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/createRow.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/index.html +1 -1
  91. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  100. package/coverage/lcov-report/automations/thread.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  110. package/coverage/lcov-report/automations/utils.js.html +1 -1
  111. package/coverage/lcov-report/constants/index.html +1 -1
  112. package/coverage/lcov-report/constants/index.js.html +1 -1
  113. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  114. package/coverage/lcov-report/constants/screens.js.html +1 -1
  115. package/coverage/lcov-report/db/client.js.html +1 -1
  116. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  117. package/coverage/lcov-report/db/index.html +1 -1
  118. package/coverage/lcov-report/db/index.js.html +1 -1
  119. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  123. package/coverage/lcov-report/db/newid.js.html +1 -1
  124. package/coverage/lcov-report/db/utils.js.html +1 -1
  125. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  126. package/coverage/lcov-report/events/index.html +1 -1
  127. package/coverage/lcov-report/events/index.js.html +1 -1
  128. package/coverage/lcov-report/events/utils.js.html +1 -1
  129. package/coverage/lcov-report/index.html +5 -5
  130. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  131. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  132. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  133. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  134. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  135. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  136. package/coverage/lcov-report/middleware/index.html +1 -1
  137. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  138. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  139. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  140. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  141. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  142. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  143. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  144. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  145. package/coverage/lcov-report/utilities/global.js.html +1 -1
  146. package/coverage/lcov-report/utilities/index.html +1 -1
  147. package/coverage/lcov-report/utilities/index.js.html +1 -1
  148. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  149. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  150. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  151. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  152. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  153. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  154. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  155. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  156. package/coverage/lcov-report/utilities/security.js.html +1 -1
  157. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  158. package/coverage/lcov-report/utilities/users.js.html +1 -1
  159. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  160. package/coverage/lcov.info +12 -11
  161. package/dist/api/controllers/backup.js +4 -4
  162. package/dist/api/controllers/permission.js +1 -0
  163. package/dist/api/controllers/row/ExternalRequest.js +46 -5
  164. package/dist/integrations/utils.js +16 -1
  165. package/dist/package.json +4 -4
  166. package/dist/tsconfig.tsbuildinfo +1 -1
  167. package/dist/utilities/fileSystem/index.js +49 -33
  168. package/package.json +5 -5
  169. package/src/api/controllers/backup.js +4 -5
  170. package/src/api/controllers/permission.js +1 -0
  171. package/src/api/controllers/row/ExternalRequest.ts +49 -4
  172. package/src/integrations/utils.ts +15 -0
  173. package/src/utilities/fileSystem/index.js +65 -43
@@ -132,6 +132,7 @@ exports.getResourcePerms = function (ctx) {
132
132
  for (let role of roles) {
133
133
  const rolePerms = role.permissions;
134
134
  if (rolePerms &&
135
+ rolePerms[resourceId] &&
135
136
  (rolePerms[resourceId] === level ||
136
137
  rolePerms[resourceId].indexOf(level) !== -1)) {
137
138
  permissions[level] = getExternalRoleID(role._id);
@@ -22,11 +22,10 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
23
  const datasource_1 = require("../../../definitions/datasource");
24
24
  const utils_1 = require("../../../integrations/utils");
25
- const constants_1 = require("../../../constants");
26
25
  var External;
27
26
  (function (External) {
28
27
  const { makeExternalQuery } = require("./utils");
29
- const { DataSourceOperation, FieldTypes } = require("../../../constants");
28
+ const { DataSourceOperation, FieldTypes, RelationshipTypes } = require("../../../constants");
30
29
  const { breakExternalTableId, isSQL } = require("../../../integrations/utils");
31
30
  const { processObjectSync } = require("@budibase/string-templates");
32
31
  const { cloneDeep } = require("lodash/fp");
@@ -67,6 +66,46 @@ var External;
67
66
  equal,
68
67
  };
69
68
  }
69
+ /**
70
+ * This function checks the incoming parameters to make sure all the inputs are
71
+ * valid based on on the table schema. The main thing this is looking for is when a
72
+ * user has made use of the _id field of a row for a foreign key or a search parameter.
73
+ * In these cases the key will be sent up as [1], rather than 1. In these cases we will
74
+ * simplify it down to the requirements. This function is quite complex as we try to be
75
+ * relatively restrictive over what types of columns we will perform this action for.
76
+ */
77
+ function cleanupConfig(config, table) {
78
+ const primaryOptions = [
79
+ FieldTypes.STRING,
80
+ FieldTypes.LONGFORM,
81
+ FieldTypes.OPTIONS,
82
+ FieldTypes.NUMBER,
83
+ ];
84
+ // filter out fields which cannot be keys
85
+ const fieldNames = Object.entries(table.schema)
86
+ .filter(schema => primaryOptions.find(val => val === schema[1].type))
87
+ .map(([fieldName]) => fieldName);
88
+ const iterateObject = (obj) => {
89
+ for (let [field, value] of Object.entries(obj)) {
90
+ if (fieldNames.find(name => name === field) && utils_1.isRowId(value)) {
91
+ obj[field] = utils_1.convertRowId(value);
92
+ }
93
+ }
94
+ };
95
+ // check the row and filters to make sure they aren't a key of some sort
96
+ if (config.filters) {
97
+ for (let filter of Object.values(config.filters)) {
98
+ if (typeof filter !== "object" || Object.keys(filter).length === 0) {
99
+ continue;
100
+ }
101
+ iterateObject(filter);
102
+ }
103
+ }
104
+ if (config.row) {
105
+ iterateObject(config.row);
106
+ }
107
+ return config;
108
+ }
70
109
  function generateIdForRow(row, table) {
71
110
  const primary = table.primary;
72
111
  if (!row || !primary) {
@@ -316,7 +355,7 @@ var External;
316
355
  if (field.type !== FieldTypes.LINK || !field.fieldName) {
317
356
  continue;
318
357
  }
319
- const isMany = field.relationshipType === constants_1.RelationshipTypes.MANY_TO_MANY;
358
+ const isMany = field.relationshipType === RelationshipTypes.MANY_TO_MANY;
320
359
  const tableId = isMany ? field.through : field.tableId;
321
360
  const manyKey = field.throughFrom || primaryKey;
322
361
  const fieldName = isMany ? manyKey : field.fieldName;
@@ -430,7 +469,7 @@ var External;
430
469
  }
431
470
  return fields;
432
471
  }
433
- run({ id, row, filters, sort, paginate }) {
472
+ run(config) {
434
473
  return __awaiter(this, void 0, void 0, function* () {
435
474
  const { appId, operation, tableId } = this;
436
475
  let { datasourceId, tableName } = breakExternalTableId(tableId);
@@ -447,9 +486,11 @@ var External;
447
486
  if (!table) {
448
487
  throw `Unable to process query, table "${tableName}" not defined.`;
449
488
  }
450
- // clean up row on ingress using schema
489
+ // look for specific components of config which may not be considered acceptable
490
+ let { id, row, filters, sort, paginate } = cleanupConfig(config, table);
451
491
  filters = buildFilters(id, filters || {}, table);
452
492
  const relationships = this.buildRelationships(table);
493
+ // clean up row on ingress using schema
453
494
  const processed = this.inputProcessing(row, table);
454
495
  row = processed.row;
455
496
  if (operation === DataSourceOperation.DELETE &&
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.copyExistingPropsOver = exports.isIsoDateString = exports.isSQL = exports.getSqlQuery = exports.convertType = exports.breakRowIdField = exports.generateRowIdField = exports.breakExternalTableId = exports.buildExternalTableId = exports.isExternalTable = void 0;
3
+ exports.copyExistingPropsOver = exports.isIsoDateString = exports.isSQL = exports.getSqlQuery = exports.convertType = exports.breakRowIdField = exports.convertRowId = exports.isRowId = exports.generateRowIdField = exports.breakExternalTableId = exports.buildExternalTableId = exports.isExternalTable = void 0;
4
4
  const datasource_1 = require("../definitions/datasource");
5
5
  const { DocumentTypes, SEPARATOR } = require("../db/utils");
6
6
  const { FieldTypes } = require("../constants");
7
7
  const DOUBLE_SEPARATOR = `${SEPARATOR}${SEPARATOR}`;
8
+ const ROW_ID_REGEX = /^\[.*]$/g;
8
9
  function isExternalTable(tableId) {
9
10
  return tableId.includes(DocumentTypes.DATASOURCE);
10
11
  }
@@ -31,6 +32,20 @@ function generateRowIdField(keyProps = []) {
31
32
  return encodeURIComponent(JSON.stringify(keyProps).replace(/"/g, "'"));
32
33
  }
33
34
  exports.generateRowIdField = generateRowIdField;
35
+ function isRowId(field) {
36
+ return Array.isArray(field) || (typeof field === "string" && field.match(ROW_ID_REGEX) != null);
37
+ }
38
+ exports.isRowId = isRowId;
39
+ function convertRowId(field) {
40
+ if (Array.isArray(field)) {
41
+ return field[0];
42
+ }
43
+ if (typeof field === "string" && field.match(ROW_ID_REGEX) != null) {
44
+ return field.substring(1, field.length - 1);
45
+ }
46
+ return field;
47
+ }
48
+ exports.convertRowId = convertRowId;
34
49
  // should always return an array
35
50
  function breakRowIdField(_id) {
36
51
  if (!_id) {
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "0.9.168",
4
+ "version": "0.9.169-alpha.3",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.js",
7
7
  "repository": {
@@ -68,9 +68,9 @@
68
68
  "author": "Budibase",
69
69
  "license": "AGPL-3.0-or-later",
70
70
  "dependencies": {
71
- "@budibase/auth": "^0.9.168",
72
- "@budibase/client": "^0.9.168",
73
- "@budibase/string-templates": "^0.9.168",
71
+ "@budibase/auth": "^0.9.169-alpha.3",
72
+ "@budibase/client": "^0.9.169-alpha.3",
73
+ "@budibase/string-templates": "^0.9.169-alpha.3",
74
74
  "@elastic/elasticsearch": "7.10.0",
75
75
  "@koa/router": "8.0.0",
76
76
  "@sendgrid/mail": "7.1.1",