flingit 0.0.13 → 0.0.15

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.
@@ -14,6 +14,7 @@ import { Command } from "commander";
14
14
  import type { DevIO } from "../utils/cli-io.js";
15
15
  export interface DevOptions {
16
16
  port: string;
17
+ verbose?: boolean;
17
18
  }
18
19
  /**
19
20
  * Run the dev command logic.
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA0V1E;AAED,eAAO,MAAM,UAAU,SA8BnB,CAAC"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAoBhD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAqnB1E;AAED,eAAO,MAAM,UAAU,SAgCnB,CAAC"}
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import { Command } from "commander";
14
14
  import { join, dirname } from "node:path";
15
+ import { createServer as createNetServer } from "node:net";
15
16
  import { wasmPlugin } from "../deploy/bundler.js";
16
17
  import { createDefaultDevIO } from "../utils/cli-io-impl.js";
17
18
  /**
@@ -21,6 +22,69 @@ import { createDefaultDevIO } from "../utils/cli-io-impl.js";
21
22
  export async function runDev(options, io) {
22
23
  const cwd = io.process.cwd();
23
24
  const port = parseInt(options.port, 10);
25
+ const verbose = options.verbose ?? false;
26
+ const useProcessGroup = io.process.platform === "darwin";
27
+ const PORT_WAIT_INTERVAL_MS = 200;
28
+ const PORT_WAIT_WARN_AFTER_MS = 5000;
29
+ const PORT_WAIT_TIMEOUT_MS = 10000;
30
+ // Debug logging helper - only logs if verbose is enabled
31
+ const debug = (msg) => {
32
+ if (verbose) {
33
+ const iso = new Date().toISOString();
34
+ const timestamp = iso.slice(iso.indexOf("T") + 1, iso.indexOf("T") + 13);
35
+ io.console.log(`[debug ${timestamp}] ${msg}`);
36
+ }
37
+ };
38
+ const sleep = (ms) => new Promise((resolve) => {
39
+ setTimeout(resolve, ms);
40
+ });
41
+ async function isPortFree(portToCheck) {
42
+ return await new Promise((resolve) => {
43
+ const server = createNetServer();
44
+ server.once("error", (err) => {
45
+ server.close();
46
+ if (err.code !== "EADDRINUSE") {
47
+ debug(`port check error: ${err.message}`);
48
+ }
49
+ resolve(false);
50
+ });
51
+ server.once("listening", () => {
52
+ server.close(() => {
53
+ resolve(true);
54
+ });
55
+ });
56
+ server.listen(portToCheck);
57
+ });
58
+ }
59
+ async function waitForPortFreeOrTimeout(expectedWorker) {
60
+ const startWait = Date.now();
61
+ let warned = false;
62
+ for (;;) {
63
+ if (workerState.status !== "restarting") {
64
+ debug(`state changed during wait (now ${workerState.status}), not spawning`);
65
+ return false;
66
+ }
67
+ if (workerState.process !== expectedWorker) {
68
+ debug(`state changed during wait (now ${workerState.status}), not spawning`);
69
+ return false;
70
+ }
71
+ const free = await isPortFree(port);
72
+ if (free)
73
+ return true;
74
+ const now = Date.now();
75
+ if (now - startWait >= PORT_WAIT_TIMEOUT_MS) {
76
+ io.console.error(`[worker] Port ${port} still in use after ${Math.round(PORT_WAIT_TIMEOUT_MS / 1000)}s. Backend restart aborted.`);
77
+ io.console.error(`[worker] Free the port and press Enter to retry.`);
78
+ workerState = { status: "idle" };
79
+ return false;
80
+ }
81
+ if (!warned && now - startWait >= PORT_WAIT_WARN_AFTER_MS) {
82
+ io.console.warn(`[worker] Port ${port} still in use after ${Math.round((now - startWait) / 1000)}s - waiting...`);
83
+ warned = true;
84
+ }
85
+ await sleep(PORT_WAIT_INTERVAL_MS);
86
+ }
87
+ }
24
88
  // Check if project is initialized
25
89
  if (!io.file.exists(join(cwd, ".fling"))) {
26
90
  io.console.error("Error: Not a Fling project. Run 'fling init' first.");
@@ -34,10 +98,9 @@ export async function runDev(options, io) {
34
98
  io.process.exit(1);
35
99
  }
36
100
  io.console.log("Starting Fling development server...\n");
37
- let workerProcess = null;
101
+ let workerState = { status: "idle" };
38
102
  let viteProcess = null;
39
103
  let buildContext = null;
40
- let isShuttingDown = false;
41
104
  // Create temp directory for bundled output and entry file
42
105
  const tempDir = join(cwd, ".fling", ".dev-bundle");
43
106
  io.file.mkdir(tempDir, { recursive: true });
@@ -52,14 +115,30 @@ export async function runDev(options, io) {
52
115
  const migratePath = join(runtimeDir, "runtime", "migrate.js");
53
116
  const cronPath = join(runtimeDir, "runtime", "cron.js");
54
117
  const logPath = join(runtimeDir, "runtime", "log.js");
55
- const entryCode = `
56
- import { serve } from "${honoNodeServerPath}";
57
- import { app, db, secrets } from "${nodeRuntimePath}";
58
- import { runMigrations } from "${migratePath}";
59
- import { startCronJobs, getCronJobs, stopCronJobs } from "${cronPath}";
60
- import { closeLogDatabase } from "${logPath}";
118
+ const entryCode = buildWorkerEntry({
119
+ appPath,
120
+ cronPath,
121
+ honoNodeServerPath,
122
+ logPath,
123
+ migratePath,
124
+ nodeRuntimePath,
125
+ port,
126
+ });
127
+ function buildWorkerEntry(paths) {
128
+ return `
129
+ import { createServer } from "node:http";
130
+ import { getRequestListener } from "${paths.honoNodeServerPath}";
131
+ import { app, db, secrets } from "${paths.nodeRuntimePath}";
132
+ import { runMigrations } from "${paths.migratePath}";
133
+ import { startCronJobs, getCronJobs, stopCronJobs } from "${paths.cronPath}";
134
+ import { closeLogDatabase } from "${paths.logPath}";
61
135
  // Import the user's app - this registers routes, cron jobs, and migrations
62
- import "${appPath}";
136
+ import "${paths.appPath}";
137
+
138
+ const verbose = process.env["FLING_DEV_VERBOSE"] === "1";
139
+ if (verbose) {
140
+ console.log("[worker] PID " + process.pid + " (ppid " + process.ppid + ")");
141
+ }
63
142
 
64
143
  // Run migrations
65
144
  await runMigrations();
@@ -71,38 +150,154 @@ if (cronJobs.size > 0) {
71
150
  console.log("[worker] Cron jobs: " + cronJobs.size + " registered");
72
151
  }
73
152
 
74
- // Graceful shutdown handler
153
+ // Start HTTP server with retry logic for EADDRINUSE
154
+ const PORT = ${paths.port};
155
+ const MAX_RETRIES = 10;
156
+ const RETRY_DELAY_MS = 500;
157
+
158
+ let server;
159
+ let retryCount = 0;
160
+
161
+ function startServer() {
162
+ server = createServer(getRequestListener(app.fetch));
163
+
164
+ server.on("error", (err) => {
165
+ if (err.code === "EADDRINUSE" && retryCount < MAX_RETRIES) {
166
+ retryCount++;
167
+ console.log("[worker] Port " + PORT + " in use, retrying in " + RETRY_DELAY_MS + "ms... (attempt " + retryCount + "/" + MAX_RETRIES + ")");
168
+ setTimeout(startServer, RETRY_DELAY_MS);
169
+ } else {
170
+ console.error("[worker] Failed to start server:", err.message);
171
+ process.exit(1);
172
+ }
173
+ });
174
+
175
+ server.listen(PORT, () => {
176
+ console.log("[worker] API server: http://localhost:" + PORT);
177
+ });
178
+ }
179
+
180
+ startServer();
181
+
182
+ // Graceful shutdown handler - close server first to release port
75
183
  const shutdown = () => {
76
184
  console.log("[worker] Shutting down...");
77
185
  stopCronJobs();
78
186
  closeLogDatabase();
79
- process.exit(0);
187
+ if (server) {
188
+ server.close(() => {
189
+ process.exit(0);
190
+ });
191
+ }
192
+ // Force exit after 1s if server.close() hangs
193
+ setTimeout(() => process.exit(0), 1000);
80
194
  };
81
195
 
82
196
  process.on("SIGINT", shutdown);
83
197
  process.on("SIGTERM", shutdown);
84
-
85
- // Start HTTP server
86
- console.log("[worker] API server: http://localhost:${port}");
87
-
88
- serve({
89
- fetch: app.fetch,
90
- port: ${port},
91
- });
92
198
  `;
199
+ }
93
200
  // Write entry file (using a file instead of stdin enables proper watch mode)
94
201
  io.file.writeFileString(entryPath, entryCode);
95
- // Function to spawn the bundled worker
96
- function spawnWorker() {
202
+ // Handle worker process close events based on current state
203
+ function handleWorkerClose(worker, code) {
204
+ debug(`close event: pid=${worker.pid}, code=${code}, state=${workerState.status}`);
205
+ switch (workerState.status) {
206
+ case "restarting":
207
+ if (workerState.process === worker) {
208
+ debug(`close matches restarting process, waiting for port release...`);
209
+ clearTimeout(workerState.killTimeout);
210
+ void (async () => {
211
+ const free = await waitForPortFreeOrTimeout(worker);
212
+ if (!free)
213
+ return;
214
+ debug(`port release confirmed, spawning new worker`);
215
+ workerState = { status: "running", process: spawnWorker() };
216
+ })();
217
+ }
218
+ else {
219
+ debug(`close does NOT match restarting process (stale event), ignoring`);
220
+ }
221
+ break;
222
+ case "running":
223
+ if (workerState.process === worker) {
224
+ if (code !== 0 && code !== null) {
225
+ // Worker crashed - retry after 1s delay
226
+ debug(`worker crashed with code ${code}, retrying in 1s...`);
227
+ io.console.error(`[worker] Backend server exited with code ${code}, retrying in 1s...`);
228
+ setTimeout(() => {
229
+ if (workerState.status === "idle") {
230
+ debug(`retry timer fired, respawning worker`);
231
+ io.console.log("[worker] Retrying...");
232
+ workerState = { status: "running", process: spawnWorker() };
233
+ }
234
+ else {
235
+ debug(`retry timer fired but state is ${workerState.status}, not respawning`);
236
+ }
237
+ }, 1000);
238
+ workerState = { status: "idle" };
239
+ }
240
+ else {
241
+ debug(`close matches running process (clean exit), transitioning to idle`);
242
+ workerState = { status: "idle" };
243
+ }
244
+ }
245
+ else {
246
+ debug(`close does NOT match running process (stale event), ignoring`);
247
+ }
248
+ break;
249
+ case "shuttingDown":
250
+ debug(`close during shutdown, ignoring`);
251
+ // Expected - don't respawn
252
+ break;
253
+ case "idle":
254
+ case "starting":
255
+ debug(`close in ${workerState.status} state (stale event), ignoring`);
256
+ // Stale close event - ignore
257
+ break;
258
+ }
259
+ }
260
+ const RESTART_KILL_TIMEOUT_MS = 2000;
261
+ // Function to kill a process (and process group on macOS)
262
+ function killProcess(proc, signal) {
263
+ const pid = proc.pid;
264
+ if (!pid)
265
+ return;
266
+ if (useProcessGroup) {
267
+ debug(`killing process group for pid=${pid} with ${signal}`);
268
+ try {
269
+ // Kill the process group (negative PID kills the group)
270
+ io.process.kill(-pid, signal);
271
+ debug(`sent ${signal} to process group -${pid}`);
272
+ return;
273
+ }
274
+ catch {
275
+ debug(`process group kill failed, trying direct kill`);
276
+ }
277
+ }
278
+ debug(`killing pid=${pid} with ${signal}`);
279
+ try {
280
+ proc.kill(signal);
281
+ debug(`sent ${signal} to pid=${pid}`);
282
+ }
283
+ catch {
284
+ debug(`kill failed (process already dead?)`);
285
+ }
286
+ }
287
+ function spawnWorkerProcess() {
288
+ debug(`spawning worker...`);
97
289
  const worker = io.spawn(io.process.execPath, [bundlePath], {
98
290
  cwd,
99
291
  stdio: ["inherit", "pipe", "pipe"],
292
+ detached: useProcessGroup, // Create new process group on macOS
100
293
  env: {
101
294
  ...io.process.env,
102
295
  PROJECT_DIR: cwd,
103
296
  FORCE_COLOR: "1",
297
+ FLING_DEV_VERBOSE: verbose ? "1" : undefined,
104
298
  },
105
299
  });
300
+ debug(`spawned worker pid=${worker.pid}${useProcessGroup ? " (detached, new process group)" : ""}`);
106
301
  worker.stdout?.on("data", (data) => {
107
302
  const lines = data.toString().split("\n").filter(Boolean);
108
303
  for (const line of lines) {
@@ -116,44 +311,41 @@ serve({
116
311
  }
117
312
  });
118
313
  worker.on("error", (error) => {
119
- io.console.error("\nError: Could not start backend worker:" + error.message);
314
+ debug(`worker error: pid=${worker.pid}, error=${error.message}`);
315
+ io.console.error("Could not start backend worker: " + error.message);
316
+ // Spawn failed - go back to idle so next build can retry
317
+ if (workerState.status === "running" && workerState.process === worker) {
318
+ workerState = { status: "idle" };
319
+ }
120
320
  });
121
321
  worker.on("close", (code) => {
122
- // Only clear workerProcess if this is still the current worker
123
- // (it might have been replaced during a restart)
124
- if (workerProcess === worker) {
125
- workerProcess = null;
126
- }
127
- if (!isShuttingDown && code !== 0 && code !== null) {
128
- io.console.error(`\n[worker] Backend server exited with code ${code}`);
129
- }
322
+ handleWorkerClose(worker, code);
130
323
  });
131
324
  return worker;
132
325
  }
133
- // Function to rebuild and restart the worker
326
+ // Function to spawn the bundled worker
327
+ function spawnWorker() {
328
+ return spawnWorkerProcess();
329
+ }
330
+ // Function to rebuild and restart the worker (triggered by Enter key)
331
+ // Simplified: just trigger rebuild, let onEnd handle the restart logic
134
332
  async function rebuildAndRestart() {
135
- io.console.log("[worker] Rebuilding...");
136
- // Kill existing worker and wait for it to exit
137
- if (workerProcess && !workerProcess.killed) {
138
- const oldProcess = workerProcess;
139
- workerProcess = null;
140
- await new Promise((resolve) => {
141
- oldProcess.once("close", resolve);
142
- oldProcess.kill("SIGTERM");
143
- });
333
+ if (workerState.status === "shuttingDown")
334
+ return;
335
+ if (workerState.status === "restarting") {
336
+ io.console.log("[worker] Already restarting...");
337
+ return;
144
338
  }
145
- try {
146
- // Rebuild
147
- if (buildContext) {
339
+ io.console.log("[worker] Rebuilding...");
340
+ // Just trigger rebuild - onEnd will handle the restart
341
+ if (buildContext) {
342
+ try {
148
343
  await buildContext.rebuild();
149
344
  }
150
- // Start new worker
151
- io.console.log("[worker] Starting...");
152
- workerProcess = spawnWorker();
153
- }
154
- catch (error) {
155
- io.console.error("[worker] Build failed:" +
156
- (error instanceof Error ? error.message : String(error)));
345
+ catch (error) {
346
+ io.console.error("[worker] Rebuild failed: " +
347
+ (error instanceof Error ? error.message : String(error)));
348
+ }
157
349
  }
158
350
  }
159
351
  // Create esbuild context with watch mode
@@ -185,53 +377,92 @@ serve({
185
377
  plugins: [
186
378
  wasmPlugin,
187
379
  {
188
- // Watch plugin - restart worker when files change
380
+ // Watch plugin - THE ONLY PLACE THAT SPAWNS WORKERS (except close handler respawns)
189
381
  name: "watch-rebuild",
190
382
  setup(build) {
191
- let buildCount = 0;
192
383
  build.onEnd((result) => {
193
- buildCount++;
194
- io.console.log(`[worker] Build #${buildCount} completed`);
384
+ debug(`onEnd: state=${workerState.status}, errors=${result.errors.length}`);
195
385
  if (result.errors.length > 0) {
196
- io.console.error("[worker] Build errors:" + JSON.stringify(result.errors));
386
+ // Format errors nicely - esbuild provides formatted text
387
+ for (const error of result.errors) {
388
+ const location = error.location
389
+ ? `${error.location.file}:${error.location.line}:${error.location.column}: `
390
+ : "";
391
+ io.console.error(`[worker] Build error: ${location}${error.text}`);
392
+ }
393
+ // Don't spawn on build error - stay in current state
394
+ // If "starting", transition to idle so user can fix and retry
395
+ if (workerState.status === "starting") {
396
+ debug(`build error during starting, transitioning to idle`);
397
+ workerState = { status: "idle" };
398
+ }
197
399
  return;
198
400
  }
199
- // Skip restart on initial build (worker started separately below)
200
- if (buildCount === 1) {
201
- return;
202
- }
203
- // Restart worker with new code
204
- io.console.log("[worker] Files changed, restarting...");
205
- if (workerProcess && !workerProcess.killed) {
206
- const oldProcess = workerProcess;
207
- workerProcess = null;
208
- // Wait for old process to exit before starting new one
209
- oldProcess.once("close", () => {
210
- workerProcess = spawnWorker();
211
- });
212
- oldProcess.kill("SIGTERM");
213
- }
214
- else {
215
- workerProcess = spawnWorker();
401
+ switch (workerState.status) {
402
+ case "idle":
403
+ // Unexpected - should only be idle after shutdown or error
404
+ debug(`onEnd in idle state (unexpected), spawning worker`);
405
+ io.console.log("[worker] Starting...");
406
+ workerState = { status: "running", process: spawnWorker() };
407
+ break;
408
+ case "starting":
409
+ // Initial build complete - spawn first worker
410
+ debug(`onEnd in starting state, spawning first worker`);
411
+ io.console.log("[worker] Starting...");
412
+ workerState = { status: "running", process: spawnWorker() };
413
+ break;
414
+ case "running": {
415
+ // Restart worker with new code - terminate old process (group on macOS)
416
+ const oldProcess = workerState.process;
417
+ debug(`onEnd in running state, killing ${useProcessGroup ? "process group" : "pid"} for pid=${oldProcess.pid}`);
418
+ io.console.log("[worker] Files changed, restarting...");
419
+ // Short timeout for force kill in case SIGTERM doesn't work
420
+ const killTimeout = setTimeout(() => {
421
+ debug(`kill timeout fired, force killing pid=${oldProcess.pid}`);
422
+ io.console.log("[worker] Process not responding, force killing...");
423
+ killProcess(oldProcess, "SIGKILL");
424
+ }, RESTART_KILL_TIMEOUT_MS);
425
+ workerState = { status: "restarting", process: oldProcess, killTimeout };
426
+ killProcess(oldProcess, "SIGTERM");
427
+ break;
428
+ }
429
+ case "restarting": {
430
+ // Already restarting - latest code already in bundle, will be loaded on spawn
431
+ const restartingPid = workerState.process.pid;
432
+ debug(`onEnd in restarting state (pid=${restartingPid}), ignoring`);
433
+ io.console.log("[worker] Already restarting...");
434
+ break;
435
+ }
436
+ case "shuttingDown":
437
+ debug(`onEnd in shuttingDown state, ignoring`);
438
+ // Shutting down - ignore
439
+ break;
216
440
  }
217
441
  });
218
442
  },
219
443
  },
220
444
  ],
221
445
  });
222
- // Initial build
446
+ // Set state to "starting" BEFORE rebuild - this prevents Race 1
447
+ // onEnd will see "starting" state and spawn the worker
448
+ workerState = { status: "starting" };
449
+ // Initial build (via watch) - onEnd fires and handles the spawn
223
450
  io.console.log("[worker] Initial build...");
224
- await buildContext.rebuild();
225
- // Start watching for file changes
226
451
  io.console.log("[worker] Starting file watcher...");
227
- await buildContext.watch();
452
+ try {
453
+ await buildContext.watch();
454
+ }
455
+ catch (error) {
456
+ // Watch threw before onEnd could run - reset to idle
457
+ io.console.error("[worker] Initial build failed: " + (error instanceof Error ? error.message : String(error)));
458
+ workerState = { status: "idle" };
459
+ throw error; // Re-throw to exit runDev
460
+ }
461
+ // Note: state is now "running" because onEnd already spawned the worker
228
462
  io.console.log("[worker] File watcher active");
229
- // Start the worker
230
- io.console.log("[worker] Starting...");
231
- workerProcess = spawnWorker();
232
463
  }
233
464
  catch (error) {
234
- io.console.error("Failed to setup build:" +
465
+ io.console.error("Failed to setup build: " +
235
466
  (error instanceof Error ? error.message : String(error)));
236
467
  io.process.exit(1);
237
468
  }
@@ -266,7 +497,7 @@ serve({
266
497
  io.console.error("To fix Vite, ensure dependencies are installed: npm install");
267
498
  });
268
499
  vite.on("close", (code) => {
269
- if (!isShuttingDown && code !== 0 && code !== null) {
500
+ if (workerState.status !== "shuttingDown" && code !== 0 && code !== null) {
270
501
  io.console.error(`\n[vite] Process exited with code ${code}`);
271
502
  io.console.error("[vite] Check if vite is installed: npm install");
272
503
  }
@@ -276,20 +507,45 @@ serve({
276
507
  }
277
508
  // Graceful shutdown handler
278
509
  const shutdown = async () => {
279
- if (isShuttingDown)
510
+ if (workerState.status === "shuttingDown")
280
511
  return;
281
- isShuttingDown = true;
282
512
  io.console.log("\nShutting down...");
513
+ // Cancel any pending kill timeout
514
+ if (workerState.status === "restarting") {
515
+ clearTimeout(workerState.killTimeout);
516
+ }
517
+ // Get worker process if running
518
+ const workerProcess = workerState.status === "running" || workerState.status === "restarting"
519
+ ? workerState.process
520
+ : null;
521
+ workerState = { status: "shuttingDown" };
283
522
  // buildContext is guaranteed to be set before shutdown can be called
284
523
  await buildContext.dispose();
524
+ // Send SIGTERM (process group on macOS) for graceful cleanup
285
525
  if (workerProcess && !workerProcess.killed) {
286
- workerProcess.kill("SIGTERM");
526
+ killProcess(workerProcess, "SIGTERM");
287
527
  }
288
528
  if (viteProcess && !viteProcess.killed) {
289
- viteProcess.kill("SIGTERM");
529
+ try {
530
+ viteProcess.kill("SIGTERM");
531
+ }
532
+ catch {
533
+ /* already dead */
534
+ }
290
535
  }
