@budibase/server 2.7.6 → 2.7.7-alpha.0
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 +69 -59
- package/dist/automation.js.map +3 -3
- package/dist/index.js +75 -61
- 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/index.js
CHANGED
|
@@ -2782,23 +2782,23 @@ function init2(selectDb = DEFAULT_SELECT_DB) {
|
|
|
2782
2782
|
CLIENTS[selectDb] = client3;
|
|
2783
2783
|
}
|
|
2784
2784
|
function waitForConnection(selectDb = DEFAULT_SELECT_DB) {
|
|
2785
|
-
return new Promise((
|
|
2785
|
+
return new Promise((resolve3) => {
|
|
2786
2786
|
if (pickClient(selectDb) == null) {
|
|
2787
2787
|
init2();
|
|
2788
2788
|
} else if (CONNECTED) {
|
|
2789
|
-
|
|
2789
|
+
resolve3("");
|
|
2790
2790
|
return;
|
|
2791
2791
|
}
|
|
2792
2792
|
const interval = set(() => {
|
|
2793
2793
|
if (CONNECTED) {
|
|
2794
2794
|
clear(interval);
|
|
2795
|
-
|
|
2795
|
+
resolve3("");
|
|
2796
2796
|
}
|
|
2797
2797
|
}, 500);
|
|
2798
2798
|
});
|
|
2799
2799
|
}
|
|
2800
2800
|
function promisifyStream(stream3, client3) {
|
|
2801
|
-
return new Promise((
|
|
2801
|
+
return new Promise((resolve3, reject) => {
|
|
2802
2802
|
const outputKeys = /* @__PURE__ */ new Set();
|
|
2803
2803
|
stream3.on("data", (keys2) => {
|
|
2804
2804
|
keys2.forEach((key) => {
|
|
@@ -2816,7 +2816,7 @@ function promisifyStream(stream3, client3) {
|
|
|
2816
2816
|
getPromises.push(client3.get(key));
|
|
2817
2817
|
}
|
|
2818
2818
|
const jsonArray = await Promise.all(getPromises);
|
|
2819
|
-
|
|
2819
|
+
resolve3(
|
|
2820
2820
|
keysArray.map((key) => ({
|
|
2821
2821
|
key: removeDbPrefix(key),
|
|
2822
2822
|
value: JSON.parse(jsonArray.shift())
|
|
@@ -4532,11 +4532,11 @@ var init_Replication = __esm({
|
|
|
4532
4532
|
return Promise.all([closePouchDB(this.source), closePouchDB(this.target)]);
|
|
4533
4533
|
}
|
|
4534
4534
|
promisify(operation, opts = {}) {
|
|
4535
|
-
return new Promise((
|
|
4535
|
+
return new Promise((resolve3) => {
|
|
4536
4536
|
operation(this.target, opts).on("denied", function(err) {
|
|
4537
4537
|
throw new Error(`Denied: Document failed to replicate ${err}`);
|
|
4538
4538
|
}).on("complete", function(info) {
|
|
4539
|
-
return
|
|
4539
|
+
return resolve3(info);
|
|
4540
4540
|
}).on("error", function(err) {
|
|
4541
4541
|
throw new Error(`Replication Error: ${err}`);
|
|
4542
4542
|
});
|
|
@@ -5397,11 +5397,11 @@ function makeCacheItem(doc, lastWrite = null) {
|
|
|
5397
5397
|
return { doc, lastWrite: lastWrite || Date.now() };
|
|
5398
5398
|
}
|
|
5399
5399
|
async function put(db2, doc, writeRateMs = DEFAULT_WRITE_RATE_MS) {
|
|
5400
|
-
const
|
|
5400
|
+
const cache3 = await getCache();
|
|
5401
5401
|
const key = doc._id;
|
|
5402
5402
|
let cacheItem;
|
|
5403
5403
|
if (key) {
|
|
5404
|
-
cacheItem = await
|
|
5404
|
+
cacheItem = await cache3.get(makeCacheKey(db2, key));
|
|
5405
5405
|
}
|
|
5406
5406
|
const updateDb = !cacheItem || cacheItem.lastWrite < Date.now() - writeRateMs;
|
|
5407
5407
|
let output = doc;
|
|
@@ -5439,30 +5439,30 @@ async function put(db2, doc, writeRateMs = DEFAULT_WRITE_RATE_MS) {
|
|
|
5439
5439
|
}
|
|
5440
5440
|
cacheItem = makeCacheItem(output, updateDb ? null : cacheItem == null ? void 0 : cacheItem.lastWrite);
|
|
5441
5441
|
if (output._id) {
|
|
5442
|
-
await
|
|
5442
|
+
await cache3.store(makeCacheKey(db2, output._id), cacheItem);
|
|
5443
5443
|
}
|
|
5444
5444
|
return { ok: true, id: output._id, rev: output._rev };
|
|
5445
5445
|
}
|
|
5446
5446
|
async function get2(db2, id) {
|
|
5447
|
-
const
|
|
5447
|
+
const cache3 = await getCache();
|
|
5448
5448
|
const cacheKey = makeCacheKey(db2, id);
|
|
5449
|
-
let cacheItem = await
|
|
5449
|
+
let cacheItem = await cache3.get(cacheKey);
|
|
5450
5450
|
if (!cacheItem) {
|
|
5451
5451
|
const doc = await db2.get(id);
|
|
5452
5452
|
cacheItem = makeCacheItem(doc);
|
|
5453
|
-
await
|
|
5453
|
+
await cache3.store(cacheKey, cacheItem);
|
|
5454
5454
|
}
|
|
5455
5455
|
return cacheItem.doc;
|
|
5456
5456
|
}
|
|
5457
5457
|
async function remove(db2, docOrId, rev) {
|
|
5458
|
-
const
|
|
5458
|
+
const cache3 = await getCache();
|
|
5459
5459
|
if (!docOrId) {
|
|
5460
5460
|
throw new Error("No ID/Rev provided.");
|
|
5461
5461
|
}
|
|
5462
5462
|
const id = typeof docOrId === "string" ? docOrId : docOrId._id;
|
|
5463
5463
|
rev = typeof docOrId === "string" ? rev : docOrId._rev;
|
|
5464
5464
|
try {
|
|
5465
|
-
await
|
|
5465
|
+
await cache3.delete(makeCacheKey(db2, id));
|
|
5466
5466
|
} finally {
|
|
5467
5467
|
await db2.remove(id, rev);
|
|
5468
5468
|
}
|
|
@@ -6131,7 +6131,7 @@ function isClient(ctx) {
|
|
|
6131
6131
|
return ctx.headers["x-budibase-type" /* TYPE */] === "client";
|
|
6132
6132
|
}
|
|
6133
6133
|
function timeout(timeMs) {
|
|
6134
|
-
return new Promise((
|
|
6134
|
+
return new Promise((resolve3) => setTimeout(resolve3, timeMs));
|
|
6135
6135
|
}
|
|
6136
6136
|
function isAudited(event) {
|
|
6137
6137
|
return !!AuditedEventFriendlyName[event];
|
|
@@ -10060,8 +10060,8 @@ async function preAuth(passport2, ctx, next) {
|
|
|
10060
10060
|
callbackUrl,
|
|
10061
10061
|
ssoSaveUserNoOp
|
|
10062
10062
|
);
|
|
10063
|
-
if (!ctx.query.appId
|
|
10064
|
-
ctx.throw(400, "appId
|
|
10063
|
+
if (!ctx.query.appId) {
|
|
10064
|
+
ctx.throw(400, "appId query param not present.");
|
|
10065
10065
|
}
|
|
10066
10066
|
return passport2.authenticate(strategy, {
|
|
10067
10067
|
scope: ["profile", "email", "https://www.googleapis.com/auth/spreadsheets"],
|
|
@@ -10081,7 +10081,7 @@ async function postAuth(passport2, ctx, next) {
|
|
|
10081
10081
|
clientSecret: config.clientSecret,
|
|
10082
10082
|
callbackURL: callbackUrl
|
|
10083
10083
|
},
|
|
10084
|
-
(accessToken, refreshToken,
|
|
10084
|
+
(accessToken, refreshToken, _profile, done) => {
|
|
10085
10085
|
clearCookie(ctx, "budibase:datasourceauth" /* DatasourceAuth */);
|
|
10086
10086
|
done(null, { accessToken, refreshToken });
|
|
10087
10087
|
}
|
|
@@ -10089,22 +10089,14 @@ async function postAuth(passport2, ctx, next) {
|
|
|
10089
10089
|
{ successRedirect: "/", failureRedirect: "/error" },
|
|
10090
10090
|
async (err, tokens) => {
|
|
10091
10091
|
const baseUrl = `/builder/app/${authStateCookie.appId}/data`;
|
|
10092
|
-
|
|
10093
|
-
|
|
10094
|
-
|
|
10095
|
-
|
|
10096
|
-
|
|
10097
|
-
if (err2.status === 404) {
|
|
10098
|
-
ctx.redirect(baseUrl);
|
|
10099
|
-
}
|
|
10100
|
-
}
|
|
10101
|
-
if (!datasource2.config) {
|
|
10102
|
-
datasource2.config = {};
|
|
10092
|
+
const id = utils_exports2.newid();
|
|
10093
|
+
await cache_exports.store(
|
|
10094
|
+
`datasource:creation:${authStateCookie.appId}:google:${id}`,
|
|
10095
|
+
{
|
|
10096
|
+
tokens
|
|
10103
10097
|
}
|
|
10104
|
-
|
|
10105
|
-
|
|
10106
|
-
ctx.redirect(`${baseUrl}/datasource/${authStateCookie.datasourceId}`);
|
|
10107
|
-
});
|
|
10098
|
+
);
|
|
10099
|
+
ctx.redirect(`${baseUrl}/new?continue_google_setup=${id}`);
|
|
10108
10100
|
}
|
|
10109
10101
|
)(ctx, next);
|
|
10110
10102
|
}
|
|
@@ -10114,9 +10106,9 @@ var init_google2 = __esm({
|
|
|
10114
10106
|
init_google();
|
|
10115
10107
|
init_constants2();
|
|
10116
10108
|
init_utils5();
|
|
10117
|
-
init_db5();
|
|
10118
10109
|
init_configs3();
|
|
10119
10110
|
init_sso2();
|
|
10111
|
+
init_src2();
|
|
10120
10112
|
GoogleStrategy2 = require("passport-google-oauth").OAuth2Strategy;
|
|
10121
10113
|
}
|
|
10122
10114
|
});
|
|
@@ -10838,12 +10830,12 @@ async function refreshOIDCAccessToken(chosenConfig, refreshToken) {
|
|
|
10838
10830
|
return strategy._getOAuth2Client(enrichedConfig);
|
|
10839
10831
|
}
|
|
10840
10832
|
});
|
|
10841
|
-
return new Promise((
|
|
10833
|
+
return new Promise((resolve3) => {
|
|
10842
10834
|
refresh.requestNewAccessToken(
|
|
10843
10835
|
"oidc" /* OIDC */,
|
|
10844
10836
|
refreshToken,
|
|
10845
10837
|
(err, accessToken, refreshToken2, params2) => {
|
|
10846
|
-
|
|
10838
|
+
resolve3({ err, accessToken, refreshToken: refreshToken2, params: params2 });
|
|
10847
10839
|
}
|
|
10848
10840
|
);
|
|
10849
10841
|
});
|
|
@@ -10864,12 +10856,12 @@ async function refreshGoogleAccessToken(config, refreshToken) {
|
|
|
10864
10856
|
);
|
|
10865
10857
|
}
|
|
10866
10858
|
refresh.use(strategy);
|
|
10867
|
-
return new Promise((
|
|
10859
|
+
return new Promise((resolve3) => {
|
|
10868
10860
|
refresh.requestNewAccessToken(
|
|
10869
10861
|
"google" /* GOOGLE */,
|
|
10870
10862
|
refreshToken,
|
|
10871
10863
|
(err, accessToken, refreshToken2, params2) => {
|
|
10872
|
-
|
|
10864
|
+
resolve3({ err, accessToken, refreshToken: refreshToken2, params: params2 });
|
|
10873
10865
|
}
|
|
10874
10866
|
);
|
|
10875
10867
|
});
|
|
@@ -12135,7 +12127,7 @@ var init_environment3 = __esm({
|
|
|
12135
12127
|
isInThread: () => {
|
|
12136
12128
|
return process.env.FORKED_PROCESS;
|
|
12137
12129
|
},
|
|
12138
|
-
TOP_LEVEL_PATH: process.env.TOP_LEVEL_PATH
|
|
12130
|
+
TOP_LEVEL_PATH: process.env.TOP_LEVEL_PATH || process.env.SERVER_TOP_LEVEL_PATH
|
|
12139
12131
|
};
|
|
12140
12132
|
if (isDev2() && environment2.DISABLE_THREADING == null) {
|
|
12141
12133
|
environment2._set("DISABLE_THREADING", "1");
|
|
@@ -12163,7 +12155,7 @@ var init_filesystem = __esm({
|
|
|
12163
12155
|
import_tar = __toESM(require("tar"));
|
|
12164
12156
|
init_environment3();
|
|
12165
12157
|
uuid2 = require("uuid/v4");
|
|
12166
|
-
TOP_LEVEL_PATH = environment_default2.TOP_LEVEL_PATH || (0, import_path5.join)(__dirname, "..", "..", "..");
|
|
12158
|
+
TOP_LEVEL_PATH = environment_default2.TOP_LEVEL_PATH || (0, import_path5.resolve)((0, import_path5.join)(__dirname, "..", "..", ".."));
|
|
12167
12159
|
init9 = () => {
|
|
12168
12160
|
const tempDir = budibaseTempDir2();
|
|
12169
12161
|
if (!import_fs4.default.existsSync(tempDir)) {
|
|
@@ -24198,7 +24190,7 @@ var init_datasource_bb_default = __esm({
|
|
|
24198
24190
|
|
|
24199
24191
|
// src/utilities/index.ts
|
|
24200
24192
|
function wait(ms) {
|
|
24201
|
-
return new Promise((
|
|
24193
|
+
return new Promise((resolve3) => setTimeout(resolve3, ms));
|
|
24202
24194
|
}
|
|
24203
24195
|
function removeFromArray(array, element) {
|
|
24204
24196
|
const index2 = array.indexOf(element);
|
|
@@ -24499,7 +24491,7 @@ var init_threads = __esm({
|
|
|
24499
24491
|
}
|
|
24500
24492
|
run(job) {
|
|
24501
24493
|
const timeout2 = this.timeoutMs;
|
|
24502
|
-
return new Promise((
|
|
24494
|
+
return new Promise((resolve3, reject) => {
|
|
24503
24495
|
function fire(worker) {
|
|
24504
24496
|
worker.execute(job, (err, response2) => {
|
|
24505
24497
|
if (err && err.type === "TimeoutError") {
|
|
@@ -24507,7 +24499,7 @@ var init_threads = __esm({
|
|
|
24507
24499
|
} else if (err) {
|
|
24508
24500
|
reject(err);
|
|
24509
24501
|
} else {
|
|
24510
|
-
|
|
24502
|
+
resolve3(response2);
|
|
24511
24503
|
}
|
|
24512
24504
|
});
|
|
24513
24505
|
}
|
|
@@ -24521,15 +24513,15 @@ var init_threads = __esm({
|
|
|
24521
24513
|
});
|
|
24522
24514
|
}
|
|
24523
24515
|
static stopThreads() {
|
|
24524
|
-
return new Promise((
|
|
24516
|
+
return new Promise((resolve3) => {
|
|
24525
24517
|
if (_Thread.workerRefs.length === 0) {
|
|
24526
|
-
|
|
24518
|
+
resolve3();
|
|
24527
24519
|
}
|
|
24528
24520
|
let count = 0;
|
|
24529
24521
|
function complete() {
|
|
24530
24522
|
count++;
|
|
24531
24523
|
if (count >= _Thread.workerRefs.length) {
|
|
24532
|
-
|
|
24524
|
+
resolve3();
|
|
24533
24525
|
}
|
|
24534
24526
|
}
|
|
24535
24527
|
for (let worker of _Thread.workerRefs) {
|
|
@@ -24847,22 +24839,22 @@ function threadSetup() {
|
|
|
24847
24839
|
init10();
|
|
24848
24840
|
}
|
|
24849
24841
|
async function checkCacheForDynamicVariable(queryId, variable) {
|
|
24850
|
-
const
|
|
24851
|
-
return
|
|
24842
|
+
const cache3 = await getClient3();
|
|
24843
|
+
return cache3.get(makeVariableKey(queryId, variable));
|
|
24852
24844
|
}
|
|
24853
24845
|
async function invalidateDynamicVariables(cachedVars) {
|
|
24854
|
-
const
|
|
24846
|
+
const cache3 = await getClient3();
|
|
24855
24847
|
let promises = [];
|
|
24856
24848
|
for (let variable of cachedVars) {
|
|
24857
24849
|
promises.push(
|
|
24858
|
-
|
|
24850
|
+
cache3.delete(makeVariableKey(variable.queryId, variable.name))
|
|
24859
24851
|
);
|
|
24860
24852
|
}
|
|
24861
24853
|
await Promise.all(promises);
|
|
24862
24854
|
}
|
|
24863
24855
|
async function storeDynamicVariable(queryId, variable, value) {
|
|
24864
|
-
const
|
|
24865
|
-
await
|
|
24856
|
+
const cache3 = await getClient3();
|
|
24857
|
+
await cache3.store(
|
|
24866
24858
|
makeVariableKey(queryId, variable),
|
|
24867
24859
|
value,
|
|
24868
24860
|
VARIABLE_TTL_SECONDS
|
|
@@ -26377,13 +26369,13 @@ var init_postgres = __esm({
|
|
|
26377
26369
|
}
|
|
26378
26370
|
closeConnection() {
|
|
26379
26371
|
const pg = this;
|
|
26380
|
-
return new Promise((
|
|
26372
|
+
return new Promise((resolve3, reject) => {
|
|
26381
26373
|
this.client.end((err) => {
|
|
26382
26374
|
pg.open = false;
|
|
26383
26375
|
if (err) {
|
|
26384
26376
|
reject(err);
|
|
26385
26377
|
} else {
|
|
26386
|
-
|
|
26378
|
+
resolve3();
|
|
26387
26379
|
}
|
|
26388
26380
|
});
|
|
26389
26381
|
});
|
|
@@ -28134,7 +28126,7 @@ var init_s3 = __esm({
|
|
|
28134
28126
|
Key: query3.key
|
|
28135
28127
|
}).createReadStream();
|
|
28136
28128
|
let csvError = false;
|
|
28137
|
-
return new Promise((
|
|
28129
|
+
return new Promise((resolve3, reject) => {
|
|
28138
28130
|
stream3.on("error", (err) => {
|
|
28139
28131
|
reject(err);
|
|
28140
28132
|
});
|
|
@@ -28142,7 +28134,7 @@ var init_s3 = __esm({
|
|
|
28142
28134
|
csvError = true;
|
|
28143
28135
|
});
|
|
28144
28136
|
stream3.on("finish", () => {
|
|
28145
|
-
|
|
28137
|
+
resolve3(response2);
|
|
28146
28138
|
});
|
|
28147
28139
|
}).catch((err) => {
|
|
28148
28140
|
if (csvError) {
|
|
@@ -29038,6 +29030,16 @@ var init_rest = __esm({
|
|
|
29038
29030
|
});
|
|
29039
29031
|
|
|
29040
29032
|
// src/integrations/googlesheets.ts
|
|
29033
|
+
async function setupCreationAuth(datasouce) {
|
|
29034
|
+
if (datasouce.continueSetupId) {
|
|
29035
|
+
const appId = context_exports.getAppId();
|
|
29036
|
+
const tokens = await cache_exports.get(
|
|
29037
|
+
`datasource:creation:${appId}:google:${datasouce.continueSetupId}`
|
|
29038
|
+
);
|
|
29039
|
+
datasouce.auth = tokens.tokens;
|
|
29040
|
+
delete datasouce.continueSetupId;
|
|
29041
|
+
}
|
|
29042
|
+
}
|
|
29041
29043
|
var import_google_auth_library, import_google_spreadsheet, import_node_fetch10, ALLOWED_TYPES, SCHEMA12, GoogleSheetsIntegration, googlesheets_default;
|
|
29042
29044
|
var init_googlesheets = __esm({
|
|
29043
29045
|
"src/integrations/googlesheets.ts"() {
|
|
@@ -29075,7 +29077,7 @@ var init_googlesheets = __esm({
|
|
|
29075
29077
|
},
|
|
29076
29078
|
datasource: {
|
|
29077
29079
|
spreadsheetId: {
|
|
29078
|
-
display: "
|
|
29080
|
+
display: "Spreadsheet URL",
|
|
29079
29081
|
type: "string" /* STRING */,
|
|
29080
29082
|
required: true
|
|
29081
29083
|
}
|
|
@@ -29145,6 +29147,7 @@ var init_googlesheets = __esm({
|
|
|
29145
29147
|
}
|
|
29146
29148
|
async testConnection() {
|
|
29147
29149
|
try {
|
|
29150
|
+
await setupCreationAuth(this.config);
|
|
29148
29151
|
await this.connect();
|
|
29149
29152
|
return { connected: true };
|
|
29150
29153
|
} catch (e) {
|
|
@@ -34793,6 +34796,9 @@ async function save13(ctx) {
|
|
|
34793
34796
|
datasource2.entities = tables;
|
|
34794
34797
|
setDefaultDisplayColumns(datasource2);
|
|
34795
34798
|
}
|
|
34799
|
+
if (preSaveAction[datasource2.source]) {
|
|
34800
|
+
await preSaveAction[datasource2.source](datasource2);
|
|
34801
|
+
}
|
|
34796
34802
|
const dbResp = await db2.put(datasource2);
|
|
34797
34803
|
await events_exports.datasource.created(datasource2);
|
|
34798
34804
|
datasource2._rev = dbResp.rev;
|
|
@@ -34871,6 +34877,7 @@ async function query(ctx) {
|
|
|
34871
34877
|
ctx.throw(400, err);
|
|
34872
34878
|
}
|
|
34873
34879
|
}
|
|
34880
|
+
var preSaveAction;
|
|
34874
34881
|
var init_datasource5 = __esm({
|
|
34875
34882
|
"src/api/controllers/datasource.ts"() {
|
|
34876
34883
|
init_utils9();
|
|
@@ -34880,8 +34887,15 @@ var init_datasource5 = __esm({
|
|
|
34880
34887
|
init_utils24();
|
|
34881
34888
|
init_utils18();
|
|
34882
34889
|
init_src2();
|
|
34890
|
+
init_src();
|
|
34883
34891
|
init_sdk3();
|
|
34884
34892
|
init_websockets();
|
|
34893
|
+
init_googlesheets();
|
|
34894
|
+
preSaveAction = {
|
|
34895
|
+
["GOOGLE_SHEETS" /* GOOGLE_SHEETS */]: async (datasource2) => {
|
|
34896
|
+
await setupCreationAuth(datasource2.config);
|
|
34897
|
+
}
|
|
34898
|
+
};
|
|
34885
34899
|
}
|
|
34886
34900
|
});
|
|
34887
34901
|
|
|
@@ -37905,7 +37919,7 @@ function executeSynchronously(job) {
|
|
|
37905
37919
|
if (!appId) {
|
|
37906
37920
|
throw new Error("Unable to execute, event doesn't contain app ID.");
|
|
37907
37921
|
}
|
|
37908
|
-
const timeoutPromise = new Promise((
|
|
37922
|
+
const timeoutPromise = new Promise((resolve3, reject) => {
|
|
37909
37923
|
setTimeout(() => {
|
|
37910
37924
|
reject(new Error("Timeout exceeded"));
|
|
37911
37925
|
}, job.data.event.timeout || 12e3);
|
|
@@ -43314,7 +43328,7 @@ var init_static = __esm({
|
|
|
43314
43328
|
};
|
|
43315
43329
|
return;
|
|
43316
43330
|
}
|
|
43317
|
-
let builderPath =
|
|
43331
|
+
let builderPath = join3(TOP_LEVEL_PATH, "new_design_ui");
|
|
43318
43332
|
if (!import_fs15.default.existsSync(builderPath)) {
|
|
43319
43333
|
import_fs15.default.mkdirSync(builderPath);
|
|
43320
43334
|
}
|
|
@@ -43328,7 +43342,7 @@ var init_static = __esm({
|
|
|
43328
43342
|
};
|
|
43329
43343
|
};
|
|
43330
43344
|
serveBuilder = async function(ctx) {
|
|
43331
|
-
const builderPath =
|
|
43345
|
+
const builderPath = join3(TOP_LEVEL_PATH, "builder");
|
|
43332
43346
|
await send2(ctx, ctx.file, { root: builderPath });
|
|
43333
43347
|
};
|
|
43334
43348
|
uploadFile = async function(ctx) {
|