@base44-preview/cli 0.1.11-pr.602.9833770 → 0.1.12-pr.584.d15e5fc
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/dist/cli/index.js +1119 -673
- package/dist/cli/index.js.map +19 -14
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -23354,15 +23354,15 @@ var require_windows = __commonJS(function(exports, module) {
|
|
|
23354
23354
|
}
|
|
23355
23355
|
return false;
|
|
23356
23356
|
}
|
|
23357
|
-
function checkStat(
|
|
23358
|
-
if (!
|
|
23357
|
+
function checkStat(stat3, path11, options) {
|
|
23358
|
+
if (!stat3.isSymbolicLink() && !stat3.isFile()) {
|
|
23359
23359
|
return false;
|
|
23360
23360
|
}
|
|
23361
23361
|
return checkPathExt(path11, options);
|
|
23362
23362
|
}
|
|
23363
23363
|
function isexe(path11, options, cb) {
|
|
23364
|
-
fs14.stat(path11, function(er,
|
|
23365
|
-
cb(er, er ? false : checkStat(
|
|
23364
|
+
fs14.stat(path11, function(er, stat3) {
|
|
23365
|
+
cb(er, er ? false : checkStat(stat3, path11, options));
|
|
23366
23366
|
});
|
|
23367
23367
|
}
|
|
23368
23368
|
function sync(path11, options) {
|
|
@@ -23376,20 +23376,20 @@ var require_mode = __commonJS(function(exports, module) {
|
|
|
23376
23376
|
isexe.sync = sync;
|
|
23377
23377
|
var fs14 = __require("fs");
|
|
23378
23378
|
function isexe(path11, options, cb) {
|
|
23379
|
-
fs14.stat(path11, function(er,
|
|
23380
|
-
cb(er, er ? false : checkStat(
|
|
23379
|
+
fs14.stat(path11, function(er, stat3) {
|
|
23380
|
+
cb(er, er ? false : checkStat(stat3, options));
|
|
23381
23381
|
});
|
|
23382
23382
|
}
|
|
23383
23383
|
function sync(path11, options) {
|
|
23384
23384
|
return checkStat(fs14.statSync(path11), options);
|
|
23385
23385
|
}
|
|
23386
|
-
function checkStat(
|
|
23387
|
-
return
|
|
23386
|
+
function checkStat(stat3, options) {
|
|
23387
|
+
return stat3.isFile() && checkMode(stat3, options);
|
|
23388
23388
|
}
|
|
23389
|
-
function checkMode(
|
|
23390
|
-
var mod =
|
|
23391
|
-
var uid =
|
|
23392
|
-
var gid =
|
|
23389
|
+
function checkMode(stat3, options) {
|
|
23390
|
+
var mod = stat3.mode;
|
|
23391
|
+
var uid = stat3.uid;
|
|
23392
|
+
var gid = stat3.gid;
|
|
23393
23393
|
var myUid = options.uid !== undefined ? options.uid : process.getuid && process.getuid();
|
|
23394
23394
|
var myGid = options.gid !== undefined ? options.gid : process.getgid && process.getgid();
|
|
23395
23395
|
var u = parseInt("100", 8);
|
|
@@ -23421,12 +23421,12 @@ var require_isexe = __commonJS(function(exports, module) {
|
|
|
23421
23421
|
if (typeof Promise !== "function") {
|
|
23422
23422
|
throw new TypeError("callback not provided");
|
|
23423
23423
|
}
|
|
23424
|
-
return new Promise(function(
|
|
23424
|
+
return new Promise(function(resolve6, reject) {
|
|
23425
23425
|
isexe(path11, options || {}, function(er, is) {
|
|
23426
23426
|
if (er) {
|
|
23427
23427
|
reject(er);
|
|
23428
23428
|
} else {
|
|
23429
|
-
|
|
23429
|
+
resolve6(is);
|
|
23430
23430
|
}
|
|
23431
23431
|
});
|
|
23432
23432
|
});
|
|
@@ -23488,27 +23488,27 @@ var require_which = __commonJS(function(exports, module) {
|
|
|
23488
23488
|
opt = {};
|
|
23489
23489
|
const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
|
|
23490
23490
|
const found = [];
|
|
23491
|
-
const step = (i) => new Promise((
|
|
23491
|
+
const step = (i) => new Promise((resolve6, reject) => {
|
|
23492
23492
|
if (i === pathEnv.length)
|
|
23493
|
-
return opt.all && found.length ?
|
|
23493
|
+
return opt.all && found.length ? resolve6(found) : reject(getNotFoundError(cmd));
|
|
23494
23494
|
const ppRaw = pathEnv[i];
|
|
23495
23495
|
const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
|
|
23496
23496
|
const pCmd = path11.join(pathPart, cmd);
|
|
23497
23497
|
const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
|
|
23498
|
-
|
|
23498
|
+
resolve6(subStep(p, i, 0));
|
|
23499
23499
|
});
|
|
23500
|
-
const subStep = (p, i, ii) => new Promise((
|
|
23500
|
+
const subStep = (p, i, ii) => new Promise((resolve6, reject) => {
|
|
23501
23501
|
if (ii === pathExt.length)
|
|
23502
|
-
return
|
|
23502
|
+
return resolve6(step(i + 1));
|
|
23503
23503
|
const ext = pathExt[ii];
|
|
23504
23504
|
isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
|
|
23505
23505
|
if (!er && is) {
|
|
23506
23506
|
if (opt.all)
|
|
23507
23507
|
found.push(p + ext);
|
|
23508
23508
|
else
|
|
23509
|
-
return
|
|
23509
|
+
return resolve6(p + ext);
|
|
23510
23510
|
}
|
|
23511
|
-
return
|
|
23511
|
+
return resolve6(subStep(p, i, ii + 1));
|
|
23512
23512
|
});
|
|
23513
23513
|
});
|
|
23514
23514
|
return cb ? step(0).then((res) => cb(null, res), cb) : step(0);
|
|
@@ -27036,7 +27036,7 @@ var require_lodash8 = __commonJS(function(exports, module) {
|
|
|
27036
27036
|
}
|
|
27037
27037
|
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
|
|
27038
27038
|
});
|
|
27039
|
-
function
|
|
27039
|
+
function join18(array2, separator) {
|
|
27040
27040
|
return array2 == null ? "" : nativeJoin.call(array2, separator);
|
|
27041
27041
|
}
|
|
27042
27042
|
function last(array2) {
|
|
@@ -28968,7 +28968,7 @@ __p += '`;
|
|
|
28968
28968
|
lodash.isUndefined = isUndefined;
|
|
28969
28969
|
lodash.isWeakMap = isWeakMap;
|
|
28970
28970
|
lodash.isWeakSet = isWeakSet;
|
|
28971
|
-
lodash.join =
|
|
28971
|
+
lodash.join = join18;
|
|
28972
28972
|
lodash.kebabCase = kebabCase;
|
|
28973
28973
|
lodash.last = last;
|
|
28974
28974
|
lodash.lastIndexOf = lastIndexOf;
|
|
@@ -31178,7 +31178,7 @@ function cleanDoc(doc2) {
|
|
|
31178
31178
|
return mapDoc(doc2, (currentDoc) => cleanDocFn(currentDoc));
|
|
31179
31179
|
}
|
|
31180
31180
|
function replaceEndOfLine(doc2, replacement = literalline) {
|
|
31181
|
-
return mapDoc(doc2, (currentDoc) => typeof currentDoc === "string" ?
|
|
31181
|
+
return mapDoc(doc2, (currentDoc) => typeof currentDoc === "string" ? join27(replacement, currentDoc.split(`
|
|
31182
31182
|
`)) : currentDoc);
|
|
31183
31183
|
}
|
|
31184
31184
|
function canBreakFn(doc2) {
|
|
@@ -31258,7 +31258,7 @@ function indentIfBreak(contents, options) {
|
|
|
31258
31258
|
negate: options.negate
|
|
31259
31259
|
};
|
|
31260
31260
|
}
|
|
31261
|
-
function
|
|
31261
|
+
function join27(separator, docs) {
|
|
31262
31262
|
assertDoc(separator);
|
|
31263
31263
|
assertDocArray(docs);
|
|
31264
31264
|
const parts = [];
|
|
@@ -31969,7 +31969,7 @@ var init_doc = __esm(() => {
|
|
|
31969
31969
|
MODE_FLAT = Symbol("MODE_FLAT");
|
|
31970
31970
|
DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
|
|
31971
31971
|
builders = {
|
|
31972
|
-
join:
|
|
31972
|
+
join: join27,
|
|
31973
31973
|
line,
|
|
31974
31974
|
softline,
|
|
31975
31975
|
hardline,
|
|
@@ -120387,7 +120387,7 @@ function skipVoid(str, ptr, banNewLines, banComments) {
|
|
|
120387
120387
|
ptr++;
|
|
120388
120388
|
return banComments || c24 !== "#" ? ptr : skipVoid(str, skipComment(str, ptr), banNewLines);
|
|
120389
120389
|
}
|
|
120390
|
-
function skipUntil(str, ptr,
|
|
120390
|
+
function skipUntil(str, ptr, sep2, end, banNewLines = false) {
|
|
120391
120391
|
if (!end) {
|
|
120392
120392
|
ptr = indexOfNewline(str, ptr);
|
|
120393
120393
|
return ptr < 0 ? str.length : ptr;
|
|
@@ -120396,7 +120396,7 @@ function skipUntil(str, ptr, sep, end, banNewLines = false) {
|
|
|
120396
120396
|
let c24 = str[i5];
|
|
120397
120397
|
if (c24 === "#") {
|
|
120398
120398
|
i5 = indexOfNewline(str, i5);
|
|
120399
|
-
} else if (c24 ===
|
|
120399
|
+
} else if (c24 === sep2) {
|
|
120400
120400
|
return i5 + 1;
|
|
120401
120401
|
} else if (c24 === end || banNewLines && (c24 === `
|
|
120402
120402
|
` || c24 === "\r" && str[i5 + 1] === `
|
|
@@ -121176,7 +121176,7 @@ function getDataProtocolModuleFormat(parsed) {
|
|
|
121176
121176
|
const { 1: mime } = /^([^/]+\/[^;,]+)[^,]*?(;base64)?,/.exec(parsed.pathname) || [null, null, null];
|
|
121177
121177
|
return mimeToFormat(mime);
|
|
121178
121178
|
}
|
|
121179
|
-
function
|
|
121179
|
+
function extname2(url3) {
|
|
121180
121180
|
const pathname = url3.pathname;
|
|
121181
121181
|
let index = pathname.length;
|
|
121182
121182
|
while (index--) {
|
|
@@ -121191,7 +121191,7 @@ function extname(url3) {
|
|
|
121191
121191
|
return "";
|
|
121192
121192
|
}
|
|
121193
121193
|
function getFileProtocolModuleFormat(url3, _context, ignoreErrors) {
|
|
121194
|
-
const value =
|
|
121194
|
+
const value = extname2(url3);
|
|
121195
121195
|
if (value === ".js") {
|
|
121196
121196
|
const packageType = getPackageType(url3);
|
|
121197
121197
|
if (packageType !== "none") {
|
|
@@ -123906,14 +123906,14 @@ async function printToDoc(originalText, options8) {
|
|
|
123906
123906
|
async function printDocToString2(doc2, options8) {
|
|
123907
123907
|
return printDocToStringWithoutNormalizeOptions(doc2, await normalize_format_options_default(options8));
|
|
123908
123908
|
}
|
|
123909
|
-
function createParsersAndPrinters(
|
|
123909
|
+
function createParsersAndPrinters(modules2) {
|
|
123910
123910
|
const parsers2 = /* @__PURE__ */ Object.create(null);
|
|
123911
123911
|
const printers2 = /* @__PURE__ */ Object.create(null);
|
|
123912
123912
|
for (const {
|
|
123913
123913
|
importPlugin: importPlugin2,
|
|
123914
123914
|
parsers: parserNames = [],
|
|
123915
123915
|
printers: printerNames = []
|
|
123916
|
-
} of
|
|
123916
|
+
} of modules2) {
|
|
123917
123917
|
const loadPlugin2 = async () => {
|
|
123918
123918
|
const plugin = await importPlugin2();
|
|
123919
123919
|
Object.assign(parsers2, plugin.parsers);
|
|
@@ -136883,7 +136883,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
|
136883
136883
|
return mapDoc2(doc2, (currentDoc) => cleanDocFn2(currentDoc));
|
|
136884
136884
|
}
|
|
136885
136885
|
function replaceEndOfLine2(doc2, replacement = literalline2) {
|
|
136886
|
-
return mapDoc2(doc2, (currentDoc) => typeof currentDoc === "string" ?
|
|
136886
|
+
return mapDoc2(doc2, (currentDoc) => typeof currentDoc === "string" ? join29(replacement, currentDoc.split(`
|
|
136887
136887
|
`)) : currentDoc);
|
|
136888
136888
|
}
|
|
136889
136889
|
function canBreakFn2(doc2) {
|
|
@@ -136969,7 +136969,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
|
136969
136969
|
negate: options8.negate
|
|
136970
136970
|
};
|
|
136971
136971
|
}
|
|
136972
|
-
function
|
|
136972
|
+
function join29(separator, docs) {
|
|
136973
136973
|
assertDoc2(separator);
|
|
136974
136974
|
assertDocArray2(docs);
|
|
136975
136975
|
const parts = [];
|
|
@@ -137634,7 +137634,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
|
137634
137634
|
}
|
|
137635
137635
|
}
|
|
137636
137636
|
var builders2 = {
|
|
137637
|
-
join:
|
|
137637
|
+
join: join29,
|
|
137638
137638
|
line: line3,
|
|
137639
137639
|
softline: softline2,
|
|
137640
137640
|
hardline: hardline4,
|
|
@@ -138289,11 +138289,11 @@ var require_prettier = __commonJS(function(exports, module) {
|
|
|
138289
138289
|
var require_formatter = __commonJS(function(exports) {
|
|
138290
138290
|
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P9, generator) {
|
|
138291
138291
|
function adopt(value) {
|
|
138292
|
-
return value instanceof P9 ? value : new P9(function(
|
|
138293
|
-
|
|
138292
|
+
return value instanceof P9 ? value : new P9(function(resolve15) {
|
|
138293
|
+
resolve15(value);
|
|
138294
138294
|
});
|
|
138295
138295
|
}
|
|
138296
|
-
return new (P9 || (P9 = Promise))(function(
|
|
138296
|
+
return new (P9 || (P9 = Promise))(function(resolve15, reject) {
|
|
138297
138297
|
function fulfilled(value) {
|
|
138298
138298
|
try {
|
|
138299
138299
|
step(generator.next(value));
|
|
@@ -138309,7 +138309,7 @@ var require_formatter = __commonJS(function(exports) {
|
|
|
138309
138309
|
}
|
|
138310
138310
|
}
|
|
138311
138311
|
function step(result) {
|
|
138312
|
-
result.done ?
|
|
138312
|
+
result.done ? resolve15(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
138313
138313
|
}
|
|
138314
138314
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
138315
138315
|
});
|
|
@@ -142962,7 +142962,7 @@ var require_url = __commonJS(function(exports) {
|
|
|
142962
142962
|
};
|
|
142963
142963
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
142964
142964
|
exports.parse = undefined;
|
|
142965
|
-
exports.resolve =
|
|
142965
|
+
exports.resolve = resolve15;
|
|
142966
142966
|
exports.cwd = cwd;
|
|
142967
142967
|
exports.getProtocol = getProtocol;
|
|
142968
142968
|
exports.getExtension = getExtension;
|
|
@@ -142974,7 +142974,7 @@ var require_url = __commonJS(function(exports) {
|
|
|
142974
142974
|
exports.fromFileSystemPath = fromFileSystemPath;
|
|
142975
142975
|
exports.toFileSystemPath = toFileSystemPath;
|
|
142976
142976
|
exports.safePointerToPath = safePointerToPath;
|
|
142977
|
-
exports.relative =
|
|
142977
|
+
exports.relative = relative5;
|
|
142978
142978
|
var convert_path_to_posix_1 = __importDefault(require_convert_path_to_posix());
|
|
142979
142979
|
var path_1 = __importStar(__require("path"));
|
|
142980
142980
|
var forwardSlashPattern = /\//g;
|
|
@@ -142990,7 +142990,7 @@ var require_url = __commonJS(function(exports) {
|
|
|
142990
142990
|
var urlDecodePatterns = [/%23/g, "#", /%24/g, "$", /%26/g, "&", /%2C/g, ",", /%40/g, "@"];
|
|
142991
142991
|
var parse11 = (u4) => new URL(u4);
|
|
142992
142992
|
exports.parse = parse11;
|
|
142993
|
-
function
|
|
142993
|
+
function resolve15(from, to5) {
|
|
142994
142994
|
const fromUrl = new URL((0, convert_path_to_posix_1.default)(from), "https://aaa.nonexistanturl.com");
|
|
142995
142995
|
const resolvedUrl = new URL((0, convert_path_to_posix_1.default)(to5), fromUrl);
|
|
142996
142996
|
const endSpaces = to5.match(/(\s*)$/)?.[1] || "";
|
|
@@ -143124,9 +143124,9 @@ var require_url = __commonJS(function(exports) {
|
|
|
143124
143124
|
return decodeURIComponent(value).replace(jsonPointerSlash, "/").replace(jsonPointerTilde, "~");
|
|
143125
143125
|
});
|
|
143126
143126
|
}
|
|
143127
|
-
function
|
|
143127
|
+
function relative5(from, to5) {
|
|
143128
143128
|
if (!isFileSystemPath(from) || !isFileSystemPath(to5)) {
|
|
143129
|
-
return
|
|
143129
|
+
return resolve15(from, to5);
|
|
143130
143130
|
}
|
|
143131
143131
|
const fromDir = path_1.default.dirname(stripHash(from));
|
|
143132
143132
|
const toPath4 = stripHash(to5);
|
|
@@ -143802,7 +143802,7 @@ var require_plugins = __commonJS(function(exports) {
|
|
|
143802
143802
|
let plugin;
|
|
143803
143803
|
let lastError;
|
|
143804
143804
|
let index = 0;
|
|
143805
|
-
return new Promise((
|
|
143805
|
+
return new Promise((resolve15, reject) => {
|
|
143806
143806
|
runNextPlugin();
|
|
143807
143807
|
function runNextPlugin() {
|
|
143808
143808
|
plugin = plugins[index++];
|
|
@@ -143830,7 +143830,7 @@ var require_plugins = __commonJS(function(exports) {
|
|
|
143830
143830
|
}
|
|
143831
143831
|
}
|
|
143832
143832
|
function onSuccess(result) {
|
|
143833
|
-
|
|
143833
|
+
resolve15({
|
|
143834
143834
|
plugin,
|
|
143835
143835
|
result
|
|
143836
143836
|
});
|
|
@@ -145163,11 +145163,11 @@ var require_lib3 = __commonJS(function(exports) {
|
|
|
145163
145163
|
var require_resolver = __commonJS(function(exports) {
|
|
145164
145164
|
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P9, generator) {
|
|
145165
145165
|
function adopt(value) {
|
|
145166
|
-
return value instanceof P9 ? value : new P9(function(
|
|
145167
|
-
|
|
145166
|
+
return value instanceof P9 ? value : new P9(function(resolve15) {
|
|
145167
|
+
resolve15(value);
|
|
145168
145168
|
});
|
|
145169
145169
|
}
|
|
145170
|
-
return new (P9 || (P9 = Promise))(function(
|
|
145170
|
+
return new (P9 || (P9 = Promise))(function(resolve15, reject) {
|
|
145171
145171
|
function fulfilled(value) {
|
|
145172
145172
|
try {
|
|
145173
145173
|
step(generator.next(value));
|
|
@@ -145183,7 +145183,7 @@ var require_resolver = __commonJS(function(exports) {
|
|
|
145183
145183
|
}
|
|
145184
145184
|
}
|
|
145185
145185
|
function step(result) {
|
|
145186
|
-
result.done ?
|
|
145186
|
+
result.done ? resolve15(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
145187
145187
|
}
|
|
145188
145188
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
145189
145189
|
});
|
|
@@ -145304,11 +145304,11 @@ var require_optionValidator = __commonJS(function(exports) {
|
|
|
145304
145304
|
var require_src3 = __commonJS(function(exports) {
|
|
145305
145305
|
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P9, generator) {
|
|
145306
145306
|
function adopt(value) {
|
|
145307
|
-
return value instanceof P9 ? value : new P9(function(
|
|
145308
|
-
|
|
145307
|
+
return value instanceof P9 ? value : new P9(function(resolve15) {
|
|
145308
|
+
resolve15(value);
|
|
145309
145309
|
});
|
|
145310
145310
|
}
|
|
145311
|
-
return new (P9 || (P9 = Promise))(function(
|
|
145311
|
+
return new (P9 || (P9 = Promise))(function(resolve15, reject) {
|
|
145312
145312
|
function fulfilled(value) {
|
|
145313
145313
|
try {
|
|
145314
145314
|
step(generator.next(value));
|
|
@@ -145324,7 +145324,7 @@ var require_src3 = __commonJS(function(exports) {
|
|
|
145324
145324
|
}
|
|
145325
145325
|
}
|
|
145326
145326
|
function step(result) {
|
|
145327
|
-
result.done ?
|
|
145327
|
+
result.done ? resolve15(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
145328
145328
|
}
|
|
145329
145329
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
145330
145330
|
});
|
|
@@ -146453,7 +146453,7 @@ var require_depd = __commonJS(function(exports, module) {
|
|
|
146453
146453
|
* Copyright(c) 2014-2018 Douglas Christopher Wilson
|
|
146454
146454
|
* MIT Licensed
|
|
146455
146455
|
*/
|
|
146456
|
-
var
|
|
146456
|
+
var relative5 = __require("path").relative;
|
|
146457
146457
|
module.exports = depd;
|
|
146458
146458
|
var basePath = process.cwd();
|
|
146459
146459
|
function containsNamespace(str, namespace) {
|
|
@@ -146649,7 +146649,7 @@ var require_depd = __commonJS(function(exports, module) {
|
|
|
146649
146649
|
return formatted;
|
|
146650
146650
|
}
|
|
146651
146651
|
function formatLocation(callSite) {
|
|
146652
|
-
return
|
|
146652
|
+
return relative5(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2];
|
|
146653
146653
|
}
|
|
146654
146654
|
function getStack() {
|
|
146655
146655
|
var limit = Error.stackTraceLimit;
|
|
@@ -150645,7 +150645,7 @@ var require_dbcs_data = __commonJS(function(exports, module) {
|
|
|
150645
150645
|
// ../../node_modules/iconv-lite/encodings/index.js
|
|
150646
150646
|
var require_encodings = __commonJS(function(exports, module) {
|
|
150647
150647
|
var mergeModules = require_merge_exports();
|
|
150648
|
-
var
|
|
150648
|
+
var modules2 = [
|
|
150649
150649
|
require_internal(),
|
|
150650
150650
|
require_utf32(),
|
|
150651
150651
|
require_utf16(),
|
|
@@ -150656,8 +150656,8 @@ var require_encodings = __commonJS(function(exports, module) {
|
|
|
150656
150656
|
require_dbcs_codec(),
|
|
150657
150657
|
require_dbcs_data()
|
|
150658
150658
|
];
|
|
150659
|
-
for (i5 = 0;i5 <
|
|
150660
|
-
module =
|
|
150659
|
+
for (i5 = 0;i5 < modules2.length; i5++) {
|
|
150660
|
+
module = modules2[i5];
|
|
150661
150661
|
mergeModules(exports, module);
|
|
150662
150662
|
}
|
|
150663
150663
|
var module;
|
|
@@ -150986,11 +150986,11 @@ var require_raw_body = __commonJS(function(exports, module) {
|
|
|
150986
150986
|
if (done) {
|
|
150987
150987
|
return readStream(stream, encoding, length, limit, wrap(done));
|
|
150988
150988
|
}
|
|
150989
|
-
return new Promise(function executor(
|
|
150989
|
+
return new Promise(function executor(resolve15, reject) {
|
|
150990
150990
|
readStream(stream, encoding, length, limit, function onRead2(err, buf) {
|
|
150991
150991
|
if (err)
|
|
150992
150992
|
return reject(err);
|
|
150993
|
-
|
|
150993
|
+
resolve15(buf);
|
|
150994
150994
|
});
|
|
150995
150995
|
});
|
|
150996
150996
|
}
|
|
@@ -160794,7 +160794,7 @@ var require_mime_types = __commonJS(function(exports) {
|
|
|
160794
160794
|
* MIT Licensed
|
|
160795
160795
|
*/
|
|
160796
160796
|
var db2 = require_db();
|
|
160797
|
-
var
|
|
160797
|
+
var extname3 = __require("path").extname;
|
|
160798
160798
|
var mimeScore = require_mimeScore();
|
|
160799
160799
|
var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
|
|
160800
160800
|
var TEXT_TYPE_REGEXP = /^text\//i;
|
|
@@ -160851,7 +160851,7 @@ var require_mime_types = __commonJS(function(exports) {
|
|
|
160851
160851
|
if (!path18 || typeof path18 !== "string") {
|
|
160852
160852
|
return false;
|
|
160853
160853
|
}
|
|
160854
|
-
var extension2 =
|
|
160854
|
+
var extension2 = extname3("x." + path18).toLowerCase().slice(1);
|
|
160855
160855
|
if (!extension2) {
|
|
160856
160856
|
return false;
|
|
160857
160857
|
}
|
|
@@ -164111,16 +164111,16 @@ var require_view = __commonJS(function(exports, module) {
|
|
|
164111
164111
|
var debug = require_src4()("express:view");
|
|
164112
164112
|
var path18 = __require("node:path");
|
|
164113
164113
|
var fs28 = __require("node:fs");
|
|
164114
|
-
var
|
|
164114
|
+
var dirname21 = path18.dirname;
|
|
164115
164115
|
var basename7 = path18.basename;
|
|
164116
|
-
var
|
|
164117
|
-
var
|
|
164118
|
-
var
|
|
164116
|
+
var extname3 = path18.extname;
|
|
164117
|
+
var join30 = path18.join;
|
|
164118
|
+
var resolve15 = path18.resolve;
|
|
164119
164119
|
module.exports = View;
|
|
164120
164120
|
function View(name2, options8) {
|
|
164121
164121
|
var opts = options8 || {};
|
|
164122
164122
|
this.defaultEngine = opts.defaultEngine;
|
|
164123
|
-
this.ext =
|
|
164123
|
+
this.ext = extname3(name2);
|
|
164124
164124
|
this.name = name2;
|
|
164125
164125
|
this.root = opts.root;
|
|
164126
164126
|
if (!this.ext && !this.defaultEngine) {
|
|
@@ -164149,8 +164149,8 @@ var require_view = __commonJS(function(exports, module) {
|
|
|
164149
164149
|
debug('lookup "%s"', name2);
|
|
164150
164150
|
for (var i5 = 0;i5 < roots.length && !path19; i5++) {
|
|
164151
164151
|
var root2 = roots[i5];
|
|
164152
|
-
var loc =
|
|
164153
|
-
var dir =
|
|
164152
|
+
var loc = resolve15(root2, name2);
|
|
164153
|
+
var dir = dirname21(loc);
|
|
164154
164154
|
var file2 = basename7(loc);
|
|
164155
164155
|
path19 = this.resolve(dir, file2);
|
|
164156
164156
|
}
|
|
@@ -164174,16 +164174,16 @@ var require_view = __commonJS(function(exports, module) {
|
|
|
164174
164174
|
});
|
|
164175
164175
|
sync = false;
|
|
164176
164176
|
};
|
|
164177
|
-
View.prototype.resolve = function
|
|
164177
|
+
View.prototype.resolve = function resolve16(dir, file2) {
|
|
164178
164178
|
var ext = this.ext;
|
|
164179
|
-
var path19 =
|
|
164180
|
-
var
|
|
164181
|
-
if (
|
|
164179
|
+
var path19 = join30(dir, file2);
|
|
164180
|
+
var stat4 = tryStat(path19);
|
|
164181
|
+
if (stat4 && stat4.isFile()) {
|
|
164182
164182
|
return path19;
|
|
164183
164183
|
}
|
|
164184
|
-
path19 =
|
|
164185
|
-
|
|
164186
|
-
if (
|
|
164184
|
+
path19 = join30(dir, basename7(file2, ext), "index" + ext);
|
|
164185
|
+
stat4 = tryStat(path19);
|
|
164186
|
+
if (stat4 && stat4.isFile()) {
|
|
164187
164187
|
return path19;
|
|
164188
164188
|
}
|
|
164189
164189
|
};
|
|
@@ -164234,9 +164234,9 @@ var require_etag = __commonJS(function(exports, module) {
|
|
|
164234
164234
|
}
|
|
164235
164235
|
return obj && typeof obj === "object" && "ctime" in obj && toString2.call(obj.ctime) === "[object Date]" && "mtime" in obj && toString2.call(obj.mtime) === "[object Date]" && "ino" in obj && typeof obj.ino === "number" && "size" in obj && typeof obj.size === "number";
|
|
164236
164236
|
}
|
|
164237
|
-
function stattag(
|
|
164238
|
-
var mtime =
|
|
164239
|
-
var size =
|
|
164237
|
+
function stattag(stat4) {
|
|
164238
|
+
var mtime = stat4.mtime.getTime().toString(16);
|
|
164239
|
+
var size = stat4.size.toString(16);
|
|
164240
164240
|
return '"' + size + "-" + mtime + '"';
|
|
164241
164241
|
}
|
|
164242
164242
|
});
|
|
@@ -166333,7 +166333,7 @@ var require_application = __commonJS(function(exports, module) {
|
|
|
166333
166333
|
var compileETag = require_utils10().compileETag;
|
|
166334
166334
|
var compileQueryParser = require_utils10().compileQueryParser;
|
|
166335
166335
|
var compileTrust = require_utils10().compileTrust;
|
|
166336
|
-
var
|
|
166336
|
+
var resolve15 = __require("node:path").resolve;
|
|
166337
166337
|
var once9 = require_once();
|
|
166338
166338
|
var Router = require_router();
|
|
166339
166339
|
var slice = Array.prototype.slice;
|
|
@@ -166387,7 +166387,7 @@ var require_application = __commonJS(function(exports, module) {
|
|
|
166387
166387
|
this.mountpath = "/";
|
|
166388
166388
|
this.locals.settings = this.settings;
|
|
166389
166389
|
this.set("view", View);
|
|
166390
|
-
this.set("views",
|
|
166390
|
+
this.set("views", resolve15("views"));
|
|
166391
166391
|
this.set("jsonp callback name", "callback");
|
|
166392
166392
|
if (env4 === "production") {
|
|
166393
166393
|
this.enable("view cache");
|
|
@@ -167875,11 +167875,11 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
167875
167875
|
var statuses = require_statuses();
|
|
167876
167876
|
var Stream2 = __require("stream");
|
|
167877
167877
|
var util2 = __require("util");
|
|
167878
|
-
var
|
|
167879
|
-
var
|
|
167878
|
+
var extname3 = path18.extname;
|
|
167879
|
+
var join30 = path18.join;
|
|
167880
167880
|
var normalize2 = path18.normalize;
|
|
167881
|
-
var
|
|
167882
|
-
var
|
|
167881
|
+
var resolve15 = path18.resolve;
|
|
167882
|
+
var sep2 = path18.sep;
|
|
167883
167883
|
var BYTES_RANGE_REGEXP = /^ *bytes=/;
|
|
167884
167884
|
var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000;
|
|
167885
167885
|
var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/;
|
|
@@ -167907,7 +167907,7 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
167907
167907
|
this._maxage = opts.maxAge || opts.maxage;
|
|
167908
167908
|
this._maxage = typeof this._maxage === "string" ? ms9(this._maxage) : Number(this._maxage);
|
|
167909
167909
|
this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0;
|
|
167910
|
-
this._root = opts.root ?
|
|
167910
|
+
this._root = opts.root ? resolve15(opts.root) : null;
|
|
167911
167911
|
}
|
|
167912
167912
|
util2.inherits(SendStream, Stream2);
|
|
167913
167913
|
SendStream.prototype.error = function error48(status, err) {
|
|
@@ -168040,23 +168040,23 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168040
168040
|
var parts;
|
|
168041
168041
|
if (root2 !== null) {
|
|
168042
168042
|
if (path19) {
|
|
168043
|
-
path19 = normalize2("." +
|
|
168043
|
+
path19 = normalize2("." + sep2 + path19);
|
|
168044
168044
|
}
|
|
168045
168045
|
if (UP_PATH_REGEXP.test(path19)) {
|
|
168046
168046
|
debug('malicious path "%s"', path19);
|
|
168047
168047
|
this.error(403);
|
|
168048
168048
|
return res;
|
|
168049
168049
|
}
|
|
168050
|
-
parts = path19.split(
|
|
168051
|
-
path19 = normalize2(
|
|
168050
|
+
parts = path19.split(sep2);
|
|
168051
|
+
path19 = normalize2(join30(root2, path19));
|
|
168052
168052
|
} else {
|
|
168053
168053
|
if (UP_PATH_REGEXP.test(path19)) {
|
|
168054
168054
|
debug('malicious path "%s"', path19);
|
|
168055
168055
|
this.error(403);
|
|
168056
168056
|
return res;
|
|
168057
168057
|
}
|
|
168058
|
-
parts = normalize2(path19).split(
|
|
168059
|
-
path19 =
|
|
168058
|
+
parts = normalize2(path19).split(sep2);
|
|
168059
|
+
path19 = resolve15(path19);
|
|
168060
168060
|
}
|
|
168061
168061
|
if (containsDotFile(parts)) {
|
|
168062
168062
|
debug('%s dotfile "%s"', this._dotfiles, path19);
|
|
@@ -168079,8 +168079,8 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168079
168079
|
this.sendFile(path19);
|
|
168080
168080
|
return res;
|
|
168081
168081
|
};
|
|
168082
|
-
SendStream.prototype.send = function send2(path19,
|
|
168083
|
-
var len =
|
|
168082
|
+
SendStream.prototype.send = function send2(path19, stat4) {
|
|
168083
|
+
var len = stat4.size;
|
|
168084
168084
|
var options8 = this.options;
|
|
168085
168085
|
var opts = {};
|
|
168086
168086
|
var res = this.res;
|
|
@@ -168092,7 +168092,7 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168092
168092
|
return;
|
|
168093
168093
|
}
|
|
168094
168094
|
debug('pipe "%s"', path19);
|
|
168095
|
-
this.setHeader(path19,
|
|
168095
|
+
this.setHeader(path19, stat4);
|
|
168096
168096
|
this.type(path19);
|
|
168097
168097
|
if (this.isConditionalGET()) {
|
|
168098
168098
|
if (this.isPreconditionFailure()) {
|
|
@@ -168149,19 +168149,19 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168149
168149
|
var i5 = 0;
|
|
168150
168150
|
var self2 = this;
|
|
168151
168151
|
debug('stat "%s"', path19);
|
|
168152
|
-
fs28.stat(path19, function onstat(err,
|
|
168153
|
-
var pathEndsWithSep = path19[path19.length - 1] ===
|
|
168154
|
-
if (err && err.code === "ENOENT" && !
|
|
168152
|
+
fs28.stat(path19, function onstat(err, stat4) {
|
|
168153
|
+
var pathEndsWithSep = path19[path19.length - 1] === sep2;
|
|
168154
|
+
if (err && err.code === "ENOENT" && !extname3(path19) && !pathEndsWithSep) {
|
|
168155
168155
|
return next(err);
|
|
168156
168156
|
}
|
|
168157
168157
|
if (err)
|
|
168158
168158
|
return self2.onStatError(err);
|
|
168159
|
-
if (
|
|
168159
|
+
if (stat4.isDirectory())
|
|
168160
168160
|
return self2.redirect(path19);
|
|
168161
168161
|
if (pathEndsWithSep)
|
|
168162
168162
|
return self2.error(404);
|
|
168163
|
-
self2.emit("file", path19,
|
|
168164
|
-
self2.send(path19,
|
|
168163
|
+
self2.emit("file", path19, stat4);
|
|
168164
|
+
self2.send(path19, stat4);
|
|
168165
168165
|
});
|
|
168166
168166
|
function next(err) {
|
|
168167
168167
|
if (self2._extensions.length <= i5) {
|
|
@@ -168169,13 +168169,13 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168169
168169
|
}
|
|
168170
168170
|
var p4 = path19 + "." + self2._extensions[i5++];
|
|
168171
168171
|
debug('stat "%s"', p4);
|
|
168172
|
-
fs28.stat(p4, function(err2,
|
|
168172
|
+
fs28.stat(p4, function(err2, stat4) {
|
|
168173
168173
|
if (err2)
|
|
168174
168174
|
return next(err2);
|
|
168175
|
-
if (
|
|
168175
|
+
if (stat4.isDirectory())
|
|
168176
168176
|
return next();
|
|
168177
|
-
self2.emit("file", p4,
|
|
168178
|
-
self2.send(p4,
|
|
168177
|
+
self2.emit("file", p4, stat4);
|
|
168178
|
+
self2.send(p4, stat4);
|
|
168179
168179
|
});
|
|
168180
168180
|
}
|
|
168181
168181
|
};
|
|
@@ -168188,15 +168188,15 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168188
168188
|
return self2.onStatError(err);
|
|
168189
168189
|
return self2.error(404);
|
|
168190
168190
|
}
|
|
168191
|
-
var p4 =
|
|
168191
|
+
var p4 = join30(path19, self2._index[i5]);
|
|
168192
168192
|
debug('stat "%s"', p4);
|
|
168193
|
-
fs28.stat(p4, function(err2,
|
|
168193
|
+
fs28.stat(p4, function(err2, stat4) {
|
|
168194
168194
|
if (err2)
|
|
168195
168195
|
return next(err2);
|
|
168196
|
-
if (
|
|
168196
|
+
if (stat4.isDirectory())
|
|
168197
168197
|
return next();
|
|
168198
|
-
self2.emit("file", p4,
|
|
168199
|
-
self2.send(p4,
|
|
168198
|
+
self2.emit("file", p4, stat4);
|
|
168199
|
+
self2.send(p4, stat4);
|
|
168200
168200
|
});
|
|
168201
168201
|
}
|
|
168202
168202
|
next();
|
|
@@ -168223,14 +168223,14 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168223
168223
|
var res = this.res;
|
|
168224
168224
|
if (res.getHeader("Content-Type"))
|
|
168225
168225
|
return;
|
|
168226
|
-
var ext =
|
|
168226
|
+
var ext = extname3(path19);
|
|
168227
168227
|
var type2 = mime.contentType(ext) || "application/octet-stream";
|
|
168228
168228
|
debug("content-type %s", type2);
|
|
168229
168229
|
res.setHeader("Content-Type", type2);
|
|
168230
168230
|
};
|
|
168231
|
-
SendStream.prototype.setHeader = function setHeader(path19,
|
|
168231
|
+
SendStream.prototype.setHeader = function setHeader(path19, stat4) {
|
|
168232
168232
|
var res = this.res;
|
|
168233
|
-
this.emit("headers", res, path19,
|
|
168233
|
+
this.emit("headers", res, path19, stat4);
|
|
168234
168234
|
if (this._acceptRanges && !res.getHeader("Accept-Ranges")) {
|
|
168235
168235
|
debug("accept ranges");
|
|
168236
168236
|
res.setHeader("Accept-Ranges", "bytes");
|
|
@@ -168244,12 +168244,12 @@ var require_send = __commonJS(function(exports, module) {
|
|
|
168244
168244
|
res.setHeader("Cache-Control", cacheControl);
|
|
168245
168245
|
}
|
|
168246
168246
|
if (this._lastModified && !res.getHeader("Last-Modified")) {
|
|
168247
|
-
var modified =
|
|
168247
|
+
var modified = stat4.mtime.toUTCString();
|
|
168248
168248
|
debug("modified %s", modified);
|
|
168249
168249
|
res.setHeader("Last-Modified", modified);
|
|
168250
168250
|
}
|
|
168251
168251
|
if (this._etag && !res.getHeader("ETag")) {
|
|
168252
|
-
var val = etag(
|
|
168252
|
+
var val = etag(stat4);
|
|
168253
168253
|
debug("etag %s", val);
|
|
168254
168254
|
res.setHeader("ETag", val);
|
|
168255
168255
|
}
|
|
@@ -168383,8 +168383,8 @@ var require_response = __commonJS(function(exports, module) {
|
|
|
168383
168383
|
var setCharset = require_utils10().setCharset;
|
|
168384
168384
|
var cookie = require_cookie();
|
|
168385
168385
|
var send = require_send();
|
|
168386
|
-
var
|
|
168387
|
-
var
|
|
168386
|
+
var extname3 = path18.extname;
|
|
168387
|
+
var resolve15 = path18.resolve;
|
|
168388
168388
|
var vary = require_vary();
|
|
168389
168389
|
var { Buffer: Buffer7 } = __require("node:buffer");
|
|
168390
168390
|
var res = Object.create(http.ServerResponse.prototype);
|
|
@@ -168593,7 +168593,7 @@ var require_response = __commonJS(function(exports, module) {
|
|
|
168593
168593
|
}
|
|
168594
168594
|
opts = Object.create(opts);
|
|
168595
168595
|
opts.headers = headers;
|
|
168596
|
-
var fullPath = !opts.root ?
|
|
168596
|
+
var fullPath = !opts.root ? resolve15(path19) : path19;
|
|
168597
168597
|
return this.sendFile(fullPath, opts, done);
|
|
168598
168598
|
};
|
|
168599
168599
|
res.contentType = res.type = function contentType(type) {
|
|
@@ -168624,7 +168624,7 @@ var require_response = __commonJS(function(exports, module) {
|
|
|
168624
168624
|
};
|
|
168625
168625
|
res.attachment = function attachment(filename) {
|
|
168626
168626
|
if (filename) {
|
|
168627
|
-
this.type(
|
|
168627
|
+
this.type(extname3(filename));
|
|
168628
168628
|
}
|
|
168629
168629
|
this.set("Content-Disposition", contentDisposition(filename));
|
|
168630
168630
|
return this;
|
|
@@ -168854,7 +168854,7 @@ var require_serve_static = __commonJS(function(exports, module) {
|
|
|
168854
168854
|
var encodeUrl = require_encodeurl();
|
|
168855
168855
|
var escapeHtml = require_escape_html();
|
|
168856
168856
|
var parseUrl = require_parseurl();
|
|
168857
|
-
var
|
|
168857
|
+
var resolve15 = __require("path").resolve;
|
|
168858
168858
|
var send = require_send();
|
|
168859
168859
|
var url3 = __require("url");
|
|
168860
168860
|
module.exports = serveStatic;
|
|
@@ -168873,7 +168873,7 @@ var require_serve_static = __commonJS(function(exports, module) {
|
|
|
168873
168873
|
throw new TypeError("option setHeaders must be function");
|
|
168874
168874
|
}
|
|
168875
168875
|
opts.maxage = opts.maxage || opts.maxAge || 0;
|
|
168876
|
-
opts.root =
|
|
168876
|
+
opts.root = resolve15(root2);
|
|
168877
168877
|
var onDirectory = redirect ? createRedirectDirectoryListener() : createNotFoundDirectoryListener();
|
|
168878
168878
|
return function serveStatic2(req, res, next) {
|
|
168879
168879
|
if (req.method !== "GET" && req.method !== "HEAD") {
|
|
@@ -169797,8 +169797,8 @@ var require_follow_redirects = __commonJS(function(exports, module) {
|
|
|
169797
169797
|
}
|
|
169798
169798
|
return parsed;
|
|
169799
169799
|
}
|
|
169800
|
-
function resolveUrl(
|
|
169801
|
-
return useNativeURL ? new URL2(
|
|
169800
|
+
function resolveUrl(relative5, base) {
|
|
169801
|
+
return useNativeURL ? new URL2(relative5, base) : parseUrl(url3.resolve(base, relative5));
|
|
169802
169802
|
}
|
|
169803
169803
|
function validateUrl(input) {
|
|
169804
169804
|
if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) {
|
|
@@ -172247,8 +172247,8 @@ var require_executor = __commonJS(function(exports, module) {
|
|
|
172247
172247
|
}
|
|
172248
172248
|
resetBuffer() {
|
|
172249
172249
|
this.buffer = new Waterfall;
|
|
172250
|
-
this.buffer.chain(new Promise((
|
|
172251
|
-
this._triggerBuffer =
|
|
172250
|
+
this.buffer.chain(new Promise((resolve15) => {
|
|
172251
|
+
this._triggerBuffer = resolve15;
|
|
172252
172252
|
}));
|
|
172253
172253
|
if (this.ready)
|
|
172254
172254
|
this._triggerBuffer();
|
|
@@ -173268,7 +173268,7 @@ var require_storage = __commonJS(function(exports, module) {
|
|
|
173268
173268
|
throw e8;
|
|
173269
173269
|
}
|
|
173270
173270
|
};
|
|
173271
|
-
var writeFileLinesAsync = (filename, lines, mode = DEFAULT_FILE_MODE) => new Promise((
|
|
173271
|
+
var writeFileLinesAsync = (filename, lines, mode = DEFAULT_FILE_MODE) => new Promise((resolve15, reject) => {
|
|
173272
173272
|
try {
|
|
173273
173273
|
const stream = writeFileStream(filename, { mode });
|
|
173274
173274
|
const readable2 = Readable6.from(lines);
|
|
@@ -173285,7 +173285,7 @@ var require_storage = __commonJS(function(exports, module) {
|
|
|
173285
173285
|
if (err)
|
|
173286
173286
|
reject(err);
|
|
173287
173287
|
else
|
|
173288
|
-
|
|
173288
|
+
resolve15();
|
|
173289
173289
|
});
|
|
173290
173290
|
});
|
|
173291
173291
|
readable2.on("error", (err) => {
|
|
@@ -173456,7 +173456,7 @@ var require_persistence = __commonJS(function(exports, module) {
|
|
|
173456
173456
|
return { data: tdata, indexes };
|
|
173457
173457
|
}
|
|
173458
173458
|
treatRawStreamAsync(rawStream) {
|
|
173459
|
-
return new Promise((
|
|
173459
|
+
return new Promise((resolve15, reject) => {
|
|
173460
173460
|
const dataById = {};
|
|
173461
173461
|
const indexes = {};
|
|
173462
173462
|
let corruptItems = 0;
|
|
@@ -173499,7 +173499,7 @@ var require_persistence = __commonJS(function(exports, module) {
|
|
|
173499
173499
|
}
|
|
173500
173500
|
}
|
|
173501
173501
|
const data = Object.values(dataById);
|
|
173502
|
-
|
|
173502
|
+
resolve15({ data, indexes });
|
|
173503
173503
|
});
|
|
173504
173504
|
lineStream.on("error", function(err) {
|
|
173505
173505
|
reject(err, null);
|
|
@@ -183032,7 +183032,7 @@ var require_mime_types2 = __commonJS(function(exports) {
|
|
|
183032
183032
|
* MIT Licensed
|
|
183033
183033
|
*/
|
|
183034
183034
|
var db2 = require_db2();
|
|
183035
|
-
var
|
|
183035
|
+
var extname3 = __require("path").extname;
|
|
183036
183036
|
var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
|
|
183037
183037
|
var TEXT_TYPE_REGEXP = /^text\//i;
|
|
183038
183038
|
exports.charset = charset;
|
|
@@ -183087,7 +183087,7 @@ var require_mime_types2 = __commonJS(function(exports) {
|
|
|
183087
183087
|
if (!path18 || typeof path18 !== "string") {
|
|
183088
183088
|
return false;
|
|
183089
183089
|
}
|
|
183090
|
-
var extension2 =
|
|
183090
|
+
var extension2 = extname3("x." + path18).toLowerCase().substr(1);
|
|
183091
183091
|
if (!extension2) {
|
|
183092
183092
|
return false;
|
|
183093
183093
|
}
|
|
@@ -193079,7 +193079,7 @@ var require_mime_types3 = __commonJS(function(exports) {
|
|
|
193079
193079
|
* MIT Licensed
|
|
193080
193080
|
*/
|
|
193081
193081
|
var db2 = require_db3();
|
|
193082
|
-
var
|
|
193082
|
+
var extname3 = __require("path").extname;
|
|
193083
193083
|
var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
|
|
193084
193084
|
var TEXT_TYPE_REGEXP = /^text\//i;
|
|
193085
193085
|
exports.charset = charset;
|
|
@@ -193134,7 +193134,7 @@ var require_mime_types3 = __commonJS(function(exports) {
|
|
|
193134
193134
|
if (!path18 || typeof path18 !== "string") {
|
|
193135
193135
|
return false;
|
|
193136
193136
|
}
|
|
193137
|
-
var extension2 =
|
|
193137
|
+
var extension2 = extname3("x." + path18).toLowerCase().substr(1);
|
|
193138
193138
|
if (!extension2) {
|
|
193139
193139
|
return false;
|
|
193140
193140
|
}
|
|
@@ -199110,13 +199110,13 @@ var require_broadcast_operator = __commonJS(function(exports) {
|
|
|
199110
199110
|
return true;
|
|
199111
199111
|
}
|
|
199112
199112
|
emitWithAck(ev2, ...args) {
|
|
199113
|
-
return new Promise((
|
|
199113
|
+
return new Promise((resolve15, reject) => {
|
|
199114
199114
|
args.push((err, responses) => {
|
|
199115
199115
|
if (err) {
|
|
199116
199116
|
err.responses = responses;
|
|
199117
199117
|
return reject(err);
|
|
199118
199118
|
} else {
|
|
199119
|
-
return
|
|
199119
|
+
return resolve15(responses);
|
|
199120
199120
|
}
|
|
199121
199121
|
});
|
|
199122
199122
|
this.emit(ev2, ...args);
|
|
@@ -199304,12 +199304,12 @@ var require_socket2 = __commonJS(function(exports) {
|
|
|
199304
199304
|
}
|
|
199305
199305
|
emitWithAck(ev2, ...args) {
|
|
199306
199306
|
const withErr = this.flags.timeout !== undefined;
|
|
199307
|
-
return new Promise((
|
|
199307
|
+
return new Promise((resolve15, reject) => {
|
|
199308
199308
|
args.push((arg1, arg2) => {
|
|
199309
199309
|
if (withErr) {
|
|
199310
|
-
return arg1 ? reject(arg1) :
|
|
199310
|
+
return arg1 ? reject(arg1) : resolve15(arg2);
|
|
199311
199311
|
} else {
|
|
199312
|
-
return
|
|
199312
|
+
return resolve15(arg1);
|
|
199313
199313
|
}
|
|
199314
199314
|
});
|
|
199315
199315
|
this.emit(ev2, ...args);
|
|
@@ -199764,13 +199764,13 @@ var require_namespace = __commonJS(function(exports) {
|
|
|
199764
199764
|
return true;
|
|
199765
199765
|
}
|
|
199766
199766
|
serverSideEmitWithAck(ev2, ...args) {
|
|
199767
|
-
return new Promise((
|
|
199767
|
+
return new Promise((resolve15, reject) => {
|
|
199768
199768
|
args.push((err, responses) => {
|
|
199769
199769
|
if (err) {
|
|
199770
199770
|
err.responses = responses;
|
|
199771
199771
|
return reject(err);
|
|
199772
199772
|
} else {
|
|
199773
|
-
return
|
|
199773
|
+
return resolve15(responses);
|
|
199774
199774
|
}
|
|
199775
199775
|
});
|
|
199776
199776
|
this.serverSideEmit(ev2, ...args);
|
|
@@ -203305,7 +203305,7 @@ var require_cluster_adapter = __commonJS(function(exports) {
|
|
|
203305
203305
|
return localSockets;
|
|
203306
203306
|
}
|
|
203307
203307
|
const requestId = randomId();
|
|
203308
|
-
return new Promise((
|
|
203308
|
+
return new Promise((resolve15, reject) => {
|
|
203309
203309
|
const timeout3 = setTimeout(() => {
|
|
203310
203310
|
const storedRequest2 = this.requests.get(requestId);
|
|
203311
203311
|
if (storedRequest2) {
|
|
@@ -203315,7 +203315,7 @@ var require_cluster_adapter = __commonJS(function(exports) {
|
|
|
203315
203315
|
}, opts.flags.timeout || DEFAULT_TIMEOUT);
|
|
203316
203316
|
const storedRequest = {
|
|
203317
203317
|
type: MessageType.FETCH_SOCKETS,
|
|
203318
|
-
resolve:
|
|
203318
|
+
resolve: resolve15,
|
|
203319
203319
|
timeout: timeout3,
|
|
203320
203320
|
current: 0,
|
|
203321
203321
|
expected: expectedResponseCount,
|
|
@@ -203525,7 +203525,7 @@ var require_cluster_adapter = __commonJS(function(exports) {
|
|
|
203525
203525
|
return localSockets;
|
|
203526
203526
|
}
|
|
203527
203527
|
const requestId = randomId();
|
|
203528
|
-
return new Promise((
|
|
203528
|
+
return new Promise((resolve15, reject) => {
|
|
203529
203529
|
const timeout3 = setTimeout(() => {
|
|
203530
203530
|
const storedRequest2 = this.customRequests.get(requestId);
|
|
203531
203531
|
if (storedRequest2) {
|
|
@@ -203535,7 +203535,7 @@ var require_cluster_adapter = __commonJS(function(exports) {
|
|
|
203535
203535
|
}, opts.flags.timeout || DEFAULT_TIMEOUT);
|
|
203536
203536
|
const storedRequest = {
|
|
203537
203537
|
type: MessageType.FETCH_SOCKETS,
|
|
203538
|
-
resolve:
|
|
203538
|
+
resolve: resolve15,
|
|
203539
203539
|
timeout: timeout3,
|
|
203540
203540
|
missingUids: new Set([...this.nodesMap.keys()]),
|
|
203541
203541
|
responses: localSockets
|
|
@@ -204264,13 +204264,13 @@ var require_dist4 = __commonJS(function(exports, module) {
|
|
|
204264
204264
|
this.engine.close();
|
|
204265
204265
|
(0, uws_1.restoreAdapter)();
|
|
204266
204266
|
if (this.httpServer) {
|
|
204267
|
-
return new Promise((
|
|
204267
|
+
return new Promise((resolve15) => {
|
|
204268
204268
|
this.httpServer.close((err) => {
|
|
204269
204269
|
fn9 && fn9(err);
|
|
204270
204270
|
if (err) {
|
|
204271
204271
|
debug("server was not running");
|
|
204272
204272
|
}
|
|
204273
|
-
|
|
204273
|
+
resolve15();
|
|
204274
204274
|
});
|
|
204275
204275
|
});
|
|
204276
204276
|
} else {
|
|
@@ -213006,7 +213006,7 @@ var require_mime_types4 = __commonJS(function(exports) {
|
|
|
213006
213006
|
* MIT Licensed
|
|
213007
213007
|
*/
|
|
213008
213008
|
var db2 = require_db4();
|
|
213009
|
-
var
|
|
213009
|
+
var extname3 = __require("path").extname;
|
|
213010
213010
|
var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
|
|
213011
213011
|
var TEXT_TYPE_REGEXP = /^text\//i;
|
|
213012
213012
|
exports.charset = charset;
|
|
@@ -213061,7 +213061,7 @@ var require_mime_types4 = __commonJS(function(exports) {
|
|
|
213061
213061
|
if (!path18 || typeof path18 !== "string") {
|
|
213062
213062
|
return false;
|
|
213063
213063
|
}
|
|
213064
|
-
var extension2 =
|
|
213064
|
+
var extension2 = extname3("x." + path18).toLowerCase().substr(1);
|
|
213065
213065
|
if (!extension2) {
|
|
213066
213066
|
return false;
|
|
213067
213067
|
}
|
|
@@ -217393,8 +217393,8 @@ var require_mkdirp = __commonJS(function(exports, module) {
|
|
|
217393
217393
|
});
|
|
217394
217394
|
break;
|
|
217395
217395
|
default:
|
|
217396
|
-
xfs.stat(p4, function(er22,
|
|
217397
|
-
if (er22 || !
|
|
217396
|
+
xfs.stat(p4, function(er22, stat4) {
|
|
217397
|
+
if (er22 || !stat4.isDirectory())
|
|
217398
217398
|
cb2(er10, made);
|
|
217399
217399
|
else
|
|
217400
217400
|
cb2(null, made);
|
|
@@ -217425,13 +217425,13 @@ var require_mkdirp = __commonJS(function(exports, module) {
|
|
|
217425
217425
|
sync(p4, opts, made);
|
|
217426
217426
|
break;
|
|
217427
217427
|
default:
|
|
217428
|
-
var
|
|
217428
|
+
var stat4;
|
|
217429
217429
|
try {
|
|
217430
|
-
|
|
217430
|
+
stat4 = xfs.statSync(p4);
|
|
217431
217431
|
} catch (err1) {
|
|
217432
217432
|
throw err0;
|
|
217433
217433
|
}
|
|
217434
|
-
if (!
|
|
217434
|
+
if (!stat4.isDirectory())
|
|
217435
217435
|
throw err0;
|
|
217436
217436
|
break;
|
|
217437
217437
|
}
|
|
@@ -217634,7 +217634,7 @@ var require_buffer_list = __commonJS(function(exports, module) {
|
|
|
217634
217634
|
}
|
|
217635
217635
|
}, {
|
|
217636
217636
|
key: "join",
|
|
217637
|
-
value: function
|
|
217637
|
+
value: function join33(s5) {
|
|
217638
217638
|
if (this.length === 0)
|
|
217639
217639
|
return "";
|
|
217640
217640
|
var p4 = this.head;
|
|
@@ -218932,14 +218932,14 @@ var require_async_iterator = __commonJS(function(exports, module) {
|
|
|
218932
218932
|
};
|
|
218933
218933
|
}
|
|
218934
218934
|
function readAndResolve(iter) {
|
|
218935
|
-
var
|
|
218936
|
-
if (
|
|
218935
|
+
var resolve15 = iter[kLastResolve];
|
|
218936
|
+
if (resolve15 !== null) {
|
|
218937
218937
|
var data = iter[kStream].read();
|
|
218938
218938
|
if (data !== null) {
|
|
218939
218939
|
iter[kLastPromise] = null;
|
|
218940
218940
|
iter[kLastResolve] = null;
|
|
218941
218941
|
iter[kLastReject] = null;
|
|
218942
|
-
|
|
218942
|
+
resolve15(createIterResult(data, false));
|
|
218943
218943
|
}
|
|
218944
218944
|
}
|
|
218945
218945
|
}
|
|
@@ -218947,13 +218947,13 @@ var require_async_iterator = __commonJS(function(exports, module) {
|
|
|
218947
218947
|
process.nextTick(readAndResolve, iter);
|
|
218948
218948
|
}
|
|
218949
218949
|
function wrapForNext(lastPromise, iter) {
|
|
218950
|
-
return function(
|
|
218950
|
+
return function(resolve15, reject) {
|
|
218951
218951
|
lastPromise.then(function() {
|
|
218952
218952
|
if (iter[kEnded]) {
|
|
218953
|
-
|
|
218953
|
+
resolve15(createIterResult(undefined, true));
|
|
218954
218954
|
return;
|
|
218955
218955
|
}
|
|
218956
|
-
iter[kHandlePromise](
|
|
218956
|
+
iter[kHandlePromise](resolve15, reject);
|
|
218957
218957
|
}, reject);
|
|
218958
218958
|
};
|
|
218959
218959
|
}
|
|
@@ -218972,12 +218972,12 @@ var require_async_iterator = __commonJS(function(exports, module) {
|
|
|
218972
218972
|
return Promise.resolve(createIterResult(undefined, true));
|
|
218973
218973
|
}
|
|
218974
218974
|
if (this[kStream].destroyed) {
|
|
218975
|
-
return new Promise(function(
|
|
218975
|
+
return new Promise(function(resolve15, reject) {
|
|
218976
218976
|
process.nextTick(function() {
|
|
218977
218977
|
if (_this[kError]) {
|
|
218978
218978
|
reject(_this[kError]);
|
|
218979
218979
|
} else {
|
|
218980
|
-
|
|
218980
|
+
resolve15(createIterResult(undefined, true));
|
|
218981
218981
|
}
|
|
218982
218982
|
});
|
|
218983
218983
|
});
|
|
@@ -219000,13 +219000,13 @@ var require_async_iterator = __commonJS(function(exports, module) {
|
|
|
219000
219000
|
return this;
|
|
219001
219001
|
}), _defineProperty(_Object$setPrototypeO, "return", function _return() {
|
|
219002
219002
|
var _this2 = this;
|
|
219003
|
-
return new Promise(function(
|
|
219003
|
+
return new Promise(function(resolve15, reject) {
|
|
219004
219004
|
_this2[kStream].destroy(null, function(err) {
|
|
219005
219005
|
if (err) {
|
|
219006
219006
|
reject(err);
|
|
219007
219007
|
return;
|
|
219008
219008
|
}
|
|
219009
|
-
|
|
219009
|
+
resolve15(createIterResult(undefined, true));
|
|
219010
219010
|
});
|
|
219011
219011
|
});
|
|
219012
219012
|
}), _Object$setPrototypeO), AsyncIteratorPrototype);
|
|
@@ -219028,15 +219028,15 @@ var require_async_iterator = __commonJS(function(exports, module) {
|
|
|
219028
219028
|
value: stream._readableState.endEmitted,
|
|
219029
219029
|
writable: true
|
|
219030
219030
|
}), _defineProperty(_Object$create, kHandlePromise, {
|
|
219031
|
-
value: function value(
|
|
219031
|
+
value: function value(resolve15, reject) {
|
|
219032
219032
|
var data = iterator[kStream].read();
|
|
219033
219033
|
if (data) {
|
|
219034
219034
|
iterator[kLastPromise] = null;
|
|
219035
219035
|
iterator[kLastResolve] = null;
|
|
219036
219036
|
iterator[kLastReject] = null;
|
|
219037
|
-
|
|
219037
|
+
resolve15(createIterResult(data, false));
|
|
219038
219038
|
} else {
|
|
219039
|
-
iterator[kLastResolve] =
|
|
219039
|
+
iterator[kLastResolve] = resolve15;
|
|
219040
219040
|
iterator[kLastReject] = reject;
|
|
219041
219041
|
}
|
|
219042
219042
|
},
|
|
@@ -219055,12 +219055,12 @@ var require_async_iterator = __commonJS(function(exports, module) {
|
|
|
219055
219055
|
iterator[kError] = err;
|
|
219056
219056
|
return;
|
|
219057
219057
|
}
|
|
219058
|
-
var
|
|
219059
|
-
if (
|
|
219058
|
+
var resolve15 = iterator[kLastResolve];
|
|
219059
|
+
if (resolve15 !== null) {
|
|
219060
219060
|
iterator[kLastPromise] = null;
|
|
219061
219061
|
iterator[kLastResolve] = null;
|
|
219062
219062
|
iterator[kLastReject] = null;
|
|
219063
|
-
|
|
219063
|
+
resolve15(createIterResult(undefined, true));
|
|
219064
219064
|
}
|
|
219065
219065
|
iterator[kEnded] = true;
|
|
219066
219066
|
});
|
|
@@ -219072,7 +219072,7 @@ var require_async_iterator = __commonJS(function(exports, module) {
|
|
|
219072
219072
|
|
|
219073
219073
|
// ../../node_modules/readable-stream/lib/internal/streams/from.js
|
|
219074
219074
|
var require_from = __commonJS(function(exports, module) {
|
|
219075
|
-
function asyncGeneratorStep(gen,
|
|
219075
|
+
function asyncGeneratorStep(gen, resolve15, reject, _next, _throw, key2, arg) {
|
|
219076
219076
|
try {
|
|
219077
219077
|
var info = gen[key2](arg);
|
|
219078
219078
|
var value = info.value;
|
|
@@ -219081,7 +219081,7 @@ var require_from = __commonJS(function(exports, module) {
|
|
|
219081
219081
|
return;
|
|
219082
219082
|
}
|
|
219083
219083
|
if (info.done) {
|
|
219084
|
-
|
|
219084
|
+
resolve15(value);
|
|
219085
219085
|
} else {
|
|
219086
219086
|
Promise.resolve(value).then(_next, _throw);
|
|
219087
219087
|
}
|
|
@@ -219089,13 +219089,13 @@ var require_from = __commonJS(function(exports, module) {
|
|
|
219089
219089
|
function _asyncToGenerator(fn9) {
|
|
219090
219090
|
return function() {
|
|
219091
219091
|
var self2 = this, args = arguments;
|
|
219092
|
-
return new Promise(function(
|
|
219092
|
+
return new Promise(function(resolve15, reject) {
|
|
219093
219093
|
var gen = fn9.apply(self2, args);
|
|
219094
219094
|
function _next(value) {
|
|
219095
|
-
asyncGeneratorStep(gen,
|
|
219095
|
+
asyncGeneratorStep(gen, resolve15, reject, _next, _throw, "next", value);
|
|
219096
219096
|
}
|
|
219097
219097
|
function _throw(err) {
|
|
219098
|
-
asyncGeneratorStep(gen,
|
|
219098
|
+
asyncGeneratorStep(gen, resolve15, reject, _next, _throw, "throw", err);
|
|
219099
219099
|
}
|
|
219100
219100
|
_next(undefined);
|
|
219101
219101
|
});
|
|
@@ -221222,7 +221222,7 @@ var require_dist5 = __commonJS(function(exports, module) {
|
|
|
221222
221222
|
determineAgent: () => determineAgent
|
|
221223
221223
|
});
|
|
221224
221224
|
module.exports = __toCommonJS2(src_exports);
|
|
221225
|
-
var
|
|
221225
|
+
var import_promises26 = __require("node:fs/promises");
|
|
221226
221226
|
var import_node_fs24 = __require("node:fs");
|
|
221227
221227
|
var DEVIN_LOCAL_PATH = "/opt/.devin";
|
|
221228
221228
|
var CURSOR2 = "cursor";
|
|
@@ -221280,7 +221280,7 @@ var require_dist5 = __commonJS(function(exports, module) {
|
|
|
221280
221280
|
return { isAgent: true, agent: { name: REPLIT } };
|
|
221281
221281
|
}
|
|
221282
221282
|
try {
|
|
221283
|
-
await (0,
|
|
221283
|
+
await (0, import_promises26.access)(DEVIN_LOCAL_PATH, import_node_fs24.constants.F_OK);
|
|
221284
221284
|
return { isAgent: true, agent: { name: DEVIN } };
|
|
221285
221285
|
} catch (error48) {}
|
|
221286
221286
|
return { isAgent: false, agent: undefined };
|
|
@@ -237842,7 +237842,7 @@ function normalizeBase44Env() {
|
|
|
237842
237842
|
loadProjectEnvFiles();
|
|
237843
237843
|
|
|
237844
237844
|
// src/cli/index.ts
|
|
237845
|
-
import { dirname as
|
|
237845
|
+
import { dirname as dirname26, join as join37 } from "node:path";
|
|
237846
237846
|
import { fileURLToPath as fileURLToPath6 } from "node:url";
|
|
237847
237847
|
|
|
237848
237848
|
// ../../node_modules/@clack/core/dist/index.mjs
|
|
@@ -238926,7 +238926,7 @@ var {
|
|
|
238926
238926
|
} = import__.default;
|
|
238927
238927
|
|
|
238928
238928
|
// src/cli/commands/agent-skills/pull.ts
|
|
238929
|
-
import { dirname as
|
|
238929
|
+
import { dirname as dirname11, join as join18 } from "node:path";
|
|
238930
238930
|
// ../../node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
238931
238931
|
var ANSI_BACKGROUND_OFFSET = 10;
|
|
238932
238932
|
var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
|
|
@@ -245542,19 +245542,27 @@ var PublishedUrlResponseSchema = exports_external.object({
|
|
|
245542
245542
|
var CreateDeploymentResponseSchema = exports_external.object({
|
|
245543
245543
|
deployment_id: exports_external.string(),
|
|
245544
245544
|
session_id: exports_external.string(),
|
|
245545
|
-
asset_uploads: exports_external.
|
|
245546
|
-
|
|
245547
|
-
|
|
245548
|
-
|
|
245549
|
-
|
|
245550
|
-
|
|
245551
|
-
|
|
245552
|
-
|
|
245553
|
-
|
|
245545
|
+
asset_uploads: exports_external.discriminatedUnion("type", [
|
|
245546
|
+
exports_external.object({
|
|
245547
|
+
type: exports_external.literal("cf"),
|
|
245548
|
+
url: exports_external.string(),
|
|
245549
|
+
jwt: exports_external.string(),
|
|
245550
|
+
buckets: exports_external.array(exports_external.array(exports_external.string()))
|
|
245551
|
+
}),
|
|
245552
|
+
exports_external.object({
|
|
245553
|
+
type: exports_external.literal("s3"),
|
|
245554
|
+
uploads: exports_external.array(exports_external.object({
|
|
245555
|
+
path: exports_external.string(),
|
|
245556
|
+
content_type: exports_external.string(),
|
|
245557
|
+
content_length: exports_external.number(),
|
|
245558
|
+
url: exports_external.string()
|
|
245559
|
+
}))
|
|
245560
|
+
})
|
|
245561
|
+
]).nullable().optional()
|
|
245554
245562
|
}).transform((data) => ({
|
|
245555
245563
|
deploymentId: data.deployment_id,
|
|
245556
245564
|
sessionId: data.session_id,
|
|
245557
|
-
assetUploads: data.asset_uploads == null ? null : {
|
|
245565
|
+
assetUploads: data.asset_uploads == null ? null : data.asset_uploads.type === "cf" ? data.asset_uploads : {
|
|
245558
245566
|
type: "s3",
|
|
245559
245567
|
uploads: data.asset_uploads.uploads.map((upload) => ({
|
|
245560
245568
|
path: upload.path,
|
|
@@ -245564,6 +245572,9 @@ var CreateDeploymentResponseSchema = exports_external.object({
|
|
|
245564
245572
|
}))
|
|
245565
245573
|
}
|
|
245566
245574
|
}));
|
|
245575
|
+
var AssetUploadResponseSchema = exports_external.looseObject({
|
|
245576
|
+
result: exports_external.looseObject({ jwt: exports_external.string().nullable().optional() }).nullable().optional()
|
|
245577
|
+
});
|
|
245567
245578
|
var FinalizeDeploymentResponseSchema = exports_external.object({
|
|
245568
245579
|
deployment_id: exports_external.string()
|
|
245569
245580
|
}).transform((data) => ({
|
|
@@ -247927,7 +247938,7 @@ import { join as join12 } from "node:path";
|
|
|
247927
247938
|
// package.json
|
|
247928
247939
|
var package_default = {
|
|
247929
247940
|
name: "base44",
|
|
247930
|
-
version: "0.1.
|
|
247941
|
+
version: "0.1.12",
|
|
247931
247942
|
description: "Base44 CLI - Unified interface for managing Base44 applications",
|
|
247932
247943
|
type: "module",
|
|
247933
247944
|
bin: {
|
|
@@ -248152,7 +248163,7 @@ async function createProjectFilesForExistingProject(options) {
|
|
|
248152
248163
|
};
|
|
248153
248164
|
}
|
|
248154
248165
|
// src/core/project/deploy.ts
|
|
248155
|
-
import { resolve as
|
|
248166
|
+
import { resolve as resolve6 } from "node:path";
|
|
248156
248167
|
|
|
248157
248168
|
// src/core/site/api.ts
|
|
248158
248169
|
async function uploadSite(archivePath) {
|
|
@@ -248176,6 +248187,13 @@ async function uploadSite(archivePath) {
|
|
|
248176
248187
|
}
|
|
248177
248188
|
return result.data;
|
|
248178
248189
|
}
|
|
248190
|
+
var MODULE_CONTENT_TYPES = {
|
|
248191
|
+
esm: "application/javascript+module",
|
|
248192
|
+
sourcemap: "application/source-map",
|
|
248193
|
+
wasm: "application/wasm",
|
|
248194
|
+
text: "text/plain",
|
|
248195
|
+
data: "application/octet-stream"
|
|
248196
|
+
};
|
|
248179
248197
|
async function createDeployment(request) {
|
|
248180
248198
|
const appClient = getAppClient();
|
|
248181
248199
|
let response;
|
|
@@ -248193,6 +248211,17 @@ async function createDeployment(request) {
|
|
|
248193
248211
|
}
|
|
248194
248212
|
return result.data;
|
|
248195
248213
|
}
|
|
248214
|
+
async function finalizeDeployment(deploymentId, completionJwt, modules, sessionId) {
|
|
248215
|
+
const formData = new FormData;
|
|
248216
|
+
formData.append("payload", JSON.stringify({ completion_jwt: completionJwt }));
|
|
248217
|
+
for (const module of modules) {
|
|
248218
|
+
const content = await readFile(module.absolutePath);
|
|
248219
|
+
formData.append(module.name, new File([new Uint8Array(content)], module.name, {
|
|
248220
|
+
type: MODULE_CONTENT_TYPES[module.type]
|
|
248221
|
+
}));
|
|
248222
|
+
}
|
|
248223
|
+
return await postFinalize(deploymentId, formData, sessionId);
|
|
248224
|
+
}
|
|
248196
248225
|
async function finalizeStaticDeployment(deploymentId, indexHtml, sessionId) {
|
|
248197
248226
|
const formData = new FormData;
|
|
248198
248227
|
formData.append("index.html", new File([indexHtml], "index.html", { type: "text/html" }));
|
|
@@ -248263,10 +248292,17 @@ async function createArchive(pathToArchive, targetArchivePath) {
|
|
|
248263
248292
|
cwd: pathToArchive
|
|
248264
248293
|
}, ["."]);
|
|
248265
248294
|
}
|
|
248295
|
+
// src/core/site/deploy-app.ts
|
|
248296
|
+
import { resolve as resolve4 } from "node:path";
|
|
248297
|
+
|
|
248298
|
+
// src/core/site/static-site.ts
|
|
248299
|
+
import { readFile as readFile4 } from "node:fs/promises";
|
|
248300
|
+
import { join as join16 } from "node:path";
|
|
248301
|
+
|
|
248266
248302
|
// src/core/site/manifest.ts
|
|
248267
248303
|
import { createHash } from "node:crypto";
|
|
248268
248304
|
import { readFile as readFile2, stat } from "node:fs/promises";
|
|
248269
|
-
import { basename as basename4, join as join15 } from "node:path";
|
|
248305
|
+
import { basename as basename4, extname, join as join15 } from "node:path";
|
|
248270
248306
|
var MAX_ASSET_SIZE_BYTES = 25 * 1024 * 1024;
|
|
248271
248307
|
var MAX_ASSET_COUNT = 1e5;
|
|
248272
248308
|
var ASSETS_IGNORE_FILE = ".assetsignore";
|
|
@@ -248275,6 +248311,39 @@ var ALWAYS_IGNORED = new Set([
|
|
|
248275
248311
|
"wrangler.json",
|
|
248276
248312
|
".dev.vars"
|
|
248277
248313
|
]);
|
|
248314
|
+
var MIME_TYPES = {
|
|
248315
|
+
".html": "text/html",
|
|
248316
|
+
".htm": "text/html",
|
|
248317
|
+
".css": "text/css",
|
|
248318
|
+
".js": "text/javascript",
|
|
248319
|
+
".mjs": "text/javascript",
|
|
248320
|
+
".json": "application/json",
|
|
248321
|
+
".map": "application/json",
|
|
248322
|
+
".txt": "text/plain",
|
|
248323
|
+
".xml": "application/xml",
|
|
248324
|
+
".svg": "image/svg+xml",
|
|
248325
|
+
".png": "image/png",
|
|
248326
|
+
".jpg": "image/jpeg",
|
|
248327
|
+
".jpeg": "image/jpeg",
|
|
248328
|
+
".gif": "image/gif",
|
|
248329
|
+
".webp": "image/webp",
|
|
248330
|
+
".avif": "image/avif",
|
|
248331
|
+
".ico": "image/x-icon",
|
|
248332
|
+
".woff": "font/woff",
|
|
248333
|
+
".woff2": "font/woff2",
|
|
248334
|
+
".ttf": "font/ttf",
|
|
248335
|
+
".otf": "font/otf",
|
|
248336
|
+
".eot": "application/vnd.ms-fontobject",
|
|
248337
|
+
".mp3": "audio/mpeg",
|
|
248338
|
+
".mp4": "video/mp4",
|
|
248339
|
+
".webm": "video/webm",
|
|
248340
|
+
".pdf": "application/pdf",
|
|
248341
|
+
".wasm": "application/wasm",
|
|
248342
|
+
".webmanifest": "application/manifest+json"
|
|
248343
|
+
};
|
|
248344
|
+
function getAssetContentType(filePath) {
|
|
248345
|
+
return MIME_TYPES[extname(filePath).toLowerCase()] ?? "application/octet-stream";
|
|
248346
|
+
}
|
|
248278
248347
|
function hashAsset(appId, content) {
|
|
248279
248348
|
return createHash("sha256").update(Buffer.from(appId, "utf8")).update(content).digest("hex").slice(0, 32);
|
|
248280
248349
|
}
|
|
@@ -248302,14 +248371,16 @@ async function buildAssetManifest(assetsDir, appId) {
|
|
|
248302
248371
|
const hash2 = hashAsset(appId, content);
|
|
248303
248372
|
manifest[`/${relativePath}`] = { hash: hash2, size };
|
|
248304
248373
|
if (!filesByHash.has(hash2)) {
|
|
248305
|
-
filesByHash.set(hash2, {
|
|
248374
|
+
filesByHash.set(hash2, {
|
|
248375
|
+
absolutePath,
|
|
248376
|
+
hash: hash2,
|
|
248377
|
+
size,
|
|
248378
|
+
contentType: getAssetContentType(absolutePath)
|
|
248379
|
+
});
|
|
248306
248380
|
}
|
|
248307
248381
|
}
|
|
248308
248382
|
return { manifest, filesByHash };
|
|
248309
248383
|
}
|
|
248310
|
-
// src/core/site/static-site.ts
|
|
248311
|
-
import { readFile as readFile4 } from "node:fs/promises";
|
|
248312
|
-
import { join as join16 } from "node:path";
|
|
248313
248384
|
|
|
248314
248385
|
// src/core/site/upload.ts
|
|
248315
248386
|
import { readFile as readFile3 } from "node:fs/promises";
|
|
@@ -248443,6 +248514,62 @@ var DEFAULT_UPLOAD_CONCURRENCY = 3;
|
|
|
248443
248514
|
var MAX_UPLOAD_CONCURRENCY = 50;
|
|
248444
248515
|
var MAX_UPLOAD_ATTEMPTS = 3;
|
|
248445
248516
|
var RETRY_BASE_DELAY_MS = 500;
|
|
248517
|
+
var UPLOAD_RETRY = {
|
|
248518
|
+
limit: MAX_UPLOAD_ATTEMPTS - 1,
|
|
248519
|
+
delay: (attempt) => RETRY_BASE_DELAY_MS * 2 ** (attempt - 1)
|
|
248520
|
+
};
|
|
248521
|
+
async function uploadAssetBuckets(target, filesByHash, options = {}) {
|
|
248522
|
+
const { concurrency = DEFAULT_UPLOAD_CONCURRENCY, onProgress } = options;
|
|
248523
|
+
const { buckets } = target;
|
|
248524
|
+
const totalFiles = buckets.reduce((sum, bucket) => sum + bucket.length, 0);
|
|
248525
|
+
let uploadedFiles = 0;
|
|
248526
|
+
let completionJwt = null;
|
|
248527
|
+
await pMap(buckets, async (bucket) => {
|
|
248528
|
+
const jwt3 = await uploadAssetBucket(target, bucket, filesByHash);
|
|
248529
|
+
if (jwt3) {
|
|
248530
|
+
completionJwt = jwt3;
|
|
248531
|
+
}
|
|
248532
|
+
uploadedFiles += bucket.length;
|
|
248533
|
+
onProgress?.({ uploadedFiles, totalFiles });
|
|
248534
|
+
}, { concurrency });
|
|
248535
|
+
if (!completionJwt) {
|
|
248536
|
+
throw new ApiError("Asset upload finished but the server did not return a completion token.");
|
|
248537
|
+
}
|
|
248538
|
+
return completionJwt;
|
|
248539
|
+
}
|
|
248540
|
+
async function uploadAssetBucket(target, bucket, filesByHash) {
|
|
248541
|
+
const formData = await buildBucketForm(bucket, filesByHash);
|
|
248542
|
+
let response;
|
|
248543
|
+
try {
|
|
248544
|
+
response = await distribution_default.post(target.url, {
|
|
248545
|
+
searchParams: { base64: "true" },
|
|
248546
|
+
headers: { Authorization: `Bearer ${target.jwt}` },
|
|
248547
|
+
body: formData,
|
|
248548
|
+
timeout: 120000,
|
|
248549
|
+
retry: { ...UPLOAD_RETRY, methods: ["post"] }
|
|
248550
|
+
});
|
|
248551
|
+
} catch (error48) {
|
|
248552
|
+
if (error48 instanceof HTTPError && (error48.response.status === 401 || error48.response.status === 403)) {
|
|
248553
|
+
throw new ApiError("This deploy's upload session has expired — rerun deploy. Already-uploaded assets are skipped on the next attempt.", { statusCode: error48.response.status, cause: error48 });
|
|
248554
|
+
}
|
|
248555
|
+
throw await ApiError.fromHttpError(error48, "uploading assets to Cloudflare");
|
|
248556
|
+
}
|
|
248557
|
+
const parsed = AssetUploadResponseSchema.safeParse(await response.json());
|
|
248558
|
+
const jwt3 = parsed.success ? parsed.data.result?.jwt : null;
|
|
248559
|
+
return jwt3 || null;
|
|
248560
|
+
}
|
|
248561
|
+
async function buildBucketForm(bucket, filesByHash) {
|
|
248562
|
+
const formData = new FormData;
|
|
248563
|
+
for (const hash2 of bucket) {
|
|
248564
|
+
const file2 = filesByHash.get(hash2);
|
|
248565
|
+
if (!file2) {
|
|
248566
|
+
throw new InternalError(`Server requested upload of unknown asset hash: ${hash2}`);
|
|
248567
|
+
}
|
|
248568
|
+
const content = await readFile3(file2.absolutePath);
|
|
248569
|
+
formData.append(hash2, new File([content.toString("base64")], hash2, { type: file2.contentType }));
|
|
248570
|
+
}
|
|
248571
|
+
return formData;
|
|
248572
|
+
}
|
|
248446
248573
|
async function uploadPresignedAssets(uploads, assets, options = {}) {
|
|
248447
248574
|
const { concurrency = DEFAULT_UPLOAD_CONCURRENCY, onProgress } = options;
|
|
248448
248575
|
let uploadedFiles = 0;
|
|
@@ -248464,10 +248591,7 @@ async function uploadPresignedAsset(upload, assets) {
|
|
|
248464
248591
|
body: new Uint8Array(content),
|
|
248465
248592
|
headers: { "Content-Type": upload.contentType },
|
|
248466
248593
|
timeout: 120000,
|
|
248467
|
-
retry:
|
|
248468
|
-
limit: MAX_UPLOAD_ATTEMPTS - 1,
|
|
248469
|
-
delay: (attempt) => RETRY_BASE_DELAY_MS * 2 ** (attempt - 1)
|
|
248470
|
-
}
|
|
248594
|
+
retry: UPLOAD_RETRY
|
|
248471
248595
|
});
|
|
248472
248596
|
} catch (error48) {
|
|
248473
248597
|
throw await ApiError.fromHttpError(error48, "uploading static assets");
|
|
@@ -248475,6 +248599,11 @@ async function uploadPresignedAsset(upload, assets) {
|
|
|
248475
248599
|
}
|
|
248476
248600
|
|
|
248477
248601
|
// src/core/site/static-site.ts
|
|
248602
|
+
var STATIC_DEPLOYMENTS_ENV = "BASE44_STATIC_DEPLOYMENTS";
|
|
248603
|
+
function staticDeploymentsEnabled(env2 = process.env) {
|
|
248604
|
+
const value = env2[STATIC_DEPLOYMENTS_ENV];
|
|
248605
|
+
return value === "1" || value === "true";
|
|
248606
|
+
}
|
|
248478
248607
|
async function deployStaticSite(options) {
|
|
248479
248608
|
const { outputDir, gitHash, concurrency, progress } = options;
|
|
248480
248609
|
const assets = await buildAssetManifest(outputDir, getAppContext().id);
|
|
@@ -248485,6 +248614,9 @@ async function deployStaticSite(options) {
|
|
|
248485
248614
|
git_hash: gitHash,
|
|
248486
248615
|
asset_manifest: assets.manifest
|
|
248487
248616
|
});
|
|
248617
|
+
if (created.assetUploads && created.assetUploads.type !== "s3") {
|
|
248618
|
+
throw new ApiError(`The server answered a static-site deploy with the "${created.assetUploads.type}" upload target.`);
|
|
248619
|
+
}
|
|
248488
248620
|
progress?.onAssets?.({
|
|
248489
248621
|
totalAssets: Object.keys(assets.manifest).length,
|
|
248490
248622
|
newAssets: created.assetUploads?.uploads.length ?? 0
|
|
@@ -248497,342 +248629,259 @@ async function deployStaticSite(options) {
|
|
|
248497
248629
|
}
|
|
248498
248630
|
const indexHtml = await readFile4(join16(outputDir, "index.html"));
|
|
248499
248631
|
const finalized = await finalizeStaticDeployment(created.deploymentId, new Uint8Array(indexHtml), created.sessionId);
|
|
248500
|
-
return { deploymentId: finalized.deploymentId };
|
|
248501
|
-
}
|
|
248502
|
-
|
|
248503
|
-
|
|
248504
|
-
|
|
248505
|
-
|
|
248506
|
-
|
|
248507
|
-
|
|
248508
|
-
|
|
248509
|
-
|
|
248510
|
-
|
|
248511
|
-
|
|
248512
|
-
|
|
248513
|
-
|
|
248514
|
-
|
|
248515
|
-
|
|
248516
|
-
|
|
248517
|
-
|
|
248518
|
-
|
|
248519
|
-
|
|
248520
|
-
|
|
248521
|
-
|
|
248522
|
-
|
|
248523
|
-
|
|
248524
|
-
|
|
248525
|
-
|
|
248526
|
-
|
|
248527
|
-
|
|
248528
|
-
|
|
248529
|
-
|
|
248530
|
-
|
|
248531
|
-
|
|
248532
|
-
|
|
248533
|
-
|
|
248534
|
-
|
|
248535
|
-
|
|
248632
|
+
return { deploymentId: finalized.deploymentId, gitHash };
|
|
248633
|
+
}
|
|
248634
|
+
|
|
248635
|
+
// src/core/site/wrangler-config.ts
|
|
248636
|
+
import { dirname as dirname10, join as join17, resolve as resolve3 } from "node:path";
|
|
248637
|
+
var WRANGLER_REDIRECT_PATH = join17(".wrangler", "deploy", "config.json");
|
|
248638
|
+
var RedirectConfigSchema = exports_external.looseObject({
|
|
248639
|
+
configPath: exports_external.string().min(1)
|
|
248640
|
+
});
|
|
248641
|
+
var WranglerConfigSchema = exports_external.looseObject({
|
|
248642
|
+
main: exports_external.string().min(1, "wrangler config is missing a 'main' entry module"),
|
|
248643
|
+
no_bundle: exports_external.boolean().optional(),
|
|
248644
|
+
rules: exports_external.array(exports_external.looseObject({ type: exports_external.string(), globs: exports_external.array(exports_external.string()) })).optional(),
|
|
248645
|
+
assets: exports_external.looseObject({
|
|
248646
|
+
directory: exports_external.string().optional(),
|
|
248647
|
+
html_handling: exports_external.string().optional(),
|
|
248648
|
+
not_found_handling: exports_external.string().optional(),
|
|
248649
|
+
run_worker_first: exports_external.union([exports_external.boolean(), exports_external.array(exports_external.string())]).optional(),
|
|
248650
|
+
headers: exports_external.string().optional(),
|
|
248651
|
+
redirects: exports_external.string().optional()
|
|
248652
|
+
}).optional(),
|
|
248653
|
+
compatibility_date: exports_external.string().optional(),
|
|
248654
|
+
compatibility_flags: exports_external.array(exports_external.string()).optional(),
|
|
248655
|
+
vars: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
|
|
248656
|
+
upload_source_maps: exports_external.boolean().optional()
|
|
248657
|
+
});
|
|
248658
|
+
async function detectFullStackArtifact(projectRoot) {
|
|
248659
|
+
const redirectPath = join17(projectRoot, WRANGLER_REDIRECT_PATH);
|
|
248660
|
+
return await pathExists(redirectPath) ? redirectPath : null;
|
|
248661
|
+
}
|
|
248662
|
+
async function resolveWranglerConfig(projectRoot) {
|
|
248663
|
+
const redirectPath = await detectFullStackArtifact(projectRoot);
|
|
248664
|
+
if (!redirectPath) {
|
|
248665
|
+
throw new InvalidInputError("No full-stack build artifact found. Expected a .wrangler/deploy/config.json redirect file.", {
|
|
248666
|
+
hints: [{ message: "Run your framework's build command first" }]
|
|
248667
|
+
});
|
|
248536
248668
|
}
|
|
248537
|
-
await
|
|
248538
|
-
await
|
|
248539
|
-
|
|
248540
|
-
|
|
248541
|
-
|
|
248542
|
-
await agentSkillResource.push(agentSkills);
|
|
248543
|
-
await agentResource.push(agents);
|
|
248544
|
-
await authConfigResource.push(authConfig);
|
|
248545
|
-
const skipConnectorSync = connectors.length === 0 && hasWorkspaceApiKeyAuth();
|
|
248546
|
-
const connectorResults = skipConnectorSync ? [] : (await pushConnectors(connectors)).results;
|
|
248547
|
-
if (project.site?.outputDirectory) {
|
|
248548
|
-
const outputDir = resolve3(project.root, project.site.outputDirectory);
|
|
248549
|
-
const { appUrl } = await deploySite(outputDir);
|
|
248550
|
-
return { appUrl, connectorResults };
|
|
248669
|
+
const configPath = await resolveRedirectedConfigPath(redirectPath);
|
|
248670
|
+
const parsed = await readJsonFile(configPath);
|
|
248671
|
+
const result = WranglerConfigSchema.safeParse(parsed);
|
|
248672
|
+
if (!result.success) {
|
|
248673
|
+
throw new ConfigInvalidError(`Invalid wrangler config: ${exports_external.prettifyError(result.error)}`, configPath);
|
|
248551
248674
|
}
|
|
248552
|
-
|
|
248553
|
-
|
|
248554
|
-
|
|
248555
|
-
var retriedRequests = new WeakSet;
|
|
248556
|
-
async function captureRequestBody(request, options) {
|
|
248557
|
-
if (request.body == null) {
|
|
248558
|
-
return;
|
|
248675
|
+
const config9 = result.data;
|
|
248676
|
+
if (config9.no_bundle !== true) {
|
|
248677
|
+
throw new InvalidInputError("This framework's output requires bundling; not yet supported. Base44 full-stack deploys only support pre-bundled Workers output (no_bundle: true).");
|
|
248559
248678
|
}
|
|
248560
|
-
|
|
248561
|
-
|
|
248562
|
-
|
|
248563
|
-
|
|
248564
|
-
|
|
248679
|
+
const configDir = dirname10(configPath);
|
|
248680
|
+
const assetsDirectory = config9.assets?.directory ? resolve3(configDir, config9.assets.directory) : null;
|
|
248681
|
+
return {
|
|
248682
|
+
configPath,
|
|
248683
|
+
configDir,
|
|
248684
|
+
main: config9.main,
|
|
248685
|
+
assetsDirectory,
|
|
248686
|
+
assetsConfig: config9.assets ? toResolvedAssetsConfig(config9.assets) : null,
|
|
248687
|
+
compatibilityDate: config9.compatibility_date ?? null,
|
|
248688
|
+
compatibilityFlags: config9.compatibility_flags ?? [],
|
|
248689
|
+
vars: config9.vars ?? {},
|
|
248690
|
+
rules: (config9.rules ?? []).map((rule) => ({
|
|
248691
|
+
type: rule.type,
|
|
248692
|
+
globs: rule.globs
|
|
248693
|
+
})),
|
|
248694
|
+
uploadSourceMaps: config9.upload_source_maps ?? false
|
|
248695
|
+
};
|
|
248565
248696
|
}
|
|
248566
|
-
async function
|
|
248567
|
-
|
|
248568
|
-
|
|
248569
|
-
|
|
248570
|
-
|
|
248571
|
-
return;
|
|
248572
|
-
}
|
|
248573
|
-
if (retriedRequests.has(request)) {
|
|
248574
|
-
return;
|
|
248575
|
-
}
|
|
248576
|
-
const newAccessToken = await refreshAndSaveTokens();
|
|
248577
|
-
if (!newAccessToken) {
|
|
248578
|
-
return;
|
|
248697
|
+
async function resolveRedirectedConfigPath(redirectPath) {
|
|
248698
|
+
const parsed = await readJsonFile(redirectPath);
|
|
248699
|
+
const result = RedirectConfigSchema.safeParse(parsed);
|
|
248700
|
+
if (!result.success) {
|
|
248701
|
+
throw new ConfigInvalidError(`Invalid deploy redirect file: ${exports_external.prettifyError(result.error)}`, redirectPath);
|
|
248579
248702
|
}
|
|
248580
|
-
|
|
248581
|
-
|
|
248582
|
-
|
|
248583
|
-
|
|
248584
|
-
|
|
248585
|
-
Authorization: `Bearer ${newAccessToken}`
|
|
248586
|
-
}
|
|
248587
|
-
});
|
|
248588
|
-
}
|
|
248589
|
-
var base44Client = distribution_default.create({
|
|
248590
|
-
prefixUrl: getBase44ApiUrl(),
|
|
248591
|
-
headers: {
|
|
248592
|
-
"User-Agent": "Base44 CLI"
|
|
248593
|
-
},
|
|
248594
|
-
hooks: {
|
|
248595
|
-
beforeRequest: [
|
|
248596
|
-
(request) => {
|
|
248597
|
-
request.headers.set("X-Request-ID", randomUUID2());
|
|
248598
|
-
},
|
|
248599
|
-
captureRequestBody,
|
|
248600
|
-
async (request) => {
|
|
248601
|
-
const workspaceApiKey = getWorkspaceApiKeyFromEnv();
|
|
248602
|
-
if (workspaceApiKey && isWorkspaceApiKey(workspaceApiKey)) {
|
|
248603
|
-
request.headers.set("api_key", workspaceApiKey);
|
|
248604
|
-
return;
|
|
248605
|
-
}
|
|
248606
|
-
try {
|
|
248607
|
-
const auth = await readAuth();
|
|
248608
|
-
if (isTokenExpired(auth)) {
|
|
248609
|
-
const newAccessToken = await refreshAndSaveTokens();
|
|
248610
|
-
if (newAccessToken) {
|
|
248611
|
-
request.headers.set("Authorization", `Bearer ${newAccessToken}`);
|
|
248612
|
-
return;
|
|
248613
|
-
}
|
|
248614
|
-
}
|
|
248615
|
-
request.headers.set("Authorization", `Bearer ${auth.accessToken}`);
|
|
248616
|
-
} catch {}
|
|
248617
|
-
}
|
|
248618
|
-
],
|
|
248619
|
-
afterResponse: [handleUnauthorized]
|
|
248703
|
+
const configPath = resolve3(dirname10(redirectPath), result.data.configPath);
|
|
248704
|
+
if (!await pathExists(configPath)) {
|
|
248705
|
+
throw new ConfigInvalidError(`Wrangler config referenced by ${redirectPath} does not exist: ${configPath}`, redirectPath, {
|
|
248706
|
+
hints: [{ message: "Rebuild the project to regenerate the artifact" }]
|
|
248707
|
+
});
|
|
248620
248708
|
}
|
|
248621
|
-
|
|
248622
|
-
function getAppClient() {
|
|
248623
|
-
const { id } = getAppContext();
|
|
248624
|
-
return base44Client.extend({
|
|
248625
|
-
prefixUrl: new URL(`/api/apps/${id}/`, getBase44ApiUrl()).href
|
|
248626
|
-
});
|
|
248709
|
+
return configPath;
|
|
248627
248710
|
}
|
|
248628
|
-
function
|
|
248629
|
-
return
|
|
248630
|
-
|
|
248631
|
-
|
|
248711
|
+
function toResolvedAssetsConfig(assets) {
|
|
248712
|
+
return {
|
|
248713
|
+
htmlHandling: assets.html_handling,
|
|
248714
|
+
notFoundHandling: assets.not_found_handling,
|
|
248715
|
+
runWorkerFirst: assets.run_worker_first,
|
|
248716
|
+
headers: assets.headers,
|
|
248717
|
+
redirects: assets.redirects
|
|
248718
|
+
};
|
|
248632
248719
|
}
|
|
248633
|
-
|
|
248634
|
-
|
|
248635
|
-
|
|
248636
|
-
|
|
248637
|
-
|
|
248638
|
-
"User-Agent": "Base44 CLI"
|
|
248639
|
-
},
|
|
248640
|
-
hooks: {
|
|
248641
|
-
beforeRequest: [
|
|
248642
|
-
(request) => {
|
|
248643
|
-
request.headers.set("X-Request-ID", randomUUID3());
|
|
248644
|
-
}
|
|
248645
|
-
]
|
|
248646
|
-
}
|
|
248647
|
-
});
|
|
248648
|
-
// src/core/auth/api.ts
|
|
248649
|
-
async function generateDeviceCode() {
|
|
248650
|
-
const response = await oauthClient.post("oauth/device/code", {
|
|
248651
|
-
json: {
|
|
248652
|
-
client_id: AUTH_CLIENT_ID,
|
|
248653
|
-
scope: "apps:read apps:write sandbox:write"
|
|
248654
|
-
},
|
|
248655
|
-
throwHttpErrors: false
|
|
248656
|
-
});
|
|
248657
|
-
if (!response.ok) {
|
|
248658
|
-
throw new ApiError(`Failed to generate device code: ${response.status} ${response.statusText}`, { statusCode: response.status });
|
|
248659
|
-
}
|
|
248660
|
-
const result = DeviceCodeResponseSchema.safeParse(await response.json());
|
|
248661
|
-
if (!result.success) {
|
|
248662
|
-
throw new SchemaValidationError("Invalid device code response from server", result.error);
|
|
248720
|
+
|
|
248721
|
+
// src/core/site/deploy-app.ts
|
|
248722
|
+
async function planAppDeploy(target) {
|
|
248723
|
+
if (await detectFullStackArtifact(target.root)) {
|
|
248724
|
+
return { kind: "full-stack" };
|
|
248663
248725
|
}
|
|
248664
|
-
|
|
248726
|
+
const outputDirectory = target.site?.outputDirectory;
|
|
248727
|
+
if (!outputDirectory) {
|
|
248728
|
+
return { kind: "none" };
|
|
248729
|
+
}
|
|
248730
|
+
const outputDir = resolve4(target.root, outputDirectory);
|
|
248731
|
+
return staticDeploymentsEnabled() ? { kind: "static-deployment", outputDir } : { kind: "static", outputDir };
|
|
248732
|
+
}
|
|
248733
|
+
// src/core/site/modules.ts
|
|
248734
|
+
import { stat as stat2 } from "node:fs/promises";
|
|
248735
|
+
import { relative as relative3, resolve as resolve5, sep } from "node:path";
|
|
248736
|
+
var MAX_TOTAL_MODULE_BYTES = 40 * 1024 * 1024;
|
|
248737
|
+
var MODULE_IGNORE = ["wrangler.json", ".dev.vars"];
|
|
248738
|
+
var RULE_TYPE_TO_MODULE_TYPE = {
|
|
248739
|
+
ESModule: "esm",
|
|
248740
|
+
CompiledWasm: "wasm",
|
|
248741
|
+
Text: "text",
|
|
248742
|
+
Data: "data"
|
|
248743
|
+
};
|
|
248744
|
+
function toPosix(path11) {
|
|
248745
|
+
return path11.split(sep).join("/");
|
|
248665
248746
|
}
|
|
248666
|
-
async function
|
|
248667
|
-
const
|
|
248668
|
-
|
|
248669
|
-
|
|
248670
|
-
|
|
248671
|
-
const response = await oauthClient.post("oauth/token", {
|
|
248672
|
-
body: searchParams.toString(),
|
|
248673
|
-
headers: {
|
|
248674
|
-
"Content-Type": "application/x-www-form-urlencoded"
|
|
248675
|
-
},
|
|
248676
|
-
throwHttpErrors: false
|
|
248677
|
-
});
|
|
248678
|
-
const json2 = await response.json();
|
|
248679
|
-
if (!response.ok) {
|
|
248680
|
-
const errorResult = OAuthErrorSchema.safeParse(json2);
|
|
248681
|
-
if (!errorResult.success) {
|
|
248682
|
-
throw new SchemaValidationError("Token request failed", errorResult.error);
|
|
248683
|
-
}
|
|
248684
|
-
const { error: error48, error_description } = errorResult.data;
|
|
248685
|
-
if (error48 === "authorization_pending" || error48 === "slow_down") {
|
|
248686
|
-
return null;
|
|
248687
|
-
}
|
|
248688
|
-
throw new ApiError(error_description ?? `OAuth error: ${error48}`, {
|
|
248689
|
-
statusCode: response.status
|
|
248747
|
+
async function collectModules(config9) {
|
|
248748
|
+
const entryPath = resolve5(config9.configDir, config9.main);
|
|
248749
|
+
if (!await pathExists(entryPath)) {
|
|
248750
|
+
throw new InvalidInputError(`Worker entry module does not exist: ${entryPath} (from "main" in ${config9.configPath})`, {
|
|
248751
|
+
hints: [{ message: "Rebuild the project to regenerate the artifact" }]
|
|
248690
248752
|
});
|
|
248691
248753
|
}
|
|
248692
|
-
const
|
|
248693
|
-
|
|
248694
|
-
|
|
248695
|
-
|
|
248696
|
-
|
|
248697
|
-
|
|
248698
|
-
|
|
248699
|
-
|
|
248700
|
-
|
|
248701
|
-
|
|
248702
|
-
|
|
248703
|
-
|
|
248704
|
-
|
|
248705
|
-
|
|
248706
|
-
|
|
248707
|
-
|
|
248708
|
-
|
|
248709
|
-
|
|
248710
|
-
|
|
248711
|
-
|
|
248712
|
-
|
|
248713
|
-
|
|
248714
|
-
throw new ApiError(`Token refresh failed: ${response.statusText}`, {
|
|
248715
|
-
statusCode: response.status
|
|
248716
|
-
});
|
|
248717
|
-
}
|
|
248718
|
-
const { error: error48, error_description } = errorResult.data;
|
|
248719
|
-
throw new ApiError(error_description ?? `OAuth error: ${error48}`, {
|
|
248720
|
-
statusCode: response.status
|
|
248754
|
+
const modulesByName = new Map;
|
|
248755
|
+
const entryName = toPosix(relative3(config9.configDir, entryPath));
|
|
248756
|
+
modulesByName.set(entryName, {
|
|
248757
|
+
name: entryName,
|
|
248758
|
+
absolutePath: entryPath,
|
|
248759
|
+
size: 0,
|
|
248760
|
+
type: "esm"
|
|
248761
|
+
});
|
|
248762
|
+
const ignore = [...MODULE_IGNORE];
|
|
248763
|
+
if (config9.assetsDirectory?.startsWith(config9.configDir + sep)) {
|
|
248764
|
+
ignore.push(`${toPosix(relative3(config9.configDir, config9.assetsDirectory))}/**`);
|
|
248765
|
+
}
|
|
248766
|
+
for (const rule of config9.rules) {
|
|
248767
|
+
const type = RULE_TYPE_TO_MODULE_TYPE[rule.type];
|
|
248768
|
+
if (!type) {
|
|
248769
|
+
throw new InvalidInputError(`Unsupported module rule type "${rule.type}" in ${config9.configPath}. Supported: ${Object.keys(RULE_TYPE_TO_MODULE_TYPE).join(", ")}.`);
|
|
248770
|
+
}
|
|
248771
|
+
const matches = await globby(rule.globs, {
|
|
248772
|
+
cwd: config9.configDir,
|
|
248773
|
+
onlyFiles: true,
|
|
248774
|
+
dot: true,
|
|
248775
|
+
ignore
|
|
248721
248776
|
});
|
|
248777
|
+
for (const match of matches.sort()) {
|
|
248778
|
+
if (!modulesByName.has(match)) {
|
|
248779
|
+
modulesByName.set(match, {
|
|
248780
|
+
name: match,
|
|
248781
|
+
absolutePath: resolve5(config9.configDir, match),
|
|
248782
|
+
size: 0,
|
|
248783
|
+
type
|
|
248784
|
+
});
|
|
248785
|
+
}
|
|
248786
|
+
}
|
|
248722
248787
|
}
|
|
248723
|
-
|
|
248724
|
-
|
|
248725
|
-
|
|
248726
|
-
|
|
248727
|
-
|
|
248728
|
-
|
|
248729
|
-
async function getUserInfo(accessToken) {
|
|
248730
|
-
const response = await oauthClient.get("oauth/userinfo", {
|
|
248731
|
-
headers: { Authorization: `Bearer ${accessToken}` }
|
|
248732
|
-
});
|
|
248733
|
-
if (!response.ok) {
|
|
248734
|
-
throw new ApiError(`Failed to fetch user info: ${response.status}`, {
|
|
248735
|
-
statusCode: response.status
|
|
248788
|
+
if (config9.uploadSourceMaps) {
|
|
248789
|
+
const maps = await globby("**/*.map", {
|
|
248790
|
+
cwd: config9.configDir,
|
|
248791
|
+
onlyFiles: true,
|
|
248792
|
+
dot: true,
|
|
248793
|
+
ignore
|
|
248736
248794
|
});
|
|
248795
|
+
for (const map2 of maps.sort()) {
|
|
248796
|
+
addSourcemap(modulesByName, config9.configDir, map2);
|
|
248797
|
+
}
|
|
248798
|
+
} else {
|
|
248799
|
+
for (const name2 of [...modulesByName.keys()]) {
|
|
248800
|
+
const mapName = `${name2}.map`;
|
|
248801
|
+
if (await pathExists(resolve5(config9.configDir, mapName))) {
|
|
248802
|
+
addSourcemap(modulesByName, config9.configDir, mapName);
|
|
248803
|
+
}
|
|
248804
|
+
}
|
|
248737
248805
|
}
|
|
248738
|
-
const
|
|
248739
|
-
|
|
248740
|
-
|
|
248806
|
+
const modules = [...modulesByName.values()];
|
|
248807
|
+
let totalBytes = 0;
|
|
248808
|
+
for (const module of modules) {
|
|
248809
|
+
module.size = (await stat2(module.absolutePath)).size;
|
|
248810
|
+
totalBytes += module.size;
|
|
248741
248811
|
}
|
|
248742
|
-
|
|
248812
|
+
if (totalBytes > MAX_TOTAL_MODULE_BYTES) {
|
|
248813
|
+
throw new InvalidInputError(`Worker modules total ${totalBytes} bytes, which exceeds the 40 MB limit for Base44 full-stack deploys.`);
|
|
248814
|
+
}
|
|
248815
|
+
return modules;
|
|
248743
248816
|
}
|
|
248744
|
-
|
|
248745
|
-
|
|
248746
|
-
|
|
248747
|
-
|
|
248748
|
-
|
|
248749
|
-
|
|
248750
|
-
|
|
248817
|
+
function addSourcemap(modulesByName, configDir, name2) {
|
|
248818
|
+
if (modulesByName.has(name2))
|
|
248819
|
+
return;
|
|
248820
|
+
modulesByName.set(name2, {
|
|
248821
|
+
name: name2,
|
|
248822
|
+
absolutePath: resolve5(configDir, name2),
|
|
248823
|
+
size: 0,
|
|
248824
|
+
type: "sourcemap"
|
|
248751
248825
|
});
|
|
248752
|
-
log.info(`Verification code: ${theme.styles.bold(deviceCodeResponse.userCode)}` + `
|
|
248753
|
-
Please confirm this code at: ${deviceCodeResponse.verificationUri}`);
|
|
248754
|
-
return deviceCodeResponse;
|
|
248755
248826
|
}
|
|
248756
|
-
|
|
248757
|
-
|
|
248758
|
-
|
|
248759
|
-
|
|
248760
|
-
|
|
248761
|
-
|
|
248762
|
-
|
|
248763
|
-
tokenResponse = result;
|
|
248764
|
-
return true;
|
|
248765
|
-
}
|
|
248766
|
-
return false;
|
|
248767
|
-
}, {
|
|
248768
|
-
interval: interval * 1000,
|
|
248769
|
-
timeout: expiresIn * 1000
|
|
248770
|
-
});
|
|
248771
|
-
}, {
|
|
248772
|
-
successMessage: "Authentication completed!",
|
|
248773
|
-
errorMessage: "Authentication failed"
|
|
248774
|
-
});
|
|
248775
|
-
} catch (error48) {
|
|
248776
|
-
if (error48 instanceof Error && error48.message.includes("timed out")) {
|
|
248777
|
-
throw new AuthExpiredError("Authentication timed out. Please try again.");
|
|
248778
|
-
}
|
|
248779
|
-
throw error48;
|
|
248827
|
+
|
|
248828
|
+
// src/core/site/full-stack.ts
|
|
248829
|
+
async function deployFullStack(options) {
|
|
248830
|
+
const { projectRoot, gitHash, concurrency, progress } = options;
|
|
248831
|
+
const config9 = await resolveWranglerConfig(projectRoot);
|
|
248832
|
+
if (!config9.compatibilityFlags.includes("nodejs_compat")) {
|
|
248833
|
+
progress?.onWarning?.("The wrangler config has no 'nodejs_compat' compatibility flag; Node.js built-ins will be unavailable at runtime. Enable it in your framework's Cloudflare adapter settings if your server code needs Node APIs.");
|
|
248780
248834
|
}
|
|
248781
|
-
if (
|
|
248782
|
-
|
|
248835
|
+
if (config9.vars && Object.keys(config9.vars).length > 0) {
|
|
248836
|
+
progress?.onWarning?.("wrangler 'vars' are not supported and were ignored — a worker's environment comes from the app's secrets (base44 secrets set).");
|
|
248783
248837
|
}
|
|
248784
|
-
|
|
248785
|
-
}
|
|
248786
|
-
|
|
248787
|
-
|
|
248788
|
-
|
|
248789
|
-
|
|
248790
|
-
|
|
248791
|
-
|
|
248792
|
-
|
|
248793
|
-
|
|
248838
|
+
const modules = await collectModules(config9);
|
|
248839
|
+
let assets = { manifest: {}, filesByHash: new Map };
|
|
248840
|
+
if (config9.assetsDirectory && await pathExists(config9.assetsDirectory)) {
|
|
248841
|
+
assets = await buildAssetManifest(config9.assetsDirectory, getAppContext().id);
|
|
248842
|
+
}
|
|
248843
|
+
const created = await createDeployment({
|
|
248844
|
+
git_hash: gitHash,
|
|
248845
|
+
config: {
|
|
248846
|
+
main: config9.main,
|
|
248847
|
+
compatibility_date: config9.compatibilityDate,
|
|
248848
|
+
compatibility_flags: config9.compatibilityFlags,
|
|
248849
|
+
assets: buildAssetsConfig(config9.assetsConfig, progress)
|
|
248850
|
+
},
|
|
248851
|
+
asset_manifest: assets.manifest
|
|
248794
248852
|
});
|
|
248853
|
+
if (created.assetUploads && created.assetUploads.type !== "cf") {
|
|
248854
|
+
throw new ApiError(`The server answered a full-stack deploy with the "${created.assetUploads.type}" upload target.`);
|
|
248855
|
+
}
|
|
248856
|
+
const totalAssets = Object.keys(assets.manifest).length;
|
|
248857
|
+
const newAssets = created.assetUploads ? new Set(created.assetUploads.buckets.flat()).size : 0;
|
|
248858
|
+
progress?.onAssets?.({ totalAssets, newAssets });
|
|
248859
|
+
const completionJwt = created.assetUploads ? await uploadAssetBuckets(created.assetUploads, assets.filesByHash, {
|
|
248860
|
+
concurrency,
|
|
248861
|
+
onProgress: progress?.onAssetUpload
|
|
248862
|
+
}) : null;
|
|
248863
|
+
progress?.onWorker?.({ moduleCount: modules.length });
|
|
248864
|
+
const finalized = await finalizeDeployment(created.deploymentId, completionJwt, modules, created.sessionId);
|
|
248865
|
+
return { deploymentId: finalized.deploymentId, gitHash };
|
|
248795
248866
|
}
|
|
248796
|
-
|
|
248797
|
-
|
|
248798
|
-
|
|
248799
|
-
|
|
248800
|
-
|
|
248801
|
-
const token = await waitForAuthentication(deviceCodeResponse.deviceCode, deviceCodeResponse.expiresIn, deviceCodeResponse.interval, runTask);
|
|
248802
|
-
const userInfo = await getUserInfo(token.accessToken);
|
|
248803
|
-
await saveAuthData(token, userInfo);
|
|
248804
|
-
return {
|
|
248805
|
-
outroMessage: `Successfully logged in as ${theme.styles.bold(userInfo.email)}`
|
|
248806
|
-
};
|
|
248807
|
-
}
|
|
248808
|
-
|
|
248809
|
-
// src/cli/utils/command/middleware.ts
|
|
248810
|
-
async function ensureAuth(ctx) {
|
|
248811
|
-
if (hasWorkspaceApiKeyAuth()) {
|
|
248812
|
-
ctx.errorReporter.setContext({
|
|
248813
|
-
user: { email: "workspace-api-key", name: "Workspace API key" }
|
|
248814
|
-
});
|
|
248815
|
-
return;
|
|
248867
|
+
function buildAssetsConfig(assetsConfig, progress) {
|
|
248868
|
+
if (!assetsConfig)
|
|
248869
|
+
return null;
|
|
248870
|
+
if (assetsConfig.headers || assetsConfig.redirects) {
|
|
248871
|
+
progress?.onWarning?.("_headers/_redirects files are not supported yet and were ignored for this deploy.");
|
|
248816
248872
|
}
|
|
248817
|
-
|
|
248818
|
-
|
|
248819
|
-
|
|
248820
|
-
|
|
248821
|
-
|
|
248873
|
+
let runWorkerFirst;
|
|
248874
|
+
if (Array.isArray(assetsConfig.runWorkerFirst)) {
|
|
248875
|
+
progress?.onWarning?.("'run_worker_first' route patterns are not supported yet and were ignored for this deploy.");
|
|
248876
|
+
} else {
|
|
248877
|
+
runWorkerFirst = assetsConfig.runWorkerFirst;
|
|
248822
248878
|
}
|
|
248823
|
-
|
|
248824
|
-
|
|
248825
|
-
|
|
248826
|
-
|
|
248827
|
-
|
|
248828
|
-
} catch {}
|
|
248829
|
-
}
|
|
248830
|
-
async function ensureAppContext(ctx, options = {}) {
|
|
248831
|
-
const appContext = await initAppContext(options);
|
|
248832
|
-
ctx.app = appContext;
|
|
248833
|
-
ctx.errorReporter.setContext({ appId: appContext.id });
|
|
248879
|
+
return {
|
|
248880
|
+
html_handling: assetsConfig.htmlHandling,
|
|
248881
|
+
not_found_handling: assetsConfig.notFoundHandling,
|
|
248882
|
+
run_worker_first: runWorkerFirst
|
|
248883
|
+
};
|
|
248834
248884
|
}
|
|
248835
|
-
|
|
248836
248885
|
// ../../node_modules/is-plain-obj/index.js
|
|
248837
248886
|
function isPlainObject2(value) {
|
|
248838
248887
|
if (typeof value !== "object" || value === null) {
|
|
@@ -248930,13 +248979,13 @@ var getJoinLength = (uint8Arrays) => {
|
|
|
248930
248979
|
var isTemplateString = (templates) => Array.isArray(templates) && Array.isArray(templates.raw);
|
|
248931
248980
|
var parseTemplates = (templates, expressions) => {
|
|
248932
248981
|
let tokens = [];
|
|
248933
|
-
for (const [index,
|
|
248982
|
+
for (const [index, template] of templates.entries()) {
|
|
248934
248983
|
tokens = parseTemplate({
|
|
248935
248984
|
templates,
|
|
248936
248985
|
expressions,
|
|
248937
248986
|
tokens,
|
|
248938
248987
|
index,
|
|
248939
|
-
template
|
|
248988
|
+
template
|
|
248940
248989
|
});
|
|
248941
248990
|
}
|
|
248942
248991
|
if (tokens.length === 0) {
|
|
@@ -248945,11 +248994,11 @@ var parseTemplates = (templates, expressions) => {
|
|
|
248945
248994
|
const [file2, ...commandArguments] = tokens;
|
|
248946
248995
|
return [file2, commandArguments, {}];
|
|
248947
248996
|
};
|
|
248948
|
-
var parseTemplate = ({ templates, expressions, tokens, index, template
|
|
248949
|
-
if (
|
|
248997
|
+
var parseTemplate = ({ templates, expressions, tokens, index, template }) => {
|
|
248998
|
+
if (template === undefined) {
|
|
248950
248999
|
throw new TypeError(`Invalid backslash sequence: ${templates.raw[index]}`);
|
|
248951
249000
|
}
|
|
248952
|
-
const { nextTokens, leadingWhitespaces, trailingWhitespaces } = splitByWhitespaces(
|
|
249001
|
+
const { nextTokens, leadingWhitespaces, trailingWhitespaces } = splitByWhitespaces(template, templates.raw[index]);
|
|
248953
249002
|
const newTokens = concatTokens(tokens, nextTokens, leadingWhitespaces);
|
|
248954
249003
|
if (index === expressions.length) {
|
|
248955
249004
|
return newTokens;
|
|
@@ -248958,18 +249007,18 @@ var parseTemplate = ({ templates, expressions, tokens, index, template: template
|
|
|
248958
249007
|
const expressionTokens = Array.isArray(expression) ? expression.map((expression2) => parseExpression(expression2)) : [parseExpression(expression)];
|
|
248959
249008
|
return concatTokens(newTokens, expressionTokens, trailingWhitespaces);
|
|
248960
249009
|
};
|
|
248961
|
-
var splitByWhitespaces = (
|
|
249010
|
+
var splitByWhitespaces = (template, rawTemplate) => {
|
|
248962
249011
|
if (rawTemplate.length === 0) {
|
|
248963
249012
|
return { nextTokens: [], leadingWhitespaces: false, trailingWhitespaces: false };
|
|
248964
249013
|
}
|
|
248965
249014
|
const nextTokens = [];
|
|
248966
249015
|
let templateStart = 0;
|
|
248967
249016
|
const leadingWhitespaces = DELIMITERS.has(rawTemplate[0]);
|
|
248968
|
-
for (let templateIndex = 0, rawIndex = 0;templateIndex <
|
|
249017
|
+
for (let templateIndex = 0, rawIndex = 0;templateIndex < template.length; templateIndex += 1, rawIndex += 1) {
|
|
248969
249018
|
const rawCharacter = rawTemplate[rawIndex];
|
|
248970
249019
|
if (DELIMITERS.has(rawCharacter)) {
|
|
248971
249020
|
if (templateStart !== templateIndex) {
|
|
248972
|
-
nextTokens.push(
|
|
249021
|
+
nextTokens.push(template.slice(templateStart, templateIndex));
|
|
248973
249022
|
}
|
|
248974
249023
|
templateStart = templateIndex + 1;
|
|
248975
249024
|
} else if (rawCharacter === "\\") {
|
|
@@ -248985,9 +249034,9 @@ var splitByWhitespaces = (template2, rawTemplate) => {
|
|
|
248985
249034
|
}
|
|
248986
249035
|
}
|
|
248987
249036
|
}
|
|
248988
|
-
const trailingWhitespaces = templateStart ===
|
|
249037
|
+
const trailingWhitespaces = templateStart === template.length;
|
|
248989
249038
|
if (!trailingWhitespaces) {
|
|
248990
|
-
nextTokens.push(
|
|
249039
|
+
nextTokens.push(template.slice(templateStart));
|
|
248991
249040
|
}
|
|
248992
249041
|
return { nextTokens, leadingWhitespaces, trailingWhitespaces };
|
|
248993
249042
|
};
|
|
@@ -250381,8 +250430,8 @@ var disconnect = (anyProcess) => {
|
|
|
250381
250430
|
// ../../node_modules/execa/lib/utils/deferred.js
|
|
250382
250431
|
var createDeferred = () => {
|
|
250383
250432
|
const methods = {};
|
|
250384
|
-
const promise2 = new Promise((
|
|
250385
|
-
Object.assign(methods, { resolve:
|
|
250433
|
+
const promise2 = new Promise((resolve6, reject) => {
|
|
250434
|
+
Object.assign(methods, { resolve: resolve6, reject });
|
|
250386
250435
|
});
|
|
250387
250436
|
return Object.assign(promise2, methods);
|
|
250388
250437
|
};
|
|
@@ -254746,11 +254795,11 @@ var addConcurrentStream = (concurrentStreams, stream, waitName) => {
|
|
|
254746
254795
|
const promises = weakMap.get(stream);
|
|
254747
254796
|
const promise2 = createDeferred();
|
|
254748
254797
|
promises.push(promise2);
|
|
254749
|
-
const
|
|
254750
|
-
return { resolve:
|
|
254798
|
+
const resolve6 = promise2.resolve.bind(promise2);
|
|
254799
|
+
return { resolve: resolve6, promises };
|
|
254751
254800
|
};
|
|
254752
|
-
var waitForConcurrentStreams = async ({ resolve:
|
|
254753
|
-
|
|
254801
|
+
var waitForConcurrentStreams = async ({ resolve: resolve6, promises }, subprocess) => {
|
|
254802
|
+
resolve6();
|
|
254754
254803
|
const [isSubprocessExit] = await Promise.race([
|
|
254755
254804
|
Promise.allSettled([true, subprocess]),
|
|
254756
254805
|
Promise.all([false, ...promises])
|
|
@@ -255329,6 +255378,370 @@ var {
|
|
|
255329
255378
|
getCancelSignal: getCancelSignal2
|
|
255330
255379
|
} = getIpcExport();
|
|
255331
255380
|
|
|
255381
|
+
// src/core/utils/git.ts
|
|
255382
|
+
var GIT_HASH_PATTERN = /^[a-fA-F0-9]{7,64}$/;
|
|
255383
|
+
function isGitCommitHash(value) {
|
|
255384
|
+
return GIT_HASH_PATTERN.test(value);
|
|
255385
|
+
}
|
|
255386
|
+
|
|
255387
|
+
// src/core/site/git-hash.ts
|
|
255388
|
+
async function resolveGitHash(projectRoot, explicit) {
|
|
255389
|
+
const hash2 = explicit ?? await gitHead(projectRoot);
|
|
255390
|
+
if (!hash2 || !isGitCommitHash(hash2)) {
|
|
255391
|
+
throw new InvalidInputError(explicit ? `'${explicit}' is not a git commit hash.` : "Deployments are addressed by the commit that produced the build, and no git commit was found.", {
|
|
255392
|
+
hints: [
|
|
255393
|
+
{
|
|
255394
|
+
message: "Run the deploy from a git checkout, or pass the commit explicitly with --git-hash."
|
|
255395
|
+
}
|
|
255396
|
+
]
|
|
255397
|
+
});
|
|
255398
|
+
}
|
|
255399
|
+
return hash2;
|
|
255400
|
+
}
|
|
255401
|
+
async function gitHead(projectRoot) {
|
|
255402
|
+
try {
|
|
255403
|
+
const { stdout } = await execa("git", ["rev-parse", "HEAD"], {
|
|
255404
|
+
cwd: projectRoot
|
|
255405
|
+
});
|
|
255406
|
+
return stdout.trim();
|
|
255407
|
+
} catch {
|
|
255408
|
+
return null;
|
|
255409
|
+
}
|
|
255410
|
+
}
|
|
255411
|
+
// src/core/project/deploy.ts
|
|
255412
|
+
function hasResourcesToDeploy(projectData) {
|
|
255413
|
+
const {
|
|
255414
|
+
project,
|
|
255415
|
+
entities,
|
|
255416
|
+
functions,
|
|
255417
|
+
agents,
|
|
255418
|
+
agentSkills,
|
|
255419
|
+
connectors,
|
|
255420
|
+
authConfig
|
|
255421
|
+
} = projectData;
|
|
255422
|
+
const hasSite = Boolean(project.site?.outputDirectory);
|
|
255423
|
+
const hasEntities = entities.length > 0;
|
|
255424
|
+
const hasFunctions = functions.length > 0;
|
|
255425
|
+
const hasAgents = agents.length > 0;
|
|
255426
|
+
const hasAgentSkills = agentSkills.length > 0;
|
|
255427
|
+
const hasConnectors = connectors.length > 0;
|
|
255428
|
+
const hasAuthConfig = authConfig.length > 0;
|
|
255429
|
+
const hasVisibility = Boolean(project.visibility);
|
|
255430
|
+
return hasEntities || hasFunctions || hasAgents || hasAgentSkills || hasConnectors || hasAuthConfig || hasVisibility || hasSite;
|
|
255431
|
+
}
|
|
255432
|
+
async function deployAll(projectData, options) {
|
|
255433
|
+
const {
|
|
255434
|
+
project,
|
|
255435
|
+
entities,
|
|
255436
|
+
functions,
|
|
255437
|
+
agents,
|
|
255438
|
+
agentSkills,
|
|
255439
|
+
connectors,
|
|
255440
|
+
authConfig
|
|
255441
|
+
} = projectData;
|
|
255442
|
+
await setAppVisibility(project.visibility);
|
|
255443
|
+
if (project.visibility) {
|
|
255444
|
+
options?.onVisibilitySet?.(project.visibility);
|
|
255445
|
+
}
|
|
255446
|
+
await entityResource.push(entities);
|
|
255447
|
+
await deployFunctionsSequentially(functions, {
|
|
255448
|
+
onStart: options?.onFunctionStart,
|
|
255449
|
+
onResult: options?.onFunctionResult
|
|
255450
|
+
});
|
|
255451
|
+
await agentSkillResource.push(agentSkills);
|
|
255452
|
+
await agentResource.push(agents);
|
|
255453
|
+
await authConfigResource.push(authConfig);
|
|
255454
|
+
const skipConnectorSync = connectors.length === 0 && hasWorkspaceApiKeyAuth();
|
|
255455
|
+
const connectorResults = skipConnectorSync ? [] : (await pushConnectors(connectors)).results;
|
|
255456
|
+
if (project.site?.outputDirectory) {
|
|
255457
|
+
const outputDir = resolve6(project.root, project.site.outputDirectory);
|
|
255458
|
+
const { appUrl } = await deploySite(outputDir);
|
|
255459
|
+
return { appUrl, connectorResults };
|
|
255460
|
+
}
|
|
255461
|
+
return { connectorResults };
|
|
255462
|
+
}
|
|
255463
|
+
// src/core/clients/base44-client.ts
|
|
255464
|
+
var retriedRequests = new WeakSet;
|
|
255465
|
+
async function captureRequestBody(request, options) {
|
|
255466
|
+
if (request.body == null) {
|
|
255467
|
+
return;
|
|
255468
|
+
}
|
|
255469
|
+
try {
|
|
255470
|
+
const cloned = request.clone();
|
|
255471
|
+
const text = await cloned.text();
|
|
255472
|
+
options.context.__requestBody = text;
|
|
255473
|
+
} catch {}
|
|
255474
|
+
}
|
|
255475
|
+
async function handleUnauthorized(request, _options, response) {
|
|
255476
|
+
if (response.status !== 401) {
|
|
255477
|
+
return;
|
|
255478
|
+
}
|
|
255479
|
+
if (hasWorkspaceApiKeyAuth()) {
|
|
255480
|
+
return;
|
|
255481
|
+
}
|
|
255482
|
+
if (retriedRequests.has(request)) {
|
|
255483
|
+
return;
|
|
255484
|
+
}
|
|
255485
|
+
const newAccessToken = await refreshAndSaveTokens();
|
|
255486
|
+
if (!newAccessToken) {
|
|
255487
|
+
return;
|
|
255488
|
+
}
|
|
255489
|
+
retriedRequests.add(request);
|
|
255490
|
+
const requestId = request.headers.get("X-Request-ID");
|
|
255491
|
+
return distribution_default(request.clone(), {
|
|
255492
|
+
headers: {
|
|
255493
|
+
...requestId && { "X-Request-ID": requestId },
|
|
255494
|
+
Authorization: `Bearer ${newAccessToken}`
|
|
255495
|
+
}
|
|
255496
|
+
});
|
|
255497
|
+
}
|
|
255498
|
+
var base44Client = distribution_default.create({
|
|
255499
|
+
prefixUrl: getBase44ApiUrl(),
|
|
255500
|
+
headers: {
|
|
255501
|
+
"User-Agent": "Base44 CLI"
|
|
255502
|
+
},
|
|
255503
|
+
hooks: {
|
|
255504
|
+
beforeRequest: [
|
|
255505
|
+
(request) => {
|
|
255506
|
+
request.headers.set("X-Request-ID", randomUUID2());
|
|
255507
|
+
},
|
|
255508
|
+
captureRequestBody,
|
|
255509
|
+
async (request) => {
|
|
255510
|
+
const workspaceApiKey = getWorkspaceApiKeyFromEnv();
|
|
255511
|
+
if (workspaceApiKey && isWorkspaceApiKey(workspaceApiKey)) {
|
|
255512
|
+
request.headers.set("api_key", workspaceApiKey);
|
|
255513
|
+
return;
|
|
255514
|
+
}
|
|
255515
|
+
try {
|
|
255516
|
+
const auth = await readAuth();
|
|
255517
|
+
if (isTokenExpired(auth)) {
|
|
255518
|
+
const newAccessToken = await refreshAndSaveTokens();
|
|
255519
|
+
if (newAccessToken) {
|
|
255520
|
+
request.headers.set("Authorization", `Bearer ${newAccessToken}`);
|
|
255521
|
+
return;
|
|
255522
|
+
}
|
|
255523
|
+
}
|
|
255524
|
+
request.headers.set("Authorization", `Bearer ${auth.accessToken}`);
|
|
255525
|
+
} catch {}
|
|
255526
|
+
}
|
|
255527
|
+
],
|
|
255528
|
+
afterResponse: [handleUnauthorized]
|
|
255529
|
+
}
|
|
255530
|
+
});
|
|
255531
|
+
function getAppClient() {
|
|
255532
|
+
const { id } = getAppContext();
|
|
255533
|
+
return base44Client.extend({
|
|
255534
|
+
prefixUrl: new URL(`/api/apps/${id}/`, getBase44ApiUrl()).href
|
|
255535
|
+
});
|
|
255536
|
+
}
|
|
255537
|
+
function getSandboxClient(appId) {
|
|
255538
|
+
return base44Client.extend({
|
|
255539
|
+
prefixUrl: new URL(`/api/apps/${appId}/sandbox-bridge/`, getBase44ApiUrl()).href
|
|
255540
|
+
});
|
|
255541
|
+
}
|
|
255542
|
+
// src/core/clients/oauth-client.ts
|
|
255543
|
+
import { randomUUID as randomUUID3 } from "node:crypto";
|
|
255544
|
+
var oauthClient = distribution_default.create({
|
|
255545
|
+
prefixUrl: getBase44ApiUrl(),
|
|
255546
|
+
headers: {
|
|
255547
|
+
"User-Agent": "Base44 CLI"
|
|
255548
|
+
},
|
|
255549
|
+
hooks: {
|
|
255550
|
+
beforeRequest: [
|
|
255551
|
+
(request) => {
|
|
255552
|
+
request.headers.set("X-Request-ID", randomUUID3());
|
|
255553
|
+
}
|
|
255554
|
+
]
|
|
255555
|
+
}
|
|
255556
|
+
});
|
|
255557
|
+
// src/core/auth/api.ts
|
|
255558
|
+
async function generateDeviceCode() {
|
|
255559
|
+
const response = await oauthClient.post("oauth/device/code", {
|
|
255560
|
+
json: {
|
|
255561
|
+
client_id: AUTH_CLIENT_ID,
|
|
255562
|
+
scope: "apps:read apps:write sandbox:write"
|
|
255563
|
+
},
|
|
255564
|
+
throwHttpErrors: false
|
|
255565
|
+
});
|
|
255566
|
+
if (!response.ok) {
|
|
255567
|
+
throw new ApiError(`Failed to generate device code: ${response.status} ${response.statusText}`, { statusCode: response.status });
|
|
255568
|
+
}
|
|
255569
|
+
const result = DeviceCodeResponseSchema.safeParse(await response.json());
|
|
255570
|
+
if (!result.success) {
|
|
255571
|
+
throw new SchemaValidationError("Invalid device code response from server", result.error);
|
|
255572
|
+
}
|
|
255573
|
+
return result.data;
|
|
255574
|
+
}
|
|
255575
|
+
async function getTokenFromDeviceCode(deviceCode) {
|
|
255576
|
+
const searchParams = new URLSearchParams;
|
|
255577
|
+
searchParams.set("grant_type", "urn:ietf:params:oauth:grant-type:device_code");
|
|
255578
|
+
searchParams.set("device_code", deviceCode);
|
|
255579
|
+
searchParams.set("client_id", AUTH_CLIENT_ID);
|
|
255580
|
+
const response = await oauthClient.post("oauth/token", {
|
|
255581
|
+
body: searchParams.toString(),
|
|
255582
|
+
headers: {
|
|
255583
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
255584
|
+
},
|
|
255585
|
+
throwHttpErrors: false
|
|
255586
|
+
});
|
|
255587
|
+
const json2 = await response.json();
|
|
255588
|
+
if (!response.ok) {
|
|
255589
|
+
const errorResult = OAuthErrorSchema.safeParse(json2);
|
|
255590
|
+
if (!errorResult.success) {
|
|
255591
|
+
throw new SchemaValidationError("Token request failed", errorResult.error);
|
|
255592
|
+
}
|
|
255593
|
+
const { error: error48, error_description } = errorResult.data;
|
|
255594
|
+
if (error48 === "authorization_pending" || error48 === "slow_down") {
|
|
255595
|
+
return null;
|
|
255596
|
+
}
|
|
255597
|
+
throw new ApiError(error_description ?? `OAuth error: ${error48}`, {
|
|
255598
|
+
statusCode: response.status
|
|
255599
|
+
});
|
|
255600
|
+
}
|
|
255601
|
+
const result = TokenResponseSchema.safeParse(json2);
|
|
255602
|
+
if (!result.success) {
|
|
255603
|
+
throw new SchemaValidationError("Invalid token response from server", result.error);
|
|
255604
|
+
}
|
|
255605
|
+
return result.data;
|
|
255606
|
+
}
|
|
255607
|
+
async function renewAccessToken(refreshToken) {
|
|
255608
|
+
const searchParams = new URLSearchParams;
|
|
255609
|
+
searchParams.set("grant_type", "refresh_token");
|
|
255610
|
+
searchParams.set("refresh_token", refreshToken);
|
|
255611
|
+
searchParams.set("client_id", AUTH_CLIENT_ID);
|
|
255612
|
+
const response = await oauthClient.post("oauth/token", {
|
|
255613
|
+
body: searchParams.toString(),
|
|
255614
|
+
headers: {
|
|
255615
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
255616
|
+
},
|
|
255617
|
+
throwHttpErrors: false
|
|
255618
|
+
});
|
|
255619
|
+
const json2 = await response.json();
|
|
255620
|
+
if (!response.ok) {
|
|
255621
|
+
const errorResult = OAuthErrorSchema.safeParse(json2);
|
|
255622
|
+
if (!errorResult.success) {
|
|
255623
|
+
throw new ApiError(`Token refresh failed: ${response.statusText}`, {
|
|
255624
|
+
statusCode: response.status
|
|
255625
|
+
});
|
|
255626
|
+
}
|
|
255627
|
+
const { error: error48, error_description } = errorResult.data;
|
|
255628
|
+
throw new ApiError(error_description ?? `OAuth error: ${error48}`, {
|
|
255629
|
+
statusCode: response.status
|
|
255630
|
+
});
|
|
255631
|
+
}
|
|
255632
|
+
const result = TokenResponseSchema.safeParse(json2);
|
|
255633
|
+
if (!result.success) {
|
|
255634
|
+
throw new SchemaValidationError("Invalid token response from server", result.error);
|
|
255635
|
+
}
|
|
255636
|
+
return result.data;
|
|
255637
|
+
}
|
|
255638
|
+
async function getUserInfo(accessToken) {
|
|
255639
|
+
const response = await oauthClient.get("oauth/userinfo", {
|
|
255640
|
+
headers: { Authorization: `Bearer ${accessToken}` }
|
|
255641
|
+
});
|
|
255642
|
+
if (!response.ok) {
|
|
255643
|
+
throw new ApiError(`Failed to fetch user info: ${response.status}`, {
|
|
255644
|
+
statusCode: response.status
|
|
255645
|
+
});
|
|
255646
|
+
}
|
|
255647
|
+
const result = UserInfoSchema.safeParse(await response.json());
|
|
255648
|
+
if (!result.success) {
|
|
255649
|
+
throw new SchemaValidationError("Invalid UserInfo response from server", result.error);
|
|
255650
|
+
}
|
|
255651
|
+
return result.data;
|
|
255652
|
+
}
|
|
255653
|
+
// src/cli/commands/auth/login-flow.ts
|
|
255654
|
+
async function generateAndDisplayDeviceCode(log, runTask) {
|
|
255655
|
+
const deviceCodeResponse = await runTask("Generating device code...", async () => {
|
|
255656
|
+
return await generateDeviceCode();
|
|
255657
|
+
}, {
|
|
255658
|
+
successMessage: "Device code generated",
|
|
255659
|
+
errorMessage: "Failed to generate device code"
|
|
255660
|
+
});
|
|
255661
|
+
log.info(`Verification code: ${theme.styles.bold(deviceCodeResponse.userCode)}` + `
|
|
255662
|
+
Please confirm this code at: ${deviceCodeResponse.verificationUri}`);
|
|
255663
|
+
return deviceCodeResponse;
|
|
255664
|
+
}
|
|
255665
|
+
async function waitForAuthentication(deviceCode, expiresIn, interval, runTask) {
|
|
255666
|
+
let tokenResponse;
|
|
255667
|
+
try {
|
|
255668
|
+
await runTask("Waiting for authentication...", async () => {
|
|
255669
|
+
await pWaitFor(async () => {
|
|
255670
|
+
const result = await getTokenFromDeviceCode(deviceCode);
|
|
255671
|
+
if (result !== null) {
|
|
255672
|
+
tokenResponse = result;
|
|
255673
|
+
return true;
|
|
255674
|
+
}
|
|
255675
|
+
return false;
|
|
255676
|
+
}, {
|
|
255677
|
+
interval: interval * 1000,
|
|
255678
|
+
timeout: expiresIn * 1000
|
|
255679
|
+
});
|
|
255680
|
+
}, {
|
|
255681
|
+
successMessage: "Authentication completed!",
|
|
255682
|
+
errorMessage: "Authentication failed"
|
|
255683
|
+
});
|
|
255684
|
+
} catch (error48) {
|
|
255685
|
+
if (error48 instanceof Error && error48.message.includes("timed out")) {
|
|
255686
|
+
throw new AuthExpiredError("Authentication timed out. Please try again.");
|
|
255687
|
+
}
|
|
255688
|
+
throw error48;
|
|
255689
|
+
}
|
|
255690
|
+
if (tokenResponse === undefined) {
|
|
255691
|
+
throw new InternalError("Failed to retrieve authentication token.");
|
|
255692
|
+
}
|
|
255693
|
+
return tokenResponse;
|
|
255694
|
+
}
|
|
255695
|
+
async function saveAuthData(response, userInfo) {
|
|
255696
|
+
const expiresAt = Date.now() + response.expiresIn * 1000;
|
|
255697
|
+
await writeAuth({
|
|
255698
|
+
accessToken: response.accessToken,
|
|
255699
|
+
refreshToken: response.refreshToken,
|
|
255700
|
+
expiresAt,
|
|
255701
|
+
email: userInfo.email,
|
|
255702
|
+
name: userInfo.name
|
|
255703
|
+
});
|
|
255704
|
+
}
|
|
255705
|
+
async function login({
|
|
255706
|
+
log,
|
|
255707
|
+
runTask
|
|
255708
|
+
}) {
|
|
255709
|
+
const deviceCodeResponse = await generateAndDisplayDeviceCode(log, runTask);
|
|
255710
|
+
const token = await waitForAuthentication(deviceCodeResponse.deviceCode, deviceCodeResponse.expiresIn, deviceCodeResponse.interval, runTask);
|
|
255711
|
+
const userInfo = await getUserInfo(token.accessToken);
|
|
255712
|
+
await saveAuthData(token, userInfo);
|
|
255713
|
+
return {
|
|
255714
|
+
outroMessage: `Successfully logged in as ${theme.styles.bold(userInfo.email)}`
|
|
255715
|
+
};
|
|
255716
|
+
}
|
|
255717
|
+
|
|
255718
|
+
// src/cli/utils/command/middleware.ts
|
|
255719
|
+
async function ensureAuth(ctx) {
|
|
255720
|
+
if (hasWorkspaceApiKeyAuth()) {
|
|
255721
|
+
ctx.errorReporter.setContext({
|
|
255722
|
+
user: { email: "workspace-api-key", name: "Workspace API key" }
|
|
255723
|
+
});
|
|
255724
|
+
return;
|
|
255725
|
+
}
|
|
255726
|
+
await seedAuthFromEnv();
|
|
255727
|
+
const loggedIn = await isLoggedIn();
|
|
255728
|
+
if (!loggedIn) {
|
|
255729
|
+
ctx.log.info("You need to login first to continue.");
|
|
255730
|
+
await login(ctx);
|
|
255731
|
+
}
|
|
255732
|
+
try {
|
|
255733
|
+
const userInfo = await readAuth();
|
|
255734
|
+
ctx.errorReporter.setContext({
|
|
255735
|
+
user: { email: userInfo.email, name: userInfo.name }
|
|
255736
|
+
});
|
|
255737
|
+
} catch {}
|
|
255738
|
+
}
|
|
255739
|
+
async function ensureAppContext(ctx, options = {}) {
|
|
255740
|
+
const appContext = await initAppContext(options);
|
|
255741
|
+
ctx.app = appContext;
|
|
255742
|
+
ctx.errorReporter.setContext({ appId: appContext.id });
|
|
255743
|
+
}
|
|
255744
|
+
|
|
255332
255745
|
// src/cli/utils/version-check.ts
|
|
255333
255746
|
async function checkForUpgrade() {
|
|
255334
255747
|
const testLatestVersion = getTestOverrides()?.latestVersion;
|
|
@@ -255741,11 +256154,6 @@ function verifyDenoInstalled(context) {
|
|
|
255741
256154
|
});
|
|
255742
256155
|
}
|
|
255743
256156
|
}
|
|
255744
|
-
// src/core/utils/git.ts
|
|
255745
|
-
var GIT_HASH_PATTERN = /^[a-fA-F0-9]{7,64}$/;
|
|
255746
|
-
function isGitCommitHash(value) {
|
|
255747
|
-
return GIT_HASH_PATTERN.test(value);
|
|
255748
|
-
}
|
|
255749
256157
|
// src/core/workspace/schema.ts
|
|
255750
256158
|
var WorkspaceSchema = exports_external.object({
|
|
255751
256159
|
id: exports_external.string(),
|
|
@@ -255820,7 +256228,7 @@ async function pullAction({
|
|
|
255820
256228
|
runTask: runTask2
|
|
255821
256229
|
}) {
|
|
255822
256230
|
const { project: project2 } = await readProjectConfig();
|
|
255823
|
-
const dir =
|
|
256231
|
+
const dir = join18(dirname11(project2.configPath), project2.agentSkillsDir);
|
|
255824
256232
|
const remote = await runTask2("Fetching agent skills from Base44", () => fetchAgentSkills(), {
|
|
255825
256233
|
successMessage: "Agent skills fetched successfully",
|
|
255826
256234
|
errorMessage: "Failed to fetch agent skills"
|
|
@@ -255876,14 +256284,14 @@ function getAgentSkillsCommand() {
|
|
|
255876
256284
|
}
|
|
255877
256285
|
|
|
255878
256286
|
// src/cli/commands/agents/pull.ts
|
|
255879
|
-
import { dirname as
|
|
256287
|
+
import { dirname as dirname12, join as join19 } from "node:path";
|
|
255880
256288
|
async function pullAgentsAction({
|
|
255881
256289
|
log,
|
|
255882
256290
|
runTask: runTask2
|
|
255883
256291
|
}) {
|
|
255884
256292
|
const { project: project2 } = await readProjectConfig();
|
|
255885
|
-
const configDir =
|
|
255886
|
-
const agentsDir =
|
|
256293
|
+
const configDir = dirname12(project2.configPath);
|
|
256294
|
+
const agentsDir = join19(configDir, project2.agentsDir);
|
|
255887
256295
|
const remoteAgents = await runTask2("Fetching agents from Base44", async () => {
|
|
255888
256296
|
return await fetchAgents();
|
|
255889
256297
|
}, {
|
|
@@ -255953,12 +256361,12 @@ function getAgentsCommand() {
|
|
|
255953
256361
|
}
|
|
255954
256362
|
|
|
255955
256363
|
// src/cli/commands/auth/password-login.ts
|
|
255956
|
-
import { dirname as
|
|
256364
|
+
import { dirname as dirname13, join as join20 } from "node:path";
|
|
255957
256365
|
async function passwordLoginAction({ log, runTask: runTask2 }, action) {
|
|
255958
256366
|
const shouldEnable = action === "enable";
|
|
255959
256367
|
const { project: project2 } = await readProjectConfig();
|
|
255960
|
-
const configDir =
|
|
255961
|
-
const authDir =
|
|
256368
|
+
const configDir = dirname13(project2.configPath);
|
|
256369
|
+
const authDir = join20(configDir, project2.authDir);
|
|
255962
256370
|
const updated = await runTask2("Updating local auth config", async () => {
|
|
255963
256371
|
const current = await readAuthConfig(authDir) ?? DEFAULT_AUTH_CONFIG;
|
|
255964
256372
|
const merged = { ...current, enableUsernamePassword: shouldEnable };
|
|
@@ -255978,14 +256386,14 @@ function getPasswordLoginCommand() {
|
|
|
255978
256386
|
}
|
|
255979
256387
|
|
|
255980
256388
|
// src/cli/commands/auth/pull.ts
|
|
255981
|
-
import { dirname as
|
|
256389
|
+
import { dirname as dirname14, join as join21 } from "node:path";
|
|
255982
256390
|
async function pullAuthAction({
|
|
255983
256391
|
log,
|
|
255984
256392
|
runTask: runTask2
|
|
255985
256393
|
}) {
|
|
255986
256394
|
const { project: project2 } = await readProjectConfig();
|
|
255987
|
-
const configDir =
|
|
255988
|
-
const authDir =
|
|
256395
|
+
const configDir = dirname14(project2.configPath);
|
|
256396
|
+
const authDir = join21(configDir, project2.authDir);
|
|
255989
256397
|
const remoteConfig = await runTask2("Fetching auth config from Base44", async () => {
|
|
255990
256398
|
return await pullAuthConfig();
|
|
255991
256399
|
}, {
|
|
@@ -256049,7 +256457,7 @@ function getAuthPushCommand() {
|
|
|
256049
256457
|
}
|
|
256050
256458
|
|
|
256051
256459
|
// src/cli/commands/auth/social-login.ts
|
|
256052
|
-
import { dirname as
|
|
256460
|
+
import { dirname as dirname15, join as join22, resolve as resolve7 } from "node:path";
|
|
256053
256461
|
var PROVIDER_LABELS = {
|
|
256054
256462
|
google: "Google",
|
|
256055
256463
|
microsoft: "Microsoft",
|
|
@@ -256089,7 +256497,7 @@ async function socialLoginAction({ log, isNonInteractive, runTask: runTask2 }, p
|
|
|
256089
256497
|
let clientSecret;
|
|
256090
256498
|
if (useCustomOAuth && oauth && oauthCli && hasSecretOptions(options)) {
|
|
256091
256499
|
if (options.envFile) {
|
|
256092
|
-
const secrets = await parseEnvFile(
|
|
256500
|
+
const secrets = await parseEnvFile(resolve7(options.envFile));
|
|
256093
256501
|
const value = secrets[oauthCli.envVar];
|
|
256094
256502
|
if (!value) {
|
|
256095
256503
|
throw new InvalidInputError(`Key "${oauthCli.envVar}" not found in ${options.envFile}.`);
|
|
@@ -256119,8 +256527,8 @@ async function socialLoginAction({ log, isNonInteractive, runTask: runTask2 }, p
|
|
|
256119
256527
|
}
|
|
256120
256528
|
}
|
|
256121
256529
|
const { project: project2 } = await readProjectConfig();
|
|
256122
|
-
const configDir =
|
|
256123
|
-
const authDir =
|
|
256530
|
+
const configDir = dirname15(project2.configPath);
|
|
256531
|
+
const authDir = join22(configDir, project2.authDir);
|
|
256124
256532
|
const { config: updated } = await runTask2("Updating local auth config", async () => updateSocialLoginConfig(authDir, provider, shouldEnable, useCustomOAuth && options.clientId ? { clientId: options.clientId } : undefined));
|
|
256125
256533
|
if (clientSecret) {
|
|
256126
256534
|
await runTask2("Saving client secret", async () => pushCustomOAuthSecret(provider, clientSecret));
|
|
@@ -256145,7 +256553,7 @@ function getSocialLoginCommand() {
|
|
|
256145
256553
|
}
|
|
256146
256554
|
|
|
256147
256555
|
// src/cli/commands/auth/sso.ts
|
|
256148
|
-
import { dirname as
|
|
256556
|
+
import { dirname as dirname16, join as join23, resolve as resolve8 } from "node:path";
|
|
256149
256557
|
var SSOConfigFileSchema = exports_external.object({
|
|
256150
256558
|
provider: exports_external.enum(Object.values(KNOWN_SSO_PROVIDERS)),
|
|
256151
256559
|
clientId: exports_external.string(),
|
|
@@ -256161,7 +256569,7 @@ var SSOConfigFileSchema = exports_external.object({
|
|
|
256161
256569
|
ssoName: exports_external.string().optional()
|
|
256162
256570
|
});
|
|
256163
256571
|
async function loadSSOConfigFile(filePath) {
|
|
256164
|
-
const resolved =
|
|
256572
|
+
const resolved = resolve8(filePath);
|
|
256165
256573
|
const raw2 = await readJsonFile(resolved);
|
|
256166
256574
|
const result = SSOConfigFileSchema.safeParse(raw2);
|
|
256167
256575
|
if (!result.success) {
|
|
@@ -256249,7 +256657,7 @@ async function ssoEnableAction({ isNonInteractive, runTask: runTask2 }, options)
|
|
|
256249
256657
|
}
|
|
256250
256658
|
let clientSecret;
|
|
256251
256659
|
if (merged.envFile && !merged.clientSecret) {
|
|
256252
|
-
const secrets2 = await parseEnvFile(
|
|
256660
|
+
const secrets2 = await parseEnvFile(resolve8(merged.envFile));
|
|
256253
256661
|
const value = secrets2.sso_client_secret;
|
|
256254
256662
|
if (!value) {
|
|
256255
256663
|
throw new InvalidInputError(`Key "sso_client_secret" not found in ${merged.envFile}.`);
|
|
@@ -256308,8 +256716,8 @@ async function ssoEnableAction({ isNonInteractive, runTask: runTask2 }, options)
|
|
|
256308
256716
|
throw error48;
|
|
256309
256717
|
}
|
|
256310
256718
|
const { project: project2 } = await readProjectConfig();
|
|
256311
|
-
const configDir =
|
|
256312
|
-
const authDir =
|
|
256719
|
+
const configDir = dirname16(project2.configPath);
|
|
256720
|
+
const authDir = join23(configDir, project2.authDir);
|
|
256313
256721
|
await runTask2("Updating local auth config", async () => updateSSOConfig(authDir, provider, true));
|
|
256314
256722
|
await runTask2("Saving SSO credentials", async () => pushSSOSecrets(secrets));
|
|
256315
256723
|
return {
|
|
@@ -256324,8 +256732,8 @@ async function ssoDisableAction({ log, runTask: runTask2 }, options) {
|
|
|
256324
256732
|
throw new InvalidInputError("Configuration options cannot be used with disable. To disable SSO: base44 auth sso disable");
|
|
256325
256733
|
}
|
|
256326
256734
|
const { project: project2 } = await readProjectConfig();
|
|
256327
|
-
const configDir =
|
|
256328
|
-
const authDir =
|
|
256735
|
+
const configDir = dirname16(project2.configPath);
|
|
256736
|
+
const authDir = join23(configDir, project2.authDir);
|
|
256329
256737
|
const updated = await runTask2("Updating local auth config", async () => updateSSOConfig(authDir, null, false));
|
|
256330
256738
|
await runTask2("Removing SSO credentials", async () => deleteSSOSecrets());
|
|
256331
256739
|
if (!hasAnyLoginMethod(updated)) {
|
|
@@ -256887,19 +257295,19 @@ var baseOpen = async (options) => {
|
|
|
256887
257295
|
}
|
|
256888
257296
|
const subprocess = childProcess3.spawn(command2, cliArguments, childProcessOptions);
|
|
256889
257297
|
if (options.wait) {
|
|
256890
|
-
return new Promise((
|
|
257298
|
+
return new Promise((resolve9, reject) => {
|
|
256891
257299
|
subprocess.once("error", reject);
|
|
256892
257300
|
subprocess.once("close", (exitCode) => {
|
|
256893
257301
|
if (!options.allowNonzeroExitCode && exitCode !== 0) {
|
|
256894
257302
|
reject(new Error(`Exited with code ${exitCode}`));
|
|
256895
257303
|
return;
|
|
256896
257304
|
}
|
|
256897
|
-
|
|
257305
|
+
resolve9(subprocess);
|
|
256898
257306
|
});
|
|
256899
257307
|
});
|
|
256900
257308
|
}
|
|
256901
257309
|
if (isFallbackAttempt) {
|
|
256902
|
-
return new Promise((
|
|
257310
|
+
return new Promise((resolve9, reject) => {
|
|
256903
257311
|
subprocess.once("error", reject);
|
|
256904
257312
|
subprocess.once("spawn", () => {
|
|
256905
257313
|
subprocess.once("close", (exitCode) => {
|
|
@@ -256909,17 +257317,17 @@ var baseOpen = async (options) => {
|
|
|
256909
257317
|
return;
|
|
256910
257318
|
}
|
|
256911
257319
|
subprocess.unref();
|
|
256912
|
-
|
|
257320
|
+
resolve9(subprocess);
|
|
256913
257321
|
});
|
|
256914
257322
|
});
|
|
256915
257323
|
});
|
|
256916
257324
|
}
|
|
256917
257325
|
subprocess.unref();
|
|
256918
|
-
return new Promise((
|
|
257326
|
+
return new Promise((resolve9, reject) => {
|
|
256919
257327
|
subprocess.once("error", reject);
|
|
256920
257328
|
subprocess.once("spawn", () => {
|
|
256921
257329
|
subprocess.off("error", reject);
|
|
256922
|
-
|
|
257330
|
+
resolve9(subprocess);
|
|
256923
257331
|
});
|
|
256924
257332
|
});
|
|
256925
257333
|
};
|
|
@@ -257182,13 +257590,13 @@ function getConnectorsListAvailableCommand() {
|
|
|
257182
257590
|
}
|
|
257183
257591
|
|
|
257184
257592
|
// src/cli/commands/connectors/pull.ts
|
|
257185
|
-
import { dirname as
|
|
257593
|
+
import { dirname as dirname17, join as join24, resolve as resolve9 } from "node:path";
|
|
257186
257594
|
async function resolveConnectorsDir(options) {
|
|
257187
257595
|
if (!getAppContext().projectRoot) {
|
|
257188
|
-
return
|
|
257596
|
+
return resolve9(options.dir ?? "connectors");
|
|
257189
257597
|
}
|
|
257190
257598
|
const { project: project2 } = await readProjectConfig();
|
|
257191
|
-
return
|
|
257599
|
+
return join24(dirname17(project2.configPath), project2.connectorsDir);
|
|
257192
257600
|
}
|
|
257193
257601
|
async function pullConnectorsAction({ log, runTask: runTask2, jsonMode }, options) {
|
|
257194
257602
|
const connectorsDir = await resolveConnectorsDir(options);
|
|
@@ -257229,10 +257637,10 @@ function getConnectorsPullCommand() {
|
|
|
257229
257637
|
}
|
|
257230
257638
|
|
|
257231
257639
|
// src/cli/commands/connectors/push.ts
|
|
257232
|
-
import { resolve as
|
|
257640
|
+
import { resolve as resolve10 } from "node:path";
|
|
257233
257641
|
async function readConnectorsToPush(options) {
|
|
257234
257642
|
if (!getAppContext().projectRoot) {
|
|
257235
|
-
return readAllConnectors(
|
|
257643
|
+
return readAllConnectors(resolve10(options.dir ?? "connectors"));
|
|
257236
257644
|
}
|
|
257237
257645
|
const { connectors } = await readProjectConfig();
|
|
257238
257646
|
return connectors;
|
|
@@ -257596,11 +258004,11 @@ function getListCommand() {
|
|
|
257596
258004
|
}
|
|
257597
258005
|
|
|
257598
258006
|
// src/cli/commands/functions/pull.ts
|
|
257599
|
-
import { dirname as
|
|
258007
|
+
import { dirname as dirname18, join as join25 } from "node:path";
|
|
257600
258008
|
async function pullFunctionsAction({ log, runTask: runTask2 }, name2) {
|
|
257601
258009
|
const { project: project2, functions } = await readProjectConfig();
|
|
257602
|
-
const configDir =
|
|
257603
|
-
const functionsDir =
|
|
258010
|
+
const configDir = dirname18(project2.configPath);
|
|
258011
|
+
const functionsDir = join25(configDir, project2.functionsDir);
|
|
257604
258012
|
const pluginFunctionNames = new Set(functions.filter((fn) => fn.source.type === "plugin").map((fn) => fn.name));
|
|
257605
258013
|
const remoteFunctions = await runTask2("Fetching functions from Base44", async () => {
|
|
257606
258014
|
const { functions: functions2 } = await listDeployedFunctions();
|
|
@@ -257733,11 +258141,11 @@ function getBuildCommand() {
|
|
|
257733
258141
|
}
|
|
257734
258142
|
|
|
257735
258143
|
// src/cli/commands/project/create.ts
|
|
257736
|
-
import { basename as basename5, resolve as
|
|
258144
|
+
import { basename as basename5, resolve as resolve11 } from "node:path";
|
|
257737
258145
|
var import_kebabCase = __toESM(require_kebabCase(), 1);
|
|
257738
258146
|
|
|
257739
258147
|
// src/cli/commands/project/scaffold-shared.ts
|
|
257740
|
-
import { join as
|
|
258148
|
+
import { join as join26 } from "node:path";
|
|
257741
258149
|
var DEFAULT_TEMPLATE_ID = "backend-only";
|
|
257742
258150
|
async function getTemplateById(templateId) {
|
|
257743
258151
|
const templates = await listTemplates();
|
|
@@ -257800,7 +258208,7 @@ async function completeProjectSetup({
|
|
|
257800
258208
|
env: { VITE_BASE44_APP_ID: projectId }
|
|
257801
258209
|
})`${buildCommand}`;
|
|
257802
258210
|
updateMessage("Deploying site...");
|
|
257803
|
-
return await deploySite(
|
|
258211
|
+
return await deploySite(join26(resolvedPath, outputDirectory));
|
|
257804
258212
|
}, {
|
|
257805
258213
|
successMessage: theme.colors.base44Orange("Site deployed successfully"),
|
|
257806
258214
|
errorMessage: "Failed to deploy site"
|
|
@@ -257929,7 +258337,7 @@ async function createInteractive(options, ctx) {
|
|
|
257929
258337
|
}, ctx);
|
|
257930
258338
|
}
|
|
257931
258339
|
async function createNonInteractive(options, ctx) {
|
|
257932
|
-
ctx.log.info(`Creating a new project at ${
|
|
258340
|
+
ctx.log.info(`Creating a new project at ${resolve11(options.path)}`);
|
|
257933
258341
|
const template2 = await getTemplateById(options.template ?? DEFAULT_TEMPLATE_ID);
|
|
257934
258342
|
return await executeCreate({
|
|
257935
258343
|
template: template2,
|
|
@@ -257953,7 +258361,7 @@ async function executeCreate({
|
|
|
257953
258361
|
}, ctx) {
|
|
257954
258362
|
const { log, runTask: runTask2 } = ctx;
|
|
257955
258363
|
const name2 = rawName.trim();
|
|
257956
|
-
const resolvedPath =
|
|
258364
|
+
const resolvedPath = resolve11(projectPath);
|
|
257957
258365
|
const organizationId = await resolveWorkspaceId(ctx, flagWorkspaceId, isInteractive);
|
|
257958
258366
|
const { projectId } = await runTask2("Setting up your project...", async () => {
|
|
257959
258367
|
return await createProjectFiles({
|
|
@@ -258350,7 +258758,7 @@ async function followLogs(functionNames, options, availableFunctionNames, jsonMo
|
|
|
258350
258758
|
for (const entry of fresh)
|
|
258351
258759
|
writeFollowLine(entry, jsonMode);
|
|
258352
258760
|
first = false;
|
|
258353
|
-
await new Promise((
|
|
258761
|
+
await new Promise((resolve12) => setTimeout(resolve12, 2000));
|
|
258354
258762
|
}
|
|
258355
258763
|
}
|
|
258356
258764
|
function formatLogs(entries, env3) {
|
|
@@ -258472,7 +258880,7 @@ function getLogsCommand() {
|
|
|
258472
258880
|
}
|
|
258473
258881
|
|
|
258474
258882
|
// src/cli/commands/project/scaffold.ts
|
|
258475
|
-
import { basename as basename6, resolve as
|
|
258883
|
+
import { basename as basename6, resolve as resolve12 } from "node:path";
|
|
258476
258884
|
function resolveAppId(options) {
|
|
258477
258885
|
const appId = options.appId;
|
|
258478
258886
|
if (!appId) {
|
|
@@ -258488,7 +258896,7 @@ function resolveAppId(options) {
|
|
|
258488
258896
|
async function scaffoldAction(ctx, name2, options, command2) {
|
|
258489
258897
|
const { log, runTask: runTask2 } = ctx;
|
|
258490
258898
|
const appId = resolveAppId(command2.optsWithGlobals());
|
|
258491
|
-
const resolvedPath =
|
|
258899
|
+
const resolvedPath = resolve12("./");
|
|
258492
258900
|
const projectName = (name2 ?? basename6(resolvedPath)).trim();
|
|
258493
258901
|
const template2 = await getTemplateById("backend-only");
|
|
258494
258902
|
log.info(`Scaffolding project at ${resolvedPath}`);
|
|
@@ -258885,7 +259293,7 @@ function getSecretsListCommand() {
|
|
|
258885
259293
|
}
|
|
258886
259294
|
|
|
258887
259295
|
// src/cli/commands/secrets/set.ts
|
|
258888
|
-
import { resolve as
|
|
259296
|
+
import { resolve as resolve13 } from "node:path";
|
|
258889
259297
|
function parseEntries(entries) {
|
|
258890
259298
|
const secrets = {};
|
|
258891
259299
|
for (const entry of entries) {
|
|
@@ -258916,7 +259324,7 @@ async function setSecretsAction({ log, runTask: runTask2 }, entries, options) {
|
|
|
258916
259324
|
validateInput(entries, options);
|
|
258917
259325
|
let secrets;
|
|
258918
259326
|
if (options.envFile) {
|
|
258919
|
-
secrets = await parseEnvFile(
|
|
259327
|
+
secrets = await parseEnvFile(resolve13(options.envFile));
|
|
258920
259328
|
if (Object.keys(secrets).length === 0) {
|
|
258921
259329
|
throw new InvalidInputError("The env file contains no valid KEY=VALUE entries.");
|
|
258922
259330
|
}
|
|
@@ -258945,81 +259353,123 @@ function getSecretsCommand() {
|
|
|
258945
259353
|
}
|
|
258946
259354
|
|
|
258947
259355
|
// src/cli/commands/site/deploy.ts
|
|
258948
|
-
import { resolve as resolve11 } from "node:path";
|
|
258949
259356
|
async function deployAction2(ctx, options) {
|
|
258950
259357
|
const { isNonInteractive } = ctx;
|
|
258951
259358
|
if (isNonInteractive && !options.yes) {
|
|
258952
259359
|
throw new InvalidInputError("--yes is required in non-interactive mode");
|
|
258953
259360
|
}
|
|
258954
259361
|
const project2 = await readProjectSettings();
|
|
258955
|
-
const
|
|
258956
|
-
if (
|
|
259362
|
+
const planned = await planAppDeploy(project2);
|
|
259363
|
+
if (planned.kind === "none") {
|
|
258957
259364
|
throw new ConfigNotFoundError("No site configuration found.", {
|
|
258958
259365
|
hints: [
|
|
258959
259366
|
{
|
|
258960
259367
|
message: `Add 'site.outputDirectory' to your config.jsonc (e.g., "site": { "outputDirectory": "dist" })`
|
|
259368
|
+
},
|
|
259369
|
+
{
|
|
259370
|
+
message: "Full-stack apps ship from their build artifact — run your framework's build first"
|
|
258961
259371
|
}
|
|
258962
259372
|
]
|
|
258963
259373
|
});
|
|
258964
259374
|
}
|
|
258965
259375
|
if (!options.yes) {
|
|
258966
259376
|
const shouldDeploy = await Re({
|
|
258967
|
-
message: `Deploy site from ${outputDirectory}?`
|
|
259377
|
+
message: planned.kind === "full-stack" ? "Deploy full-stack app?" : `Deploy site from ${project2.site?.outputDirectory}?`
|
|
258968
259378
|
});
|
|
258969
259379
|
if (Ct(shouldDeploy) || !shouldDeploy) {
|
|
258970
259380
|
return { outroMessage: "Deployment cancelled" };
|
|
258971
259381
|
}
|
|
258972
259382
|
}
|
|
258973
259383
|
await maybeBuildBeforeDeploy(ctx, project2, options.build);
|
|
258974
|
-
const
|
|
258975
|
-
|
|
258976
|
-
|
|
258977
|
-
|
|
258978
|
-
|
|
258979
|
-
|
|
258980
|
-
|
|
259384
|
+
const plan = await planAppDeploy(project2);
|
|
259385
|
+
switch (plan.kind) {
|
|
259386
|
+
case "full-stack":
|
|
259387
|
+
return await deployFullStackApp(ctx, project2.root, options);
|
|
259388
|
+
case "static-deployment":
|
|
259389
|
+
return await deployToDeploymentsApi(ctx, project2.root, plan.outputDir, options);
|
|
259390
|
+
case "static":
|
|
259391
|
+
return await deployTarball(ctx, plan.outputDir);
|
|
259392
|
+
case "none":
|
|
259393
|
+
return { outroMessage: "Nothing to deploy" };
|
|
259394
|
+
}
|
|
259395
|
+
}
|
|
259396
|
+
async function deployFullStackApp(ctx, projectRoot, options) {
|
|
259397
|
+
const gitHash = await resolveGitHash(projectRoot, options.gitHash);
|
|
259398
|
+
const { deploymentId } = await runDeployTask(ctx, {
|
|
259399
|
+
start: "Deploying full-stack app...",
|
|
259400
|
+
success: theme.colors.base44Orange("Full-stack app deployed"),
|
|
259401
|
+
error: "Full-stack deploy failed"
|
|
259402
|
+
}, async (progress) => await deployFullStack({
|
|
259403
|
+
projectRoot,
|
|
259404
|
+
gitHash,
|
|
259405
|
+
concurrency: options.concurrency,
|
|
259406
|
+
progress
|
|
259407
|
+
}));
|
|
259408
|
+
return deploymentResult(ctx, deploymentId, gitHash);
|
|
259409
|
+
}
|
|
259410
|
+
async function deployToDeploymentsApi(ctx, projectRoot, outputDir, options) {
|
|
259411
|
+
const gitHash = await resolveGitHash(projectRoot, options.gitHash);
|
|
259412
|
+
const { deploymentId } = await runDeployTask(ctx, {
|
|
259413
|
+
start: "Deploying site...",
|
|
259414
|
+
success: "Site deployed",
|
|
259415
|
+
error: "Site deploy failed"
|
|
259416
|
+
}, async (progress) => await deployStaticSite({
|
|
258981
259417
|
outputDir,
|
|
258982
259418
|
gitHash,
|
|
258983
|
-
concurrency,
|
|
258984
|
-
progress
|
|
258985
|
-
|
|
258986
|
-
|
|
258987
|
-
|
|
258988
|
-
|
|
258989
|
-
|
|
258990
|
-
|
|
258991
|
-
|
|
258992
|
-
|
|
259419
|
+
concurrency: options.concurrency,
|
|
259420
|
+
progress
|
|
259421
|
+
}));
|
|
259422
|
+
return deploymentResult(ctx, deploymentId, gitHash);
|
|
259423
|
+
}
|
|
259424
|
+
async function deployTarball({ runTask: runTask2 }, outputDir) {
|
|
259425
|
+
const { appUrl } = await runTask2("Creating archive and deploying site...", async () => await deploySite(outputDir), {
|
|
259426
|
+
successMessage: "Site deployed successfully",
|
|
259427
|
+
errorMessage: "Deployment failed"
|
|
259428
|
+
});
|
|
259429
|
+
return { outroMessage: `Visit your site at: ${appUrl}` };
|
|
259430
|
+
}
|
|
259431
|
+
async function runDeployTask({ runTask: runTask2, log }, labels, deploy5) {
|
|
259432
|
+
const progressLines = [];
|
|
259433
|
+
const warnings = [];
|
|
259434
|
+
const result = await runTask2(labels.start, async (updateMessage) => await deploy5({
|
|
259435
|
+
onWarning: (message) => {
|
|
259436
|
+
warnings.push(message);
|
|
259437
|
+
},
|
|
259438
|
+
onAssets: ({ totalAssets, newAssets }) => {
|
|
259439
|
+
const line = `Found ${totalAssets} static assets (${newAssets} new)`;
|
|
259440
|
+
progressLines.push(line);
|
|
259441
|
+
updateMessage(line);
|
|
259442
|
+
},
|
|
259443
|
+
onAssetUpload: ({ uploadedFiles, totalFiles }) => {
|
|
259444
|
+
updateMessage(`Uploaded ${uploadedFiles} of ${totalFiles} assets`);
|
|
259445
|
+
},
|
|
259446
|
+
onWorker: ({ moduleCount }) => {
|
|
259447
|
+
updateMessage(`Deploying worker (${moduleCount} modules)…`);
|
|
258993
259448
|
}
|
|
258994
|
-
}), { successMessage:
|
|
259449
|
+
}), { successMessage: labels.success, errorMessage: labels.error });
|
|
258995
259450
|
for (const line of progressLines) {
|
|
258996
259451
|
log.message(theme.styles.dim(line));
|
|
258997
259452
|
}
|
|
259453
|
+
for (const warning of warnings) {
|
|
259454
|
+
log.warn(warning);
|
|
259455
|
+
}
|
|
259456
|
+
return result;
|
|
259457
|
+
}
|
|
259458
|
+
function deploymentResult({ jsonMode }, deploymentId, gitHash) {
|
|
258998
259459
|
return {
|
|
258999
259460
|
outroMessage: `Deployment ${deploymentId} (commit ${gitHash.slice(0, 12)})`,
|
|
259000
259461
|
stdout: jsonMode ? `${JSON.stringify({ deploymentId, gitHash }, null, 2)}
|
|
259001
259462
|
` : undefined
|
|
259002
259463
|
};
|
|
259003
259464
|
}
|
|
259004
|
-
async function deployTarball({ runTask: runTask2 }, outputDir) {
|
|
259005
|
-
const { appUrl } = await runTask2("Creating archive and deploying site...", async () => await deploySite(outputDir), {
|
|
259006
|
-
successMessage: "Site deployed successfully",
|
|
259007
|
-
errorMessage: "Deployment failed"
|
|
259008
|
-
});
|
|
259009
|
-
return { outroMessage: `Visit your site at: ${appUrl}` };
|
|
259010
|
-
}
|
|
259011
259465
|
function getSiteDeployCommand() {
|
|
259012
|
-
|
|
259013
|
-
|
|
259014
|
-
|
|
259015
|
-
|
|
259016
|
-
|
|
259017
|
-
}
|
|
259018
|
-
return value;
|
|
259019
|
-
}));
|
|
259020
|
-
command2.addOption(new Option("--concurrency <n>", "Parallel asset uploads").default(DEFAULT_UPLOAD_CONCURRENCY).argParser(parseConcurrency));
|
|
259466
|
+
return new Base44Command("deploy").description("Deploy the built site to Base44 hosting (full-stack apps deploy their Workers build)").option("-y, --yes", "Skip confirmation prompt").option("--build", "Build the site before deploying (skips the prompt)").option("--no-build", "Deploy without building (skips the prompt)").addOption(new Option("--git-hash <hash>", "Commit the build came from (defaults to the checkout's HEAD)").argParser(parseGitHash)).addOption(new Option("--concurrency <n>", "Parallel asset uploads").default(DEFAULT_UPLOAD_CONCURRENCY).argParser(parseConcurrency)).action(deployAction2);
|
|
259467
|
+
}
|
|
259468
|
+
function parseGitHash(value) {
|
|
259469
|
+
if (!isGitCommitHash(value)) {
|
|
259470
|
+
throw new InvalidArgumentError("Expected a git commit hash (7-64 hex chars).");
|
|
259021
259471
|
}
|
|
259022
|
-
return
|
|
259472
|
+
return value;
|
|
259023
259473
|
}
|
|
259024
259474
|
function parseConcurrency(value) {
|
|
259025
259475
|
const parsed = Number(value);
|
|
@@ -259028,10 +259478,6 @@ function parseConcurrency(value) {
|
|
|
259028
259478
|
}
|
|
259029
259479
|
return parsed;
|
|
259030
259480
|
}
|
|
259031
|
-
function staticDeploymentsEnabled(env3 = process.env) {
|
|
259032
|
-
const value = env3.BASE44_STATIC_DEPLOYMENTS;
|
|
259033
|
-
return value === "1" || value === "true";
|
|
259034
|
-
}
|
|
259035
259481
|
|
|
259036
259482
|
// src/cli/commands/site/open.ts
|
|
259037
259483
|
async function openAction({
|
|
@@ -259137,10 +259583,10 @@ function toPascalCase(name2) {
|
|
|
259137
259583
|
return name2.split(/[-_\s]+/).map((w8) => w8.charAt(0).toUpperCase() + w8.slice(1)).join("");
|
|
259138
259584
|
}
|
|
259139
259585
|
// src/core/types/update-project.ts
|
|
259140
|
-
import { join as
|
|
259586
|
+
import { join as join29 } from "node:path";
|
|
259141
259587
|
var TYPES_INCLUDE_PATH = `${PROJECT_SUBDIR}/${TYPES_OUTPUT_SUBDIR}/*.d.ts`;
|
|
259142
259588
|
async function updateProjectConfig(projectRoot) {
|
|
259143
|
-
const tsconfigPath =
|
|
259589
|
+
const tsconfigPath = join29(projectRoot, "tsconfig.json");
|
|
259144
259590
|
if (!await pathExists(tsconfigPath)) {
|
|
259145
259591
|
return false;
|
|
259146
259592
|
}
|
|
@@ -259604,7 +260050,7 @@ function createDevLogger(label2, labelColor = theme.styles.dim) {
|
|
|
259604
260050
|
// src/cli/dev/dev-server/main.ts
|
|
259605
260051
|
var import_cors = __toESM(require_lib4(), 1);
|
|
259606
260052
|
var import_express6 = __toESM(require_express(), 1);
|
|
259607
|
-
import { dirname as
|
|
260053
|
+
import { dirname as dirname24, join as join36 } from "node:path";
|
|
259608
260054
|
|
|
259609
260055
|
// ../../node_modules/get-port/index.js
|
|
259610
260056
|
import net from "node:net";
|
|
@@ -259631,14 +260077,14 @@ var getLocalHosts = () => {
|
|
|
259631
260077
|
}
|
|
259632
260078
|
return results;
|
|
259633
260079
|
};
|
|
259634
|
-
var checkAvailablePort = (options8) => new Promise((
|
|
260080
|
+
var checkAvailablePort = (options8) => new Promise((resolve15, reject) => {
|
|
259635
260081
|
const server = net.createServer();
|
|
259636
260082
|
server.unref();
|
|
259637
260083
|
server.on("error", reject);
|
|
259638
260084
|
server.listen(options8, () => {
|
|
259639
260085
|
const { port } = server.address();
|
|
259640
260086
|
server.close(() => {
|
|
259641
|
-
|
|
260087
|
+
resolve15(port);
|
|
259642
260088
|
});
|
|
259643
260089
|
});
|
|
259644
260090
|
});
|
|
@@ -259739,7 +260185,7 @@ var $setGracefulCleanup = tmp.setGracefulCleanup;
|
|
|
259739
260185
|
|
|
259740
260186
|
// src/cli/dev/dev-server/function-manager.ts
|
|
259741
260187
|
import { spawn as spawn2 } from "node:child_process";
|
|
259742
|
-
import { dirname as
|
|
260188
|
+
import { dirname as dirname21, join as join30 } from "node:path";
|
|
259743
260189
|
import { pathToFileURL } from "node:url";
|
|
259744
260190
|
|
|
259745
260191
|
// src/cli/dev/dev-server/base-function-manager.ts
|
|
@@ -259844,7 +260290,7 @@ class FunctionManager extends BaseFunctionManager {
|
|
|
259844
260290
|
}
|
|
259845
260291
|
spawnFunction(func, port) {
|
|
259846
260292
|
this.logger.log(`Spawning function "${func.name}" on port ${port}`);
|
|
259847
|
-
const importMapPath =
|
|
260293
|
+
const importMapPath = join30(dirname21(this.wrapperPath), "import-map.json");
|
|
259848
260294
|
const process23 = spawn2("deno", ["run", "--allow-all", "--import-map", importMapPath, this.wrapperPath], {
|
|
259849
260295
|
env: {
|
|
259850
260296
|
...globalThis.process.env,
|
|
@@ -259883,7 +260329,7 @@ class FunctionManager extends BaseFunctionManager {
|
|
|
259883
260329
|
});
|
|
259884
260330
|
}
|
|
259885
260331
|
waitForReady(name2, runningFunc) {
|
|
259886
|
-
return new Promise((
|
|
260332
|
+
return new Promise((resolve15, reject) => {
|
|
259887
260333
|
runningFunc.process.on("exit", (code2) => {
|
|
259888
260334
|
if (!runningFunc.ready) {
|
|
259889
260335
|
clearTimeout(timeout3);
|
|
@@ -259906,7 +260352,7 @@ class FunctionManager extends BaseFunctionManager {
|
|
|
259906
260352
|
runningFunc.ready = true;
|
|
259907
260353
|
clearTimeout(timeout3);
|
|
259908
260354
|
runningFunc.process.stdout?.off("data", onData);
|
|
259909
|
-
|
|
260355
|
+
resolve15(runningFunc.port);
|
|
259910
260356
|
}
|
|
259911
260357
|
};
|
|
259912
260358
|
runningFunc.process.stdout?.on("data", onData);
|
|
@@ -259918,7 +260364,7 @@ class FunctionManager extends BaseFunctionManager {
|
|
|
259918
260364
|
import { mkdirSync as mkdirSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
259919
260365
|
import { isBuiltin } from "node:module";
|
|
259920
260366
|
import { homedir as homedir3 } from "node:os";
|
|
259921
|
-
import { join as
|
|
260367
|
+
import { join as join31 } from "node:path";
|
|
259922
260368
|
import { pathToFileURL as pathToFileURL6 } from "node:url";
|
|
259923
260369
|
var depsPromise;
|
|
259924
260370
|
function loadDeps() {
|
|
@@ -260039,9 +260485,9 @@ export default {
|
|
|
260039
260485
|
};
|
|
260040
260486
|
`;
|
|
260041
260487
|
function ensureBundlerConfig() {
|
|
260042
|
-
const dir =
|
|
260488
|
+
const dir = join31(homedir3(), ".base44", "function-bundler");
|
|
260043
260489
|
mkdirSync2(dir, { recursive: true });
|
|
260044
|
-
const configPath =
|
|
260490
|
+
const configPath = join31(dir, "deno.json");
|
|
260045
260491
|
writeFileSync2(configPath, `${JSON.stringify({ nodeModulesDir: "auto" }, null, 2)}
|
|
260046
260492
|
`);
|
|
260047
260493
|
return configPath;
|
|
@@ -261511,16 +261957,16 @@ function createCustomIntegrationRoutes(remoteProxy, logger2) {
|
|
|
261511
261957
|
|
|
261512
261958
|
// src/cli/dev/dev-server/watcher.ts
|
|
261513
261959
|
import { EventEmitter as EventEmitter4 } from "node:events";
|
|
261514
|
-
import { relative as
|
|
261960
|
+
import { relative as relative7 } from "node:path";
|
|
261515
261961
|
|
|
261516
261962
|
// ../../node_modules/chokidar/index.js
|
|
261517
261963
|
import { EventEmitter as EventEmitter3 } from "node:events";
|
|
261518
261964
|
import { stat as statcb, Stats } from "node:fs";
|
|
261519
|
-
import { readdir as readdir3, stat as
|
|
261965
|
+
import { readdir as readdir3, stat as stat6 } from "node:fs/promises";
|
|
261520
261966
|
import * as sp3 from "node:path";
|
|
261521
261967
|
|
|
261522
261968
|
// ../../node_modules/readdirp/index.js
|
|
261523
|
-
import { lstat as lstat2, readdir as readdir2, realpath, stat as
|
|
261969
|
+
import { lstat as lstat2, readdir as readdir2, realpath, stat as stat4 } from "node:fs/promises";
|
|
261524
261970
|
import { join as pjoin, relative as prelative, resolve as presolve, sep as psep } from "node:path";
|
|
261525
261971
|
import { Readable as Readable6 } from "node:stream";
|
|
261526
261972
|
var EntryTypes = {
|
|
@@ -261602,7 +262048,7 @@ class ReaddirpStream extends Readable6 {
|
|
|
261602
262048
|
const { root: root2, type } = opts;
|
|
261603
262049
|
this._fileFilter = normalizeFilter(opts.fileFilter);
|
|
261604
262050
|
this._directoryFilter = normalizeFilter(opts.directoryFilter);
|
|
261605
|
-
const statMethod = opts.lstat ? lstat2 :
|
|
262051
|
+
const statMethod = opts.lstat ? lstat2 : stat4;
|
|
261606
262052
|
if (wantBigintFsStats) {
|
|
261607
262053
|
this._stat = (path19) => statMethod(path19, { bigint: true });
|
|
261608
262054
|
} else {
|
|
@@ -261755,7 +262201,7 @@ function readdirp(root2, options8 = {}) {
|
|
|
261755
262201
|
|
|
261756
262202
|
// ../../node_modules/chokidar/handler.js
|
|
261757
262203
|
import { watch as fs_watch, unwatchFile, watchFile } from "node:fs";
|
|
261758
|
-
import { realpath as fsrealpath, lstat as lstat3, open as open2, stat as
|
|
262204
|
+
import { realpath as fsrealpath, lstat as lstat3, open as open2, stat as stat5 } from "node:fs/promises";
|
|
261759
262205
|
import { type as osType } from "node:os";
|
|
261760
262206
|
import * as sp2 from "node:path";
|
|
261761
262207
|
var STR_DATA = "data";
|
|
@@ -261781,7 +262227,7 @@ var EVENTS = {
|
|
|
261781
262227
|
};
|
|
261782
262228
|
var EV = EVENTS;
|
|
261783
262229
|
var THROTTLE_MODE_WATCH = "watch";
|
|
261784
|
-
var statMethods = { lstat: lstat3, stat:
|
|
262230
|
+
var statMethods = { lstat: lstat3, stat: stat5 };
|
|
261785
262231
|
var KEY_LISTENERS = "listeners";
|
|
261786
262232
|
var KEY_ERR = "errHandlers";
|
|
261787
262233
|
var KEY_RAW = "rawEmitters";
|
|
@@ -262241,9 +262687,9 @@ class NodeFsHandler {
|
|
|
262241
262687
|
if (this.fsw.closed) {
|
|
262242
262688
|
return;
|
|
262243
262689
|
}
|
|
262244
|
-
const
|
|
262690
|
+
const dirname23 = sp2.dirname(file2);
|
|
262245
262691
|
const basename8 = sp2.basename(file2);
|
|
262246
|
-
const parent = this.fsw._getWatchedDir(
|
|
262692
|
+
const parent = this.fsw._getWatchedDir(dirname23);
|
|
262247
262693
|
let prevStats = stats;
|
|
262248
262694
|
if (parent.has(basename8))
|
|
262249
262695
|
return;
|
|
@@ -262252,7 +262698,7 @@ class NodeFsHandler {
|
|
|
262252
262698
|
return;
|
|
262253
262699
|
if (!newStats || newStats.mtimeMs === 0) {
|
|
262254
262700
|
try {
|
|
262255
|
-
const newStats2 = await
|
|
262701
|
+
const newStats2 = await stat5(file2);
|
|
262256
262702
|
if (this.fsw.closed)
|
|
262257
262703
|
return;
|
|
262258
262704
|
const at13 = newStats2.atimeMs;
|
|
@@ -262270,7 +262716,7 @@ class NodeFsHandler {
|
|
|
262270
262716
|
prevStats = newStats2;
|
|
262271
262717
|
}
|
|
262272
262718
|
} catch (error48) {
|
|
262273
|
-
this.fsw._remove(
|
|
262719
|
+
this.fsw._remove(dirname23, basename8);
|
|
262274
262720
|
}
|
|
262275
262721
|
} else if (parent.has(basename8)) {
|
|
262276
262722
|
const at13 = newStats.atimeMs;
|
|
@@ -262359,7 +262805,7 @@ class NodeFsHandler {
|
|
|
262359
262805
|
this._addToNodeFs(path19, initialAdd, wh2, depth + 1);
|
|
262360
262806
|
}
|
|
262361
262807
|
}).on(EV.ERROR, this._boundHandleError);
|
|
262362
|
-
return new Promise((
|
|
262808
|
+
return new Promise((resolve16, reject) => {
|
|
262363
262809
|
if (!stream)
|
|
262364
262810
|
return reject();
|
|
262365
262811
|
stream.once(STR_END, () => {
|
|
@@ -262368,7 +262814,7 @@ class NodeFsHandler {
|
|
|
262368
262814
|
return;
|
|
262369
262815
|
}
|
|
262370
262816
|
const wasThrottled = throttler ? throttler.clear() : false;
|
|
262371
|
-
|
|
262817
|
+
resolve16(undefined);
|
|
262372
262818
|
previous.getChildren().filter((item) => {
|
|
262373
262819
|
return item !== directory && !current.has(item);
|
|
262374
262820
|
}).forEach((item) => {
|
|
@@ -262493,11 +262939,11 @@ function createPattern(matcher) {
|
|
|
262493
262939
|
if (matcher.path === string4)
|
|
262494
262940
|
return true;
|
|
262495
262941
|
if (matcher.recursive) {
|
|
262496
|
-
const
|
|
262497
|
-
if (!
|
|
262942
|
+
const relative7 = sp3.relative(matcher.path, string4);
|
|
262943
|
+
if (!relative7) {
|
|
262498
262944
|
return false;
|
|
262499
262945
|
}
|
|
262500
|
-
return !
|
|
262946
|
+
return !relative7.startsWith("..") && !sp3.isAbsolute(relative7);
|
|
262501
262947
|
}
|
|
262502
262948
|
return false;
|
|
262503
262949
|
};
|
|
@@ -262924,7 +263370,7 @@ class FSWatcher extends EventEmitter3 {
|
|
|
262924
263370
|
const fullPath = opts.cwd ? sp3.join(opts.cwd, path19) : path19;
|
|
262925
263371
|
let stats2;
|
|
262926
263372
|
try {
|
|
262927
|
-
stats2 = await
|
|
263373
|
+
stats2 = await stat6(fullPath);
|
|
262928
263374
|
} catch (err) {}
|
|
262929
263375
|
if (!stats2 || this.closed)
|
|
262930
263376
|
return;
|
|
@@ -263028,8 +263474,8 @@ class FSWatcher extends EventEmitter3 {
|
|
|
263028
263474
|
}
|
|
263029
263475
|
return this._userIgnored(path19, stats);
|
|
263030
263476
|
}
|
|
263031
|
-
_isntIgnored(path19,
|
|
263032
|
-
return !this._isIgnored(path19,
|
|
263477
|
+
_isntIgnored(path19, stat7) {
|
|
263478
|
+
return !this._isIgnored(path19, stat7);
|
|
263033
263479
|
}
|
|
263034
263480
|
_getWatchHelpers(path19) {
|
|
263035
263481
|
return new WatchHelper(path19, this.options.followSymlinks, this);
|
|
@@ -263196,7 +263642,7 @@ class WatchBase44 extends EventEmitter4 {
|
|
|
263196
263642
|
ignoreInitial: true
|
|
263197
263643
|
});
|
|
263198
263644
|
watcher.on("all", import_debounce.default(async (_event, path19) => {
|
|
263199
|
-
this.emit("change", name2,
|
|
263645
|
+
this.emit("change", name2, relative7(targetPath, path19));
|
|
263200
263646
|
}, WATCH_DEBOUNCE_MS));
|
|
263201
263647
|
watcher.on("error", (err) => {
|
|
263202
263648
|
this.logger.error(`Watch handler failed for ${targetPath}`, err);
|
|
@@ -263285,7 +263731,7 @@ async function createDevServer(options8) {
|
|
|
263285
263731
|
}
|
|
263286
263732
|
remoteProxy(req, res, next);
|
|
263287
263733
|
});
|
|
263288
|
-
const server = await new Promise((
|
|
263734
|
+
const server = await new Promise((resolve17, reject) => {
|
|
263289
263735
|
const s5 = app.listen(port, "127.0.0.1", (err) => {
|
|
263290
263736
|
if (err) {
|
|
263291
263737
|
if ("code" in err && err.code === "EADDRINUSE") {
|
|
@@ -263294,7 +263740,7 @@ async function createDevServer(options8) {
|
|
|
263294
263740
|
reject(err);
|
|
263295
263741
|
}
|
|
263296
263742
|
} else {
|
|
263297
|
-
|
|
263743
|
+
resolve17(s5);
|
|
263298
263744
|
}
|
|
263299
263745
|
});
|
|
263300
263746
|
});
|
|
@@ -263303,8 +263749,8 @@ async function createDevServer(options8) {
|
|
|
263303
263749
|
broadcastEntityEvent(io6, appId, entityName, event);
|
|
263304
263750
|
};
|
|
263305
263751
|
const base44ConfigWatcher = new WatchBase44({
|
|
263306
|
-
functions:
|
|
263307
|
-
entities:
|
|
263752
|
+
functions: join36(dirname24(project2.configPath), project2.functionsDir),
|
|
263753
|
+
entities: join36(dirname24(project2.configPath), project2.entitiesDir)
|
|
263308
263754
|
}, devLogger);
|
|
263309
263755
|
base44ConfigWatcher.on("change", async (name2) => {
|
|
263310
263756
|
try {
|
|
@@ -263344,13 +263790,13 @@ async function createDevServer(options8) {
|
|
|
263344
263790
|
if (!server.listening) {
|
|
263345
263791
|
return;
|
|
263346
263792
|
}
|
|
263347
|
-
await new Promise((
|
|
263793
|
+
await new Promise((resolve17, reject) => {
|
|
263348
263794
|
server.close((error48) => {
|
|
263349
263795
|
if (error48) {
|
|
263350
263796
|
reject(error48);
|
|
263351
263797
|
return;
|
|
263352
263798
|
}
|
|
263353
|
-
|
|
263799
|
+
resolve17();
|
|
263354
263800
|
});
|
|
263355
263801
|
});
|
|
263356
263802
|
};
|
|
@@ -263421,15 +263867,15 @@ class ServeRunner {
|
|
|
263421
263867
|
return;
|
|
263422
263868
|
}
|
|
263423
263869
|
this.stopping = true;
|
|
263424
|
-
const exited = new Promise((
|
|
263870
|
+
const exited = new Promise((resolve17) => child.once("exit", () => resolve17()));
|
|
263425
263871
|
if (process23.platform === "win32" && child.pid) {
|
|
263426
263872
|
const taskkill = spawn3("taskkill", ["/pid", String(child.pid), "/T", "/F"], {
|
|
263427
263873
|
stdio: "ignore",
|
|
263428
263874
|
windowsHide: true
|
|
263429
263875
|
});
|
|
263430
|
-
await new Promise((
|
|
263431
|
-
taskkill.once("exit", () =>
|
|
263432
|
-
taskkill.once("error", () =>
|
|
263876
|
+
await new Promise((resolve17) => {
|
|
263877
|
+
taskkill.once("exit", () => resolve17());
|
|
263878
|
+
taskkill.once("error", () => resolve17());
|
|
263433
263879
|
});
|
|
263434
263880
|
} else if (child.pid) {
|
|
263435
263881
|
try {
|
|
@@ -263624,13 +264070,13 @@ async function runScript(options8) {
|
|
|
263624
264070
|
}
|
|
263625
264071
|
// src/cli/commands/exec.ts
|
|
263626
264072
|
function readStdin2() {
|
|
263627
|
-
return new Promise((
|
|
264073
|
+
return new Promise((resolve17, reject) => {
|
|
263628
264074
|
let data = "";
|
|
263629
264075
|
process.stdin.setEncoding("utf-8");
|
|
263630
264076
|
process.stdin.on("data", (chunk) => {
|
|
263631
264077
|
data += chunk;
|
|
263632
264078
|
});
|
|
263633
|
-
process.stdin.on("end", () =>
|
|
264079
|
+
process.stdin.on("end", () => resolve17(data));
|
|
263634
264080
|
process.stdin.on("error", reject);
|
|
263635
264081
|
});
|
|
263636
264082
|
}
|
|
@@ -263701,7 +264147,7 @@ Examples:
|
|
|
263701
264147
|
}
|
|
263702
264148
|
|
|
263703
264149
|
// src/cli/commands/project/eject.ts
|
|
263704
|
-
import { resolve as
|
|
264150
|
+
import { resolve as resolve17 } from "node:path";
|
|
263705
264151
|
var import_kebabCase2 = __toESM(require_kebabCase(), 1);
|
|
263706
264152
|
async function eject(ctx, options8, command2) {
|
|
263707
264153
|
const { log, runTask: runTask2, isNonInteractive } = ctx;
|
|
@@ -263765,7 +264211,7 @@ async function eject(ctx, options8, command2) {
|
|
|
263765
264211
|
Ne("Operation cancelled.");
|
|
263766
264212
|
throw new CLIExitError(0);
|
|
263767
264213
|
}
|
|
263768
|
-
const resolvedPath =
|
|
264214
|
+
const resolvedPath = resolve17(selectedPath);
|
|
263769
264215
|
await runTask2("Downloading your project's code...", async (updateMessage) => {
|
|
263770
264216
|
await createProjectFilesForExistingProject({
|
|
263771
264217
|
projectId,
|
|
@@ -263859,7 +264305,7 @@ var import_detect_agent = __toESM(require_dist5(), 1);
|
|
|
263859
264305
|
import { release, type } from "node:os";
|
|
263860
264306
|
|
|
263861
264307
|
// ../../node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
|
|
263862
|
-
import { dirname as
|
|
264308
|
+
import { dirname as dirname25, posix, sep as sep2 } from "path";
|
|
263863
264309
|
function createModulerModifier() {
|
|
263864
264310
|
const getModuleFromFileName = createGetModuleFromFilename();
|
|
263865
264311
|
return async (frames) => {
|
|
@@ -263868,7 +264314,7 @@ function createModulerModifier() {
|
|
|
263868
264314
|
return frames;
|
|
263869
264315
|
};
|
|
263870
264316
|
}
|
|
263871
|
-
function createGetModuleFromFilename(basePath = process.argv[1] ?
|
|
264317
|
+
function createGetModuleFromFilename(basePath = process.argv[1] ? dirname25(process.argv[1]) : process.cwd(), isWindows5 = sep2 === "\\") {
|
|
263872
264318
|
const normalizedBase = isWindows5 ? normalizeWindowsPath2(basePath) : basePath;
|
|
263873
264319
|
return (filename) => {
|
|
263874
264320
|
if (!filename)
|
|
@@ -266146,14 +266592,14 @@ async function addSourceContext(frames) {
|
|
|
266146
266592
|
return frames;
|
|
266147
266593
|
}
|
|
266148
266594
|
function getContextLinesFromFile(path19, ranges, output) {
|
|
266149
|
-
return new Promise((
|
|
266595
|
+
return new Promise((resolve18) => {
|
|
266150
266596
|
const stream = createReadStream2(path19);
|
|
266151
266597
|
const lineReaded = createInterface2({
|
|
266152
266598
|
input: stream
|
|
266153
266599
|
});
|
|
266154
266600
|
function destroyStreamAndResolve() {
|
|
266155
266601
|
stream.destroy();
|
|
266156
|
-
|
|
266602
|
+
resolve18();
|
|
266157
266603
|
}
|
|
266158
266604
|
let lineNumber = 0;
|
|
266159
266605
|
let currentRangeIndex = 0;
|
|
@@ -267265,15 +267711,15 @@ class PostHogBackendClient extends PostHogCoreStateless {
|
|
|
267265
267711
|
return true;
|
|
267266
267712
|
if (this.featureFlagsPoller === undefined)
|
|
267267
267713
|
return false;
|
|
267268
|
-
return new Promise((
|
|
267714
|
+
return new Promise((resolve18) => {
|
|
267269
267715
|
const timeout3 = setTimeout(() => {
|
|
267270
267716
|
cleanup();
|
|
267271
|
-
|
|
267717
|
+
resolve18(false);
|
|
267272
267718
|
}, timeoutMs);
|
|
267273
267719
|
const cleanup = this._events.on("localEvaluationFlagsLoaded", (count2) => {
|
|
267274
267720
|
clearTimeout(timeout3);
|
|
267275
267721
|
cleanup();
|
|
267276
|
-
|
|
267722
|
+
resolve18(count2 > 0);
|
|
267277
267723
|
});
|
|
267278
267724
|
});
|
|
267279
267725
|
}
|
|
@@ -268057,9 +268503,9 @@ function addCommandInfoToErrorReporter(program2, errorReporter) {
|
|
|
268057
268503
|
});
|
|
268058
268504
|
}
|
|
268059
268505
|
// src/cli/index.ts
|
|
268060
|
-
var __dirname4 =
|
|
268506
|
+
var __dirname4 = dirname26(fileURLToPath6(import.meta.url));
|
|
268061
268507
|
async function runCLI(options8) {
|
|
268062
|
-
ensureNpmAssets(
|
|
268508
|
+
ensureNpmAssets(join37(__dirname4, "../assets"));
|
|
268063
268509
|
const errorReporter = new ErrorReporter;
|
|
268064
268510
|
errorReporter.registerProcessErrorHandlers();
|
|
268065
268511
|
const jsonMode = process.argv.includes("--json");
|
|
@@ -268098,4 +268544,4 @@ export {
|
|
|
268098
268544
|
runCLI
|
|
268099
268545
|
};
|
|
268100
268546
|
|
|
268101
|
-
//# debugId=
|
|
268547
|
+
//# debugId=38E334A0515CDEB464756E2164756E21
|