@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.
- package/builder/assets/{index.bcacf476.css → index.0ea76a5c.css} +2 -2
- package/builder/assets/{index.cb5f4e3c.js → index.45b6b02b.js} +34 -34
- package/builder/assets/{vendor.bca5cd21.js → vendor.2053eff2.js} +1 -1
- package/builder/index.html +3 -3
- package/coverage/clover.xml +12 -12
- package/coverage/coverage-final.json +2 -2
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +6 -9
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +5 -5
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +7 -4
- package/coverage/lcov-report/api/controllers/query.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/thread.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/automations/utils.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +1 -1
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +5 -5
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +12 -11
- package/dist/api/controllers/backup.js +4 -4
- package/dist/api/controllers/permission.js +1 -0
- package/dist/api/controllers/row/ExternalRequest.js +46 -5
- package/dist/integrations/utils.js +16 -1
- package/dist/package.json +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +49 -33
- package/package.json +5 -5
- package/src/api/controllers/backup.js +4 -5
- package/src/api/controllers/permission.js +1 -0
- package/src/api/controllers/row/ExternalRequest.ts +49 -4
- package/src/integrations/utils.ts +15 -0
- 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 ===
|
|
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(
|
|
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
|
-
//
|
|
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.
|
|
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.
|
|
72
|
-
"@budibase/client": "^0.9.
|
|
73
|
-
"@budibase/string-templates": "^0.9.
|
|
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",
|