@budibase/server 1.0.192-alpha.2 → 1.0.192-alpha.5
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.125b5754.js → index.2bf6b2b2.js} +163 -163
- package/builder/index.html +1 -1
- package/coverage/clover.xml +85 -83
- 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/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 +12 -6
- 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/index.html +7 -7
- 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/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.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/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.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/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.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/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/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/index.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/migrations.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/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.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/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.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/delay.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/loop.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/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/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/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +10 -10
- 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 +9 -6
- 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 +16 -16
- 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/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/publicApi.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/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +1 -1
- package/coverage/lcov-report/threads/utils.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/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.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 +156 -154
- package/dist/api/controllers/backup.js +3 -2
- package/dist/db/utils.js +1 -0
- package/dist/package.json +5 -5
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +16 -6
- package/package.json +6 -6
- package/src/api/controllers/backup.js +4 -2
- package/src/db/utils.js +1 -0
- package/src/utilities/fileSystem/index.js +22 -8
|
@@ -17,7 +17,7 @@ const { ObjectStoreBuckets } = require("../../constants");
|
|
|
17
17
|
const { upload, retrieve, retrieveToTmp, streamUpload, deleteFolder, downloadTarball, } = require("./utilities");
|
|
18
18
|
const { updateClientLibrary } = require("./clientLibrary");
|
|
19
19
|
const env = require("../../environment");
|
|
20
|
-
const { USER_METDATA_PREFIX, LINK_USER_METADATA_PREFIX, } = require("../../db/utils");
|
|
20
|
+
const { USER_METDATA_PREFIX, LINK_USER_METADATA_PREFIX, TABLE_ROW_PREFIX, } = require("../../db/utils");
|
|
21
21
|
const MemoryStream = require("memorystream");
|
|
22
22
|
const { getAppId } = require("@budibase/backend-core/context");
|
|
23
23
|
const TOP_LEVEL_PATH = join(__dirname, "..", "..", "..");
|
|
@@ -98,6 +98,17 @@ exports.apiFileReturn = contents => {
|
|
|
98
98
|
fs.writeFileSync(path, contents);
|
|
99
99
|
return fs.createReadStream(path);
|
|
100
100
|
};
|
|
101
|
+
exports.defineFilter = excludeRows => {
|
|
102
|
+
if (excludeRows) {
|
|
103
|
+
return doc => !(doc._id.includes(USER_METDATA_PREFIX) ||
|
|
104
|
+
doc._id.includes(LINK_USER_METADATA_PREFIX) ||
|
|
105
|
+
doc._id.includes(TABLE_ROW_PREFIX));
|
|
106
|
+
}
|
|
107
|
+
else if (!excludeRows) {
|
|
108
|
+
return doc => !(doc._id.includes(USER_METDATA_PREFIX) ||
|
|
109
|
+
doc._id.includes(LINK_USER_METADATA_PREFIX));
|
|
110
|
+
}
|
|
111
|
+
};
|
|
101
112
|
/**
|
|
102
113
|
* Local utility to back up the database state for an app, excluding global user
|
|
103
114
|
* data or user relationships.
|
|
@@ -105,9 +116,8 @@ exports.apiFileReturn = contents => {
|
|
|
105
116
|
* @param {object} config Config to send to export DB
|
|
106
117
|
* @returns {*} either a string or a stream of the backup
|
|
107
118
|
*/
|
|
108
|
-
const backupAppData = (appId, config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
109
|
-
return yield exports.exportDB(appId, Object.assign(Object.assign({}, config), { filter:
|
|
110
|
-
doc._id.includes(LINK_USER_METADATA_PREFIX)) }));
|
|
119
|
+
const backupAppData = (appId, config, includeRows) => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
+
return yield exports.exportDB(appId, Object.assign(Object.assign({}, config), { filter: exports.defineFilter(includeRows) }));
|
|
111
121
|
});
|
|
112
122
|
/**
|
|
113
123
|
* Takes a copy of the database state for an app to the object store.
|
|
@@ -123,8 +133,8 @@ exports.performBackup = (appId, backupName) => __awaiter(void 0, void 0, void 0,
|
|
|
123
133
|
* @param {string} appId The ID of the app which is to be backed up.
|
|
124
134
|
* @returns {*} a readable stream of the backup which is written in real time
|
|
125
135
|
*/
|
|
126
|
-
exports.streamBackup = (appId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
127
|
-
return yield backupAppData(appId, { stream: true });
|
|
136
|
+
exports.streamBackup = (appId, includeRows) => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
+
return yield backupAppData(appId, { stream: true }, includeRows);
|
|
128
138
|
});
|
|
129
139
|
/**
|
|
130
140
|
* Exports a DB to either file or a variable (memory).
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.0.192-alpha.
|
|
4
|
+
"version": "1.0.192-alpha.5",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -70,10 +70,10 @@
|
|
|
70
70
|
"license": "GPL-3.0",
|
|
71
71
|
"dependencies": {
|
|
72
72
|
"@apidevtools/swagger-parser": "^10.0.3",
|
|
73
|
-
"@budibase/backend-core": "^1.0.192-alpha.
|
|
74
|
-
"@budibase/client": "^1.0.192-alpha.
|
|
75
|
-
"@budibase/pro": "1.0.192-alpha.
|
|
76
|
-
"@budibase/string-templates": "^1.0.192-alpha.
|
|
73
|
+
"@budibase/backend-core": "^1.0.192-alpha.5",
|
|
74
|
+
"@budibase/client": "^1.0.192-alpha.5",
|
|
75
|
+
"@budibase/pro": "1.0.192-alpha.4",
|
|
76
|
+
"@budibase/string-templates": "^1.0.192-alpha.5",
|
|
77
77
|
"@bull-board/api": "^3.7.0",
|
|
78
78
|
"@bull-board/koa": "^3.7.0",
|
|
79
79
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -185,5 +185,5 @@
|
|
|
185
185
|
"optionalDependencies": {
|
|
186
186
|
"oracledb": "^5.3.0"
|
|
187
187
|
},
|
|
188
|
-
"gitHead": "
|
|
188
|
+
"gitHead": "22d3f343d94a1a752b9d35b5b733a2d52b271ab9"
|
|
189
189
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
const { streamBackup } = require("../../utilities/fileSystem")
|
|
2
2
|
|
|
3
3
|
exports.exportAppDump = async function (ctx) {
|
|
4
|
-
|
|
4
|
+
let { appId, excludeRows } = ctx.query
|
|
5
5
|
const appName = decodeURI(ctx.query.appname)
|
|
6
|
+
excludeRows = excludeRows === "true"
|
|
6
7
|
const backupIdentifier = `${appName}-export-${new Date().getTime()}.txt`
|
|
7
8
|
ctx.attachment(backupIdentifier)
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
ctx.body = await streamBackup(appId, excludeRows)
|
|
9
11
|
}
|
package/src/db/utils.js
CHANGED
|
@@ -74,6 +74,7 @@ exports.isDevAppID = isDevAppID
|
|
|
74
74
|
exports.isProdAppID = isProdAppID
|
|
75
75
|
exports.USER_METDATA_PREFIX = `${DocumentTypes.ROW}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
|
76
76
|
exports.LINK_USER_METADATA_PREFIX = `${DocumentTypes.LINK}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
|
77
|
+
exports.TABLE_ROW_PREFIX = `${DocumentTypes.ROW}${SEPARATOR}${DocumentTypes.TABLE}`
|
|
77
78
|
exports.ViewNames = ViewNames
|
|
78
79
|
exports.InternalTables = InternalTables
|
|
79
80
|
exports.DocumentTypes = DocumentTypes
|
|
@@ -21,6 +21,7 @@ const env = require("../../environment")
|
|
|
21
21
|
const {
|
|
22
22
|
USER_METDATA_PREFIX,
|
|
23
23
|
LINK_USER_METADATA_PREFIX,
|
|
24
|
+
TABLE_ROW_PREFIX,
|
|
24
25
|
} = require("../../db/utils")
|
|
25
26
|
const MemoryStream = require("memorystream")
|
|
26
27
|
const { getAppId } = require("@budibase/backend-core/context")
|
|
@@ -109,6 +110,23 @@ exports.apiFileReturn = contents => {
|
|
|
109
110
|
return fs.createReadStream(path)
|
|
110
111
|
}
|
|
111
112
|
|
|
113
|
+
exports.defineFilter = excludeRows => {
|
|
114
|
+
if (excludeRows) {
|
|
115
|
+
return doc =>
|
|
116
|
+
!(
|
|
117
|
+
doc._id.includes(USER_METDATA_PREFIX) ||
|
|
118
|
+
doc._id.includes(LINK_USER_METADATA_PREFIX) ||
|
|
119
|
+
doc._id.includes(TABLE_ROW_PREFIX)
|
|
120
|
+
)
|
|
121
|
+
} else if (!excludeRows) {
|
|
122
|
+
return doc =>
|
|
123
|
+
!(
|
|
124
|
+
doc._id.includes(USER_METDATA_PREFIX) ||
|
|
125
|
+
doc._id.includes(LINK_USER_METADATA_PREFIX)
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
112
130
|
/**
|
|
113
131
|
* Local utility to back up the database state for an app, excluding global user
|
|
114
132
|
* data or user relationships.
|
|
@@ -116,14 +134,10 @@ exports.apiFileReturn = contents => {
|
|
|
116
134
|
* @param {object} config Config to send to export DB
|
|
117
135
|
* @returns {*} either a string or a stream of the backup
|
|
118
136
|
*/
|
|
119
|
-
const backupAppData = async (appId, config) => {
|
|
137
|
+
const backupAppData = async (appId, config, includeRows) => {
|
|
120
138
|
return await exports.exportDB(appId, {
|
|
121
139
|
...config,
|
|
122
|
-
filter:
|
|
123
|
-
!(
|
|
124
|
-
doc._id.includes(USER_METDATA_PREFIX) ||
|
|
125
|
-
doc._id.includes(LINK_USER_METADATA_PREFIX)
|
|
126
|
-
),
|
|
140
|
+
filter: exports.defineFilter(includeRows),
|
|
127
141
|
})
|
|
128
142
|
}
|
|
129
143
|
|
|
@@ -142,8 +156,8 @@ exports.performBackup = async (appId, backupName) => {
|
|
|
142
156
|
* @param {string} appId The ID of the app which is to be backed up.
|
|
143
157
|
* @returns {*} a readable stream of the backup which is written in real time
|
|
144
158
|
*/
|
|
145
|
-
exports.streamBackup = async appId => {
|
|
146
|
-
return await backupAppData(appId, { stream: true })
|
|
159
|
+
exports.streamBackup = async (appId, includeRows) => {
|
|
160
|
+
return await backupAppData(appId, { stream: true }, includeRows)
|
|
147
161
|
}
|
|
148
162
|
|
|
149
163
|
/**
|