@budibase/server 2.7.6 → 2.7.7-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.
- package/Dockerfile +1 -1
- package/builder/assets/{index.4ca5529d.js → index.933787a7.js} +326 -326
- package/builder/assets/{index.a86e2071.css → index.b33e8ad5.css} +1 -1
- package/builder/index.html +2 -2
- package/dist/automation.js +70 -60
- package/dist/automation.js.map +3 -3
- package/dist/index.js +76 -62
- package/dist/index.js.map +3 -3
- package/dist/query.js +40 -37
- package/dist/query.js.map +3 -3
- package/package.json +8 -8
- package/src/api/controllers/datasource.ts +13 -1
- package/src/api/controllers/static/index.ts +3 -3
- package/src/environment.ts +2 -1
- package/src/integrations/googlesheets.ts +18 -2
- package/src/utilities/fileSystem/filesystem.ts +2 -2
package/dist/query.js
CHANGED
|
@@ -2747,23 +2747,23 @@ function init2(selectDb = DEFAULT_SELECT_DB) {
|
|
|
2747
2747
|
CLIENTS[selectDb] = client3;
|
|
2748
2748
|
}
|
|
2749
2749
|
function waitForConnection(selectDb = DEFAULT_SELECT_DB) {
|
|
2750
|
-
return new Promise((
|
|
2750
|
+
return new Promise((resolve3) => {
|
|
2751
2751
|
if (pickClient(selectDb) == null) {
|
|
2752
2752
|
init2();
|
|
2753
2753
|
} else if (CONNECTED) {
|
|
2754
|
-
|
|
2754
|
+
resolve3("");
|
|
2755
2755
|
return;
|
|
2756
2756
|
}
|
|
2757
2757
|
const interval = set(() => {
|
|
2758
2758
|
if (CONNECTED) {
|
|
2759
2759
|
clear(interval);
|
|
2760
|
-
|
|
2760
|
+
resolve3("");
|
|
2761
2761
|
}
|
|
2762
2762
|
}, 500);
|
|
2763
2763
|
});
|
|
2764
2764
|
}
|
|
2765
2765
|
function promisifyStream(stream3, client3) {
|
|
2766
|
-
return new Promise((
|
|
2766
|
+
return new Promise((resolve3, reject) => {
|
|
2767
2767
|
const outputKeys = /* @__PURE__ */ new Set();
|
|
2768
2768
|
stream3.on("data", (keys2) => {
|
|
2769
2769
|
keys2.forEach((key) => {
|
|
@@ -2781,7 +2781,7 @@ function promisifyStream(stream3, client3) {
|
|
|
2781
2781
|
getPromises.push(client3.get(key));
|
|
2782
2782
|
}
|
|
2783
2783
|
const jsonArray = await Promise.all(getPromises);
|
|
2784
|
-
|
|
2784
|
+
resolve3(
|
|
2785
2785
|
keysArray.map((key) => ({
|
|
2786
2786
|
key: removeDbPrefix(key),
|
|
2787
2787
|
value: JSON.parse(jsonArray.shift())
|
|
@@ -5624,7 +5624,7 @@ var environment = {
|
|
|
5624
5624
|
isInThread: () => {
|
|
5625
5625
|
return process.env.FORKED_PROCESS;
|
|
5626
5626
|
},
|
|
5627
|
-
TOP_LEVEL_PATH: process.env.TOP_LEVEL_PATH
|
|
5627
|
+
TOP_LEVEL_PATH: process.env.TOP_LEVEL_PATH || process.env.SERVER_TOP_LEVEL_PATH
|
|
5628
5628
|
};
|
|
5629
5629
|
if (isDev() && environment.DISABLE_THREADING == null) {
|
|
5630
5630
|
environment._set("DISABLE_THREADING", "1");
|
|
@@ -6741,11 +6741,11 @@ var Replication = class {
|
|
|
6741
6741
|
return Promise.all([closePouchDB(this.source), closePouchDB(this.target)]);
|
|
6742
6742
|
}
|
|
6743
6743
|
promisify(operation, opts = {}) {
|
|
6744
|
-
return new Promise((
|
|
6744
|
+
return new Promise((resolve3) => {
|
|
6745
6745
|
operation(this.target, opts).on("denied", function(err) {
|
|
6746
6746
|
throw new Error(`Denied: Document failed to replicate ${err}`);
|
|
6747
6747
|
}).on("complete", function(info) {
|
|
6748
|
-
return
|
|
6748
|
+
return resolve3(info);
|
|
6749
6749
|
}).on("error", function(err) {
|
|
6750
6750
|
throw new Error(`Replication Error: ${err}`);
|
|
6751
6751
|
});
|
|
@@ -8204,7 +8204,7 @@ function isClient(ctx) {
|
|
|
8204
8204
|
return ctx.headers["x-budibase-type" /* TYPE */] === "client";
|
|
8205
8205
|
}
|
|
8206
8206
|
function timeout(timeMs) {
|
|
8207
|
-
return new Promise((
|
|
8207
|
+
return new Promise((resolve3) => setTimeout(resolve3, timeMs));
|
|
8208
8208
|
}
|
|
8209
8209
|
function isAudited(event) {
|
|
8210
8210
|
return !!AuditedEventFriendlyName[event];
|
|
@@ -11478,8 +11478,8 @@ async function preAuth(passport2, ctx, next) {
|
|
|
11478
11478
|
callbackUrl,
|
|
11479
11479
|
ssoSaveUserNoOp
|
|
11480
11480
|
);
|
|
11481
|
-
if (!ctx.query.appId
|
|
11482
|
-
ctx.throw(400, "appId
|
|
11481
|
+
if (!ctx.query.appId) {
|
|
11482
|
+
ctx.throw(400, "appId query param not present.");
|
|
11483
11483
|
}
|
|
11484
11484
|
return passport2.authenticate(strategy, {
|
|
11485
11485
|
scope: ["profile", "email", "https://www.googleapis.com/auth/spreadsheets"],
|
|
@@ -11499,7 +11499,7 @@ async function postAuth(passport2, ctx, next) {
|
|
|
11499
11499
|
clientSecret: config.clientSecret,
|
|
11500
11500
|
callbackURL: callbackUrl
|
|
11501
11501
|
},
|
|
11502
|
-
(accessToken, refreshToken,
|
|
11502
|
+
(accessToken, refreshToken, _profile, done) => {
|
|
11503
11503
|
clearCookie(ctx, "budibase:datasourceauth" /* DatasourceAuth */);
|
|
11504
11504
|
done(null, { accessToken, refreshToken });
|
|
11505
11505
|
}
|
|
@@ -11507,22 +11507,14 @@ async function postAuth(passport2, ctx, next) {
|
|
|
11507
11507
|
{ successRedirect: "/", failureRedirect: "/error" },
|
|
11508
11508
|
async (err, tokens) => {
|
|
11509
11509
|
const baseUrl = `/builder/app/${authStateCookie.appId}/data`;
|
|
11510
|
-
|
|
11511
|
-
|
|
11512
|
-
|
|
11513
|
-
|
|
11514
|
-
|
|
11515
|
-
if (err2.status === 404) {
|
|
11516
|
-
ctx.redirect(baseUrl);
|
|
11517
|
-
}
|
|
11518
|
-
}
|
|
11519
|
-
if (!datasource2.config) {
|
|
11520
|
-
datasource2.config = {};
|
|
11510
|
+
const id = newid();
|
|
11511
|
+
await store(
|
|
11512
|
+
`datasource:creation:${authStateCookie.appId}:google:${id}`,
|
|
11513
|
+
{
|
|
11514
|
+
tokens
|
|
11521
11515
|
}
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
ctx.redirect(`${baseUrl}/datasource/${authStateCookie.datasourceId}`);
|
|
11525
|
-
});
|
|
11516
|
+
);
|
|
11517
|
+
ctx.redirect(`${baseUrl}/new?continue_google_setup=${id}`);
|
|
11526
11518
|
}
|
|
11527
11519
|
)(ctx, next);
|
|
11528
11520
|
}
|
|
@@ -12118,12 +12110,12 @@ async function refreshOIDCAccessToken(chosenConfig, refreshToken) {
|
|
|
12118
12110
|
return strategy._getOAuth2Client(enrichedConfig);
|
|
12119
12111
|
}
|
|
12120
12112
|
});
|
|
12121
|
-
return new Promise((
|
|
12113
|
+
return new Promise((resolve3) => {
|
|
12122
12114
|
refresh.requestNewAccessToken(
|
|
12123
12115
|
"oidc" /* OIDC */,
|
|
12124
12116
|
refreshToken,
|
|
12125
12117
|
(err, accessToken, refreshToken2, params2) => {
|
|
12126
|
-
|
|
12118
|
+
resolve3({ err, accessToken, refreshToken: refreshToken2, params: params2 });
|
|
12127
12119
|
}
|
|
12128
12120
|
);
|
|
12129
12121
|
});
|
|
@@ -12144,12 +12136,12 @@ async function refreshGoogleAccessToken(config, refreshToken) {
|
|
|
12144
12136
|
);
|
|
12145
12137
|
}
|
|
12146
12138
|
refresh.use(strategy);
|
|
12147
|
-
return new Promise((
|
|
12139
|
+
return new Promise((resolve3) => {
|
|
12148
12140
|
refresh.requestNewAccessToken(
|
|
12149
12141
|
"google" /* GOOGLE */,
|
|
12150
12142
|
refreshToken,
|
|
12151
12143
|
(err, accessToken, refreshToken2, params2) => {
|
|
12152
|
-
|
|
12144
|
+
resolve3({ err, accessToken, refreshToken: refreshToken2, params: params2 });
|
|
12153
12145
|
}
|
|
12154
12146
|
);
|
|
12155
12147
|
});
|
|
@@ -14246,13 +14238,13 @@ var PostgresIntegration = class extends sql_default {
|
|
|
14246
14238
|
}
|
|
14247
14239
|
closeConnection() {
|
|
14248
14240
|
const pg = this;
|
|
14249
|
-
return new Promise((
|
|
14241
|
+
return new Promise((resolve3, reject) => {
|
|
14250
14242
|
this.client.end((err) => {
|
|
14251
14243
|
pg.open = false;
|
|
14252
14244
|
if (err) {
|
|
14253
14245
|
reject(err);
|
|
14254
14246
|
} else {
|
|
14255
|
-
|
|
14247
|
+
resolve3();
|
|
14256
14248
|
}
|
|
14257
14249
|
});
|
|
14258
14250
|
});
|
|
@@ -15964,7 +15956,7 @@ var S3Integration = class {
|
|
|
15964
15956
|
Key: query.key
|
|
15965
15957
|
}).createReadStream();
|
|
15966
15958
|
let csvError = false;
|
|
15967
|
-
return new Promise((
|
|
15959
|
+
return new Promise((resolve3, reject) => {
|
|
15968
15960
|
stream3.on("error", (err) => {
|
|
15969
15961
|
reject(err);
|
|
15970
15962
|
});
|
|
@@ -15972,7 +15964,7 @@ var S3Integration = class {
|
|
|
15972
15964
|
csvError = true;
|
|
15973
15965
|
});
|
|
15974
15966
|
stream3.on("finish", () => {
|
|
15975
|
-
|
|
15967
|
+
resolve3(response);
|
|
15976
15968
|
});
|
|
15977
15969
|
}).catch((err) => {
|
|
15978
15970
|
if (csvError) {
|
|
@@ -17260,7 +17252,7 @@ var SCHEMA12 = {
|
|
|
17260
17252
|
},
|
|
17261
17253
|
datasource: {
|
|
17262
17254
|
spreadsheetId: {
|
|
17263
|
-
display: "
|
|
17255
|
+
display: "Spreadsheet URL",
|
|
17264
17256
|
type: "string" /* STRING */,
|
|
17265
17257
|
required: true
|
|
17266
17258
|
}
|
|
@@ -17330,6 +17322,7 @@ var GoogleSheetsIntegration = class {
|
|
|
17330
17322
|
}
|
|
17331
17323
|
async testConnection() {
|
|
17332
17324
|
try {
|
|
17325
|
+
await setupCreationAuth(this.config);
|
|
17333
17326
|
await this.connect();
|
|
17334
17327
|
return { connected: true };
|
|
17335
17328
|
} catch (e) {
|
|
@@ -17691,6 +17684,16 @@ var GoogleSheetsIntegration = class {
|
|
|
17691
17684
|
}
|
|
17692
17685
|
}
|
|
17693
17686
|
};
|
|
17687
|
+
async function setupCreationAuth(datasouce) {
|
|
17688
|
+
if (datasouce.continueSetupId) {
|
|
17689
|
+
const appId = context_exports.getAppId();
|
|
17690
|
+
const tokens = await cache_exports.get(
|
|
17691
|
+
`datasource:creation:${appId}:google:${datasouce.continueSetupId}`
|
|
17692
|
+
);
|
|
17693
|
+
datasouce.auth = tokens.tokens;
|
|
17694
|
+
delete datasouce.continueSetupId;
|
|
17695
|
+
}
|
|
17696
|
+
}
|
|
17694
17697
|
var googlesheets_default = {
|
|
17695
17698
|
schema: SCHEMA12,
|
|
17696
17699
|
integration: GoogleSheetsIntegration
|
|
@@ -18476,7 +18479,7 @@ var import_fs4 = __toESM(require("fs"));
|
|
|
18476
18479
|
var import_path4 = require("path");
|
|
18477
18480
|
var import_tar = __toESM(require("tar"));
|
|
18478
18481
|
var uuid2 = require("uuid/v4");
|
|
18479
|
-
var TOP_LEVEL_PATH = environment_default.TOP_LEVEL_PATH || (0, import_path4.join)(__dirname, "..", "..", "..");
|
|
18482
|
+
var TOP_LEVEL_PATH = environment_default.TOP_LEVEL_PATH || (0, import_path4.resolve)((0, import_path4.join)(__dirname, "..", "..", ".."));
|
|
18480
18483
|
var streamFile = (path2) => {
|
|
18481
18484
|
return import_fs4.default.createReadStream(path2);
|
|
18482
18485
|
};
|