291
- // Give processes time to clean up, then force exit
536
+ // After 2s, retry force kill and exit
292
537
  setTimeout(() => {
538
+ if (workerProcess && !workerProcess.killed) {
539
+ killProcess(workerProcess, "SIGKILL");
540
+ }
541
+ if (viteProcess && !viteProcess.killed) {
542
+ try {
543
+ viteProcess.kill("SIGKILL");
544
+ }
545
+ catch {
546
+ /* already dead */
547
+ }
548
+ }
293
549
  io.process.exit(0);
294
550
  }, 2000);
295
551
  };
@@ -320,6 +576,7 @@ serve({
320
576
  export const devCommand = new Command("dev")
321
577
  .description("Start the local development server")
322
578
  .option("-p, --port <port>", "Port to run on", "3210")
579
+ .option("-v, --verbose", "Enable verbose logging for debugging")
323
580
  .addHelpText("after", `
324
581
  Prerequisites:
325
582
  - Must have run 'fling init' first
@@ -341,6 +598,7 @@ The servers run until you press Ctrl+C.
341
598
  Examples:
342
599
  fling dev Start on default port 3210
343
600
  fling dev -p 8080 Start API on port 8080
601
+ fling dev --verbose Enable debug logging
344
602
  `)
345
603
  .action(async (options) => {
346
604
  await runDev(options, createDefaultDevIO());
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAwB7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAmB,EAAE,EAAS;IACzD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IACzC,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACzD,MAAM,qBAAqB,GAAG,GAAG,CAAC;IAClC,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACrC,MAAM,oBAAoB,GAAG,KAAK,CAAC;IAEnC,yDAAyD;IACzD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACzE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAC3B,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC5B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,KAAK,UAAU,UAAU,CAAC,WAAmB;QAC3C,OAAO,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;gBAClD,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,wBAAwB,CAAC,cAA4B;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,SAAS,CAAC;YACR,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACxC,KAAK,CAAC,kCAAkC,WAAW,CAAC,MAAM,iBAAiB,CAAC,CAAC;gBAC7E,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC3C,KAAK,CAAC,kCAAkC,WAAW,CAAC,MAAM,iBAAiB,CAAC,CAAC;gBAC7E,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,SAAS,IAAI,oBAAoB,EAAE,CAAC;gBAC5C,EAAE,CAAC,OAAO,CAAC,KAAK,CACd,iBAAiB,IAAI,uBAAuB,IAAI,CAAC,KAAK,CACpD,oBAAoB,GAAG,IAAI,CAC5B,6BAA6B,CAC/B,CAAC;gBACF,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBACrE,WAAW,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,SAAS,IAAI,uBAAuB,EAAE,CAAC;gBAC1D,EAAE,CAAC,OAAO,CAAC,IAAI,CACb,iBAAiB,IAAI,uBAAuB,IAAI,CAAC,KAAK,CACpD,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CACzB,gBAAgB,CAClB,CAAC;gBACF,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QACzC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACxE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC5D,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC/D,EAAE,CAAC,OAAO,CAAC,KAAK,CACd,sEAAsE,CACvE,CAAC;QACF,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEzD,IAAI,WAAW,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAClD,IAAI,WAAW,GAAwB,IAAI,CAAC;IAC5C,IAAI,YAAY,GAAwB,IAAI,CAAC;IAE7C,0DAA0D;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE5C,MAAM,eAAe,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;IACjD,MAAM,kBAAkB,GAAG,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACvD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAEnD,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACjC,OAAO;QACP,QAAQ;QACR,kBAAkB;QAClB,OAAO;QACP,WAAW;QACX,eAAe;QACf,IAAI;KACL,CAAC,CAAC;IAEH,SAAS,gBAAgB,CAAC,KAQzB;QACC,OAAO;;sCAE2B,KAAK,CAAC,kBAAkB;oCAC1B,KAAK,CAAC,eAAe;iCACxB,KAAK,CAAC,WAAW;4DACU,KAAK,CAAC,QAAQ;oCACtC,KAAK,CAAC,OAAO;;UAEvC,KAAK,CAAC,OAAO;;;;;;;;;;;;;;;;;;eAkBR,KAAK,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CxB,CAAC;IACA,CAAC;IAED,6EAA6E;IAC7E,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE9C,4DAA4D;IAC5D,SAAS,iBAAiB,CAAC,MAAoB,EAAE,IAAmB;QAClE,KAAK,CAAC,oBAAoB,MAAM,CAAC,GAAG,UAAU,IAAI,WAAW,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,KAAK,YAAY;gBACf,IAAI,WAAW,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBACnC,KAAK,CAAC,+DAA+D,CAAC,CAAC;oBACvE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBACtC,KAAK,CAAC,KAAK,IAAI,EAAE;wBACf,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;wBACpD,IAAI,CAAC,IAAI;4BAAE,OAAO;wBAClB,KAAK,CAAC,6CAA6C,CAAC,CAAC;wBACrD,WAAW,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;oBAC9D,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,iEAAiE,CAAC,CAAC;gBAC3E,CAAC;gBACD,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,WAAW,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBACnC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAChC,wCAAwC;wBACxC,KAAK,CAAC,4BAA4B,IAAI,qBAAqB,CAAC,CAAC;wBAC7D,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,4CAA4C,IAAI,qBAAqB,CAAC,CAAC;wBACxF,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gCAClC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gCAC9C,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gCACvC,WAAW,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;4BAC9D,CAAC;iCAAM,CAAC;gCACN,KAAK,CAAC,kCAAkC,WAAW,CAAC,MAAM,kBAAkB,CAAC,CAAC;4BAChF,CAAC;wBACH,CAAC,EAAE,IAAI,CAAC,CAAC;wBACT,WAAW,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;oBACnC,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,mEAAmE,CAAC,CAAC;wBAC3E,WAAW,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;oBACnC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,8DAA8D,CAAC,CAAC;gBACxE,CAAC;gBACD,MAAM;YAER,KAAK,cAAc;gBACjB,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACzC,2BAA2B;gBAC3B,MAAM;YAER,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU;gBACb,KAAK,CAAC,YAAY,WAAW,CAAC,MAAM,gCAAgC,CAAC,CAAC;gBACtE,6BAA6B;gBAC7B,MAAM;QACV,CAAC;IACH,CAAC;IAED,MAAM,uBAAuB,GAAG,IAAI,CAAC;IAErC,0DAA0D;IAC1D,SAAS,WAAW,CAAC,IAAkB,EAAE,MAAsB;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,CAAC,iCAAiC,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC;gBACH,wDAAwD;gBACxD,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC9B,KAAK,CAAC,QAAQ,MAAM,sBAAsB,GAAG,EAAE,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,eAAe,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,KAAK,CAAC,QAAQ,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,SAAS,kBAAkB;QACzB,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;YACzD,GAAG;YACH,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;YAClC,QAAQ,EAAE,eAAe,EAAE,oCAAoC;YAC/D,GAAG,EAAE;gBACH,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG;gBACjB,WAAW,EAAE,GAAG;gBAChB,WAAW,EAAE,GAAG;gBAChB,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aAC7C;SACF,CAAC,CAAC;QACH,KAAK,CACH,sBAAsB,MAAM,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7F,CAAC;QAEF,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YAClD,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YACrE,yDAAyD;YACzD,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvE,WAAW,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACzC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,uCAAuC;IACvC,SAAS,WAAW;QAClB,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,sEAAsE;IACtE,uEAAuE;IACvE,KAAK,UAAU,iBAAiB;QAC9B,IAAI,WAAW,CAAC,MAAM,KAAK,cAAc;YAAE,OAAO;QAClD,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACxC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAEzC,uDAAuD;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,EAAE,CAAC,OAAO,CAAC,KAAK,CACd,2BAA2B;oBACzB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,WAAW,EAAE,CAAC,SAAS,CAAC;YACxB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI;YACf,uEAAuE;YACvE,sDAAsD;YACtD,QAAQ,EAAE;gBACR,kBAAkB;gBAClB,eAAe;gBACf,WAAW;gBACX,QAAQ;gBACR,OAAO;aACR;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,eAAe;aACzB;YACD,MAAM,EAAE;gBACN,sBAAsB,EAAE,eAAe;aACxC;YACD,OAAO,EAAE;gBACP,UAAU;gBACV;oBACE,oFAAoF;oBACpF,IAAI,EAAE,eAAe;oBACrB,KAAK,CAAC,KAAK;wBACT,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;4BACrB,KAAK,CAAC,gBAAgB,WAAW,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;4BAC5E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC7B,yDAAyD;gCACzD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oCAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;wCAC7B,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI;wCAC5E,CAAC,CAAC,EAAE,CAAC;oCACP,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gCACrE,CAAC;gCACD,qDAAqD;gCACrD,8DAA8D;gCAC9D,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oCACtC,KAAK,CAAC,oDAAoD,CAAC,CAAC;oCAC5D,WAAW,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gCACnC,CAAC;gCACD,OAAO;4BACT,CAAC;4BAED,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;gCAC3B,KAAK,MAAM;oCACT,2DAA2D;oCAC3D,KAAK,CAAC,mDAAmD,CAAC,CAAC;oCAC3D,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oCACvC,WAAW,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;oCAC5D,MAAM;gCAER,KAAK,UAAU;oCACb,8CAA8C;oCAC9C,KAAK,CAAC,gDAAgD,CAAC,CAAC;oCACxD,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oCACvC,WAAW,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;oCAC5D,MAAM;gCAER,KAAK,SAAS,CAAC,CAAC,CAAC;oCACf,wEAAwE;oCACxE,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;oCACvC,KAAK,CACH,mCAAmC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,GAAG,EAAE,CACzG,CAAC;oCACF,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;oCACxD,4DAA4D;oCAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;wCAClC,KAAK,CAAC,yCAAyC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;wCACjE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;wCACpE,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oCACrC,CAAC,EAAE,uBAAuB,CAAC,CAAC;oCAC5B,WAAW,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;oCACzE,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oCACnC,MAAM;gCACR,CAAC;gCAED,KAAK,YAAY,CAAC,CAAC,CAAC;oCAClB,8EAA8E;oCAC9E,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;oCAC9C,KAAK,CAAC,kCAAkC,aAAa,aAAa,CAAC,CAAC;oCACpE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;oCACjD,MAAM;gCACR,CAAC;gCAED,KAAK,cAAc;oCACjB,KAAK,CAAC,uCAAuC,CAAC,CAAC;oCAC/C,yBAAyB;oCACzB,MAAM;4BACV,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,gEAAgE;QAChE,uDAAuD;QACvD,WAAW,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAErC,gEAAgE;QAChE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC5C,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qDAAqD;YACrD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/G,WAAW,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC,CAAC,0BAA0B;QACzC,CAAC;QAED,wEAAwE;QACxE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,EAAE,CAAC,OAAO,CAAC,KAAK,CACd,yBAAyB;YACvB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;QACF,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,oCAAoC;IACpC,SAAS,kBAAkB;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC7C,GAAG;YACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;SAC7C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YAChD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAChE,EAAE,CAAC,OAAO,CAAC,KAAK,CACd,iEAAiE,CAClE,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YACxE,CAAC;YACD,EAAE,CAAC,OAAO,CAAC,KAAK,CACd,yDAAyD,IAAI,EAAE,CAChE,CAAC;YACF,EAAE,CAAC,OAAO,CAAC,KAAK,CACd,6DAA6D,CAC9D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACvC,IAAI,WAAW,CAAC,MAAM,KAAK,cAAc,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;gBAC9D,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACrE,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,WAAW,CAAC,MAAM,KAAK,cAAc;YAAE,OAAO;QAElD,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAErC,kCAAkC;QAClC,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACxC,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAED,gCAAgC;QAChC,MAAM,aAAa,GACjB,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY;YACrE,CAAC,CAAC,WAAW,CAAC,OAAO;YACrB,CAAC,CAAC,IAAI,CAAC;QAEX,WAAW,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAEzC,qEAAqE;QACrE,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;QAE7B,6DAA6D;QAC7D,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC3C,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC3C,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACH,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,kBAAkB;gBACpB,CAAC;YACH,CAAC;YACD,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAEhD,aAAa;IACb,WAAW,GAAG,kBAAkB,EAAE,CAAC;IAEnC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACrD,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;IAChE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAE3C,kCAAkC;IAClC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE;YAC1C,SAAS;YACT,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjB,KAAK,QAAQ,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,yBAAyB;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAClB,KAAK,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC;KACrD,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;KAC/D,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;CAsBH,CACE;KACA,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;IACpC,MAAM,MAAM,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAuI9D;AAED,eAAO,MAAM,WAAW,SA+CpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CA6I9D;AAED,eAAO,MAAM,WAAW,SAgDpB,CAAC"}