playcademy 0.13.5 → 0.13.7

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/index.js CHANGED
@@ -7627,7 +7627,7 @@ function startHotReload(onReload, options = {}) {
7627
7627
  init_src2();
7628
7628
  import { mkdir as mkdir4 } from "fs/promises";
7629
7629
  import { join as join17 } from "path";
7630
- import { Miniflare } from "miniflare";
7630
+ import { Log, LogLevel, Miniflare } from "miniflare";
7631
7631
 
7632
7632
  // ../utils/src/port.ts
7633
7633
  import { existsSync as existsSync15, mkdirSync as mkdirSync4, readFileSync as readFileSync4, writeFileSync as writeFileSync4 } from "node:fs";
@@ -7648,9 +7648,12 @@ async function isPortAvailableOnHost(port, host) {
7648
7648
  });
7649
7649
  }
7650
7650
  async function findAvailablePort(startPort = 4321) {
7651
- const ipv4AllAvailable = await isPortAvailableOnHost(startPort, "0.0.0.0");
7652
- const ipv6AllAvailable = await isPortAvailableOnHost(startPort, "::");
7653
- if (ipv4AllAvailable && ipv6AllAvailable) {
7651
+ const [localhostAvailable, ipv4AllAvailable, ipv6AllAvailable] = await Promise.all([
7652
+ isPortAvailableOnHost(startPort, "127.0.0.1"),
7653
+ isPortAvailableOnHost(startPort, "0.0.0.0"),
7654
+ isPortAvailableOnHost(startPort, "::")
7655
+ ]);
7656
+ if (localhostAvailable && ipv4AllAvailable && ipv6AllAvailable) {
7654
7657
  return startPort;
7655
7658
  }
7656
7659
  return findAvailablePort(startPort + 1);
@@ -7705,14 +7708,22 @@ function isServerRunning(type, projectRoot) {
7705
7708
  if (!info) {
7706
7709
  return false;
7707
7710
  }
7711
+ if (!Number.isInteger(info.pid) || info.pid <= 0) {
7712
+ cleanupServerInfo(type, projectRoot);
7713
+ return false;
7714
+ }
7708
7715
  try {
7709
- if (process.platform === "win32") {
7710
- return true;
7711
- } else {
7712
- process.kill(info.pid, 0);
7716
+ process.kill(info.pid, 0);
7717
+ return true;
7718
+ } catch (err) {
7719
+ const code = err && typeof err === "object" && "code" in err ? err.code : null;
7720
+ if (code === "ESRCH" || code === "EINVAL") {
7721
+ cleanupServerInfo(type, projectRoot);
7722
+ return false;
7723
+ }
7724
+ if (code === "EPERM") {
7713
7725
  return true;
7714
7726
  }
7715
- } catch {
7716
7727
  cleanupServerInfo(type, projectRoot);
7717
7728
  return false;
7718
7729
  }
@@ -7746,11 +7757,18 @@ function cleanupServerInfo(type, projectRoot, pid) {
7746
7757
  init_constants2();
7747
7758
  init_loader();
7748
7759
  init_core();
7760
+ var FilteredLog = class extends Log {
7761
+ logWithLevel(level, message) {
7762
+ if (message.includes("Ready on")) return;
7763
+ console.log(message);
7764
+ }
7765
+ };
7749
7766
  async function startDevServer(options) {
7750
7767
  const {
7751
7768
  port: preferredPort,
7752
7769
  config: providedConfig,
7753
- platformUrl = process.env.PLAYCADEMY_BASE_URL || "http://localhost:5174"
7770
+ platformUrl = process.env.PLAYCADEMY_BASE_URL || "http://localhost:5174",
7771
+ logger: logger2 = true
7754
7772
  } = options;
7755
7773
  const port = await findAvailablePort(preferredPort);
7756
7774
  const config = providedConfig ?? await loadConfig();
@@ -7764,8 +7782,10 @@ async function startDevServer(options) {
7764
7782
  const dbDir = hasDatabase ? await ensureDatabaseDirectory() : void 0;
7765
7783
  const hasKV = hasKVSetup(config);
7766
7784
  const kvDir = hasKV ? await ensureKvDirectory() : void 0;
7785
+ const log2 = logger2 ? new FilteredLog(LogLevel.INFO) : new Log(LogLevel.NONE);
7767
7786
  const mf = new Miniflare({
7768
7787
  port,
7788
+ log: log2,
7769
7789
  modules: [
7770
7790
  {
7771
7791
  type: "ESModule",
@@ -7788,7 +7808,7 @@ async function startDevServer(options) {
7788
7808
  await initializeDatabase(mf);
7789
7809
  }
7790
7810
  await writeBackendServerInfo(port);
7791
- return mf;
7811
+ return { server: mf, port };
7792
7812
  }
7793
7813
  async function ensureDatabaseDirectory() {
7794
7814
  const dbDir = join17(getWorkspace(), CLI_DIRECTORIES.DATABASE);
@@ -8685,11 +8705,12 @@ async function setupServerHotReload(serverRef, port, workspace, config, loggerEn
8685
8705
  await serverRef.current.dispose();
8686
8706
  }
8687
8707
  const newConfig = await loadConfig();
8688
- serverRef.current = await startDevServer({
8708
+ const { server } = await startDevServer({
8689
8709
  port,
8690
8710
  config: newConfig,
8691
8711
  logger: loggerEnabled
8692
8712
  });
8713
+ serverRef.current = server;
8693
8714
  await discoverRoutes(getCustomRoutesDirectory(workspace, newConfig));
8694
8715
  },
8695
8716
  { config }
@@ -8715,9 +8736,9 @@ async function runDevServer(options) {
8715
8736
  logger.newLine();
8716
8737
  return;
8717
8738
  }
8718
- const port = parseInt(options.port, 10);
8719
- const server = await startDevServer({
8720
- port,
8739
+ const requestedPort = parseInt(options.port, 10);
8740
+ const { server, port } = await startDevServer({
8741
+ port: requestedPort,
8721
8742
  config,
8722
8743
  logger: options.logger !== false
8723
8744
  });
package/dist/utils.d.ts CHANGED
@@ -115,7 +115,10 @@ interface DevServerOptions {
115
115
  * Start the local development server using Miniflare
116
116
  * Returns the Miniflare instance which can be disposed for hot reload
117
117
  */
118
- declare function startDevServer(options: DevServerOptions): Promise<Miniflare>;
118
+ declare function startDevServer(options: DevServerOptions): Promise<{
119
+ server: Miniflare;
120
+ port: number;
121
+ }>;
119
122
 
120
123
  interface HotReloadOptions {
121
124
  /** Custom success logger (defaults to CLI logger) */
package/dist/utils.js CHANGED
@@ -559,7 +559,7 @@ function processConfigVariables(config) {
559
559
  // src/lib/dev/server.ts
560
560
  import { mkdir as mkdir2 } from "fs/promises";
561
561
  import { join as join7 } from "path";
562
- import { Miniflare } from "miniflare";
562
+ import { Log, LogLevel, Miniflare } from "miniflare";
563
563
 
564
564
  // ../utils/src/port.ts
565
565
  import { existsSync as existsSync2, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -580,9 +580,12 @@ async function isPortAvailableOnHost(port, host) {
580
580
  });
581
581
  }
582
582
  async function findAvailablePort(startPort = 4321) {
583
- const ipv4AllAvailable = await isPortAvailableOnHost(startPort, "0.0.0.0");
584
- const ipv6AllAvailable = await isPortAvailableOnHost(startPort, "::");
585
- if (ipv4AllAvailable && ipv6AllAvailable) {
583
+ const [localhostAvailable, ipv4AllAvailable, ipv6AllAvailable] = await Promise.all([
584
+ isPortAvailableOnHost(startPort, "127.0.0.1"),
585
+ isPortAvailableOnHost(startPort, "0.0.0.0"),
586
+ isPortAvailableOnHost(startPort, "::")
587
+ ]);
588
+ if (localhostAvailable && ipv4AllAvailable && ipv6AllAvailable) {
586
589
  return startPort;
587
590
  }
588
591
  return findAvailablePort(startPort + 1);
@@ -1460,11 +1463,18 @@ function hasKVSetup(config) {
1460
1463
  }
1461
1464
 
1462
1465
  // src/lib/dev/server.ts
1466
+ var FilteredLog = class extends Log {
1467
+ logWithLevel(level, message) {
1468
+ if (message.includes("Ready on")) return;
1469
+ console.log(message);
1470
+ }
1471
+ };
1463
1472
  async function startDevServer(options) {
1464
1473
  const {
1465
1474
  port: preferredPort,
1466
1475
  config: providedConfig,
1467
- platformUrl = process.env.PLAYCADEMY_BASE_URL || "http://localhost:5174"
1476
+ platformUrl = process.env.PLAYCADEMY_BASE_URL || "http://localhost:5174",
1477
+ logger: logger2 = true
1468
1478
  } = options;
1469
1479
  const port = await findAvailablePort(preferredPort);
1470
1480
  const config = providedConfig ?? await loadConfig();
@@ -1478,8 +1488,10 @@ async function startDevServer(options) {
1478
1488
  const dbDir = hasDatabase ? await ensureDatabaseDirectory() : void 0;
1479
1489
  const hasKV = hasKVSetup(config);
1480
1490
  const kvDir = hasKV ? await ensureKvDirectory() : void 0;
1491
+ const log2 = logger2 ? new FilteredLog(LogLevel.INFO) : new Log(LogLevel.NONE);
1481
1492
  const mf = new Miniflare({
1482
1493
  port,
1494
+ log: log2,
1483
1495
  modules: [
1484
1496
  {
1485
1497
  type: "ESModule",
@@ -1502,7 +1514,7 @@ async function startDevServer(options) {
1502
1514
  await initializeDatabase(mf);
1503
1515
  }
1504
1516
  await writeBackendServerInfo(port);
1505
- return mf;
1517
+ return { server: mf, port };
1506
1518
  }
1507
1519
  async function ensureDatabaseDirectory() {
1508
1520
  const dbDir = join7(getWorkspace(), CLI_DIRECTORIES.DATABASE);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "playcademy",
3
- "version": "0.13.5",
3
+ "version": "0.13.7",
4
4
  "type": "module",
5
5
  "module": "./dist/index.js",
6
6
  "main": "./dist/index.js",