@base44-preview/cli 0.1.17-pr.635.fd9bbfb → 0.1.17-pr.638.76ba6a7
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.
|
@@ -8,7 +8,7 @@ A simple todo list app built with React and Base44 backend.
|
|
|
8
8
|
base44/ # Backend configuration
|
|
9
9
|
├── config.jsonc # Project settings
|
|
10
10
|
└── entities/ # Data schemas
|
|
11
|
-
└──
|
|
11
|
+
└── Task.jsonc # Task entity
|
|
12
12
|
|
|
13
13
|
src/ # Frontend code
|
|
14
14
|
├── App.jsx # Main todo app
|
package/dist/cli/index.js
CHANGED
|
@@ -119090,7 +119090,7 @@ import path52 from "path";
|
|
|
119090
119090
|
import * as path42 from "path";
|
|
119091
119091
|
import * as fs26 from "fs/promises";
|
|
119092
119092
|
import * as path22 from "path";
|
|
119093
|
-
import
|
|
119093
|
+
import process22 from "process";
|
|
119094
119094
|
import * as path32 from "path";
|
|
119095
119095
|
import process32 from "process";
|
|
119096
119096
|
import path92 from "path";
|
|
@@ -119622,7 +119622,7 @@ function partition2(array2, predicate) {
|
|
|
119622
119622
|
return result;
|
|
119623
119623
|
}
|
|
119624
119624
|
async function findInDirectory(nameOrNames, { typeCheck, cwd, allowSymlinks = true, filter: filter2 }) {
|
|
119625
|
-
const directory = toAbsolutePath(cwd) ??
|
|
119625
|
+
const directory = toAbsolutePath(cwd) ?? process22.cwd();
|
|
119626
119626
|
const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];
|
|
119627
119627
|
for (const name of names) {
|
|
119628
119628
|
const fileOrDirectory = path22.join(directory, name);
|
|
@@ -146002,10 +146002,10 @@ __export(exports_supports_color, {
|
|
|
146002
146002
|
createSupportsColor: () => createSupportsColor2,
|
|
146003
146003
|
default: () => supports_color_default2
|
|
146004
146004
|
});
|
|
146005
|
-
import
|
|
146005
|
+
import process21 from "node:process";
|
|
146006
146006
|
import os9 from "node:os";
|
|
146007
146007
|
import tty4 from "node:tty";
|
|
146008
|
-
function hasFlag2(flag, argv = globalThis.Deno ? globalThis.Deno.args :
|
|
146008
|
+
function hasFlag2(flag, argv = globalThis.Deno ? globalThis.Deno.args : process21.argv) {
|
|
146009
146009
|
const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
|
146010
146010
|
const position = argv.indexOf(prefix + flag);
|
|
146011
146011
|
const terminatorPosition = argv.indexOf("--");
|
|
@@ -146068,7 +146068,7 @@ function _supportsColor2(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
|
|
|
146068
146068
|
if (env3.TERM === "dumb") {
|
|
146069
146069
|
return min;
|
|
146070
146070
|
}
|
|
146071
|
-
if (
|
|
146071
|
+
if (process21.platform === "win32") {
|
|
146072
146072
|
const osRelease = os9.release().split(".");
|
|
146073
146073
|
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
|
|
146074
146074
|
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
@@ -146130,7 +146130,7 @@ function createSupportsColor2(stream, options = {}) {
|
|
|
146130
146130
|
}
|
|
146131
146131
|
var env3, flagForceColor2, supportsColor2, supports_color_default2;
|
|
146132
146132
|
var init_supports_color = __esm(() => {
|
|
146133
|
-
({ env: env3 } =
|
|
146133
|
+
({ env: env3 } = process21);
|
|
146134
146134
|
if (hasFlag2("no-color") || hasFlag2("no-colors") || hasFlag2("color=false") || hasFlag2("color=never")) {
|
|
146135
146135
|
flagForceColor2 = 0;
|
|
146136
146136
|
} else if (hasFlag2("color") || hasFlag2("colors") || hasFlag2("color=true") || hasFlag2("color=always")) {
|
|
@@ -230721,10 +230721,7 @@ var SiteConfigSchema = object({
|
|
|
230721
230721
|
buildCommand: string2().default("npm run build"),
|
|
230722
230722
|
serveCommand: string2().optional(),
|
|
230723
230723
|
outputDirectory: string2().optional(),
|
|
230724
|
-
installCommand: string2().default("npm install")
|
|
230725
|
-
devHostFlag: string2().default("--host"),
|
|
230726
|
-
devHost: string2().default("0.0.0.0"),
|
|
230727
|
-
devPort: number2().int().min(1).max(65535).default(5173)
|
|
230724
|
+
installCommand: string2().default("npm install")
|
|
230728
230725
|
});
|
|
230729
230726
|
var PluginMetadataSchema = object({
|
|
230730
230727
|
namespace: string2().min(1, "Plugin namespace cannot be empty").regex(/^[a-zA-Z0-9_-]+$/, "Plugin namespace can only contain letters, numbers, underscores, and dashes")
|
|
@@ -246709,35 +246706,6 @@ async function gitHead(projectRoot) {
|
|
|
246709
246706
|
return null;
|
|
246710
246707
|
}
|
|
246711
246708
|
}
|
|
246712
|
-
// src/core/site/serve-command.ts
|
|
246713
|
-
var DEFAULT_SERVE_COMMAND = "npm run dev";
|
|
246714
|
-
var SCRIPT = "[A-Za-z0-9:_.-]+";
|
|
246715
|
-
var PREFIX2 = "[A-Za-z0-9._/-]+";
|
|
246716
|
-
var SCRIPT_RUNNERS = [
|
|
246717
|
-
{
|
|
246718
|
-
pattern: new RegExp(String.raw`^npm(\s+--prefix\s+${PREFIX2})?\s+run\s+${SCRIPT}$`),
|
|
246719
|
-
separator: " -- "
|
|
246720
|
-
},
|
|
246721
|
-
{
|
|
246722
|
-
pattern: new RegExp(String.raw`^(?:pnpm|yarn|bun)(\s+run)?\s+${SCRIPT}$`),
|
|
246723
|
-
separator: " "
|
|
246724
|
-
}
|
|
246725
|
-
];
|
|
246726
|
-
function runnerFor(serveCommand) {
|
|
246727
|
-
return SCRIPT_RUNNERS.find((runner) => runner.pattern.test(serveCommand));
|
|
246728
|
-
}
|
|
246729
|
-
function withServeAddress(serveCommand, { host, port, hostFlag }) {
|
|
246730
|
-
const command = serveCommand.trim();
|
|
246731
|
-
const args = [hostFlag, host, "--port", String(port)];
|
|
246732
|
-
const runner = runnerFor(command);
|
|
246733
|
-
if (!runner) {
|
|
246734
|
-
return { command, droppedAddress: true };
|
|
246735
|
-
}
|
|
246736
|
-
return {
|
|
246737
|
-
command: `${command}${runner.separator}${args.join(" ")}`,
|
|
246738
|
-
droppedAddress: false
|
|
246739
|
-
};
|
|
246740
|
-
}
|
|
246741
246709
|
// src/core/project/deploy.ts
|
|
246742
246710
|
function hasResourcesToDeploy(projectData) {
|
|
246743
246711
|
const {
|
|
@@ -249640,7 +249608,7 @@ async function buildAction(ctx) {
|
|
|
249640
249608
|
};
|
|
249641
249609
|
}
|
|
249642
249610
|
function getBuildCommand() {
|
|
249643
|
-
return new Base44Command("build"
|
|
249611
|
+
return new Base44Command("build").description("Build the site with the Base44 app id injected").action(buildAction);
|
|
249644
249612
|
}
|
|
249645
249613
|
|
|
249646
249614
|
// src/cli/commands/project/create.ts
|
|
@@ -250037,36 +250005,6 @@ function printStripeResult(r, log) {
|
|
|
250037
250005
|
log.info(` Connectors dashboard: ${theme.colors.links(getConnectorsUrl())}`);
|
|
250038
250006
|
}
|
|
250039
250007
|
|
|
250040
|
-
// src/cli/commands/project/install.ts
|
|
250041
|
-
async function installAction({
|
|
250042
|
-
runTask
|
|
250043
|
-
}) {
|
|
250044
|
-
const { project } = await readProjectConfig();
|
|
250045
|
-
const installCommand = project.site?.installCommand;
|
|
250046
|
-
if (!installCommand) {
|
|
250047
|
-
throw new ConfigNotFoundError("No site install command found.", {
|
|
250048
|
-
hints: [
|
|
250049
|
-
{
|
|
250050
|
-
message: `Add a 'site' block to your config.jsonc (e.g., "site": { "installCommand": "npm ci" }). Inside one, installCommand defaults to "npm install".`
|
|
250051
|
-
}
|
|
250052
|
-
]
|
|
250053
|
-
});
|
|
250054
|
-
}
|
|
250055
|
-
await runTask("Installing site dependencies...", () => execa({ cwd: project.root, shell: true })`${installCommand}`, {
|
|
250056
|
-
successMessage: "Dependencies installed",
|
|
250057
|
-
errorMessage: "Install failed"
|
|
250058
|
-
});
|
|
250059
|
-
return {
|
|
250060
|
-
outroMessage: `Installed with ${theme.styles.bold(installCommand)}`
|
|
250061
|
-
};
|
|
250062
|
-
}
|
|
250063
|
-
function getInstallCommand() {
|
|
250064
|
-
return new Base44Command("install", {
|
|
250065
|
-
requireAuth: false,
|
|
250066
|
-
requireAppContext: false
|
|
250067
|
-
}).description("Install the site's dependencies with its configured command").action(installAction);
|
|
250068
|
-
}
|
|
250069
|
-
|
|
250070
250008
|
// src/cli/commands/project/app-id-options.ts
|
|
250071
250009
|
function readExplicitAppId(command) {
|
|
250072
250010
|
const { appId } = command.optsWithGlobals();
|
|
@@ -251146,209 +251084,6 @@ function parseConcurrency(value) {
|
|
|
251146
251084
|
return parsed;
|
|
251147
251085
|
}
|
|
251148
251086
|
|
|
251149
|
-
// src/cli/dev/createDevLogger.ts
|
|
251150
|
-
var colorByType = {
|
|
251151
|
-
error: theme.styles.error,
|
|
251152
|
-
warn: theme.styles.warn,
|
|
251153
|
-
log: (input) => input
|
|
251154
|
-
};
|
|
251155
|
-
var stringify = (item) => {
|
|
251156
|
-
if (typeof item === "string") {
|
|
251157
|
-
return item;
|
|
251158
|
-
}
|
|
251159
|
-
if (item instanceof Error) {
|
|
251160
|
-
return item.toString();
|
|
251161
|
-
}
|
|
251162
|
-
try {
|
|
251163
|
-
return JSON.stringify(item, null, 2) ?? String(item);
|
|
251164
|
-
} catch {
|
|
251165
|
-
return String(item);
|
|
251166
|
-
}
|
|
251167
|
-
};
|
|
251168
|
-
function createDevLogger(label, labelColor = theme.styles.dim) {
|
|
251169
|
-
const prefix = label ? `${labelColor(`[${label}]`)} ` : "";
|
|
251170
|
-
const print = (type, ...args) => {
|
|
251171
|
-
const colorize = colorByType[type];
|
|
251172
|
-
console[type](prefix + args.map((item) => colorize(stringify(item))).join(" "));
|
|
251173
|
-
};
|
|
251174
|
-
return {
|
|
251175
|
-
log: (...args) => print("log", ...args),
|
|
251176
|
-
error: (msg, err) => {
|
|
251177
|
-
print("error", msg);
|
|
251178
|
-
if (err) {
|
|
251179
|
-
print("error", err);
|
|
251180
|
-
}
|
|
251181
|
-
},
|
|
251182
|
-
warn: (...args) => print("warn", ...args)
|
|
251183
|
-
};
|
|
251184
|
-
}
|
|
251185
|
-
|
|
251186
|
-
// src/cli/dev/dev-server/serve-runner.ts
|
|
251187
|
-
import { spawn as spawn2 } from "node:child_process";
|
|
251188
|
-
import process21 from "node:process";
|
|
251189
|
-
|
|
251190
|
-
class ServeRunner {
|
|
251191
|
-
command;
|
|
251192
|
-
cwd;
|
|
251193
|
-
env;
|
|
251194
|
-
logger;
|
|
251195
|
-
child;
|
|
251196
|
-
stopping = false;
|
|
251197
|
-
stopPromise;
|
|
251198
|
-
exitListeners = [];
|
|
251199
|
-
constructor(options) {
|
|
251200
|
-
this.command = options.command;
|
|
251201
|
-
this.cwd = options.cwd;
|
|
251202
|
-
this.env = options.env;
|
|
251203
|
-
this.logger = options.logger;
|
|
251204
|
-
}
|
|
251205
|
-
start() {
|
|
251206
|
-
if (this.child) {
|
|
251207
|
-
return;
|
|
251208
|
-
}
|
|
251209
|
-
const stdin = process21.platform === "win32" ? "ignore" : "inherit";
|
|
251210
|
-
const child = spawn2(this.command, {
|
|
251211
|
-
cwd: this.cwd,
|
|
251212
|
-
shell: true,
|
|
251213
|
-
detached: process21.platform !== "win32",
|
|
251214
|
-
env: { ...process21.env, ...this.env },
|
|
251215
|
-
stdio: [stdin, "pipe", "pipe"],
|
|
251216
|
-
windowsHide: true
|
|
251217
|
-
});
|
|
251218
|
-
this.child = child;
|
|
251219
|
-
this.setupHandlers(child);
|
|
251220
|
-
}
|
|
251221
|
-
onExit(listener) {
|
|
251222
|
-
this.exitListeners.push(listener);
|
|
251223
|
-
}
|
|
251224
|
-
async stop() {
|
|
251225
|
-
if (this.stopPromise) {
|
|
251226
|
-
return this.stopPromise;
|
|
251227
|
-
}
|
|
251228
|
-
this.stopPromise = this.stopChild();
|
|
251229
|
-
return this.stopPromise;
|
|
251230
|
-
}
|
|
251231
|
-
async stopChild() {
|
|
251232
|
-
const child = this.child;
|
|
251233
|
-
if (!child || child.exitCode !== null) {
|
|
251234
|
-
return;
|
|
251235
|
-
}
|
|
251236
|
-
this.stopping = true;
|
|
251237
|
-
const exited = new Promise((resolve) => child.once("exit", () => resolve()));
|
|
251238
|
-
if (process21.platform === "win32" && child.pid) {
|
|
251239
|
-
const taskkill = spawn2("taskkill", ["/pid", String(child.pid), "/T", "/F"], {
|
|
251240
|
-
stdio: "ignore",
|
|
251241
|
-
windowsHide: true
|
|
251242
|
-
});
|
|
251243
|
-
await new Promise((resolve) => {
|
|
251244
|
-
taskkill.once("exit", () => resolve());
|
|
251245
|
-
taskkill.once("error", () => resolve());
|
|
251246
|
-
});
|
|
251247
|
-
} else if (child.pid) {
|
|
251248
|
-
try {
|
|
251249
|
-
process21.kill(-child.pid, "SIGTERM");
|
|
251250
|
-
} catch {
|
|
251251
|
-
child.kill();
|
|
251252
|
-
}
|
|
251253
|
-
}
|
|
251254
|
-
await exited;
|
|
251255
|
-
}
|
|
251256
|
-
setupHandlers(child) {
|
|
251257
|
-
child.stdout?.on("data", (data) => this.emitLines(data, "log"));
|
|
251258
|
-
child.stderr?.on("data", (data) => this.emitLines(data, "error"));
|
|
251259
|
-
child.on("error", (error) => {
|
|
251260
|
-
this.logger.error("Frontend dev server failed to start:", error);
|
|
251261
|
-
this.notifyExit(null);
|
|
251262
|
-
});
|
|
251263
|
-
child.on("exit", (code) => {
|
|
251264
|
-
if (this.stopping) {
|
|
251265
|
-
return;
|
|
251266
|
-
}
|
|
251267
|
-
this.logger.error(`Frontend dev server exited with code ${code}`);
|
|
251268
|
-
this.notifyExit(code);
|
|
251269
|
-
});
|
|
251270
|
-
}
|
|
251271
|
-
notifyExit(code) {
|
|
251272
|
-
for (const listener of this.exitListeners) {
|
|
251273
|
-
listener(code);
|
|
251274
|
-
}
|
|
251275
|
-
}
|
|
251276
|
-
emitLines(data, type) {
|
|
251277
|
-
const lines = data.toString().trimEnd().split(`
|
|
251278
|
-
`);
|
|
251279
|
-
for (const line of lines) {
|
|
251280
|
-
if (type === "error") {
|
|
251281
|
-
this.logger.error(line);
|
|
251282
|
-
} else {
|
|
251283
|
-
this.logger.log(line);
|
|
251284
|
-
}
|
|
251285
|
-
}
|
|
251286
|
-
}
|
|
251287
|
-
}
|
|
251288
|
-
|
|
251289
|
-
// src/cli/dev/serve-command-runner.ts
|
|
251290
|
-
function createServeCommandRunner({
|
|
251291
|
-
serveCommand,
|
|
251292
|
-
projectRoot,
|
|
251293
|
-
appId,
|
|
251294
|
-
appBaseUrl
|
|
251295
|
-
}) {
|
|
251296
|
-
return new ServeRunner({
|
|
251297
|
-
command: serveCommand,
|
|
251298
|
-
cwd: projectRoot,
|
|
251299
|
-
env: {
|
|
251300
|
-
VITE_BASE44_APP_ID: appId,
|
|
251301
|
-
...appBaseUrl ? { VITE_BASE44_APP_BASE_URL: appBaseUrl } : {}
|
|
251302
|
-
},
|
|
251303
|
-
logger: createDevLogger("frontend", theme.colors.base44Orange)
|
|
251304
|
-
});
|
|
251305
|
-
}
|
|
251306
|
-
|
|
251307
|
-
// src/cli/dev/stop-runner-on-signals.ts
|
|
251308
|
-
import process22 from "node:process";
|
|
251309
|
-
function stopRunnerOnProcessSignals(runner) {
|
|
251310
|
-
const stop = () => void runner.stop();
|
|
251311
|
-
process22.on("SIGINT", stop);
|
|
251312
|
-
process22.on("SIGTERM", stop);
|
|
251313
|
-
}
|
|
251314
|
-
|
|
251315
|
-
// src/cli/commands/site/dev.ts
|
|
251316
|
-
async function siteDevAction(ctx, options) {
|
|
251317
|
-
const { app } = ctx;
|
|
251318
|
-
if (!app?.projectRoot) {
|
|
251319
|
-
throw new ConfigInvalidError("base44 site dev requires a linked local project. Run it from a project with base44/.app.jsonc.");
|
|
251320
|
-
}
|
|
251321
|
-
const { project } = await readProjectConfig(app.projectRoot);
|
|
251322
|
-
const site = project.site;
|
|
251323
|
-
if (!site) {
|
|
251324
|
-
throw new InvalidInputError(`This project has no 'site' block in base44/config.jsonc, so there is no frontend to serve. Add one naming its serveCommand; site dev falls back to "npm run dev".`);
|
|
251325
|
-
}
|
|
251326
|
-
const serveCommand = site.serveCommand ?? DEFAULT_SERVE_COMMAND;
|
|
251327
|
-
const { command, droppedAddress } = withServeAddress(serveCommand, {
|
|
251328
|
-
host: site.devHost,
|
|
251329
|
-
port: site.devPort,
|
|
251330
|
-
hostFlag: site.devHostFlag
|
|
251331
|
-
});
|
|
251332
|
-
if (droppedAddress) {
|
|
251333
|
-
throw new InvalidInputError(`serveCommand '${serveCommand}' takes no forwarded arguments, so the bind address cannot be passed to it. Bind it inside serveCommand itself, or use an 'npm run', 'pnpm', 'yarn' or 'bun run' script.`);
|
|
251334
|
-
}
|
|
251335
|
-
const runner = createServeCommandRunner({
|
|
251336
|
-
serveCommand: command,
|
|
251337
|
-
projectRoot: project.root,
|
|
251338
|
-
appId: app.id,
|
|
251339
|
-
appBaseUrl: options.backendUrl
|
|
251340
|
-
});
|
|
251341
|
-
stopRunnerOnProcessSignals(runner);
|
|
251342
|
-
runner.onExit((code) => process.exit(code ?? 1));
|
|
251343
|
-
runner.start();
|
|
251344
|
-
return {
|
|
251345
|
-
outroMessage: options.backendUrl ? `Frontend dev server running '${command}' against ${theme.styles.bold(options.backendUrl)}` : `Frontend dev server running '${command}'`
|
|
251346
|
-
};
|
|
251347
|
-
}
|
|
251348
|
-
function getSiteDevCommand() {
|
|
251349
|
-
return new Base44Command("dev", { requireAuth: false }).description("Run the site's dev server against a given backend (no local backend)").option("--backend-url <url>", "Backend the frontend should call, injected as VITE_BASE44_APP_BASE_URL. Omit for a frontend that reaches its backend same-origin.").action(siteDevAction);
|
|
251350
|
-
}
|
|
251351
|
-
|
|
251352
251087
|
// src/cli/commands/site/open.ts
|
|
251353
251088
|
async function openAction({
|
|
251354
251089
|
isNonInteractive
|
|
@@ -251365,7 +251100,7 @@ function getSiteOpenCommand() {
|
|
|
251365
251100
|
|
|
251366
251101
|
// src/cli/commands/site/index.ts
|
|
251367
251102
|
function getSiteCommand() {
|
|
251368
|
-
return new Command2("site").description("Manage app site (frontend app)").addCommand(getSiteDeployCommand()).addCommand(
|
|
251103
|
+
return new Command2("site").description("Manage app site (frontend app)").addCommand(getSiteDeployCommand()).addCommand(getSiteOpenCommand());
|
|
251369
251104
|
}
|
|
251370
251105
|
|
|
251371
251106
|
// src/core/types/generator.ts
|
|
@@ -251885,6 +251620,43 @@ function getWorkspaceCommand() {
|
|
|
251885
251620
|
return new Command2("workspace").description("List workspaces, inspect one, and move apps between them").addCommand(getWorkspaceListCommand()).addCommand(getWorkspaceGetCommand()).addCommand(getWorkspaceMoveCommand());
|
|
251886
251621
|
}
|
|
251887
251622
|
|
|
251623
|
+
// src/cli/dev/createDevLogger.ts
|
|
251624
|
+
var colorByType = {
|
|
251625
|
+
error: theme.styles.error,
|
|
251626
|
+
warn: theme.styles.warn,
|
|
251627
|
+
log: (input) => input
|
|
251628
|
+
};
|
|
251629
|
+
var stringify = (item) => {
|
|
251630
|
+
if (typeof item === "string") {
|
|
251631
|
+
return item;
|
|
251632
|
+
}
|
|
251633
|
+
if (item instanceof Error) {
|
|
251634
|
+
return item.toString();
|
|
251635
|
+
}
|
|
251636
|
+
try {
|
|
251637
|
+
return JSON.stringify(item, null, 2) ?? String(item);
|
|
251638
|
+
} catch {
|
|
251639
|
+
return String(item);
|
|
251640
|
+
}
|
|
251641
|
+
};
|
|
251642
|
+
function createDevLogger(label, labelColor = theme.styles.dim) {
|
|
251643
|
+
const prefix = label ? `${labelColor(`[${label}]`)} ` : "";
|
|
251644
|
+
const print = (type, ...args) => {
|
|
251645
|
+
const colorize = colorByType[type];
|
|
251646
|
+
console[type](prefix + args.map((item) => colorize(stringify(item))).join(" "));
|
|
251647
|
+
};
|
|
251648
|
+
return {
|
|
251649
|
+
log: (...args) => print("log", ...args),
|
|
251650
|
+
error: (msg, err) => {
|
|
251651
|
+
print("error", msg);
|
|
251652
|
+
if (err) {
|
|
251653
|
+
print("error", err);
|
|
251654
|
+
}
|
|
251655
|
+
},
|
|
251656
|
+
warn: (...args) => print("warn", ...args)
|
|
251657
|
+
};
|
|
251658
|
+
}
|
|
251659
|
+
|
|
251888
251660
|
// src/cli/dev/dev-server/main.ts
|
|
251889
251661
|
var import_cors = __toESM(require_lib4(), 1);
|
|
251890
251662
|
var import_express6 = __toESM(require_express(), 1);
|
|
@@ -252017,7 +251789,7 @@ var $dir = async (options) => dirWithOptions(options);
|
|
|
252017
251789
|
var $tmpName = promisify11(tmp.tmpName);
|
|
252018
251790
|
|
|
252019
251791
|
// src/cli/dev/dev-server/function-manager.ts
|
|
252020
|
-
import { spawn as
|
|
251792
|
+
import { spawn as spawn2 } from "node:child_process";
|
|
252021
251793
|
import { dirname as dirname23, join as join31 } from "node:path";
|
|
252022
251794
|
import { pathToFileURL } from "node:url";
|
|
252023
251795
|
|
|
@@ -252115,7 +251887,7 @@ class FunctionManager extends BaseFunctionManager {
|
|
|
252115
251887
|
async stopFunction(_name, { process: proc }) {
|
|
252116
251888
|
const exited = new Promise((r) => proc.once("exit", () => r()));
|
|
252117
251889
|
if (process.platform === "win32" && proc.pid) {
|
|
252118
|
-
|
|
251890
|
+
spawn2("taskkill", ["/pid", String(proc.pid), "/T", "/F"]);
|
|
252119
251891
|
} else {
|
|
252120
251892
|
proc.kill();
|
|
252121
251893
|
}
|
|
@@ -252124,7 +251896,7 @@ class FunctionManager extends BaseFunctionManager {
|
|
|
252124
251896
|
spawnFunction(func, port) {
|
|
252125
251897
|
this.logger.log(`Spawning function "${func.name}" on port ${port}`);
|
|
252126
251898
|
const importMapPath = join31(dirname23(this.wrapperPath), "import-map.json");
|
|
252127
|
-
const process2 =
|
|
251899
|
+
const process2 = spawn2("deno", ["run", "--allow-all", "--import-map", importMapPath, this.wrapperPath], {
|
|
252128
251900
|
env: {
|
|
252129
251901
|
...globalThis.process.env,
|
|
252130
251902
|
FUNCTION_PATH: pathToFileURL(func.entryPath).href,
|
|
@@ -255654,6 +255426,127 @@ async function createDevServer(options) {
|
|
|
255654
255426
|
return { port, server, shutdown };
|
|
255655
255427
|
}
|
|
255656
255428
|
|
|
255429
|
+
// src/cli/dev/dev-server/serve-runner.ts
|
|
255430
|
+
import { spawn as spawn3 } from "node:child_process";
|
|
255431
|
+
import process23 from "node:process";
|
|
255432
|
+
|
|
255433
|
+
class ServeRunner {
|
|
255434
|
+
command;
|
|
255435
|
+
cwd;
|
|
255436
|
+
env;
|
|
255437
|
+
logger;
|
|
255438
|
+
child;
|
|
255439
|
+
stopping = false;
|
|
255440
|
+
stopPromise;
|
|
255441
|
+
exitListeners = [];
|
|
255442
|
+
constructor(options) {
|
|
255443
|
+
this.command = options.command;
|
|
255444
|
+
this.cwd = options.cwd;
|
|
255445
|
+
this.env = options.env;
|
|
255446
|
+
this.logger = options.logger;
|
|
255447
|
+
}
|
|
255448
|
+
start() {
|
|
255449
|
+
if (this.child) {
|
|
255450
|
+
return;
|
|
255451
|
+
}
|
|
255452
|
+
const stdin = process23.platform === "win32" ? "ignore" : "inherit";
|
|
255453
|
+
const child = spawn3(this.command, {
|
|
255454
|
+
cwd: this.cwd,
|
|
255455
|
+
shell: true,
|
|
255456
|
+
detached: process23.platform !== "win32",
|
|
255457
|
+
env: { ...process23.env, ...this.env },
|
|
255458
|
+
stdio: [stdin, "pipe", "pipe"],
|
|
255459
|
+
windowsHide: true
|
|
255460
|
+
});
|
|
255461
|
+
this.child = child;
|
|
255462
|
+
this.setupHandlers(child);
|
|
255463
|
+
}
|
|
255464
|
+
onExit(listener) {
|
|
255465
|
+
this.exitListeners.push(listener);
|
|
255466
|
+
}
|
|
255467
|
+
async stop() {
|
|
255468
|
+
if (this.stopPromise) {
|
|
255469
|
+
return this.stopPromise;
|
|
255470
|
+
}
|
|
255471
|
+
this.stopPromise = this.stopChild();
|
|
255472
|
+
return this.stopPromise;
|
|
255473
|
+
}
|
|
255474
|
+
async stopChild() {
|
|
255475
|
+
const child = this.child;
|
|
255476
|
+
if (!child || child.exitCode !== null) {
|
|
255477
|
+
return;
|
|
255478
|
+
}
|
|
255479
|
+
this.stopping = true;
|
|
255480
|
+
const exited = new Promise((resolve) => child.once("exit", () => resolve()));
|
|
255481
|
+
if (process23.platform === "win32" && child.pid) {
|
|
255482
|
+
const taskkill = spawn3("taskkill", ["/pid", String(child.pid), "/T", "/F"], {
|
|
255483
|
+
stdio: "ignore",
|
|
255484
|
+
windowsHide: true
|
|
255485
|
+
});
|
|
255486
|
+
await new Promise((resolve) => {
|
|
255487
|
+
taskkill.once("exit", () => resolve());
|
|
255488
|
+
taskkill.once("error", () => resolve());
|
|
255489
|
+
});
|
|
255490
|
+
} else if (child.pid) {
|
|
255491
|
+
try {
|
|
255492
|
+
process23.kill(-child.pid, "SIGTERM");
|
|
255493
|
+
} catch {
|
|
255494
|
+
child.kill();
|
|
255495
|
+
}
|
|
255496
|
+
}
|
|
255497
|
+
await exited;
|
|
255498
|
+
}
|
|
255499
|
+
setupHandlers(child) {
|
|
255500
|
+
child.stdout?.on("data", (data) => this.emitLines(data, "log"));
|
|
255501
|
+
child.stderr?.on("data", (data) => this.emitLines(data, "error"));
|
|
255502
|
+
child.on("error", (error) => {
|
|
255503
|
+
this.logger.error("Frontend dev server failed to start:", error);
|
|
255504
|
+
this.notifyExit(null);
|
|
255505
|
+
});
|
|
255506
|
+
child.on("exit", (code) => {
|
|
255507
|
+
if (this.stopping) {
|
|
255508
|
+
return;
|
|
255509
|
+
}
|
|
255510
|
+
this.logger.error(`Frontend dev server exited with code ${code}`);
|
|
255511
|
+
this.notifyExit(code);
|
|
255512
|
+
});
|
|
255513
|
+
}
|
|
255514
|
+
notifyExit(code) {
|
|
255515
|
+
for (const listener of this.exitListeners) {
|
|
255516
|
+
listener(code);
|
|
255517
|
+
}
|
|
255518
|
+
}
|
|
255519
|
+
emitLines(data, type) {
|
|
255520
|
+
const lines = data.toString().trimEnd().split(`
|
|
255521
|
+
`);
|
|
255522
|
+
for (const line of lines) {
|
|
255523
|
+
if (type === "error") {
|
|
255524
|
+
this.logger.error(line);
|
|
255525
|
+
} else {
|
|
255526
|
+
this.logger.log(line);
|
|
255527
|
+
}
|
|
255528
|
+
}
|
|
255529
|
+
}
|
|
255530
|
+
}
|
|
255531
|
+
|
|
255532
|
+
// src/cli/dev/serve-command-runner.ts
|
|
255533
|
+
function createServeCommandRunner({
|
|
255534
|
+
serveCommand,
|
|
255535
|
+
projectRoot,
|
|
255536
|
+
appId,
|
|
255537
|
+
appBaseUrl
|
|
255538
|
+
}) {
|
|
255539
|
+
return new ServeRunner({
|
|
255540
|
+
command: serveCommand,
|
|
255541
|
+
cwd: projectRoot,
|
|
255542
|
+
env: {
|
|
255543
|
+
VITE_BASE44_APP_ID: appId,
|
|
255544
|
+
VITE_BASE44_APP_BASE_URL: appBaseUrl
|
|
255545
|
+
},
|
|
255546
|
+
logger: createDevLogger("frontend", theme.colors.base44Orange)
|
|
255547
|
+
});
|
|
255548
|
+
}
|
|
255549
|
+
|
|
255657
255550
|
// src/cli/commands/dev.ts
|
|
255658
255551
|
function localServerUrl(port) {
|
|
255659
255552
|
return `http://localhost:${port}`;
|
|
@@ -255679,6 +255572,11 @@ async function resolveConfiguredSite(app) {
|
|
|
255679
255572
|
const serveCommand = project.site?.serveCommand;
|
|
255680
255573
|
return serveCommand ? { serveCommand, projectRoot: project.root } : undefined;
|
|
255681
255574
|
}
|
|
255575
|
+
function stopRunnerOnProcessSignals(runner) {
|
|
255576
|
+
const stop = () => void runner.stop();
|
|
255577
|
+
process.on("SIGINT", stop);
|
|
255578
|
+
process.on("SIGTERM", stop);
|
|
255579
|
+
}
|
|
255682
255580
|
function startServeCommand(runner, backend) {
|
|
255683
255581
|
stopRunnerOnProcessSignals(runner);
|
|
255684
255582
|
runner.onExit(() => {
|
|
@@ -255994,7 +255892,6 @@ function createProgram(context) {
|
|
|
255994
255892
|
program.addCommand(getCreateCommand());
|
|
255995
255893
|
program.addCommand(getScaffoldCommand());
|
|
255996
255894
|
program.addCommand(getDashboardCommand());
|
|
255997
|
-
program.addCommand(getInstallCommand());
|
|
255998
255895
|
program.addCommand(getBuildCommand());
|
|
255999
255896
|
program.addCommand(getDeployCommand3());
|
|
256000
255897
|
program.addCommand(getVisibilityCommand());
|
|
@@ -260064,4 +259961,4 @@ export {
|
|
|
260064
259961
|
runCLI
|
|
260065
259962
|
};
|
|
260066
259963
|
|
|
260067
|
-
//# debugId=
|
|
259964
|
+
//# debugId=815732FBC7D9653064756E2164756E21
|